4 txs
343 calls
constructor
constructor(address initialAdmin_, address admin_, address pauser_, address feeManager_, address oracleManager_, string nativeName_, string nativeSymbol_)
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
FEE_MANAGER_ROLE
viewfunction FEE_MANAGER_ROLE() view returns (bytes32)
getAcceptedTokens
viewfunction getAcceptedTokens() view returns (address[])
getCollateralTokens
viewfunction getCollateralTokens() view returns (address[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getTokenInfo
viewfunction getTokenInfo(address token) view returns (bool isAccepted, uint256 fixedDepositFee, uint256 percentageDepositFee, address priceOracle, bool paused, string name, string symbol, uint256 slippage, uint256 minDeposit, uint256 decimals, bool nativeToken)
getTokenPriceInfo
viewfunction getTokenPriceInfo(address token) view returns (bool isAccepted, bool paused, address priceOracle, uint8 decimals)
getWrappedNative
viewfunction getWrappedNative() view returns (address)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isDepositEnabled
viewfunction isDepositEnabled(address token) view returns (bool)
isEligibleAsCollateral
viewfunction isEligibleAsCollateral(address token) view returns (bool)
MAX_PERCENTAGE_FEE
viewfunction MAX_PERCENTAGE_FEE() view returns (uint256)
MAX_SLIPPAGE_TOLERANCE
viewfunction MAX_SLIPPAGE_TOLERANCE() view returns (uint256)
NATIVE_TOKEN_DECIMALS
viewfunction NATIVE_TOKEN_DECIMALS() view returns (uint8)
NATIVE_TOKEN
viewfunction NATIVE_TOKEN() view returns (address)
ORACLE_MANAGER_ROLE
viewfunction ORACLE_MANAGER_ROLE() view returns (bytes32)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
previewDepositFees
viewfunction previewDepositFees(address token, uint256 amount) view returns (uint256)
previewMintFees
viewfunction previewMintFees(address token, uint256 amount) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
wrappedNativeToken
viewfunction wrappedNativeToken() view returns (address)
addNativeToken
nonpayablefunction addNativeToken(uint256 fixedDepositFee_, uint256 percentageDepositFee_, address priceOracle_, bool eligibleAsCollateral_, address wrappedNativeToken_, uint256 slippage_, uint256 minDeposit_)
addToken
nonpayablefunction addToken(address token, uint256 fixedDepositFee_, uint256 percentageDepositFee_, address priceOracle_, bool eligibleAsCollateral_, uint256 defaultSlippageTolerance_, uint256 minDeposit_)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pauseToken
nonpayablefunction pauseToken(address token)
removeToken
nonpayablefunction removeToken(address token)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
unpauseToken
nonpayablefunction unpauseToken(address token)
updateCollateralEligibility
nonpayablefunction updateCollateralEligibility(address token, bool newEligibility)
updateMinDeposit
nonpayablefunction updateMinDeposit(address token, uint256 newMinDeposit)
updateSlippage
nonpayablefunction updateSlippage(address token, uint256 newSlippage)
updateTokenFees
nonpayablefunction updateTokenFees(address token, uint256 fixedDepositFee_, uint256 percentageDepositFee_)
updateTokenOracle
nonpayablefunction updateTokenOracle(address token, address priceOracle_)
events
CollateralEligibilityUpdated
event CollateralEligibilityUpdated(address indexed token, bool oldEligibility, bool newEligibility)
DefaultSlippageToleranceUpdated
event DefaultSlippageToleranceUpdated(address indexed token, uint256 defaultSlippageTolerance)
MinDepositUpdated
event MinDepositUpdated(address indexed token, uint256 oldMinDeposit, uint256 newMinDeposit)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
TokenAdded
event TokenAdded(address indexed token, uint256 fixedDepositFee, uint256 percentageDepositFee, address priceOracle)
TokenFeeUpdated
event TokenFeeUpdated(address indexed token, uint256 fixedDepositFee, uint256 percentageDepositFee)
TokenOracleUpdated
event TokenOracleUpdated(address indexed token, address priceOracle)
TokenPaused
event TokenPaused(address indexed token)
TokenRemoved
event TokenRemoved(address indexed token)
TokenUnpaused
event TokenUnpaused(address indexed token)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
EligibilityUnchangedError
error EligibilityUnchangedError()
MathOverflowedMulDiv
error MathOverflowedMulDiv()
MinDepositZeroError
error MinDepositZeroError()
PercentageFeeTooHighError
error PercentageFeeTooHighError()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SlippageTooHighError
error SlippageTooHighError()
TokenAlreadyAcceptedError
error TokenAlreadyAcceptedError()
TokenAlreadyPausedError
error TokenAlreadyPausedError()
TokenNotAcceptedError
error TokenNotAcceptedError()
TokenNotPausedError
error TokenNotPausedError()
WrappedNativeZeroError
error WrappedNativeZeroError()
ZeroAddressError
error ZeroAddressError()
ZeroAmountError
error ZeroAmountError()
creation bytecode
0x61010060405234620004b05762002ec6803803806200001e81620004b5565b92833981019060e081830312620004b0576200003a81620004db565b906020926200004b848301620004db565b906200005a60408401620004db565b6200006860608501620004db565b936200007760808201620004db565b60a08201516001600160401b039691929190878111620004b057856200009f918401620004f0565b9460c083015194888611620004b05762000177620000cc620001819362000195986200018b9701620004f0565b986200016d60019c8d80557fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756080527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60a0527f6c0757dc3e6b28b2580c03fd9e96c274acf4f99d91fbec9b418fa1d70604ff1c60c0527fced6982f480260bdd8ad5cb18ff2854f0306d78d904ad6cc107e8f3a0f526c1860e05262000562565b50608051620005e2565b5060a051620005e2565b5060c051620005e2565b5060e051620005e2565b50805191838311620003b0576003928354928684811c94168015620004a5575b888510146200048f578190601f9485811162000439575b508890858311600114620003d257600092620003c6575b505060001982861b1c191690861b1783555b8051938411620003b05760049586548681811c91168015620003a5575b82821014620003905783811162000345575b5080928511600114620002d75750938394918492600095620002cb575b50501b92600019911b1c19161790555b6040516128559081620006518239608051818181610431015281816109f301528181610c2b01528181610c700152818161100d015281816113fe0152611655015260a05181818161085f01528181610dbd0152611908015260c0518181816102b50152611950015260e0518181816114aa01526114f30152f35b01519350388062000241565b92919084601f1981168860005285600020956000905b898383106200032a57505050106200030f575b50505050811b01905562000251565b01519060f884600019921b161c191690553880808062000300565b858701518955909701969485019488935090810190620002ed565b87600052816000208480880160051c82019284891062000386575b0160051c019087905b8281106200037957505062000224565b6000815501879062000369565b9250819262000360565b602288634e487b7160e01b6000525260246000fd5b90607f169062000212565b634e487b7160e01b600052604160045260246000fd5b015190503880620001e3565b90889350601f19831691876000528a6000209260005b8c82821062000422575050841162000409575b505050811b018355620001f5565b015160001983881b60f8161c19169055388080620003fb565b8385015186558c97909501949384019301620003e8565b90915085600052886000208580850160051c8201928b861062000485575b918a91869594930160051c01915b82811062000475575050620001cc565b600081558594508a910162000465565b9250819262000457565b634e487b7160e01b600052602260045260246000fd5b93607f1693620001b5565b600080fd5b6040519190601f01601f191682016001600160401b03811183821017620003b057604052565b51906001600160a01b0382168203620004b057565b919080601f84011215620004b05782516001600160401b038111620003b05760209062000526601f8201601f19168301620004b5565b92818452828287010111620004b05760005b8181106200054e57508260009394955001015290565b858101830151848201840152820162000538565b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff16620005de57818052816020526040822081835260205260408220600160ff19825416179055339160008051602062002ea68339815191528180a4600190565b5090565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416156000146200064b57808352826020526040832082845260205260408320600160ff1982541617905560008051602062002ea6833981519152339380a4600190565b50509056fe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461024257806305db2f411461023d578063109932f91461023857806317fcb39b146101a257806318a8eb6c146102335780631f69565f1461022e578063248a9ca3146102295780632e4f1aca146102245780632f2ff15d1461021f5780632f7570061461021a57806331f7d9641461021557806336568abe146102105780633b3bff0f1461020b57806351bd3a8c146102065780635fa7b584146102015780636aaf6436146101fc57806375b238fc146101f757806377d2dbc2146101f25780637b897f39146101ed5780637c41ad2c146101e857806391d14854146101e35780639d4c1128146101de578063a217fddf146101d9578063ac2386d1146101d4578063b2d9a842146101cf578063b58eb63f146101ca578063bce8a68d146101c5578063bfc69e1c146101c0578063c1934d9b146101bb578063c30e659b146101b6578063d547741f146101b1578063de08173e146101ac578063e63ab1e9146101a7578063e861e907146101a25763f505ce491461019d57600080fd5b61192b565b6103b4565b6118f0565b61160e565b6115cf565b6115b2565b6114cd565b611492565b6113dd565b611322565b611305565b610fc6565b610faa565b610ece565b610e7c565b610d9f565b610d13565b610c4e565b610c13565b610ab7565b6109d5565b61091e565b610841565b6107fa565b6107cb565b610762565b6106dd565b6106c1565b610692565b6105c5565b61040a565b610346565b61029d565b346102985760203660031901126102985760043563ffffffff60e01b811680910361029857602090637965db0b60e01b8114908115610287575b506040519015158152f35b6301ffc9a760e01b1490503861027c565b600080fd5b346102985760003660031901126102985760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b600435906001600160a01b038216820361029857565b602435906001600160a01b038216820361029857565b606435906001600160a01b038216820361029857565b604435906001600160a01b038216820361029857565b608435906001600160a01b038216820361029857565b34610298576020366003190112610298576001600160a01b036103676102d8565b1680600052600560205260ff60406000205416156103a2576000526005602052602060ff60036040600020015460a81c166040519015158152f35b6040516326065d5b60e01b8152600490fd5b34610298576000366003190112610298576002546040516001600160a01b039091168152602090f35b60243590811515820361029857565b60843590811515820361029857565b60643590811515820361029857565b34610298576040366003190112610298576104236102d8565b61042b6103dd565b906104557f00000000000000000000000000000000000000000000000000000000000000006119f2565b61046f61046b610464836119d8565b5460ff1690565b1590565b6103a25761048c6003610481836119d8565b015460a81c60ff1690565b91801515831515146104fb57816104d58260036104b7600080516020612800833981519152966119d8565b01805460ff60a81b191691151560a81b60ff60a81b16919091179055565b60408051941515855291151560208501526001600160a01b03169290819081015b0390a2005b604051630adf33cb60e01b8152600490fd5b60005b8381106105205750506000910152565b8181015183820152602001610510565b906020916105498151809281855285808601910161050d565b601f01601f1916010190565b99969361059e936101409a97936105ac97939e9d9a9e15158d5260208d015260408c015260018060a01b031660608b0152151560808a01526101608060a08b0152890190610530565b9087820360c0890152610530565b9660e08601526101008501526101208401521515910152565b34610298576020366003190112610298576001600160a01b036105e66102d8565b168060005260056020526105fd6040600020612561565b9073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6000911461068a575b6106866106298351151590565b602084015160408501516060860151919592949290916001600160a01b03166080820151151560e0830151610100840151916101208501519360ff61067860c061014089015198015160ff1690565b16966040519b8c9b8c610555565b0390f35b50600161061c565b346102985760203660031901126102985760043560005260006020526020600160406000200154604051908152f35b3461029857600036600319011261029857602060405160128152f35b346102985760403660031901126102985761071c6004356106fc6102ee565b908060005260006020526107176001604060002001546119f2565b611a33565b005b6020908160408183019282815285518094520193019160005b828110610745575050505090565b83516001600160a01b031685529381019392810192600101610737565b34610298576000806003193601126107c8576008908154906107838261262c565b92815b83811061079b5760405180610686878261071e565b818352602083208101546107c391906001600160a01b03166107bd828861266d565b5261265e565b610786565b80fd5b3461029857600036600319011261029857602060405173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8152f35b34610298576040366003190112610298576108136102ee565b336001600160a01b0382160361082f5761071c90600435611ac4565b60405163334bd91960e11b8152600490fd5b346102985760203660031901126102985761085a6102d8565b6108837f00000000000000000000000000000000000000000000000000000000000000006119f2565b61089261046b610464836119d8565b6103a2576108b261046b60036108a7846119d8565b015460a01c60ff1690565b61090c576108d260036108c4836119d8565b01805460ff60a01b19169055565b6001600160a01b03166108e481611f26565b507ff38578ed892ce2ce655ca8ae03c73464ad74915a1331a9b4085e637534daeedf600080a2005b604051636831f8d560e01b8152600490fd5b3461029857604080600319360112610298576109386102d8565b6001600160a01b031660009081526005602052819020602435919061095c90612561565b9161096a61046b8451151590565b6109c45780156109b35761099283602061098a85610686970151856126df565b910151612681565b818111156109ab5750905b519081529081906020820190565b90509061099d565b8151636e0ccc0760e01b8152600490fd5b81516326065d5b60e01b8152600490fd5b34610298576020366003190112610298576109ee6102d8565b610a177f00000000000000000000000000000000000000000000000000000000000000006119f2565b6001600160a01b03811660008181526005602052604081205490929060ff16156103a2576007610a4784926119d8565b828155826001820155826002820155826003820155610a686004820161215c565b610a746005820161215c565b8260068201550155610a8581612235565b50610a8f816122e7565b507f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd38280a280f35b34610298576020366003190112610298576001600160a01b0380610ad96102d8565b1660005260056020526040600020610686610af2611baf565b610b06610b00845460ff1690565b15158252565b6001830154602082015260028301546040820152610bdc610bd4610bc6610bbf600387015494610b44606082019987168a9060018060a01b03169052565b60076080820198610b5d60ff8960a01c168b9015159052565b60a888901c60ff16151560a0840152610b8360ff60c085019960b01c16899060ff169052565b610b8f600482016124bd565b60e0840152610ba0600582016124bd565b6101008401526006810154610120840152015461014082015251151590565b9551151590565b95516001600160a01b031690565b915160ff1690565b60408051941515855294151560208501526001600160a01b039091169383019390935260ff90921660608201529081906080820190565b346102985760003660031901126102985760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461029857604036600319011261029857610c676102d8565b60243590610c947f00000000000000000000000000000000000000000000000000000000000000006119f2565b6001600160a01b03811660008181526005602052604090205490929060ff16156103a2578015610d015781816007610ce681610cde6000805160206127e0833981519152976119d8565b0154936119d8565b015560408051918252602082019290925290819081016104f6565b60405163f4ec72e960e01b8152600490fd5b346102985760408060031936011261029857610d2d6102d8565b6001600160a01b0316600090815260056020528190206024359190610d5190612561565b91610d5f61046b8451151590565b6109c45780156109b35782602061098a610d9093610d8b610d85876106869901516121a5565b826126a4565b6121ba565b90519081529081906020820190565b3461029857602036600319011261029857610db86102d8565b610de17f00000000000000000000000000000000000000000000000000000000000000006119f2565b6001600160a01b03811660008181526005602052604081205490929060ff16156103a257610e1360036108a7836119d8565b610e6a576003610e25610e39926119d8565b01805460ff60a01b1916600160a01b179055565b610e42816122e7565b507ff017c0de579727a3cd3ee18077ee8b4c43bf21892985952d1d5a0d52f983502d8280a280f35b60405163d09bbe7d60e01b8152600490fd5b3461029857604036600319011261029857602060ff610ec2610e9c6102ee565b6004356000526000845260406000209060018060a01b0316600052602052604060002090565b54166040519015158152f35b34610298576020366003190112610298576106866001600160a01b0380610ef36102d8565b166000526005602052610f8660406000206007610f0e611baf565b91610f23610f1d825460ff1690565b15158452565b600181015460208401526002810154604084015260038101549485166001600160a01b03166060840152610b8360ff6080850196610f68828260a01c16899015159052565b60a881901c8216151560a087015260b01c1660c085019060ff169052565b9081610fa0575b5060405190151581529081906020820190565b5115905038610f8d565b3461029857600036600319011261029857602060405160008152f35b346102985760e036600319011261029857610fdf6102d8565b60243560443591610fee610304565b90610ff76103ec565b9060a4359360c43595611008611eb2565b6110317f00000000000000000000000000000000000000000000000000000000000000006119f2565b6001600160a01b03838116979088156112f3578616156112f357611057610464856119d8565b6112e1576109c482116112cf57610dac87116112bd578015610d015760409384519763313ce56760e01b89526020896004818d5afa98891561126457600099611284575b5085516306fdde0360e01b8152939291906000856004818e5afa93841561126457600495600095611269575b5087516395d89b4160e01b8152956000908790818f5afa968715611264576111f36112279b6111b88f9a6000805160206128008339815191529f8c988f988f9361120d9d6000805160206127e08339815191529f947f138f83be1d03c091372a553f39c6ca34fd119fc37ef7e0ef5f49aa977737a93f9c8c8c986111b398600096611233575b509161118c916111969493611160611baf565b600181529b60208d01528b01526001600160a01b038c1660608b0152600060808b0152151560a08a0152565b60ff1660c0880152565b60e08601526101008501526101208401528a6101408401526119d8565b611da3565b6111c186611f99565b506111cb86611f26565b508a5192835260208301939093526001600160a01b0390921660408201529081906060820190565b0390a2845191829182919060206040840193600081520152565b0390a2516000815290151560208201529081906040820190565b0390a261071c60018055565b9161125961118c93611196969593983d8091833e6112518183611b63565b810190611bd0565b96919394509161114d565b611ba3565b61127d91953d8091833e6112518183611b63565b93386110c7565b60049493929199506112ac9060203d81116112b6575b6112a48183611b63565b810190611b8a565b989091929361109b565b503d61129a565b604051635b01ffaf60e01b8152600490fd5b604051637b7a699b60e11b8152600490fd5b604051637d7d984b60e11b8152600490fd5b604051633efa09af60e01b8152600490fd5b346102985760003660031901126102985760206040516109c48152f35b34610298576000806003193601126107c857600654906113418261262c565b9080805b84811061135d5782845260405180610686868261071e565b61139861136982611eeb565b9054600391821b1c6001600160a01b031680855260056020526040852090910154909160a89190911c60ff1690565b6113ac575b506113a79061265e565b611345565b836113d16113d6926113c26113a795978961266d565b6001600160a01b039091169052565b61265e565b929061139d565b34610298576040366003190112610298576113f66102d8565b6024356114227f00000000000000000000000000000000000000000000000000000000000000006119f2565b6001600160a01b03821660008181526005602052604090205490929060ff16156103a257610dac82116112bd57817f21bfb656705d609dd8eed2baacb74bb5e41981fbcd144cd8796f7efa74b682289260066114806104f6946119d8565b01556040519081529081906020820190565b346102985760003660031901126102985760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610298576040366003190112610298576114e66102d8565b6114ee6102ee565b6115177f00000000000000000000000000000000000000000000000000000000000000006119f2565b6001600160a01b038281166000818152600560205260409020549093919060ff16156103a2578216156112f357816115987f38af5c16b8276594303df55e002ec2a4e461e676aa19663bcb1ff9e1823acdf79360036115786104f6956119d8565b0180546001600160a01b0319166001600160a01b03909216919091179055565b6040516001600160a01b0390911681529081906020820190565b34610298576000366003190112610298576020604051610dac8152f35b346102985760403660031901126102985761071c6004356115ee6102ee565b908060005260006020526116096001604060002001546119f2565b611ac4565b346102985760e0366003190112610298576004803560243561162e61031a565b926116376103fb565b92611640610330565b60a4359060c43593611650611eb2565b6116797f00000000000000000000000000000000000000000000000000000000000000006119f2565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60005260056020526116bf7fa1829a9003092132f585b6ccdd167c19fe9774dbdea4260287e8a8e8ca8185d7610464565b6118e1576001600160a01b03828116156118d1578816156118c2576109c486116118b357610dac83116118a45784156118955750600080516020612800833981519152959361122795936117e96000805160206127e08339815191529461173d6118799560018060a01b031660018060a01b03196002541617600255565b611745611baf565b600181529060208201849052604082018890526001600160a01b038c1660608301526000608083015288151560a0830152601260c0830152611785612369565b60e0830152611792612424565b610100830152610120820152610140810184905273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60005260056020527fa1829a9003092132f585b6ccdd167c19fe9774dbdea4260287e8a8e8ca8185d7611da3565b6117f1612007565b506117fa6120a7565b507f138f83be1d03c091372a553f39c6ca34fd119fc37ef7e0ef5f49aa977737a93f6040518061185e73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9c8d998a96849192604091949360608401958452602084015260018060a01b0316910152565b0390a260405191829182919060206040840193600081520152565b0390a26040805160008152911515602083015290918291820190565b60405163f4ec72e960e01b8152fd5b604051635b01ffaf60e01b8152fd5b604051637b7a699b60e11b8152fd5b604051633efa09af60e01b8152fd5b50604051636a28594560e01b8152fd5b604051637d7d984b60e11b8152fd5b346102985760003660031901126102985760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610298576060366003190112610298576119446102d8565b602435906044356119747f00000000000000000000000000000000000000000000000000000000000000006119f2565b6001600160a01b03821660008181526005602052604090205490939060ff16156103a2576109c482116112cf57816002610ce6858460016119d57f5fe83da06836532aa42f928fe690751e055c28dafb29fd9081edbb43c931e8cd996119d8565b01555b6001600160a01b0316600090815260056020526040902090565b60008181526020818152604080832033845290915290205460ff1615611a155750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b6000818152602081815260408083206001600160a01b038616845290915281205490919060ff16611abe57808252602082815260408084206001600160a01b038616600090815292529020805460ff1916600117905533926001600160a01b0316917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50905090565b6000818152602081815260408083206001600160a01b038616845290915281205490919060ff1615611abe57808252602082815260408084206001600160a01b038616600090815292529020805460ff1916905533926001600160a01b0316917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117611b8557604052565b611b4d565b90816020910312610298575160ff811681036102985790565b6040513d6000823e3d90fd5b60405190610160820182811067ffffffffffffffff821117611b8557604052565b60208183031261029857805167ffffffffffffffff9182821161029857019082601f83011215610298578151908111611b855760405192611c1b601f8301601f191660200185611b63565b8184526020828401011161029857611c39916020808501910161050d565b90565b90600182811c92168015611c6c575b6020831014611c5657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c4b565b818110611c81575050565b60008155600101611c76565b9190601f8111611c9c57505050565b611cc8926000526020600020906020601f840160051c83019310611cca575b601f0160051c0190611c76565b565b9091508190611cbb565b919091825167ffffffffffffffff8111611b8557611cfc81611cf68454611c3c565b84611c8d565b602080601f8311600114611d38575081929394600092611d2d575b50508160011b916000199060031b1c1916179055565b015190503880611d17565b90601f19831695611d4e85600052602060002090565b926000905b888210611d8b57505083600195969710611d72575b505050811b019055565b015160001960f88460031b161c19169055388080611d68565b80600185968294968601518155019501930190611d53565b90610140600791611dc9611db78251151590565b859060ff801983541691151516179055565b602081015160018501556040810151600285015560608101516003850180546001600160a01b0319166001600160a01b03909216919091178155611e7d90611e31611e176080850151151590565b825460ff60a01b191690151560a01b60ff60a01b16178255565b611e5b611e4160a0850151151590565b825460ff60a81b191690151560a81b60ff60a81b16178255565b60c083015160ff16815460ff60b01b191660b09190911b60ff60b01b16179055565b611e8e60e082015160048601611cd4565b611ea061010082015160058601611cd4565b61012081015160068501550151910155565b600260015414611ec3576002600155565b604051633ee5aeb560e01b8152600490fd5b634e487b7160e01b600052603260045260246000fd5b600654811015611f0657600660005260206000200190600090565b611ed5565b600854811015611f0657600860005260206000200190600090565b600081815260096020526040812054611f945760085490600160401b821015611b85576001820180600855821015611f06577ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910182905560085491815260096020526040902055600190565b905090565b600081815260076020526040812054611f945760065490600160401b821015611b85576001820180600655821015611f06577ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90910182905560065491815260076020526040902055600190565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600081815260076020527fb2084a3e4595ccf007fb44245853374aaf0de960074375e8e0fb334712e94d0e54611f945760065490600160401b821015611b85576001820180600655821015611f06577ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90910182905560065491815260076020526040902055600190565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600081815260096020527ea206b70d87cacff7a19f3d98e0957b781c25fb4ae954252c87bcf40626174254611f945760085490600160401b821015611b85576001820180600855821015611f06577ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910182905560085491815260096020526040902055600190565b634e487b7160e01b600052601160045260246000fd5b6121668154611c3c565b9081612170575050565b81601f60009311600114612182575055565b9080839182526121a1601f60208420940160051c840160018501611c76565b5555565b906127109182039182116121b557565b612146565b919082039182116121b557565b60065480156121f357600019818101919081831015611f06576000916006835260208320010155600655565b634e487b7160e01b600052603160045260246000fd5b60085480156121f357600019818101919081831015611f06576000916008835260208320010155600855565b60008181526007602052604090205480156122e05760001991818301918083116121b5576006549384019384116121b55783836000956122909503612296575b5050506122806121c7565b6000526007602052604060002090565b55600190565b6122806122be916122b66122ac6122d795611eeb565b90549060031b1c90565b928391611eeb565b90919082549060031b91821b91600019901b1916179055565b55388080612275565b5050600090565b60008181526009602052604090205480156122e05760001991818301918083116121b5576008549384019384116121b55783836000956122909503612342575b505050612332612209565b6000526009602052604060002090565b6123326122be916123586122ac61236095611f0b565b928391611f0b565b55388080612327565b604051906000826003549161237d83611c3c565b80835260019380851690811561240357506001146123a3575b50611cc892500383611b63565b600360009081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b94602093509091905b8183106123eb575050611cc8935082010138612396565b855488840185015294850194879450918301916123d4565b9050611cc894506020925060ff191682840152151560051b82010138612396565b604051906000826004549161243883611c3c565b808352600193808516908115612403575060011461245d5750611cc892500383611b63565b600460009081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b94602093509091905b8183106124a5575050611cc8935082010138612396565b8554888401850152948501948794509183019161248e565b90604051918260008254926124d184611c3c565b90818452600194858116908160001461253e57506001146124fb575b5050611cc892500383611b63565b9093915060005260209081600020936000915b818310612526575050611cc8935082010138806124ed565b8554888401850152948501948794509183019161250e565b915050611cc894506020925060ff191682840152151560051b82010138806124ed565b90600761256c611baf565b9261258161257b825460ff1690565b15158552565b600181015460208501526002810154604085015260038101546001600160a01b03811660608601526125dc9060ff9060a081901c82161515608088015260a881901c8216151560a088015260b01c1660c086019060ff169052565b6125e8600482016124bd565b60e08501526125f9600582016124bd565b61010085015260068101546101208501520154610140830152565b67ffffffffffffffff8111611b855760051b60200190565b9061263682612614565b6126436040519182611b63565b8281528092612654601f1991612614565b0190602036910137565b60001981146121b55760010190565b8051821015611f065760209160051b010190565b919082018092116121b557565b634e487b7160e01b600052601260045260246000fd5b906126af818361275a565b9181156126d05761271090096126c25790565b600181018091116121b55790565b61268e565b81156126d0570490565b90808202906000198184099082808310920391808303921461274f57612710908282111561273d577fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e91940990828211900360fc1b910360041c170290565b60405163227bc15360e01b8152600490fd5b505061271091500490565b6127109181830291600019848209938380861095039480860395146127d2578483111561273d5782910981600003821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505090611c3992506126d556fe2f94d5c80cff40da556f6a53fb284902e7f6de5158833121641846e99b5e5037a075954cc401d39428dbd7cc77117ae0532d16304afd17044b6a0d6d554ea364a264697066735822122072f84232fba02222f37023dd6b6f010d3d9c4e5012240e22b1a89a3ce21500b464736f6c634300081400332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d0000000000000000000000006c15b25e9750dccb698c1a4023f34015bfe576490000000000000000000000006c15b25e9750dccb698c1a4023f34015bfe576490000000000000000000000006c15b25e9750dccb698c1a4023f34015bfe576490000000000000000000000006c15b25e9750dccb698c1a4023f34015bfe576490000000000000000000000006c15b25e9750dccb698c1a4023f34015bfe5764900000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000005457468657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034554480000000000000000000000000000000000000000000000000000000000