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)
processWithdrawals
nonpayablefunction processWithdrawals(bytes path0, bytes path1) returns (uint256 assetsWithdrawn)
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
ExcessiveBurn
error ExcessiveBurn()
Expired
error Expired()
Forbidden
error Forbidden()
GSInvalidSwap
error GSInvalidSwap()
InvalidAssetToken
error InvalidAssetToken()
InvalidHedgeSize
error InvalidHedgeSize()
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
0x6101606040523480156200001257600080fd5b506040516200598a3803806200598a8339810160408190526200003591620000a8565b60408101516001600160a01b0390811660809081528251821660c09081526020840151831660e052606084015183166101005290830151821660a090815283015182166101205290910151166101405262000175565b80516001600160a01b0381168114620000a357600080fd5b919050565b600060e08284031215620000bb57600080fd5b60405160e081016001600160401b0381118282101715620000ec57634e487b7160e01b600052604160045260246000fd5b604052620000fa836200008b565b81526200010a602084016200008b565b60208201526200011d604084016200008b565b604082015262000130606084016200008b565b606082015262000143608084016200008b565b60808201526200015660a084016200008b565b60a08201526200016960c084016200008b565b60c08201529392505050565b60805160a05160c05160e0516101005161012051610140516157316200025960003960008181610145015281816106a30152610af801526000818161016c015281816104d0015261058601526000818160fd0152612ee10152600081816101ba01528181610a5401528181610c6d015281816111a501528181614313015261440d01526000818160d6015281816116c1015281816117d40152818161186d01528181612761015281816133c0015261350b0152600081816092015261078701526000818161019301528181610ef6015281816131d30152613f3401526157316000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806397ee11441161005b57806397ee114414610140578063cb941d0614610167578063f887ea401461018e578063f9f1c9c4146101b557600080fd5b8063622f18f81461008d5780637a3b3fbe146100d157806389cdfb8f146100f85780638c4a65071461011f575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61013261012d3660046146e2565b6101dc565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b60006101e883836104ab565b600e546004546001546001600160801b039091169061020681610626565b5050600a5460405163b8b94db960e01b815230600482015260001960248201526001600160a01b039091169063b8b94db990604401600060405180830381600087803b15801561025557600080fd5b505af1158015610269573d6000803e3d6000fd5b5050306000908152600f6020526040812054925082900390506102f157600a5460408051636eee909960e11b815290516001600160a01b039092169163dddd21329160048082019260009290919082900301818387803b1580156102cc57600080fd5b505af11580156102e0573d6000803e3d6000fd5b5050505060009450505050506104a5565b6000846102fe858461475b565b6103089190614788565b905061031783826000806109cd565b50506103238286610ae3565b61032c83610c13565b6001600160801b031693506103448489896000610d09565b600480546fffffffffffffffffffffffffffffffff19166001600160801b0386161790556006546000906103a490600160601b900460ff1661039157600c546001600160a01b031661039e565b600d546001600160a01b03165b30610e0f565b905080156103d1576006546103d1908290600160601b900460ff166103c9578a6103cb565b895b30610edf565b600654600090600160601b900460ff166103f657600d546001600160a01b0316610403565b600c546001600160a01b03165b905061040f8130610e0f565b9750871561042f57600a5461042f9082906001600160a01b03168a610f64565b831561043f5761043f308561104e565b600a5460408051636eee909960e11b815290516001600160a01b039092169163dddd21329160048082019260009290919082900301818387803b15801561048557600080fd5b505af1158015610499573d6000803e3d6000fd5b50505050505050505050505b92915050565b600c54600d54604051632e1cf40b60e01b81526001600160a01b0392831692918216917f00000000000000000000000000000000000000000000000000000000000000001690632e1cf40b90610509908790869086906004016147ec565b602060405180830381865afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190614834565b61056f5760405163130dcd6560e01b8152600060048201526024015b60405180910390fd5b604051632e1cf40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1cf40b906105bf908690859087906004016147ec565b602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106009190614834565b6106205760405163130dcd6560e01b815260016004820152602401610566565b50505050565b6000808260000361063c57506000928392509050565b6106468330611129565b6004549193509150600160801b90046001600160401b031682118061067c5750600454600160c01b90046001600160401b031681115b156109c85760085460405163111ced7f60e01b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009160009161075791670de0b6b3a7640000919085169063111ced7f90602401602060405180830381865afa1580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610722919061484f565b60085461073f9190600160a01b90046001600160401b031661475b565b6107499190614788565b670de0b6b3a7640000611221565b600c54600d5460408051634cadad5760e11b815281519495506001600160a01b03938416949284169360009384937f00000000000000000000000000000000000000000000000000000000000000009092169263995b5aae9260048083019391928290030181865afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f5919061489d565b9150915060008261ffff1611801561081557506001600160a01b03811615155b156108455761082d84828a8561ffff16612710611239565b97506108428382898561ffff16612710611239565b96505b84156108d95761086084878a88670de0b6b3a7640000611239565b975061087783878988670de0b6b3a7640000611239565b6008546040516398bc58ed60e01b81526001600160a01b0391821660048201529198508716906398bc58ed90602401600060405180830381600087803b1580156108c057600080fd5b505af11580156108d4573d6000803e3d6000fd5b505050505b6108e38430610e0f565b97506108ef8330610e0f565b965087156109025761090284878a610f64565b861561091357610913838789610f64565b6040516381abed1560e01b81523060048201526001600160a01b038716906381abed1590602401600060405180830381600087803b15801561095457600080fd5b505af1158015610968573d6000803e3d6000fd5b5050604080518b8152602081018b90526001600160401b0389168183015261ffff8616606082015290513093507f85bf2622140facb572504e8755b2bb368e5bc6f5d626eeeb150c63f208ac9c3492509081900360800190a25050505050505b915091565b6000808515806109db575084155b156109eb57506000905080610ada565b6040805160a0810182528781526001600160801b038781166020830190815282840188815260608401888152600019608086019081529551630624e65f60e11b8152945160048601529151909216602484015290516044830152516064820152905160848201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630c49ccbe9060a40160408051808303816000875af1158015610aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac891906148d4565b5050610ad48630611129565b90925090505b94509492505050565b604051633cf5106b60e21b81523060048201527f00000000000000000000000000000000000000000000000000000000000000009060009081906001600160a01b0384169063f3d441ac906024016040805180830381865afa158015610b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7191906148d4565b909250905083610b81838761475b565b610b8b9190614788565b915083610b98828761475b565b610ba29190614788565b6040516350019d6b60e11b815230600482015260248101849052604481018290529091506001600160a01b0384169063a0033ad690606401600060405180830381600087803b158015610bf457600080fd5b505af1158015610c08573d6000803e3d6000fd5b505050505050505050565b600081600003610c2557506000919050565b60408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663133f757160e31b179052905160009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690610c999085906148f8565b600060405180830381855afa9150503d8060008114610cd4576040519150601f19603f3d011682016040523d82523d6000602084013e610cd9565b606091505b509150915081610cfc57604051637692ff9960e01b815260040160405180910390fd5b6101000151949350505050565b600754600090670de0b6b3a764000090610d3390600160a01b90046001600160401b03168761475b565b610d3d9190614788565b60085460008054604051631b2d298360e11b81526004810191909152929350916001600160a01b039091169063365a530690602401600060405180830381865afa158015610d8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610db79190810190614b69565b60c001516001600160801b03169050600081831115610ded57508082036127108110610de857610de881878761126a565b610e06565b508181036127108110610e0657610e06818787876113ff565b50505050505050565b6040516001600160a01b038281166024830152600091829182919086169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b17905251610e6591906148f8565b600060405180830381855afa9150503d8060008114610ea0576040519150601f19603f3d011682016040523d82523d6000602084013e610ea5565b606091505b5091509150818015610eb957506020815110155b610ec257600080fd5b80806020019051810190610ed6919061484f565b95945050505050565b604051631cddb78560e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637376de1490610f369086906000908790879060001990600401614ddc565b600060405180830381600087803b158015610f5057600080fd5b505af1158015610e06573d6000803e3d6000fd5b6040516001600160a01b03838116602483015260448201839052600091829186169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b17905251610fbe91906148f8565b6000604051808303816000865af19150503d8060008114610ffb576040519150601f19603f3d011682016040523d82523d6000602084013e611000565b606091505b509150915081801561102a57508051158061102a57508080602001905181019061102a9190614834565b6110475760405163847ea61d60e01b815260040160405180910390fd5b5050505050565b6001600160a01b0382166110755760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600f6020526040902054808211156110af5760405163d124752b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600f602052604081208383039055600e80548492906110de908490614e18565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6000808360000361113f5750600090508061121a565b604080516080810182528581526001600160a01b03858116602083019081526001600160801b0383850181815260608501828152955163fc6f786560e01b81528551600482015292518416602484015251811660448301529351909316606484015290917f00000000000000000000000000000000000000000000000000000000000000009091169063fc6f78659060840160408051808303816000875af11580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121391906148d4565b9093509150505b9250929050565b60008183106112305781611232565b825b9392505050565b600080611247858585611448565b9050801561125f57808503945061125f878783610f64565b509295945050505050565b8260000361127757505050565b6000805460085490916001600160a01b0390911690829003611313576008546040516397b48f1560e01b8152600160e01b90910461ffff1660048201526001600160a01b038216906397b48f15906024016020604051808303816000875af11580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b919061484f565b600081905591505b600b5460009061132c906001600160a01b031687611470565b90506001600160a01b0382166356761fd88483600060405190808252806020026020018201604052801561136a578160200160208202803683370190505b506040518463ffffffff1660e01b815260040161138993929190614e66565b6000604051808303816000875af11580156113a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113d09190810190614ee0565b50506003546113f79150869086906001600160801b0380821691600160801b900416611534565b505050505050565b83156106205760008054908190036114175750610620565b6114248186868686611753565b60035461104790859085906001600160801b0380821691600160801b900416611534565b600061146882611458858761475b565b6114629190614788565b85611221565b949350505050565b6000806000846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156114b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d79190614f63565b506001600160701b03918216935016905060006115056114f78385614fb3565b6001600160801b0316611d7b565b9050600061151287611e10565b90508161151f828861475b565b6115299190614788565b979650505050505050565b600054801580611542575082155b8061154b575081155b156115565750610620565b6008546040516328f582d360e11b8152600481018390526001600160a01b039091169081906351eb05a69060240160408051808303816000875af11580156115a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c691906148d4565b5050604051631b2d298360e11b8152600481018390526000906001600160a01b0383169063365a530690602401600060405180830381865afa158015611610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116389190810190614b69565b905080610120015160008151811061165257611652614fde565b60200260200101516001600160801b0316600014801561169a575080610120015160018151811061168557611685614fde565b60200260200101516001600160801b03166000145b156116a757505050610620565b816001600160a01b03166373db44ec8483610120015160007f00000000000000000000000000000000000000000000000000000000000000006116ec8d8d8d8d611ec7565b6040518663ffffffff1660e01b815260040161170c95949392919061502d565b6000604051808303816000875af115801561172b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c08919081019061507a565b6000611760866001611efe565b60c08101519091506001600160801b0316600081900361179357604051630664756d60e01b815260040160405180910390fd5b8086106117a9576117a6816127106150b6565b95505b60085461012083015160405163012ea92f60e31b81526001600160a01b0392831692600092839283927f0000000000000000000000000000000000000000000000000000000000000000169163097549789161180d9188918f908b906004016150c9565b600060405180830381865afa15801561182a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118529190810190615100565b925092509250836001600160a01b03166373db44ec8c8360007f00000000000000000000000000000000000000000000000000000000000000006118de8f8f8a6000815181106118a4576118a4614fde565b60200260200101516001600160801b03168b6001815181106118c8576118c8614fde565b60200260200101516001600160801b0316611ec7565b6040518663ffffffff1660e01b81526004016118fe95949392919061502d565b6000604051808303816000875af115801561191d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611945919081019061507a565b5050848a10611952578092505b611971838761012001516119678e6000611efe565b6101200151612129565b9050600061197f8284612473565b905060008160008151811061199657611996614fde565b60200260200101516001600160801b03161180156119d757506000816001815181106119c4576119c4614fde565b60200260200101516001600160801b0316115b15611c1d5760045481516001600160401b03600160801b8304811692600160c01b9004169082908490600090611a0f57611a0f614fde565b60200260200101516001600160801b03161015611a5b578183600081518110611a3a57611a3a614fde565b60200260200101906001600160801b031690816001600160801b0316815250505b806001600160801b031683600181518110611a7857611a78614fde565b60200260200101516001600160801b03161015611ac4578083600181518110611aa357611aa3614fde565b60200260200101906001600160801b031690816001600160801b0316815250505b505087611b855761271081600081518110611ae157611ae1614fde565b6020026020010151611af3919061515a565b81600081518110611b0657611b06614fde565b60200260200101818151611b1a9190615180565b6001600160801b031690525080516127109082906001908110611b3f57611b3f614fde565b6020026020010151611b51919061515a565b81600181518110611b6457611b64614fde565b60200260200101818151611b789190615180565b6001600160801b03169052505b611b928c828c8c8c612627565b60405163055271bf60e11b8152600481018d9052602481018c905260006044820181905260648201526001600160a01b03861690630aa4e37e906084016000604051808303816000875af1158015611bee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c1691908101906151a7565b5050611d6d565b60405163055271bf60e11b8152600481018d9052602481018c905260006044820181905260648201819052906001600160a01b03871690630aa4e37e906084016000604051808303816000875af1158015611c7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ca491908101906151a7565b915050611cb28d6000611efe565b9750611cc483828a6101200151612a41565b92506001600160a01b03861663ac8dc1a18e85306000604051908082528060200260200182016040528015611d03578160200160208202803683370190505b506040518563ffffffff1660e01b8152600401611d2394939291906151e3565b6000604051808303816000875af1158015611d42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d6a919081019061521d565b50505b505050505050505050505050565b600081600003611d8d57506000919050565b506001600160881b03811160071b81811c68ffffffffffffffffff1060061b1781811c64ffffffffff1060051b1781811c62ffffff1060041b1781811c620100000160b5600192831c1b0260121c80830401811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b1790529051600091829182916001600160a01b03861691611e5691906148f8565b600060405180830381855afa9150503d8060008114611e91576040519150601f19603f3d011682016040523d82523d6000602084013e611e96565b606091505b5091509150818015611eaa57506020815110155b611eb357600080fd5b80806020019051810190611468919061484f565b6060611ed585858585612d5c565b604051602001611ee59190615251565b6040516020818303038152906040529050949350505050565b61203d604051806103e00160405280600081526020016000815260200160006001600160a01b0316815260200160006bffffffffffffffffffffffff16815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160008152602001600081526020016060815260200160006001600160a01b03168152602001600061ffff168152602001600060ff168152602001600081526020016000151581526020016000815260200160008152602001600081526020016060815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6008546001600160a01b031682156120bc576040516328f582d360e11b8152600481018590526001600160a01b038216906351eb05a69060240160408051808303816000875af1158015612095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b991906148d4565b50505b604051631b2d298360e11b8152600481018590526001600160a01b0382169063365a530690602401600060405180830381865afa158015612101573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114689190810190614b69565b60608160008151811061213e5761213e614fde565b60200260200101516001600160801b03168360008151811061216257612162614fde565b60200260200101516001600160801b031611156122575760008260008151811061218e5761218e614fde565b6020026020010151846000815181106121a9576121a9614fde565b60200260200101516121bb9190615328565b9050846000815181106121d0576121d0614fde565b60200260200101516001600160801b0316816001600160801b03161161221b57808560008151811061220457612204614fde565b60200260200101516122169190615328565b61221e565b60005b8560008151811061223157612231614fde565b60200260200101906001600160801b031690816001600160801b031681525050506122cb565b8260008151811061226a5761226a614fde565b60200260200101518260008151811061228557612285614fde565b60200260200101516122979190615328565b846000815181106122aa576122aa614fde565b602002602001018181516122be9190615180565b6001600160801b03169052505b816001815181106122de576122de614fde565b60200260200101516001600160801b03168360018151811061230257612302614fde565b60200260200101516001600160801b031611156123f75760008260018151811061232e5761232e614fde565b60200260200101518460018151811061234957612349614fde565b602002602001015161235b9190615328565b90508460018151811061237057612370614fde565b60200260200101516001600160801b0316816001600160801b0316116123bb5780856001815181106123a4576123a4614fde565b60200260200101516123b69190615328565b6123be565b60005b856001815181106123d1576123d1614fde565b60200260200101906001600160801b031690816001600160801b0316815250505061246b565b8260018151811061240a5761240a614fde565b60200260200101518260018151811061242557612425614fde565b60200260200101516124379190615328565b8460018151811061244a5761244a614fde565b6020026020010181815161245e9190615180565b6001600160801b03169052505b509192915050565b6040805160028082526060808301845292602083019080368337019050509050826000815181106124a6576124a6614fde565b60200260200101516001600160801b0316826000815181106124ca576124ca614fde565b60200260200101516001600160801b0316116124e7576000612527565b826000815181106124fa576124fa614fde565b60200260200101518260008151811061251557612515614fde565b60200260200101516125279190615328565b8160008151811061253a5761253a614fde565b60200260200101906001600160801b031690816001600160801b0316815250508260018151811061256d5761256d614fde565b60200260200101516001600160801b03168260018151811061259157612591614fde565b60200260200101516001600160801b0316116125ae5760006125ee565b826001815181106125c1576125c1614fde565b6020026020010151826001815181106125dc576125dc614fde565b60200260200101516125ee9190615328565b8160018151811061260157612601614fde565b60200260200101906001600160801b031690816001600160801b03168152505092915050565b6001546000612634612e70565b905060006126928760018151811061264e5761264e614fde565b60200260200101516001600160801b03168860008151811061267257612672614fde565b60200260200101516001600160801b031661268d919061475b565b611d7b565b905060008083116126a45760006126c6565b60045483906126bc906001600160801b03168461475b565b6126c69190614788565b90508015806126d3575083155b156126e15750505050611047565b841561272b576126f2606482614788565b6126fc90826150b6565b90506127198161270b86610c13565b6001600160801b0316611221565b905061272884826000806109cd565b50505b5050600c54600d546001600160a01b039182169350169050600061274f8330610e0f565b9050600061275d8330610e0f565b90507f000000000000000000000000000000000000000000000000000000000000000061278b858285612f0d565b612796848284612f0d565b60006127d489898c6000815181106127b0576127b0614fde565b60200260200101516001600160801b03168d6001815181106118c8576118c8614fde565b6040805160028082526060820183529293506000929091602083019080368337019050509050848160008151811061280e5761280e614fde565b60200260200101906001600160801b031690816001600160801b031681525050838160018151811061284257612842614fde565b6001600160801b039092166020928302919091019091015260405163753e269760e01b81526001600160a01b0384169063753e26979061288d90309085906000908890600401615348565b600060405180830381600087803b1580156128a757600080fd5b505af11580156128bb573d6000803e3d6000fd5b505050505050506128cc8430610e0f565b91506128d88330610e0f565b9050876000815181106128ed576128ed614fde565b60200260200101516001600160801b031682111561292c578760008151811061291857612918614fde565b60200260200101516001600160801b031691505b8760018151811061293f5761293f614fde565b60200260200101516001600160801b031681111561297e578760018151811061296a5761296a614fde565b60200260200101516001600160801b031690505b6008546001600160a01b0316612995858285612f0d565b6129a0848284612f0d565b60408051600081526020810191829052632070fd8360e21b9091526001600160a01b038216906381c3f60c906129db908d9060248101615384565b6000604051808303816000875af11580156129fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a22919081019061521d565b508515612a3557612a338888612f23565b505b50505050505050505050565b604080516002808252606080830184529260208301908036833701905050905082600081518110612a7457612a74614fde565b602002602001015184600081518110612a8f57612a8f614fde565b60200260200101516001600160801b031611612aac576000612aec565b82600081518110612abf57612abf614fde565b602002602001015184600081518110612ada57612ada614fde565b6020026020010151612aec9190615328565b81600081518110612aff57612aff614fde565b60200260200101906001600160801b031690816001600160801b03168152505082600181518110612b3257612b32614fde565b602002602001015184600181518110612b4d57612b4d614fde565b60200260200101516001600160801b031611612b6a576000612baa565b82600181518110612b7d57612b7d614fde565b602002602001015184600181518110612b9857612b98614fde565b6020026020010151612baa9190615328565b81600181518110612bbd57612bbd614fde565b60200260200101906001600160801b031690816001600160801b03168152505081600081518110612bf057612bf0614fde565b60200260200101516001600160801b031681600081518110612c1457612c14614fde565b60200260200101516001600160801b031611612c4a5780600081518110612c3d57612c3d614fde565b6020026020010151612c66565b81600081518110612c5d57612c5d614fde565b60200260200101515b81600081518110612c7957612c79614fde565b60200260200101906001600160801b031690816001600160801b03168152505081600181518110612cac57612cac614fde565b60200260200101516001600160801b031681600181518110612cd057612cd0614fde565b60200260200101516001600160801b031611612d065780600181518110612cf957612cf9614fde565b6020026020010151612d22565b81600181518110612d1957612d19614fde565b60200260200101515b81600181518110612d3557612d35614fde565b60200260200101906001600160801b031690816001600160801b0316815250509392505050565b612dd260405180610180016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160608152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506040805161018081018252600c546001600160a01b039081168252600d541660208201526006546001600160401b03600160801b808304821694840194909452600160c01b91829004811660608401526080830188905260a0830187905260c0830186905260e083018590526004549384048116610100840152920490911661012082015260006101408201819052610160820152949350505050565b600080612e7b612f64565b604081015160608201516080830151600454939450600093849384938493612eab936001600160801b031661306c565b600b54600654929650909450612f0593506001600160a01b031691508490849060ff600160701b8204811691600160781b9004167f0000000000000000000000000000000000000000000000000000000000000000613107565b935050505090565b8015612f1e57612f1e838383610f64565b505050565b600080612f2e612f64565b60a0810185905260c081018490529050612f47846131b9565b60e0820152612f55836131b9565b61010082015261146881613249565b604080516101208101825260008082526020820181905291810182905260608082018390526080820183905260a0820181905260c082015260e081018290526101008101919091526040805161012081018252600c546001600160a01b039081168252600d54166020820152908101612fdb6136b4565b6001600160a01b031681526006546020909101906130019062010000900460020b61372e565b6001600160a01b0316815260065460209091019061302a9065010000000000900460020b61372e565b6001600160a01b031681526040805160008082526020808301845280850192909252825181815291820183529183015260608201819052608090910152919050565b600080836001600160a01b0316856001600160a01b0316111561308d579293925b846001600160a01b0316866001600160a01b0316116130b8576130b1858585613a5a565b9150610ada565b836001600160a01b0316866001600160a01b031610156130f1576130dd868585613a5a565b91506130ea858785613acd565b9050610ada565b6130fc858585613acd565b905094509492505050565b6000806000886001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561314a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316e9190614f63565b506001600160701b031691506001600160701b031691506000613199898985858b8b8b6126f2613b17565b90506131a9818a8a86868a613d4b565b93505050505b9695505050505050565b604051634bdc7ddb60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906397b8fbb69061320890859060040161539d565b602060405180830381865afa158015613225573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a5919061484f565b60008061325a836000015130610e0f565b9050600061326c846020015130610e0f565b905060005b60ff81101561367757600454600160801b90046001600160401b031683118015906132ae5750600454600160c01b90046001600160401b03168211155b6136775760408501516060860151608087015160065460009384936132f19391929091906001600160401b03600160801b8204811691600160c01b900416613e9f565b90925090506000613302828761475b565b90506000613310848761475b565b90508181101561345c5760065460a08a015160009161334091600160801b9091046001600160401b031690613f1a565b60e08b015160065491925090600090613377908b908b908a908a908890600160801b90046001600160401b031688620f4240613fac565b600454909150600160801b90046001600160401b03168111801561344057506004805460a08e015160405163de29932b60e01b8152600160c01b9092046001600160401b0316927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263de29932b926133fb928792016153b0565b6020604051808303816000875af115801561341a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343e919061484f565b115b1561345457613454818d60a0015130610edf565b5050506135a3565b818111156135a35760065460c08a015160009161348a91600160c01b9091046001600160401b031690613f1a565b6101008b0151600654919250906000906134c2908a908c9089908b908890600160c01b90046001600160401b031688620f4240613fac565b600454909150600160c01b90046001600160401b03168111801561358b57506004805460c08e015160405163de29932b60e01b8152600160801b9092046001600160401b0316927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263de29932b92613546928792016153b0565b6020604051808303816000875af1158015613565573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613589919061484f565b115b1561359f5761359f818d60c0015130610edf565b5050505b88516135af9030610e0f565b91506135bf896020015130610e0f565b9050818714806135ce57508086145b1561360a578196508095506135f587876135e66136b4565b8c606001518d60800151614058565b6135ff90896150b6565b975050505050613677565b90955093506136176136b4565b6001600160a01b0316604088018190526060880151608089015161363e9288928892614058565b61364890876150b6565b9550613658876000015130610e0f565b9450613668876020015130610e0f565b93508260010192505050613271565b60405181815230907fa39f5865f2654f808be4fc40bb36902875011108cab306005413ee73b7a65d189060200160405180910390a2505050919050565b60075460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa1580156136fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372291906153c9565b50949695505050505050565b60008060008360020b12613745578260020b613752565b8260020b6137529061545b565b9050613761620d89e719615477565b62ffffff168111156137865760405163d63f4fb360e01b815260040160405180910390fd5b60008160011660000361379d57600160801b6137af565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b0316905060028216156137d9576ffff97272373d413259a46990580e213a0260801c5b60048216156137f8576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613817576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613836576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613855576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613874576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613893576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156138b3576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156138d3576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156138f3576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613913576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613933576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613953576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613973576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613993576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156139b4576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156139d4576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156139f3576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613a10576b048a170391f7dc42444e8fa20260801c5b60008460020b1315613a31578060001981613a2d57613a2d614772565b0490505b640100000000810615613a45576001613a48565b60005b60ff16602082901c0192505050919050565b6000826001600160a01b0316846001600160a01b03161115613a7a579192915b6001600160a01b038416613ac36fffffffffffffffffffffffffffffffff60601b606085901b16613aab8787615499565b6001600160a01b0316866001600160a01b03166140ed565b6114689190614788565b6000826001600160a01b0316846001600160a01b03161115613aed579192915b6114686001600160801b038316613b048686615499565b6001600160a01b0316600160601b6140ed565b60408051600280825260608083018452926020830190803683370190505090506000613b698a6001600160801b03168a6001600160801b03168a6001600160801b03168a6001600160801b031661414c565b60ff16905080600103613c5857604051600162d7fbdd60e01b031981526001600160a01b0385169063ff28042390613bb3908d908d908d908d908a90612710908f906004016154b9565b600060405180830381865afa158015613bd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bf89190810190615503565b915081600181518110613c0d57613c0d614fde565b6020026020010151600083600081518110613c2a57613c2a614fde565b6020026020010184600181518110613c4457613c44614fde565b602090810291909101019190915252613d3e565b80600203613d3e57604051600162d7fbdd60e01b031981526001600160a01b0385169063ff28042390613c9d908c908e908c908e908a90612710908e906004016154b9565b600060405180830381865afa158015613cba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ce29190810190615503565b9150600082600181518110613cf957613cf9614fde565b602002602001015183600081518110613d1457613d14614fde565b6020026020010184600181518110613d2e57613d2e614fde565b6020908102919091010191909152525b5098975050505050505050565b60008087600081518110613d6157613d61614fde565b60200260200101511315613e0d57816001600160a01b031663a4a299c288600081518110613d9157613d91614fde565b6020026020010151888888886126f26127106040518863ffffffff1660e01b8152600401613dc59796959493929190615588565b602060405180830381865afa158015613de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e06919061484f565b90506131af565b600087600181518110613e2257613e22614fde565b60200260200101511315613e8657816001600160a01b031663a4a299c288600181518110613e5257613e52614fde565b6020026020010151878987896126f26127106040518863ffffffff1660e01b8152600401613dc59796959493929190615588565b61152961268d6001600160801b0380881690891661475b565b600080856001600160a01b0316876001600160a01b03161015613ec757508290506000613f10565b846001600160a01b0316876001600160a01b03161115613eec57506000905081613f10565b6000613efb61268d858761475b565b9050613f098888888461306c565b9093509150505b9550959350505050565b6040516377d2b77160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906377d2b77190613f6b90869086906004016153b0565b602060405180830381865afa158015613f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611232919061484f565b60008080613fba8b8961475b565b90506000613fc88a8c61475b565b905080821015613fea576040516291dfad60e41b815260040160405180910390fd5b613ff48183614e18565b925050506000858988614007919061475b565b6140119190614788565b9050878461401f878461475b565b6140299190614788565b61403391906150b6565b61403d90826150b6565b90506140498183614788565b9b9a5050505050505050505050565b6006546000908190819061408b908790879087906001600160401b03600160801b8204811691600160c01b900416613e9f565b60065491935091506140aa90600160601b900460ff168989858561419c565b909850965087158015906140be5750600087115b156140e2576001546140d490898960008061426d565b50506001600160801b031692505b505095945050505050565b60008060006140fd86868661448d565b91509150806000146141435760405162461bcd60e51b815260206004820152600f60248201526e4d554c4449565f4f564552464c4f5760881b6044820152606401610566565b50949350505050565b600080614159858561475b565b90506000614167878561475b565b90508082111561417c57600192505050611468565b8082101561418f57600292505050611468565b5060009695505050505050565b600080861561420957859150600084116141b657846141cb565b836141c1878561475b565b6141cb9190614788565b90508481111561420457826141e0868661475b565b6141ea9190614788565b9150836141f7838561475b565b6142019190614788565b90505b613f10565b508382614216578561422b565b82614221868661475b565b61422b9190614788565b915085821115613f105783614240878561475b565b61424a9190614788565b905082614257828661475b565b6142619190614788565b91509550959350505050565b60008060008760000361439d576040805161016081018252600c546001600160a01b039081168252600d548116602083015260065468010000000000000000810462ffffff1683850152620100008104600290810b606085015265010000000000909104900b608083015260a082018a905260c08201899052600060e08301819052610100830152306101208301526000196101408301529151634418b22b60e11b81527f000000000000000000000000000000000000000000000000000000000000000090921691638831645691614348916004016155c6565b6080604051808303816000875af1158015614367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061438b919061568a565b60019390935590945092509050614482565b6040805160c08101825289815260208101898152818301898152606083018981526080840189815260001960a08601908152955163219f5d1760e01b8152945160048601529251602485015290516044840152516064830152516084820152905160a48201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063219f5d179060c4016060604051808303816000875af1158015614456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061447a91906156c6565b919450925090505b955095509592505050565b600080826000036144d65760405162461bcd60e51b815260206004820152601360248201527226aaa62224ab2fad22a927afa224ab24a9a7a960691b6044820152606401610566565b6000806000198688098688029250828110838203039150506144f9828287614507565b909890975095505050505050565b6000808260000361454d5760405162461bcd60e51b815260206004820152601060248201526f4449564953494f4e5f42595f5a45524f60801b6044820152606401610566565b8360000361456a5761455f8386614788565b6000915091506145ee565b8260010361457c5750839050826145ee565b6000838103848104600101919085900690805b87156145e0576000198489098489028781019788108183108284030397880101969093509150600019848a09905083890292508281108382030391505088820198508189106000820101975061458f565b505050508285048201918210015b935093915050565b634e487b7160e01b600052604160045260246000fd5b6040516103e081016001600160401b038111828210171561462f5761462f6145f6565b60405290565b604051601f8201601f191681016001600160401b038111828210171561465d5761465d6145f6565b604052919050565b60006001600160401b0382111561467e5761467e6145f6565b50601f01601f191660200190565b600082601f83011261469d57600080fd5b81356146b06146ab82614665565b614635565b8181528460208386010111156146c557600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156146f557600080fd5b82356001600160401b038082111561470c57600080fd5b6147188683870161468c565b9350602085013591508082111561472e57600080fd5b5061473b8582860161468c565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104a5576104a5614745565b634e487b7160e01b600052601260045260246000fd5b60008261479757614797614772565b500490565b60005b838110156147b757818101518382015260200161479f565b50506000910152565b600081518084526147d881602086016020860161479c565b601f01601f19169290920160200192915050565b6060815260006147ff60608301866147c0565b6001600160a01b0394851660208401529290931660409091015292915050565b8051801515811461482f57600080fd5b919050565b60006020828403121561484657600080fd5b6112328261481f565b60006020828403121561486157600080fd5b5051919050565b805161ffff8116811461482f57600080fd5b6001600160a01b038116811461488f57600080fd5b50565b805161482f8161487a565b600080604083850312156148b057600080fd5b6148b983614868565b915060208301516148c98161487a565b809150509250929050565b600080604083850312156148e757600080fd5b505080516020909101519092909150565b6000825161490a81846020870161479c565b9190910192915050565b80516bffffffffffffffffffffffff8116811461482f57600080fd5b80516001600160801b038116811461482f57600080fd5b60006001600160401b03821115614960576149606145f6565b5060051b60200190565b600082601f83011261497b57600080fd5b8151602061498b6146ab83614947565b82815260059290921b840181019181810190868411156149aa57600080fd5b8286015b848110156149cc576149bf81614930565b83529183019183016149ae565b509695505050505050565b805160ff8116811461482f57600080fd5b600082601f8301126149f957600080fd5b81516020614a096146ab83614947565b82815260059290921b84018101918181019086841115614a2857600080fd5b8286015b848110156149cc578051614a3f8161487a565b8352918301918301614a2c565b600082601f830112614a5d57600080fd5b81516020614a6d6146ab83614947565b82815260059290921b84018101918181019086841115614a8c57600080fd5b8286015b848110156149cc57614aa1816149d7565b8352918301918301614a90565b600082601f830112614abf57600080fd5b81516020614acf6146ab83614947565b82815260059290921b84018101918181019086841115614aee57600080fd5b8286015b848110156149cc5780516001600160401b03811115614b115760008081fd5b8701603f81018913614b235760008081fd5b848101516040614b356146ab83614665565b8281528b82848601011115614b4a5760008081fd5b614b598389830184870161479c565b8652505050918301918301614af2565b600060208284031215614b7b57600080fd5b81516001600160401b0380821115614b9257600080fd5b908301906103e08286031215614ba757600080fd5b614baf61460c565b8251815260208301516020820152614bc960408401614892565b6040820152614bda60608401614914565b6060820152614beb60808401614930565b6080820152614bfc60a08401614930565b60a0820152614c0d60c08401614930565b60c082015260e083015160e08201526101008084015181830152506101208084015183811115614c3c57600080fd5b614c488882870161496a565b828401525050610140614c5c818501614892565b90820152610160614c6e848201614868565b90820152610180614c808482016149d7565b908201526101a083810151908201526101c0614c9d81850161481f565b908201526101e08381015190820152610200808401519082015261022080840151908201526102408084015183811115614cd657600080fd5b614ce2888287016149e8565b8284015250506102608084015183811115614cfc57600080fd5b614d0888828701614a4c565b8284015250506102808084015183811115614d2257600080fd5b614d2e88828701614aae565b8284015250506102a08084015183811115614d4857600080fd5b614d5488828701614aae565b8284015250506102c09150614d6a828401614892565b828201526102e09150614d7e828401614892565b91810191909152610300828101519082015261032080830151908201526103408083015190820152610360808301519082015261038080830151908201526103a080830151908201526103c091820151918101919091529392505050565b85815284602082015260a060408201526000614dfb60a08301866147c0565b6001600160a01b0394909416606083015250608001529392505050565b818103818111156104a5576104a5614745565b600081518084526020808501945080840160005b83811015614e5b57815187529582019590820190600101614e3f565b509495945050505050565b838152826020820152606060408201526000610ed66060830184614e2b565b600082601f830112614e9657600080fd5b81516020614ea66146ab83614947565b82815260059290921b84018101918181019086841115614ec557600080fd5b8286015b848110156149cc5780518352918301918301614ec9565b600080600060608486031215614ef557600080fd5b8351925060208401516001600160401b0380821115614f1357600080fd5b614f1f87838801614e85565b93506040860151915080821115614f3557600080fd5b50614f428682870161496a565b9150509250925092565b80516001600160701b038116811461482f57600080fd5b600080600060608486031215614f7857600080fd5b614f8184614f4c565b9250614f8f60208501614f4c565b9150604084015163ffffffff81168114614fa857600080fd5b809150509250925092565b6001600160801b03818116838216028082169190828114614fd657614fd6614745565b505092915050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015614e5b5781516001600160801b031687529582019590820190600101615008565b85815260a06020820152600061504660a0830187614ff4565b604083018690526001600160a01b0385166060840152828103608084015261506e81856147c0565b98975050505050505050565b6000806040838503121561508d57600080fd5b8251915060208301516001600160401b038111156150aa57600080fd5b61473b8582860161496a565b808201808211156104a5576104a5614745565b6001600160a01b03851681526080602082018190526000906150ed90830186614ff4565b6040830194909452506060015292915050565b60008060006060848603121561511557600080fd5b83516001600160401b038082111561512c57600080fd5b6151388783880161496a565b9450602086015191508082111561514e57600080fd5b614f1f8783880161496a565b60006001600160801b038084168061517457615174614772565b92169190910492915050565b6001600160801b038181168382160190808211156151a0576151a0614745565b5092915050565b600080604083850312156151ba57600080fd5b8251915060208301516001600160401b038111156151d757600080fd5b61473b85828601614e85565b8481526080602082015260006151fc6080830186614ff4565b6001600160a01b038516604084015282810360608401526115298185614e2b565b60006020828403121561522f57600080fd5b81516001600160401b0381111561524557600080fd5b6114688482850161496a565b6020815261526b6020820183516001600160a01b03169052565b6000602083015161528760408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516101808060a08501526152b86101a08501836147c0565b915060a0850151601f198584030160c08601526152d583826147c0565b60c087015160e08781019190915287015161010080880191909152870151610120808801919091528701516101408088019190915287015161016080880191909152909601519190940152509192915050565b6001600160801b038281168282160390808211156151a0576151a0614745565b6001600160a01b038516815260806020820181905260009061536c90830186614ff4565b846040840152828103606084015261152981856147c0565b8281526040602082015260006114686040830184614e2b565b60208152600061123260208301846147c0565b82815260406020820152600061146860408301846147c0565b600080600080600080600060e0888a0312156153e457600080fd5b87516153ef8161487a565b8097505060208801518060020b811461540757600080fd5b955061541560408901614868565b945061542360608901614868565b935061543160808901614868565b925061543f60a089016149d7565b915061544d60c0890161481f565b905092959891949750929550565b6000600160ff1b820161547057615470614745565b5060000390565b60008160020b627fffff19810361549057615490614745565b60000392915050565b6001600160a01b038281168282160390808211156151a0576151a0614745565b6001600160801b0397881681529587166020870152938616604086015291909416606084015262ffffff909316608083015260a082019290925260ff90911660c082015260e00190565b6000602080838503121561551657600080fd5b82516001600160401b0381111561552c57600080fd5b8301601f8101851361553d57600080fd5b805161554b6146ab82614947565b81815260059190911b8201830190838101908783111561556a57600080fd5b928401925b828410156115295783518252928401929084019061556f565b9687526001600160801b03958616602088015293851660408701529184166060860152909216608084015260a083019190915260c082015260e00190565b81516001600160a01b03168152610160810160208301516155f260208401826001600160a01b03169052565b506040830151615609604084018262ffffff169052565b50606083015161561e606084018260020b9052565b506080830151615633608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151615679828501826001600160a01b03169052565b505061014092830151919092015290565b600080600080608085870312156156a057600080fd5b845193506156b060208601614930565b6040860151606090960151949790965092505050565b6000806000606084860312156156db57600080fd5b6156e484614930565b92506020840151915060408401519050925092509256fea2646970667358221220ffc4912099a5f366f21c1fed11e8469e326a539c89ccea4f2ed60381e899f62f64736f6c63430008150033000000000000000000000000bcd8a78a74ced322a15b12a38800b904cdf5d649000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe880000000000000000000000004689903fbbd2b49b872cf1f315bf60d2eb83169800000000000000000000000022801e12ff90e8c9dc6c17e0fa21ed42a2d41f430000000000000000000000003e9955c6c6aa6af4f72cfaa7e9b7573f7ac25429000000000000000000000000e80bca82ba6106c190d9f74ef5fb20c8f6afca3f000000000000000000000000984bf792dc72048e38e9cac6f34dbb1361aca06a