1 line
67 KiB
JSON
1 line
67 KiB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"_sFrax","type":"address","internalType":"address"},{"name":"_frax","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ids","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getTokens","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"_specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"_prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60c03461012457601f61183e38819003918201601f19168301916001600160401b0383118484101761012857808492604094855283398101031261012457610052602061004b8361013c565b920161013c565b6001600160a01b039182166080521660a0526040516116ed9081610151823960805181818160be015281816103cc015281816104000152818161053d01528181610671015281816106a5015281816107fe015281816108320152818161099201528181610bc601528181610c7901528181610e4701528181610f6901528181610f9d01528181611016015281816111f6015281816112d601526113bb015260a051818181608a015281816101cf0152818161045d0152818161074801528181610b7c01528181610d6e0152610da30152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101245756fe60806040526004361015610011575f80fd5b5f3560e01c806323eeca011461096057806348bd7dfd146108785780638307c655146106d7578063a9270fbe14610442578063aad6e4881461013f5763ecbbc0331461005b575f80fd5b3461013b57602036600319011261013b5760405161007a606082610a8e565b60028152602081019060403683377f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100bb82610ac8565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100ef82610ad5565b52604051918291602083019060208452518091526040830191905f5b818110610119575050500390f35b82516001600160a01b031684528594506020938401939092019160010161010b565b5f80fd5b3461013b57608036600319011261013b57610158610a0c565b610160610a22565b6064359067ffffffffffffffff821161013b573660238301121561013b5781600401359161018d83610ab0565b9261019b6040519485610a8e565b8084526024602085019160051b8301019136831161013b57602401905b828210610432575050506001600160a01b038381167f00000000000000000000000000000000000000000000000000000000000000009091168181149291831591826103fe575b82156103aa575b508115610397575b5061033b5782519361021f85610ab0565b9461022d6040519687610a8e565b80865261023c601f1991610ab0565b015f5b8181106103185750509061025291610da1565b915f5b81518110156102c7578061026b60019284610ae5565b5161027586610ac8565b518111156102c1576102919061028a87610ac8565b5111610fcf565b6102a561029e8285610ae5565b5185611291565b6102af8288610ae5565b526102ba8187610ae5565b5001610255565b50610291565b846040518091602082016020835281518091526020604084019201905f5b8181106102f3575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102e5565b60209060405161032781610a72565b5f81525f8382015282828a0101520161023f565b60405163643c60f360e01b815260206004820152602d60248201527f546869732061646170746572206f6e6c7920737570706f72747320465241583c60448201526c2d3e534652415820737761707360981b6064820152608490fd5b6001600160a01b0383161490508561020e565b9091506001600160a01b0383169081141590816103ca575b509086610206565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866103c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682141592506101ff565b81358152602091820191016101b8565b3461013b5761045036610a38565b6001600160a01b039182167f000000000000000000000000000000000000000000000000000000000000000090921682811493508315929190836106a3575b831561064f575b50821561063c575b505061033b57604051906104b3606083610a8e565b60028252602082019060403683371561052e576001600160801b036104d783610ac8565b526001600160801b036104e983610ad5565b52905b604051918291602083019060208452518091526040830191905f5b818110610515575050500390f35b8251845285945060209384019390920191600101610507565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f9161060a575b5061058784610ad5565b52602061059384610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f916105cd575b506105c683610ac8565b52906104ec565b90506020813d6020116105f7575b816105e860209383610a8e565b8101031261013b5751836105bc565b3d91506105db565b6040513d5f823e3d90fd5b90506020813d602011610634575b8161062560209383610a8e565b8101031261013b57518461057d565b3d9150610618565b6001600160a01b0316149050828061049e565b9092506001600160a01b03831690811415908161066f575b509184610496565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905084610667565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316831415935061048f565b3461013b5760a036600319011261013b576106f0610a0c565b6106f8610a22565b90606435600281101561013b57604051906060820182811067ffffffffffffffff821117610864576040525f82525f602083015260405161073881610a72565b5f808252602082015260408301527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416818114159182610830575b82156107dc575b5081156107c9575b5061033b576080936107a49360843593610af9565b6020604080519280518452828101518385015201518051604084015201516060820152f35b6001600160a01b0386161490508561078f565b9091506001600160a01b0386169081141590816107fc575b509086610787565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866107f4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168214159250610780565b634e487b7160e01b5f52604160045260245ffd5b3461013b5761088636610a38565b50505060405161089760c082610a8e565b600581526020810160a036823760016108af83610ac8565b5260026108bb83610ad5565b5281516002101561094c576003606083015281516003101561094c576005608083015281516004101561094c57600860a0830152604051906020820192602083525180935260408201905f935b8085106109155783830384f35b9091825190600a8210156109385760208160019382935201930194019390610908565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b3461013b57604036600319011261013b5760408051906109808183610a8e565b6001825260208201601f1982013682377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166109cc84610ac8565b52815192839260208401916020855251809252830191905f5b8181106109f3575050500390f35b82518452859450602093840193909201916001016109e5565b602435906001600160a01b038216820361013b57565b604435906001600160a01b038216820361013b57565b606090600319011261013b57600435906024356001600160a01b038116810361013b57906044356001600160a01b038116810361013b5790565b6040810190811067ffffffffffffffff82111761086457604052565b90601f8019910116810190811067ffffffffffffffff82111761086457604052565b67ffffffffffffffff81116108645760051b60200190565b80511561094c5760200190565b80516001101561094c5760400190565b805182101561094c5760209160051b010190565b94939092918582158015610d60575b610d585750610b179084610da1565b9160028110928315610938578115918280610d46575b15610d0e5750610b3f610b4791610ac8565b518310610fcf565b5a92156109385715610cfd57610b5d90836111d9565b84525b5a8103908111610ce95760208401526001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911603610c565760405163ef8b30f760e01b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610c24575b505b60405190610c0d82610a72565b8152670de0b6b3a764000060208201526040830152565b90506020813d602011610c4e575b81610c3f60209383610a8e565b8101031261013b57515f610bfe565b3d9150610c32565b60405163266d6a8360e11b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610cb7575b50610c00565b90506020813d602011610ce1575b81610cd260209383610a8e565b8101031261013b57515f610cb1565b3d9150610cc5565b634e487b7160e01b5f52601160045260245ffd5b610d07908361100c565b8452610b60565b60011480610d34575b610d22575b50610b47565b610b3f610d2e91610ad5565b5f610d1c565b50610d3e81610ad5565b518311610d17565b50610d5082610ac8565b518411610b2d565b955050505050565b506001600160a01b038581167f0000000000000000000000000000000000000000000000000000000000000000909116148015610b08575060028310610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691168181149283159283610f9b575b8315610f47575b508215610f34575b505061033b5760405190610e00606083610a8e565b60028252604036602084013715610e38576001600160801b03610e2282610ac8565b526001600160801b03610e3482610ad5565b5290565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f91610f02575b50610e9183610ad5565b526020610e9d83610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f91610ed0575b50610e3482610ac8565b90506020813d602011610efa575b81610eeb60209383610a8e565b8101031261013b57515f610ec6565b3d9150610ede565b90506020813d602011610f2c575b81610f1d60209383610a8e565b8101031261013b57515f610e87565b3d9150610f10565b6001600160a01b03161490505f80610deb565b9092506001600160a01b038316908114159081610f67575b50915f610de3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610f5f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610ddc565b15610fd657565b60405162461bcd60e51b815260206004820152600e60248201526d131a5b5a5d08195e18d95959195960921b6044820152606490fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911680820361112d57604051630a28a47760e01b81526004810184905290602082602481865afa9182156105ff575f926110f7575b50915f936110836110b39360209530903390611400565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af19081156105ff575f916110c8575090565b90506020813d6020116110ef575b816110e360209383610a8e565b8101031261013b575190565b3d91506110d6565b929091506020833d602011611125575b8161111460209383610a8e565b8101031261013b579151905f61106c565b3d9150611107565b60405163b3d7f6b960e01b81526004810184905290602082602481865afa9182156105ff575f926111a3575b50915f9361117983836020966111746110b397303384611400565b61144b565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b929091506020833d6020116111d1575b816111c060209383610a8e565b8101031261013b579151905f611159565b3d91506111b3565b5f916020916001600160a01b0316906111f481303385611400565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690828214851461125957604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481016110b3565b61126781836110b39561144b565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b6001906040516112a081610a72565b5f80825260209091015215150361139e576002811061135a5760405163ef8b30f760e01b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f92611326575b506040519161131c83610a72565b8252602082015290565b9091506020813d602011611352575b8161134260209383610a8e565b8101031261013b5751905f61130e565b3d9150611335565b606460405162461bcd60e51b815260206004820152602060248201527f416d6f756e7420496e206d7573742062652067726561746572207468616e20316044820152fd5b60405163266d6a8360e11b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f9261132657506040519161131c83610a72565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261144991611444608483610a8e565b6115af565b565b604051636eb1769f60e11b81523060048201526001600160a01b0392831660248201819052939092821690602084604481855afa9384156105ff575f94611563575b508301809311610ce9575f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526114c6606487610a8e565b85519082855af1906114d661161a565b82611531575b5081611526575b50156114ee57505050565b611444611449936040519063095ea7b360e01b602083015260248201525f604482015260448152611520606482610a8e565b826115af565b90503b15155f6114e3565b80519192508115918215611549575b5050905f6114dc565b61155c9250602080918301019101611597565b5f80611540565b9093506020813d60201161158f575b8161157f60209383610a8e565b8101031261013b5751925f61148d565b3d9150611572565b9081602091031261013b5751801515810361013b5790565b5f806115d79260018060a01b03169360208151910182865af16115d061161a565b9083611659565b80519081151591826115ff575b50506115ed5750565b635274afe760e01b5f5260045260245ffd5b6116129250602080918301019101611597565b155f806115e4565b3d15611654573d9067ffffffffffffffff82116108645760405191611649601f8201601f191660200184610a8e565b82523d5f602084013e565b606090565b9061167d575080511561166e57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806116ae575b61168e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561168656fea264697066735822122067f54ef465d21af621c8dd49b39e0406a28ba995a2dfce93f120df14a9a875d164736f6c634300081b0033","sourceMap":"1127:7738:61:-:0;;;;;;;;;;;;;-1:-1:-1;;1127:7738:61;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;;;;;1127:7738:61;;;1403:22;;1127:7738;;1435:20;1127:7738;;;;;;;;1403:22;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1435:20;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:7738:61;;;;;;-1:-1:-1;1127:7738:61;;;;;-1:-1:-1;1127:7738:61;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806323eeca011461096057806348bd7dfd146108785780638307c655146106d7578063a9270fbe14610442578063aad6e4881461013f5763ecbbc0331461005b575f80fd5b3461013b57602036600319011261013b5760405161007a606082610a8e565b60028152602081019060403683377f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100bb82610ac8565b527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166100ef82610ad5565b52604051918291602083019060208452518091526040830191905f5b818110610119575050500390f35b82516001600160a01b031684528594506020938401939092019160010161010b565b5f80fd5b3461013b57608036600319011261013b57610158610a0c565b610160610a22565b6064359067ffffffffffffffff821161013b573660238301121561013b5781600401359161018d83610ab0565b9261019b6040519485610a8e565b8084526024602085019160051b8301019136831161013b57602401905b828210610432575050506001600160a01b038381167f00000000000000000000000000000000000000000000000000000000000000009091168181149291831591826103fe575b82156103aa575b508115610397575b5061033b5782519361021f85610ab0565b9461022d6040519687610a8e565b80865261023c601f1991610ab0565b015f5b8181106103185750509061025291610da1565b915f5b81518110156102c7578061026b60019284610ae5565b5161027586610ac8565b518111156102c1576102919061028a87610ac8565b5111610fcf565b6102a561029e8285610ae5565b5185611291565b6102af8288610ae5565b526102ba8187610ae5565b5001610255565b50610291565b846040518091602082016020835281518091526020604084019201905f5b8181106102f3575050500390f35b82518051855260209081015181860152869550604090940193909201916001016102e5565b60209060405161032781610a72565b5f81525f8382015282828a0101520161023f565b60405163643c60f360e01b815260206004820152602d60248201527f546869732061646170746572206f6e6c7920737570706f72747320465241583c60448201526c2d3e534652415820737761707360981b6064820152608490fd5b6001600160a01b0383161490508561020e565b9091506001600160a01b0383169081141590816103ca575b509086610206565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866103c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682141592506101ff565b81358152602091820191016101b8565b3461013b5761045036610a38565b6001600160a01b039182167f000000000000000000000000000000000000000000000000000000000000000090921682811493508315929190836106a3575b831561064f575b50821561063c575b505061033b57604051906104b3606083610a8e565b60028252602082019060403683371561052e576001600160801b036104d783610ac8565b526001600160801b036104e983610ad5565b52905b604051918291602083019060208452518091526040830191905f5b818110610515575050500390f35b8251845285945060209384019390920191600101610507565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f9161060a575b5061058784610ad5565b52602061059384610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f916105cd575b506105c683610ac8565b52906104ec565b90506020813d6020116105f7575b816105e860209383610a8e565b8101031261013b5751836105bc565b3d91506105db565b6040513d5f823e3d90fd5b90506020813d602011610634575b8161062560209383610a8e565b8101031261013b57518461057d565b3d9150610618565b6001600160a01b0316149050828061049e565b9092506001600160a01b03831690811415908161066f575b509184610496565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905084610667565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316831415935061048f565b3461013b5760a036600319011261013b576106f0610a0c565b6106f8610a22565b90606435600281101561013b57604051906060820182811067ffffffffffffffff821117610864576040525f82525f602083015260405161073881610a72565b5f808252602082015260408301527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416818114159182610830575b82156107dc575b5081156107c9575b5061033b576080936107a49360843593610af9565b6020604080519280518452828101518385015201518051604084015201516060820152f35b6001600160a01b0386161490508561078f565b9091506001600160a01b0386169081141590816107fc575b509086610787565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614159050866107f4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168214159250610780565b634e487b7160e01b5f52604160045260245ffd5b3461013b5761088636610a38565b50505060405161089760c082610a8e565b600581526020810160a036823760016108af83610ac8565b5260026108bb83610ad5565b5281516002101561094c576003606083015281516003101561094c576005608083015281516004101561094c57600860a0830152604051906020820192602083525180935260408201905f935b8085106109155783830384f35b9091825190600a8210156109385760208160019382935201930194019390610908565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b3461013b57604036600319011261013b5760408051906109808183610a8e565b6001825260208201601f1982013682377f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166109cc84610ac8565b52815192839260208401916020855251809252830191905f5b8181106109f3575050500390f35b82518452859450602093840193909201916001016109e5565b602435906001600160a01b038216820361013b57565b604435906001600160a01b038216820361013b57565b606090600319011261013b57600435906024356001600160a01b038116810361013b57906044356001600160a01b038116810361013b5790565b6040810190811067ffffffffffffffff82111761086457604052565b90601f8019910116810190811067ffffffffffffffff82111761086457604052565b67ffffffffffffffff81116108645760051b60200190565b80511561094c5760200190565b80516001101561094c5760400190565b805182101561094c5760209160051b010190565b94939092918582158015610d60575b610d585750610b179084610da1565b9160028110928315610938578115918280610d46575b15610d0e5750610b3f610b4791610ac8565b518310610fcf565b5a92156109385715610cfd57610b5d90836111d9565b84525b5a8103908111610ce95760208401526001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911603610c565760405163ef8b30f760e01b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610c24575b505b60405190610c0d82610a72565b8152670de0b6b3a764000060208201526040830152565b90506020813d602011610c4e575b81610c3f60209383610a8e565b8101031261013b57515f610bfe565b3d9150610c32565b60405163266d6a8360e11b8152670de0b6b3a764000060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ff575f91610cb7575b50610c00565b90506020813d602011610ce1575b81610cd260209383610a8e565b8101031261013b57515f610cb1565b3d9150610cc5565b634e487b7160e01b5f52601160045260245ffd5b610d07908361100c565b8452610b60565b60011480610d34575b610d22575b50610b47565b610b3f610d2e91610ad5565b5f610d1c565b50610d3e81610ad5565b518311610d17565b50610d5082610ac8565b518411610b2d565b955050505050565b506001600160a01b038581167f0000000000000000000000000000000000000000000000000000000000000000909116148015610b08575060028310610b08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691168181149283159283610f9b575b8315610f47575b508215610f34575b505061033b5760405190610e00606083610a8e565b60028252604036602084013715610e38576001600160801b03610e2282610ac8565b526001600160801b03610e3482610ad5565b5290565b6040516361c1c5e960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa9081156105ff575f91610f02575b50610e9183610ad5565b526020610e9d83610ad5565b51602460405180948193630a28a47760e01b835260048301525afa9081156105ff575f91610ed0575b50610e3482610ac8565b90506020813d602011610efa575b81610eeb60209383610a8e565b8101031261013b57515f610ec6565b3d9150610ede565b90506020813d602011610f2c575b81610f1d60209383610a8e565b8101031261013b57515f610e87565b3d9150610f10565b6001600160a01b03161490505f80610deb565b9092506001600160a01b038316908114159081610f67575b50915f610de3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141590505f610f5f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168314159350610ddc565b15610fd657565b60405162461bcd60e51b815260206004820152600e60248201526d131a5b5a5d08195e18d95959195960921b6044820152606490fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911680820361112d57604051630a28a47760e01b81526004810184905290602082602481865afa9182156105ff575f926110f7575b50915f936110836110b39360209530903390611400565b604051632d182be560e21b8152600481019190915233602482015230604482015293849283919082906064820190565b03925af19081156105ff575f916110c8575090565b90506020813d6020116110ef575b816110e360209383610a8e565b8101031261013b575190565b3d91506110d6565b929091506020833d602011611125575b8161111460209383610a8e565b8101031261013b579151905f61106c565b3d9150611107565b60405163b3d7f6b960e01b81526004810184905290602082602481865afa9182156105ff575f926111a3575b50915f9361117983836020966111746110b397303384611400565b61144b565b6040516394bf804d60e01b8152600481019190915233602482015293849283919082906044820190565b929091506020833d6020116111d1575b816111c060209383610a8e565b8101031261013b579151905f611159565b3d91506111b3565b5f916020916001600160a01b0316906111f481303385611400565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690828214851461125957604051635d043b2960e11b8152600481019190915233602482015230604482015293849250829081606481016110b3565b61126781836110b39561144b565b604051636e553f6560e01b8152600481019190915233602482015293849283919082906044820190565b6001906040516112a081610a72565b5f80825260209091015215150361139e576002811061135a5760405163ef8b30f760e01b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f92611326575b506040519161131c83610a72565b8252602082015290565b9091506020813d602011611352575b8161134260209383610a8e565b8101031261013b5751905f61130e565b3d9150611335565b606460405162461bcd60e51b815260206004820152602060248201527f416d6f756e7420496e206d7573742062652067726561746572207468616e20316044820152fd5b60405163266d6a8360e11b815260048101829052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156105ff575f9261132657506040519161131c83610a72565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261144991611444608483610a8e565b6115af565b565b604051636eb1769f60e11b81523060048201526001600160a01b0392831660248201819052939092821690602084604481855afa9384156105ff575f94611563575b508301809311610ce9575f8060405194602086019063095ea7b360e01b82528760248801526044870152604486526114c6606487610a8e565b85519082855af1906114d661161a565b82611531575b5081611526575b50156114ee57505050565b611444611449936040519063095ea7b360e01b602083015260248201525f604482015260448152611520606482610a8e565b826115af565b90503b15155f6114e3565b80519192508115918215611549575b5050905f6114dc565b61155c9250602080918301019101611597565b5f80611540565b9093506020813d60201161158f575b8161157f60209383610a8e565b8101031261013b5751925f61148d565b3d9150611572565b9081602091031261013b5751801515810361013b5790565b5f806115d79260018060a01b03169360208151910182865af16115d061161a565b9083611659565b80519081151591826115ff575b50506115ed5750565b635274afe760e01b5f5260045260245ffd5b6116129250602080918301019101611597565b155f806115e4565b3d15611654573d9067ffffffffffffffff82116108645760405191611649601f8201601f191660200184610a8e565b82523d5f602084013e565b606090565b9061167d575080511561166e57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806116ae575b61168e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561168656fea264697066735822122067f54ef465d21af621c8dd49b39e0406a28ba995a2dfce93f120df14a9a875d164736f6c634300081b0033","sourceMap":"1127:7738:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1127:7738:61;;;;;;;;;;:::i;:::-;5345:1;1127:7738;;;;;;;;;;5378:4;-1:-1:-1;;;;;1127:7738:61;5358:25;;;:::i;:::-;1127:7738;5413:5;-1:-1:-1;;;;;1127:7738:61;5393:26;;;:::i;:::-;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1127:7738:61;;;;;-1:-1:-1;1127:7738:61;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1127:7738:61;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1127:7738:61;;;1635:4;1127:7738;;;1614:26;;;;1127:7738;1614:26;;;;:57;;1127:7738;1613:136;;;;1127:7738;1613:177;;;;;1127:7738;1596:297;;;1127:7738;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;4294:23;;;;;;:::i;:::-;2383:13;1127:7738;2428:3;1127:7738;;2398:28;;;;;2605:20;;1127:7738;2605:20;;;:::i;:::-;1127:7738;8624:9;;;:::i;:::-;1127:7738;8606:27;;8576:281;;;8649:54;8675:9;;;;:::i;:::-;1127:7738;-1:-1:-1;8649:54:61;:::i;:::-;2670:60;2709:20;;;;:::i;:::-;1127:7738;2670:60;;:::i;:::-;2641:89;;;;:::i;:::-;;;;;;:::i;:::-;;1127:7738;2383:13;;8576:281;1127:7738;8576:281;;2398:28;;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:7738:61;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1127:7738:61;;-1:-1:-1;1127:7738:61;;;;;;;;;;;;;1596:297;1127:7738;;-1:-1:-1;;;1822:60:61;;1127:7738;;1822:60;;1127:7738;;;;;;;;;;;-1:-1:-1;;;1127:7738:61;;;;;;1822:60;1613:177;-1:-1:-1;;;;;1127:7738:61;;1769:21;;-1:-1:-1;1613:177:61;;;:136;1127:7738;;-1:-1:-1;;;;;;1127:7738:61;;1693:25;;;;;;:55;;1613:136;;;;;;1693:55;1742:5;-1:-1:-1;;;;;1127:7738:61;1722:26;;;-1:-1:-1;1693:55:61;;;1614:57;1665:5;-1:-1:-1;;;;;1127:7738:61;1644:27;;;;-1:-1:-1;1614:57:61;;1127:7738;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1127:7738:61;;;1635:4;1127:7738;;;1614:26;;;;-1:-1:-1;1614:26:61;;;1127:7738;4294:23;1614:26;:57;;1127:7738;1613:136;;;;1127:7738;1613:177;;;;;1127:7738;1596:297;;;;1127:7738;;;;;;;:::i;:::-;4356:1;1127:7738;;;;;;;;;;4373:26;;;-1:-1:-1;;;;;4445:29:61;;;:::i;:::-;1127:7738;-1:-1:-1;;;;;4488:29:61;;;:::i;:::-;1127:7738;4369:285;;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:7738:61;;;;;;;;;;;;;4369:285;1127:7738;;-1:-1:-1;;;4560:25:61;;:5;-1:-1:-1;;;;;1127:7738:61;;;;;;;4560:25;;;;;;;1127:7738;4560:25;;;4369:285;4548:37;;;;:::i;:::-;1127:7738;;4633:9;;;:::i;:::-;1127:7738;4611:32;1127:7738;;1283:4;;;;;;;4611:32;;1127:7738;4611:32;;1127:7738;4611:32;;;;;;;1127:7738;4611:32;;;4369:285;4599:44;;;;:::i;:::-;1127:7738;4369:285;;;4611:32;;;1127:7738;4611:32;;1127:7738;4611:32;;;;;;1283:4;4611:32;;;:::i;:::-;;;1283:4;;;;;4611:32;;;;;;-1:-1:-1;4611:32:61;;;1127:7738;;1283:4;1127:7738;1283:4;;;;;4560:25;;;1127:7738;4560:25;;1127:7738;4560:25;;;;;;1283:4;4560:25;;;:::i;:::-;;;1283:4;;;;;4560:25;;;;;;-1:-1:-1;4560:25:61;;1613:177;-1:-1:-1;;;;;1127:7738:61;1769:21;;-1:-1:-1;1613:177:61;;;;:136;1127:7738;;-1:-1:-1;;;;;;1127:7738:61;;1693:25;;;;;;:55;;1613:136;;;;;;1693:55;1742:5;-1:-1:-1;;;;;1127:7738:61;1722:26;;;-1:-1:-1;1693:55:61;;;1614:57;1665:5;-1:-1:-1;;;;;1127:7738:61;1644:27;;;;-1:-1:-1;1614:57:61;;1127:7738;;;;;;-1:-1:-1;;1127:7738:61;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1127:7738:61;;;;;;;;;;;1635:4;-1:-1:-1;;;;;1127:7738:61;;;;;;1614:26;;;;;;:57;;1127:7738;1613:136;;;;1127:7738;1613:177;;;;;1127:7738;1596:297;;;1127:7738;;2786:1232;1127:7738;;;2786:1232;;:::i;:::-;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:177;-1:-1:-1;;;;;1127:7738:61;;1769:21;;-1:-1:-1;1613:177:61;;;:136;1127:7738;;-1:-1:-1;;;;;;1127:7738:61;;1693:25;;;;;;:55;;1613:136;;;;;;1693:55;1742:5;-1:-1:-1;;;;;1127:7738:61;1722:26;;;-1:-1:-1;1693:55:61;;;1614:57;1665:5;-1:-1:-1;;;;;1127:7738:61;1644:27;;;;-1:-1:-1;1614:57:61;;1127:7738;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;4895:1;1127:7738;;;;;;;;;4925:20;4907:38;;;:::i;:::-;1127:7738;4973:19;4955:37;;;:::i;:::-;1127:7738;;;4973:19;1127:7738;;;;5020:24;1127:7738;;;;;;5020:24;1127:7738;;;;4895:1;1127:7738;;;;;;;;;;;5124:21;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4925:20;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1127:7738:61;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;1127:7738:61;;;;;5771:5;1127:7738;;-1:-1:-1;;1127:7738:61;5738:41;;;:::i;:::-;1127:7738;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:7738:61;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;;;;-1:-1:-1;;;;;1127:7738:61;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;4925:20;1127:7738;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;2786:1232::-;;;;;;;3084:20;;:91;;;;2786:1232;3067:156;;4294:23;;;;;:::i;:::-;1127:7738;;;;;;;;;8580:22;;;;;:53;;2786:1232;8576:281;;;8675:9;;8649:54;8675:9;;:::i;:::-;1127:7738;8657:27;;8649:54;:::i;:::-;3498:9;1127:7738;;;;3521:22;;;3604:32;;;;:::i;:::-;1127:7738;;3517:236;3790:9;1127:7738;;;;;;;3762:13;;;1127:7738;-1:-1:-1;;;;;1127:7738:61;;;3851:4;1127:7738;;;3830:26;1127:7738;;;;-1:-1:-1;;;3871:34:61;;1283:4;3871:34;;;1127:7738;3762:13;1127:7738;3871:34;1127:7738;3871:5;-1:-1:-1;;;;;1127:7738:61;3871:34;;;;;;;3103:1;3871:34;;;3830:123;;;1127:7738;;;;;;:::i;:::-;;;1283:4;3762:13;3978:33;;1127:7738;;3964:11;;:47;2786:1232::o;3871:34::-;;;3762:13;3871:34;;3762:13;3871:34;;;;;;1283:4;3871:34;;;:::i;:::-;;;1283:4;;;;;3871:34;;;;;;-1:-1:-1;3871:34:61;;3830:123;1127:7738;;-1:-1:-1;;;3920:33:61;;1283:4;3920:33;;;1127:7738;3762:13;1127:7738;3920:33;1127:7738;3920:5;-1:-1:-1;;;;;1127:7738:61;3920:33;;;;;;;3103:1;3920:33;;;3830:123;;;;3920:33;;;3762:13;3920:33;;3762:13;3920:33;;;;;;1283:4;3920:33;;;:::i;:::-;;;1283:4;;;;;3920:33;;;;;;-1:-1:-1;3920:33:61;;1127:7738;;;;3103:1;1127:7738;;;;;3103:1;1127:7738;3517:236;3711:31;;;;:::i;:::-;1127:7738;;3517:236;;8576:281;1127:7738;8724:21;:52;;;8576:281;8720:137;;8576:281;;;;8720:137;8818:9;8792:54;8818:9;;:::i;8792:54::-;8720:137;;;8724:52;8767:9;;;;:::i;:::-;1127:7738;8749:27;;8724:52;;8580:53;8624:9;;;;:::i;:::-;1127:7738;8606:27;;8580:53;;3067:156;3200:12;-1:-1:-1;;;;;3200:12:61:o;3084:91::-;-1:-1:-1;;;;;;1127:7738:61;;;3146:4;1127:7738;;;3125:26;:49;;3084:91;3125:49;3155:19;3173:1;3155:19;;3084:91;;1520:390;1635:4;-1:-1:-1;;;;;1127:7738:61;;;;;1614:26;;;;;;;;:57;;1520:390;1613:136;;;;1520:390;1613:177;;;;;1520:390;1596:297;;;;1127:7738;;;;;;;:::i;:::-;4356:1;1127:7738;;;;;;;;4373:26;;;-1:-1:-1;;;;;4445:29:61;;;:::i;:::-;1127:7738;-1:-1:-1;;;;;4488:29:61;;;:::i;:::-;1127:7738;1520:390;:::o;4369:285::-;1127:7738;;-1:-1:-1;;;4560:25:61;;:5;-1:-1:-1;;;;;1127:7738:61;;;;4560:25;1127:7738;;4560:25;;;;;;;1127:7738;4560:25;;;4369:285;4548:37;;;;:::i;:::-;1127:7738;;4633:9;;;:::i;:::-;1127:7738;4611:32;1127:7738;;1283:4;;;;;;;4611:32;;4560:25;4611:32;;1127:7738;4611:32;;;;;;;1127:7738;4611:32;;;4369:285;4599:44;;;;:::i;4611:32::-;;;1127:7738;4611:32;;1127:7738;4611:32;;;;;;1283:4;4611:32;;;:::i;:::-;;;1283:4;;;;;4611:32;;;;;;-1:-1:-1;4611:32:61;;4560:25;;;1127:7738;4560:25;;1127:7738;4560:25;;;;;;1283:4;4560:25;;;:::i;:::-;;;1283:4;;;;;4560:25;;;;;;-1:-1:-1;4560:25:61;;1613:177;-1:-1:-1;;;;;1127:7738:61;1769:21;;-1:-1:-1;1613:177:61;;;;:136;1127:7738;;-1:-1:-1;;;;;;1127:7738:61;;1693:25;;;;;;:55;;1613:136;;;;;;1693:55;1742:5;-1:-1:-1;;;;;1127:7738:61;1722:26;;;-1:-1:-1;1693:55:61;;;1614:57;1665:5;-1:-1:-1;;;;;1127:7738:61;1644:27;;;;-1:-1:-1;1614:57:61;;1127:7738;;;;:::o;:::-;;;-1:-1:-1;;;1127:7738:61;;;;;;;;;;;;-1:-1:-1;;;1127:7738:61;;;;;;;6701:739;-1:-1:-1;;;;;6848:5:61;1127:7738;;;;6827:27;;;1127:7738;;;;-1:-1:-1;;;6889:29:61;;;;;1127:7738;;;;1283:4;1127:7738;6889:29;1127:7738;6889:29;;;;;;;;1127:7738;6889:29;;;6823:611;7004:4;;1127:7738;7004:4;7011:8;7054:49;7004:4;1283;7004;;6984:10;;7011:8;;:::i;:::-;1127:7738;;-1:-1:-1;;;7054:49:61;;6889:29;7054:49;;1127:7738;;;;6984:10;1127:7738;;;;7004:4;1127:7738;;;;;;;;;1283:4;1127:7738;;;;;;;7054:49;;;;;;;;;;1127:7738;7054:49;;;7047:56;;:::o;7054:49::-;;;1283:4;7054:49;;1283:4;7054:49;;;;;;1283:4;7054:49;;;:::i;:::-;;;1283:4;;;;;7047:56;:::o;7054:49::-;;;-1:-1:-1;7054:49:61;;6889:29;;;;;1283:4;6889:29;;1283:4;6889:29;;;;;;1283:4;6889:29;;;:::i;:::-;;;1283:4;;;;;;;1127:7738;6889:29;;;;;-1:-1:-1;6889:29:61;;6823:611;1127:7738;;-1:-1:-1;;;7153:25:61;;;;;1127:7738;;;;1283:4;1127:7738;7153:25;1127:7738;7153:25;;;;;;;;1127:7738;7153:25;;;6823:611;7264:4;;1127:7738;7264:4;7363:8;7264:4;;1283;7264;7271:8;7393:30;7264:4;;7244:10;7271:8;;:::i;:::-;7363;:::i;:::-;1127:7738;;-1:-1:-1;;;7393:30:61;;7153:25;7393:30;;1127:7738;;;;7244:10;1127:7738;;;;;;;;;1283:4;1127:7738;;;;;;;7153:25;;;;;1283:4;7153:25;;1283:4;7153:25;;;;;;1283:4;7153:25;;;:::i;:::-;;;1283:4;;;;;;;1127:7738;7153:25;;;;;-1:-1:-1;7153:25:61;;6005:468;1127:7738;;6261:47;;-1:-1:-1;;;;;1127:7738:61;;6190:6;6005:468;6183:4;6163:10;1127:7738;6190:6;:::i;:::-;6232:5;-1:-1:-1;;;;;1127:7738:61;;6211:27;;;1127:7738;;;;;;-1:-1:-1;;;6261:47:61;;;;;1127:7738;;;;6163:10;1127:7738;;;;6183:4;1127:7738;;;;;;;-1:-1:-1;1127:7738:61;;;;;;6261:47;1127:7738;6207:260;6395:6;;;6423:33;6395:6;;:::i;:::-;1127:7738;;-1:-1:-1;;;6423:33:61;;;;;1127:7738;;;;6163:10;1127:7738;;;;;;;;;1283:4;1127:7738;;;;;;;7727:439;7878:4;7727:439;1127:7738;;;;;:::i;:::-;-1:-1:-1;1127:7738:61;;;;;;;;;;7864:18;7878:4;;7913:1;7902:12;;7898:93;;1127:7738;;-1:-1:-1;;;8021:30:61;;;;;1127:7738;;;;1283:4;1127:7738;8021:30;1127:7738;8021:5;-1:-1:-1;;;;;1127:7738:61;8021:30;;;;;;;1127:7738;8021:30;;;7860:300;1127:7738;;;;;;;:::i;:::-;;;1283:4;8012:50;;1127:7738;8005:57;:::o;8021:30::-;;;;1283:4;8021:30;;1283:4;8021:30;;;;;;1283:4;8021:30;;;:::i;:::-;;;1283:4;;;;;8021:30;;;;;;;-1:-1:-1;8021:30:61;;7898:93;7934:42;1127:7738;;;;;7934:42;;1127:7738;7934:42;;;1127:7738;;;;;;;;;;;7934:42;7860:300;1127:7738;;-1:-1:-1;;;8109:29:61;;;;;1127:7738;;;;1283:4;1127:7738;8109:29;1127:7738;8109:5;-1:-1:-1;;;;;1127:7738:61;8109:29;;;;;;;1127:7738;8109:29;;;1127:7738;;;;;;;:::i;1702:188:32:-;1127:7738:61;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;1127:7738:61;;;1829:53:32;;;1127:7738:61;;;;;;;;;;;;;;;;;1829:53:32;;;;;;;1127:7738:61;1829:53:32;:::i;:::-;;:::i;:::-;1702:188::o;2081:225::-;1127:7738:61;;-1:-1:-1;;;2200:39:32;;2224:4;2200:39;;;1127:7738:61;-1:-1:-1;;;;;1127:7738:61;;;;;;;;;;;;;;;;;2200:39:32;1127:7738:61;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;;2081:225;1127:7738:61;;;;;;;;-1:-1:-1;1127:7738:61;;;3411:47:32;1127:7738:61;3411:47:32;;1283:4:61;;;;3411:47:32;;;1127:7738:61;3411:47:32;;1127:7738:61;2200:39:32;1127:7738:61;;;2200:39:32;3411:47;;;;;;:::i;:::-;8024:25;;;;;;;;;;:::i;:::-;8066:69;;;2081:225;8066:103;;;;2081:225;3473:45;;3469:201;;2081:225;;;:::o;3469:201::-;3561:43;3646:12;1127:7738:61;;;1283:4;;;;1127:7738;3561:43:32;;;1127:7738:61;3561:43:32;;1127:7738:61;-1:-1:-1;2200:39:32;1127:7738:61;;;2200:39:32;3561:43;;;3411:47;3561:43;;:::i;:::-;;;:::i;8066:103::-;8139:26;;;:30;;8066:103;;;:69;1127:7738:61;;;;-1:-1:-1;8078:22:32;;;:56;;;;8066:69;;;;;;;8078:56;8104:30;;;1127:7738:61;8104:30:32;;;;;;;;:::i;:::-;8078:56;;;;2200:39;;;;1127:7738:61;2200:39:32;;1127:7738:61;2200:39:32;;;;;;1283:4:61;2200:39:32;;;:::i;:::-;;;1283:4:61;;;;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;1127:7738:61;;;;;;;;;;;;;;;;;;:::o;6468:629:32:-;2626:1:33;6468:629:32;3304:55:33;6468:629:32;1127:7738:61;;;;;;3256:31:33;;;;;;;;;;;;:::i;:::-;3304:55;;;:::i;:::-;1127:7738:61;;6960:22:32;;;;:57;;;;6468:629;6956:135;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;1127:7738:61;;2626:1:33;7040:40:32;6960:57;6987:30;;;3256:31:33;6987:30:32;;;;;;;;:::i;:::-;6986:31;6960:57;;;;1127:7738:61;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1127:7738:61;;;;;:::i;:::-;;;;-1:-1:-1;1127:7738:61;;;;:::o;:::-;;;:::o;4421:582:33:-;;4593:8;;-1:-1:-1;1127:7738:61;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;1127:7738:61;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;1127:7738:61;;;;4917:24:33;1127:7738:61;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"66921":[{"start":190,"length":32},{"start":972,"length":32},{"start":1024,"length":32},{"start":1341,"length":32},{"start":1649,"length":32},{"start":1701,"length":32},{"start":2046,"length":32},{"start":2098,"length":32},{"start":2450,"length":32},{"start":3014,"length":32},{"start":3193,"length":32},{"start":3655,"length":32},{"start":3945,"length":32},{"start":3997,"length":32},{"start":4118,"length":32},{"start":4598,"length":32},{"start":4822,"length":32},{"start":5051,"length":32}],"66924":[{"start":138,"length":32},{"start":463,"length":32},{"start":1117,"length":32},{"start":1864,"length":32},{"start":2940,"length":32},{"start":3438,"length":32},{"start":3491,"length":32}]}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sFrax\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_frax\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"ids\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"_prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Adapter for FraxV3 protocol, supports Frax --> sFrax and sFrax --> Frax\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"there is no hard capped limit\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getPoolIds(uint256,uint256)\":{\"details\":\"Since FraxV3 is a single pool that supports FRAX and SFRAX, we return it directly\",\"params\":{\"limit\":\"The maximum number of pool IDs to retrieve.\",\"offset\":\"The starting index from which to retrieve pool IDs.\"},\"returns\":{\"ids\":\"An array of pool IDs.\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"_prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"FraxV3SFraxAdapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getPoolIds(uint256,uint256)\":{\"notice\":\"Retrieves a range of pool IDs.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/sfrax/FraxV3SFraxAdapter.sol\":\"FraxV3SFraxAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/sfrax/FraxV3SFraxAdapter.sol\":{\"keccak256\":\"0x2b7c13cd41026b764e488645a2d0ff419861e682cf9cb3386c321280422b1077\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://a22ef29e0035d00f629fe6db67f3e760feb97fb50aed65afe0ce628902b60be4\",\"dweb:/ipfs/Qmdf8ry4G8MFZob1Z88GZssky9nWe7FVGQW9NMCdesWzBw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_sFrax","type":"address"},{"internalType":"address","name":"_frax","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"_specifiedAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"_prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"there is no hard capped limit","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getPoolIds(uint256,uint256)":{"details":"Since FraxV3 is a single pool that supports FRAX and SFRAX, we return it directly","params":{"limit":"The maximum number of pool IDs to retrieve.","offset":"The starting index from which to retrieve pool IDs."},"returns":{"ids":"An array of pool IDs."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"_prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getPoolIds(uint256,uint256)":{"notice":"Retrieves a range of pool IDs."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/sfrax/FraxV3SFraxAdapter.sol":"FraxV3SFraxAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/sfrax/FraxV3SFraxAdapter.sol":{"keccak256":"0x2b7c13cd41026b764e488645a2d0ff419861e682cf9cb3386c321280422b1077","urls":["bzz-raw://a22ef29e0035d00f629fe6db67f3e760feb97fb50aed65afe0ce628902b60be4","dweb:/ipfs/Qmdf8ry4G8MFZob1Z88GZssky9nWe7FVGQW9NMCdesWzBw"],"license":"AGPL-3.0-or-later"}},"version":1},"id":61} |