0 txs
31.3k calls
constructor
constructor()
functions
_ve
viewfunction _ve() view returns (address)
base
viewfunction base() view returns (address)
BASIS
viewfunction BASIS() view returns (uint256)
claimable
viewfunction claimable(address) view returns (uint256)
clFactory
viewfunction clFactory() view returns (address)
clGaugeFactory
viewfunction clGaugeFactory() view returns (address)
emergencyCouncil
viewfunction emergencyCouncil() view returns (address)
factory
viewfunction factory() view returns (address)
feeDistributorFactory
viewfunction feeDistributorFactory() view returns (address)
feeDistributors
viewfunction feeDistributors(address) view returns (address)
gaugefactory
viewfunction gaugefactory() view returns (address)
gauges
viewfunction gauges(address) view returns (address)
gaugeXRatio
viewfunction gaugeXRatio(address gauge) view returns (uint256)
getVotes
viewfunction getVotes(uint256 fromTokenId, uint256 toTokenId) view returns (address[][] tokensVotes, uint256[][] tokensWeights)
governor
viewfunction governor() view returns (address)
isAlive
viewfunction isAlive(address) view returns (bool)
isForbidden
viewfunction isForbidden(address) view returns (bool)
isGauge
viewfunction isGauge(address) view returns (bool)
isWhitelisted
viewfunction isWhitelisted(address) view returns (bool)
lastVoted
viewfunction lastVoted(uint256) view returns (uint256)
length
viewfunction length() view returns (uint256)
minter
viewfunction minter() view returns (address)
nfpManager
viewfunction nfpManager() view returns (address)
poolForGauge
viewfunction poolForGauge(address) view returns (address)
pools
viewfunction pools(uint256) view returns (address)
poolVote
viewfunction poolVote(uint256, uint256) view returns (address)
timelock
viewfunction timelock() view returns (address)
totalWeight
viewfunction totalWeight() view returns (uint256)
usedWeights
viewfunction usedWeights(uint256) view returns (uint256)
votes
viewfunction votes(uint256, address) view returns (uint256)
weights
viewfunction weights(address) view returns (uint256)
whitelistOperator
viewfunction whitelistOperator() view returns (address)
xRatio
viewfunction xRatio() view returns (uint256)
xToken
viewfunction xToken() view returns (address)
addClGaugeReward
nonpayablefunction addClGaugeReward(address gauge, address reward)
claimClGaugeRewards
nonpayablefunction claimClGaugeRewards(address[] _gauges, address[][] _tokens, uint256[][] _nfpTokenIds)
claimFees
nonpayablefunction claimFees(address[] _fees, address[][] _tokens, uint256 _tokenId)
claimIncentives
nonpayablefunction claimIncentives(address[] _incentives, address[][] _tokens, uint256 _tokenId)
claimRewards
nonpayablefunction claimRewards(address[] _gauges, address[][] _tokens)
clawBackUnusedEmissions
nonpayablefunction clawBackUnusedEmissions(address[] _gauges)
createCLGauge
nonpayablefunction createCLGauge(address tokenA, address tokenB, uint24 fee) returns (address)
createGauge
nonpayablefunction createGauge(address _pool) returns (address)
distribute
nonpayablefunction distribute(address _gauge)
distributeAllUnchecked
nonpayablefunction distributeAllUnchecked()
distributeFees
nonpayablefunction distributeFees(address[] _gauges)
distributeGaugeUnchecked
nonpayablefunction distributeGaugeUnchecked(address[] _gauges)
distributeRangeUnchecked
nonpayablefunction distributeRangeUnchecked(uint256 start, uint256 finish)
emitDeposit
nonpayablefunction emitDeposit(address account, uint256 amount)
emitWithdraw
nonpayablefunction emitWithdraw(address account, uint256 amount)
forbid
nonpayablefunction forbid(address _token, bool forbidden)
initialize
nonpayablefunction initialize(address __ve, address _factory, address _gauges, address _feeDistributorFactory, address _minter, address _msig, address[] _tokens, address _clFactory, address _clGaugeFactory, address _nfpManager, address _xToken)
killGauge
nonpayablefunction killGauge(address _gauge)
notifyRewardAmount
nonpayablefunction notifyRewardAmount(uint256 amount)
notifyRewardForGauge
nonpayablefunction notifyRewardForGauge(address _gauge, address _token, uint256 _amount)
notifyRewardsForGauge
nonpayablefunction notifyRewardsForGauge(address _gauge, address[] _tokens, uint256[] _amounts)
poke
nonpayablefunction poke(uint256 _tokenId)
recoverFees
nonpayablefunction recoverFees(address[] fees, address[][] tokens)
removeClGaugeReward
nonpayablefunction removeClGaugeReward(address gauge, address reward)
removeGaugeReward
nonpayablefunction removeGaugeReward(address _gauge, address _reward)
reset
nonpayablefunction reset(uint256 _tokenId)
resetGaugeXRatio
nonpayablefunction resetGaugeXRatio(address[] _gauges)
reviveGauge
nonpayablefunction reviveGauge(address _gauge)
setEmergencyCouncil
nonpayablefunction setEmergencyCouncil(address _council)
setGaugeXRatio
nonpayablefunction setGaugeXRatio(address[] _gauges, uint256[] _xRatios)
setGovernor
nonpayablefunction setGovernor(address _governor)
setWhitelistOperator
nonpayablefunction setWhitelistOperator(address _whitelistOperator)
setXRatio
nonpayablefunction setXRatio(uint256 _xRatio)
stuckEmissionsRecovery
nonpayablefunction stuckEmissionsRecovery(address _gauge)
updateAll
nonpayablefunction updateAll()
updateFor
nonpayablefunction updateFor(address[] _gauges)
updateForRange
nonpayablefunction updateForRange(uint256 start, uint256 end)
updateGauge
nonpayablefunction updateGauge(address _gauge)
vote
nonpayablefunction vote(uint256 tokenId, address[] _poolVote, uint256[] _weights)
whitelist
nonpayablefunction whitelist(address _token)
whitelistGaugeReward
nonpayablefunction whitelistGaugeReward(address _gauge, address _reward)
events
Abstained
event Abstained(uint256 tokenId, uint256 weight)
Deposit
event Deposit(address indexed lp, address indexed gauge, uint256 amount)
DistributeReward
event DistributeReward(address indexed sender, address indexed gauge, uint256 amount)
EmissionsRatio
event EmissionsRatio(address indexed gauge, uint256 oldRatio, uint256 newRatio)
Forbidden
event Forbidden(address indexed forbidder, address indexed token, bool status)
GaugeCreated
event GaugeCreated(address indexed gauge, address creator, address feeDistributor, address indexed pool)
GaugeKilled
event GaugeKilled(address indexed gauge)
GaugeRevived
event GaugeRevived(address indexed gauge)
Initialized
event Initialized(uint8 version)
NotifyReward
event NotifyReward(address indexed sender, address indexed reward, uint256 amount)
Voted
event Voted(address indexed voter, uint256 tokenId, uint256 weight)
Whitelisted
event Whitelisted(address indexed whitelister, address indexed token)
Withdraw
event Withdraw(address indexed lp, address indexed gauge, uint256 amount)
errors
No errors.
creation bytecode
0x60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b6040516150a89081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe60a0604052600436101561001257600080fd5b60003560e01c8062aca65e14613ddf57806306d6a1b214613da45780630754617214613d7d578063088b699e14613d565780630c340a2414613d2f5780630e4bf54314613d045780631703e5f914613cc55780631f7b6d3214613ca757806320b1cb6f14613c0457806321f8601614613b6857806328ba84ca14613aeb578063310bd74b146138fa57806332145f90146138245780633af32abf146137e55780633c6b16ab146136b45780633e95297114613047578063402914f51461300d57806340829d6114612af057806344c4378214612ac957806349e4974a14612a8e5780635001f3b514612a6757806350d976fc146129e3578063528cfa98146129c657806353d786931461299157806363453ae114612959578063666256aa1461292d57806368c3acb31461293257806369a9c1731461292d5780636ecbe38a146129115780637778960e146128ea57806379e93824146128be5780637ac09bf71461266d5780637bebe381146126465780638dd598fb1461261c57806391f36633146122a55780639647d1411461227e57806396c82e5714612260578063986e471d1461224257806398bbc3c71461221b578063992a7933146120a95780639b19251a1461205b5780639b6a9d72146120065780639ca7ed6714611eee5780639e37878c14611eaf5780639f06247b14611dcd578063a4b5820614611bff578063a5f4301e14611371578063a7cac84614611337578063a86a366d146112fd578063aa79979b146112be578063ac4afa381461127d578063b014da2114611213578063b9a09fd5146111d8578063c067354a146110b6578063c42cf53514611072578063c45a01551461104b578063c527ee1f14610f92578063ca33c04814610e51578063ccb24b7514610c92578063d23254b414610c49578063d33219b414610c22578063d560b0d714610bc6578063d88b810b14610b58578063d893edea14610a8b578063de7d72e5146109dd578063e586875f14610999578063e5bc3de114610910578063e7264b651461083a578063e74f616614610813578063e81eb086146107ac578063eab37eec14610551578063eddaa0e91461050d578063efd9bf921461047e578063f0b834e6146103855763f3594be01461035457600080fd5b3461038057602036600319011261038057600435600052601a6020526020604060002054604051908152f35b600080fd5b346103805761039336613ebf565b9092916001600160a01b03918260065416926103b08433146142ae565b6000925b8084106103bd57005b8660005b876103cd878785614223565b9050821015610471576103f1826103fd8989896103f66103f1848c6104039a6141ce565b6141de565b1697614223565b906141ce565b91803b1561038057604051632cf8b47b60e11b81526001600160a01b03938416600482015292881660248401526000908390604490829084905af191821561046557600192610456575b500187906103c1565b61045f9061412a565b8961044d565b6040513d6000823e3d90fd5b50505092600101926103b4565b3461038057604036600319011261038057610497613e7f565b61049f613e95565b6001600160a01b03809281600b541633148015610500575b6104c0906142ae565b1691823b156103805760246000928360405195869485936339ced26d60e21b85521660048401525af18015610465576104f557005b6104fe9061412a565b005b50600654821633146104b7565b3461038057602036600319011261038057610526613e7f565b6001600160a01b03908160065416330361038057166001600160a01b0319600b541617600b55600080f35b346103805760603660031901126103805767ffffffffffffffff60043581811161038057610583903690600401613e4e565b916024358181116103805761059c903690600401613e4e565b939091604435908111610380576105b7903690600401613e4e565b90946001600160a01b03600a5416946000925b8484106105d357005b60005b6105e185838b614223565b90508110156107a1576105f9816103fd87858d614223565b6040516331a9108f60e11b8152903560048201526020816024818c5afa801561046557600090610761575b6001600160a01b03915016331480156106d4575b1561038057806106658a926103fd88866001600160a01b0361065e6103f1848f8d6141ce565b1696614223565b3561067187878b614223565b93803b15610380576106ab9460008094604051978895869485936353c2957d60e11b85526004850152604060248501526044840191614268565b03925af1918215610465576001926106c5575b50016105d6565b6106ce9061412a565b8a6106be565b506106e4816103fd87858d614223565b60405163020604bf60e21b8152903560048201526020816024818c5afa801561046557600090610721575b6001600160a01b039150163314610638565b506020813d602011610759575b8161073b6020938361413e565b81010312610380576107546001600160a01b039161440b565b61070f565b3d915061072e565b506020813d602011610799575b8161077b6020938361413e565b81010312610380576107946001600160a01b039161440b565b610624565b3d915061076e565b5092600101926105ca565b34610380576107ba366140af565b905b8181106107c557005b6107ce816140c5565b906001600160a01b03918291549060031b1c16600052601360205260406000205416906001916010838154036103805761080c84926002835561447e565b55016107bc565b346103805760003660031901126103805760206001600160a01b0360085416604051908152f35b34610380576020806003193601126103805760043567ffffffffffffffff81116103805761086c903690600401613e4e565b916001600160a01b039182600b541633148015610903575b61088d906142ae565b6012549360005b81811061089d57005b806108ae6103f160019385876141ce565b7fbf0e71132a05dec6f7baee9d3684132ceaf80effcca49bd225f7856604f38f7d6040886108db846141f2565b93169283600052602189528160002060ff19815416905581519081528a89820152a201610894565b5060065483163314610884565b34610380576020366003190112610380576004356109446001600160a01b0380600b5416331490811561098b575b506142ae565b6109526127108211156148b2565b60007fbf0e71132a05dec6f7baee9d3684132ceaf80effcca49bd225f7856604f38f7d60406012548151908152846020820152a2601255005b90506006541633148361093e565b34610380576020366003190112610380576109b2613e7f565b600754906001600160a01b038083163303610380576001600160a01b03199116911617600755600080f35b34610380576040366003190112610380576109f6613e7f565b60243590811515809203610380576001600160a01b039081600b541633148015610a7e575b610a24906142ae565b1690816000526022602052604060002080548260ff8216151503610a4457005b60ff83169060ff19161790556040519081527fc226090c79560682a4254f61540d22465b1f23522ee477acb0a520160d3c3e0460203392a3005b5060065482163314610a1b565b346103805760403660031901126103805760006020610aa8613e7f565b6044610ab2613e95565b91610aed6001600160a01b03809281600b541633148015610b4b575b610ad7906142ae565b1691828752602386526040872094168094614fab565b50604051948593849263095ea7b360e01b845260048401528160248401525af1801561046557610b1957005b6020813d602011610b43575b81610b326020938361413e565b81010312610380576104fe906142e0565b3d9150610b25565b5060065482163314610ace565b3461038057600036600319011261038057600d5460005b818110610b7857005b610b81816140c5565b906001600160a01b03918291549060031b1c166000526013602052604060002054169060019160108381540361038057610bbf84926002835561447e565b5501610b6f565b346103805760203660031901126103805760043567ffffffffffffffff811161038057610bf7903690600401613e4e565b60005b818110610c0357005b80610c1c610c176103f160019486886141ce565b614e2e565b01610bfa565b346103805760003660031901126103805760206001600160a01b03600e5416604051908152f35b3461038057604036600319011261038057610c62613e95565b60043560005260176020526001600160a01b03604060002091166000526020526020604060002054604051908152f35b3461038057606036600319011261038057610cab613e7f565b67ffffffffffffffff60243581811161038057610ccc903690600401613e4e565b9290916044359081116103805790610ce984923690600401613e4e565b6001600160a01b039283169491929060005b858110610d0457005b866000526000602060238152610d46610d418987610d2a6103f18860408920948d6141ce565b169060019160005201602052604060002054151590565b614866565b80610d9486610d596103f1878d8c6141ce565b16610d6586888c6141ce565b6040516323b872dd60e01b81523360048201523060248201529035604482015294859283919082906064820190565b03925af1801561046557610e1d575b5050610db36103f18288876141ce565b90610dbf8184886141ce565b3591883b156103805760405163b66503cf60e01b81526001600160a01b039190911660048201526024810192909252600082604481838c5af191821561046557600192610e0e575b5001610cfb565b610e179061412a565b88610e07565b81813d8311610e4a575b610e31818361413e565b8101031261038057610e42906142e0565b508780610da3565b503d610e27565b346103805760208060031936011261038057610e6b613e7f565b9060006001600160a01b039283600b541633148015610f85575b610e8e906142ae565b82846005541660046040518095819363541b13ef60e11b83525af180156104655784928491610f56575b5050610ec381614e2e565b16600052601d815260ff6040600020541615610edb57005b601f815260406000209160008354935582610ef257005b60025460065460405163a9059cbb60e01b81529083166001600160a01b0316600482015260248101949094528291849116816000816044810103925af1801561046557610f3b57005b81813d8311610f4f575b610b32818361413e565b503d610f45565b90809293503d8311610f7e575b610f6d818361413e565b810103126103805782908285610eb8565b503d610f63565b5060065484163314610e85565b346103805760203660031901126103805760043567ffffffffffffffff8111610380573660238201121561038057610fd4903690602481600401359101614178565b60005b81518110156104fe57600060406001600160a01b03610ff684866143f7565b5116600482518094819363d294f09360e01b83525af1801561046557611020575b50600101610fd7565b604090813d8311611044575b611036818361413e565b810103126103805782611017565b503d61102c565b346103805760003660031901126103805760206001600160a01b0360015416604051908152f35b346103805760203660031901126103805761108b613e7f565b600654906001600160a01b038083163303610380576001600160a01b03199116911617600655600080f35b34610380576110c436613ebf565b6001600160a01b03939192939283600b5416331480156111cb575b6110e8906142ae565b8185036111865760005b8581106110fb57005b8061110960019285856141ce565b356111186127108211156148b2565b7fbf0e71132a05dec6f7baee9d3684132ceaf80effcca49bd225f7856604f38f7d60406111496103f1858c8b6141ce565b89611153826141f2565b91169384600052602080805281846000205560218152836000208860ff198254161790558351928352820152a2016110f2565b60405162461bcd60e51b815260206004820152600f60248201527f6c656e677468206d69736d6174636800000000000000000000000000000000006044820152606490fd5b50600654841633146110df565b346103805760203660031901126103805760206001600160a01b03806111fc613e7f565b166000526013825260406000205416604051908152f35b346103805760403660031901126103805761122c613e7f565b33600052601b60205260ff60406000205416156103805760405160243581527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb60206001600160a01b0333941692a3005b3461038057602036600319011261038057600435600d54811015610380576001600160a01b036112ae6020926140c5565b9190546040519260031b1c168152f35b34610380576020366003190112610380576001600160a01b036112df613e7f565b16600052601b602052602060ff604060002054166040519015158152f35b346103805761130b366140af565b9060005260186020526040600020908154811015610380576112ae6001600160a01b0391602093614112565b34610380576020366003190112610380576001600160a01b03611358613e7f565b1660005260166020526020604060002054604051908152f35b346103805760203660031901126103805761138a613e7f565b6001600160a01b03811660005260136020526001600160a01b0360406000205416611bba57602460206001600160a01b03600154166040519283809263e5e31b1360e01b82526001600160a01b03871660048301525afa90811561046557600091611b80575b506000918282611b00575b6001600160a01b036006541633036119e9575b604051634d78e9ad60e11b8152906020826004816001600160a01b0387165afa8015610465576000906119af575b6000925060206001600160a01b0360248160045416936040519687938492630317318f60e11b845216958660048401525af192831561046557600093611973575b50803b15610380576000809160246040518094819363189acdbd60e31b83526001600160a01b03891660048401525af1801561046557611964575b506001600160a01b0383163b1561038057604051635b8d276760e11b81526001600482015293600085602481836001600160a01b0389165af190811561046557600095602092611955575b5060646001600160a01b03600354169160405197889384926316616cad60e31b84526001600160a01b038a1660048501526001600160a01b0389166024850152151560448401525af193841561046557600094611919575b50600060206001600160a01b036002541660446040518094819363095ea7b360e01b83526001600160a01b038b166004840152811960248401525af18015610465576118e0575b50600060206001600160a01b03600c541660446040518094819363095ea7b360e01b83526001600160a01b038b166004840152811960248401525af18015610465576118a7575b506001600160a01b038416600052601560205260406000206001600160a01b0319906001600160a01b038416828254161790556001600160a01b038416600052601360205260406000206001600160a01b038616828254161790556001600160a01b03851660005260146020526040600020906001600160a01b03851690825416179055601b602052604060002060ff1990600182825416179055601d60205260016040600020918254161790556116a084614e2e565b6116a98361442e565b6001600160a01b03841660005260236020526116d560406000206001600160a01b036002541690614f38565b506001600160a01b038416600052602360205261170260406000206001600160a01b03600c541690614f38565b506001600160a01b038416600052602360205261172e6001600160a01b03604060002092168092614f38565b611833575b506001600160a01b038316600052602360205261175f6001600160a01b03604060002095168095614f38565b6117be575b604080513381526001600160a01b03928316602080830191909152955092821692918416917f48d3c521fd0d5541640f58c6d6381eed7cb2e8c9df421ae165a4f4c2d221ee0d9190a36001600160a01b0360405191168152f35b602060009460446040518097819363095ea7b360e01b83526001600160a01b0389166004840152811960248401525af180156104655715611764576020843d60201161182b575b816118126020938361413e565b81010312610380576118256020946142e0565b50611764565b3d9150611805565b602060009160446040518094819363095ea7b360e01b83526001600160a01b038a166004840152811960248401525af180156104655715611733576020813d60201161189f575b816118876020938361413e565b8101031261038057611898906142e0565b5084611733565b3d915061187a565b6020813d6020116118d8575b816118c06020938361413e565b81010312610380576118d1906142e0565b50856115e9565b3d91506118b3565b6020813d602011611911575b816118f96020938361413e565b810103126103805761190a906142e0565b50856115a2565b3d91506118ec565b9093506020813d60201161194d575b816119356020938361413e565b81010312610380576119469061440b565b928561155b565b3d9150611928565b61195e9061412a565b87611503565b61196d9061412a565b856114b8565b9092506020813d6020116119a7575b8161198f6020938361413e565b81010312610380576119a09061440b565b918661147d565b3d9150611982565b506020823d6020116119e1575b816119c96020938361413e565b81010312610380576119dc60009261440b565b61143c565b3d91506119bc565b8215611abb576001600160a01b03811680600052602260205260ff604060002054161580611a9e575b15611a5957600052601c60205260ff6040600020541680611a3c575b611a3790614866565b61140e565b506001600160a01b0384166000908152604090205460ff16611a2e565b60405162461bcd60e51b815260206004820152600960248201527f466f7262696464656e00000000000000000000000000000000000000000000006044820152606490fd5b506001600160a01b03851660005260ff6040600020541615611a12565b60405162461bcd60e51b815260206004820152600660248201527f215f706f6f6c00000000000000000000000000000000000000000000000000006044820152606490fd5b5060408051634eb1c24560e11b81529350836004816001600160a01b0385165afa801561046557600093600091611b39575b50926113fb565b9350506040833d604011611b78575b81611b556040938361413e565b8101031261038057611b726020611b6b8561440b565b940161440b565b84611b32565b3d9150611b48565b90506020813d602011611bb2575b81611b9b6020938361413e565b8101031261038057611bac906142e0565b826113f0565b3d9150611b8e565b60405162461bcd60e51b815260206004820152600660248201527f65786973747300000000000000000000000000000000000000000000000000006044820152606490fd5b34610380576020806003193601126103805760043567ffffffffffffffff811161038057611c31903690600401613e4e565b90916001600160a01b0380600b541633148015611dc0575b611c52906142ae565b600082826005541660046040518094819363541b13ef60e11b83525af1908115610465578391611d97575b505060005b838110611c8b57005b611c9c610c176103f18387896141ce565b81611cab6103f18387896141ce565b16600052601d835260ff6040600020541615611cca575b600101611c82565b81611cd96103f18387896141ce565b16600052601f908184526040600020549183611cf96103f184898b6141ce565b166000528452600060408120558382611d15575b509050611cc2565b60025460065460405163a9059cbb60e01b81529086166001600160a01b03166004820152602481019490945283908516816000816044810103925af1801561046557611d62575b83611d0d565b8382813d8311611d90575b611d77818361413e565b8101031261038057611d8a6001926142e0565b50611d5c565b503d611d6d565b813d8311611db9575b611daa818361413e565b81010312610380578185611c7d565b503d611da0565b5060065481163314611c49565b3461038057602036600319011261038057611de6613e7f565b6001600160a01b039081600b541633148015611ea2575b611e06906142ae565b1680600052601d60205260ff60406000205416611e5d5780600052601d6020526040600020600160ff198254161790557fed18e9faa3dccfd8aa45f69c4de40546b2ca9cccc4538a2323531656516db1aa600080a2005b60405162461bcd60e51b815260206004820152600560248201527f414c4956450000000000000000000000000000000000000000000000000000006044820152606490fd5b5060065482163314611dfd565b34610380576020366003190112610380576001600160a01b03611ed0613e7f565b166000526022602052602060ff604060002054166040519015158152f35b3461038057606036600319011261038057611f07613e7f565b611f0f613e95565b6044356001600160a01b0380931692836000526023602052611f4c610d416040600020928516809360019160005201602052604060002054151590565b6040516323b872dd60e01b81523360048201523060248201526044810183905290602090829060649082906000905af1801561046557611fcd575b50823b156103805760405163b66503cf60e01b81526001600160a01b039290921660048301526024820152906000908290604490829084905af18015610465576104f557005b6020813d602011611ffe575b81611fe66020938361413e565b8101031261038057611ff7906142e0565b5083611f87565b3d9150611fd9565b3461038057612014366140af565b905b81811061201f57005b8061205561202e6001936140c5565b906001600160a01b03918291549060031b1c16600052601360205260406000205416614e2e565b01612016565b34610380576020366003190112610380576104fe612077613e7f565b6120966001600160a01b0380600b5416331490811561209b57506142ae565b614ee6565b90506006541633148461093e565b3461038057602080600319360112610380576120c3613e7f565b906001600160a01b03809281600b54163314801561220e575b6120e5906142ae565b169182600052601d825260ff60406000205416156121e35782600052601d8252604060002060ff198154169055601482526040600020541690604051908101636373ea6960e01b815260048252604082019082821067ffffffffffffffff8311176121cd5760009283926040525190845afa61215f614826565b5061218d575b507f04a5d3f5d80d22d9345acc80618f4a4e7e663cf9e1aed23b57d975acec002ba7600080a2005b803b156103805760008091602460405180948193635b8d276760e11b83528160048401525af180156104655715612165576121c79061412a565b81612165565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b815260048082018490526024820152631111505160e21b6044820152606490fd5b50600654821633146120dc565b346103805760003660031901126103805760206001600160a01b03600a5416604051908152f35b34610380576000366003190112610380576020601254604051908152f35b34610380576000366003190112610380576020600f54604051908152f35b346103805760003660031901126103805760206001600160a01b0360045416604051908152f35b34610380576122bf6122b6366140af565b90809291614471565b60019182820180921161260657916122e76122d983614160565b60405160805260805161413e565b81608051526122f582614160565b602080608051019061230c601f1980940183614809565b61231585614160565b94612323604051968761413e565b80865261232f81614160565b9661233f85848901990189614809565b60005b82811061246d5750505060405194604086016040875260805151809152606087019060608160051b89010194916000905b8282106124045750505050858303828701525191828152818101828460051b83010197946000925b8584106123a857888a0389f35b90919293949596898383839c030185528689518180825194858152019101926000905b858183106123ed5750505081925099019401940192959493919098969861239b565b9193809193865181520194019201899293916123cb565b90919296949597809a98605f198b82030183528789518180825194858152019101926000905b8581831061244d5750505081925099019201920190929199979996959496612373565b91938091936001600160a01b03875116815201940192018a92939161242a565b908682612481829b999484999798996142ed565b806000526018808952604060002054886124b361249d83614160565b926124ab604051948561413e565b808452614160565b01368b8301376124c5846080516143f7565b526124d2836080516143f7565b5081600052808952604060002060405190818b82549182815201916000528b600020906000905b8d8183106125e657505050508161251191038261413e565b61251d846080516143f7565b5261252a836080516143f7565b5081600052885261253f6040600020546143c5565b612549838d6143f7565b52612554828c6143f7565b506000835b612570575b50500190915097959794939294612342565b61258083608095939495516143f7565b51518110156125dd5781908360005260178a5260406000206001600160a01b036125b6836125b0896080516143f7565b516143f7565b51166000528a528c6125d2826125b088604060002054946143f7565b520181939291612559565b8193925061255e565b83546001600160a01b031685528b999401939283019291909101906124f9565b634e487b7160e01b600052601160045260246000fd5b346103805760003660031901126103805760206001600160a01b0360005460101c16604051908152f35b346103805760003660031901126103805760206001600160a01b0360095416604051908152f35b346103805760603660031901126103805767ffffffffffffffff600435602435828111610380576126a2903690600401613e4e565b9092604435908111610380576126bc903690600401613e4e565b9290916001600160a01b0394856005541691604051968793630a441f7b60e01b855284600460209a8b935afa9384156104655760009461288f575b5062093a8093848101809111612606576127129042106142fa565b60005460405163430c208160e01b81523360048201526024810187905260109190911c91909116908881604481855afa9081156104655760009161285a575b5080156127e5575b6127639150614346565b85810361038057824204838102938185041490151715612606576127969284600052601a88526040600020553691614178565b916127a084614160565b936127ae604051958661413e565b8085528585019060051b82019136831161038057905b8282106127d6576104fe868686614b05565b813581529086019086016127c4565b50604051633d21fc9b60e21b815233600482015260248101869052908890829060449082905afa801561046557600090612824575b6127639150612759565b508781813d8311612853575b61283a818361413e565b810103126103805761284e612763916142e0565b61281a565b503d612830565b90508881813d8311612888575b612871818361413e565b8101031261038057612882906142e0565b89612751565b503d612867565b9093508781813d83116128b7575b6128a7818361413e565b81010312610380575192886126f7565b503d61289d565b346103805760203660031901126103805760043560005260196020526020604060002054604051908152f35b346103805760003660031901126103805760206001600160a01b0360075416604051908152f35b34610380576020366003190112610380576104fe610c17613e7f565b613f0a565b346103805760003660031901126103805760206001600160a01b0360035416604051908152f35b3461038057602036600319011261038057612972613e7f565b6001601054036103805761298a90600260105561447e565b6001601055005b3461038057600036600319011261038057600d5460005b8181106129b157005b806129c061202e6001936140c5565b016129a8565b346103805760003660031901126103805760206040516127108152f35b34610380576040366003190112610380576129fc613e7f565b612a04613e95565b6001600160a01b03809281600b541633148015612a5a575b612a25906142ae565b1691823b15610380576024600092836040519586948593639dfb338160e01b85521660048401525af18015610465576104f557005b5060065482163314612a1c565b346103805760003660031901126103805760206001600160a01b0360025416604051908152f35b346103805760203660031901126103805760206001600160a01b0380612ab2613e7f565b166000526015825260406000205416604051908152f35b346103805760003660031901126103805760206001600160a01b03600b5416604051908152f35b346103805761016036600319011261038057612b0a613e7f565b612b12613e95565b6044356001600160a01b0381168103610380576064356001600160a01b0381168103610380576084356001600160a01b03811681036103805760a435906001600160a01b03821682036103805760c43567ffffffffffffffff811161038057612b7f903690600401613e4e565b909160e435936001600160a01b03851685036103805761010435956001600160a01b03871687036103805761012435976001600160a01b03891689036103805761014435996001600160a01b038b168b03610380576000549060ff8260081c16159c8d809e613000575b8015612fe9575b15612f7e576001600160a01b036020928f948295600160ff19831617600055612f6c575b506000547fffffffffffffffffffff0000000000000000000000000000000000000000ffff75ffffffffffffffffffffffffffffffffffffffff00008560101b16911617600055166001600160a01b0319600154161760015560046040518094819363210ca05d60e01b8352165afa90811561046557600091612f15575b50926001600160a01b0380959381809481602098166001600160a01b03196002541617600255166001600160a01b03196003541617600355166001600160a01b031960045416176004558183166001600160a01b031960055416176005558181166001600160a01b03196006541617600655166001600160a01b031960075416176007556004604051809481936334cc866d60e21b8352165afa801561046557600090612ed5575b6001600160a01b039150166001600160a01b0319600e541617600e5560005b818110612ebb575050506001600160a01b039291838092166001600160a01b03196008541617600855166001600160a01b03196009541617600955166001600160a01b0319600a541617600a556001600160a01b0381166001600160a01b0319600c541617600c5560007fbf0e71132a05dec6f7baee9d3684132ceaf80effcca49bd225f7856604f38f7d6040612710806012558151908482526020820152a260206001600160a01b0360448160025416936000604051958694859363095ea7b360e01b8552166004840152811960248401525af1801561046557612e82575b5060016010556001601155612e4a57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6020813d602011612eb3575b81612e9b6020938361413e565b8101031261038057612eac906142e0565b5081612e39565b3d9150612e8e565b80612ecf6120966103f160019486886141ce565b01612d59565b506020813d602011612f0d575b81612eef6020938361413e565b8101031261038057612f086001600160a01b039161440b565b612d3a565b3d9150612ee2565b9194929390506020823d602011612f64575b81612f346020938361413e565b81010312610380576001600160a01b0360209481809781612f55819761440b565b95985050945050939550612c92565b3d9150612f27565b61ffff19166101011760005538612c14565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608490fd5b50303b158015612bf05750600160ff841614612bf0565b50600160ff841610612be9565b34610380576020366003190112610380576001600160a01b0361302e613e7f565b16600052601f6020526020604060002054604051908152f35b3461038057606036600319011261038057613060613e7f565b613068613e95565b604490813562ffffff8116809103610380576001600160a01b038060085416948160405191630b4c774160e11b8352169384600483015282602491169384828401528683015260209660649488848781855afa9384156104655760009461367d575b5084841696871561363b57604051633850c7bd60e01b815260e0816004818c5afa908115610465576000916135b2575b5015613570578760005260138a52856040600020541661352e579089929186600654163303613450575b50506040516331056e5760e21b81529550859060049082905afa93841561046557600094613419575b5086838281600454169660006040519889948593630317318f60e11b85521660048401525af1938415610465576000946133e0575b5060009087846009541682604051809581936352fa180f60e11b83528b60048401525af1918215610465576000926133a9575b5083600254166040519063095ea7b360e01b98898352868516998a60048501528b8483816000801997888b8401525af1928315610465578c948c9461336d575b5060009089600c5416906040519788968795865260048601528401525af180156104655761332f575b5061329e906132a393876000526015895260406000206001600160a01b031991871682825416179055866000526013895260406000208882825416179055876000526014895286604060002091825416179055601b8852604060002060ff1990600182825416179055601d89526001604060002091825416179055614e2e565b61442e565b813b1561038057604051637b7d549d60e01b815260008160048183875af180156104655784927f48d3c521fd0d5541640f58c6d6381eed7cb2e8c9df421ae165a4f4c2d221ee0d9261331592613320575b50604080513381526001600160a01b03909216602083015290918291820190565b0390a3604051908152f35b6133299061412a565b876132f4565b908782813d8311613366575b613345818361413e565b81010312610380576132a39361335d61329e936142e0565b5093509061321e565b503d61333b565b8581969295503d83116133a2575b613385818361413e565b810103126103805760008b9361339b8e966142e0565b50906131f5565b503d61337b565b9091508781813d83116133d9575b6133c1818361413e565b81010312610380576133d29061440b565b90886131b5565b503d6133b7565b9093508681813d8311613412575b6133f8818361413e565b810103126103805761340b60009161440b565b9390613182565b503d6133ee565b9093508681813d8311613449575b613431818361413e565b81010312610380576134429061440b565b928761314d565b503d613427565b80919294959697935060005260228a5260ff60406000205416158061351a575b156134d857600052601c895260ff6040600020541690816134c4575b501561349e5784939291818992613124565b60405162461bcd60e51b815260048101899052600381850152620855d360ea1b81890152fd5b905060005260ff604060002054168961348c565b60405162461bcd60e51b8152600481018b90526009818701527f464f5242494444454e0000000000000000000000000000000000000000000000818b01528390fd5b508160005260ff6040600020541615613470565b60405162461bcd60e51b8152600481018b90526006818601527f4558495354530000000000000000000000000000000000000000000000000000818b01528790fd5b60405162461bcd60e51b8152600481018b90526013818601527f556e696e697469616c697a656420706f6f6c2100000000000000000000000000818b01528790fd5b905060e0813d60e011613633575b816135cd60e0938361413e565b8101031261038057805187811603610380578a8101518060020b03610380576135f86040820161441f565b506136056060820161441f565b506136126080820161441f565b5060a081015160ff8116036103805760c061362d91016142e0565b8b6130fa565b3d91506135c0565b60405162461bcd60e51b8152600481018b90526007818601527f4e4f20504f4f4c00000000000000000000000000000000000000000000000000818b01528790fd5b9093508881813d83116136ad575b613695818361413e565b81010312610380576136a69061440b565b92896130ca565b503d61368b565b3461038057602036600319011261038057600435600f546136d157005b6001600160a01b038060025416803b15610380576040516323b872dd60e01b60208201908152336024830152306044830152606480830186905282526000928392909190839061372260848261413e565b51925af161372e614826565b816137ae575b501561038057670de0b6b3a764000080830290838204148315171561260657600f5461375f91614392565b80613799575b5060025416906040519081527ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf5082660203392a3005b6137a5906011546142ed565b60115582613765565b80518015925082156137c3575b505083613734565b81925090602091810103126103805760206137de91016142e0565b83806137bb565b34610380576020366003190112610380576001600160a01b03613806613e7f565b16600052601c602052602060ff604060002054166040519015158152f35b3461038057602080600319360112610380576004359081600052601881526040600020604051808284829454938481520190600052846000209260005b868282106138db575050506138789250038261413e565b805192613884846143c5565b9260005b85811061389b5750506104fe9350614b05565b600190836000526017835260406000206001600160a01b036138bd83886143f7565b511660005283526040600020546138d482886143f7565b5201613888565b85546001600160a01b0316845260019586019587955093019201613861565b3461038057602080600319360112610380576004359060046001600160a01b039180836005541660405193848092630a441f7b60e01b82525afa91821561046557600092613abc575b5062093a80918281018091116126065761395e9042106142fa565b60005460405163430c208160e01b81523360048201526024810186905260109190911c8416908281604481855afa90811561046557600091613a87575b508015613a12575b6139ad9150614346565b81420482810292818404149015171561260657601a9084600052526040600020556139d7826148fe565b60005460101c1690813b156103805760009160248392604051948593849263c1f0fb9f60e01b845260048401525af18015610465576104f557005b50604051633d21fc9b60e21b815233600482015260248101869052908290829060449082905afa801561046557600090613a51575b6139ad91506139a3565b508181813d8311613a80575b613a67818361413e565b8101031261038057613a7b6139ad916142e0565b613a47565b503d613a5d565b90508281813d8311613ab5575b613a9e818361413e565b8101031261038057613aaf906142e0565b8661399b565b503d613a94565b9080925081813d8311613ae4575b613ad4818361413e565b8101031261038057519084613943565b503d613aca565b3461038057604036600319011261038057613b04613e7f565b33600052601b60205260ff604060002054161561038057601d60205260ff60406000205416156103805760405160243581527f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6260206001600160a01b0333941692a3005b346103805760403660031901126103805760006020613b85613e7f565b6044613b8f613e95565b91613bca6001600160a01b03809281600b541633148015613bf7575b613bb4906142ae565b1691828752602386526040872094168094614f38565b50604051948593849263095ea7b360e01b84526004840152811960248401525af1801561046557610b1957005b5060065482163314613bab565b3461038057613c1236613ebf565b91909260005b828110613c2157005b6001600160a01b03613c376103f18386866141ce565b1690613c44818688614223565b90833b1561038057613c7e93600092836040518097819582946331279d3d60e01b8452336004850152604060248501526044840191614268565b03925af191821561046557600192613c98575b5001613c18565b613ca19061412a565b86613c91565b34610380576000366003190112610380576020600d54604051908152f35b34610380576020366003190112610380576001600160a01b03613ce6613e7f565b16600052601d602052602060ff604060002054166040519015158152f35b34610380576020366003190112610380576020613d27613d22613e7f565b6141f2565b604051908152f35b346103805760003660031901126103805760206001600160a01b0360065416604051908152f35b346103805760003660031901126103805760206001600160a01b03600c5416604051908152f35b346103805760003660031901126103805760206001600160a01b0360055416604051908152f35b346103805760203660031901126103805760206001600160a01b0380613dc8613e7f565b166000526014825260406000205416604051908152f35b346103805760203660031901126103805760043567ffffffffffffffff811161038057613e10903690600401613e4e565b9060005b828110613e1d57005b613e2b6103f18285856141ce565b90600160108181540361038057613e476001946002835561447e565b5501613e14565b9181601f840112156103805782359167ffffffffffffffff8311610380576020808501948460051b01011161038057565b600435906001600160a01b038216820361038057565b602435906001600160a01b038216820361038057565b35906001600160a01b038216820361038057565b60406003198201126103805767ffffffffffffffff916004358381116103805782613eec91600401613e4e565b9390939260243591821161038057613f0691600401613e4e565b9091565b346103805760603660031901126103805767ffffffffffffffff6004803582811161038057613f3d903690600401613e4e565b909260249060243590811161038057613f5a903690600401613e4e565b9290916044926044356001600160a01b0396600098899589875460101c16986040996020604051809263430c208160e01b82528180613fb38b3360048401602090939291936001600160a01b0360408201951681520152565b03915afa9081156140a4578991614066575b501561406257875b828110613fd8578880f35b8b613fe76103f18386886141ce565b16613ff382848a614223565b90823b1561405e578d92898d8f61402a8f9583978e938a519a8b998a9889976353c2957d60e11b8952880152860152840191614268565b03925af18015614054579060019291614045575b5001613fcd565b61404e9061412a565b3861403e565b8c513d8c823e3d90fd5b8b80fd5b8780fd5b90506020813d60201161409c575b816140816020938361413e565b8101031261409857614092906142e0565b38613fc5565b8880fd5b3d9150614074565b6040513d8b823e3d90fd5b6040906003190112610380576004359060243590565b600d548110156140fc57600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50190600090565b634e487b7160e01b600052603260045260246000fd5b80548210156140fc5760005260206000200190600090565b67ffffffffffffffff81116121cd57604052565b90601f8019910116810190811067ffffffffffffffff8211176121cd57604052565b67ffffffffffffffff81116121cd5760051b60200190565b929161418382614160565b91614191604051938461413e565b829481845260208094019160051b810192831161038057905b8282106141b75750505050565b8380916141c384613eab565b8152019101906141aa565b91908110156140fc5760051b0190565b356001600160a01b03811681036103805790565b6001600160a01b0316600052602160205260ff604060002054166142165760125490565b6020805260406000205490565b91908110156140fc5760051b81013590601e198136030182121561038057019081359167ffffffffffffffff8311610380576020018260051b36038113610380579190565b91908082526020809201929160005b828110614285575050505090565b9091929382806001926001600160a01b0361429f89613eab565b16815201950193929101614277565b156142b557565b606460405162461bcd60e51b8152602060048201526004602482015263082aaa8960e31b6044820152fd5b5190811515820361038057565b9190820180921161260657565b1561430157565b60405162461bcd60e51b815260206004820152600660248201527f2145504f434800000000000000000000000000000000000000000000000000006044820152606490fd5b1561434d57565b60405162461bcd60e51b815260206004820152600960248201527f21617070726f76656400000000000000000000000000000000000000000000006044820152606490fd5b811561439c570490565b634e487b7160e01b600052601260045260246000fd5b8181029291811591840414171561260657565b906143cf82614160565b6143dc604051918261413e565b82815280926143ed601f1991614160565b0190602036910137565b80518210156140fc5760209160051b010190565b51906001600160a01b038216820361038057565b519061ffff8216820361038057565b600d54680100000000000000008110156121cd578060016144529201600d556140c5565b6001600160a01b039291928084549260031b9316831b921b1916179055565b9190820391821161260657565b6005546000906001600160a01b03806040938451809463541b13ef60e11b8252602095869181856004988993165af18015614631579085916147e0575b50506144c686614e2e565b81861695868252601d855260ff86832054166144e6575b50505050505050565b601f8552858220549384156147d65761451a61271061451261450c87600c5416956141f2565b886143b2565b048096614471565b936001908515158061474b575b87151592836146c8575b61453f575b505050506144dd565b8a8652601f8952858a81205561465d575b5061459d575b5050507f4fa9693cae526341d334e2862ca2413b2e503f1266255f9e0869fb36e6d89b179291614585916142ed565b92519283523392a33880808080808080808080614536565b813b1561463b5786516304ba099d60e21b8152818101869052838160248183875af180156146535790849161463f575b5050873b1561463b57865163b66503cf60e01b81526001600160a01b03909216908201908152602081018590528290829081906040010381838b5af180156146315761461a575b80614556565b614624829161412a565b61462e5780614614565b80fd5b86513d84823e3d90fd5b8280fd5b6146489061412a565b61463b5782386145cd565b88513d86823e3d90fd5b60025416893b156146c457885163b66503cf60e01b81526001600160a01b0391909116838201908152602081018790528590829081900360400181838e5af180156146ba5715614550576146b39094919461412a565b9238614550565b89513d87823e3d90fd5b8480fd5b62093a8089041580156146e2575b15614531575085614531565b5060248a8d8d5192838092634cde602960e11b82528b8b8301525afa908115614741578891614714575b5089106146d6565b90508a81813d831161473a575b61472b818361413e565b8101031261406257513861470c565b503d614721565b8c513d8a823e3d90fd5b62093a808704158015614766575b1561452757859250614527565b506002548a51634cde602960e11b81529083168582015289816024818f5afa9081156147cc57879161479b575b508710614759565b90508981813d83116147c5575b6147b2818361413e565b810103126147c1575138614793565b8680fd5b503d6147a8565b8b513d89823e3d90fd5b5050505050505050565b813d8311614802575b6147f3818361413e565b8101031261462e5783386144bb565b503d6147e9565b60005b82811061481857505050565b60608282015260200161480c565b3d15614861573d9067ffffffffffffffff82116121cd5760405191614855601f8201601f19166020018461413e565b82523d6000602084013e565b606090565b1561486d57565b60405162461bcd60e51b815260206004820152600c60248201527f2177686974656c697374656400000000000000000000000000000000000000006044820152606490fd5b156148b957565b60405162461bcd60e51b815260206004820152600560248201527f3e313030250000000000000000000000000000000000000000000000000000006044820152606490fd5b60008181526020916018835260409081832080548491855b8281106149745750505061492c90600f54614471565b600f5582526019835281818120556018835281209182549282815583614953575b50505050565b82528120918201915b828110614969578061494d565b81815560010161495c565b87856149808385614112565b91906001600160a01b03928391549060031b1c16818b528960178086528c83838220915286528c828120549687151592836149c7575b505050505050505050600101614916565b918491899d9994936013988983526149e38b8686205416614e2e565b888452601683528484206149f8888254614471565b905583528152828220908783525220614a12838254614471565b905515614acb5750508a528a5280888a205416895260158a528789205416803b156140985788809160448a518094819363278afc8b60e21b83528b60048401528c60248401525af18015614ac157614a9787600195947fa9f3ca5f8a9e1580edb2741e0ba560084ec72e0067ba3423f9e9327a176882db948c94614ab2575b506142ed565b965b8151908982528c820152a19038868189818c8e826149b6565b614abb9061412a565b38614a91565b88513d8b823e3d90fd5b9092507fa9f3ca5f8a9e1580edb2741e0ba560084ec72e0067ba3423f9e9327a176882db9350614aff915060019594614471565b96614a99565b9091614b10826148fe565b82516001600160a01b0360206000546024604051809481936339f890b560e21b835289600484015260101c165afa90811561046557600091614dfc575b5060009260009360009660005b858110614ddd575060005b858110614bf45750505050505082614b97575b614b8490600f546142ed565b600f556000526019602052604060002055565b6001600160a01b0360005460101c1690813b15610380576000809260246040518095819363fd4a77f160e01b83528860048401525af191821561046557614b8492614be5575b509050614b78565b614bee9061412a565b38614bdd565b6001600160a01b03614c0682846143f7565b51168060005260136020526001600160a01b036040600020541680600052601b60205260ff80604060002054169081614dc9575b50614c4a575b5050600101614b65565b614c6d85614c6889614c62879d9f978b9e979e6143f7565b516143b2565b614392565b988a600052601760205260406000208160005260205260406000205461038057891561038057614c9c82614e2e565b8a600052601860205260406000208054680100000000000000008110156121cd57614ccc91600182018155614112565b81549060031b906001600160a01b0384831b921b19161790558060005260166020526040600020614cfe8b82546142ed565b90558a60005260176020526040600020906000526020526040600020614d258a82546142ed565b905560005260156020526001600160a01b036040600020541691823b156103805760008a60448b83604051978894859363f320772360e01b8552600485015260248401525af190811561046557614d898a8092600196614d8f95614ab257506142ed565b9b6142ed565b97604051908a825260208201527fea66f58e474bc09f580000e81f31b334d171db387d0c6098ba47bd897741679b60403392a29038614c40565b9050601d6020526040600020541638614c3a565b91614df5600191614dee85876143f7565b51906142ed565b9201614b5a565b90506020813d602011614e26575b81614e176020938361413e565b81010312610380575138614b4d565b3d9150614e0a565b6001600160a01b03809116906000908282526014602052604082205416601e6020526040822090815491821515600014614edb575082526016602052614e89604083205491601154858552601e602052806040862055614471565b9182151580614ed2575b614e9d5750505050565b670de0b6b3a7640000614eb5614ec7946040946143b2565b04938152601f602052209182546142ed565b90553880808061494d565b50811515614e93565b601154905550505050565b6001600160a01b03166000818152601c60205260408120805460ff811661463b5760ff1916600117905533907f6661a7108aecd07864384529117d96c319c1163e3010c01390f6b704726e07de9080a3565b6000828152600182016020526040902054614fa457805490680100000000000000008210156121cd5782614f8d614f76846001809601855584614112565b819391549060031b91821b91600019901b19161790565b905580549260005201602052604060002055600190565b5050600090565b9060018201906000928184528260205260408420549081151560001461509457600019918083018181116150805782549084820191821161506c57808203615037575b50505080548015615023578201916150068383614112565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b615057615047614f769386614112565b90549060031b1c92839286614112565b90558652846020526040862055388080614fee565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b87526011600452602487fd5b505050509056fea164736f6c6343000817000a