0 txs
0 calls
constructor
constructor()
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
emissionsToken
viewfunction emissionsToken() view returns (address)
factoryCL
viewfunction factoryCL() view returns (address)
FEE_SETTER_ROLE
viewfunction FEE_SETTER_ROLE() view returns (bytes32)
getGauge
viewfunction getGauge(address _pair) view returns (address)
getGaugeArray
viewfunction getGaugeArray(address[] _pair) view returns (address[] gauges)
getRatioByPair
viewfunction getRatioByPair(address _pair) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isActive
viewfunction isActive() view returns (bool)
isValidFee
purefunction isValidFee(bool _legacy, uint256 _bps) pure returns (bool)
legacyFactory
viewfunction legacyFactory() view returns (address)
MAX_BPS_CL
viewfunction MAX_BPS_CL() view returns (uint24)
MAX_BPS_LEGACY
viewfunction MAX_BPS_LEGACY() view returns (uint256)
MAX_LOCK
viewfunction MAX_LOCK() view returns (uint256)
minter
viewfunction minter() view returns (address)
multisig
viewfunction multisig() view returns (address)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
voter
viewfunction voter() view returns (address)
votingEscrow
viewfunction votingEscrow() view returns (address)
xToken
viewfunction xToken() view returns (address)
acceptFeeAccess
nonpayablefunction acceptFeeAccess()
addClGaugeReward
nonpayablefunction addClGaugeReward(address pair, address reward)
alterExitRatios
nonpayablefunction alterExitRatios(uint256 _newExitRatio, uint256 _newVeExitRatio)
batchAddWhitelist
nonpayablefunction batchAddWhitelist(address[] _whitelistees)
batchChangeDefaultRatiosByIndex
nonpayablefunction batchChangeDefaultRatiosByIndex(uint256 startIndex, uint256 endIndex)
batchRemoveWhitelist
nonpayablefunction batchRemoveWhitelist(address[] _whitelistees)
changeDefaultCorrelated
nonpayablefunction changeDefaultCorrelated(uint256 _bps)
changeDefaultVolatile
nonpayablefunction changeDefaultVolatile(uint256 _bps)
changeMaximumVestingLength
nonpayablefunction changeMaximumVestingLength(uint256 _maxVest)
changeMinimumVestingLength
nonpayablefunction changeMinimumVestingLength(uint256 _minVest)
changeVeMaximumVestingLength
nonpayablefunction changeVeMaximumVestingLength(uint256 _veMax)
clawBackEmissionsGivenPairs
nonpayablefunction clawBackEmissionsGivenPairs(address[] _pair)
clawBackEmissionsGivenRanges
nonpayablefunction clawBackEmissionsGivenRanges(uint256 _start, uint256 _end)
forbidToken
nonpayablefunction forbidToken(address _token, bool _status)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
incentivizePoolNative
nonpayablefunction incentivizePoolNative(address[] _pools, uint256[] _emissionsTokenAmounts)
incentivizeVotesNative
nonpayablefunction incentivizeVotesNative(address[] _pools, uint256[] _emissionsTokenAmounts)
initialize
nonpayablefunction initialize(address _voter, address _xToken, address _multisig, address _operator, address _legacyFactory, address _factoryCL)
initializeNewVars
nonpayablefunction initializeNewVars()
killGauge
nonpayablefunction killGauge(address _pair)
multisigWithdraw
nonpayablefunction multisigWithdraw(address token, uint256 amount)
newLock
nonpayablefunction newLock(uint256 _amount, address _for)
rebase
nonpayablefunction rebase(uint256 _veID, uint256 _amount)
reinitializeVestingParameters
nonpayablefunction reinitializeVestingParameters(uint256 _min, uint256 _max, uint256 _veMax)
removeClGaugeReward
nonpayablefunction removeClGaugeReward(address pair, address reward)
removeGaugeReward
nonpayablefunction removeGaugeReward(address _gauge, address _reward)
removeWhitelistedAddress
nonpayablefunction removeWhitelistedAddress(address _whitelistee)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
resetGaugeRatios
nonpayablefunction resetGaugeRatios(address[] _gauges)
resetRatiosByPair
nonpayablefunction resetRatiosByPair(address[] _pairs)
reviveGauge
nonpayablefunction reviveGauge(address _pair)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setClFactory
nonpayablefunction setClFactory(address _newFactory)
setDefaultRatio
nonpayablefunction setDefaultRatio(uint256 _xTokenRatio)
setFeeCL
nonpayablefunction setFeeCL(address[] _pair, uint24[] _fee)
setFeeLegacy
nonpayablefunction setFeeLegacy(address[] _pair, uint256[] _bps)
setFeeSplitDefault
nonpayablefunction setFeeSplitDefault(uint8 _feeDist, uint8 _treasury)
setGaugeRatios
nonpayablefunction setGaugeRatios(address[] _gauges, uint256[] _xTokenRatios)
setGaugeRatiosByPair
nonpayablefunction setGaugeRatiosByPair(address[] _pairs, uint256[] _xTokenRatios)
setLegacyFactory
nonpayablefunction setLegacyFactory(address _newFactory)
setPoolSplit
nonpayablefunction setPoolSplit(address[] _pools, uint8[] _feeDist, uint8[] _treasury)
setXRamPriceFeed
nonpayablefunction setXRamPriceFeed(bool legacy, address pool)
updateFlation
nonpayablefunction updateFlation(uint256 _newRate)
updateGrowthCap
nonpayablefunction updateGrowthCap(uint256 _newGrowth)
updateIncentivesSize
nonpayablefunction updateIncentivesSize(uint256 _newSize)
whitelistAddress
nonpayablefunction whitelistAddress(address _whitelistee)
whitelistGaugeReward
nonpayablefunction whitelistGaugeReward(address _gauge, address _reward)
whitelistToken
nonpayablefunction whitelistToken(address _token)
events
AddNewNFT
event AddNewNFT(address _for, uint256 _amount)
feeChangeV1
event feeChangeV1(address _pair, uint256 _newrate)
feeChangeV2
event feeChangeV2(address _pair, uint256 _newrate)
Initialized
event Initialized(uint8 version)
LPIncentives
event LPIncentives(address[] _gauge, uint256[] _amount)
newGlobalCorrelatedFee
event newGlobalCorrelatedFee(uint256 _newBps)
newGlobalVolatileFee
event newGlobalVolatileFee(uint256 _newBps)
Rebase
event Rebase(uint256 _veID, uint256 _amount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
VoteIncentives
event VoteIncentives(address[] _pools, uint256[] _amounts)
errors
InvalidFee
error InvalidFee()
creation bytecode
0x60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b604051613cdf9081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604081815260048036101561001557600080fd5b600092833560e01c90816301ffc9a714612c9b5750806304b0133c14612c2d57838163058ecdb414612b80575080630754617214612b58578063088b699e14612b30578381631a980b5a14612ad957508063210ca05d14612ab15783816321f8601614612a395750806322f3e2d414612a1c578063248a9ca3146129f25780632af63039146129405780632da5347b146129185780632f2ff15d1461285757806336568abe146127b7578063394bf5bd146127785780633c0ac8a0146125a657838163415665851461254157508063430e1c6a146124db57806343acc3af146123fa57806346c96aac146123d25780634783c35b146123aa5780634f2bfe5b146123825783816350d976fc1461230e578163530cd5ab146122a9578163536d0e111461224b5750806356ffe7e8146121d05780635eff8aa014611f2b5780635f635ed014611f03578381636247f6f214611e9e5750806364a806cc14611d3257806365a5d5f014611d13578381636bb4483c14611c4b575080637284c45b14611afa578381637396411914611a9c5750806373e3336814611a085780637d6e9d9a146117fc578381637d8d4b8b146117455781638d60cd62146116e7575080639010d07c146116a65783816390a57012146116485750806391d148541461160257838163953e092f146115a4578163992a793314611535575080639d66e323146114495780639d7c169e1461120a578381639f06247b1461119b578163a13d3e6f1461108c57508063a217fddf14611071578063b1c6f0e914611040578063b602407714611022578063b6f26e0614611005578063bef766a714610f8c578063c7a81b4214610e4f578063ca15c87314610e28578063ca91ed0114610de9578063cc2a9a5b14610bf857838163cd3e888d14610b9a578163ce34198314610b3c57508063d547741f14610afe578063d824f8b614610a3357838163d893edea146109bb57508063d930053b146108b2578063df464a761461088057838163e252a4dc14610812578163e923ffe4146107b457508063e93476831461077957838163efd9bf92146106f7578163f14c13111461066c578163f250df62146105fb57508063f5b541a6146105bc57838163f797eee3146104ee575063ffea49c61461035d57600080fd5b346104ea5760603660031901126104ea5767ffffffffffffffff9181358381116104e65761038e9036908401612d09565b93602480358281116104e2576103a79036908701612d09565b9190966044936044359081116104de576103c49036908901612d09565b94906103ce6132db565b848314806104d5575b156104ad57908a969594939291875b8381106103f1578880f35b8b886001600160a01b03610426610421858b61041b610416838d8860cb5416996131e8565b6131f8565b966131e8565b6132cd565b92610435610421868d896131e8565b90833b156104a9578f948f948f95916064948793519889978896636b47cd7960e11b885216908601528d60ff80931690860152168a8401525af1801561049f57908a91610487575b50506001016103e6565b61049090612ddb565b61049b57883861047d565b8880fd5b8b513d8c823e3d90fd5b8d80fd5b875162461bcd60e51b81526020818b01526002602482015261085360f21b6044820152606490fd5b508585146103d7565b8980fd5b8780fd5b8480fd5b8280fd5b929050346105b85760203660031901126105b857813567ffffffffffffffff81116105b3576105209036908401612d09565b61052b9491946132db565b815b818110610538578280f35b6001600160a01b038060c954169061055461041684868b6131e8565b90823b156105af5760248692838951958694859363f80f5dd560e01b8552168c8401525af180156105a557908491610591575b505060010161052d565b61059a90612ddb565b6104ea578238610587565b85513d86823e3d90fd5b8580fd5b505050fd5b5050fd5b5050346105f757816003193601126105f757602090517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b5080fd5b929050346105b857826003193601126105b857610616613520565b6001600160a01b0360cb541691823b156105b357815163f94c53c760e01b81529284918491829084905af190811561066357506106505750f35b61065990612ddb565b6106605780f35b80fd5b513d84823e3d90fd5b929050346105b85760203660031901126105b857813567ffffffffffffffff81116105b35761069e9036908401612d09565b6106a99391936132db565b6001600160a01b0360ca5416803b156105af5760208680946106e487519889968795869463e7264b6560e01b86528501526024840191612efd565b03925af190811561066357506106505750f35b929050346105b857806003193601126105b857610712612d9b565b9161072c61071e612db1565b936107276132db565b61321c565b926001600160a01b0360ca5416803b156105af5783516377ecdfc960e11b81526001600160a01b0395861693810193845294909116602083015284918491908290849082906040016106e4565b5050346105f757816003193601126105f757602090517fe6ad9a47fbda1dc18de1eb5eeb7d935e5e81b4748f3cfc61e233e64f881820608152f35b929050346105b85760203660031901126105b8576107d06132db565b6001600160a01b0360d0541691823b156105b35783926024849284519586938492633a48fff960e21b84528035908401525af190811561066357506106505750f35b929050346105b85760603660031901126105b85761082e6132db565b6001600160a01b0360c9541691823b156105b35783926064849284519586938492633894a93760e21b8452803590840152602435602484015260443560448401525af190811561066357506106505750f35b5050346105f757806003193601126105f7576020906108a96108a0612eee565b602435906132b5565b90519015158152f35b509190346105f7576108c336612d85565b6108ce9491946132db565b6108e06108db868361309a565b6130bd565b908495906001600160a01b038060ca5416975b8284106109385787808a89896109088a613119565b833b156104e6576106e493602086809486519788958694859363525ac10360e11b85528401526024830190612eb1565b86516315895f4760e31b815286810185905260209081816024818e5afa9182156109b157916001939184938c92610984575b505084610977838a6130ef565b91169052019301926108f3565b6109a39250803d106109aa575b61099b8183612e21565b810190612faa565b388061096a565b503d610991565b89513d8c823e3d90fd5b929050346105b857806003193601126105b8576109d6612d9b565b916109df612db1565b6109e76132db565b6001600160a01b0360ca5416803b156105af578351636c49f6f560e11b81526001600160a01b0395861693810193845294909116602083015284918491908290849082906040016106e4565b5090346104ea5760203660031901126104ea57813591610a516132db565b610a5a83613273565b15610af05783906001600160a01b0360cb541690813b156104ea57600160448492838751958694859363387ddad160e21b85528401528960248401525af18015610ae657610ad2575b50507fa2fc94ed8ceee756ec75a07ca0d8f3b9918372930efd43ef20de9d3ee6f5ad239160209151908152a180f35b610adb90612ddb565b6104ea578238610aa3565b83513d84823e3d90fd5b90516358d620b360e01b8152fd5b5090346104ea57806003193601126104ea57610b399135610b346001610b22612db1565b9383875260656020528620015461379e565b613975565b80f35b929050346105b85760203660031901126105b857610b586132db565b6001600160a01b0360ca541691823b156105b3578392602484928451958693849263e5bc3de160e01b84528035908401525af190811561066357506106505750f35b929050346105b85760203660031901126105b857610bb66132db565b6001600160a01b0360c9541691823b156105b3578392602484928451958693849263cd3e888d60e01b84528035908401525af190811561066357506106505750f35b50346104ea5760c03660031901126104ea57356001600160a01b0390818116809103610de557602435918083168093036104e6576044359181831693848403610de057606435908382168203610de057879460843592858416809403610ddc5760a435958616809603610ddc57610ce6610ceb92610ce08b9a8a5460ff8160081c16159b8c809d610dcf575b8015610db8575b610c949061315e565b60ff198281166001178255918d610da6575b5050600080526020809d606582528060002084600052825260ff81600020541615610d57575b5050506000805260978c528c600020613b58565b506138b1565b6138b1565b6001600160a01b0319928360ca54161760ca558260c954161760c9558160cb54161760cb5560cc54161760cc55610d20578280f35b7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989161ff001984541684555160018152a138808280f35b60019160008052606581528160002090856000525260002091825416179055338160007f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4388c8e610ccc565b61ffff19166101011790558e38610ca6565b50303b158015610c8b575060ff8216600114610c8b565b50600160ff831610610c84565b8680fd5b600080fd5b8380fd5b8334610660576020366003190112610660576001600160a01b03610e0b612d9b565b610e13613520565b166001600160a01b031960cc54161760cc5580f35b50346104ea5760203660031901126104ea5760209282913581526097845220549051908152f35b508290346105f757610e6036612d3a565b9592610e6e949291946132db565b868203610f6257908596610e81826130bd565b9287926001600160a01b03908160ca5416945b818110610ee45750505050813b15610ddc578680946106e4610ed298889485519a8b98899788966360339aa560e11b88528701526044860190612eb1565b84810360031901602486015291612f43565b610ef26104168284876131e8565b895163b9a09fd560e01b81529084168982015260209081816024818b5afa918215610f58579060019392918e92610f3b575b505084610f31838b6130ef565b9116905201610e94565b610f519250803d106109aa5761099b8183612e21565b8e80610f24565b8b513d8f823e3d90fd5b835162461bcd60e51b815260208185015260248101849052636c656e2160e01b6044820152606490fd5b50346104ea57816003193601126104ea57610fa5612d9b565b91602435801515809103610de0578493610fbd6132db565b6001600160a01b03908160ca541690813b15610ddc578660449281958751988996879563de7d72e560e01b8752169085015260248401525af190811561066357506106505750f35b5050346105f757816003193601126105f757602090516101f48152f35b5050346105f757816003193601126105f75760209051620186a08152f35b5050346105f75760203660031901126105f7576020906001600160a01b03611069610727612d9b565b915191168152f35b5050346105f757816003193601126105f75751908152602090f35b929050346105b85760209160206003193601126105b357803567ffffffffffffffff81116104e6576110c19036908301612d09565b906110ca6132db565b6110d3826130bd565b9186956001600160a01b03918260ca5416975b818110611122575050505050833b156104e6576106e493602086809486519788958694859363e7264b6560e01b85528401526024830190612eb1565b6111306104168284886131e8565b885163b9a09fd560e01b81529085168882015283816024818d5afa9081156111915790600192918c91611174575b508561116a838a6130ef565b91169052016110e6565b61118b9150853d87116109aa5761099b8183612e21565b3861115e565b89513d8d823e3d90fd5b929050346105b85760203660031901126105b8576111b7612d9b565b6111bf6132db565b6001600160a01b036111d58160ca54169261321c565b91803b156105af5785928360249286519788958694639f06247b60e01b865216908401525af190811561066357506106505750f35b50346104ea5761121936612d3a565b91936112236132db565b865b8581106112655750509061125f917fd402dbc146639547cb1f2290e713e99e8a2200d1c7fa294b5d198e20496b7c4d955194859485612f80565b0390a180f35b876001600160a01b038060ca541690611282610416858b8b6131e8565b8a5163b9a09fd560e01b815290821686820152602092908b90602485828281875afa801561143f57869386938992611420575b505194859384926324f24ba560e11b8452168b8301525afa908115611416578891839186916113f9575b50169261132d818d8a87898c6112fc8d60cf9a8c8c5416966131e8565b3594519687958694859363095ea7b360e01b85528401602090939291936001600160a01b0360408201951681520152565b03925af180156113ef576113c1575b5050541661134b8488886131e8565b35823b15610de55761138a928492838d51809681958294637c8afcc160e11b84528c8401602090939291936001600160a01b0360408201951681520152565b03925af180156113b7576113a3575b5050600101611225565b6113ac90612ddb565b6104e2578738611399565b89513d84823e3d90fd5b816113e092903d106113e8575b6113d88183612e21565b8101906131d0565b50388061133c565b503d6113ce565b8d513d88823e3d90fd5b6114109150853d87116109aa5761099b8183612e21565b386112df565b8b513d86823e3d90fd5b611438919250853d87116109aa5761099b8183612e21565b90386112b5565b83513d89823e3d90fd5b509190346105f757602092836003193601126104ea57611467612d9b565b60ca54835163b9a09fd560e01b81526001600160a01b03928316848201529082168682602481845afa91821561152b5791602491889493889261150c575b5086519586948593630e4bf54360e01b855216908301525afa92831561150157926114d2575b5051908152f35b9091508281813d83116114fa575b6114ea8183612e21565b81010312610de0575190386114cb565b503d6114e0565b8251903d90823e3d90fd5b611524919250853d87116109aa5761099b8183612e21565b90386114a5565b85513d88823e3d90fd5b929050346105b85760203660031901126105b857611551612d9b565b6115596132db565b6001600160a01b0361156f8160ca54169261321c565b91803b156105af578592836024928651978895869463992a793360e01b865216908401525af190811561066357506106505750f35b929050346105b85760203660031901126105b8576115c06132db565b6001600160a01b0360d0541691823b156105b3578392602484928451958693849263953e092f60e01b84528035908401525af190811561066357506106505750f35b50346104ea57816003193601126104ea576001600160a01b0382602094611627612db1565b9335815260658652209116600052825260ff81600020541690519015158152f35b929050346105b85761165936612d85565b92906116636132db565b6001600160a01b0360c95416803b156105af5785928360449286519788958694634852b80960e11b865285015260248401525af190811561066357506106505750f35b50346104ea57816003193601126104ea576116d86020936001600160a01b039235815260978552836024359120613a1f565b92905490519260031b1c168152f35b929050346105b85760203660031901126105b8576117036132db565b6001600160a01b0360c9541691823b156105b357839260248492845195869384926346b066b160e11b84528035908401525af190811561066357506106505750f35b929050346105b85760203660031901126105b857813567ffffffffffffffff81116105b3576117779036908401612d09565b6117829491946132db565b815b81811061178f578280f35b6001600160a01b038060c95416906117ab61041684868b6131e8565b90823b156105af576024869283895195869485936378c8cda760e01b8552168c8401525af180156105a5579084916117e8575b5050600101611784565b6117f190612ddb565b6104ea5782386117de565b50346104ea5761180b36612d3a565b91909261181661364d565b865b828110611823578780f35b61182e8185876131e8565b351515806119f1575b156119ae57876001600160a01b038060cb5416906118596104168588886131e8565b8a5163841fa66b60e01b81529116898201526020908181602481865afa91821561141657849261197d575b505061189184888a6131e8565b3514611973576118a56104168487876131e8565b6118b084888a6131e8565b35823b15610de5576118f0928492838c8e519687958694859363a93a897d60e01b85528401602090939291936001600160a01b0360408201951681520152565b03925af180156113b75761195f575b5050807faad33d2acde4329b1c27ca0561954b24793925d0c7e22dc9711ff66a6beffe2361193361041660019487876131e8565b61193e83888a6131e8565b8a516001600160a01b03929092168252356020820152604090a15b01611818565b61196890612ddb565b6104e25787386118ff565b5050600190611959565b8194508092503d83116119a7575b6119958183612e21565b81010312610de0578991513880611884565b503d61198b565b865162461bcd60e51b8152602081880152600660248201527f2176616c696400000000000000000000000000000000000000000000000000006044820152606490fd5b506101f4611a008286886131e8565b351115611837565b5090346104ea57806003193601126104ea576020611a6b92611a28612d9b565b611a306132db565b60cd54845163a9059cbb60e01b81526001600160a01b0391821693810193845260243560208501529586938492899290918491604090910190565b0393165af19081156106635750611a80575080f35b611a989060203d6020116113e8576113d88183612e21565b5080f35b929050346105b85760203660031901126105b857611ab86132db565b6001600160a01b0360d0541691823b156105b35783926024849284519586938492637396411960e01b84528035908401525af190811561066357506106505750f35b50346104ea57611b0936612d3a565b90929391611b1561364d565b865b818110611b22578780f35b62ffffff90611b4482611b3e611b3984888b6131e8565b61320c565b16613294565b15611c3b576001600160a01b038060cc5416611b6461041684878c6131e8565b918b611b74611b39868a8d6131e8565b93833b156105f7578c5163ba364c3d60e01b8152908316818b015293861660248501528b939281908490604490829084905af1928315611c2f578b899289928d96611c0d575b5050611b39876001999461041b610416837f3b972fda5270142c6b6ba50a6e54a6b1859fee77b92de18244f39c96958ffa0d9b9a9997611bf9976131e8565b90845193168352166020820152a101611b17565b935094505050611c1e919350612ddb565b6104de5786899186868b8e38611bba565b508351903d90823e3d90fd5b87516358d620b360e01b81528590fd5b929050346105b857806003193601126105b857611c66612eee565b611c6e612db1565b90611c776132db565b6001600160a01b03908160c9541690813b15610ddc5786916024839287519485938492633e4ed1dd60e21b845215158b8401525af18015611d0957908691611cf5575b50508060c95416803b156105af578592836024928651978895869463221b8a9560e11b865216908401525af190811561066357506106505750f35b611cfe90612ddb565b6104e6578438611cba565b84513d88823e3d90fd5b5050346105f757816003193601126105f75760209051630784ce008152f35b50346104ea57611d4136612d3a565b9193611d4b6132db565b865b858110611d875750509061125f917f07863f4e082a43727444dbaa22fa383af1e8bc428560a4c92fa68f5553440ac8955194859485612f80565b878387868a8487611df68c611dac6107276104168c6001600160a01b039a8b956131e8565b16968794611dc18b60cf988a8a5416946131e8565b35905194858094819363095ea7b360e01b83526020998a988401602090939291936001600160a01b0360408201951681520152565b03925af180156113ef57611e80575b50505416611e148488886131e8565b35823b15610de557611e53928492838d5180968195829463b66503cf60e01b84528c8401602090939291936001600160a01b0360408201951681520152565b03925af180156113b757611e6c575b5050600101611d4d565b611e7590612ddb565b6104e2578738611e62565b81611e9692903d106113e8576113d88183612e21565b503880611e05565b929050346105b85760203660031901126105b857611eba612d9b565b611ec26132db565b6001600160a01b038060ca5416803b156105af5785928360249286519788958694634d8c928d60e11b865216908401525af190811561066357506106505750f35b5050346105f757816003193601126105f7576020906001600160a01b0360cc54169051908152f35b5090346104ea57826003193601126104ea57610102835460ff8160081c1615806121c3575b611f599061315e565b61ffff19161783556001600160a01b03908160ca5416928151638dd598fb60e01b815285602094858385818a5afa9283156121b957829361219a575b50806001600160a01b031993168360ce54161760ce558451635001f3b560e01b8152868186818b5afa90811561212557908291849161217d575b50169260cf549784828a161760cf55865163030d028960e21b815288818881855afa9081156121735791848a9289948891612156575b50168460cd54161760cd558851928380926303aa30b960e11b82525afa90811561214c57908391859161212f575b50169060d054161760d05581868260c9541694604488518094819363095ea7b360e01b998a84528b840152816000199e8f602486015216175af1801561212557916044939188969593612108575b508060cf54169060ce5416988751998a968795865285015260248401525af19283156120fe577f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498936120e1575b50835461ff00191684555160028152a180f35b6120f790833d85116113e8576113d88183612e21565b50386120ce565b81513d86823e3d90fd5b61211e90873d89116113e8576113d88183612e21565b5038612081565b86513d85823e3d90fd5b6121469150893d8b116109aa5761099b8183612e21565b38612033565b87513d86823e3d90fd5b61216d9150843d86116109aa5761099b8183612e21565b38612005565b88513d87823e3d90fd5b6121949150883d8a116109aa5761099b8183612e21565b38611fcf565b6121b2919350863d88116109aa5761099b8183612e21565b9138611f95565b85513d84823e3d90fd5b50600260ff821610611f50565b50346104ea57816003193601126104ea5780359160ff8316809303610de0576024359160ff8316809303610de05784936122086132db565b6001600160a01b0360cb5416803b156105af5785928360449286519788958694631cb8e3a760e01b865285015260248401525af190811561066357506106505750f35b929050346105b85760203660031901126105b8576122676132db565b6001600160a01b0360c9541691823b156105b3578392602484928451958693849263536d0e1160e01b84528035908401525af190811561066357506106505750f35b929050346105b85760203660031901126105b8576122c5612d9b565b6122cd6132db565b6001600160a01b038060c95416803b156105af57859283602492865197889586946378c8cda760e01b865216908401525af190811561066357506106505750f35b929050346105b857806003193601126105b857612329612d9b565b9161233561071e612db1565b926001600160a01b0360ca5416803b156105af5783516314365dbf60e21b81526001600160a01b0395861693810193845294909116602083015284918491908290849082906040016106e4565b5050346105f757816003193601126105f7576020906001600160a01b0360ce54169051908152f35b5050346105f757816003193601126105f7576020906001600160a01b0360cd54169051908152f35b5050346105f757816003193601126105f7576020906001600160a01b0360ca54169051908152f35b50346104ea57816003193601126104ea57803590612416612db1565b9061241f6132db565b60208360646001600160a01b0393888560ce54168951968795869463ec32e6df60e01b8652850152630784ce006024850152881660448401525af180156124d1576124a6575b5091516001600160a01b03909216825260208201527fc0252bbdefb2e33bb149dde65e2f203f2957aef3cf2c77917b57823f9c4963d890806040810161125f565b602090813d83116124ca575b6124bc8183612e21565b81010312610de05738612465565b503d6124b2565b84513d87823e3d90fd5b5091346106605760203660031901126106605782359067ffffffffffffffff82116106605736602383011215610660575061252561253d9382602461252a94369301359101612e5b565b613119565b9051918291602083526020830190612eb1565b0390f35b929050346105b85760203660031901126105b85761255d612d9b565b6125656132db565b6001600160a01b038060c95416803b156105af578592836024928651978895869463f80f5dd560e01b865216908401525af190811561066357506106505750f35b509190346105f7576125b736612d85565b9190936125c26132db565b6001600160a01b03928360ca5416835191630fbdb69960e11b835260209586848681865afa93841561276e57889461273f575b506126036108db8a8461309a565b93808a109081612734575b501561270c57875b828a1061265157505050859650803b156105af576106e49486809486519788958694859363e7264b6560e01b85528401526024830190612eb1565b86516315895f4760e31b81528681018b9052602489828281895afa91821561119157918a9185938d926126ed575b508a5193849263b9a09fd560e01b8452168a83015281885afa9081156126e357916001929183928c916126c6575b50846126b9838a6130ef565b9116905201990198612616565b6126dd91508b3d8d116109aa5761099b8183612e21565b386126ad565b88513d8c823e3d90fd5b612705919250833d85116109aa5761099b8183612e21565b903861267f565b855162461bcd60e51b8152808601889052600260248201526110a960f11b6044820152606490fd5b90508211153861260e565b9093508681813d8311612767575b6127578183612e21565b81010312610de0575192386125f5565b503d61274d565b86513d8a823e3d90fd5b8334610660576020366003190112610660576001600160a01b0361279a612d9b565b6127a2613520565b166001600160a01b031960cb54161760cb5580f35b508290346105f757826003193601126105f7576127d2612db1565b90336001600160a01b038316036127ee5790610b399135613975565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152fd5b5090346104ea57806003193601126104ea57611a989135906097612879612db1565b92808652602090606582526128936001858920015461379e565b80600052606582526001600160a01b038460002095169485600052825260ff846000205416156128ca575b60005252600020613b58565b80600052606582528360002085600052825283600020600160ff198254161790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a46128be565b5050346105f757816003193601126105f7576020906001600160a01b0360cb54169051908152f35b5090346104ea5760203660031901126104ea5781359161295e6132db565b61296783613273565b15610af05783906001600160a01b0360cb541690813b156104ea578260448192828751958694859363387ddad160e21b85528401528960248401525af18015610ae6576129de575b50507f09c7e5889341a30b241ed708718f55daa0607a3441916ac8139fa2b641e58e999160209151908152a180f35b6129e790612ddb565b6104ea5782386129af565b50346104ea5760203660031901126104ea5781602093600192358152606585522001549051908152f35b5050346105f757816003193601126105f7576020906108a9612fc9565b929050346105b857806003193601126105b857612a54612d9b565b91612a5d612db1565b612a656132db565b6001600160a01b0360ca5416803b156105af5783516310fc300b60e11b81526001600160a01b0395861693810193845294909116602083015284918491908290849082906040016106e4565b5050346105f757816003193601126105f7576020906001600160a01b0360cf54169051908152f35b929050346105b85760203660031901126105b85781359167ffffffffffffffff83116105b357610908612b126125259436908401612d09565b9490612b1c6132db565b6001600160a01b0360ca5416953691612e5b565b5050346105f757816003193601126105f7576020906001600160a01b0360c954169051908152f35b5050346105f757816003193601126105f7576020906001600160a01b0360d054169051908152f35b808484346105b857612b9136612d85565b939091612b9c6132db565b6001600160a01b0360ce541690813b156104ea578360448492838851958694859363076426ed60e11b85528401528a60248401525af18015612c2357612c0f575b50507f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a215119282519182526020820152a180f35b612c1890612ddb565b610de5578385612bdd565b84513d84823e3d90fd5b5090346104ea5782612c3e36612d3a565b612c4b96929391966132db565b6001600160a01b0360ca541692833b156105af57612c7e86928851998a97889687956360339aa560e11b87528601612f80565b03925af19081156106635750612c92575080f35b610b3990612ddb565b925050346104ea5760203660031901126104ea573563ffffffff60e01b81168091036104ea5760209250635a05180f60e01b8114908115612cde575b5015158152f35b637965db0b60e01b811491508115612cf8575b5038612cd7565b6301ffc9a760e01b14905038612cf1565b9181601f84011215610de05782359167ffffffffffffffff8311610de0576020808501948460051b010111610de057565b6040600319820112610de05767ffffffffffffffff91600435838111610de05782612d6791600401612d09565b93909392602435918211610de057612d8191600401612d09565b9091565b6040906003190112610de0576004359060243590565b600435906001600160a01b0382168203610de057565b602435906001600160a01b0382168203610de057565b35906001600160a01b0382168203610de057565b67ffffffffffffffff8111612def57604052565b634e487b7160e01b600052604160045260246000fd5b6080810190811067ffffffffffffffff821117612def57604052565b90601f8019910116810190811067ffffffffffffffff821117612def57604052565b67ffffffffffffffff8111612def5760051b60200190565b9291612e6682612e43565b91612e746040519384612e21565b829481845260208094019160051b8101928311610de057905b828210612e9a5750505050565b838091612ea684612dc7565b815201910190612e8d565b90815180825260208080930193019160005b828110612ed1575050505090565b83516001600160a01b031685529381019392810192600101612ec3565b600435908115158203610de057565b91908082526020809201929160005b828110612f1a575050505090565b9091929382806001926001600160a01b03612f3489612dc7565b16815201950193929101612f0c565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311610de05760209260051b809284830137010190565b9290612f9990612fa79593604086526040860191612efd565b926020818503910152612f43565b90565b90816020910312610de057516001600160a01b0381168103610de05790565b6001600160a01b038060c954169060405190816322621bc160e11b9384825281600460209586935afa9081156130715760009161307d575b5081163014928361301e575b50505061301957600090565b600190565b90918093508260ca54169160046040518094819382525afa92831561307157600093613052575b505016301438808061300d565b613069929350803d106109aa5761099b8183612e21565b903880613045565b6040513d6000823e3d90fd5b6130949150833d85116109aa5761099b8183612e21565b38613001565b919082039182116130a757565b634e487b7160e01b600052601160045260246000fd5b906130c782612e43565b6130d46040519182612e21565b82815280926130e5601f1991612e43565b0190602036910137565b80518210156131035760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b60005b815181101561315a576001906001600160a01b036131458161313e84876130ef565b511661321c565b9061315083866130ef565b911690520161311c565b5090565b1561316557565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608490fd5b90816020910312610de057518015158103610de05790565b91908110156131035760051b0190565b356001600160a01b0381168103610de05790565b3562ffffff81168103610de05790565b60206001600160a01b0360248160ca541693604051948593849263b9a09fd560e01b84521660048301525afa9081156130715760009161325a575090565b612fa7915060203d6020116109aa5761099b8183612e21565b8015159081613287575b5061301957600090565b6101f4915011153861327d565b80151590816132a7575061301957600090565b620186a0915011153861327d565b15613294578015159081613287575061301957600090565b3560ff81168103610de05790565b3360009081527fbdd154b7c599a43e8b8410b62e84571cd69a79e95c9fc5b630a687cb7c97edf96020908152604080832054909291907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060ff16156133415750505050565b61334a33613a48565b9084519061335782612e05565b6042825283820194606036873782511561350c57603086538251906001916001101561350c5790607860218501536041915b81831161349e5750505061345c578461342a604861344e93604497985198899161341b898401987f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008a526133e6815180928d6037890191016139fc565b8401917f206973206d697373696e6720726f6c65200000000000000000000000000000006037840152518093868401906139fc565b01036028810189520187612e21565b5194859362461bcd60e51b85526004850152518092816024860152858501906139fc565b601f01601f19168101030190fd5b60648386519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f811660108110156134f8576f181899199a1a9b1b9c1cb0b131b232b360811b901a6134ce8587613a37565b5360041c9280156134e457600019019190613389565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b3360009081527fffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b60209081526040808320549092919060ff161561356357505050565b61356c33613a48565b83518361357882612e05565b6042825283820194606036873782511561350c57603086538251906001916001101561350c5790607860218501536041915b8183116136075750505061345c578461342a604861344e93604497985198899161341b898401987f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008a526133e6815180928d6037890191016139fc565b909192600f811660108110156134f8576f181899199a1a9b1b9c1cb0b131b232b360811b901a6136378587613a37565b5360041c9280156134e4576000190191906135aa565b3360009081527fb8856e02d8db4f86d5561f04ba0fd00f302915fcd46f5dd1dd5d4c6dc0a5aabb6020908152604080832054909291907fe6ad9a47fbda1dc18de1eb5eeb7d935e5e81b4748f3cfc61e233e64f881820609060ff16156136b35750505050565b6136bc33613a48565b908451906136c982612e05565b6042825283820194606036873782511561350c57603086538251906001916001101561350c5790607860218501536041915b8183116137585750505061345c578461342a604861344e93604497985198899161341b898401987f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008a526133e6815180928d6037890191016139fc565b909192600f811660108110156134f8576f181899199a1a9b1b9c1cb0b131b232b360811b901a6137888587613a37565b5360041c9280156134e4576000190191906136fb565b6000818152602060658152604092838320338452825260ff8484205416156137c65750505050565b6137cf33613a48565b908451906137dc82612e05565b6042825283820194606036873782511561350c57603086538251906001916001101561350c5790607860218501536041915b81831161386b5750505061345c578461342a604861344e93604497985198899161341b898401987f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008a526133e6815180928d6037890191016139fc565b909192600f811660108110156134f8576f181899199a1a9b1b9c1cb0b131b232b360811b901a61389b8587613a37565b5360041c9280156134e45760001901919061380e565b6001600160a01b031660008181527fbdd154b7c599a43e8b8410b62e84571cd69a79e95c9fc5b630a687cb7c97edf96020526040808220546139279392907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060ff161561392a575b8152609760205220613b58565b50565b8082526065602052828220848352602052828220600160ff198254161790553384827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8580a461391a565b9060406139279260009080825260656020526001600160a01b0383832094169384835260205260ff83832054166139b4575b8152609760205220613be2565b808252606560205282822084835260205282822060ff1981541690553384827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a46139a7565b60005b838110613a0f5750506000910152565b81810151838201526020016139ff565b80548210156131035760005260206000200190600090565b908151811015613103570160200190565b604051906060820182811067ffffffffffffffff821117612def57604052602a8252602082016040368237825115613103576030905381516001906001101561310357607860218401536029905b808211613aea575050613aa65790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015613b43576f181899199a1a9b1b9c1cb0b131b232b360811b901a613b198486613a37565b5360041c918015613b2e576000190190613a96565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b91906001830160009082825280602052604082205415600014613bdc5784549468010000000000000000861015613bc85783613bb8613ba1886001604098999a01855584613a1f565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b90600182019060009281845282602052604084205490811515600014613ccb5760001991808301818111613cb757825490848201918211613ca357808203613c6e575b50505080548015613c5a57820191613c3d8383613a1f565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b613c8e613c7e613ba19386613a1f565b90549060031b1c92839286613a1f565b90558652846020526040862055388080613c25565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b87526011600452602487fd5b505050509056fea164736f6c6343000817000a