0 txs
0 calls
constructor
constructor((address hedgeRebalancer, address nftPosMgr, address router, address mathLib, address gvFactory, address helperLib, address feeModel) params)
functions
feeModel
viewfunction feeModel() view returns (address)
gvFactory
viewfunction gvFactory() view returns (address)
hedgeRebalancer
viewfunction hedgeRebalancer() view returns (address)
helperLib
viewfunction helperLib() view returns (address)
mathLib
viewfunction mathLib() view returns (address)
nftPosMgr
viewfunction nftPosMgr() view returns (address)
router
viewfunction router() view returns (address)
rebalancePosition
nonpayablefunction rebalancePosition(tuple params)
events
DepositCount
event DepositCount(address indexed vault, uint256 count)
TotalNetFees
event TotalNetFees(address indexed vault, uint256 _fees0, uint256 _fees1, uint64 _poolShare, uint16 _protocolShare)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
CastOverflow
error CastOverflow()
ExcessiveBurn
error ExcessiveBurn()
Expired
error Expired()
Forbidden
error Forbidden()
GSInvalidSwap
error GSInvalidSwap()
InvalidAssetToken
error InvalidAssetToken()
InvalidHedgeSize
error InvalidHedgeSize()
InvalidLambda
error InvalidLambda()
InvalidPath
error InvalidPath(uint8 id)
InvalidRatio
error InvalidRatio(uint8 typ)
Locked
error Locked()
MaxTick
error MaxTick()
ST_Fail
error ST_Fail()
StalePriceError
error StalePriceError(uint8 typ)
TotalLiquidity
error TotalLiquidity()
ZeroAddress
error ZeroAddress()
ZeroAmount
error ZeroAmount()
ZeroHedgeLiquidity
error ZeroHedgeLiquidity()
creation bytecode
0x6101606040523480156200001257600080fd5b5060405162005397380380620053978339810160408190526200003591620000a8565b60408101516001600160a01b0390811660809081528251821660c09081526020840151831660e052606084015183166101005290830151821660a090815283015182166101205290910151166101405262000175565b80516001600160a01b0381168114620000a357600080fd5b919050565b600060e08284031215620000bb57600080fd5b60405160e081016001600160401b0381118282101715620000ec57634e487b7160e01b600052604160045260246000fd5b604052620000fa836200008b565b81526200010a602084016200008b565b60208201526200011d604084016200008b565b604082015262000130606084016200008b565b606082015262000143608084016200008b565b60808201526200015660a084016200008b565b60a08201526200016960c084016200008b565b60c08201529392505050565b60805160a05160c05160e051610100516101205161014051615144620002536000396000818161013801528181611147015261171b01526000818161015f01528181610567015261061d0152600081816101110152610b2e0152600081816101ad015281816114cb015281816115ee01528181611699015281816122c401528181613bdb0152613cd501526000818160ea01528181610a6b01528181612686015281816127d10152612e1101526000818160a7015261122b0152600081816101860152818161249901528181613163015261333901526151446000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806397ee11441161005b57806397ee114414610133578063cb941d061461015a578063f887ea4014610181578063f9f1c9c4146101a857600080fd5b806331c8b8851461008d578063622f18f8146100a25780637a3b3fbe146100e557806389cdfb8f1461010c575b600080fd5b6100a061009b36600461415b565b6101cf565b005b6100c97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100c97f000000000000000000000000000000000000000000000000000000000000000081565b6100c97f000000000000000000000000000000000000000000000000000000000000000081565b6100c97f000000000000000000000000000000000000000000000000000000000000000081565b6100c97f000000000000000000000000000000000000000000000000000000000000000081565b6100c97f000000000000000000000000000000000000000000000000000000000000000081565b6100c97f000000000000000000000000000000000000000000000000000000000000000081565b6101e18160a001518260c00151610542565b600b5460408051630240bc6b60e21b815290516001600160a01b0390921691630902f1ac916004808201926060929091908290030181865afa15801561022b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024f919061425a565b50600160801b6001600160701b03918216026001600160801b03191691161760055560e081015161010082015161028691906106bd565b6007546040820151600160e01b90910460020b906102a49082610754565b60020b604083015260608201516102bb9082610754565b60020b6060830181905260408301516102d5925090610773565b6102f28160a001518260c001518360e001518461010001516108de565b60005b600a81108015610317575061031760008001548360a001518460c00151610afd565b15610341576103398260a001518360c001518460e001518561010001516108de565b6001016102f5565b60e08201516101008301516001600160801b03908116600160801b0291161760035560015461036f816110ca565b5050600061037c82611471565b6001600160801b0316905061039b828286600001518760200151611567565b50506103a68261167d565b6103ae611706565b604084015160068054606087015162ffffff908116650100000000000267ffffff0000000000199190941662010000021667ffffffffffff00001990911617919091179055608084015160000361047557600061040e856040015161181a565b6001600160a01b031690506000610428866060015161181a565b60e08701516101008801516006546001600160a01b0393909316935061046d928592859290916001600160401b03600160801b8204811691600160c01b900416611b46565b608087015250505b6104828460800151611c76565b61048f8460800151611caf565b600060070160146101000a8154816001600160401b0302191690836001600160401b031602179055506104ca8460a001518560c00151611cde565b5060015491506104d982611471565b600480546001600160801b0319166001600160801b0392909216918217905560a085015160c0860151919250610513918391906000611d27565b61051c82611471565b600480546001600160801b0319166001600160801b039290921691909117905550505050565b600c54600d54604051632e1cf40b60e01b81526001600160a01b0392831692918216917f00000000000000000000000000000000000000000000000000000000000000001690632e1cf40b906105a0908790869086906004016142fa565b602060405180830381865afa1580156105bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e1919061433d565b6106065760405163130dcd6560e01b8152600060048201526024015b60405180910390fd5b604051632e1cf40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1cf40b90610656908690859087906004016142fa565b602060405180830381865afa158015610673573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610697919061433d565b6106b75760405163130dcd6560e01b8152600160048201526024016105fd565b50505050565b6005546001600160801b0380821691600160801b90041660006106e0828661436e565b905060006106ee848661436e565b90506106fb81600661436e565b82111561071e57604051633f8319c160e21b8152600160048201526024016105fd565b61072982600661436e565b81111561074c57604051633f8319c160e21b8152600260048201526024016105fd565b505050505050565b6000610760828461439b565b61076a90846143bd565b90505b92915050565b6005546001600160801b0380821691600160801b9004166000610794611e24565b90506000831180156107a65750600082115b1561084c5760006107b684611e9e565b6107bf84611e9e565b6107cd90600160601b61436e565b6107d791906143e2565b90506000816107e8846127106143f6565b6001600160a01b03166107fb91906143e2565b90506125e481101561082357604051637172205360e01b8152600160048201526024016105fd565b61283c81111561084957604051637172205360e01b8152600260048201526024016105fd565b50505b60006108578661181a565b905060006108648661181a565b905060646001600160a01b03848116605f8102839004926069909102049084168210156108a757604051637172205360e01b8152600360048201526024016105fd565b80836001600160a01b031610156108d357604051637172205360e01b81526004818101526024016105fd565b505050505050505050565b6000548015806108ec575082155b806108f5575081155b1561090057506106b7565b6008546040516328f582d360e11b8152600481018390526001600160a01b039091169081906351eb05a69060240160408051808303816000875af115801561094c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109709190614428565b5050604051631b2d298360e11b8152600481018390526000906001600160a01b0383169063365a530690602401600060405180830381865afa1580156109ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109e291908101906146d3565b90508061012001516000815181106109fc576109fc614946565b60200260200101516001600160801b03166000148015610a445750806101200151600181518110610a2f57610a2f614946565b60200260200101516001600160801b03166000145b15610a51575050506106b7565b816001600160a01b03166373db44ec8483610120015160007f0000000000000000000000000000000000000000000000000000000000000000610a968d8d8d8d611f33565b6040518663ffffffff1660e01b8152600401610ab69594939291906149a0565b6000604051808303816000875af1158015610ad5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108d391908101906149ed565b600854604051637c13995f60e11b81526001600160a01b0391821660048201526024810185905260009160609183917f0000000000000000000000000000000000000000000000000000000000000000169063f82732be90604401600060405180830381865afa158015610b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b9d9190810190614a33565b6004548151919550919350600160801b9091046001600160401b031691508390600090610bcc57610bcc614946565b60200260200101516001600160801b0316108015610c2257506004548251600160c01b9091046001600160401b03169083906001908110610c0f57610c0f614946565b60200260200101516001600160801b0316105b15610c8d57600082600081518110610c3c57610c3c614946565b60200260200101906001600160801b031690816001600160801b031681525050600082600181518110610c7157610c71614946565b6001600160801b03909216602092830291909101909101525060005b6008546001600160a01b031660ff8216600103610d55576001600160a01b03811663ac8dc1a18885306000604051908082528060200260200182016040528015610ce1578160200160208202803683370190505b506040518563ffffffff1660e01b8152600401610d019493929190614ab9565b6000604051808303816000875af1158015610d20573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d489190810190614af3565b50600093505050506110c3565b8160ff16600214610d6c57600093505050506110c3565b6000610d76611f6a565b90506000610dd982604001518360600151846080015188600081518110610d9f57610d9f614946565b60200260200101516001600160801b031689600181518110610dc357610dc3614946565b60200260200101516001600160801b0316612072565b9050610df6600060010154826001600160801b0316600080611567565b50506000610e08836000015130612136565b90506000610e1a846020015130612136565b9050600087600081518110610e3157610e31614946565b60200260200101516001600160801b03168310159050600088600181518110610e5c57610e5c614946565b60200260200101516001600160801b031683101590508115610ed25788600081518110610e8b57610e8b614946565b60200260200101516001600160801b031684039350610ed28660000151888b600081518110610ebc57610ebc614946565b60200260200101516001600160801b03166121fd565b8015610f1c5788600181518110610eeb57610eeb614946565b60200260200101516001600160801b031683039250610f1c8660200151888b600181518110610ebc57610ebc614946565b81158015610f275750805b15610fa8576000610f88600060060160109054906101000a90046001600160401b03166001600160401b03168e878d600081518110610f6857610f68614946565b60200260200101516001600160801b0316610f839190614b27565b61220e565b9050610fa2876020015189610f9d8785612232565b6121fd565b5061100b565b818015610fb3575080155b1561100b576000610ff4600060060160189054906101000a90046001600160401b03166001600160401b03168d868d600181518110610f6857610f68614946565b9050611009876000015189610f9d8885612232565b505b6001600160a01b0387166381c3f60c8e6000604051908082528060200260200182016040528015611046578160200160208202803683370190505b506040518363ffffffff1660e01b8152600401611064929190614b3a565b6000604051808303816000875af1158015611083573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110ab9190810190614af3565b508115806110b7575080155b99505050505050505050505b9392505050565b600080826000036110e057506000928392509050565b6110ea8330612248565b6004549193509150600160801b90046001600160401b03168211806111205750600454600160c01b90046001600160401b031681115b1561146c5760085460405163111ced7f60e01b81526001600160a01b0391821660048201527f0000000000000000000000000000000000000000000000000000000000000000916000916111fb91670de0b6b3a7640000919085169063111ced7f90602401602060405180830381865afa1580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c69190614b53565b6008546111e39190600160a01b90046001600160401b031661436e565b6111ed91906143e2565b670de0b6b3a7640000612232565b600c54600d5460408051634cadad5760e11b815281519495506001600160a01b03938416949284169360009384937f00000000000000000000000000000000000000000000000000000000000000009092169263995b5aae9260048083019391928290030181865afa158015611275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112999190614b6c565b9150915060008261ffff161180156112b957506001600160a01b03811615155b156112e9576112d184828a8561ffff16612710612340565b97506112e68382898561ffff16612710612340565b96505b841561137d5761130484878a88670de0b6b3a7640000612340565b975061131b83878988670de0b6b3a7640000612340565b6008546040516398bc58ed60e01b81526001600160a01b0391821660048201529198508716906398bc58ed90602401600060405180830381600087803b15801561136457600080fd5b505af1158015611378573d6000803e3d6000fd5b505050505b6113878430612136565b97506113938330612136565b965087156113a6576113a684878a612371565b86156113b7576113b7838789612371565b6040516381abed1560e01b81523060048201526001600160a01b038716906381abed1590602401600060405180830381600087803b1580156113f857600080fd5b505af115801561140c573d6000803e3d6000fd5b5050604080518b8152602081018b90526001600160401b0389168183015261ffff8616606082015290513093507f85bf2622140facb572504e8755b2bb368e5bc6f5d626eeeb150c63f208ac9c3492509081900360800190a25050505050505b915091565b60008160000361148357506000919050565b60408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663133f757160e31b179052905160009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906114f7908590614ba3565b600060405180830381855afa9150503d8060008114611532576040519150601f19603f3d011682016040523d82523d6000602084013e611537565b606091505b50915091508161155a57604051637692ff9960e01b815260040160405180910390fd5b6101000151949350505050565b600080851580611575575084155b1561158557506000905080611674565b6040805160a0810182528781526001600160801b038781166020830190815282840188815260608401888152600019608086019081529551630624e65f60e11b8152945160048601529151909216602484015290516044830152516064820152905160848201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630c49ccbe9060a40160408051808303816000875af115801561163e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116629190614428565b505061166e8630612248565b90925090505b94509492505050565b801561170357604051630852cd8d60e31b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c6890602401600060405180830381600087803b1580156116e557600080fd5b505af11580156116f9573d6000803e3d6000fd5b5050600060015550505b50565b604051633cf5106b60e21b81523060048201527f00000000000000000000000000000000000000000000000000000000000000009060009081906001600160a01b0384169063f3d441ac906024016040805180830381865afa158015611770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117949190614428565b9150915060008211806117a75750600081115b15611815576040516350019d6b60e11b815230600482015260248101839052604481018290526001600160a01b0384169063a0033ad6906064015b600060405180830381600087803b1580156117fc57600080fd5b505af1158015611810573d6000803e3d6000fd5b505050505b505050565b60008060008360020b12611831578260020b61183e565b8260020b61183e90614bbf565b905061184d620d89e719614bdb565b62ffffff168111156118725760405163d63f4fb360e01b815260040160405180910390fd5b60008160011660000361188957600160801b61189b565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b0316905060028216156118c5576ffff97272373d413259a46990580e213a0260801c5b60048216156118e4576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611903576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611922576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611941576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611960576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561197f576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561199f576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156119bf576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156119df576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156119ff576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611a1f576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611a3f576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611a5f576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611a7f576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611aa0576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611ac0576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611adf576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611afc576b048a170391f7dc42444e8fa20260801c5b60008460020b1315611b1d578060001981611b1957611b19614385565b0490505b640100000000810615611b31576001611b34565b60005b60ff16602082901c0192505050919050565b600080611b5283611e9e565b905080611b5f898661245b565b611b69919061436e565b975080611b76888661245b565b611b80919061436e565b965082611b8d888a61436e565b611b9791906143e2565b90506000611bad611ba8858461436e565b611e9e565b9050600087611bbc878961436e565b611bc691906143e2565b9050898203600086611bd88685614bfd565b611be2908461436e565b611bec91906143e2565b905082851115611c00578285039150611c06565b84830391505b600087611c13868561436e565b611c1d91906143e2565b9050811580611c2a575080155b15611c48576040516338daf26560e01b815260040160405180910390fd5b80611c5b83670de0b6b3a764000061436e565b611c6591906143e2565b9d9c50505050505050505050505050565b662386f26fc10000811080611c925750670de0b6b3a764000081115b1561170357604051628c090160e81b815260040160405180910390fd5b806001600160401b0381168114611cd957604051631cb1a8e360e31b815260040160405180910390fd5b919050565b600080611ce9611f6a565b60a0810185905260c081018490529050611d028461247f565b60e0820152611d108361247f565b610100820152611d1f8161250f565b949350505050565b600754600090670de0b6b3a764000090611d5190600160a01b90046001600160401b03168761436e565b611d5b91906143e2565b60085460008054604051631b2d298360e11b81526004810191909152929350916001600160a01b039091169063365a530690602401600060405180830381865afa158015611dad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611dd591908101906146d3565b60c001516001600160801b03169050600081831115611e0b57508082036127108110611e0657611e0681878761297a565b611810565b5081810361271081106118105761181081878787612b07565b60075460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa158015611e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e929190614c10565b50949695505050505050565b600081600003611eb057506000919050565b506001600160881b03811160071b81811c68ffffffffffffffffff1060061b1781811c64ffffffffff1060051b1781811c62ffffff1060041b1781811c620100000160b5600192831c1b0260121c80830401811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b6060611f4185858585612f95565b604051602001611f519190614c9b565b6040516020818303038152906040529050949350505050565b604080516101208101825260008082526020820181905291810182905260608082018390526080820183905260a0820181905260c082015260e081018290526101008101919091526040805161012081018252600c546001600160a01b039081168252600d54166020820152908101611fe1611e24565b6001600160a01b031681526006546020909101906120079062010000900460020b61181a565b6001600160a01b031681526006546020909101906120309065010000000000900460020b61181a565b6001600160a01b031681526040805160008082526020808301845280850192909252825181815291820183529183015260608201819052608090910152919050565b6000836001600160a01b0316856001600160a01b03161115612092579293925b846001600160a01b0316866001600160a01b0316116120bd576120b68585856130a9565b905061212d565b836001600160a01b0316866001600160a01b0316101561211f5760006120e48786866130a9565b905060006120f3878986613113565b9050806001600160801b0316826001600160801b0316106121145780612116565b815b9250505061212d565b61212a858584613113565b90505b95945050505050565b6040516001600160a01b038281166024830152600091829182919086169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b1790525161218c9190614ba3565b600060405180830381855afa9150503d80600081146121c7576040519150601f19603f3d011682016040523d82523d6000602084013e6121cc565b606091505b50915091508180156121e057506020815110155b6121e957600080fd5b8080602001905181019061212d9190614b53565b801561181557611815838383612371565b60008061221b8585613149565b905084612228828561436e565b61212d91906143e2565b6000818310612241578161076a565b5090919050565b6000808360000361225e57506000905080612339565b604080516080810182528581526001600160a01b03858116602083019081526001600160801b0383850181815260608501828152955163fc6f786560e01b81528551600482015292518416602484015251811660448301529351909316606484015290917f00000000000000000000000000000000000000000000000000000000000000009091169063fc6f78659060840160408051808303816000875af115801561230e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123329190614428565b9093509150505b9250929050565b60008061234e8585856131db565b90508015612366578085039450612366878783612371565b509295945050505050565b6040516001600160a01b03838116602483015260448201839052600091829186169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516123cb9190614ba3565b6000604051808303816000865af19150503d8060008114612408576040519150601f19603f3d011682016040523d82523d6000602084013e61240d565b606091505b5091509150818015612437575080511580612437575080806020019051810190612437919061433d565b6124545760405163847ea61d60e01b815260040160405180910390fd5b5050505050565b6000600160601b61246b83611e9e565b612475908561436e565b61076a91906143e2565b604051634bdc7ddb60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906397b8fbb6906124ce908590600401614d72565b602060405180830381865afa1580156124eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076d9190614b53565b600080612520836000015130612136565b90506000612532846020015130612136565b905060005b60ff81101561293d57600454600160801b90046001600160401b031683118015906125745750600454600160c01b90046001600160401b03168211155b61293d5760408501516060860151608087015160065460009384936125b79391929091906001600160401b03600160801b8204811691600160c01b9004166131fb565b909250905060006125c8828761436e565b905060006125d6848761436e565b9050818110156127225760065460a08a015160009161260691600160801b9091046001600160401b031690613149565b60e08b01516006549192509060009061263d908b908b908a908a908890600160801b90046001600160401b031688620f4240613276565b600454909150600160801b90046001600160401b03168111801561270657506004805460a08e015160405163de29932b60e01b8152600160c01b9092046001600160401b0316927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263de29932b926126c192879201614d85565b6020604051808303816000875af11580156126e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127049190614b53565b115b1561271a5761271a818d60a0015130613322565b505050612869565b818111156128695760065460c08a015160009161275091600160c01b9091046001600160401b031690613149565b6101008b015160065491925090600090612788908a908c9089908b908890600160c01b90046001600160401b031688620f4240613276565b600454909150600160c01b90046001600160401b03168111801561285157506004805460c08e015160405163de29932b60e01b8152600160801b9092046001600160401b0316927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263de29932b9261280c92879201614d85565b6020604051808303816000875af115801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f9190614b53565b115b1561286557612865818d60c0015130613322565b5050505b88516128759030612136565b9150612885896020015130612136565b90508187148061289457508086145b156128d0578196508095506128bb87876128ac611e24565b8c606001518d60800151613379565b6128c59089614bfd565b97505050505061293d565b90955093506128dd611e24565b6001600160a01b031660408801819052606088015160808901516129049288928892613379565b61290e9087614bfd565b955061291e876000015130612136565b945061292e876020015130612136565b93508260010192505050612537565b60405181815230907fa39f5865f2654f808be4fc40bb36902875011108cab306005413ee73b7a65d189060200160405180910390a2505050919050565b8260000361298757505050565b6000805460085490916001600160a01b0390911690829003612a23576008546040516397b48f1560e01b8152600160e01b90910461ffff1660048201526001600160a01b038216906397b48f15906024016020604051808303816000875af11580156129f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1b9190614b53565b600081905591505b600b54600090612a3c906001600160a01b03168761340e565b90506001600160a01b0382166356761fd884836000604051908082528060200260200182016040528015612a7a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401612a9993929190614d9e565b6000604051808303816000875af1158015612ab8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ae09190810190614e18565b505060035461074c9150869086906001600160801b0380821691600160801b9004166108de565b83156106b7576000805490819003612b1f57506106b7565b6000612b2c8260006134d2565b60085461012082015160c08301519293506001600160a01b0390911691600091612b60918a906001600160801b03166136fd565b90506000612b6e838a6137ec565b905061271082600081518110612b8657612b86614946565b6020026020010151612b989190614e7a565b82600081518110612bab57612bab614946565b6020026020010151612bbd9190614ea0565b82600081518110612bd057612bd0614946565b60200260200101906001600160801b031690816001600160801b03168152505061271082600181518110612c0657612c06614946565b6020026020010151612c189190614e7a565b82600181518110612c2b57612c2b614946565b6020026020010151612c3d9190614ea0565b82600181518110612c5057612c50614946565b60200260200101906001600160801b031690816001600160801b031681525050836101200151600081518110612c8857612c88614946565b60200260200101516001600160801b031682600081518110612cac57612cac614946565b60200260200101516001600160801b031611612ce25781600081518110612cd557612cd5614946565b6020026020010151612d03565b836101200151600081518110612cfa57612cfa614946565b60200260200101515b82600081518110612d1657612d16614946565b60200260200101906001600160801b031690816001600160801b031681525050836101200151600181518110612d4e57612d4e614946565b60200260200101516001600160801b031682600181518110612d7257612d72614946565b60200260200101516001600160801b031611612da85781600181518110612d9b57612d9b614946565b6020026020010151612dc9565b836101200151600181518110612dc057612dc0614946565b60200260200101515b82600181518110612ddc57612ddc614946565b60200260200101906001600160801b031690816001600160801b031681525050826001600160a01b03166373db44ec868460007f0000000000000000000000000000000000000000000000000000000000000000612e828e8e89600081518110612e4857612e48614946565b60200260200101516001600160801b03168a600181518110612e6c57612e6c614946565b60200260200101516001600160801b0316611f33565b6040518663ffffffff1660e01b8152600401612ea29594939291906149a0565b6000604051808303816000875af1158015612ec1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ee991908101906149ed565b505060405163055271bf60e11b815260048101869052602481018a905260006044820181905260648201526001600160a01b03841690630aa4e37e906084016000604051808303816000875af1158015612f47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f6f9190810190614ec7565b50506003546108d390899089906001600160801b0380821691600160801b9004166108de565b61300b60405180610180016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160608152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506040805161018081018252600c546001600160a01b039081168252600d541660208201526006546001600160401b03600160801b808304821694840194909452600160c01b91829004811660608401526080830188905260a0830187905260c0830186905260e083018590526004549384048116610100840152920490911661012082015260006101408201819052610160820152949350505050565b6000826001600160a01b0316846001600160a01b031611156130c9579192915b60006130ec856001600160a01b0316856001600160a01b0316600160601b613940565b905061212d61310e84836131008989614f03565b6001600160a01b0316613940565b61399f565b6000826001600160a01b0316846001600160a01b03161115613133579192915b611d1f61310e83600160601b6131008888614f03565b6040516377d2b77160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906377d2b7719061319a9086908690600401614d85565b602060405180830381865afa1580156131b7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a9190614b53565b6000611d1f826131eb858761436e565b6131f591906143e2565b85612232565b600080856001600160a01b0316876001600160a01b031610156132235750829050600061326c565b846001600160a01b0316876001600160a01b031611156132485750600090508161326c565b6000613257611ba8858761436e565b9050613265888888846139c9565b9093509150505b9550959350505050565b600080806132848b8961436e565b905060006132928a8c61436e565b9050808210156132b4576040516291dfad60e41b815260040160405180910390fd5b6132be8183614b27565b9250505060008589886132d1919061436e565b6132db91906143e2565b905087846132e9878461436e565b6132f391906143e2565b6132fd9190614bfd565b6133079082614bfd565b905061331381836143e2565b9b9a5050505050505050505050565b604051631cddb78560e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637376de14906117e29086906000908790879060001990600401614f23565b600654600090819081906133ac908790879087906001600160401b03600160801b8204811691600160c01b9004166131fb565b60065491935091506133cb90600160601b900460ff1689898585613a64565b909850965087158015906133df5750600087115b15613403576001546133f5908989600080613b35565b50506001600160801b031692505b505095945050505050565b6000806000846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613451573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613475919061425a565b506001600160701b03918216935016905060006134a36134958385614f5f565b6001600160801b0316611e9e565b905060006134b087613d55565b9050816134bd828861436e565b6134c791906143e2565b979650505050505050565b613611604051806103e00160405280600081526020016000815260200160006001600160a01b0316815260200160006bffffffffffffffffffffffff16815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160008152602001600081526020016060815260200160006001600160a01b03168152602001600061ffff168152602001600060ff168152602001600081526020016000151581526020016000815260200160008152602001600081526020016060815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6008546001600160a01b03168215613690576040516328f582d360e11b8152600481018590526001600160a01b038216906351eb05a69060240160408051808303816000875af1158015613669573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368d9190614428565b50505b604051631b2d298360e11b8152600481018590526001600160a01b0382169063365a530690602401600060405180830381865afa1580156136d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d1f91908101906146d3565b6040805160028082526060808301845292602083019080368337019050509050818460008151811061373157613731614946565b6020026020010151846137449190614f5f565b61374e9190614e7a565b8160008151811061376157613761614946565b60200260200101906001600160801b031690816001600160801b031681525050818460018151811061379557613795614946565b6020026020010151846137a89190614f5f565b6137b29190614e7a565b816001815181106137c5576137c5614946565b60200260200101906001600160801b031690816001600160801b0316815250509392505050565b60606000836001600160a01b031663c80994bb6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561382e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138569190810190614f8a565b508092508193505050808260008151811061387357613873614946565b60200260200101516001600160801b03168461388f919061436e565b61389991906143e2565b826000815181106138ac576138ac614946565b60200260200101906001600160801b031690816001600160801b03168152505080826001815181106138e0576138e0614946565b60200260200101516001600160801b0316846138fc919061436e565b61390691906143e2565b8260018151811061391957613919614946565b60200260200101906001600160801b031690816001600160801b0316815250505092915050565b6000806000613950868686613e0c565b91509150806000146139965760405162461bcd60e51b815260206004820152600f60248201526e4d554c4449565f4f564552464c4f5760881b60448201526064016105fd565b50949350505050565b806001600160801b0381168114611cd957604051631cb1a8e360e31b815260040160405180910390fd5b600080836001600160a01b0316856001600160a01b031611156139ea579293925b846001600160a01b0316866001600160a01b031611613a1557613a0e858585613e86565b9150611674565b836001600160a01b0316866001600160a01b03161015613a4e57613a3a868585613e86565b9150613a47858785613ef9565b9050611674565b613a59858585613ef9565b905094509492505050565b6000808615613ad15785915060008411613a7e5784613a93565b83613a89878561436e565b613a9391906143e2565b905084811115613acc5782613aa8868661436e565b613ab291906143e2565b915083613abf838561436e565b613ac991906143e2565b90505b61326c565b508382613ade5785613af3565b82613ae9868661436e565b613af391906143e2565b91508582111561326c5783613b08878561436e565b613b1291906143e2565b905082613b1f828661436e565b613b2991906143e2565b91509550959350505050565b600080600087600003613c65576040805161016081018252600c546001600160a01b039081168252600d548116602083015260065468010000000000000000810462ffffff1683850152620100008104600290810b606085015265010000000000909104900b608083015260a082018a905260c08201899052600060e08301819052610100830152306101208301526000196101408301529151634418b22b60e11b81527f000000000000000000000000000000000000000000000000000000000000000090921691638831645691613c1091600401614fd9565b6080604051808303816000875af1158015613c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c53919061509d565b60019390935590945092509050613d4a565b6040805160c08101825289815260208101898152818301898152606083018981526080840189815260001960a08601908152955163219f5d1760e01b8152945160048601529251602485015290516044840152516064830152516084820152905160a48201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063219f5d179060c4016060604051808303816000875af1158015613d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4291906150d9565b919450925090505b955095509592505050565b60408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b1790529051600091829182916001600160a01b03861691613d9b9190614ba3565b600060405180830381855afa9150503d8060008114613dd6576040519150601f19603f3d011682016040523d82523d6000602084013e613ddb565b606091505b5091509150818015613def57506020815110155b613df857600080fd5b80806020019051810190611d1f9190614b53565b60008082600003613e555760405162461bcd60e51b815260206004820152601360248201527226aaa62224ab2fad22a927afa224ab24a9a7a960691b60448201526064016105fd565b600080600019868809868802925082811083820303915050613e78828287613f43565b909890975095505050505050565b6000826001600160a01b0316846001600160a01b03161115613ea6579192915b6001600160a01b038416613eef6fffffffffffffffffffffffffffffffff60601b606085901b16613ed78787614f03565b6001600160a01b0316866001600160a01b0316613940565b611d1f91906143e2565b6000826001600160a01b0316846001600160a01b03161115613f19579192915b611d1f6001600160801b038316613f308686614f03565b6001600160a01b0316600160601b613940565b60008082600003613f895760405162461bcd60e51b815260206004820152601060248201526f4449564953494f4e5f42595f5a45524f60801b60448201526064016105fd565b83600003613fa657613f9b83866143e2565b60009150915061402a565b82600103613fb857508390508261402a565b6000838103848104600101919085900690805b871561401c576000198489098489028781019788108183108284030397880101969093509150600019848a099050838902925082811083820303915050888201985081891060008201019750613fcb565b505050508285048201918210015b935093915050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561406b5761406b614032565b60405290565b6040516103e081016001600160401b038111828210171561406b5761406b614032565b604051601f8201601f191681016001600160401b03811182821017156140bc576140bc614032565b604052919050565b8060020b811461170357600080fd5b8035611cd9816140c4565b60006001600160401b038211156140f7576140f7614032565b50601f01601f191660200190565b600082601f83011261411657600080fd5b8135614129614124826140de565b614094565b81815284602083860101111561413e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561416d57600080fd5b81356001600160401b038082111561418457600080fd5b90830190610120828603121561419957600080fd5b6141a1614048565b82358152602083013560208201526141bb604084016140d3565b60408201526141cc606084016140d3565b60608201526080830135608082015260a0830135828111156141ed57600080fd5b6141f987828601614105565b60a08301525060c08301358281111561421157600080fd5b61421d87828601614105565b60c08301525060e083810135908201526101009283013592810192909252509392505050565b80516001600160701b0381168114611cd957600080fd5b60008060006060848603121561426f57600080fd5b61427884614243565b925061428660208501614243565b9150604084015163ffffffff8116811461429f57600080fd5b809150509250925092565b60005b838110156142c55781810151838201526020016142ad565b50506000910152565b600081518084526142e68160208601602086016142aa565b601f01601f19169290920160200192915050565b60608152600061430d60608301866142ce565b6001600160a01b0394851660208401529290931660409091015292915050565b80518015158114611cd957600080fd5b60006020828403121561434f57600080fd5b61076a8261432d565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761076d5761076d614358565b634e487b7160e01b600052601260045260246000fd5b60008260020b806143ae576143ae614385565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171561076d5761076d614358565b6000826143f1576143f1614385565b500490565b6001600160a01b0382811682821681810283169291811582850482141761441f5761441f614358565b50505092915050565b6000806040838503121561443b57600080fd5b505080516020909101519092909150565b6001600160a01b038116811461170357600080fd5b8051611cd98161444c565b80516bffffffffffffffffffffffff81168114611cd957600080fd5b80516001600160801b0381168114611cd957600080fd5b60006001600160401b038211156144b8576144b8614032565b5060051b60200190565b600082601f8301126144d357600080fd5b815160206144e36141248361449f565b82815260059290921b8401810191818101908684111561450257600080fd5b8286015b848110156145245761451781614488565b8352918301918301614506565b509695505050505050565b805161ffff81168114611cd957600080fd5b805160ff81168114611cd957600080fd5b600082601f83011261456357600080fd5b815160206145736141248361449f565b82815260059290921b8401810191818101908684111561459257600080fd5b8286015b848110156145245780516145a98161444c565b8352918301918301614596565b600082601f8301126145c757600080fd5b815160206145d76141248361449f565b82815260059290921b840181019181810190868411156145f657600080fd5b8286015b848110156145245761460b81614541565b83529183019183016145fa565b600082601f83011261462957600080fd5b815160206146396141248361449f565b82815260059290921b8401810191818101908684111561465857600080fd5b8286015b848110156145245780516001600160401b0381111561467b5760008081fd5b8701603f8101891361468d5760008081fd5b84810151604061469f614124836140de565b8281528b828486010111156146b45760008081fd5b6146c3838983018487016142aa565b865250505091830191830161465c565b6000602082840312156146e557600080fd5b81516001600160401b03808211156146fc57600080fd5b908301906103e0828603121561471157600080fd5b614719614071565b825181526020830151602082015261473360408401614461565b60408201526147446060840161446c565b606082015261475560808401614488565b608082015261476660a08401614488565b60a082015261477760c08401614488565b60c082015260e083015160e082015261010080840151818301525061012080840151838111156147a657600080fd5b6147b2888287016144c2565b8284015250506101406147c6818501614461565b908201526101606147d884820161452f565b908201526101806147ea848201614541565b908201526101a083810151908201526101c061480781850161432d565b908201526101e0838101519082015261020080840151908201526102208084015190820152610240808401518381111561484057600080fd5b61484c88828701614552565b828401525050610260808401518381111561486657600080fd5b614872888287016145b6565b828401525050610280808401518381111561488c57600080fd5b61489888828701614618565b8284015250506102a080840151838111156148b257600080fd5b6148be88828701614618565b8284015250506102c091506148d4828401614461565b828201526102e091506148e8828401614461565b91810191909152610300828101519082015261032080830151908201526103408083015190820152610360808301519082015261038080830151908201526103a080830151908201526103c091820151918101919091529392505050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156149955781516001600160801b031687529582019590820190600101614970565b509495945050505050565b85815260a0602082015260006149b960a083018761495c565b604083018690526001600160a01b038516606084015282810360808401526149e181856142ce565b98975050505050505050565b60008060408385031215614a0057600080fd5b8251915060208301516001600160401b03811115614a1d57600080fd5b614a29858286016144c2565b9150509250929050565b600080600060608486031215614a4857600080fd5b83519250614a5860208501614541565b915060408401516001600160401b03811115614a7357600080fd5b614a7f868287016144c2565b9150509250925092565b600081518084526020808501945080840160005b8381101561499557815187529582019590820190600101614a9d565b848152608060208201526000614ad2608083018661495c565b6001600160a01b038516604084015282810360608401526134c78185614a89565b600060208284031215614b0557600080fd5b81516001600160401b03811115614b1b57600080fd5b611d1f848285016144c2565b8181038181111561076d5761076d614358565b828152604060208201526000611d1f6040830184614a89565b600060208284031215614b6557600080fd5b5051919050565b60008060408385031215614b7f57600080fd5b614b888361452f565b91506020830151614b988161444c565b809150509250929050565b60008251614bb58184602087016142aa565b9190910192915050565b6000600160ff1b8201614bd457614bd4614358565b5060000390565b60008160020b627fffff198103614bf457614bf4614358565b60000392915050565b8082018082111561076d5761076d614358565b600080600080600080600060e0888a031215614c2b57600080fd5b8751614c368161444c565b6020890151909750614c47816140c4565b9550614c556040890161452f565b9450614c636060890161452f565b9350614c716080890161452f565b9250614c7f60a08901614541565b9150614c8d60c0890161432d565b905092959891949750929550565b60208152614cb56020820183516001600160a01b03169052565b60006020830151614cd160408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516101808060a0850152614d026101a08501836142ce565b915060a0850151601f198584030160c0860152614d1f83826142ce565b60c087015160e08781019190915287015161010080880191909152870151610120808801919091528701516101408088019190915287015161016080880191909152909601519190940152509192915050565b60208152600061076a60208301846142ce565b828152604060208201526000611d1f60408301846142ce565b83815282602082015260606040820152600061212d6060830184614a89565b600082601f830112614dce57600080fd5b81516020614dde6141248361449f565b82815260059290921b84018101918181019086841115614dfd57600080fd5b8286015b848110156145245780518352918301918301614e01565b600080600060608486031215614e2d57600080fd5b8351925060208401516001600160401b0380821115614e4b57600080fd5b614e5787838801614dbd565b93506040860151915080821115614e6d57600080fd5b50614a7f868287016144c2565b60006001600160801b0380841680614e9457614e94614385565b92169190910492915050565b6001600160801b03818116838216019080821115614ec057614ec0614358565b5092915050565b60008060408385031215614eda57600080fd5b8251915060208301516001600160401b03811115614ef757600080fd5b614a2985828601614dbd565b6001600160a01b03828116828216039080821115614ec057614ec0614358565b85815284602082015260a060408201526000614f4260a08301866142ce565b6001600160a01b0394909416606083015250608001529392505050565b6001600160801b03818116838216028082169190828114614f8257614f82614358565b505092915050565b600080600060608486031215614f9f57600080fd5b83516001600160401b03811115614fb557600080fd5b614fc1868287016144c2565b93505060208401519150604084015190509250925092565b81516001600160a01b031681526101608101602083015161500560208401826001600160a01b03169052565b50604083015161501c604084018262ffffff169052565b506060830151615031606084018260020b9052565b506080830151615046608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015161508c828501826001600160a01b03169052565b505061014092830151919092015290565b600080600080608085870312156150b357600080fd5b845193506150c360208601614488565b6040860151606090960151949790965092505050565b6000806000606084860312156150ee57600080fd5b6150f784614488565b92506020840151915060408401519050925092509256fea2646970667358221220e00988b5f40edd46345726d227325077fe10759e0527818e82d046fa5382b2c564736f6c63430008150033000000000000000000000000bcd8a78a74ced322a15b12a38800b904cdf5d649000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe880000000000000000000000004689903fbbd2b49b872cf1f315bf60d2eb83169800000000000000000000000022801e12ff90e8c9dc6c17e0fa21ed42a2d41f430000000000000000000000003e9955c6c6aa6af4f72cfaa7e9b7573f7ac25429000000000000000000000000e80bca82ba6106c190d9f74ef5fb20c8f6afca3f000000000000000000000000984bf792dc72048e38e9cac6f34dbb1361aca06a