4 txs
142 calls
constructor
constructor(address _initialOwner, address _cowSwapRelayer)
functions
cowSwapRelayer
viewfunction cowSwapRelayer() view returns (address)
explicitFunctionAccess
viewfunction explicitFunctionAccess(address, bytes4) view returns (bool)
getBuyAmount
viewfunction getBuyAmount(address sellToken) view returns (uint256 unroundedBuyAmount, uint256 roundedBuyAmount)
getSellAmount
viewfunction getSellAmount(address sellToken) view returns (uint256)
getTradeableOrderWithSignature
viewfunction getTradeableOrderWithSignature(address orderOwner, tuple params, bytes, bytes32[]) view returns (tuple order, bytes signature)
isPaused
viewfunction isPaused() view returns (bool)
isValidSignature
viewfunction isValidSignature(bytes32, bytes signature) view returns (bytes4)
orderConfig
viewfunction orderConfig(address sellToken) view returns (tuple config)
owner
viewfunction owner() view returns (address)
supportsInterface
purefunction supportsInterface(bytes4 interfaceId) pure returns (bool)
acceptOwner
nonpayablefunction acceptOwner()
createConditionalOrder
nonpayablefunction createConditionalOrder(address sellToken)
proposeNewOwner
nonpayablefunction proposeNewOwner(address account)
recoverToken
nonpayablefunction recoverToken(address token, address to, uint256 amount)
removeOrderConfig
nonpayablefunction removeOrderConfig(address sellToken)
revokeOwnership
nonpayablefunction revokeOwnership()
setCowApproval
nonpayablefunction setCowApproval(address sellToken, uint256 amount)
setExplicitAccess
nonpayablefunction setExplicitAccess(address allowedCaller, tuple[] access)
setOrderConfig
nonpayablefunction setOrderConfig(address sellToken, tuple config)
setPaused
nonpayablefunction setPaused(bool paused)
updateAmountsAndAdjustmentBps
nonpayablefunction updateAmountsAndAdjustmentBps(address sellToken, uint96 maxSellAmount, uint96 minBuyAmount, int16 limitPriceAdjustmentBps)
events
ConditionalOrderCreated
event ConditionalOrderCreated(address indexed owner, (address handler, bytes32 salt, bytes staticInput) params)
ExplicitAccessSet
event ExplicitAccessSet(address indexed account, bytes4 indexed fnSelector, bool indexed value)
NewOwnerAccepted
event NewOwnerAccepted(address indexed oldOwner, address indexed newOwner)
NewOwnerProposed
event NewOwnerProposed(address indexed oldOwner, address indexed oldProposedOwner, address indexed newProposedOwner)
OrderConfigRemoved
event OrderConfigRemoved(address indexed sellToken)
OrderConfigSet
event OrderConfigSet(address indexed sellToken)
PausedSet
event PausedSet(bool paused)
TokenRecovered
event TokenRecovered(address indexed to, address indexed token, uint256 amount)
errors
ExpectedNonZero
error ExpectedNonZero()
InvalidAccess
error InvalidAccess()
InvalidAddress
error InvalidAddress(address addr)
InvalidParam
error InvalidParam()
InvalidSellToken
error InvalidSellToken(address sellToken)
IsPaused
error IsPaused()
OrderDoesNotMatchTradeableOrder
error OrderDoesNotMatchTradeableOrder()
OrderNotValid
error OrderNotValid(string reason)
PollTryAtBlock
error PollTryAtBlock(uint256 blockNumber, string message)
PollTryAtEpoch
error PollTryAtEpoch(uint256 timestamp, string message)
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
Slippage
error Slippage(uint256 minAmountExpected, uint256 actualAmount)
creation bytecode
0x60a060405234801562000010575f80fd5b5060405162003971380380620039718339810160408190526200003391620000e8565b816200003f8162000053565b506001600160a01b0316608052506200011e565b5f546001600160a01b0316156200007d57604051633006171960e21b815260040160405180910390fd5b6001600160a01b038116620000ab57604051634726455360e11b81525f600482015260240160405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620000e3575f80fd5b919050565b5f8060408385031215620000fa575f80fd5b6200010583620000cc565b91506200011560208401620000cc565b90509250929050565b6080516138336200013e5f395f818161019f015261185401526138335ff3fe608060405234801561000f575f80fd5b506004361061016e575f3560e01c80636069b55a116100d2578063a7229fd911610088578063bfccf0ec11610063578063bfccf0ec146104dc578063daeccc79146104ef578063ebbc49651461051c575f80fd5b8063a7229fd914610491578063b187bd26146104a4578063b1f8100d146104c9575f80fd5b806370023f6a116100b857806370023f6a146102f057806375778108146103035780638da5cb5b1461047f575f80fd5b80636069b55a146102ca578063617e7c29146102dd575f80fd5b806326e0a196116101275780633daaf3251161010d5780633daaf3251461027c578063493a23971461028f5780635f4dfa03146102a2575f80fd5b806326e0a196146102535780632b96895814610274575f80fd5b806310e65c641161015757806310e65c64146101d95780631626ba7e146101fa57806316c38b3c1461023e575f80fd5b806301ffc9a7146101725780630cbfe7dc1461019a575b5f80fd5b6101856101803660046128d9565b610524565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610191565b6101ec6101e7366004612909565b610654565b604051908152602001610191565b61020d6102083660046129ca565b610715565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610191565b61025161024c366004612a8e565b6108fb565b005b610266610261366004612af1565b6109e2565b604051610191929190612cea565b610251610e65565b61025161028a366004612909565b610f7d565b61025161029d366004612d0b565b6110c1565b6102b56102b0366004612909565b611595565b60408051928352602083019190915201610191565b6102516102d8366004612d90565b6115cc565b6102516102eb366004612de9565b6117e2565b6102516102fe366004612909565b61187d565b610472610311366004612909565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506001600160a01b039081165f9081526003602081815260409283902083516101808101855281546bffffffffffffffffffffffff80821683526c010000000000000000000000009182900488169483019490945260018084015480861697840197909752950486166060820152600282015495861660808201527401000000000000000000000000000000000000000090950490911660a08501529081015460ff808216151560c0860152610100808304909116151560e086015262010000820490930b92840192909252640100000000820461ffff16610120840152660100000000000090910462ffffff166101408301526004015461016082015290565b6040516101919190612e13565b5f546101c1906001600160a01b031681565b61025161049f366004612f2b565b611964565b6002546101859074010000000000000000000000000000000000000000900460ff1681565b6102516104d7366004612909565b611a2d565b6102516104ea366004612f69565b611b53565b6101856104fd366004612fea565b600160209081525f928352604080842090915290825290205460ff1681565b610251611d2c565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f94a2d0020000000000000000000000000000000000000000000000000000000014806105b657507fffffffff0000000000000000000000000000000000000000000000000000000082167f26e0a19600000000000000000000000000000000000000000000000000000000145b8061060257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061064e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e00000000000000000000000000000000000000000000000000000000145b92915050565b5f818161066082611dde565b805460038201546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292935061070d926bffffffffffffffffffffffff9092169161010090910460ff16906001600160a01b038616906370a0823190602401602060405180830381865afa1580156106e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610708919061301d565b611e52565b949350505050565b6002545f9074010000000000000000000000000000000000000000900460ff161561076c576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82806020019051810190610781919061305d565b90505f610790825f0151611dde565b805460608401519192506bffffffffffffffffffffffff16905f9082116107b757816107bd565b83606001515b90505f6107ce855f01518386611e77565b6003860154909250640100000000900461ffff1690505f816107f4578660800151610804565b608087015161080490835f61204b565b90508083111561084f576040517f2746152a00000000000000000000000000000000000000000000000000000000815260048101829052602481018490526044015b60405180910390fd5b5f610863885f015186898b6080015161206b565b905089805190602001208160405160200161087e9190613119565b60405160208183030381529060405280519060200120146108cb576040517f98c850a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507f1626ba7e000000000000000000000000000000000000000000000000000000009a9950505050505050505050565b610928335f357fffffffff00000000000000000000000000000000000000000000000000000000166121be565b61095e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805482151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f40db37ff5c0bdc2c427fbb2078c8f24afea940abac0e3c23bb4ea3bf2da2b212906109d790831515815260200190565b60405180910390a150565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260025460609074010000000000000000000000000000000000000000900460ff1615610add57610a7461012c42613155565b604080517f7e33463700000000000000000000000000000000000000000000000000000000815260048101929092526024820152600660448201527f50617573656400000000000000000000000000000000000000000000000000006064820152608401610846565b6001600160a01b0388163014610b4f576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6f72646572206f776e6572206d7573742062652073656c6600000000000000006044820152606401610846565b5f610b5d6020890189612909565b6001600160a01b031614610bcd576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f68616e646c6572206d75737420626520756e73657400000000000000000000006044820152606401610846565b602087013515610c39576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f73616c74206d75737420626520756e73657400000000000000000000000000006044820152606401610846565b5f610c476040890189613168565b810190610c549190612909565b6001600160a01b038082165f9081526003602052604090208054929350916c01000000000000000000000000900416610ce9576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73656c6c546f6b656e206e6f7420636f6e6669677572656400000000000000006044820152606401610846565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a919061301d565b9050805f03610de857610d7f61012c42613155565b604080517f7e33463700000000000000000000000000000000000000000000000000000000815260048101929092526024820152600b60448201527f5a65726f42616c616e63650000000000000000000000000000000000000000006064820152608401610846565b815460038301545f91610e14916bffffffffffffffffffffffff90911690610100900460ff1684611e52565b90505f610e22858386611e77565b915050610e318583868461206b565b965086604051602001610e449190613119565b60405160208183030381529060405295505050505050965096945050505050565b610e92335f357fffffffff00000000000000000000000000000000000000000000000000000000166121be565b610ec8576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b031661dead14610f1d576002546040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610846565b5f80546040516001600160a01b03909116907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b610faa335f357fffffffff00000000000000000000000000000000000000000000000000000000166121be565b610fe0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025474010000000000000000000000000000000000000000900460ff1615611035576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61103e81611dde565b50604080516001600160a01b0383166020808301919091528251808303909101815260a0820183525f828401818152606084018290526080909301829052925130939283929185917f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361916110b291906131c9565b60405180910390a25050505050565b6110ee335f357fffffffff00000000000000000000000000000000000000000000000000000000166121be565b611124576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661116f576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610846565b5f6111806040830160208401612909565b6001600160a01b0316036111dc5761119e6040820160208301612909565b6040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610846565b6111ec6040820160208301612909565b6001600160a01b0316826001600160a01b0316036112145761119e6040820160208301612909565b6112216020820182613200565b6bffffffffffffffffffffffff165f03611267576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112776060820160408301613200565b6bffffffffffffffffffffffff165f036112bd576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112ce6080830160608401612909565b6001600160a01b0316146113cb576112ec6080820160608301612909565b6001600160a01b031663950212808361130b6040850160208601612909565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561136c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611390919061321b565b6113c6576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611417565b6113dd61012082016101008301613236565b60010b15611417576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61142860a0830160808401612909565b6001600160a01b0316036114465761119e60a0820160808301612909565b61271061145b61014083016101208401613260565b61ffff161115611497576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114a96101608201610140830161328b565b62ffffff165f036114e6576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a806114fc6101608301610140840161328b565b62ffffff161115611539576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382165f908152600360205260409020819061155c82826132ee565b50506040516001600160a01b038316907f620697ccb4f53d5acb95d022fff93232f3be2e80bcdc342dd974fc516c4c271c905f90a25050565b5f8082816115a282611dde565b80549091506115c19083906bffffffffffffffffffffffff1683611e77565b935093505050915091565b6115f9335f357fffffffff00000000000000000000000000000000000000000000000000000000166121be565b61162f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826bffffffffffffffffffffffff165f03611676576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816bffffffffffffffffffffffff165f036116bd576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6116c785611dde565b60018101549091506c0100000000000000000000000090046001600160a01b0316611728578160010b5f14611728576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546bffffffffffffffffffffffff8086167fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009283161783556001830180549186169190921617905560038101805461ffff841662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff9091161790556040516001600160a01b038616907f620697ccb4f53d5acb95d022fff93232f3be2e80bcdc342dd974fc516c4c271c905f90a25050505050565b61180f335f357fffffffff00000000000000000000000000000000000000000000000000000000166121be565b611845576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118796001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083612224565b5050565b6118aa335f357fffffffff00000000000000000000000000000000000000000000000000000000166121be565b6118e0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381165f818152600360208190526040808320838155600181018490556002810184905591820180547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001690556004909101829055517f77112f16adb9ba38b96415abef057fc90ed118ff5cd9ccd3640ebd3d36db56309190a250565b611991335f357fffffffff00000000000000000000000000000000000000000000000000000000166121be565b6119c7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316826001600160a01b03167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611a0c91815260200190565b60405180910390a3611a286001600160a01b038416838361237d565b505050565b611a5a335f357fffffffff00000000000000000000000000000000000000000000000000000000166121be565b611a90576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611adb576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610846565b6002545f80546040516001600160a01b03808616948116939216917f64420d4a41c6ed4de2bccbf33192eea18e576c5b23c79c3a722d4e9534c2e8d891a4600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611b80335f357fffffffff00000000000000000000000000000000000000000000000000000000166121be565b611bb6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316611c01576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610846565b604080518082019091525f80825260208201525f5b82811015611d2557838382818110611c3057611c306135a7565b905060400201803603810190611c4691906135d4565b915081602001511515825f01517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b03167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a46020828101516001600160a01b0387165f9081526001808452604080832087517fffffffff0000000000000000000000000000000000000000000000000000000016845290945292902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905501611c16565b5050505050565b6002546001600160a01b03163314611d70576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805460405133926001600160a01b03909216917f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d55491a35f80547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600280549091169055565b6001600160a01b038082165f908152600360205260409020805490916c0100000000000000000000000090910416611e4d576040517fe39ca5270000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610846565b919050565b5f82611e5e5783611e6d565b838210611e6b5783611e6d565b815b90505b9392505050565b60018101545f9081906c0100000000000000000000000090046001600160a01b03168015611f955760018401546040517f7349615f0000000000000000000000000000000000000000000000000000000081526c010000000000000000000000009091046001600160a01b031690637349615f90611eff90899089905f908190600401613691565b602060405180830381865afa158015611f1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f3e919061301d565b600385015490935062010000900460010b5f811315611f6d57611f668461ffff83165f61204b565b9350611f93565b5f8160010b1215611f9357611f90611f84826136cf565b859061ffff165f6123c6565b93505b505b60018401546bffffffffffffffffffffffff16838111611fb55783611fb7565b805b60028601549094507401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1680611ff05784612005565b80611ffb8187613738565b612005919061374b565b9350835f03612040576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050935093915050565b5f80836127100190506120628582612710866123e4565b95945050505050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260408051610180810182526001600160a01b03878116825285546c01000000000000000000000000900481166020830152600286015416918101919091526060810185905260808101839052600384015460a0820190612139906601000000000000900462ffffff16612494565b63ffffffff168152600485015460208201525f60408201527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756060820152600385015460ff16151560808201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc960a0820181905260c0909101529050949350505050565b5f80546001600160a01b0384811691161480611e7057506001600160a01b0383165f9081526001602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff169392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526122a384826124b5565b612377576040516001600160a01b03841660248201525f604482015261236d9085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612552565b6123778482612552565b50505050565b6040516001600160a01b038316602482015260448101829052611a289084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016122eb565b5f6127108381039084106123da575f612062565b6120628582612710865b5f6123f0858585612652565b905060018260018111156124065761240661362f565b0361070d5782806124195761241961370b565b8486091561070d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156124515760010161070d565b6040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260448101849052606401610846565b5f81806124a18142613762565b6124ab9190613784565b61064e91906137ac565b5f805f846001600160a01b0316846040516124d091906137d0565b5f604051808303815f865af19150503d805f8114612509576040519150601f19603f3d011682016040523d82523d5f602084013e61250e565b606091505b5091509150818015612538575080511580612538575080806020019051810190612538919061321b565b80156120625750505050506001600160a01b03163b151590565b5f6125a6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127599092919063ffffffff16565b905080515f14806125c65750808060200190518101906125c6919061321b565b611a28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610846565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f036126a85783828161269e5761269e61370b565b0492505050611e70565b8381106126f2576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610846565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b6060611e6d84845f85855f80866001600160a01b0316858760405161277e91906137d0565b5f6040518083038185875af1925050503d805f81146127b8576040519150601f19603f3d011682016040523d82523d5f602084013e6127bd565b606091505b50915091506127ce878383876127d9565b979650505050505050565b606083156128615782515f0361285a576001600160a01b0385163b61285a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610846565b508161070d565b61070d83838151156128765781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084691906137eb565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611e4d575f80fd5b5f602082840312156128e9575f80fd5b611e70826128aa565b6001600160a01b0381168114612906575f80fd5b50565b5f60208284031215612919575f80fd5b8135611e70816128f2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610180810167ffffffffffffffff8111828210171561297557612975612924565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129c2576129c2612924565b604052919050565b5f80604083850312156129db575f80fd5b8235915060208084013567ffffffffffffffff808211156129fa575f80fd5b818601915086601f830112612a0d575f80fd5b813581811115612a1f57612a1f612924565b612a4f847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161297b565b91508082528784828501011115612a64575f80fd5b80848401858401375f848284010152508093505050509250929050565b8015158114612906575f80fd5b5f60208284031215612a9e575f80fd5b8135611e7081612a81565b5f8083601f840112612ab9575f80fd5b50813567ffffffffffffffff811115612ad0575f80fd5b6020830191508360208260051b8501011115612aea575f80fd5b9250929050565b5f805f805f8060808789031215612b06575f80fd5b8635612b11816128f2565b9550602087013567ffffffffffffffff80821115612b2d575f80fd5b908801906060828b031215612b40575f80fd5b90955060408801359080821115612b55575f80fd5b818901915089601f830112612b68575f80fd5b813581811115612b76575f80fd5b8a6020828501011115612b87575f80fd5b602083019650809550506060890135915080821115612ba4575f80fd5b50612bb189828a01612aa9565b979a9699509497509295939492505050565b80516001600160a01b031682526020810151612bea60208401826001600160a01b03169052565b506040810151612c0560408401826001600160a01b03169052565b50606081015160608301526080810151608083015260a0810151612c3160a084018263ffffffff169052565b5060c081015160c083015260e081015160e083015261010080820151818401525061012080820151612c668285018215159052565b5050610140818101519083015261016090810151910152565b5f5b83811015612c99578181015183820152602001612c81565b50505f910152565b5f8151808452612cb8816020860160208601612c7f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f6101a0612cf88386612bc3565b8061018084015261206281840185612ca1565b5f808284036101a0811215612d1e575f80fd5b8335612d29816128f2565b92506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215612d5b575f80fd5b506020830190509250929050565b6bffffffffffffffffffffffff81168114612906575f80fd5b8060010b8114612906575f80fd5b5f805f8060808587031215612da3575f80fd5b8435612dae816128f2565b93506020850135612dbe81612d69565b92506040850135612dce81612d69565b91506060850135612dde81612d82565b939692955090935050565b5f8060408385031215612dfa575f80fd5b8235612e05816128f2565b946020939093013593505050565b81516bffffffffffffffffffffffff16815261018081016020830151612e4460208401826001600160a01b03169052565b506040830151612e6460408401826bffffffffffffffffffffffff169052565b506060830151612e7f60608401826001600160a01b03169052565b506080830151612e9a60808401826001600160a01b03169052565b5060a0830151612eba60a08401826bffffffffffffffffffffffff169052565b5060c0830151612ece60c084018215159052565b5060e0830151612ee260e084018215159052565b5061010080840151612ef88285018260010b9052565b50506101208381015161ffff16908301526101408084015162ffffff169083015261016092830151929091019190915290565b5f805f60608486031215612f3d575f80fd5b8335612f48816128f2565b92506020840135612f58816128f2565b929592945050506040919091013590565b5f805f60408486031215612f7b575f80fd5b8335612f86816128f2565b9250602084013567ffffffffffffffff80821115612fa2575f80fd5b818601915086601f830112612fb5575f80fd5b813581811115612fc3575f80fd5b8760208260061b8501011115612fd7575f80fd5b6020830194508093505050509250925092565b5f8060408385031215612ffb575f80fd5b8235613006816128f2565b9150613014602084016128aa565b90509250929050565b5f6020828403121561302d575f80fd5b5051919050565b8051611e4d816128f2565b805163ffffffff81168114611e4d575f80fd5b8051611e4d81612a81565b5f610180828403121561306e575f80fd5b613076612951565b61307f83613034565b815261308d60208401613034565b602082015261309e60408401613034565b604082015260608301516060820152608083015160808201526130c360a0840161303f565b60a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206130f6818501613052565b908201526101408381015190820152610160928301519281019290925250919050565b610180810161064e8284612bc3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561064e5761064e613128565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261319b575f80fd5b83018035915067ffffffffffffffff8211156131b5575f80fd5b602001915036819003821315612aea575f80fd5b602081526001600160a01b038251166020820152602082015160408201525f604083015160608084015261070d6080840182612ca1565b5f60208284031215613210575f80fd5b8135611e7081612d69565b5f6020828403121561322b575f80fd5b8151611e7081612a81565b5f60208284031215613246575f80fd5b8135611e7081612d82565b61ffff81168114612906575f80fd5b5f60208284031215613270575f80fd5b8135611e7081613251565b62ffffff81168114612906575f80fd5b5f6020828403121561329b575f80fd5b8135611e708161327b565b5f813561064e81612d69565b5f813561064e816128f2565b5f813561064e81612a81565b5f813561064e81612d82565b5f813561064e81613251565b5f813561064e8161327b565b6133346132fa836132a6565b82547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff91909116178255565b613380613343602084016132b2565b82546bffffffffffffffffffffffff1660609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016178255565b600181016133936132fa604085016132a6565b6133a2613343606085016132b2565b50600281016133eb6133b6608085016132b2565b82547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0391909116178255565b6134326133fa60a085016132a6565b82546001600160a01b031660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016178255565b506003810161347861344660c085016132be565b825490151560ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091909116178255565b6134be61348760e085016132be565b8280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1691151560081b61ff0016919091179055565b6135066134ce61010085016132ca565b8280548260101b63ffff0000167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff8216178255505050565b61354d61351661012085016132d6565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1660209190911b65ffff0000000016178255565b61359761355d61014085016132e2565b82547fffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff1660309190911b68ffffff00000000000016178255565b5061016082013560048201555050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082840312156135e4575f80fd5b6040516040810181811067ffffffffffffffff8211171561360757613607612924565b604052613613836128aa565b8152602083013561362381612a81565b60208201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110612906577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6001600160a01b038516815260208101849052608081016136b18461365c565b8360408301526136c08361365c565b82606083015295945050505050565b5f8160010b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000810361370357613703613128565b5f0392915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826137465761374661370b565b500490565b808202811582820484141761064e5761064e613128565b5f63ffffffff808416806137785761377861370b565b92169190910492915050565b63ffffffff8181168382160280821691908281146137a4576137a4613128565b505092915050565b63ffffffff8181168382160190808211156137c9576137c9613128565b5092915050565b5f82516137e1818460208701612c7f565b9190910192915050565b602081525f611e706020830184612ca156fea2646970667358221220bf96b955274b07ac12fa2e3e4e2c5ff0f64977f2e894aa6da47110829c3be61264736f6c63430008160033000000000000000000000000b20aae0fe007519b7ce6f090a2ab8353b3da5d80000000000000000000000000c92e8bdf79f0507f65a392b0ab4667716bfe0110