harb/services/ponder/abis/Stake.json
openhands 85350caf52 feat: OptimizerV3 with direct 2D staking-to-LP parameter mapping
Core protocol changes for launch readiness:

- OptimizerV3: binary bear/bull mapping from (staking%, avgTax) — avoids
  exploitable AW 30-90 kill zone. Bear: AS=30%, AW=100, CI=0, DD=0.3e18.
  Bull: AS=100%, AW=20, CI=0, DD=1e18. UUPS upgradeable with __gap[48].
- Directional VWAP: only records prices on ETH inflow (buys), preventing
  sell-side dilution of price memory
- Floor formula: unified max(scarcity, mirror, clamp) — VWAP mirror uses
  distance from adjusted VWAP as floor distance, no branching
- PriceOracle (M-1 fix): correct fallback TWAP divisor (60000s, not 300s)
- Access control (M-2 fix): deployer-only guard on one-time setters
- Recenter rate limit (M-3 fix): 60-second cooldown for open recenters
- Safe fallback params: recenter() optimizer-failure defaults changed from
  exploitable CI=50%/AW=50 to safe bear-mode CI=0/AW=100
- Recentered event for monitoring and indexing
- VERSION bump to 2, kraiken-lib COMPATIBLE_CONTRACT_VERSIONS updated

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:21:18 +00:00

1 line
No EOL
103 KiB
JSON

