0 txs
0 calls
constructor
constructor(address _vrswToken, address _minter, address _tokenomicsParams, address _vPairFactory)
functions
checkLock
viewfunction checkLock(address who) view returns (uint256[] unlockedPositions)
emissionStartTs
viewfunction emissionStartTs() view returns (uint256)
isPoolValid
viewfunction isPoolValid(address pool) view returns (bool)
LOCK_DURATION_LIMIT
viewfunction LOCK_DURATION_LIMIT() view returns (uint256)
lpStakeIndex
viewfunction lpStakeIndex(address, address) view returns (uint256)
lpStakes
viewfunction lpStakes(address, uint256) view returns (address lpToken, int256 amount)
minter
viewfunction minter() view returns (address)
mu
viewfunction mu(address, address) view returns (int256)
rewards
viewfunction rewards(address, address, address) view returns (int256)
rewardsCoefficient
viewfunction rewardsCoefficient(address, address, address) view returns (int256)
rewardsCoefficientGlobal
viewfunction rewardsCoefficientGlobal(address, address) view returns (int256)
STAKE_POSITIONS_LIMIT
viewfunction STAKE_POSITIONS_LIMIT() view returns (uint256)
tokenomicsParams
viewfunction tokenomicsParams() view returns (address)
totalMu
viewfunction totalMu(address) view returns (int256)
totalRewardTokensAvailable
viewfunction totalRewardTokensAvailable(address, address) view returns (int256)
viewLpStakes
viewfunction viewLpStakes() view returns (tuple[] _lpStakes)
viewRewards
viewfunction viewRewards(address who, address lpToken, address rewardToken) view returns (uint256)
viewVrswStakes
viewfunction viewVrswStakes() view returns (tuple[] _vrswStakes)
vPairFactory
viewfunction vPairFactory() view returns (address)
vrswStakes
viewfunction vrswStakes(address, uint256) view returns (uint128 startTs, uint128 lockDuration, int256 discountFactor, int256 amount)
vrswToken
viewfunction vrswToken() view returns (address)
claimRewards
nonpayablefunction claimRewards(address lpToken)
lockStakedVrsw
nonpayablefunction lockStakedVrsw(uint256 amount, uint128 lockDuration)
lockVrsw
nonpayablefunction lockVrsw(uint256 amount, uint128 lockDuration)
stakeLp
nonpayablefunction stakeLp(address lpToken, uint256 amount)
stakeVrsw
nonpayablefunction stakeVrsw(uint256 amount)
triggerStateUpdateAfter
nonpayablefunction triggerStateUpdateAfter(address[] wallets)
triggerStateUpdateBefore
nonpayablefunction triggerStateUpdateBefore(address[] wallets)
unlockVrsw
nonpayablefunction unlockVrsw(address who, uint256 position)
unstakeLp
nonpayablefunction unstakeLp(address lpToken, uint256 amount)
unstakeVrsw
nonpayablefunction unstakeVrsw(uint256 amount)
events
LockStakedVrsw
event LockStakedVrsw(address indexed who, uint256 amount, uint128 lockDuration)
LockVrsw
event LockVrsw(address indexed who, uint256 amount, uint128 lockDuration)
MuChanged
event MuChanged(address indexed who, address indexed pool, uint256 mu, uint256 totalMu)
StakeLp
event StakeLp(address indexed who, address indexed lpToken, uint256 amount)
StakeVrsw
event StakeVrsw(address indexed who, uint256 amount)
UnlockVrsw
event UnlockVrsw(address indexed who, uint256 amount)
UnstakeLp
event UnstakeLp(address indexed who, address indexed lpToken, uint256 amount)
UnstakeVrsw
event UnstakeVrsw(address indexed who, uint256 amount)
errors
PRBMath__MulDiv18Overflow
error PRBMath__MulDiv18Overflow(uint256 x, uint256 y)
PRBMath__MulDivOverflow
error PRBMath__MulDivOverflow(uint256 x, uint256 y, uint256 denominator)
PRBMathSD59x18__DivInputTooSmall
error PRBMathSD59x18__DivInputTooSmall()
PRBMathSD59x18__DivOverflow
error PRBMathSD59x18__DivOverflow(int256 x, int256 y)
PRBMathSD59x18__Exp2InputTooBig
error PRBMathSD59x18__Exp2InputTooBig(int256 x)
PRBMathSD59x18__ExpInputTooBig
error PRBMathSD59x18__ExpInputTooBig(int256 x)
PRBMathSD59x18__LogInputTooSmall
error PRBMathSD59x18__LogInputTooSmall(int256 x)
PRBMathSD59x18__MulInputTooSmall
error PRBMathSD59x18__MulInputTooSmall()
PRBMathSD59x18__MulOverflow
error PRBMathSD59x18__MulOverflow(int256 x, int256 y)
creation bytecode
0x6101208060405234620001db57608081620051308038038091620000248285620001e0565b833981010312620001db578060206200003f6004936200021a565b916200004d8282016200021a565b906200006a606062000062604084016200021a565b92016200021a565b60a083905260c09490945260e05260405163925c3e4760e01b815293849182906001600160a01b03165afa918215620001cf5760009262000193575b50610100918252608052604051614f0091826200023083396080518281816116ce0152612fab015260a0518281816106ce015281816110380152818161198801528181611d62015281816121ce015281816143be0152614603015260c05182818161101101528181611660015281816119610152611d3b015260e0518281816115f20152818161311a01528181613e37015281816148830152614d200152518181816101bb0152818161068501528181610a0101528181610ecf01528181610f2c0152818161137b0152818161189f01528181611aa401528181611c31015281816131620152613e7d0152f35b90916020823d8211620001c6575b81620001b060209383620001e0565b81010312620001c35750519038620000a6565b80fd5b3d9150620001a1565b6040513d6000823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200020457604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620001db5756fe60806040908082526004918236101561001757600080fd5b600091823560e01c908162923c3a146121f25750806307546172146121845780630b6544fb1461206957806318955d9614611ebb5780631d7f2b4f14611c185780631e657a6014611a8b5780631e795da9146118645780632653a3b0146118285780632a3cb074146117ed5780632a9dd0ce146117655780632ef56abd146116f25780634fdc61d31461168457806355b696981461161657806358d6b9e2146115a85780635e87bcf21461133a5780636b8bd439146112c75780636f6eff4014611287578063734aa6e1146112295780638988bc691461117e5780638d32b926146110f55780638e6c84a214610ef2578063925c3e4714610e9a578063939722ee14610e615780639af4c2fe14610dee578063a5b4787c14610d67578063aedf745e146109bd578063ed158460146108bf578063ef5cfb8c14610641578063f1319e0d146105e0578063f6c57861146105945763fb50dc141461017957600080fd5b3461059057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590576101af612263565b926024918235906101e27f0000000000000000000000000000000000000000000000000000000000000000421015612439565b73ffffffffffffffffffffffffffffffffffffffff86169384600052602093600585528260002054908615610535578415158061052c575b156104d157866000526005865261023d6102378686600020612401565b50612e62565b6fffffffffffffffffffffffffffffffff9081815116826102654292828c8601511690612ea5565b16116104765760600151956102798b614238565b886000526005885285600020937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94858201918211610449576102d2916102bf91612401565b50918a60005260058a5287600020612401565b92909261041d578183036103b7575b505050866000526005865283600020918254801561038a5701926103058484612401565b92909261035f575050917f0e1c0e63444aec2d84a82a760762b2dd87fbe0dcf82ebef4d5e7acd5b4ed8bf59697989160006002858261035797558260018201550155556103528482613db3565b6142a0565b51908152a280f35b6000907f4e487b71000000000000000000000000000000000000000000000000000000008252526000fd5b846031847f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b8154835491167fffffffffffffffffffffffffffffffff000000000000000000000000000000009182168117845582549091166fffffffffffffffffffffffffffffffff90911617825560029081906001810154600185015501549101553880806102e1565b856000857f4e487b71000000000000000000000000000000000000000000000000000000008252526000fd5b866011867f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b6064836006878b8a51937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f6c6f636b656400000000000000000000000000000000000000000000000000006044820152fd5b606490601084888751937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f696e76616c696420706f736974696f6e000000000000000000000000000000006044820152fd5b5081851061021a565b606490600c84888751937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152fd5b5080fd5b50346105905760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590576020906105d76105d2612263565b612efa565b90519015158152f35b50346105905760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590578060209273ffffffffffffffffffffffffffffffffffffffff610631612263565b1681526006845220549051908152f35b509190346108bc576020927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9380853601126108b85761067f612263565b906106ac7f0000000000000000000000000000000000000000000000000000000000000000421015612439565b6106b68233614369565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001696818551947e01b0b6000000000000000000000000000000000000000000000000000000008652169788888601528685602481845afa9485156108ae57879561088a575b5061073d8551612b09565b91875b86518110156107b35780856107586107ae938a612b85565b5116338b526003908189528d8b8d20908d5289528a8c20908c528852898b20546107828388612b85565b52338b528752888a208c8b528752888a208661079e838b612b85565b51168b5287528989812055612b58565b610740565b50909388908a979694863b15610886578996949288999694929951998a977f657e3172000000000000000000000000000000000000000000000000000000008952608489019233908a015260248901526080604489015285518092528060a4890196019289905b83821061086757505050505061083e838793879593868095030160648501526122d1565b03925af190811561085e5750610852575080f35b61085b9061254e565b80f35b513d84823e3d90fd5b8451811688528d9a508c9950968201969382019360019091019061081a565b8980fd5b6108a79195503d8089833e61089f818361257e565b810190612a87565b9338610732565b86513d89823e3d90fd5b8280fd5b80fd5b5090346108bc57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108bc573381526020906005825282812090815461090881612a4e565b906109158651928361257e565b8082528482018094845285842084915b8383106109985750505050845193808501918186525180925285850193925b8281106109515785850386f35b835180516fffffffffffffffffffffffffffffffff908116875281840151168684015287810151888701526060908101519086015260809094019392810192600101610944565b6003886001926109ab859b98999b612e62565b81520192019201919096949396610925565b50913461059057827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590576109f5612263565b92602493843591610a287f0000000000000000000000000000000000000000000000000000000000000000421015612439565b610a3383151561249e565b610a44610a3f83612efa565b6129ad565b3385526001956020928784528287209573ffffffffffffffffffffffffffffffffffffffff9182811697888a5286528489205490338a528987528a610a8b83888d2061241d565b500154908215610d0c57610aa1828a1115612b99565b610aab8133614369565b8882038b8a1283821281169084831390151617610ce157899291610ae7918e610ade8f8c818f928b93338252522061241d565b500155336144f1565b14610b29575b50505050907f0245a43644a6e6bab6b1bff2baab1d7ccdab8816f954c1215005a47d62c1977591610b1f843387612bfe565b519283523392a380f35b3389528886528489209283547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94858201918211610ce15790610b6b9161241d565b50338b528a8852610b7e83888d2061241d565b919091610cb757808d918303610c7d575b505050338a528a8752858a20908a8852610bab83888d2061241d565b5054168a52865284892055338852888552838820878952855287848120553388528785528388209182548015610c52570192610be7848461241d565b929092610c2957505096809888827f0245a43644a6e6bab6b1bff2baab1d7ccdab8816f954c1215005a47d62c1977598999a5501555585949392388080610aed565b8980917f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b848a6031857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8084839254167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784550154910155388b81610b8f565b868c80877f4e487b7100000000000000000000000000000000000000000000000000000000825252fd5b868c6011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b606484600d888b8b51937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f6e6f2073756368207374616b65000000000000000000000000000000000000006044820152fd5b5082346108b85760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108b8576020928291610da5612263565b610dad61228b565b610db56122ae565b9273ffffffffffffffffffffffffffffffffffffffff809316855287528185852091168452865283832091168252845220549051908152f35b503461059057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105905780602092610e29612263565b610e3161228b565b73ffffffffffffffffffffffffffffffffffffffff91821683526008865283832091168252845220549051908152f35b503461059057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590576020905160158152f35b503461059057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261059057602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b508290346108b85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108b857813591610f537f0000000000000000000000000000000000000000000000000000000000000000421015612439565b610f5e83151561249e565b3384526005602052818420610f7581541515612c7e565b610f8e6002610f83836123bd565b500154851115612b99565b610f9733614238565b6002610fb8610fb28683610faa866123bd565b500154612c65565b926123bd565b50015533845283602052610fd3836001610faa8588206123bd565b338552846020526001610fe78487206123bd565b500155610ff3336142a0565b8373ffffffffffffffffffffffffffffffffffffffff6110368533837f000000000000000000000000000000000000000000000000000000000000000016612bfe565b7f00000000000000000000000000000000000000000000000000000000000000001691823b156105905783517fdb6c5c55000000000000000000000000000000000000000000000000000000008152339181019182526020820186905292839182908490829060400103925af180156110eb576110dc575b50519081527ff8a9c9755132fabe079d616368840a9217e931f5546f744de08c988023b1963b60203392a280f35b6110e59061254e565b836110ae565b82513d86823e3d90fd5b5090346108bc57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108bc5761112d612263565b906024359073ffffffffffffffffffffffffffffffffffffffff8093168152806020528381209081548310156108bc575060019161116a9161241d565b509182541691015482519182526020820152f35b503461059057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590576111b5612263565b73ffffffffffffffffffffffffffffffffffffffff1682526005602052808220805460243593908410156108bc57506080926111f091612401565b509081549160026001820154910154918051936fffffffffffffffffffffffffffffffff81168552851c60208501528301526060820152f35b50346105905760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105905760209061127d611267612263565b61126f61228b565b6112776122ae565b91614575565b9351938452505050f35b82346108bc5761129636612352565b825b8181106112a3578380f35b806112bd6103526112b86112c2948688612ec9565b612ed9565b612b58565b611298565b503461059057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105905780602092611302612263565b61130a61228b565b73ffffffffffffffffffffffffffffffffffffffff91821683526007865283832091168252845220549051908152f35b503461059057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261059057611371612263565b90602435906113a27f0000000000000000000000000000000000000000000000000000000000000000421015612439565b6113ad82151561249e565b6113b9610a3f84612efa565b338452602090848252808520805415611586575b506113d88433614369565b338552600182528085209373ffffffffffffffffffffffffffffffffffffffff81169485875283528186205480156000146114e4575033865285835261143382872083519061142682612503565b87825286868301526125bf565b338652858352818620547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116114b8577f36a0e66d72e949e8fb88ba5ca6e646e30a6a135907f820e3869593a6353f66909495969750906114ac9133895260018552838920888a528552838920555b336144f1565b610b1f84303388612662565b60248760118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b33875286845260016114f882858a2061241d565b500154908582019188878412911290801582169115161761155a577f36a0e66d72e949e8fb88ba5ca6e646e30a6a135907f820e3869593a6353f669095969798509060016115526114ac9493338c528b8852868c2061241d565b5001556114a6565b60248860118b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b81516115a29161159582612503565b87825287858301526125bf565b386113cd565b503461059057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461059057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461059057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461059057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590578060209261172d612263565b61173561228b565b73ffffffffffffffffffffffffffffffffffffffff91821683526001865283832091168252845220549051908152f35b50346105905760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261059057806020926117a1612263565b6117a961228b565b906117b26122ae565b9173ffffffffffffffffffffffffffffffffffffffff8092168452600387528185852091168452865283832091168252845220549051908152f35b82346108bc576117fc36612352565b825b818110611809578380f35b806112bd61181e6112b8611823948688612ec9565b614238565b6117fe565b503461059057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105905760209051630530e8008152f35b508290346108b8576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611a87578235916118c67f0000000000000000000000000000000000000000000000000000000000000000421015612439565b6118d183151561249e565b338552848252808520805415611a72575b506118ec33614238565b6118f68333613db3565b33855284825260016119098287206123bd565b50015483810190868583129112908015821691151617611a465733865285835260016119368388206123bd565b500155611942336142a0565b8473ffffffffffffffffffffffffffffffffffffffff611986853033847f000000000000000000000000000000000000000000000000000000000000000016612662565b7f00000000000000000000000000000000000000000000000000000000000000001694853b156105905782517f88386c6e000000000000000000000000000000000000000000000000000000008152339181019182526020820186905295869182908490829060400103925af1938415611a3c577f7134c00e7c2eb5f46090bf307045192fcd7c4039fe0addc4619efb9176ac528c9394611a2d575b50519283523392a280f35b611a369061254e565b85611a22565b81513d87823e3d90fd5b6024866011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8151611a819161159582612503565b856118e2565b8380fd5b508290346108b857611a9c36612305565b919092611acb7f0000000000000000000000000000000000000000000000000000000000000000421015612439565b611af16fffffffffffffffffffffffffffffffff84168015159081611c09575b50612ce3565b611afc84151561249e565b3385526005602052818520611b2060158254611b19811515612c7e565b1115612d48565b611b396002611b2e836123bd565b500154861115612b99565b611b4233614238565b6002611b4d826123bd565b50015485810392908787128015828613169185121617611bdd5750917fa4b32d1a0cfd0546be6033b161229833c7bafe6ba8b3636ff7ad0a21c0c8511293916002611b9a611bd7956123bd565b500155611ba782866130c4565b611bb0336142a0565b519384526fffffffffffffffffffffffffffffffff16602084015233929081906040820190565b0390a280f35b8660116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b630530e8009150111587611aeb565b508290346108b857611c2936612305565b919092611c587f0000000000000000000000000000000000000000000000000000000000000000421015612439565b611c7d6fffffffffffffffffffffffffffffffff84168015159081611c095750612ce3565b611c8884151561249e565b3385526020600581528286208054611ca36015821115612d48565b15611e8e575b50338652858152828620805415611e6c575b50611cc533614238565b3386528581526001611cd88488206123bd565b5001549085820191878784129112908015821691151617611e40578690338252526001611d068488206123bd565b500155611d1383856130c4565b611d1c336142a0565b8473ffffffffffffffffffffffffffffffffffffffff611d60863033847f000000000000000000000000000000000000000000000000000000000000000016612662565b7f00000000000000000000000000000000000000000000000000000000000000001691823b156105905783517f88386c6e000000000000000000000000000000000000000000000000000000008152339181019182526020820187905292839182908490829060400103925af18015611e3657917ee09baf981ff2368a2faf754cec3ea7fed39a75869181ae3bdd51f6005d8ed59391611bd793611e27575b50519384526fffffffffffffffffffffffffffffffff16602084015233929081906040820190565b611e309061254e565b86611dff565b82513d87823e3d90fd5b6024876011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8351611e8891611e7b82612503565b88825288848301526125bf565b86611cbb565b8351611eb591611e9d82612562565b88825288848301528886830152886060830152612e34565b86611ca9565b50346105905760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105905773ffffffffffffffffffffffffffffffffffffffff611f08612263565b16825260056020528082208054908360015b8381106120105750611f2b81612b09565b94859260015b858110611f5157865160208082528190611f4d9082018b6122d1565b0390f35b611f5b8183612401565b506fffffffffffffffffffffffffffffffff8091541690611f8d611f7f8486612401565b509242935460801c90612ea5565b161115611fa3575b611f9e90612b58565b611f31565b928015611fe4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611f9e91019380611fdc8688612b85565b529050611f95565b60248360118b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b61201a8184612401565b506fffffffffffffffffffffffffffffffff809154169061203e611f7f8487612401565b161115612054575b61204f90612b58565b611f1a565b9061206161204f91612b58565b919050612046565b5090346108bc57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108bc57903382526020918083528181209081546120b281612a4e565b906120bf8551928361257e565b8082528582018094845286842084915b8383106121385750505050835194859481860192828752518093528086019493905b8382106120fe5786860387f35b8451805173ffffffffffffffffffffffffffffffffffffffff168752830151868401528796509485019493820193600191909101906120f1565b6002896001928a9b9897999a5161214e81612503565b73ffffffffffffffffffffffffffffffffffffffff865416815284860154838201528152019201920191909796959394976120cf565b503461059057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610590576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b919050346108b857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108b85760209261222e612263565b61223661228b565b73ffffffffffffffffffffffffffffffffffffffff91821683526002865283832091168252845220548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361228657565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361228657565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361228657565b90815180825260208080930193019160005b8281106122f1575050505090565b8351855293810193928101926001016122e3565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261228657600435906024356fffffffffffffffffffffffffffffffff811681036122865790565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126122865760043567ffffffffffffffff9283821161228657806023830112156122865781600401359384116122865760248460051b83010111612286576024019190565b8054156123d257600052602060002090600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80548210156123d2576000526003602060002091020190600090565b80548210156123d25760005260206000209060011b0190600090565b1561244057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f746f6f206561726c7900000000000000000000000000000000000000000000006044820152fd5b156124a557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e73756666696369656e7420616d6f756e74000000000000000000000000006044820152fd5b6040810190811067ffffffffffffffff82111761251f57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161251f57604052565b6080810190811067ffffffffffffffff82111761251f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761251f57604052565b80546801000000000000000081101561251f576125e19160018201815561241d565b9190916126335760208173ffffffffffffffffffffffffffffffffffffffff60019351167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784550151910155565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b9290604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015273ffffffffffffffffffffffffffffffffffffffff809216602485015216604483015260648201526064815260a081019181831067ffffffffffffffff84111761251f576126de926040526126e0565b565b73ffffffffffffffffffffffffffffffffffffffff169060405161270381612503565b6020928382527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564848301526000808486829651910182855af13d15612881573d9167ffffffffffffffff8311612854579061279c9392916040519261278f887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018561257e565b83523d868885013e61288b565b8051806127aa575b50505050565b8184918101031261059057820151908115918215036108bc57506127d0578080806127a4565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b9061279c92916060915b91929015612906575081511561289f575090565b3b156128a85790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156129195750805190602001fd5b604051907f08c379a000000000000000000000000000000000000000000000000000000000825281602080600483015282519283602484015260005b848110612996575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604480968601015201168101030190fd5b818101830151868201604401528593508201612955565b156129b457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c6964206c7020746f6b656e000000000000000000000000000000006044820152fd5b91908203918211612a1f57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff811161251f5760051b60200190565b519073ffffffffffffffffffffffffffffffffffffffff8216820361228657565b60209081818403126122865780519067ffffffffffffffff821161228657019180601f84011215612286578251612abd81612a4e565b93612acb604051958661257e565b818552838086019260051b820101928311612286578301905b828210612af2575050505090565b838091612afe84612a66565b815201910190612ae4565b90612b1382612a4e565b612b20604051918261257e565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612b4e8294612a4e565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612a1f5760010190565b80518210156123d25760209160051b010190565b15612ba057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e6f7420656e6f75676820746f6b656e730000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9290921660248301526044808301939093529181526126de91612c6060648361257e565b6126e0565b81810392916000138015828513169184121617612a1f57565b15612c8557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f207374616b657300000000000000000000000000000000000000000000006044820152fd5b15612cea57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e73756666696369656e74206c6f636b206475726174696f6e0000000000006044820152fd5b15612d4f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f7374616b6520706f736974696f6e73206c696d6974206973206578636565646560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152fd5b9190612633578051602082015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff91909116178255600290606090604081015160018501550151910155565b908154916801000000000000000083101561251f5782612e5c9160016126de95018155612401565b90612dd3565b90604051612e6f81612562565b60606002829480546fffffffffffffffffffffffffffffffff8116855260801c6020850152600181015460408501520154910152565b9190916fffffffffffffffffffffffffffffffff80809416911601918211612a1f57565b91908110156123d25760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff811681036122865790565b73ffffffffffffffffffffffffffffffffffffffff80911690604080517faa6ca8080000000000000000000000000000000000000000000000000000000081528181600481875afa90811561306f576000908192613026575b5082517f69454b8600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116602482015260208180604481015b0381867f0000000000000000000000000000000000000000000000000000000000000000165afa91821561301c5750600091612fe3575b50161490565b906020823d8211613014575b81612ffc6020938361257e565b810103126108bc575061300e90612a66565b38612fdd565b3d9150612fef565b513d6000823e3d90fd5b91508282813d8311613068575b61303d818361257e565b810103126108bc575060208161306082613059612fa695612a66565b9201612a66565b925090612f53565b503d613033565b82513d6000823e3d90fd5b7f80000000000000000000000000000000000000000000000000000000000000008114612a1f5760000390565b90670de0b6b3a764000091828102928184051490151715612a1f57565b91906000923384526020906005825260408520916040517f6c8ae38c000000000000000000000000000000000000000000000000000000008152818160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa96871561320b5780976131d5575b505061319c6131976126de969761319161318c6131877f000000000000000000000000000000000000000000000000000000000000000042612a12565b61307a565b6130a7565b90613bc6565b613260565b90604051946131aa86612562565b6fffffffffffffffffffffffffffffffff908142168752169085015260408401526060830152612e34565b9096508187813d8311613204575b6131ed818361257e565b810103126108bc575094519461319c61319761314a565b503d6131e3565b604051903d90823e3d90fd5b8015613231576ec097ce7bc90715b34b9f10000000000590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462ce81126132e957680736ea4425c11ac6318112156132b857670de0b6b3a76400006714057b7ef767814f6132b59202056132ef565b90565b602490604051907f99bb75410000000000000000000000000000000000000000000000000000000082526004820152fd5b50600090565b6000811215613334577ffffffffffffffffffffffffffffffffffffffffffffffffcc22e87f6eb468eeb81126132e95761332b906000036132ef565b6132b590613217565b680a688906bd8b000000811215613b9557670de0b6b3a764000080604092831b05907780000000000000000000000000000000000000000000000067ff000000000000008316613a78575b66ff0000000000008316613970575b65ff00000000008316613870575b64ff000000008316151580613768575b613678575b62ff00008316613590575b61ff0083166134b0575b60ff83166133d9575b02911c60bf031c90565b6080831661349e575b83831661348c575b6020831661347a575b60108316613468575b60088316613456575b60048316613444575b60028316613432575b60018316156133cf576801000000000000000102831c6133cf565b6801000000000000000102831c613417565b6801000000000000000302831c61340e565b6801000000000000000602831c613405565b6801000000000000000b02831c6133fc565b6801000000000000001602831c6133f3565b6801000000000000002c02831c6133ea565b6801000000000000005902831c6133e2565b618000831661357e575b614000831661356c575b612000831661355a575b6110008316613548575b6108008316613536575b6104008316613524575b6102008316613512575b6101008316156133c657680100000000000000b102831c6133c6565b6801000000000000016302831c6134f6565b680100000000000002c602831c6134ec565b6801000000000000058c02831c6134e2565b68010000000000000b1702831c6134d8565b6801000000000000162e02831c6134ce565b68010000000000002c5d02831c6134c4565b680100000000000058b902831c6134ba565b628000008316613666575b624000008316613654575b622000008316613642575b621000008316613630575b62080000831661361e575b62040000831661360c575b6202000083166135fa575b620100008316156133bc576801000000000000b17202831c6133bc565b680100000000000162e402831c6135dd565b6801000000000002c5c802831c6135d2565b68010000000000058b9102831c6135c7565b680100000000000b172102831c6135bc565b68010000000000162e4302831c6135b1565b680100000000002c5c8602831c6135a6565b6801000000000058b90c02831c61359b565b63800000008316613756575b63400000008316613744575b63200000008316613732575b63100000008316613720575b6308000000831661370e575b630400000083166136fc575b630200000083166136ea575b63010000008316156133b15768010000000000b1721802831c6133b1565b6801000000000162e43002831c6136cc565b68010000000002c5c86002831c6136c0565b680100000000058b90c002831c6136b4565b6801000000000b17217f02831c6136a8565b680100000000162e42ff02831c61369c565b6801000000002c5c85fe02831c613690565b68010000000058b90bfc02831c613684565b648000000000841661385c575b6440000000008416613848575b6420000000008416613834575b6410000000008416613820575b640800000000841661380c575b64040000000084166137f8575b64020000000084166137e4575b6401000000008416156133ac5790680100000000b17217f802841c906133ac565b9068010000000162e42ff102841c906137c3565b90680100000002c5c85fe302841c906137b6565b906801000000058b90bfce02841c906137a9565b9068010000000b17217fbb02841c9061379c565b906801000000162e42fff002841c9061378f565b9068010000002c5c8601cc02841c90613782565b90680100000058b90c0b4902841c90613775565b65800000000000831661395e575b65400000000000831661394c575b65200000000000831661393a575b651000000000008316613928575b650800000000008316613916575b650400000000008316613904575b6502000000000083166138f2575b6501000000000083161561339c576801000000b17218355102831c61339c565b680100000162e430e5a202831c6138d2565b6801000002c5c863b73f02831c6138c4565b68010000058b90cf1e6e02831c6138b6565b680100000b1721bcfc9a02831c6138a8565b68010000162e43f4f83102831c61389a565b680100002c5c89d5ec6d02831c61388c565b6801000058b91b5bc9ae02831c61387e565b66800000000000008316613a66575b66400000000000008316613a54575b66200000000000008316613a42575b66100000000000008316613a30575b66080000000000008316613a1e575b66040000000000008316613a0c575b660200000000000083166139fa575b660100000000000083161561338e5768010000b17255775c0402831c61338e565b6801000162e525ee054702831c6139d9565b68010002c5cc37da949202831c6139ca565b680100058ba01fb9f96d02831c6139bb565b6801000b175effdc76ba02831c6139ac565b680100162f3904051fa102831c61399d565b6801002c605e2e8cec5002831c61398e565b68010058c86da1c09ea202831c61397f565b6780000000000000008316613b76575b6740000000000000008316613b64575b6720000000000000008316613b52575b6710000000000000008316613b40575b6708000000000000008316613b2e575b6704000000000000008316613b1c575b6702000000000000008316613b0a575b67010000000000000083161561337f57680100b1afa5abcbed6102831c61337f565b68010163da9fb33356d802831c613ae8565b680102c9a3e778060ee702831c613ad8565b6801059b0d31585743ae02831c613ac8565b68010b5586cf9890f62a02831c613ab8565b6801172b83c7d517adce02831c613aa8565b6801306fe0a31b7152df02831c613a98565b5077b504f333f9de648480000000000000000000000000000000613a88565b602490604051907fe69458f90000000000000000000000000000000000000000000000000000000082526004820152fd5b7f8000000000000000000000000000000000000000000000000000000000000000808214908115613ce8575b50613cbe576000811215613cb557613c1b816000035b6000841215613cae578360000390613cf2565b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311613c77576000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91181315613c73575090565b0390565b60449250604051917fcdaa009100000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b8390613cf2565b613c1b81613c08565b60046040517f3406846c000000000000000000000000000000000000000000000000000000008152fd5b9050821438613bf2565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818309818302918280831092039180830391670de0b6b3a76400009586841015613d7d57908691099214613d77577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699350828211900360ee1b910360121c170290565b50500490565b604491604051917f90638d5000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b919073ffffffffffffffffffffffffffffffffffffffff806000941684526020916005835260409182862092835415613ffc575b613df3610237856123bd565b91600486613e0b606086019585875191015190613bc6565b928451928380927f6c8ae38c0000000000000000000000000000000000000000000000000000000082527f0000000000000000000000000000000000000000000000000000000000000000165afa908115613ff2578991613fbf575b50613ea2613197613ea89261319161318c6131877f000000000000000000000000000000000000000000000000000000000000000042612a12565b85613bc6565b90888282019283129112908015821691151617613f925782519084820191898684129112908015821691151617613f655790613ee391614028565b9151878482019485129112908015821691151617613f385790816126de9697612e5c9594935196613f1388612562565b6fffffffffffffffffffffffffffffffff4216885287015285015260608401526123bd565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024897f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b90508681813d8311613feb575b613fd6818361257e565b81010312613fe75751613ea2613e67565b8880fd5b503d613fcc565b83513d8b823e3d90fd5b614023815161400a81612562565b8881528887820152888382015288606082015285612e34565b613de7565b7f8000000000000000000000000000000000000000000000000000000000000000808214908115614146575b5061411c5760008112156141135761407d816000035b600084121561410c578360000390614150565b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116140d5576000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91181315613c73575090565b60449250604051917ffdd8c1d700000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b8390614150565b61407d8161406a565b60046040517fb3c754a3000000000000000000000000000000000000000000000000000000008152fd5b9050821438614054565b670de0b6b3a7640000917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff838309928083029283808610950394808603951461422a57828510156141ee57908291096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b82606492604051927f7639aaf0000000000000000000000000000000000000000000000000000000008452600484015260248301526044820152fd5b505080925015613231570490565b73ffffffffffffffffffffffffffffffffffffffff908181169160008381526020908082526040918282205495825b878110614278575050505050505050565b61429b908285528484526112bd876142928389892061241d565b50541689614369565b614267565b6142a98161484f565b9073ffffffffffffffffffffffffffffffffffffffff9182821690600082815260208181526040928383205496835b8881106142ea57505050505050505050565b6143649087865285855288887fe80cbe02b2d8cc16808f935cff6079782341d4f59921584a1451a05289922a2e8980898b6143368b8b61432c8b87862061241d565b5054168099614ccd565b819483898396949552600284528181208b825284526006828220945220555582519182528a820152a3612b58565b6142d8565b91909160409081517e01b0b600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861690600482818501526000958685602481867f0000000000000000000000000000000000000000000000000000000000000000165afa9485156144e75787956144cb575b50865b85518110156144bf578088888888888f8861441e8b92846144156144ba9c89612b85565b51169088614575565b93929991979095878352602090600882528c8161443e8787209286612b85565b5116855282528484209a81168085529682528484208985528252848420816144668f86612b85565b51168552825284842098808552600783528d826144868888209287612b85565b5116865283528585209785526003835285852090855282526144ab8d86862094612b85565b51168352522055555555612b58565b6143f1565b50505050505050509050565b6144e09195503d8089833e61089f818361257e565b93386143ee565b81513d89823e3d90fd5b7fe80cbe02b2d8cc16808f935cff6079782341d4f59921584a1451a05289922a2e60406145276145208461484f565b8585614ccd565b73ffffffffffffffffffffffffffffffffffffffff809516948560005260026020528360002096169586600052602052818360002060066020528285600020555582519182526020820152a3565b919273ffffffffffffffffffffffffffffffffffffffff91828116906000908282526020600681526040908184205415156000146147e55781517f318a678c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600480830191909152938a1660248201529181836044817f00000000000000000000000000000000000000000000000000000000000000008c165afa928315611a3c5785936147b2575b508299868652600783528882872091169081875283528186205493878752600884528287208288528452828720549087828203921281831281169183139015161761478657878752600684528287205461468d91614028565b93868582019586129112908015821691151617611a46578398849a169283875260038152828720888852815282872082885281528287205497848852600282528388208189528252838820549488528682528388209088528152828720918752528420549184838203931281841281169184139015161761475a579061471291613bc6565b9282848201948512911290801582169115161761472e57505090565b9060116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024846011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6024876011887f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9092508181813d83116147de575b6147ca818361257e565b810103126147da57519138614634565b8480fd5b503d6147c0565b9497915092946008855280848420921691828452855283832054961693848352600481528383208684528152838320828452815283832054958084526007825284842083855282528484205495845260038252848420908452815283832091835252205490919293565b60009060009073ffffffffffffffffffffffffffffffffffffffff80911682526020600581526040908184209182549185947f000000000000000000000000000000000000000000000000000000000000000016905b83861061490357505050505050670de0b6b3a7640000918183820193841291129080158216911516176148d6575090565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b90919293949660026149158988612401565b5001546149336149258a89612401565b509160018093015490613bc6565b908551917f4df7e3d0000000000000000000000000000000000000000000000000000000008352600492858185818a5afa908115614ae6578b91614ab5575b5061498a6149808d8c612401565b505460801c6130a7565b8851907fb1373929000000000000000000000000000000000000000000000000000000008252878287818c5afa918215614aab578d92614a76575b506149d4929161319191614af0565b9182670de0b6b3a76400000192831216614a4a57906149f291613bc6565b91888382019384129112908015821691151617614a1e5750614a149097612b58565b94939291906148a5565b8760116024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248a6011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9091508781813d8311614aa4575b614a8e818361257e565b81010312614aa05751906131916149c5565b8c80fd5b503d614a84565b8a513d8f823e3d90fd5b90508581813d8311614adf575b614acc818361257e565b81010312614adb575138614972565b8a80fd5b503d614ac2565b88513d8d823e3d90fd5b80614b0a57506000906132b55750670de0b6b3a764000090565b90670de0b6b3a76400008103614b1e575090565b614b3390614b2e6132b593614b38565b613bc6565b6132ef565b80600080831315614c9c57670de0b6b3a764000092838112614c2e57506001925b808305906fffffffffffffffffffffffffffffffff821160071b91821c9167ffffffffffffffff831160061b92831c63ffffffff811160051b90811c61ffff811160041b90811c60ff811160031b90811c91600f831160021b92831c936001978860038711811b96871c11961717171717171781810294811d90828214614c2257506706f05b59d3b20000905b848213614bf65750505050500290565b808391020590671bc16d674ec80000821215614c15575b831d90614be6565b8091950194831d90614c0d565b93505093925050020290565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392508015614c6f576ec097ce7bc90715b34b9f10000000000591614b59565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526012600452fd5b602483604051907f613f4fba0000000000000000000000000000000000000000000000000000000082526004820152fd5b9092919273ffffffffffffffffffffffffffffffffffffffff809216916000918383526020958387526040926001614d1a858720828b52838789209616958689528b52868820549061241d565b500154907f000000000000000000000000000000000000000000000000000000000000000016918451917fdb1d0fd50000000000000000000000000000000000000000000000000000000083528983600481875afa9283156108ae57908a918894614e91575b50600493614d8d91614af0565b938651938480927f9faa3c910000000000000000000000000000000000000000000000000000000082525afa918215614e87578692614e52575b50614dd6929161319191614af0565b95818452600681528284205494845260028152828420918452528120549181838603931285841281169086851390151617614e25578183820193841291129080158216911516176148d6575090565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9091508881813d8311614e80575b614e6a818361257e565b81010312614e7c575190613191614dc7565b8580fd5b503d614e60565b85513d88823e3d90fd5b828193929495503d8311614ec3575b614eaa818361257e565b81010312614ebf575191908990614d8d614d80565b8680fd5b503d614ea056fea26469706673582212205527b04a74d9bacfbd78a73611078db98623da65818674f4a0e44ef5e014048d64736f6c63430008120033000000000000000000000000a70de8592cd98edc01988d68b5b5bb3cc593fe88000000000000000000000000f3efb753f6c06655136375734be2702ecb6ecd45000000000000000000000000375f0e1d5c7d6c7980dfef5c831cb3295317f5d6000000000000000000000000f39141500d42be8935ac8ad63d08f4a155b798ad