1 tx
15 calls
constructor
constructor((address pendleMarket, uint8 slippage, address ptToken, address asset)[] poolsData)
functions
getMarketData
viewfunction getMarketData(address, address) view returns (address market, address sy, address pt, address yt, address asset, uint8 slippage)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addPools
nonpayablefunction addPools(tuple[] poolsData)
redeemDust
nonpayablefunction redeemDust(address token, address recipient)
renounceOwnership
nonpayablefunction renounceOwnership()
swapCallback
nonpayablefunction swapCallback(int256 ptToAccount, int256 syToAccount, bytes _data)
swapExactInput
nonpayablefunction swapExactInput(address recipient, address tokenIn, address tokenOut, uint256 amountIn, uint256 minAmountOut, bytes data) returns (uint256 amountOut)
swapExactOutput
nonpayablefunction swapExactOutput(address recipient, address tokenIn, address tokenOut, uint256 maxAmountIn, uint256 amountOut, bytes data) returns (uint256 amountIn)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
NewPair
event NewPair(address indexed ptToken, address indexed asset, address pendleMarket, uint8 slippage)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
errors
ApproxFail
error ApproxFail()
ApproximationFailed
error ApproximationFailed()
ApproxParamsInvalid
error ApproxParamsInvalid(uint256 guessMin, uint256 guessMax, uint256 eps)
InsufficientAmount
error InsufficientAmount()
MarketExchangeRateBelowOne
error MarketExchangeRateBelowOne(int256 exchangeRate)
MarketExpired
error MarketExpired()
MarketProportionMustNotEqualOne
error MarketProportionMustNotEqualOne()
MarketProportionTooHigh
error MarketProportionTooHigh(int256 proportion, int256 maxProportion)
MarketRateScalarBelowZero
error MarketRateScalarBelowZero(int256 rateScalar)
MarketZeroTotalPtOrTotalAsset
error MarketZeroTotalPtOrTotalAsset(int256 totalPt, int256 totalAsset)
NotSupported
error NotSupported()
TooMuchRequested
error TooMuchRequested()
UnknownPair
error UnknownPair()
WrongPoolInput
error WrongPoolInput()
creation bytecode
0x60808060405234620005cf5762004b5f8038038091620000208285620006bf565b8339810190602081830312620005cf578051906001600160401b038211620005cf570181601f82011215620005cf578051906001600160401b0382116200048457604051926200007760208460051b0185620006bf565b82845260208085019360071b83010191818311620005cf57602001925b8284106200062f57600180546001600160a01b031990811690915560008054339281168317825560405188936060926001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3620000fb81620006a3565b828152826020820152826040820152015280519060005b8281106200012a5760405161444c9081620007138239f35b81518110156200061957600581901b82016020015160408101519091906001600160a01b031615801562000603575b8015620005f0575b8015620005dd575b6200049a578151604051630b2339af60e21b81529290606090849060049082906001600160a01b03165afa9283156200052d576000906000906000956200055d575b5060408301516001600160a01b03908116908216036200049a576060830151604051637d2d278360e11b81526001600160a01b039182166004820152906020908290602490829087165afa9081156200052d5760009162000539575b50158015620004ac575b6200049a578251606084015160208501516040516001600160a01b0393841698909560ff9092169493909216929060c086018087116001600160401b0390911117620004845760019860c087016040528652888060a01b03166020860152878060a01b03166040850152868060a01b03166060840152608083015260a0820152838060a01b0360408301511660005260026020526040600020848060a01b036060840151166000526020526040600020848060a01b03825116858060a01b0319825416178155848101858060a01b03602084015116868060a01b031982541617905560028101858060a01b03604084015116868060a01b031982541617905560038101858060a01b03606084015116868060a01b03198254161790556004858060a01b03608084015116818301549060ff60a01b60a086015160a01b1691888060a81b0319161717910155838060a01b0360608301511660005260026020526040600020848060a01b0360408401511660005260205260046040600020858060a01b03835116868060a01b0319825416178155858101868060a01b03602085015116878060a01b031982541617905560028101868060a01b03604085015116878060a01b031982541617905560038101868060a01b03606085015116878060a01b03198254161790550190848060a01b0360808201511682549160a060ff811b91015160a01b1691868060a81b03191617179055828060a01b036040820151167fe546beeeab60a56b73c1b949bb268220b489f63cd1a9b947e6e8a34013d082436040858060a01b036060850151169360ff6020888060a01b038351169201511682519182526020820152a30162000112565b634e487b7160e01b600052604160045260246000fd5b6040516325c1cddd60e01b8152600490fd5b506060830151604051633c21b3eb60e11b81526001600160a01b039182166004820152906020908290602490829087165afa9081156200052d57600091620004f7575b501562000211565b6200051e915060203d60201162000525575b620005158183620006bf565b810190620006f8565b88620004ef565b503d62000509565b6040513d6000823e3d90fd5b62000556915060203d6020116200052557620005158183620006bf565b8862000207565b945050506060833d606011620005d4575b816200057d60609383620006bf565b81010312620005cf578251926001600160a01b0384168403620005cf576020810151906001600160a01b0382168203620005cf5760400151936001600160a01b0385168503620005cf579087620001ab565b600080fd5b3d91506200056e565b50606460ff602084015116101562000169565b5081516001600160a01b03161562000161565b5060608201516001600160a01b03161562000159565b634e487b7160e01b600052603260045260246000fd5b608084830312620005cf57604051906200064982620006a3565b6200065485620006e3565b825260208501519060ff82168203620005cf57826020928360809501526200067f60408801620006e3565b6040820152606062000693818901620006e3565b9082015281520193019262000094565b608081019081106001600160401b038211176200048457604052565b601f909101601f19168101906001600160401b038211908210176200048457604052565b51906001600160a01b0382168203620005cf57565b90816020910312620005cf57518015158103620005cf579056fe6080604052600436101561001257600080fd5b6000803560e01c80632f1ccfbe14611afa57806334a2b76614611a3f5780633768040e14611159578063715018a6146110b457806379ba509714610f855780637d4f036a146108715780638da5cb5b14610820578063c93475cb1461072f578063e30c3978146106dd578063f2fde38b146106305763fa483e721461009657600080fd5b3461025a5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025a5780600435602480359067ffffffffffffffff60443581811161062c576100ef90369060040161203d565b8686138015610623575b1561061f57810160209182818303126106175780359084821161061b57019460a086830312610617576040519461012f866121e3565b6101388761201c565b865261014584880161201c565b928487019384526101586040890161201c565b9560408801968752606089013590811161061357880181601f8201121561061357608091818761018a93359101612597565b9760608801988952013592831515840361060f576101cc906080880194855273ffffffffffffffffffffffffffffffffffffffff80809951169151169061265f565b9186835116330361060f578981131561026d575050505050906101f1915116926125ce565b9051823b1561026857610237928492836040518096819582947f1b9d082d000000000000000000000000000000000000000000000000000000008452336004850161262a565b03925af1801561025d5761024a57505080f35b610253906121ff565b61025a5780f35b80fd5b6040513d84823e3d90fd5b505050fd5b90929496975061028091939598506125ce565b95848301956080898851169401938985511690604051917fb8f82b2600000000000000000000000000000000000000000000000000000000835260048301528782604481670de0b6b3a764000094858a8301525afa918215610604578c926105d1575b508981029081048a036105a557816102fa9161282c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116105a5578b9261033589979695938d93612839565b9751610514575b506084939291508451168a89511690604051918884808a86016103d9876103ad7f095ea7b30000000000000000000000000000000000000000000000000000000096878552888d84016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101895288612213565b86519082875af16103e8612439565b816104e4575b50806104da575b1561049f575b5050505089808951169451169360405196879586947f20e8c56500000000000000000000000000000000000000000000000000000000865230600487015285015260448401528960648401525af1801561049457610466575b50506104639233915116612254565b80f35b813d831161048d575b6104798183612213565b81010312610488573880610454565b600080fd5b503d61046f565b6040513d88823e3d90fd5b6104d0946104cb92604051928b840152878301526044820152604481526104c58161217c565b82612307565b612307565b89388080806103fb565b50823b15156103f5565b8051801592508b9083156104fc575b505050386103ee565b61050c93508201810191016122ef565b388a816104f3565b9091929394955051169051813b156105a1578291610563916040519485809481937f1b9d082d0000000000000000000000000000000000000000000000000000000083528b306004850161262a565b03925af180156105965761057e575b9088828987959461033c565b8492919861058d6084926121ff565b98919250610572565b6040513d8b823e3d90fd5b8280fd5b848c7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9091508781813d83116105fd575b6105e98183612213565b810103126105f9575190386102e3565b8b80fd5b503d6105df565b6040513d8e823e3d90fd5b8980fd5b8a80fd5b8780fd5b8880fd5b8680fd5b508685136100f9565b8580fd5b503461025a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025a57610668611fd6565b6106706120fd565b73ffffffffffffffffffffffffffffffffffffffff80911690817fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001558254167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b503461025a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025a57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b503461025a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025a57610767611fd6565b73ffffffffffffffffffffffffffffffffffffffff610784611ff9565b9161078d6120fd565b16604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481855afa9182156108155784926107dc575b6104639350612254565b91506020833d821161080d575b816107f660209383612213565b81010312610809576104639251916107d2565b8380fd5b3d91506107e9565b6040513d86823e3d90fd5b503461025a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025a5773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461025a576108803661206b565b9196929593949092610892868361265f565b956004602073ffffffffffffffffffffffffffffffffffffffff60608a015116604051928380927f2f13b60c0000000000000000000000000000000000000000000000000000000082525afa908115610f28578391610f56575b50156109bd57505073ffffffffffffffffffffffffffffffffffffffff8060408701511691161460001461099357610956946109486109509373ffffffffffffffffffffffffffffffffffffffff606088015116933691612597565b913390614225565b91614185565b905b811061096957602090604051908152f35b60046040517f5945ea56000000000000000000000000000000000000000000000000000000008152fd5b60046040517fa0387940000000000000000000000000000000000000000000000000000000008152fd5b819492989793919695965060408601519073ffffffffffffffffffffffffffffffffffffffff80879b1692168214600014610b8157505090879173ffffffffffffffffffffffffffffffffffffffff86511690333b15610809578391610a52869260405195869485947f1b9d082d00000000000000000000000000000000000000000000000000000000865260048601612741565b038183335af1801561025d57610b6d575b505073ffffffffffffffffffffffffffffffffffffffff8351169060405192602084019084821067ffffffffffffffff831117610b40575091610ae19594939160409384528883528884518098819582947f29910b11000000000000000000000000000000000000000000000000000000008452306004850161262a565b03925af1928315610b3557610afd949593610b03575b50614185565b90610958565b610b2691935060403d604011610b2e575b610b1e8183612213565b810190612808565b509138610af7565b503d610b14565b6040513d87823e3d90fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b610b76906121ff565b61062c578538610a63565b9173ffffffffffffffffffffffffffffffffffffffff869a969298959360409895985199610bae8b6121e3565b8a52166020890152336040890152610bc7368289612597565b6060890152816080890152333b15610f5257610c139660405197889283927f1b9d082d000000000000000000000000000000000000000000000000000000008452863060048601612741565b038183335af1948515610f4757610cba95610f33575b5060209073ffffffffffffffffffffffffffffffffffffffff828401511673ffffffffffffffffffffffffffffffffffffffff6080850151166040518098819482937fb8f82b26000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03915afa938415610f28578394610ef0575b50610d11610ce5939495604051948591602083016127a9565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284612213565b610d3d60ff60a083015116610d37610d31610d2b8361281e565b8a612962565b91612975565b90612839565b60405190610d4a826121e3565b8782526020820152846040820152600a606082015266038d7ea4c68000608082015273ffffffffffffffffffffffffffffffffffffffff82511660405180917f794052f30000000000000000000000000000000000000000000000000000000082523060048301528160246101209485935afa918215610ee55796610e0c610e4897948297946040979473ffffffffffffffffffffffffffffffffffffffff9d9e9b8592610eb8575b50508b610e058e606088015116612a4f565b4292612b12565b50998a925116928551978895869485937f5b709f170000000000000000000000000000000000000000000000000000000085526004850161262a565b03925af1928315610eac575091610e8c575b501115610afd575b60046040517fd8d149ce000000000000000000000000000000000000000000000000000000008152fd5b610ea5915060403d604011610b2e57610b1e8183612213565b5038610e5a565b604051903d90823e3d90fd5b610ed79250803d10610ede575b610ecf8183612213565b8101906129b0565b3880610df3565b503d610ec5565b6040513d8c823e3d90fd5b9293506020833d602011610f20575b81610f0c60209383612213565b8101031261061f5791519291610d11610ccc565b3d9150610eff565b6040513d85823e3d90fd5b610f3e9194506121ff565b86926020610c29565b6040513d8a823e3d90fd5b5080fd5b610f78915060203d602011610f7e575b610f708183612213565b8101906122ef565b386108ec565b503d610f66565b503461025a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025a5760015473ffffffffffffffffffffffffffffffffffffffff3381831603611030577fffffffffffffffffffffffff0000000000000000000000000000000000000000809216600155825491339083161783553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b503461025a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025a576110eb6120fd565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff0000000000000000000000000000000000000000806001541660015582549081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461025a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025a5767ffffffffffffffff6004358181116105a157366023820112156105a15780600401359182116105a15760248260071b820101368111610809576111cb6120fd565b604051926111df60208260051b0185612213565b83526024602084019201915b8183106119d2575050506111fd612d72565b50805190825b82811061120e578380f35b81518110156119a55760208160051b830101519073ffffffffffffffffffffffffffffffffffffffff604083015116158015611983575b8015611964575b8015611952575b6117d35781606073ffffffffffffffffffffffffffffffffffffffff6004945116604051948580927f2c8ce6bc0000000000000000000000000000000000000000000000000000000082525afa80156104945786879488926118b7575b5073ffffffffffffffffffffffffffffffffffffffff60408401511673ffffffffffffffffffffffffffffffffffffffff8616036117d35773ffffffffffffffffffffffffffffffffffffffff606084015116604051907ffa5a4f06000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa908115610596578991611898575b501580156117fd575b6117d35760019473ffffffffffffffffffffffffffffffffffffffff80855116938180606088015116938160ff60208a01511696604051986113a68a6121c7565b8952166020880152166040860152166060840152608083015260a082015273ffffffffffffffffffffffffffffffffffffffff604083015116875260026020526040872073ffffffffffffffffffffffffffffffffffffffff60608401511688526020526040872073ffffffffffffffffffffffffffffffffffffffff8251167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617815584810173ffffffffffffffffffffffffffffffffffffffff6020840151167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556002810173ffffffffffffffffffffffffffffffffffffffff6040840151167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556003810173ffffffffffffffffffffffffffffffffffffffff6060840151167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600473ffffffffffffffffffffffffffffffffffffffff60808401511681830154907fffffffffffffffffffffff00000000000000000000000000000000000000000074ff000000000000000000000000000000000000000060a087015160a01b169216171791015573ffffffffffffffffffffffffffffffffffffffff606083015116875260026020526040872073ffffffffffffffffffffffffffffffffffffffff604084015116885260205260046040882073ffffffffffffffffffffffffffffffffffffffff8351167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617815585810173ffffffffffffffffffffffffffffffffffffffff6020850151167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556002810173ffffffffffffffffffffffffffffffffffffffff6040850151167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556003810173ffffffffffffffffffffffffffffffffffffffff6060850151167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055019073ffffffffffffffffffffffffffffffffffffffff6080820151167fffffffffffffffffffffff00000000000000000000000000000000000000000074ff000000000000000000000000000000000000000060a0855494015160a01b1692161717905573ffffffffffffffffffffffffffffffffffffffff6040820151167fe546beeeab60a56b73c1b949bb268220b489f63cd1a9b947e6e8a34013d08243604073ffffffffffffffffffffffffffffffffffffffff6060850151169360ff602073ffffffffffffffffffffffffffffffffffffffff8351169201511682519182526020820152a301611203565b60046040517f25c1cddd000000000000000000000000000000000000000000000000000000008152fd5b5073ffffffffffffffffffffffffffffffffffffffff606084015116604051907f784367d6000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa908115610596578991611879575b5015611365565b611892915060203d602011610f7e57610f708183612213565b38611872565b6118b1915060203d602011610f7e57610f708183612213565b3861135c565b945050506060833d60601161194a575b816118d460609383612213565b8101031261062c5782519273ffffffffffffffffffffffffffffffffffffffff8416840361061f5760208101519073ffffffffffffffffffffffffffffffffffffffff8216820361061757604001519373ffffffffffffffffffffffffffffffffffffffff8516850361061757909390386112b0565b3d91506118c7565b50606460ff6020840151161015611253565b5073ffffffffffffffffffffffffffffffffffffffff8251161561124c565b5073ffffffffffffffffffffffffffffffffffffffff60608301511615611245565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b608083360312611a3b57604051906119e98261217c565b6119f28461201c565b825260208401359060ff8216820361061f5782602092836080950152611a1a6040870161201c565b60408201526060611a2c81880161201c565b908201528152019201916111eb565b8480fd5b503461025a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025a5760c09060ff6040611a7e611fd6565b92611a87611ff9565b73ffffffffffffffffffffffffffffffffffffffff809516825260026020528483832091168252602052208281541692806001830154169181600282015416600483600384015416920154936040519687526020870152604086015260608501528116608084015260a01c1660a0820152f35b503461025a57611b093661206b565b9094968096939694929450611b1e838961265f565b9773ffffffffffffffffffffffffffffffffffffffff93600460208660608d015116604051928380927f2f13b60c0000000000000000000000000000000000000000000000000000000082525afa908115610815578491611fb7575b5015611cec5750838060408b01511691161460001461099357611b9d8589614323565b908060208560608c0151166004604051809481937f1d52edc40000000000000000000000000000000000000000000000000000000083525af1801561025d578290611cb2575b670de0b6b3a76400009150611bf88185612872565b9309611c71575b5096611c2b611c246080938a610948611c349a9b9c9b88606088015116933691612597565b3083614185565b50015116612254565b905b8111611c4757602090604051908152f35b60046040517f24df576f000000000000000000000000000000000000000000000000000000008152fd5b60018201809211611c855750611c2b611bff565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b506020813d602011611ce4575b81611ccc60209383612213565b81010312610f5257670de0b6b3a76400009051611be3565b3d9150611cbf565b909282989997611d1d91868060405197611d05896121e3565b16948588521660208701523360408701523691612597565b6060840152600160808401526040870151841603611efe5750611d5790611d83611d478688614323565b91604051938491602083016127a9565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612213565b611da960ff60a088015116610d37611da3611d9d83612975565b8c612962565b9161281e565b60405190611db6826121e3565b8152886020820152876040820152600a606082015266038d7ea4c6800060808201528387511660405180917f794052f30000000000000000000000000000000000000000000000000000000082523060048301528160246101209485935afa918215610ee55790611e439392918b92611ee1575b505083611e3c8760608c015116612a4f565b4292613f0a565b505091888311610e62576040611e8f8992868a51169083519485809481937f29910b110000000000000000000000000000000000000000000000000000000083528a306004850161262a565b03925af1978815610eac5797611ebf575b508610610e6257611eb994611c2b608092973083614185565b90611c36565b611ed991975060403d604011610b2e57610b1e8183612213565b509538611ea0565b611ef79250803d10610ede57610ecf8183612213565b3880611e2a565b611f1f93611f4b6040969394611f80985116948751968791602083016127a9565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101875286612213565b8551968795869485937f5b709f170000000000000000000000000000000000000000000000000000000085526004850161262a565b03925af1918215610eac5791611f97575b50611eb9565b611fb0915060403d604011610b2e57610b1e8183612213565b5038611f91565b611fd0915060203d602011610f7e57610f708183612213565b38611b7a565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361048857565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361048857565b359073ffffffffffffffffffffffffffffffffffffffff8216820361048857565b9181601f840112156104885782359167ffffffffffffffff8311610488576020838186019501011161048857565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126104885773ffffffffffffffffffffffffffffffffffffffff90600435828116810361048857926024358381168103610488579260443590811681036104885791606435916084359160a4359067ffffffffffffffff8211610488576120f99160040161203d565b9091565b73ffffffffffffffffffffffffffffffffffffffff60005416330361211e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6080810190811067ffffffffffffffff82111761219857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60c0810190811067ffffffffffffffff82111761219857604052565b60a0810190811067ffffffffffffffff82111761219857604052565b67ffffffffffffffff811161219857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761219857604052565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff909216602483015260448201929092526122b3916104cb8260648101611d57565b565b67ffffffffffffffff811161219857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b90816020910312610488575180151581036104885790565b73ffffffffffffffffffffffffffffffffffffffff16604051604081019181831067ffffffffffffffff84111761219857612384926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161237e612439565b91612469565b805190828215928315612421575b5050501561239d5750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b61243193508201810191016122ef565b388281612392565b3d15612464573d9061244a826122b5565b916124586040519384612213565b82523d6000602084013e565b606090565b919290156124e4575081511561247d575090565b3b156124865790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156124f75750805190602001fd5b612535906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352602060048401526024830190612539565b0390fd5b919082519283825260005b8481106125835750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201612544565b9291926125a3826122b5565b916125b16040519384612213565b829481845281830111610488578281602093846000960137010152565b7f800000000000000000000000000000000000000000000000000000000000000081146125fb5760000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61265c939273ffffffffffffffffffffffffffffffffffffffff60609316825260208201528160408201520190612539565b90565b919060a09060409182918251612674816121c7565b60009281848093528260208201528286820152826060820152826080820152015273ffffffffffffffffffffffffffffffffffffffff809616825260026020528583832091168252602052209260ff8251916126cf836121c7565b6004818754169687855282600182015416602086015282600282015416868601528260038201541660608601520154908116608084015260a01c1660a082015292156127185750565b600490517ffee00694000000000000000000000000000000000000000000000000000000008152fd5b9293806080957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09473ffffffffffffffffffffffffffffffffffffffff601f951687526020870152606060408701528160608701528686013760008582860101520116010190565b6020815273ffffffffffffffffffffffffffffffffffffffff808351166020830152806020840151166040830152604083015116606082015260a060806127fd6060850151838386015260c0850190612539565b930151151591015290565b9190826040910312610488576020825192015190565b60640190816064116125fb57565b919082018092116125fb57565b8115612843570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183098183029182808310920391808303921461295157670de0b6b3a764000090828211156128f3577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669940990828211900360ee1b910360121c170290565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152fd5b5050670de0b6b3a764000091500490565b818102929181159184041417156125fb57565b60640390606482116125fb57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116125fb57565b809161012092839103126104885760405191820182811067ffffffffffffffff82111761219857604052805182526020810151602083015260408101516040830152606081015173ffffffffffffffffffffffffffffffffffffffff811681036104885760608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100809101519082015290565b602073ffffffffffffffffffffffffffffffffffffffff600460009360405194859384927f1d52edc4000000000000000000000000000000000000000000000000000000008452165af1908115612ad957600091612aab575090565b906020823d8211612ad1575b81612ac460209383612213565b8101031261025a57505190565b3d9150612ab7565b6040513d6000823e3d90fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146125fb5760010190565b9490939192612b246000918688612d97565b93604084015115612c83575b815b6060850151811015612c5957612b488186613e30565b612b5f612b57828a8a8d613a8f565b5091906125ce565b84811180159190612bf157608089015182612b9a575b5050612b8c57508552612b8790612ae5565b612b32565b985095505050509250509190565b909150670de0b6b3a7640000908103818111612bc457612bba9087612962565b0411153880612b75565b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111612c2c576020860152612b8790612ae5565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60046040517ffa711db2000000000000000000000000000000000000000000000000000000008152fd5b6020840180518851612cb8612cbe612ca460608b015160408c015190613043565b670de0b6b3a76400009283918c51906130ff565b0561321c565b81810190828212888212908015821691151617612bc457612cef612d0a949392612cea612d03936130ad565b613212565b612cfd60208d015185613004565b906130ff565b0590613043565b6103e790818102918183041490151715612d45576103e8900480821015612d3d5750905b52612d3884613e98565b612b30565b905090612d2e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60405190612d7f8261217c565b60006060838281528260208201528260408201520152565b929190612da2612d72565b9360a081018381511115612fda57519283039283116125fb576080810151926301e1338091828502948086058414901517156125fb577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff948583116104885782612e0b9161313e565b9360009485811315612fa9578852602082015185811215612fa1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905b86811315612f93575b612e66670de0b6b3a7640000938492612962565b049087821161061f5790612e79916130ff565b602089019080825283519081158015612f8b575b612f545750508251610100840151915186612eaa878d5195612962565b0489811161061b57612ebb9061321c565b938412612f235792612ef8612f0a969593612cea612ef3612eee86612cea612ee860c09b612efe9a613004565b916130ad565b61305c565b6130ad565b90613043565b60408a01520151612962565b0491821161025a5750612f1c9061321c565b6060830152565b602484604051907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b60449250604051917fb1c4aefb00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b508015612e8d565b612f9c906125ce565b612e52565b600190612e49565b602490604051907f1ca418760000000000000000000000000000000000000000000000000000000082526004820152fd5b60046040517fb2094b59000000000000000000000000000000000000000000000000000000008152fd5b919091600083820193841291129080158216911516176125fb57565b90670de0b6b3a7640000600083820393128184128116918413901516176125fb57565b818103929160001380158285131691841216176125fb57565b670de0b6b3a764000081146130835761307e81612cea612ee861265c94613020565b6135fe565b60046040517fa9c8b14d000000000000000000000000000000000000000000000000000000008152fd5b90670de0b6b3a7640000918281029281840514901517156125fb57565b9081600003918083057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14901517156125fb57565b8181029291600082127f80000000000000000000000000000000000000000000000000000000000000008214166125fb5781840514901517156125fb57565b8115612843577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82147f80000000000000000000000000000000000000000000000000000000000000008214166125fb570590565b1561319a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c6964206578706f6e656e74000000000000000000000000000000006044820152fd5b8015612843576ec097ce7bc90715b34b9f10000000000590565b8115612843570590565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc0000811215806135eb575b61324f90613193565b600081126135d6576064906806f05b59d3b20000008112613573577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b0280829168ad78ebc5ac62000000811215613537575b50806856bc75e2d631000000849212156134fd575b682b5e3af16b188000008112156134c5575b6815af1d78b58c40000081121561348d575b680ad78ebc5ac6200000811215613456575b8181121561341f575b6802b5e3af16b18800008112156133e8575b68015af1d78b58c400008112156133b1575b60028282800205056003838383020505600484848302050560058585830205056006868683020505600787878302050590600888888402050592600989898602050594600a8a8a8802050596600b8b8b8a02050598600c8c8c8c0205059a0101010101010101010101010205020590565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000083920193020591613340565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800008392019302059161332e565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000008392019302059161331c565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000083920193020591613313565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000083920193020591613301565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000839201930205916132ef565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000839201930205916132dd565b6e01855144814a7ff805980ff008400092507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000019050826132c8565b6803782dace9d900000081126135c3577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926132b2565b68056bc75e2d63100000826001926132b2565b6135e29060000361321c565b61265c906131f8565b5068070c1cc73b00c80000811315613246565b60008113156136e15780670c7d713b49da000012806136d0575b156136c757670de0b6b3a7640000906ec097ce7bc90715b34b9f10000000009061366b908302828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302613212565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b0590565b61265c9061373f565b50670f43fc2c04ee00008112613618565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6f7574206f6620626f756e6473000000000000000000000000000000000000006044820152fd5b670de0b6b3a76400008112613a785760649060007e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c0000000000000821215613a4d575b73011798004d755d3c8bc8e03204cf44619e000000821215613a2c575b8202908202816e01855144814a7ff805980ff00840008281811215613a05575b5050506b02df0ab5a80a22c61ab5a700808212156139e5575b50693f1fce3da636ea5cf850808212156139c5575b50690127fa27722cc06cc5e2808212156139a5575b5068280e60114edb805d0380821215613985575b50680ebc5fb417461211108082121561396e575b506808f00f760a4b2db55d8082121561394e575b506806f5f17757889379378082121561392e575b506806248f33704b2866038082121561390f575b506805c548670b9510e7ac808212156138f0575b506138af68056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102613212565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b010590565b68056bc75e2d631000006756bc75e2d631000092020591019038613873565b68056bc75e2d6310000067ad78ebc5ac6200009202059101903861385f565b68056bc75e2d6310000068015af1d78b58c400009202059101903861384b565b68056bc75e2d631000006802b5e3af16b188000092020591019038613837565b68056bc75e2d631000008092020591019038613823565b68056bc75e2d63100000680ad78ebc5ac62000009202059101903861380f565b68056bc75e2d631000006815af1d78b58c400000920205910190386137fb565b68056bc75e2d63100000682b5e3af16b18800000920205910190386137e6565b68056bc75e2d631000006856bc75e2d631000000920205910190386137d1565b68056bc75e2d631000009192945068ad78ebc5ac62000000935002059101903880806137b8565b6b1425982cf597cd205cef7380909105906803782dace9d900000001613798565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b200000061377b565b613a84613a89916131f8565b61373f565b60000390565b93919284516020830151835190604085015192848112613d3157612cea612ee8613ac393613abd8885613043565b93613004565b670d529ae9e8600000808213613cfa5750613aed9291612cea612ef3613ae89361305c565b613004565b670de0b6b3a764000090818112613ca2576060613b15613b1083612cea876130ad565b6130ca565b940151906000809413600014613cd35781612cea613b32926130ad565b828112613ca2575081613b4f613b4960e093613020565b866130ff565b05965b0151917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92838111610f5257876064613b8e613b9593836130ff565b0595613043565b918183128015613c875715613c7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff925b82811315613c71575b818102918183041490151715613c445786613bea9161282c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111613c445786613c1e91612839565b92831161025a5750613c3761265c9392613c3e926130ff565b9585613d8f565b93613d8f565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b613c7a906125ce565b613bd0565b600192613bc7565b50505061265c929150613c9d613c3e9186613d8f565b613c37565b602490604051907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b50613cf4613b1082613cef613ce960e095613020565b886130ff565b61313e565b96613b52565b60449250604051917ffc68d09e00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e656761746976650000000000000000000000000000000000000000000000006044820152fd5b6000821215613e28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915b6000811315613e1957905b670de0b6b3a7640000918281029281840414901517156125fb57613de991612839565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116104885761265c916130ff565b613e22906125ce565b90613dc6565b600191613dbb565b901580613e8b575b613e84576020815191015180821115613e755760046040517ffa711db2000000000000000000000000000000000000000000000000000000008152fd5b613e7e9161282c565b60011c90565b6040015190565b5060408101511515613e38565b8051906020810151908183118015613ef5575b613eb457505050565b606493506080015190604051927fb301af04000000000000000000000000000000000000000000000000000000008452600484015260248301526044820152fd5b50670de0b6b3a7640000608082015111613eab565b93929094613f1b6000928787612d97565b95604085015115613ff5575b825b6060860151811015612c5957613f3f8187613e30565b613f53613f4b826125ce565b848b8b613a8f565b50878210801590613fe75760808a015181613f92575b50613f835750506020870152613f7e90612ae5565b613f29565b91995097509550919350505050565b670de0b6b3a764000091508101808211613fba57613fb0908a612962565b0482111538613f69565b6024897f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b5050508652613f7e90612ae5565b6020850180518460208a0161400a8151612983565b8083036140355750508082101561402d5750905b5261402885613e98565b613f27565b90509061401e565b61403f818461282c565b6001808201809211614158571c908b5161405a838551613043565b6140648285613004565b8b82138061414f575b156140f1578f612d03670de0b6b3a7640000916140cf8f9661307e6140d497612cea6140b46140a78f8f906140ba97612cfd915190613004565b612cea612ee8858d6130ff565b986130ad565b60406140c684516131f8565b93015195613043565b6130ff565b12156140e957506140e490612983565b61400a565b92509161400a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c6964207074546f4d61726b657400000000000000000000000000006044820152fd5b508b811361406d565b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9173ffffffffffffffffffffffffffffffffffffffff806080816020870151169501511690604051937f769f8e5d0000000000000000000000000000000000000000000000000000000085521660048401528160248401526044830152606482015260208160a481600080968160848401525af1918215610eac57809261420b57505090565b9091506020823d8211612ad15781612ac460209383612213565b9092919273ffffffffffffffffffffffffffffffffffffffff809116911691813b156104885761428b93604051928380927f1b9d082d00000000000000000000000000000000000000000000000000000000825281600098899687938a6004850161262a565b03925af18015610f2857614311575b50602082916024604051809481937fbcb7ea5d0000000000000000000000000000000000000000000000000000000083523060048401525af1918215610eac57916142e3575090565b90506020813d8211614309575b816142fd60209383612213565b81010312610488575190565b3d91506142f0565b9161431d6020936121ff565b9161429a565b73ffffffffffffffffffffffffffffffffffffffff6080816020840151169201511691604051927fcbe52ae30000000000000000000000000000000000000000000000000000000084526004840152602083604481670de0b6b3a7640000958660248301525afa928315612ad9576000936143e3575b50808202918204036125fb57816143af9161282c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116125fb5761265c91612839565b90926020823d821161440e575b816143fd60209383612213565b8101031261025a5750519138614399565b3d91506143f056fea2646970667358221220bc33a1b101f3451b555afc71fb9e3a7e7a3b4596fc78e21709eaec81df4d902f64736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000353d0b2efb5b3a7987fb06d30ad6160522d084260000000000000000000000000000000000000000000000000000000000000023000000000000000000000000a8c8861b5ccf8cce0ade6811cd2a7a7d3222b0b800000000000000000000000066a1e37c9b0eaddca17d3662d6c05f4decf3e110