0 txs
1 call
constructor
constructor(address _router, address _quoter, address _balancerV2Vault, address _balancerQueries)
functions
BALANCER_QUERIES
viewfunction BALANCER_QUERIES() view returns (address)
BALANCER_VAULT
viewfunction BALANCER_VAULT() view returns (address)
calculatePriceDifferenceBps
purefunction calculatePriceDifferenceBps(tuple amountA, tuple amountB) pure returns (uint256 priceDifferenceBps)
getQuoteAmounts
viewfunction getQuoteAmounts(uint8 direction, address baseToken, address quoteToken, uint256 quoteSize, tuple params) view returns (uint256 baseTokens, uint256 quoteTokens)
quoter
viewfunction quoter() view returns (address)
router
viewfunction router() view returns (address)
version
viewfunction version() view returns (string)
call
nonpayablefunction call(address[] vaults, address baseToken, address quoteToken, uint8 flavor, bytes flavorParams, tuple orderBookParams) returns (tuple)
getQuoteAmounts
nonpayablefunction getQuoteAmounts(uint8 direction, address baseToken, address quoteToken, uint256 quoteSize, tuple params) returns (uint256 baseTokens, uint256 quoteTokens)
getQuoteAmounts
nonpayablefunction getQuoteAmounts(uint8 direction, address exactToken, address otherToken, uint256 baseTokenAmount, tuple[] swapParams) returns (uint256 exactTokens, uint256 otherTokens)
events
No events.
errors
InvalidBaseTokenAmount
error InvalidBaseTokenAmount()
OutputTokenIsNotQuoteToken
error OutputTokenIsNotQuoteToken()
PathIsEmpty
error PathIsEmpty()
ZeroAddress
error ZeroAddress()
creation bytecode
0x610100806040523461025457608081613ae3803803809161002082856103b8565b8339810103126102545780516001600160a01b0381169190828103610254576020820151906001600160a01b038216908183036102545761006f6060610068604087016103db565b95016103db565b9460405163c45a015560e01b8152602081600481855afa908115610373575f9161037e575b506001600160a01b0316151590816102fe575b50156102b9575f9182916080526040518260208201916312a9293f60e21b8352600481526100d66024826103b8565b51925af13d156102b1573d906001600160401b03821161029d5760405191610108601f8201601f1916602001846103b8565b82523d5f602084013e5b156102585760208180518101031261025457602001516001600160a01b0381169081900361025457156102035760a0526001600160a01b038116156101f4576001600160a01b038216156101f45760e05260c0526040516136f390816103f082396080518181816101df015281816103280152818161040401526116a8015260a05181818161022301528181610ed801528181610f7a01528181611b1b0152611df6015260c0518181816104db015281816109bd015281816124830152612693015260e0518181816102670152818161060801528181612162015261289d0152f35b63d92e233d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152602360248201527f556e69563351756f74657256323a204d6973636f6e666967757265642051756f6044820152623a32b960e91b6064820152608490fd5b5f80fd5b60405162461bcd60e51b815260206004820152601f60248201527f556e69563351756f74657256323a20496e636f72726563742051756f746572006044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b606090610112565b60405162461bcd60e51b815260206004820152601b60248201527f556e6956324c65676163793a20496e76616c696420726f7574657200000000006044820152606490fd5b6040516315ab88c960e31b81529150602090829060049082905afa908115610373575f91610339575b506001600160a01b031615155f6100a7565b90506020813d60201161036b575b81610354602093836103b8565b8101031261025457610365906103db565b5f610327565b3d9150610347565b6040513d5f823e3d90fd5b90506020813d6020116103b0575b81610399602093836103b8565b81010312610254576103aa906103db565b5f610094565b3d915061038c565b601f909101601f19168101906001600160401b0382119082101761029d57604052565b51906001600160a01b03821682036102545756fe610160806040526004361015610013575f80fd5b5f3560e01c908163472b5297146111495750806354fd4d50146111165780637364caaf14610bef5780637f6a8c951461050a5780639b6d6bbb146104c6578063afb66d3f14610296578063bc16384614610252578063c6bbd5a71461020e578063f887ea40146101ca5763fa57bb0b1461008b575f80fd5b346101c6573660031901608081126101c6576040136101c6576040516100b081612dfc565b60043581526020810190602435825260406043193601126101c657604051906100d882612dfc565b60443582526020820192606435845281511580156101bd575b15610107575050505060205f195b604051908152f35b51670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561019b57610134915190613161565b9151670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561019b57610162915190613161565b81818111156101af5790610175916132c8565b612710810290808204612710149015171561019b5760209161019691613161565b6100ff565b634e487b7160e01b5f52601160045260245ffd5b6101b8916132c8565b610175565b508251156100f1565b5f80fd5b346101c6575f3660031901126101c6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101c6575f3660031901126101c6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101c6575f3660031901126101c6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101c65760a03660031901126101c65760043560028110156101c6576102bb612cea565b906102c4612d00565b91606435916084356001600160401b0381116101c6576102e890369060040161306f565b906102f28161317f565b806103c15750610324935f9392610308926135cc565b60405163d06ca61f60e01b815293849283929060048401613357565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156103b6575f91610394575b5061036a816130bd565b5181515f1981019290831161019b57604092610385916130ca565b51905b82519182526020820152f35b6103b091503d805f833e6103a88183612e32565b810190613332565b81610360565b6040513d5f823e3d90fd5b9192916001906103d08161317f565b0361048157610400935f936103e49261352c565b6040516307c0329d60e21b815293849283929060048401613357565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156103b6575f91610467575b50610446816130bd565b5181515f1981019290831161019b57604092610461916130ca565b51610388565b61047b91503d805f833e6103a88183612e32565b8161043c565b60405162461bcd60e51b815260206004820152601c60248201527f556e6956324c65676163793a2057524f4e475f444952454354494f4e000000006044820152606490fd5b346101c6575f3660031901126101c6576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101c65760a03660031901126101c65760043560028110156101c65761052f612cea565b90610538612d00565b906064356084356001600160401b0381116101c65761055b903690600401612fd9565b935f606060405161056b81612d97565b8281528260208201528260408201520152845115610be0578115610bd15784519061059582612e77565b916105a36040519384612e32565b8083526105b2601f1991612e77565b015f5b818110610b9b5750508551936001850180951161019b5790946105f06105da86612e77565b956105e86040519788612e32565b808752612e77565b602086019690601f19013688376106068361317f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316925f9260209282159290855b8c518110156108da579081868e61065d6004969560018060a01b03926130ca565b5151166040519586809263038fff2d60e41b82525afa9384156103b6575f946108ab575b50604051631f29a8cd60e31b8152600481018590525f816024818d5afa9283156103b6578d915f946107e4575b506001600160a01b0316906106c49083906130ca565b528d86156107dd5750600181019384821161019b578e945b87156107c85782935b6001600160a01b03906107099060ff8c6106ff888c6130ca565b51015116906130ca565b511695515f19810190811161019b578314806107b5575b6107a657600183019384841161019b57868f60019661073e916130ca565b528361079f578d905b604051926107558c85612e32565b5f84528c368d8601376040519461076b86612de1565b85528b85015260408401526060830152608082015261078a828c6130ca565b52610795818b6130ca565b500191909161063c565b5f90610747565b632757a36f60e21b5f5260045ffd5b506001600160a01b038716861415610720565b60018301955085831161019b578f95936106e5565b93816106dc565b915092503d805f833e6107f78183612e32565b81016060828203126101c65781516001600160401b0381116101c657820181601f820112156101c65780519061082c82612e77565b9161083a6040519384612e32565b8083528b8084019160051b830101918483116101c6578c01905b82821061088c5750505089830151906001600160401b0382116101c6578f936106c493869361088392016132d5565b509491506106ae565b81516001600160a01b03811681036101c6578152908c01908c01610854565b9093508681813d83116108d3575b6108c38183612e32565b810103126101c65751928e610681565b503d6108b9565b888387878f8f8215610b9357600190955b6040516108f781612d97565b3081528581015f8152604082019130835260608101935f8552886040519b8c97637c26833760e11b895260e489019061092f8161317f565b60048a015260e060248a01528351809152610104890190836101048260051b8c01019501915f905b828210610b2b575050505087830360031901604489015251808352910196905f5b8a828210610b0b57505091516001600160a01b03908116606488015292511515608487015250509051811660a48401529051151560c48301525f9282900390829084907f0000000000000000000000000000000000000000000000000000000000000000165af19384156103b6575f94610a79575b506109f78361317f565b8015610a6657610a18610a12610a0c866130bd565b516132b8565b9361317f565b15610a445782515f1981019390841161019b57604093610a37916130ca565b51905b8351928352820152f35b82515f19810190811161019b57610a0c610a60916040956130ca565b90610a3a565b610a18610a72856130bd565b519361317f565b9093503d805f833e610a8b8183612e32565b81019082818303126101c6578051906001600160401b0382116101c657019080601f830112156101c6578151610ac081612e77565b92610ace6040519485612e32565b818452848085019260051b8201019283116101c65784809101915b838310610afb575050505092846109ed565b8251815291810191859101610ae9565b83516001600160a01b03168a52988901988d985090920191600101610978565b92969798999a94610b7d81929597600194976101031990820301865260a060808b5180518452858101518685015260408101516040850152606081015160608501520151918160808201520190612d2a565b970192019201928c938f9a999897969593610957565b5f90956108eb565b602090604051610baa81612de1565b5f81525f838201525f60408201525f606082015260606080820152828287010152016105b5565b63a0be088b60e01b5f5260045ffd5b630b5b36c560e41b5f5260045ffd5b346101c65760a03660031901126101c65760043560028110156101c657610c14612cea565b610c1c612d00565b916064356084356001600160401b0381116101c657610c3f903690600401612ef3565b5191610c4961345e565b50602083019384515180151590816110ff575b50156110c4578351516002810180911161019b57610c7990613477565b95610c8261345e565b50845151958051516001880180891161019b57810361108557610ca6889798613477565b97610cb082612e77565b97610cbe604051998a612e32565b828952601f19610ccd84612e77565b013660208b01375f198101818111925f5b8381106110525750505050505f5f19820192828411915b83811061101d57505050505060405195610d0e87612dfc565b865260208601948552610d20876130bd565b6001600160a01b03909116905285515f19810190811161019b57610d4490876130ca565b6001600160a01b0390911690525f5b84518051821015610d94576001600160a01b0390610d729083906130ca565b511690600181019182821161019b57610d8d600193896130ca565b5201610d53565b505091516040519285610da685612dfc565b845260208401918252610dc0610dbb85613695565b6134a9565b610dcc610dbb85613695565b602093604051610ddc8682612e32565b5f8152601f1986013687830137915f925b845151841015610e5b57610e53600191610e088686516130ca565b5190610e158789516130ca565b5160405160609390931b6001600160601b0319168b84015260e81b6001600160e81b031916603483015260178252610e4e603783612e32565b6134ec565b930192610ded565b82518051889288925f19830192831161019b57610ea292610e7b916130ca565b5190604051916001600160601b03199060601b168583015260148252610e4e603483612e32565b92610eac8161317f565b80610f4357505f81610ed394604051958692839263cdca175360e01b84526004840161329c565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156103b6576040935f91610f1e575b50918351928352820152f35b610f3a91503d805f833e610f328183612e32565b810190613189565b50505084610f12565b600190610f4f8161317f565b03610fd8575f81610f75946040519586928392632f80bb1d60e01b84526004840161329c565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156103b6576040935f91610fbb575b5091610a3a565b610fcf91503d805f833e610f328183612e32565b50505084610fb4565b60405162461bcd60e51b815260048101839052601e60248201527f556e69563351756f74657256323a2057524f4e475f444952454354494f4e00006044820152606490fd5b8151908361019b5762ffffff61103f600193611039848a6132c8565b906130ca565b511661104b828d6130ca565b5201610cf5565b8151908561019b578d61107e82600194611076868060a01b0391611039848b6132c8565b5116926130ca565b5201610cde565b60405162461bcd60e51b8152602060048201526017602482015276556e6956333a204241445f504154485f4c454e4754485360481b6044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272556e695633506174683a204241445f5056494160681b6044820152606490fd5b8551515f198201925090821161019b571487610c5c565b346101c6575f3660031901126101c657611145611131612e53565b604051918291602083526020830190612d2a565b0390f35b346101c6576101003660031901126101c6576001600160401b03600435116101c6573660236004350112156101c6576001600160401b0360043560040135116101c657602460043501903660246004356004013560051b6004350101116101c6576111b2612cea565b906111bb612d00565b916003606435101593846101c6576001600160401b03608435116101c6573660236084350112156101c65760843560040135926001600160401b0384116101c657366024856084350101116101c65760603660a31901126101c65761121f81612d97565b6060815260405161122f81612dc6565b60608152606060208201525f6040820152602082015260405161125181612dc6565b60405161125d81612dfc565b5f81525f60208201528152606060208201525f6040820152604082015260606040519161128983612de1565b5f83525f60208401525f60408401525f828401525f608084015201526004356004013515612cd6576112ba816130a9565b6040516370a0823160e01b81526001600160a01b03918216600482015291906020908390602490829087165afa9182156103b6575f92612ca0575b506112ff906130a9565b6040516370a0823160e01b81526001600160a01b03918216600482015291906020908390602490829089165afa9182156103b6575f92612c6c575b5060405160c05261134c60c051612dfc565b60c05152602060c051015261136660043560040135612e77565b936113746040519586612e32565b60048035013580865261138690612e77565b601f19013660208701375f5b600435600401358110156113c8576001906113b660248260051b60043501016130a9565b316113c182896130ca565b5201611392565b5084936113d660a4356130de565b9260c435610100526113e960a4356130de565b945f5b60a4358110611643578787611409611403896133ae565b916133ae565b90611412612e53565b91604051602081019060408252611453816114456114336060830188612d4e565b828103601f1901604084015286612d4e565b03601f198101835282612e32565b519020906040519261146484612dc6565b83526020830152604082015260405160208101906080810160c051518352602060c0510151604083015260608083015285518091528160a0810160208801925f5b81811061162a5750506114c1925003601f198101835282612e32565b519020604051936114d185612dc6565b60c051855260208501526040840152604051926114ed84612de1565b4284524360208501524660408501524860608501524560808501526040519261151584612d97565b835260208301918252604083019081526060830193845261154b6040519360208552516101006020860152610120850190612d2a565b915191601f198482030160408501526040806115856115738651606086526060860190612d4e565b60208701518582036020870152612d4e565b9401519101525190601f198382030160608401526080810191602081518051845201516020830152602081015192608060408401528351809152602060a084019401905f5b8181106116145750505093608091606060408697015191015251805182850152602081015160a0850152604081015160c0850152606081015160e085015201516101008301520390f35b82518652602095860195909201916001016115ca565b84518352602094850194869450909201916001016114a5565b846118155760643561184357602060843583810103126101c657602460843501356001600160401b0381116101c65761168a9060248085608435010191608435010161306f565b61169585858361352c565b6040516307c0329d60e21b8152610100517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693925f91839182916116e6919060048401613357565b0381865afa9081156103b6575f91611829575b50611703816130bd565b51815190915f19820191821161019b578b9161171e916130ca565b5160206117368761172f81866130ca565b51946130ca565b5101525261176a9161174a87875f946135cc565b90604051808095819463d06ca61f60e01b83526101005160048401613357565b03915afa9081156103b6575f916117fb575b50611786816130bd565b519080515f19810190811161019b5761179e916130ca565b51906117aa83896130ca565b519060206117b8858b6130ca565b510152525b60e435612710016127101161019b576101005161271060e4350181810292918015908404909114171561019b576127106001920461010052016113ec565b61180f91503d805f833e6103a88183612e32565b8961177c565b634e487b7160e01b5f52602160045260245ffd5b61183d91503d805f833e6103a88183612e32565b8b6116f9565b949195935095915f946001606435145f1461201b57602060843589810103126101c657602460843501356001600160401b0381116101c657611893906024808b6084350101916084350101612ef3565b9384519661189f61345e565b506020880151518015159081612004575b50156110c4578751516002810180911161019b576118cd90613477565b996118d661345e565b50885151986020810151519060018b01808c1161019b578203611085576118fc8b613477565b6101405261190982612e77565b9a6119176040519c8d612e32565b828c52601f1961192684612e77565b013660208e01375f5b818110611fc45750505f5b828110611f9157505050604051986119518a612dfc565b610140518a5260208a01526001600160a01b03851661196f8c6130bd565b528a515f19810190811161019b576001600160a01b038b1690611992908d6130ca565b525f5b895180518210156119d6576001600160a01b03906119b49083906130ca565b511690600181019182821161019b576119cf6001938f6130ca565b5201611995565b5050976020909a99949692979a9593950151604051996119f58b612dfc565b8a5260208a0152611a08610dbb8a613695565b611a14610dbb8a613695565b602096604051611a248982612e32565b5f8152601f198901368a830137915f925b60208c015151841015611aa457611a9c8c600192611a63876020611a5a8286516130ca565b519401516130ca565b5160405160609390931b6001600160601b031916838f015260e81b6001600160e81b031916603483015260178252610e4e603783612e32565b930192611a35565b9199949795939250959951908151915f19830192831161019b57611af292611acb916130ca565b5190604051916001600160601b03199060601b168a83015260148252610e4e603483612e32565b5f611b169160405180938192632f80bb1d60e01b835261010051906004840161329c565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156103b6575f91611f74575b50611b5e8a8c6130ca565b516101005189611b6e8d8f6130ca565b510152525196611b7c61345e565b5086880151518015159081611f5d575b5015611f22578751516002810180911161019b57611ba990613477565b99611bb261345e565b508851519888810151519060018b01808c1161019b578203611ee357611bd78b613477565b608052611be382612e77565b9a611bf16040519c8d612e32565b828c52601f19611c0084612e77565b01368c8e01375f5b818110611ea45750505f5b828110611e725750505060405198611c2a8a612dfc565b6080518a52888a01526001600160a01b038516611c468c6130bd565b528a51805f1981011161019b576001600160a01b03841690611c6b905f19018d6130ca565b525f5b89518051821015611caf576001600160a01b0390611c8d9083906130ca565b511690600181019182821161019b57611ca86001938f6130ca565b5201611c6e565b50509296809a98999699959295949194015160405198611cce8a612dfc565b89528a890152611ce0610dbb89613695565b611cec610dbb89613695565b604051611cf98b82612e32565b5f8152601f198b01368c830137945f955b8b8a015151871015611d7b57611d738a6001928e611d378b82611d2e8287516130ca565b519501516130ca565b5160405160609490941b6001600160601b0319169184019190915260e81b6001600160e81b031916603483015260178252610e4e603783612e32565b960195611d0a565b9196939998909550999196939951908151915f19830192831161019b57611dcc92611da5916130ca565b5190604051916001600160601b03199060601b168483015260148252610e4e603483612e32565b905f611df1926040518094819263cdca175360e01b835261010051906004840161329c565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19182156103b6575f92611e53575b50611e3983896130ca565b51906101005190611e4a858b6130ca565b510152526117bd565b611e689192503d805f833e610f328183612e32565b505050908a611e2e565b8a82015190835f1981011161019b578c611e9d8262ffffff611076600196611039845f198c016132c8565b5201611c13565b825190825f1981011161019b576001916001600160a01b0390611ece90611039845f1988016132c8565b5116611edc826080516130ca565b5201611c08565b60405162461bcd60e51b8152600481018b90526017602482015276556e6956333a204241445f504154485f4c454e4754485360481b6044820152606490fd5b60405162461bcd60e51b8152600481018890526013602482015272556e695633506174683a204241445f5056494160681b6044820152606490fd5b8951515f198201925090821161019b57148b611b8c565b611f8891503d805f833e610f328183612e32565b5050508b611b53565b602082015190835f1981011161019b578c611fbd8262ffffff611076600196611039845f198c016132c8565b520161193a565b825190825f1981011161019b576001916001600160a01b0390611fee90611039845f1988016132c8565b5116611ffd82610140516130ca565b520161192f565b8951515f198201925090821161019b57148b6118b0565b939591945091955f936002606435036117bd5796906120496024826084989798350101602460843501613139565b945f606060405161205981612d97565b8281528260208201528260408201520152855115610be0576101005115610bd15785519461208686612e77565b956120946040519788612e32565b8087526120a3601f1991612e77565b015f5b818110612c36575050865160018101811161019b576001816120df6120cf836120ed9501612e77565b6040516101205261012051612e32565b818101610120515201612e77565b601f1901366020610120510137602097935f90825b8951831015612393576004908b6001600160a01b03612121868e6130ca565b5151166040519384809263038fff2d60e41b82525afa9182156103b6575f92612364575b50604051631f29a8cd60e31b815260048101839052905f826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156103b6575f92612291575b5060018060a01b03166121b085610120516130ca565b5260018401841161019b576121d48b9160ff8e6106ff8860018060a01b03966130ca565b5116928a515f19810190811161019b5781148061227e575b6107a65760018101811161019b576001918461220d848401610120516130ca565b5281612277578c610100515b604051916122278184612e32565b5f8352601f19810136828501376040519361224185612de1565b84528585019084015283604084015260608301526080820152612264828c6130ca565b5261226f818b6130ca565b500191612102565b8c5f612219565b506001600160a01b0389168414156121ec565b9091503d805f833e6122a38183612e32565b60608282810103126101c6578151916001600160401b0383116101c657818101601f8483010112156101c6578e838201516122dd81612e77565b946122eb6040519687612e32565b81865282860190858501848460051b8388010101116101c6578381860101915b848460051b8388010101831061234557505050508101516001600160401b0381116101c65761233d92820191016132d5565b50908f61219a565b82516001600160a01b03811681036101c657815291840191840161230b565b9091508b81813d831161238c575b61237c8183612e32565b810103126101c65751908e612145565b503d612372565b509a9394975050949096600191604051906123ad82612d97565b3082525f838301523060408301525f606083015260405191637c26833760e11b835260e483016123dc8661317f565b85600485015260e0602485015282518091526101048401856101048360051b8701019401915f5b818110612bd75750505050829060031982840301604483015284610120515193848152019260206101205101905f905b8888828410612bb557505083516001600160a01b03908116606487015288850151151560848701526040850151811660a4870152606090940151151560c4860152505f94849003928492508591507f0000000000000000000000000000000000000000000000000000000000000000165af19081156103b6575f91612b01575b506124c0610a0c826130bd565b9080515f19810190811161019b576124d7916130ca565b51826124e3868d6130ca565b5101906124f0868d6130ca565b5152526125096024856084350101602460843501613139565b5f606060405161251881612d97565b82815282858201528260408201520152805115610be05780519061253b82612e77565b916125496040519384612e32565b808352612558601f1991612e77565b01835f5b828110612acc5750505080519084820180921161019b5761259561257f83612e77565b9261258d6040519485612e32565b808452612e77565b601f190136838601376002851015611815575f9089865b61283d575b505050604051916125c183612d97565b3083525f848401523060408401525f6060840152604051928391637c26833760e11b835260e483016125f25f61317f565b5f600485015260e0602485015281518091526101048401876101048360051b8701019301915f5b8a8a8383106127de575050505050838203600319016044850152508351808252908601938601905f905b88888284106127bc57505083516001600160a01b03908116606487015288850151151560848701526040850151811660a4870152606090940151151560c4860152505f94849003928492508591507f0000000000000000000000000000000000000000000000000000000000000000165af19081156103b6575f9161271b575b5060028310156118155760026126d8826130bd565b519310156118155780515f1981019190821161019b576126fb91610a0c916130ca565b90612706848a6130ca565b510190612713848a6130ca565b5152526117bd565b90503d805f833e61272c8183612e32565b81019082818303126101c6578051916001600160401b0383116101c65780601f8484010112156101c657828201519161276483612e77565b936127726040519586612e32565b83855285850192868560051b8385010101116101c657858082840101935b818660051b848601010185106127ac575050505050508b6126c3565b8451815293810193879101612790565b84516001600160a01b0316885296870196889650909301929190910190612643565b9193958291939597985061282c90610103198c820301885260a060808a5180518452858101518685015260408101516040850152606081015160608501520151918160808201520190612d2a565b960194019101918795949392612619565b8151831015612ac757600490866001600160a01b0361285c86866130ca565b5151166040519384809263038fff2d60e41b82525afa9182156103b6575f92612a98575b50604051631f29a8cd60e31b815260048101839052905f826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156103b6575f926129c5575b506001600160a01b03166128e985876130ca565b52878401841161019b576001600160a01b039061290d9060ff896106ff88886130ca565b51169082515f19810190811161019b578414806129b2575b6107a657878401841161019b578793849183612943848401896130ca565b52816129ac57610100515b6040519061295c8b83612e32565b5f8252601f198b01368c8401376040519261297684612de1565b8352838b84015284840160408401526060830152608082015261299982896130ca565b526129a481886130ca565b5001926125ac565b5f61294e565b506001600160a01b038b16821415612925565b9091503d805f833e6129d78183612e32565b60608282810103126101c6578151916001600160401b0383116101c657818101601f8483010112156101c65782810151612a1081612e77565b93612a1e6040519586612e32565b8185528b8501908484018d8460051b8387010101116101c6578c81850101915b8d8460051b83870101018310612a795750505050898101516001600160401b0381116101c657612a7192820191016132d5565b50905f6128d5565b82516001600160a01b03811681036101c6578152918d01918d01612a3e565b9091508681813d8311612ac0575b612ab08183612e32565b810103126101c65751905f612880565b503d612aa6565b6125b1565b604051612ad881612de1565b5f81525f838201525f60408201525f60608201526060608082015282828701015201849061255c565b90503d805f833e612b128183612e32565b81019082818303126101c6578051906001600160401b0382116101c65782601f8383010112156101c6578181015160a052612b4e60a051612e77565b92612b5c6040519485612e32565b8360e05260a051845284840160e0528460a05160051b8484010101116101c6578380838301015b8160a05160051b85850101018110612b9f57505050508b6124b3565b805160e051528160e0510160e052018490612b83565b84516001600160a01b0316885296870196889650909301929190910190612433565b909192949e9f9e8780612c258b93610103198b820301885260a060808b5180518452858101518685015260408101516040850152606081015160608501520151918160808201520190612d2a565b9701940191019f9e9f919091612403565b602090604051612c4581612de1565b5f81525f838201525f60408201525f60608201526060608082015282828b010152016120a6565b9091506020813d602011612c98575b81612c8860209383612e32565b810103126101c65751908661133a565b3d9150612c7b565b9091506020813d602011612cce575b81612cbc60209383612e32565b810103126101c65751906112ff6112f5565b3d9150612caf565b634e487b7160e01b5f52603260045260245ffd5b602435906001600160a01b03821682036101c657565b604435906001600160a01b03821682036101c657565b35906001600160a01b03821682036101c657565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080835192838152019201905f5b818110612d6b5750505090565b9091926020612d8d600192865190602060409280518352015160208201520190565b9401929101612d5e565b608081019081106001600160401b03821117612db257604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117612db257604052565b60a081019081106001600160401b03821117612db257604052565b604081019081106001600160401b03821117612db257604052565b602081019081106001600160401b03821117612db257604052565b90601f801991011681019081106001600160401b03821117612db257604052565b60405190612e62604083612e32565b60068252653b181718971b60d11b6020830152565b6001600160401b038111612db25760051b60200190565b9080601f830112156101c6578135612ea581612e77565b92612eb36040519485612e32565b81845260208085019260051b8201019283116101c657602001905b828210612edb5750505090565b60208091612ee884612d16565b815201910190612ece565b91906020838203126101c657604051612f0b81612e17565b80938035906001600160401b0382116101c65701916040838203126101c65760405192612f3784612dfc565b80356001600160401b0381116101c65782612f53918301612e8e565b84526020810135906001600160401b0382116101c657019080601f830112156101c657813590612f8282612e77565b92612f906040519485612e32565b82845260208085019360051b8201019182116101c657602001915b818310612fbd57505050602083015252565b823562ffffff811681036101c657815260209283019201612fab565b81601f820112156101c657803590612ff082612e77565b92612ffe6040519485612e32565b82845260208085019360061b830101918183116101c657602001925b828410613028575050505090565b6040848303126101c6576040519061303f82612dfc565b61304885612d16565b825260208501359060ff821682036101c6578260209283604095015281520193019261301a565b9190916020818403126101c6576040519061308982612e17565b819381356001600160401b0381116101c6576130a59201612e8e565b9052565b356001600160a01b03811681036101c65790565b805115612cd65760200190565b8051821015612cd65760209160051b010190565b906130e882612e77565b6130f56040519182612e32565b8281528092613106601f1991612e77565b01905f5b82811061311657505050565b60209060405161312581612dfc565b5f81525f838201528282850101520161310a565b906020828203126101c65781356001600160401b0381116101c65761315e9201612fd9565b90565b811561316b570490565b634e487b7160e01b5f52601260045260245ffd5b6002111561181557565b6080818303126101c65780519260208201516001600160401b0381116101c657820183601f820112156101c65780516131c181612e77565b916131cf6040519384612e32565b81835260208084019260051b820101908682116101c657602001915b81831061327c575050509260408301516001600160401b0381116101c65783019080601f830112156101c65781519061322382612e77565b926132316040519485612e32565b82845260208085019360051b8201019182116101c657602001915b81831061325f5750505060609092015190565b825163ffffffff811681036101c65781526020928301920161324c565b82516001600160a01b03811681036101c6578152602092830192016131eb565b9291906132b3602091604086526040860190612d2a565b930152565b600160ff1b811461019b575f0390565b9190820391821161019b57565b9080601f830112156101c65781516132ec81612e77565b926132fa6040519485612e32565b81845260208085019260051b8201019283116101c657602001905b8282106133225750505090565b8151815260209182019101613315565b906020828203126101c65781516001600160401b0381116101c65761315e92016132d5565b6060602091604081019381526040838201528451809452019201905f5b8181106133815750505090565b82516001600160a01b0316845260209384019390920191600101613374565b5f19811461019b5760010190565b905f5f5b83518110156133ef576133ce6133c882866130ca565b5161366e565b6133db575b6001016133b2565b906133e76001916133a0565b9190506133d3565b506133fc909291926130de565b5f5f5b8351811015613457576134156133c882866130ca565b613422575b6001016133ff565b9061344f60019161343384876130ca565b5161343e82876130ca565b5261344981866130ca565b506133a0565b91905061341a565b5050905090565b6040519061346b82612dfc565b60606020838281520152565b9061348182612e77565b61348e6040519182612e32565b828152809261349f601f1991612e77565b0190602036910137565b156134b057565b60405162461bcd60e51b8152602060048201526014602482015273155b9a558cd4185d1a0e8810905117d41195531360621b6044820152606490fd5b61352a906020808095946040519684889551918291018487015e8401908282015f8152815193849201905e01015f815203601f198101845283612e32565b565b9190928251516002810180911161019b5761354690613477565b93613550856130bd565b6001600160a01b0390911690525f5b835180518210156135a0576001600160a01b039061357e9083906130ca565b511690600181019182821161019b57613599600193886130ca565b520161355f565b505092915081515f19810190811161019b576135bc90836130ca565b6001600160a01b03909116905290565b91928251516002810180911161019b576135e590613477565b936135ef856130bd565b6001600160a01b0390911690525f5b835180519081831015613651575f19820191821161019b576001600160a01b039161362f91906110399085906132c8565b511690600181019182821161019b5761364a600193886130ca565b52016135fe565b50505092915081515f19810190811161019b576135bc90836130ca565b805115159081613687575b50613682575f90565b600190565b60209150015115155f613679565b60208101515180151591826136a957505090565b90915051516001820180921161019b57149056fea2646970667358221220b021a0effc6dd62749f9b665b84f727496d9f22a16a5879cddcef61fb46cc0ee64736f6c634300081d00330000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad240000000000000000000000003d4e44eb1374240ce5f1b871ab261cd16335b76a000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8000000000000000000000000300ab2038eac391f26d9f895dc61f8f66a548833