{"abi":[{"type":"constructor","inputs":[{"name":"_kraiken","type":"address","internalType":"address"},{"name":"_taxReceiver","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"TAX_RATES","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"assetsToShares","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"changeTax","inputs":[{"name":"positionId","type":"uint256","internalType":"uint256"},{"name":"taxRate","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"exitPosition","inputs":[{"name":"positionId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAverageTaxRate","inputs":[],"outputs":[{"name":"averageTaxRate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPercentageStaked","inputs":[],"outputs":[{"name":"percentageStaked","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nextPositionId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"outstandingStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"payTax","inputs":[{"name":"positionId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"permitAndSnatch","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"taxRate","type":"uint32","internalType":"uint32"},{"name":"positionsToSnatch","type":"uint256[]","internalType":"uint256[]"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"positionId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"positions","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"share","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"},{"name":"creationTime","type":"uint32","internalType":"uint32"},{"name":"lastTaxTime","type":"uint32","internalType":"uint32"},{"name":"taxRate","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"sharesToAssets","inputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"snatch","inputs":[{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"},{"name":"taxRate","type":"uint32","internalType":"uint32"},{"name":"positionsToSnatch","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"positionId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"taxDue","inputs":[{"name":"positionId","type":"uint256","internalType":"uint256"},{"name":"taxFloorDuration","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountDue","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSharesAtTaxRate","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"PositionCreated","inputs":[{"name":"positionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"kraikenDeposit","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"share","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"taxRate","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"PositionRateHiked","inputs":[{"name":"positionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"newTaxRate","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PositionRemoved","inputs":[{"name":"positionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"kraikenPayout","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PositionShrunk","inputs":[{"name":"positionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"newShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"kraikenPayout","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PositionTaxPaid","inputs":[{"name":"positionId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"taxPaid","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newShares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"taxRate","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ExceededAvailableStake","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"stakeWanted","type":"uint256","internalType":"uint256"},{"name":"availableStake","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NoPermission","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"PositionNotFound","inputs":[{"name":"positionId","type":"uint256","internalType":"uint256"},{"name":"requester","type":"address","internalType":"address"}]},{"type":"error","name":"StakeTooLow","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"assets","type":"uint256","internalType":"uint256"},{"name":"minStake","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TaxTooLow","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"taxRateWanted","type":"uint64","internalType":"uint64"},{"name":"taxRateMet","type":"uint64","internalType":"uint64"},{"name":"positionId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TooMuchSnatch","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"stakeWanted","type":"uint256","internalType":"uint256"},{"name":"availableStake","type":"uint256","internalType":"uint256"},{"name":"smallestShare","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60075f556104a0604052600160e08181526003610100526005610120526008610140908152600c6101605260126101805260186101a052601e6101c081905260286101e052603261020052603c6102205260506102405260646102605260826102805260b46102a05260fa6102c0526102e0919091526101a46103005261021c610320526102bc61034052610398610360526104b0610380526106406103a0526107d06103c052610a286103e052610d48610400526111306104205261164461044052611d4c610460526125e4610480526100db929190610200565b503480156100e7575f5ffd5b506040516122cb3803806122cb833981016040819052610106916102b7565b6001600160a01b03808316608081905290821660a0525f546040805163313ce56760e01b8152905191929163313ce567916004808201926020929091908290030181865afa15801561015a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017e91906102e8565b60ff1661018b9190610323565b61019690600a61041f565b60c0526209fbf16003556001546001600160401b038111156101ba576101ba61042a565b6040519080825280602002602001820160405280156101e3578160200160208202803683370190505b5080516101f89160059160209091019061024f565b50505061043e565b828054828255905f5260205f2090810192821561023f579160200282015b8281111561023f578251829061ffff1690559160200191906001019061021e565b5061024b929150610288565b5090565b828054828255905f5260205f2090810192821561023f579160200282015b8281111561023f57825182559160200191906001019061026d565b5b8082111561024b575f8155600101610289565b80516001600160a01b03811681146102b2575f5ffd5b919050565b5f5f604083850312156102c8575f5ffd5b6102d18361029c565b91506102df6020840161029c565b90509250929050565b5f602082840312156102f8575f5ffd5b815160ff81168114610308575f5ffd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103365761033661030f565b92915050565b6001815b60018411156103775780850481111561035b5761035b61030f565b600184161561036957908102905b60019390931c928002610340565b935093915050565b5f8261038d57506001610336565b8161039957505f610336565b81600181146103af57600281146103b9576103d5565b6001915050610336565b60ff8411156103ca576103ca61030f565b50506001821b610336565b5060208310610133831016604e8410600b84101617156103f8575081810a610336565b6104045f19848461033c565b805f19048211156104175761041761030f565b029392505050565b5f610308838361037f565b634e487b7160e01b5f52604160045260245ffd5b60805160a05160c051611e166104b55f395f818161012a015281816105860152818161094201528181610b2801526115e301525f61144801525f81816103de015281816105040152818161096301528181610a1801528181610f58015281816114270152818161155001526117220152611e165ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c806399fbab8811610093578063cbcebdba11610063578063cbcebdba14610268578063e0b231fa1461027b578063e95beb931461028e578063febf6b7b14610296575f5ffd5b806399fbab88146101a15780639d8e5ea71461022f578063a05aaf5014610242578063b8b1bc5114610255575f5ffd5b80635cb36034116100ce5780635cb360341461015d57806378dc9059146101705780637fe0c85014610185578063899346c714610198575f5ffd5b806313f5c726146100ff57806318160ddd1461012557806321139a011461014c5780635343275014610154575b5f5ffd5b61011261010d366004611abc565b6102a9565b6040519081526020015b60405180910390f35b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6101126102c8565b61011260025481565b61011261016b366004611b49565b610392565b61018361017e366004611abc565b610452565b005b610112610193366004611abc565b6104fe565b61011260035481565b6101f46101af366004611abc565b60046020525f9081526040902080546001909101546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b8104821691600160e01b9091041685565b604080519586526001600160a01b03909416602086015263ffffffff928316938501939093528116606084015216608082015260a00161011c565b61011261023d366004611be7565b6105b1565b610183610250366004611abc565b6106aa565b610183610263366004611c07565b6106ff565b610112610276366004611abc565b61092d565b610112610289366004611abc565b61093c565b6101126109ea565b6101126102a4366004611c31565b610a08565b600181815481106102b8575f80fd5b5f91825260209091200154905081565b6002545f901561038f575f5b60015481101561033457600581815481106102f1576102f1611c9b565b905f5260205f2001546001828154811061030d5761030d611c9b565b905f5260205f2001546103209190611cc3565b61032a9083611cda565b91506001016102d4565b506002546103429082611d01565b6001805491925090610355908290611d20565b8154811061036557610365611c9b565b905f5260205f20015481670de0b6b3a76400006103829190611cc3565b61038c9190611d01565b90505b90565b60405163d505accf60e01b81526001600160a01b038981166004830152306024830152604482018b90526064820186905260ff8516608483015260a4820184905260c482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d505accf9060e4015f604051808303815f87803b158015610421575f5ffd5b505af1158015610433573d5f5f3e3d5ffd5b505050506104448a8a8a8a8a610a08565b9a9950505050505050505050565b5f81815260046020526040902060018101546001600160a01b031633146104a8576001810154604051637b653e7d60e11b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6001810154600160a01b900463ffffffff165f036104e25760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104f082826203f4806110fd565b6104fa8282611476565b5050565b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105829190611d33565b83907f00000000000000000000000000000000000000000000000000000000000000005f61157c565b92915050565b5f8281526004602052604081206001810154829084906105de90600160a01b900463ffffffff1642611d20565b106105e95742610606565b6001820154610606908590600160a01b900463ffffffff16611cda565b60018301549091505f9061062790600160c01b900463ffffffff1683611d20565b90505f610636845f01546104fe565b905060646301e1338083600187600101601c9054906101000a900463ffffffff1663ffffffff168154811061066d5761066d611c9b565b905f5260205f200154846106819190611cc3565b61068b9190611cc3565b6106959190611d01565b61069f9190611d01565b979650505050505050565b5f81815260046020526040812060018101549091600160a01b90910463ffffffff1690036106f45760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104fa82825f6110fd565b60015463ffffffff82161061074f5760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b5f82815260046020526040812060018101549091600160a01b90910463ffffffff1690036107995760405163d37d088960e01b81526004810184905233602482015260440161049f565b60018101546001600160a01b031633146107dd576001810154604051637b653e7d60e11b81523360048201526001600160a01b03909116602482015260440161049f565b600181015463ffffffff600160e01b9091048116908316116108395760405162461bcd60e51b81526020600482015260156024820152740e8c2f040e8dede40d8deee40e8de40e6dcc2e8c6d605b1b604482015260640161049f565b61084483825f6110fd565b80546001820154600580549091600160e01b900463ffffffff1690811061086d5761086d611c9b565b905f5260205f20015f8282546108839190611d20565b909155505080546005805463ffffffff85169081106108a4576108a4611c9b565b905f5260205f20015f8282546108ba9190611cda565b90915550506001810180546001600160e01b038116600160e01b63ffffffff86169081029182179093556040519283526001600160a01b039182169116179084907fe6767cb515204f8d7033d356fa5c77de82ad12fc94271799b5b8b1c7663369449060200160405180910390a3505050565b600581815481106102b8575f80fd5b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e19190611d33565b8491905f61157c565b5f6109f36115d9565b60025461038290670de0b6b3a7640000611cc3565b5f5f610a138761093c565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663375b3c0a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a969190611d33565b905080881015610ad257604051635fa7efd160e11b81526001600160a01b0388166004820152602481018990526044810182905260640161049f565b5060015463ffffffff861610610b235760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b6002547f0000000000000000000000000000000000000000000000000000000000000000905f90610b526115d9565b610b5c9190611d20565b905060028510610cf8575f5b610b73600187611d20565b811015610cf6575f60045f898985818110610b9057610b90611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610c0d57878783818110610bd957610bd9611c9b565b60405163d37d088960e01b8152602090910292909201356004830152506001600160a01b038b16602482015260440161049f565b600181015463ffffffff600160e01b9091048116908a1611610c9a5760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b60405163aed9ae5960e01b81526001600160a01b0396909616600487015263ffffffff94851660248701529290931660448501526020909102013560648301525060840161049f565b8054841115610ca857805493505b610ccb888884818110610cbd57610cbd611c9b565b90506020020135825f6110fd565b610ced888884818110610ce057610ce0611c9b565b9050602002013582611476565b50600101610b68565b505b600254610d036115d9565b610d0d9190611d20565b90508415610eb8575f610d21600187611d20565b90505f60045f898985818110610d3957610d39611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610d8257878783818110610bd957610bd9611c9b565b600181015463ffffffff600160e01b9091048116908a1611610dc65760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b8054841115610dd457805493505b610dfa888884818110610de957610de9611c9b565b90506020020135826203f4806110fd565b84831115610e3b576040516378147d3360e01b81526001600160a01b038b16600482015260248101869052604481018490526064810185905260840161049f565b5f610e468487611d20565b8254909150606490610e59906050611cc3565b610e639190611d01565b811115610e9157610e8c898985818110610e7f57610e7f611c9b565b9050602002013583611476565b610eb4565b610eb4898985818110610ea657610ea6611c9b565b905060200201358383611607565b5050505b600254610ec36115d9565b610ecd9190611d20565b905080831115610f09576040516312797e8f60e11b81526001600160a01b0389166004820152602481018490526044810182905260640161049f565b81610f148483611d20565b1115610f53576040516378147d3360e01b81526001600160a01b038916600482015260248101849052604481018290526064810183905260840161049f565b610f7f7f000000000000000000000000000000000000000000000000000000000000000033308c611751565b60038054905f610f8e83611d4a565b9190505593505f60045f8681526020019081526020015f20905083815f018190555088816001015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550428160010160186101000a81548163ffffffff021916908363ffffffff160217905550428160010160146101000a81548163ffffffff021916908363ffffffff1602179055508781600101601c6101000a81548163ffffffff021916908363ffffffff1602179055508360058963ffffffff168154811061105b5761105b611c9b565b905f5260205f20015f8282546110719190611cda565b925050819055508360025f8282546110899190611cda565b909155505060018101548154604080518d8152602081019290925263ffffffff600160e01b840416908201526001600160a01b039091169086907f8f7598451bc034be2bd3fe6e2f06af052c2dc238bb90bc6fb426754f043014629060600160405180910390a35050505095945050505050565b60018201545f90829061111d90600160a01b900463ffffffff1642611d20565b106111285742611145565b6001830154611145908390600160a01b900463ffffffff16611cda565b60018401549091505f9061116690600160c01b900463ffffffff1683611d20565b90505f611175855f01546104fe565b90505f60646301e1338084600189600101601c9054906101000a900463ffffffff1663ffffffff16815481106111ad576111ad611c9b565b905f5260205f200154856111c19190611cc3565b6111cb9190611cc3565b6111d59190611d01565b6111df9190611d01565b90508181106111eb5750805b5f6111f68284611d20565b111561130c575f61120a6102898385611d20565b90505f81885f015461121c9190611d20565b905080600589600101601c9054906101000a900463ffffffff1663ffffffff168154811061124c5761124c611c9b565b905f5260205f20015f8282546112629190611d20565b925050819055508060025f82825461127a9190611d20565b909155505081885560018801805463ffffffff428116600160c01b0263ffffffff60c01b1983168117938490556040805188815260208101889052600160e01b909504909216918401919091526001600160a01b03908116911617908a907fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a69060600160405180910390a35050611422565b85546001870154600580549091600160e01b900463ffffffff1690811061133557611335611c9b565b905f5260205f20015f82825461134b9190611d20565b90915550508554600280545f90611363908490611d20565b90915550506001860154604080518381525f602082015263ffffffff600160e01b8404168183015290516001600160a01b039092169189917fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a6919081900360600190a360018601546040515f81526001600160a01b039091169088907f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d79060200160405180910390a36001860180546001600160c01b03191690555f86555b61146d7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836117bc565b50505050505050565b80546001820154600580549091600160e01b900463ffffffff1690811061149f5761149f611c9b565b905f5260205f20015f8282546114b59190611d20565b90915550508054600280545f906114cd908490611d20565b9091555050600181015481546001600160a01b03909116905f906114f0906104fe565b9050816001600160a01b0316847f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d78360405161152e91815260200190565b60405180910390a36001830180546001600160c01b03191690555f83556115767f000000000000000000000000000000000000000000000000000000000000000083836117bc565b50505050565b5f5f6115898686866117f1565b9050600183600281111561159f5761159f611d62565b1480156115bb57505f84806115b6576115b6611ced565b868809115b156115ce576115cb600182611cda565b90505b90505b949350505050565b5f606461038260147f0000000000000000000000000000000000000000000000000000000000000000611cc3565b8154811061164c5760405162461bcd60e51b81526020600482015260126024820152711c1bdcda5d1a5bdb881d1bdbc81cdb585b1b60721b604482015260640161049f565b5f611656826104fe565b905081835f015f82825461166a9190611d20565b90915550506001830154600580548492600160e01b900463ffffffff1690811061169657611696611c9b565b905f5260205f20015f8282546116ac9190611d20565b925050819055508160025f8282546116c49190611d20565b90915550506001830154835460408051918252602082018490526001600160a01b039092169186917fa2d77705aa53a16a9bf1d72a714fcb5a94cc2decf59925f07ead504c92668ee2910160405180910390a36001830154611576907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0316836117bc565b6040516001600160a01b03808516602483015283166044820152606481018290526115769085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118dc565b6040516001600160a01b0383166024820152604481018290526117ec90849063a9059cbb60e01b90606401611785565b505050565b5f80805f19858709858702925082811083820303915050805f036118285783828161181e5761181e611ced565b04925050506118d5565b80841161186f5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161049f565b5f848688098519600190810187169687900496828603819004959092119093035f82900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b5f611930826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119af9092919063ffffffff16565b905080515f14806119505750808060200190518101906119509190611d76565b6117ec5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161049f565b60606115d184845f85855f5f866001600160a01b031685876040516119d49190611d95565b5f6040518083038185875af1925050503d805f8114611a0e576040519150601f19603f3d011682016040523d82523d5f602084013e611a13565b606091505b509150915061069f8783838760608315611a8d5782515f03611a86576001600160a01b0385163b611a865760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161049f565b50816115d1565b6115d18383815115611aa25781518083602001fd5b8060405162461bcd60e51b815260040161049f9190611dab565b5f60208284031215611acc575f5ffd5b5035919050565b80356001600160a01b0381168114611ae9575f5ffd5b919050565b803563ffffffff81168114611ae9575f5ffd5b5f5f83601f840112611b11575f5ffd5b50813567ffffffffffffffff811115611b28575f5ffd5b6020830191508360208260051b8501011115611b42575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f6101008a8c031215611b62575f5ffd5b89359850611b7260208b01611ad3565b9750611b8060408b01611aee565b965060608a013567ffffffffffffffff811115611b9b575f5ffd5b611ba78c828d01611b01565b90975095505060808a0135935060a08a013560ff81168114611bc7575f5ffd5b989b979a50959894979396929550929360c0810135935060e00135919050565b5f5f60408385031215611bf8575f5ffd5b50508035926020909101359150565b5f5f60408385031215611c18575f5ffd5b82359150611c2860208401611aee565b90509250929050565b5f5f5f5f5f60808688031215611c45575f5ffd5b85359450611c5560208701611ad3565b9350611c6360408701611aee565b9250606086013567ffffffffffffffff811115611c7e575f5ffd5b611c8a88828901611b01565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105ab576105ab611caf565b808201808211156105ab576105ab611caf565b634e487b7160e01b5f52601260045260245ffd5b5f82611d1b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105ab576105ab611caf565b5f60208284031215611d43575f5ffd5b5051919050565b5f60018201611d5b57611d5b611caf565b5060010190565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611d86575f5ffd5b815180151581146118d5575f5ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea264697066735822122097133a45860ac9deb240ba46946e0c78bc6d9791df9cf6a863cd490e428ae86264736f6c634300081e0033","sourceMap":"2130:5:85:-:0;2096:39;;2526:180;1875:17576;2526:180;2564:1;1875:17576;2526:180;;;2567:1;2526:180;;2570:1;2526:180;;2573:1;2526:180;;;;2576:2;2526:180;;2580:2;2526:180;;2584:2;2526:180;;2588:2;2526:180;;;;2592:2;2526:180;;2596:2;2526:180;;2600:2;2526:180;;2604:2;2526:180;;2608:3;2526:180;;2613:3;2526:180;;2618:3;2526:180;;2623:3;2526:180;;;;;;;2633:3;2526:180;;2638:3;2526:180;;2643:3;2526:180;;2648:3;2526:180;;2653:4;2526:180;;2659:4;2526:180;;2665:4;2526:180;;2671:4;2526:180;;2677:4;2526:180;;2683:4;2526:180;;2689:4;2526:180;;2695:4;2526:180;;2701:4;2526:180;;;;2564:1;1875:17576;2526:180;:::i;:::-;;4695:382;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4757:27:85;;;;;;;4794:26;;;;;4872:14;;4851:18;;;-1:-1:-1;;;4851:18:85;;;;4872:14;;4757:27;4851:16;;:18;;;;;;;;;;;;;;;4757:27;4851:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;;;;;;:::i;:::-;4844:43;;:2;:43;:::i;:::-;4830:57;;4950:7;4933:14;:24;5053:9;:16;-1:-1:-1;;;;;5039:31:85;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5039:31:85;-1:-1:-1;5016:54:85;;;;:20;;:54;;;;;;:::i;:::-;;4695:382;;1875:17576;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1875:17576:85;;;-1:-1:-1;1875:17576:85;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:177:114;93:13;;-1:-1:-1;;;;;135:31:114;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:273::-;562:6;615:2;603:9;594:7;590:23;586:32;583:52;;;631:1;628;621:12;583:52;663:9;657:16;713:4;706:5;702:16;695:5;692:27;682:55;;733:1;730;723:12;682:55;756:5;494:273;-1:-1:-1;;;494:273:114:o;772:127::-;833:10;828:3;824:20;821:1;814:31;864:4;861:1;854:15;888:4;885:1;878:15;904:125;969:9;;;990:10;;;987:36;;;1003:18;;:::i;:::-;904:125;;;;:::o;1034:375::-;1122:1;1140:5;1154:249;1175:1;1165:8;1162:15;1154:249;;;1225:4;1220:3;1216:14;1210:4;1207:24;1204:50;;;1234:18;;:::i;:::-;1284:1;1274:8;1270:16;1267:49;;;1298:16;;;;1267:49;1381:1;1377:16;;;;;1337:15;;1154:249;;;1034:375;;;;;;:::o;1414:902::-;1463:5;1493:8;1483:80;;-1:-1:-1;1534:1:114;1548:5;;1483:80;1582:4;1572:76;;-1:-1:-1;1619:1:114;1633:5;;1572:76;1664:4;1682:1;1677:59;;;;1750:1;1745:174;;;;1657:262;;1677:59;1707:1;1698:10;;1721:5;;;1745:174;1782:3;1772:8;1769:17;1766:43;;;1789:18;;:::i;:::-;-1:-1:-1;;1845:1:114;1831:16;;1904:5;;1657:262;;2003:2;1993:8;1990:16;1984:3;1978:4;1975:13;1971:36;1965:2;1955:8;1952:16;1947:2;1941:4;1938:12;1934:35;1931:77;1928:203;;;-1:-1:-1;2040:19:114;;;2116:5;;1928:203;2163:42;-1:-1:-1;;2188:8:114;2182:4;2163:42;:::i;:::-;2241:6;2237:1;2233:6;2229:19;2220:7;2217:32;2214:58;;;2252:18;;:::i;:::-;2290:20;;1414:902;-1:-1:-1;;;1414:902:114:o;2321:131::-;2381:5;2410:36;2437:8;2431:4;2410:36;:::i;2457:127::-;2518:10;2513:3;2509:20;2506:1;2499:31;2549:4;2546:1;2539:15;2573:4;2570:1;2563:15;2457:127;1875:17576:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c806399fbab8811610093578063cbcebdba11610063578063cbcebdba14610268578063e0b231fa1461027b578063e95beb931461028e578063febf6b7b14610296575f5ffd5b806399fbab88146101a15780639d8e5ea71461022f578063a05aaf5014610242578063b8b1bc5114610255575f5ffd5b80635cb36034116100ce5780635cb360341461015d57806378dc9059146101705780637fe0c85014610185578063899346c714610198575f5ffd5b806313f5c726146100ff57806318160ddd1461012557806321139a011461014c5780635343275014610154575b5f5ffd5b61011261010d366004611abc565b6102a9565b6040519081526020015b60405180910390f35b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6101126102c8565b61011260025481565b61011261016b366004611b49565b610392565b61018361017e366004611abc565b610452565b005b610112610193366004611abc565b6104fe565b61011260035481565b6101f46101af366004611abc565b60046020525f9081526040902080546001909101546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b8104821691600160e01b9091041685565b604080519586526001600160a01b03909416602086015263ffffffff928316938501939093528116606084015216608082015260a00161011c565b61011261023d366004611be7565b6105b1565b610183610250366004611abc565b6106aa565b610183610263366004611c07565b6106ff565b610112610276366004611abc565b61092d565b610112610289366004611abc565b61093c565b6101126109ea565b6101126102a4366004611c31565b610a08565b600181815481106102b8575f80fd5b5f91825260209091200154905081565b6002545f901561038f575f5b60015481101561033457600581815481106102f1576102f1611c9b565b905f5260205f2001546001828154811061030d5761030d611c9b565b905f5260205f2001546103209190611cc3565b61032a9083611cda565b91506001016102d4565b506002546103429082611d01565b6001805491925090610355908290611d20565b8154811061036557610365611c9b565b905f5260205f20015481670de0b6b3a76400006103829190611cc3565b61038c9190611d01565b90505b90565b60405163d505accf60e01b81526001600160a01b038981166004830152306024830152604482018b90526064820186905260ff8516608483015260a4820184905260c482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d505accf9060e4015f604051808303815f87803b158015610421575f5ffd5b505af1158015610433573d5f5f3e3d5ffd5b505050506104448a8a8a8a8a610a08565b9a9950505050505050505050565b5f81815260046020526040902060018101546001600160a01b031633146104a8576001810154604051637b653e7d60e11b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6001810154600160a01b900463ffffffff165f036104e25760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104f082826203f4806110fd565b6104fa8282611476565b5050565b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105829190611d33565b83907f00000000000000000000000000000000000000000000000000000000000000005f61157c565b92915050565b5f8281526004602052604081206001810154829084906105de90600160a01b900463ffffffff1642611d20565b106105e95742610606565b6001820154610606908590600160a01b900463ffffffff16611cda565b60018301549091505f9061062790600160c01b900463ffffffff1683611d20565b90505f610636845f01546104fe565b905060646301e1338083600187600101601c9054906101000a900463ffffffff1663ffffffff168154811061066d5761066d611c9b565b905f5260205f200154846106819190611cc3565b61068b9190611cc3565b6106959190611d01565b61069f9190611d01565b979650505050505050565b5f81815260046020526040812060018101549091600160a01b90910463ffffffff1690036106f45760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104fa82825f6110fd565b60015463ffffffff82161061074f5760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b5f82815260046020526040812060018101549091600160a01b90910463ffffffff1690036107995760405163d37d088960e01b81526004810184905233602482015260440161049f565b60018101546001600160a01b031633146107dd576001810154604051637b653e7d60e11b81523360048201526001600160a01b03909116602482015260440161049f565b600181015463ffffffff600160e01b9091048116908316116108395760405162461bcd60e51b81526020600482015260156024820152740e8c2f040e8dede40d8deee40e8de40e6dcc2e8c6d605b1b604482015260640161049f565b61084483825f6110fd565b80546001820154600580549091600160e01b900463ffffffff1690811061086d5761086d611c9b565b905f5260205f20015f8282546108839190611d20565b909155505080546005805463ffffffff85169081106108a4576108a4611c9b565b905f5260205f20015f8282546108ba9190611cda565b90915550506001810180546001600160e01b038116600160e01b63ffffffff86169081029182179093556040519283526001600160a01b039182169116179084907fe6767cb515204f8d7033d356fa5c77de82ad12fc94271799b5b8b1c7663369449060200160405180910390a3505050565b600581815481106102b8575f80fd5b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e19190611d33565b8491905f61157c565b5f6109f36115d9565b60025461038290670de0b6b3a7640000611cc3565b5f5f610a138761093c565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663375b3c0a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a969190611d33565b905080881015610ad257604051635fa7efd160e11b81526001600160a01b0388166004820152602481018990526044810182905260640161049f565b5060015463ffffffff861610610b235760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b6002547f0000000000000000000000000000000000000000000000000000000000000000905f90610b526115d9565b610b5c9190611d20565b905060028510610cf8575f5b610b73600187611d20565b811015610cf6575f60045f898985818110610b9057610b90611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610c0d57878783818110610bd957610bd9611c9b565b60405163d37d088960e01b8152602090910292909201356004830152506001600160a01b038b16602482015260440161049f565b600181015463ffffffff600160e01b9091048116908a1611610c9a5760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b60405163aed9ae5960e01b81526001600160a01b0396909616600487015263ffffffff94851660248701529290931660448501526020909102013560648301525060840161049f565b8054841115610ca857805493505b610ccb888884818110610cbd57610cbd611c9b565b90506020020135825f6110fd565b610ced888884818110610ce057610ce0611c9b565b9050602002013582611476565b50600101610b68565b505b600254610d036115d9565b610d0d9190611d20565b90508415610eb8575f610d21600187611d20565b90505f60045f898985818110610d3957610d39611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610d8257878783818110610bd957610bd9611c9b565b600181015463ffffffff600160e01b9091048116908a1611610dc65760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b8054841115610dd457805493505b610dfa888884818110610de957610de9611c9b565b90506020020135826203f4806110fd565b84831115610e3b576040516378147d3360e01b81526001600160a01b038b16600482015260248101869052604481018490526064810185905260840161049f565b5f610e468487611d20565b8254909150606490610e59906050611cc3565b610e639190611d01565b811115610e9157610e8c898985818110610e7f57610e7f611c9b565b9050602002013583611476565b610eb4565b610eb4898985818110610ea657610ea6611c9b565b905060200201358383611607565b5050505b600254610ec36115d9565b610ecd9190611d20565b905080831115610f09576040516312797e8f60e11b81526001600160a01b0389166004820152602481018490526044810182905260640161049f565b81610f148483611d20565b1115610f53576040516378147d3360e01b81526001600160a01b038916600482015260248101849052604481018290526064810183905260840161049f565b610f7f7f000000000000000000000000000000000000000000000000000000000000000033308c611751565b60038054905f610f8e83611d4a565b9190505593505f60045f8681526020019081526020015f20905083815f018190555088816001015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550428160010160186101000a81548163ffffffff021916908363ffffffff160217905550428160010160146101000a81548163ffffffff021916908363ffffffff1602179055508781600101601c6101000a81548163ffffffff021916908363ffffffff1602179055508360058963ffffffff168154811061105b5761105b611c9b565b905f5260205f20015f8282546110719190611cda565b925050819055508360025f8282546110899190611cda565b909155505060018101548154604080518d8152602081019290925263ffffffff600160e01b840416908201526001600160a01b039091169086907f8f7598451bc034be2bd3fe6e2f06af052c2dc238bb90bc6fb426754f043014629060600160405180910390a35050505095945050505050565b60018201545f90829061111d90600160a01b900463ffffffff1642611d20565b106111285742611145565b6001830154611145908390600160a01b900463ffffffff16611cda565b60018401549091505f9061116690600160c01b900463ffffffff1683611d20565b90505f611175855f01546104fe565b90505f60646301e1338084600189600101601c9054906101000a900463ffffffff1663ffffffff16815481106111ad576111ad611c9b565b905f5260205f200154856111c19190611cc3565b6111cb9190611cc3565b6111d59190611d01565b6111df9190611d01565b90508181106111eb5750805b5f6111f68284611d20565b111561130c575f61120a6102898385611d20565b90505f81885f015461121c9190611d20565b905080600589600101601c9054906101000a900463ffffffff1663ffffffff168154811061124c5761124c611c9b565b905f5260205f20015f8282546112629190611d20565b925050819055508060025f82825461127a9190611d20565b909155505081885560018801805463ffffffff428116600160c01b0263ffffffff60c01b1983168117938490556040805188815260208101889052600160e01b909504909216918401919091526001600160a01b03908116911617908a907fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a69060600160405180910390a35050611422565b85546001870154600580549091600160e01b900463ffffffff1690811061133557611335611c9b565b905f5260205f20015f82825461134b9190611d20565b90915550508554600280545f90611363908490611d20565b90915550506001860154604080518381525f602082015263ffffffff600160e01b8404168183015290516001600160a01b039092169189917fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a6919081900360600190a360018601546040515f81526001600160a01b039091169088907f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d79060200160405180910390a36001860180546001600160c01b03191690555f86555b61146d7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836117bc565b50505050505050565b80546001820154600580549091600160e01b900463ffffffff1690811061149f5761149f611c9b565b905f5260205f20015f8282546114b59190611d20565b90915550508054600280545f906114cd908490611d20565b9091555050600181015481546001600160a01b03909116905f906114f0906104fe565b9050816001600160a01b0316847f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d78360405161152e91815260200190565b60405180910390a36001830180546001600160c01b03191690555f83556115767f000000000000000000000000000000000000000000000000000000000000000083836117bc565b50505050565b5f5f6115898686866117f1565b9050600183600281111561159f5761159f611d62565b1480156115bb57505f84806115b6576115b6611ced565b868809115b156115ce576115cb600182611cda565b90505b90505b949350505050565b5f606461038260147f0000000000000000000000000000000000000000000000000000000000000000611cc3565b8154811061164c5760405162461bcd60e51b81526020600482015260126024820152711c1bdcda5d1a5bdb881d1bdbc81cdb585b1b60721b604482015260640161049f565b5f611656826104fe565b905081835f015f82825461166a9190611d20565b90915550506001830154600580548492600160e01b900463ffffffff1690811061169657611696611c9b565b905f5260205f20015f8282546116ac9190611d20565b925050819055508160025f8282546116c49190611d20565b90915550506001830154835460408051918252602082018490526001600160a01b039092169186917fa2d77705aa53a16a9bf1d72a714fcb5a94cc2decf59925f07ead504c92668ee2910160405180910390a36001830154611576907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0316836117bc565b6040516001600160a01b03808516602483015283166044820152606481018290526115769085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118dc565b6040516001600160a01b0383166024820152604481018290526117ec90849063a9059cbb60e01b90606401611785565b505050565b5f80805f19858709858702925082811083820303915050805f036118285783828161181e5761181e611ced565b04925050506118d5565b80841161186f5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161049f565b5f848688098519600190810187169687900496828603819004959092119093035f82900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b5f611930826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119af9092919063ffffffff16565b905080515f14806119505750808060200190518101906119509190611d76565b6117ec5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161049f565b60606115d184845f85855f5f866001600160a01b031685876040516119d49190611d95565b5f6040518083038185875af1925050503d805f8114611a0e576040519150601f19603f3d011682016040523d82523d5f602084013e611a13565b606091505b509150915061069f8783838760608315611a8d5782515f03611a86576001600160a01b0385163b611a865760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161049f565b50816115d1565b6115d18383815115611aa25781518083602001fd5b8060405162461bcd60e51b815260040161049f9190611dab565b5f60208284031215611acc575f5ffd5b5035919050565b80356001600160a01b0381168114611ae9575f5ffd5b919050565b803563ffffffff81168114611ae9575f5ffd5b5f5f83601f840112611b11575f5ffd5b50813567ffffffffffffffff811115611b28575f5ffd5b6020830191508360208260051b8501011115611b42575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f6101008a8c031215611b62575f5ffd5b89359850611b7260208b01611ad3565b9750611b8060408b01611aee565b965060608a013567ffffffffffffffff811115611b9b575f5ffd5b611ba78c828d01611b01565b90975095505060808a0135935060a08a013560ff81168114611bc7575f5ffd5b989b979a50959894979396929550929360c0810135935060e00135919050565b5f5f60408385031215611bf8575f5ffd5b50508035926020909101359150565b5f5f60408385031215611c18575f5ffd5b82359150611c2860208401611aee565b90509250929050565b5f5f5f5f5f60808688031215611c45575f5ffd5b85359450611c5560208701611ad3565b9350611c6360408701611aee565b9250606086013567ffffffffffffffff811115611c7e575f5ffd5b611c8a88828901611b01565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105ab576105ab611caf565b808201808211156105ab576105ab611caf565b634e487b7160e01b5f52601260045260245ffd5b5f82611d1b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105ab576105ab611caf565b5f60208284031215611d43575f5ffd5b5051919050565b5f60018201611d5b57611d5b611caf565b5060010190565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611d86575f5ffd5b815180151581146118d5575f5ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea264697066735822122097133a45860ac9deb240ba46946e0c78bc6d9791df9cf6a863cd490e428ae86264736f6c634300081e0033","sourceMap":"1875:17576:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2526:180;;;;;;:::i;:::-;;:::i;:::-;;;391:25:114;;;379:2;364:18;2526:180:85;;;;;;;;4096:36;;;;;18521:545;;;:::i;4138:31::-;;;;;;14538:544;;;;;;:::i;:::-;;:::i;16494:504::-;;;;;;:::i;:::-;;:::i;:::-;;9053:163;;;;;;:::i;:::-;;:::i;4175:29::-;;;;;;4211:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4211:52:85;;;;-1:-1:-1;;;4211:52:85;;;;;-1:-1:-1;;;4211:52:85;;;;;-1:-1:-1;;;4211:52:85;;;;;;;;;;2630:25:114;;;-1:-1:-1;;;;;2691:32:114;;;2686:2;2671:18;;2664:60;2772:10;2760:23;;;2740:18;;;2733:51;;;;2820:23;;2815:2;2800:18;;2793:51;2881:23;2875:3;2860:19;;2853:52;2617:3;2602:19;4211:52:85;2377:534:114;17842:581:85;;;;;;:::i;:::-;;:::i;17262:258::-;;;;;;:::i;:::-;;:::i;15408:801::-;;;;;;:::i;:::-;;:::i;4330:37::-;;;;;;:::i;:::-;;:::i;8667:163::-;;;;;;:::i;:::-;;:::i;19288:161::-;;;:::i;9834:4055::-;;;;;;:::i;:::-;;:::i;2526:180::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2526:180:85;:::o;18521:545::-;18694:16;;18573:22;;18694:20;18690:370;;18735:9;18730:136;18754:9;:16;18750:20;;18730:136;;;18828:20;18849:1;18828:23;;;;;;;;:::i;:::-;;;;;;;;;18813:9;18823:1;18813:12;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;:::i;:::-;18795:56;;;;:::i;:::-;;-1:-1:-1;18772:3:85;;18730:136;;;-1:-1:-1;18913:16:85;;18896:33;;:14;:33;:::i;:::-;19018:9;19028:16;;18879:50;;-1:-1:-1;19018:9:85;19028:20;;19018:9;;19028:20;:::i;:::-;19018:31;;;;;;;;:::i;:::-;;;;;;;;;18994:14;19011:4;18994:21;;;;:::i;:::-;:55;;;;:::i;:::-;18977:72;;18690:370;18521:545;:::o;14538:544::-;14918:88;;-1:-1:-1;;;14918:88:85;;-1:-1:-1;;;;;5656:32:114;;;14918:88:85;;;5638:51:114;14973:4:85;5705:18:114;;;5698:60;5774:18;;;5767:34;;;5817:18;;;5810:34;;;5893:4;5881:17;;5860:19;;;5853:46;5915:19;;;5908:35;;;5959:19;;;5952:35;;;14884:18:85;;14938:7;14918:36;;;;;;5610:19:114;;14918:88:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15023:52;15030:6;15038:8;15048:7;15057:17;;15023:6;:52::i;:::-;15016:59;14538:544;-1:-1:-1;;;;;;;;;;14538:544:85:o;16494:504::-;16555:27;16585:21;;;:9;:21;;;;;16620:9;;;;-1:-1:-1;;;;;16620:9:85;16633:10;16620:23;16616:96;;16691:9;;;;16666:35;;-1:-1:-1;;;16666:35:85;;16679:10;16666:35;;;6172:51:114;-1:-1:-1;;;;;16691:9:85;;;6239:18:114;;;6232:60;6145:18;;16666:35:85;;;;;;;;16616:96;16725:16;;;;-1:-1:-1;;;16725:16:85;;;;16745:1;16725:21;16721:99;;16769:40;;-1:-1:-1;;;16769:40:85;;;;;6477:25:114;;;16798:10:85;6518:18:114;;;6511:60;6450:18;;16769:40:85;6303:274:114;16721:99:85;16907:44;16915:10;16927:3;2318:16;16907:7;:44::i;:::-;16961:30;16975:10;16987:3;16961:13;:30::i;:::-;16545:453;16494:504;:::o;9053:163::-;9114:7;9140:69;9154:7;-1:-1:-1;;;;;9154:19:85;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9140:6;;9177:11;9190:18;9140:13;:69::i;:::-;9133:76;9053:163;-1:-1:-1;;9053:163:85:o;17842:581::-;17925:17;17984:21;;;:9;:21;;;;;18100:16;;;;17925:17;;18119:16;;18082:34;;-1:-1:-1;;;18100:16:85;;;;18082:15;:34;:::i;:::-;:53;18081:111;;18177:15;18081:111;;;18139:16;;;;:35;;18158:16;;-1:-1:-1;;;18139:16:85;;;;:35;:::i;:::-;18231:15;;;;18066:126;;-1:-1:-1;18202:19:85;;18224:22;;-1:-1:-1;;;18231:15:85;;;;18066:126;18224:22;:::i;:::-;18202:44;;18256:20;18279:25;18294:3;:9;;;18279:14;:25::i;:::-;18256:48;;2829:3;18381:18;18366:11;18341:9;18351:3;:11;;;;;;;;;;;;18341:22;;;;;;;;;;:::i;:::-;;;;;;;;;18326:12;:37;;;;:::i;:::-;:51;;;;:::i;:::-;:74;;;;:::i;:::-;:90;;;;:::i;:::-;18314:102;17842:581;-1:-1:-1;;;;;;;17842:581:85:o;17262:258::-;17317:27;17347:21;;;:9;:21;;;;;17382:16;;;;17347:21;;-1:-1:-1;;;17382:16:85;;;;;:21;;17378:99;;17426:40;;-1:-1:-1;;;17426:40:85;;;;;6477:25:114;;;17455:10:85;6518:18:114;;;6511:60;6450:18;;17426:40:85;6303:274:114;17378:99:85;17486:27;17494:10;17506:3;17511:1;17486:7;:27::i;15408:801::-;15500:9;:16;15490:26;;;;15482:61;;;;-1:-1:-1;;;15482:61:85;;6973:2:114;15482:61:85;;;6955:21:114;7012:2;6992:18;;;6985:30;-1:-1:-1;;;7031:18:114;;;7024:52;7093:18;;15482:61:85;6771:346:114;15482:61:85;15553:27;15583:21;;;:9;:21;;;;;15618:16;;;;15583:21;;-1:-1:-1;;;15618:16:85;;;;;:21;;15614:99;;15662:40;;-1:-1:-1;;;15662:40:85;;;;;6477:25:114;;;15691:10:85;6518:18:114;;;6511:60;6450:18;;15662:40:85;6303:274:114;15614:99:85;15726:9;;;;-1:-1:-1;;;;;15726:9:85;15739:10;15726:23;15722:96;;15797:9;;;;15772:35;;-1:-1:-1;;;15772:35:85;;15785:10;15772:35;;;6172:51:114;-1:-1:-1;;;;;15797:9:85;;;6239:18:114;;;6232:60;6145:18;;15772:35:85;5998:300:114;15722:96:85;15925:11;;;;;-1:-1:-1;;;15925:11:85;;;;;15915:21;;;;15907:55;;;;-1:-1:-1;;;15907:55:85;;7324:2:114;15907:55:85;;;7306:21:114;7363:2;7343:18;;;7336:30;-1:-1:-1;;;7382:18:114;;;7375:51;7443:18;;15907:55:85;7122:345:114;15907:55:85;15972:27;15980:10;15992:3;15997:1;15972:7;:27::i;:::-;16046:9;;16030:11;;;;16009:20;:33;;:20;;-1:-1:-1;;;16030:11:85;;;;;16009:33;;;;;;:::i;:::-;;;;;;;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;16098:9:85;;16065:20;:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;16117:11:85;;;:21;;-1:-1:-1;;;;;16117:21:85;;-1:-1:-1;;;16117:21:85;;;;;;;;;;;;16153:49;;7617:42:114;;;-1:-1:-1;;;;;16183:9:85;;;;;;;16171:10;;16153:49;;7605:2:114;7590:18;16153:49:85;;;;;;;15472:737;15408:801;;:::o;4330:37::-;;;;;;;;;;;;8667:163;8728:7;8754:69;8768:11;8781:7;-1:-1:-1;;;;;8781:19:85;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8754:6;;:69;8804:18;8754:13;:69::i;19288:161::-;19342:24;19425:17;:15;:17::i;:::-;19398:16;;:23;;19417:4;19398:23;:::i;9834:4055::-;9954:18;10016:20;10039:22;10054:6;10039:14;:22::i;:::-;10016:45;;10220:16;10239:7;-1:-1:-1;;;;;10239:16:85;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10220:37;;10284:8;10275:6;:17;10271:102;;;10319:39;;-1:-1:-1;;;10319:39:85;;-1:-1:-1;;;;;7890:32:114;;10319:39:85;;;7872:51:114;7939:18;;;7932:34;;;7982:18;;;7975:34;;;7845:18;;10319:39:85;7670:345:114;10271:102:85;-1:-1:-1;10410:9:85;:16;10400:26;;;;10392:61;;;;-1:-1:-1;;;10392:61:85;;6973:2:114;10392:61:85;;;6955:21:114;7012:2;6992:18;;;6985:30;-1:-1:-1;;;7031:18:114;;;7024:52;7093:18;;10392:61:85;6771:346:114;10392:61:85;10562:16;;10496:11;;10464:29;;10542:17;:15;:17::i;:::-;:36;;;;:::i;:::-;10517:61;-1:-1:-1;10621:1:85;10593:29;;10589:888;;10703:9;10698:769;10722:28;10749:1;10722:17;:28;:::i;:::-;10718:1;:32;10698:769;;;10775:27;10805:9;:31;10815:17;;10833:1;10815:20;;;;;;;:::i;:::-;;;;;;;10805:31;;;;;;;;;;;10775:61;;10858:3;:16;;;;;;;;;;;;:21;;10878:1;10858:21;10854:123;;10927:17;;10945:1;10927:20;;;;;;;:::i;:::-;10910:48;;-1:-1:-1;;;10910:48:85;;10927:20;;;;;;;;;10910:48;;;6477:25:114;-1:-1:-1;;;;;;6538:32:114;;6518:18;;;6511:60;6450:18;;10910:48:85;6303:274:114;10854:123:85;11049:11;;;;;-1:-1:-1;;;11049:11:85;;;;;11038:22;;;;11034:139;;11120:11;;;;11101:8;;11111:7;;-1:-1:-1;;;11120:11:85;;;;11133:17;;11151:1;11133:20;;;;;;;:::i;:::-;11091:63;;-1:-1:-1;;;11091:63:85;;-1:-1:-1;;;;;8265:32:114;;;;11091:63:85;;;8247:51:114;8346:10;8334:23;;;8314:18;;;8307:51;8394:23;;;;8374:18;;;8367:51;11133:20:85;;;;;;8434:18:114;;;8427:34;-1:-1:-1;8219:19:114;;11091:63:85;8020:447:114;11034:139:85;11194:9;;:33;-1:-1:-1;11190:113:85;;;11275:9;;;-1:-1:-1;11190:113:85;11357:37;11365:17;;11383:1;11365:20;;;;;;;:::i;:::-;;;;;;;11387:3;11392:1;11357:7;:37::i;:::-;11412:40;11426:17;;11444:1;11426:20;;;;;;;:::i;:::-;;;;;;;11448:3;11412:13;:40::i;:::-;-1:-1:-1;10752:3:85;;10698:769;;;;10589:888;11523:16;;11503:17;:15;:17::i;:::-;:36;;;;:::i;:::-;11486:53;-1:-1:-1;11554:28:85;;11550:1294;;11659:13;11675:28;11702:1;11675:17;:28;:::i;:::-;11659:44;;11717:31;11751:9;:35;11761:17;;11779:5;11761:24;;;;;;;:::i;:::-;;;;;;;11751:35;;;;;;;;;;;11717:69;;11804:7;:20;;;;;;;;;;;;:25;;11828:1;11804:25;11800:123;;11873:17;;11891:5;11873:24;;;;;;;:::i;11800:123::-;11987:15;;;;;-1:-1:-1;;;11987:15:85;;;;;11976:26;;;;11972:143;;12058:15;;;;12039:8;;12049:7;;-1:-1:-1;;;12058:15:85;;;;12075:17;;12093:5;12075:24;;;;;;;:::i;11972:143::-;12132:13;;:37;-1:-1:-1;12128:113:85;;;12213:13;;;-1:-1:-1;12128:113:85;12287:62;12295:17;;12313:5;12295:24;;;;;;;:::i;:::-;;;;;;;12321:7;2318:16;12287:7;:62::i;:::-;12384:12;12367:14;:29;12363:151;;;12423:76;;-1:-1:-1;;;12423:76:85;;-1:-1:-1;;;;;8721:32:114;;12423:76:85;;;8703:51:114;8770:18;;;8763:34;;;8813:18;;;8806:34;;;8856:18;;;8849:34;;;8675:19;;12423:76:85;8472:417:114;12363:151:85;12527:24;12554:29;12569:14;12554:12;:29;:::i;:::-;12620:13;;12527:56;;-1:-1:-1;12641:3:85;;12620:18;;12636:2;12620:18;:::i;:::-;:24;;;;:::i;:::-;12601:16;:43;12597:237;;;12664:48;12678:17;;12696:5;12678:24;;;;;;;:::i;:::-;;;;;;;12704:7;12664:13;:48::i;:::-;12597:237;;;12751:68;12767:17;;12785:5;12767:24;;;;;;;:::i;:::-;;;;;;;12793:7;12802:16;12751:15;:68::i;:::-;11584:1260;;;11550:1294;12890:16;;12870:17;:15;:17::i;:::-;:36;;;;:::i;:::-;12853:53;;12936:14;12921:12;:29;12917:129;;;12973:62;;-1:-1:-1;;;12973:62:85;;-1:-1:-1;;;;;7890:32:114;;12973:62:85;;;7872:51:114;7939:18;;;7932:34;;;7982:18;;;7975:34;;;7845:18;;12973:62:85;7670:345:114;12917:129:85;13162:21;13130:29;13147:12;13130:14;:29;:::i;:::-;:53;13126:167;;;13206:76;;-1:-1:-1;;;13206:76:85;;-1:-1:-1;;;;;8721:32:114;;13206:76:85;;;8703:51:114;8770:18;;;8763:34;;;8813:18;;;8806:34;;;8856:18;;;8849:34;;;8675:19;;13206:76:85;8472:417:114;13126:167:85;13323:70;13350:7;13359:10;13379:4;13386:6;13323:26;:70::i;:::-;13433:14;:16;;;:14;:16;;;:::i;:::-;;;;;13420:29;;13459:26;13488:9;:21;13498:10;13488:21;;;;;;;;;;;13459:50;;13530:12;13519:2;:8;;:23;;;;13563:8;13552:2;:8;;;:19;;;;;-1:-1:-1;;;;;13552:19:85;;;;;-1:-1:-1;;;;;13552:19:85;;;;;;13605:15;13581:2;:14;;;:40;;;;;;;;;;;;;;;;;;13656:15;13631:2;:15;;;:41;;;;;;;;;;;;;;;;;;13695:7;13682:2;:10;;;:20;;;;;;;;;;;;;;;;;;13746:12;13713:20;13734:7;13713:29;;;;;;;;;;:::i;:::-;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;13788:12;13768:16;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;13843:8:85;;;;13861;;13815:67;;;9234:25:114;;;9290:2;9275:18;;9268:34;;;;13871:10:85;-1:-1:-1;;;13871:10:85;;;9318:18:114;;;9311:51;-1:-1:-1;;;;;13843:8:85;;;;13831:10;;13815:67;;9222:2:114;9207:18;13815:67:85;;;;;;;9974:3915;;;;9834:4055;;;;;;;:::o;5339:1779::-;5592:16;;;;5558:12;;5611:16;;5574:34;;-1:-1:-1;;;5592:16:85;;;;5574:15;:34;:::i;:::-;:53;5573:111;;5669:15;5573:111;;;5631:16;;;;:35;;5650:16;;-1:-1:-1;;;5631:16:85;;;;:35;:::i;:::-;5723:15;;;;5558:126;;-1:-1:-1;5694:19:85;;5716:22;;-1:-1:-1;;;5723:15:85;;;;5558:126;5716:22;:::i;:::-;5694:44;;5748:20;5771:25;5786:3;:9;;;5771:14;:25::i;:::-;5748:48;;5806:20;2829:3;5884:18;5869:11;5844:9;5854:3;:11;;;;;;;;;;;;5844:22;;;;;;;;;;:::i;:::-;;;;;;;;;5829:12;:37;;;;:::i;:::-;:51;;;;:::i;:::-;:74;;;;:::i;:::-;:90;;;;:::i;:::-;5806:113;;5949:12;5933;:28;5929:145;;-1:-1:-1;6051:12:85;5929:145;6117:1;6087:27;6102:12;6087;:27;:::i;:::-;:31;6083:961;;;6188:21;6212:43;6227:27;6242:12;6227;:27;:::i;6212:43::-;6188:67;;6269:18;6302:13;6290:3;:9;;;:25;;;;:::i;:::-;6269:46;;6366:10;6329:20;6350:3;:11;;;;;;;;;;;;6329:33;;;;;;;;;;:::i;:::-;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;6410:10;6390:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;6434:25:85;;;6473:15;;;:41;;;6498:15;6473:41;;-1:-1:-1;;;6473:41:85;-1:-1:-1;;;;6473:41:85;;;;;;;;6533:80;;;9234:25:114;;;9290:2;9275:18;;9268:34;;;-1:-1:-1;;;6601:11:85;;;;;;9318:18:114;;;9311:51;;;;-1:-1:-1;;;;;6561:9:85;;;;;;;6549:10;;6533:80;;9222:2:114;9207:18;6533:80:85;;;;;;;6120:504;;6083:961;;;6737:9;;6721:11;;;;6700:20;:33;;:20;;-1:-1:-1;;;6721:11:85;;;;;6700:33;;;;;;:::i;:::-;;;;;;;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;6780:9:85;;6760:16;:29;;6780:9;;6760:29;;6780:9;;6760:29;:::i;:::-;;;;-1:-1:-1;;6836:9:85;;;;6808:68;;;9234:25:114;;;6836:9:85;9290:2:114;9275:18;;9268:34;6864:11:85;-1:-1:-1;;;6864:11:85;;;9318:18:114;;;9311:51;6808:68:85;;-1:-1:-1;;;;;6836:9:85;;;;6824:10;;6808:68;;;;;;9222:2:114;6808:68:85;;;6923:9;;;;6895:41;;6923:9;391:25:114;;-1:-1:-1;;;;;6923:9:85;;;;6911:10;;6895:41;;379:2:114;364:18;6895:41:85;;;;;;;6957:9;;;6950:16;;-1:-1:-1;;;;;;6980:23:85;;;6957:9;7017:16;;6083:961;7053:58;7076:7;7085:11;7098:12;7053:22;:58::i;:::-;5439:1679;;;;5339:1779;;;:::o;7263:467::-;7390:9;;7374:11;;;;7353:20;:33;;:20;;-1:-1:-1;;;7374:11:85;;;;;7353:33;;;;;;:::i;:::-;;;;;;;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;7429:9:85;;7409:16;:29;;7429:9;;7409:29;;7429:9;;7409:29;:::i;:::-;;;;-1:-1:-1;;7464:9:85;;;;7515;;-1:-1:-1;;;;;7464:9:85;;;;7448:13;;7500:25;;:14;:25::i;:::-;7483:42;;7568:5;-1:-1:-1;;;;;7540:42:85;7556:10;7540:42;7575:6;7540:42;;;;391:25:114;;379:2;364:18;;245:177;7540:42:85;;;;;;;;7599:9;;;7592:16;;-1:-1:-1;;;;;;7618:23:85;;;7599:9;7651:16;;7677:46;7700:7;7709:5;7716:6;7677:22;:46::i;:::-;7343:387;;7263:467;;:::o;6012:299:49:-;6113:7;6132:14;6149:25;6156:1;6159;6162:11;6149:6;:25::i;:::-;6132:42;-1:-1:-1;6200:11:49;6188:8;:23;;;;;;;;:::i;:::-;;:56;;;;;6243:1;6228:11;6215:25;;;;;:::i;:::-;6225:1;6222;6215:25;:29;6188:56;6184:98;;;6260:11;6270:1;6260:11;;:::i;:::-;;;6184:98;6298:6;-1:-1:-1;6012:299:49;;;;;;;:::o;5083:111:85:-;5132:7;5184:3;5158:23;2238:2;5158:11;:23;:::i;7901:498::-;8038:9;;8023:24;;8015:55;;;;-1:-1:-1;;;8015:55:85;;10585:2:114;8015:55:85;;;10567:21:114;10624:2;10604:18;;;10597:30;-1:-1:-1;;;10643:18:114;;;10636:48;10701:18;;8015:55:85;10383:342:114;8015:55:85;8080:14;8097:28;8112:12;8097:14;:28::i;:::-;8080:45;;8148:12;8135:3;:9;;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;8191:11:85;;;;8170:20;:33;;8207:12;;-1:-1:-1;;;8191:11:85;;;;;8170:33;;;;;;:::i;:::-;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;8249:12;8229:16;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;8303:9:85;;;;8314;;8276:56;;;10904:25:114;;;10960:2;10945:18;;10938:34;;;-1:-1:-1;;;;;8303:9:85;;;;8291:10;;8276:56;;10877:18:114;8276:56:85;;;;;;;8374:9;;;;8342:50;;8365:7;;-1:-1:-1;;;;;8374:9:85;8385:6;8342:22;:50::i;1355:203:40:-;1482:68;;-1:-1:-1;;;;;11203:32:114;;;1482:68:40;;;11185:51:114;11272:32;;11252:18;;;11245:60;11321:18;;;11314:34;;;1455:96:40;;1475:5;;-1:-1:-1;;;1505:27:40;11158:18:114;;1482:68:40;;;;-1:-1:-1;;1482:68:40;;;;;;;;;;;;;;-1:-1:-1;;;;;1482:68:40;-1:-1:-1;;;;;;1482:68:40;;;;;;;;;;1455:19;:96::i;941:175::-;1050:58;;-1:-1:-1;;;;;11551:32:114;;1050:58:40;;;11533:51:114;11600:18;;;11593:34;;;1023:86:40;;1043:5;;-1:-1:-1;;;1073:23:40;11506:18:114;;1050:58:40;11359:274:114;1023:86:40;941:175;;;:::o;1667:4213:49:-;1749:14;;;-1:-1:-1;;2286:1:49;2283;2276:20;2329:1;2326;2322:9;2313:18;;2384:5;2380:2;2377:13;2369:5;2365:2;2361:14;2357:34;2348:43;;;2486:5;2495:1;2486:10;2482:368;;2824:11;2816:5;:19;;;;;:::i;:::-;;2809:26;;;;;;2482:368;2974:5;2960:11;:19;2952:53;;;;-1:-1:-1;;;2952:53:49;;11840:2:114;2952:53:49;;;11822:21:114;11879:2;11859:18;;;11852:30;-1:-1:-1;;;11898:18:114;;;11891:51;11959:18;;2952:53:49;11638:345:114;2952:53:49;3261:17;3396:11;3393:1;3390;3383:25;3929:12;;3944:1;3929:16;;;3914:32;;4049:22;;;;;3557:21;;;4147:16;;;3510:20;;;;3499:32;;;3899:12;4294;;;4290:23;;;;4286:31;;;4406:12;;;;4397:21;;;;4755:1;:15;;4774:1;4754:21;;;5007;;;5003:25;;4992:36;5076:21;;;5072:25;;5061:36;5146:21;;;5142:25;;5131:36;5216:21;;;5212:25;;5201:36;5286:21;;;5282:25;;5271:36;5357:21;;;5353:25;;;5342:36;5821:15;;-1:-1:-1;;1667:4213:49;;;;;;:::o;5196:642:40:-;5615:23;5641:69;5669:4;5641:69;;;;;;;;;;;;;;;;;5649:5;-1:-1:-1;;;;;5641:27:40;;;:69;;;;;:::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;-1:-1:-1;;;5720:111:40;;12472:2:114;5720:111:40;;;12454:21:114;12511:2;12491:18;;;12484:30;12550:34;12530:18;;;12523:62;-1:-1:-1;;;12601:18:114;;;12594:40;12651:19;;5720:111:40;12270:406:114;4108:223:41;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4241;5446;5460:23;5487:6;-1:-1:-1;;;;;5487:11:41;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;7851;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:41;;;8113:60;;;;-1:-1:-1;;;8113:60:41;;13596:2:114;8113:60:41;;;13578:21:114;13635:2;13615:18;;;13608:30;13674:31;13654:18;;;13647:59;13723:18;;8113:60:41;13394:353:114;8113:60:41;-1:-1:-1;8208:10:41;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:41;;;;;;;;:::i;14:226:114:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:114;;14:226;-1:-1:-1;14:226:114:o;427:173::-;495:20;;-1:-1:-1;;;;;544:31:114;;534:42;;524:70;;590:1;587;580:12;524:70;427:173;;;:::o;605:163::-;672:20;;732:10;721:22;;711:33;;701:61;;758:1;755;748:12;773:367;836:8;846:6;900:3;893:4;885:6;881:17;877:27;867:55;;918:1;915;908:12;867:55;-1:-1:-1;941:20:114;;984:18;973:30;;970:50;;;1016:1;1013;1006:12;970:50;1053:4;1045:6;1041:17;1029:29;;1113:3;1106:4;1096:6;1093:1;1089:14;1081:6;1077:27;1073:38;1070:47;1067:67;;;1130:1;1127;1120:12;1067:67;773:367;;;;;:::o;1145:1227::-;1291:6;1299;1307;1315;1323;1331;1339;1347;1355;1408:3;1396:9;1387:7;1383:23;1379:33;1376:53;;;1425:1;1422;1415:12;1376:53;1470:23;;;-1:-1:-1;1536:38:114;1570:2;1555:18;;1536:38;:::i;:::-;1526:48;;1593:37;1626:2;1615:9;1611:18;1593:37;:::i;:::-;1583:47;;1681:2;1670:9;1666:18;1653:32;1708:18;1700:6;1697:30;1694:50;;;1740:1;1737;1730:12;1694:50;1779:70;1841:7;1832:6;1821:9;1817:22;1779:70;:::i;:::-;1868:8;;-1:-1:-1;1753:96:114;-1:-1:-1;;1976:3:114;1961:19;;1948:33;;-1:-1:-1;2059:3:114;2044:19;;2031:33;2108:4;2095:18;;2083:31;;2073:59;;2128:1;2125;2118:12;2073:59;1145:1227;;;;-1:-1:-1;1145:1227:114;;;;;;;;-1:-1:-1;2151:7:114;;2231:3;2216:19;;2203:33;;-1:-1:-1;2335:3:114;2320:19;2307:33;;1145:1227;-1:-1:-1;1145:1227:114:o;2916:346::-;2984:6;2992;3045:2;3033:9;3024:7;3020:23;3016:32;3013:52;;;3061:1;3058;3051:12;3013:52;-1:-1:-1;;3106:23:114;;;3226:2;3211:18;;;3198:32;;-1:-1:-1;2916:346:114:o;3267:298::-;3334:6;3342;3395:2;3383:9;3374:7;3370:23;3366:32;3363:52;;;3411:1;3408;3401:12;3363:52;3456:23;;;-1:-1:-1;3522:37:114;3555:2;3540:18;;3522:37;:::i;:::-;3512:47;;3267:298;;;;;:::o;3570:698::-;3682:6;3690;3698;3706;3714;3767:3;3755:9;3746:7;3742:23;3738:33;3735:53;;;3784:1;3781;3774:12;3735:53;3829:23;;;-1:-1:-1;3895:38:114;3929:2;3914:18;;3895:38;:::i;:::-;3885:48;;3952:37;3985:2;3974:9;3970:18;3952:37;:::i;:::-;3942:47;;4040:2;4029:9;4025:18;4012:32;4067:18;4059:6;4056:30;4053:50;;;4099:1;4096;4089:12;4053:50;4138:70;4200:7;4191:6;4180:9;4176:22;4138:70;:::i;:::-;3570:698;;;;-1:-1:-1;3570:698:114;;-1:-1:-1;4227:8:114;;4112:96;3570:698;-1:-1:-1;;;3570:698:114:o;4273:127::-;4334:10;4329:3;4325:20;4322:1;4315:31;4365:4;4362:1;4355:15;4389:4;4386:1;4379:15;4405:127;4466:10;4461:3;4457:20;4454:1;4447:31;4497:4;4494:1;4487:15;4521:4;4518:1;4511:15;4537:168;4610:9;;;4641;;4658:15;;;4652:22;;4638:37;4628:71;;4679:18;;:::i;4710:125::-;4775:9;;;4796:10;;;4793:36;;;4809:18;;:::i;4840:127::-;4901:10;4896:3;4892:20;4889:1;4882:31;4932:4;4929:1;4922:15;4956:4;4953:1;4946:15;4972:217;5012:1;5038;5028:132;;5082:10;5077:3;5073:20;5070:1;5063:31;5117:4;5114:1;5107:15;5145:4;5142:1;5135:15;5028:132;-1:-1:-1;5174:9:114;;4972:217::o;5194:128::-;5261:9;;;5282:11;;;5279:37;;;5296:18;;:::i;6582:184::-;6652:6;6705:2;6693:9;6684:7;6680:23;6676:32;6673:52;;;6721:1;6718;6711:12;6673:52;-1:-1:-1;6744:16:114;;6582:184;-1:-1:-1;6582:184:114:o;8894:135::-;8933:3;8954:17;;;8951:43;;8974:18;;:::i;:::-;-1:-1:-1;9021:1:114;9010:13;;8894:135::o;10251:127::-;10312:10;10307:3;10303:20;10300:1;10293:31;10343:4;10340:1;10333:15;10367:4;10364:1;10357:15;11988:277;12055:6;12108:2;12096:9;12087:7;12083:23;12079:32;12076:52;;;12124:1;12121;12114:12;12076:52;12156:9;12150:16;12209:5;12202:13;12195:21;12188:5;12185:32;12175:60;;12231:1;12228;12221:12;13088:301;13217:3;13255:6;13249:13;13301:6;13294:4;13286:6;13282:17;13277:3;13271:37;13363:1;13327:16;;13352:13;;;-1:-1:-1;13327:16:114;13088:301;-1:-1:-1;13088:301:114:o;13752:418::-;13901:2;13890:9;13883:21;13864:4;13933:6;13927:13;13976:6;13971:2;13960:9;13956:18;13949:34;14035:6;14030:2;14022:6;14018:15;14013:2;14002:9;13998:18;13992:50;14091:1;14086:2;14077:6;14066:9;14062:22;14058:31;14051:42;14161:2;14154;14150:7;14145:2;14137:6;14133:15;14129:29;14118:9;14114:45;14110:54;14102:62;;;13752:418;;;;:::o","linkReferences":{},"immutableReferences":{"62218":[{"start":990,"length":32},{"start":1284,"length":32},{"start":2403,"length":32},{"start":2584,"length":32},{"start":3928,"length":32},{"start":5159,"length":32},{"start":5456,"length":32},{"start":5922,"length":32}],"62220":[{"start":5192,"length":32}],"62222":[{"start":298,"length":32},{"start":1414,"length":32},{"start":2370,"length":32},{"start":2856,"length":32},{"start":5603,"length":32}]}},"methodIdentifiers":{"TAX_RATES(uint256)":"13f5c726","assetsToShares(uint256)":"e0b231fa","changeTax(uint256,uint32)":"b8b1bc51","exitPosition(uint256)":"78dc9059","getAverageTaxRate()":"21139a01","getPercentageStaked()":"e95beb93","nextPositionId()":"899346c7","outstandingStake()":"53432750","payTax(uint256)":"a05aaf50","permitAndSnatch(uint256,address,uint32,uint256[],uint256,uint8,bytes32,bytes32)":"5cb36034","positions(uint256)":"99fbab88","sharesToAssets(uint256)":"7fe0c850","snatch(uint256,address,uint32,uint256[])":"febf6b7b","taxDue(uint256,uint256)":"9d8e5ea7","totalSharesAtTaxRate(uint256)":"cbcebdba","totalSupply()":"18160ddd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_kraiken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_taxReceiver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"stakeWanted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableStake\",\"type\":\"uint256\"}],\"name\":\"ExceededAvailableStake\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NoPermission\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"PositionNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minStake\",\"type\":\"uint256\"}],\"name\":\"StakeTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"taxRateWanted\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"taxRateMet\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"name\":\"TaxTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"stakeWanted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"smallestShare\",\"type\":\"uint256\"}],\"name\":\"TooMuchSnatch\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kraikenDeposit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"taxRate\",\"type\":\"uint32\"}],\"name\":\"PositionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTaxRate\",\"type\":\"uint256\"}],\"name\":\"PositionRateHiked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kraikenPayout\",\"type\":\"uint256\"}],\"name\":\"PositionRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"kraikenPayout\",\"type\":\"uint256\"}],\"name\":\"PositionShrunk\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"taxPaid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"taxRate\",\"type\":\"uint256\"}],\"name\":\"PositionTaxPaid\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"TAX_RATES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"assetsToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"taxRate\",\"type\":\"uint32\"}],\"name\":\"changeTax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"name\":\"exitPosition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAverageTaxRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"averageTaxRate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPercentageStaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"percentageStaked\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextPositionId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"outstandingStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"name\":\"payTax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"taxRate\",\"type\":\"uint32\"},{\"internalType\":\"uint256[]\",\"name\":\"positionsToSnatch\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitAndSnatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"creationTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"lastTaxTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"taxRate\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"sharesToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"taxRate\",\"type\":\"uint32\"},{\"internalType\":\"uint256[]\",\"name\":\"positionsToSnatch\",\"type\":\"uint256[]\"}],\"name\":\"snatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"taxFloorDuration\",\"type\":\"uint256\"}],\"name\":\"taxDue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountDue\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"totalSharesAtTaxRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Self-assessed tax implementation: - Continuous auction mechanism - Self-assessed valuations create prediction market - Tax collection and redistribution through UBI\",\"errors\":{\"TaxTooLow(address,uint64,uint64,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}]},\"kind\":\"dev\",\"methods\":{\"assetsToShares(uint256)\":{\"params\":{\"assets\":\"Number of Kraiken tokens to convert.\"},\"returns\":{\"_0\":\"Number of shares corresponding to the input assets based on the current total supply of Kraiken tokens.\"}},\"changeTax(uint256,uint32)\":{\"details\":\"Ensures that the tax rate change is valid and applies the minimum tax based on the TAX_FLOOR_DURATION.\",\"params\":{\"positionId\":\"The ID of the staking position to update.\",\"taxRate\":\"The new tax rate to apply to the position.\"}},\"constructor\":{\"details\":\"Sets up the total supply based on the decimals of the Kraiken token plus a fixed offset.\",\"params\":{\"_kraiken\":\"Address of the Kraiken contract which this Stake contract interacts with.\"}},\"exitPosition(uint256)\":{\"details\":\"Pays the due taxes based on the TAX_FLOOR_DURATION and returns the remaining assets to the position owner.\",\"params\":{\"positionId\":\"The ID of the staking position to exit.\"}},\"getAverageTaxRate()\":{\"returns\":{\"averageTaxRate\":\"A number between 0 and 1e18 indicating the average tax rate.\"}},\"getPercentageStaked()\":{\"returns\":{\"percentageStaked\":\"A number between 0 and 1e18 indicating the percentage of Kraiken supply staked.\"}},\"payTax(uint256)\":{\"details\":\"Calculates and pays the tax due, possibly adjusting the position's share count.\",\"params\":{\"positionId\":\"The ID of the staking position for which to pay taxes.\"}},\"permitAndSnatch(uint256,address,uint32,uint256[],uint256,uint8,bytes32,bytes32)\":{\"params\":{\"assets\":\"Number of Kraiken tokens to stake.\",\"deadline\":\"Time until which the permit is valid.\",\"positionsToSnatch\":\"Array of position IDs that the new position will replace by snatching.\",\"receiver\":\"Address that will own the new staking position.\",\"taxRate\":\"The initial tax rate for the new staking position.\",\"v\":\", r, s Components of the signature for the permit.\"},\"returns\":{\"positionId\":\"The ID of the newly created staking position.\"}},\"sharesToAssets(uint256)\":{\"params\":{\"shares\":\"Number of shares to convert.\"},\"returns\":{\"_0\":\"The equivalent number of Kraiken tokens for the given shares.\"}},\"snatch(uint256,address,uint32,uint256[])\":{\"details\":\"Handles staking logic, including tax rate validation and position merging or dissolving.\",\"params\":{\"assets\":\"Amount of Kraiken tokens to convert into a staking position.\",\"positionsToSnatch\":\"Array of position IDs that the new position will replace by snatching.\",\"receiver\":\"Address that will own the new staking position.\",\"taxRate\":\"The initial tax rate for the new staking position.\"},\"returns\":{\"positionId\":\"The ID of the newly created staking position.\"}},\"taxDue(uint256,uint256)\":{\"details\":\"Calculates the tax due.\",\"params\":{\"positionId\":\"The ID of the staking position for which to pay taxes.\",\"taxFloorDuration\":\"if a minimum holding duration is applied to the position this value is > 0 in seconds.\"}}},\"title\":\"Stake Contract for Kraiken Token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"assetsToShares(uint256)\":{\"notice\":\"Converts Kraiken token assets to shares of the total staking pool.\"},\"changeTax(uint256,uint32)\":{\"notice\":\"Changes the tax rate of an existing staking position.\"},\"constructor\":{\"notice\":\"Initializes the stake contract with references to the Kraiken contract and sets the initial position ID.\"},\"exitPosition(uint256)\":{\"notice\":\"Allows the owner of a staking position to exit, returning the staked assets.\"},\"getPercentageStaked()\":{\"notice\":\"Computes the percentage of Kraiken staked from outstanding Stake and authorized Stake.\"},\"payTax(uint256)\":{\"notice\":\"Manually triggers the tax payment for a specified staking position.\"},\"permitAndSnatch(uint256,address,uint32,uint256[],uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Combines an ERC20 permit operation with the snatch function, allowing a staking position creation in one transaction.\"},\"sharesToAssets(uint256)\":{\"notice\":\"Converts shares of the total staking pool back to Kraiken token assets.\"},\"snatch(uint256,address,uint32,uint256[])\":{\"notice\":\"Creates a new staking position by potentially snatching shares from existing positions.\"},\"taxDue(uint256,uint256)\":{\"notice\":\"Calculates the Tax that is due to be paid on specific positoin\"}},\"notice\":\"This contract manages the staking positions for the Kraiken token, allowing users to stake tokens in exchange for a share of the total supply. Stakers can set and adjust tax rates on their stakes, which affect the Universal Basic Income (UBI) paid from the tax pool. The contract handles: - Creation of staking positions with specific tax rates. - Snatching of existing positions under certain conditions to consolidate stakes. - Calculation and payment of taxes based on stake duration and tax rate. - Adjustment of tax rates with protections against griefing through rapid changes. - Exiting of positions, either partially or fully, returning the staked assets to the owner. Tax rates and staking positions are adjustable, with a mechanism to prevent snatch-grieving by enforcing a minimum tax payment duration.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Stake.sol\":\"Stake\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@aperture/uni-v3-lib/=lib/uni-v3-lib/src/\",\":@openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":@uniswap-v3-core/=lib/uni-v3-lib/node_modules/@uniswap/v3-core/contracts/\",\":@uniswap-v3-periphery/=lib/uni-v3-lib/node_modules/@uniswap/v3-periphery/contracts/\",\":@uniswap/=lib/uni-v3-lib/node_modules/@uniswap/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":base64-sol/=lib/uni-v3-lib/node_modules/base64-sol/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pt-v5-twab-controller/=lib/pt-v5-twab-controller/src/\",\":ring-buffer-lib/=lib/pt-v5-twab-controller/lib/ring-buffer-lib/src/\",\":solady/=lib/uni-v3-lib/node_modules/solady/\",\":solmate/=lib/solmate/src/\",\":uni-v3-lib/=lib/uni-v3-lib/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xac6c2efc64baccbde4904ae18ed45139c9aa8cff96d6888344d1e4d2eb8b659f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e416a280c610b6b7a5f158e4a41aacfaec01ef14d5d1de13b46be9e090265fc\",\"dweb:/ipfs/QmYZP2KrdyccBbhLZT42auhvBTMkwiwUS3V6HWb42rbwbG\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xbb16110ffe0b625944fe7dd97adcf1158e514185c956a5628bc09be90d606174\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5b412e554a4dd37a50f89ffcd7b9a6ef2ae5064f37619f89343b23d58ce89ca\",\"dweb:/ipfs/QmPWMdBvdFk8WBVv625wd1Ar7aehnBWtj1XfFRrRL5KpxJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71\",\"dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"lib/openzeppelin-contracts/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0xc0e310c163edf15db45d4ff938113ab357f94fa86e61ea8e790853c4d2e13256\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04db5bc05dcb05ba1f6ca2dfbead17adc8a2e2f911aa80b05e7a36d9eaf96516\",\"dweb:/ipfs/QmVkfHZbXVBUPsTopueCn3qGJX8aEjahFF3Fn4NcygLNm5\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x8432884527a7ad91e6eed1cfc5a0811ae2073e5bca107bd0ca442e9236b03dbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3aa0eadab7aafcf91a95684765f778f64386f0368de88522ce873c21385278a\",\"dweb:/ipfs/QmPfaVAqWgH1QsT3dHVuL6jwMZbVKdoP8w1PvpiPT2FPWd\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/Kraiken.sol\":{\"keccak256\":\"0x1c942bc6eacd6f413c7e58e5d313e0a0b6ec642b4fcf28aedc7990f35df1d291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ba5284cf487489f6e33015ffcabafed502462e6ec27683e782066cc98cf861f\",\"dweb:/ipfs/Qme8uPk4hQPNDqMYG2NVxhwpCuq2a32mQbsTk4sdHPPhjx\"]},\"src/Stake.sol\":{\"keccak256\":\"0x64c687de1691b550bf533c9c5a9b5774b2127fe7ba94872230b489d751d113f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://66bb7c21be51cfe5b3066e2589df41b5fb14e635398fe9055799e0d6aa251e1a\",\"dweb:/ipfs/QmVB3vnYz9HqgKXZgMXTqJA5ZqadF83mGyRUCgdRTcRhEB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_kraiken","type":"address"},{"internalType":"address","name":"_taxReceiver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"stakeWanted","type":"uint256"},{"internalType":"uint256","name":"availableStake","type":"uint256"}],"type":"error","name":"ExceededAvailableStake"},{"inputs":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"NoPermission"},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"},{"internalType":"address","name":"requester","type":"address"}],"type":"error","name":"PositionNotFound"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"minStake","type":"uint256"}],"type":"error","name":"StakeTooLow"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint64","name":"taxRateWanted","type":"uint64"},{"internalType":"uint64","name":"taxRateMet","type":"uint64"},{"internalType":"uint256","name":"positionId","type":"uint256"}],"type":"error","name":"TaxTooLow"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"stakeWanted","type":"uint256"},{"internalType":"uint256","name":"availableStake","type":"uint256"},{"internalType":"uint256","name":"smallestShare","type":"uint256"}],"type":"error","name":"TooMuchSnatch"},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"kraikenDeposit","type":"uint256","indexed":false},{"internalType":"uint256","name":"share","type":"uint256","indexed":false},{"internalType":"uint32","name":"taxRate","type":"uint32","indexed":false}],"type":"event","name":"PositionCreated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"newTaxRate","type":"uint256","indexed":false}],"type":"event","name":"PositionRateHiked","anonymous":false},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"kraikenPayout","type":"uint256","indexed":false}],"type":"event","name":"PositionRemoved","anonymous":false},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"newShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"kraikenPayout","type":"uint256","indexed":false}],"type":"event","name":"PositionShrunk","anonymous":false},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"uint256","name":"taxPaid","type":"uint256","indexed":false},{"internalType":"uint256","name":"newShares","type":"uint256","indexed":false},{"internalType":"uint256","name":"taxRate","type":"uint256","indexed":false}],"type":"event","name":"PositionTaxPaid","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"TAX_RATES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function","name":"assetsToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"},{"internalType":"uint32","name":"taxRate","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"changeTax"},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"exitPosition"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAverageTaxRate","outputs":[{"internalType":"uint256","name":"averageTaxRate","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPercentageStaked","outputs":[{"internalType":"uint256","name":"percentageStaked","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextPositionId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"outstandingStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"payTax"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint32","name":"taxRate","type":"uint32"},{"internalType":"uint256[]","name":"positionsToSnatch","type":"uint256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permitAndSnatch","outputs":[{"internalType":"uint256","name":"positionId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"positions","outputs":[{"internalType":"uint256","name":"share","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint32","name":"creationTime","type":"uint32"},{"internalType":"uint32","name":"lastTaxTime","type":"uint32"},{"internalType":"uint32","name":"taxRate","type":"uint32"}]},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function","name":"sharesToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint32","name":"taxRate","type":"uint32"},{"internalType":"uint256[]","name":"positionsToSnatch","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"snatch","outputs":[{"internalType":"uint256","name":"positionId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"},{"internalType":"uint256","name":"taxFloorDuration","type":"uint256"}],"stateMutability":"view","type":"function","name":"taxDue","outputs":[{"internalType":"uint256","name":"amountDue","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSharesAtTaxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"assetsToShares(uint256)":{"params":{"assets":"Number of Kraiken tokens to convert."},"returns":{"_0":"Number of shares corresponding to the input assets based on the current total supply of Kraiken tokens."}},"changeTax(uint256,uint32)":{"details":"Ensures that the tax rate change is valid and applies the minimum tax based on the TAX_FLOOR_DURATION.","params":{"positionId":"The ID of the staking position to update.","taxRate":"The new tax rate to apply to the position."}},"constructor":{"details":"Sets up the total supply based on the decimals of the Kraiken token plus a fixed offset.","params":{"_kraiken":"Address of the Kraiken contract which this Stake contract interacts with."}},"exitPosition(uint256)":{"details":"Pays the due taxes based on the TAX_FLOOR_DURATION and returns the remaining assets to the position owner.","params":{"positionId":"The ID of the staking position to exit."}},"getAverageTaxRate()":{"returns":{"averageTaxRate":"A number between 0 and 1e18 indicating the average tax rate."}},"getPercentageStaked()":{"returns":{"percentageStaked":"A number between 0 and 1e18 indicating the percentage of Kraiken supply staked."}},"payTax(uint256)":{"details":"Calculates and pays the tax due, possibly adjusting the position's share count.","params":{"positionId":"The ID of the staking position for which to pay taxes."}},"permitAndSnatch(uint256,address,uint32,uint256[],uint256,uint8,bytes32,bytes32)":{"params":{"assets":"Number of Kraiken tokens to stake.","deadline":"Time until which the permit is valid.","positionsToSnatch":"Array of position IDs that the new position will replace by snatching.","receiver":"Address that will own the new staking position.","taxRate":"The initial tax rate for the new staking position.","v":", r, s Components of the signature for the permit."},"returns":{"positionId":"The ID of the newly created staking position."}},"sharesToAssets(uint256)":{"params":{"shares":"Number of shares to convert."},"returns":{"_0":"The equivalent number of Kraiken tokens for the given shares."}},"snatch(uint256,address,uint32,uint256[])":{"details":"Handles staking logic, including tax rate validation and position merging or dissolving.","params":{"assets":"Amount of Kraiken tokens to convert into a staking position.","positionsToSnatch":"Array of position IDs that the new position will replace by snatching.","receiver":"Address that will own the new staking position.","taxRate":"The initial tax rate for the new staking position."},"returns":{"positionId":"The ID of the newly created staking position."}},"taxDue(uint256,uint256)":{"details":"Calculates the tax due.","params":{"positionId":"The ID of the staking position for which to pay taxes.","taxFloorDuration":"if a minimum holding duration is applied to the position this value is > 0 in seconds."}}},"version":1},"userdoc":{"kind":"user","methods":{"assetsToShares(uint256)":{"notice":"Converts Kraiken token assets to shares of the total staking pool."},"changeTax(uint256,uint32)":{"notice":"Changes the tax rate of an existing staking position."},"constructor":{"notice":"Initializes the stake contract with references to the Kraiken contract and sets the initial position ID."},"exitPosition(uint256)":{"notice":"Allows the owner of a staking position to exit, returning the staked assets."},"getPercentageStaked()":{"notice":"Computes the percentage of Kraiken staked from outstanding Stake and authorized Stake."},"payTax(uint256)":{"notice":"Manually triggers the tax payment for a specified staking position."},"permitAndSnatch(uint256,address,uint32,uint256[],uint256,uint8,bytes32,bytes32)":{"notice":"Combines an ERC20 permit operation with the snatch function, allowing a staking position creation in one transaction."},"sharesToAssets(uint256)":{"notice":"Converts shares of the total staking pool back to Kraiken token assets."},"snatch(uint256,address,uint32,uint256[])":{"notice":"Creates a new staking position by potentially snatching shares from existing positions."},"taxDue(uint256,uint256)":{"notice":"Calculates the Tax that is due to be paid on specific positoin"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@aperture/uni-v3-lib/=lib/uni-v3-lib/src/","@openzeppelin/=lib/openzeppelin-contracts/contracts/","@uniswap-v3-core/=lib/uni-v3-lib/node_modules/@uniswap/v3-core/contracts/","@uniswap-v3-periphery/=lib/uni-v3-lib/node_modules/@uniswap/v3-periphery/contracts/","@uniswap/=lib/uni-v3-lib/node_modules/@uniswap/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","base64-sol/=lib/uni-v3-lib/node_modules/base64-sol/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pt-v5-twab-controller/=lib/pt-v5-twab-controller/src/","ring-buffer-lib/=lib/pt-v5-twab-controller/lib/ring-buffer-lib/src/","solady/=lib/uni-v3-lib/node_modules/solady/","solmate/=lib/solmate/src/","uni-v3-lib/=lib/uni-v3-lib/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Stake.sol":"Stake"},"evmVersion":"prague","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xac6c2efc64baccbde4904ae18ed45139c9aa8cff96d6888344d1e4d2eb8b659f","urls":["bzz-raw://6e416a280c610b6b7a5f158e4a41aacfaec01ef14d5d1de13b46be9e090265fc","dweb:/ipfs/QmYZP2KrdyccBbhLZT42auhvBTMkwiwUS3V6HWb42rbwbG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol":{"keccak256":"0xbb16110ffe0b625944fe7dd97adcf1158e514185c956a5628bc09be90d606174","urls":["bzz-raw://b5b412e554a4dd37a50f89ffcd7b9a6ef2ae5064f37619f89343b23d58ce89ca","dweb:/ipfs/QmPWMdBvdFk8WBVv625wd1Ar7aehnBWtj1XfFRrRL5KpxJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69","urls":["bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71","dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1","urls":["bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68","dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa","urls":["bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931","dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439","urls":["bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c","dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Counters.sol":{"keccak256":"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1","urls":["bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee","dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0xc0e310c163edf15db45d4ff938113ab357f94fa86e61ea8e790853c4d2e13256","urls":["bzz-raw://04db5bc05dcb05ba1f6ca2dfbead17adc8a2e2f911aa80b05e7a36d9eaf96516","dweb:/ipfs/QmVkfHZbXVBUPsTopueCn3qGJX8aEjahFF3Fn4NcygLNm5"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899","urls":["bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da","dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0","urls":["bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f","dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58","urls":["bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2","dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x8432884527a7ad91e6eed1cfc5a0811ae2073e5bca107bd0ca442e9236b03dbd","urls":["bzz-raw://e3aa0eadab7aafcf91a95684765f778f64386f0368de88522ce873c21385278a","dweb:/ipfs/QmPfaVAqWgH1QsT3dHVuL6jwMZbVKdoP8w1PvpiPT2FPWd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc","urls":["bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7","dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"],"license":"MIT"},"src/Kraiken.sol":{"keccak256":"0x1c942bc6eacd6f413c7e58e5d313e0a0b6ec642b4fcf28aedc7990f35df1d291","urls":["bzz-raw://8ba5284cf487489f6e33015ffcabafed502462e6ec27683e782066cc98cf861f","dweb:/ipfs/Qme8uPk4hQPNDqMYG2NVxhwpCuq2a32mQbsTk4sdHPPhjx"],"license":"GPL-3.0-or-later"},"src/Stake.sol":{"keccak256":"0x64c687de1691b550bf533c9c5a9b5774b2127fe7ba94872230b489d751d113f3","urls":["bzz-raw://66bb7c21be51cfe5b3066e2589df41b5fb14e635398fe9055799e0d6aa251e1a","dweb:/ipfs/QmVB3vnYz9HqgKXZgMXTqJA5ZqadF83mGyRUCgdRTcRhEB"],"license":"GPL-3.0-or-later"}},"version":1},"id":85}