From c5d94403e1ffce35eb24c7ff0699c02485093c0b Mon Sep 17 00:00:00 2001 From: giteadmin Date: Fri, 11 Jul 2025 13:47:00 +0200 Subject: [PATCH] Rename project from HARB/Harberg to KRAIKEN with KRK token symbol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Renamed core contract from Harberg.sol to Kraiken.sol - Updated token symbol from HARB to KRK - Renamed TypeScript library from harb-lib to kraiken-lib - Updated all contract imports and references across the codebase - Modified subgraph schema and source files for new naming - Updated transaction bot dependencies and service references - Fixed test files to use new contract and token names - Updated documentation in CLAUDE.md and README.md - Regenerated subgraph types and ABI files All components compile successfully and tests pass. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- subgraph/base_sepolia/abis/Kraiken.json | 1 + subgraph/base_sepolia/abis/Stake.json | 2 +- subgraph/base_sepolia/package-lock.json | 4 ++-- subgraph/base_sepolia/package.json | 10 +++++----- subgraph/base_sepolia/schema.graphql | 4 ++-- subgraph/base_sepolia/src/chains.ts | 6 +++--- .../base_sepolia/src/{harb.ts => kraiken.ts} | 12 ++++++------ subgraph/base_sepolia/src/stake.ts | 18 +++++++++--------- subgraph/base_sepolia/subgraph.yaml | 16 ++++++++-------- 9 files changed, 37 insertions(+), 36 deletions(-) create mode 100644 subgraph/base_sepolia/abis/Kraiken.json rename subgraph/base_sepolia/src/{harb.ts => kraiken.ts} (95%) diff --git a/subgraph/base_sepolia/abis/Kraiken.json b/subgraph/base_sepolia/abis/Kraiken.json new file mode 100644 index 0000000..11e3e95 --- /dev/null +++ b/subgraph/base_sepolia/abis/Kraiken.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"minStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"outstandingSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"peripheryContracts","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","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":[],"stateMutability":"nonpayable"},{"type":"function","name":"previousTotalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setLiquidityManager","inputs":[{"name":"liquidityManager_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPreviousTotalSupply","inputs":[{"name":"_ts","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingPool","inputs":[{"name":"stakingPool_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressAlreadySet","inputs":[]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]},{"type":"error","name":"ZeroAddressInSetter","inputs":[]}],"bytecode":{"object":"0x610160604052348015610010575f5ffd5b50604051611b59380380611b5983398101604081905261002f91610238565b6040805180820190915260018152603160f81b602082015282908190818460036100598382610321565b5060046100668282610321565b5061007691508390506005610123565b61012052610085816006610123565b61014052815160208084019190912060e052815190820120610100524660a05261011160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250610433915050565b5f60208351101561013e5761013783610155565b905061014f565b816101498482610321565b5060ff90505b92915050565b5f5f829050601f81511115610188578260405163305a27a960e01b815260040161017f91906103db565b60405180910390fd5b805161019382610410565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126101be575f5ffd5b81516001600160401b038111156101d7576101d761019b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102055761020561019b565b60405281815283820160200185101561021c575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610249575f5ffd5b82516001600160401b0381111561025e575f5ffd5b61026a858286016101af565b602085015190935090506001600160401b03811115610287575f5ffd5b610293858286016101af565b9150509250929050565b600181811c908216806102b157607f821691505b6020821081036102cf57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561031c57805f5260205f20601f840160051c810160208510156102fa5750805b601f840160051c820191505b81811015610319575f8155600101610306565b50505b505050565b81516001600160401b0381111561033a5761033a61019b565b61034e81610348845461029d565b846102d5565b6020601f821160018114610380575f83156103695750848201515b5f19600385901b1c1916600184901b178455610319565b5f84815260208120601f198516915b828110156103af578785015182556020948501946001909201910161038f565b50848210156103cc57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102cf575f1960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516116d56104845f395f61063401525f61060901525f610dcf01525f610da701525f610d0201525f610d2c01525f610d5601526116d55ff3fe608060405234801561000f575f5ffd5b5060043610610153575f3560e01c80637ecebe00116100bf578063a457c2d711610079578063a457c2d7146102b7578063a9059cbb146102ca578063b79be3f0146102dd578063caacafe214610303578063d505accf1461030b578063dd62ed3e1461031e575f5ffd5b80637ecebe001461025257806380ba0f0f1461026557806384b0196e1461026e57806395d89b41146102895780639c547c4b14610291578063a0712d68146102a4575f5ffd5b80633644e515116101105780633644e515146101e1578063375b3c0a146101e957806339509351146101f15780633c1624d41461020457806342966c681461021757806370a082311461022a575f5ffd5b806306fdde0314610157578063095ea7b31461017557806318160ddd1461019857806323b872dd146101aa5780633028f63a146101bd578063313ce567146101d2575b5f5ffd5b61015f610331565b60405161016c91906113bf565b60405180910390f35b6101886101833660046113f3565b6103c1565b604051901515815260200161016c565b6002545b60405190815260200161016c565b6101886101b836600461141b565b6103da565b6101d06101cb366004611455565b6103fd565b005b6040516012815260200161016c565b61019c610472565b61019c610480565b6101886101ff3660046113f3565b610491565b6101d0610212366004611455565b6104b2565b6101d061022536600461146e565b610527565b61019c610238366004611455565b6001600160a01b03165f9081526020819052604090205490565b61019c610260366004611455565b6105df565b61019c600b5481565b6102766105fc565b60405161016c9796959493929190611485565b61015f610683565b6101d061029f36600461146e565b610692565b6101d06102b236600461146e565b6106c1565b6101886102c53660046113f3565b61077f565b6101886102d83660046113f3565b6107f9565b600954600a54604080516001600160a01b0393841681529290911660208301520161016c565b61019c610806565b6101d061031936600461151b565b61082d565b61019c61032c366004611588565b61098e565b606060038054610340906115b9565b80601f016020809104026020016040519081016040528092919081815260200182805461036c906115b9565b80156103b75780601f1061038e576101008083540402835291602001916103b7565b820191905f5260205f20905b81548152906001019060200180831161039a57829003601f168201915b5050505050905090565b5f336103ce8185856109b8565b60019150505b92915050565b5f336103e7858285610adc565b6103f2858585610b54565b506001949350505050565b6001600160a01b0381165f0361042657604051633b2e669960e01b815260040160405180910390fd5b600a546001600160a01b03161561045057604051637b1616c160e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61047b610cf6565b905090565b5f610bb8600b5461047b91906115ff565b5f336103ce8185856104a3838361098e565b6104ad919061161e565b6109b8565b6001600160a01b0381165f036104db57604051633b2e669960e01b815260040160405180910390fd5b6009546001600160a01b03161561050557604051637b1616c160e11b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b0316331461055a5760405162461bcd60e51b815260040161055190611631565b60405180910390fd5b80156105dc57600a546001600160a01b03165f9081526020819052604090205480156105c4575f8161058b60025490565b6105959190611661565b61059f8484611674565b6105a991906115ff565b600a549091506105c2906001600160a01b031682610e1f565b505b6009546105da906001600160a01b031683610e1f565b505b50565b6001600160a01b0381165f908152600760205260408120546103d4565b5f6060808280808361062f7f00000000000000000000000000000000000000000000000000000000000000006005610f47565b61065a7f00000000000000000000000000000000000000000000000000000000000000006006610f47565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b606060048054610340906115b9565b6009546001600160a01b031633146106bc5760405162461bcd60e51b815260040161055190611631565b600b55565b6009546001600160a01b031633146106eb5760405162461bcd60e51b815260040161055190611631565b801561076d57600a546001600160a01b03165f908152602081905260409020548015610755575f8161071c60025490565b6107269190611661565b6107308484611674565b61073a91906115ff565b600a54909150610753906001600160a01b031682610ff0565b505b60095461076b906001600160a01b031683610ff0565b505b600b545f036105dc57600254600b5550565b5f338161078c828661098e565b9050838110156107ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610551565b6103f282868684036109b8565b5f336103ce818585610b54565b6009546001600160a01b03165f9081526020819052604081205460025461047b9190611661565b8342111561087d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610551565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108ab8c6110ae565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f610905826110d5565b90505f61091482878787611101565b9050896001600160a01b0316816001600160a01b0316146109775760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610551565b6109828a8a8a6109b8565b50505050505050505050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610a1a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610551565b6001600160a01b038216610a7b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610551565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f610ae7848461098e565b90505f198114610b4e5781811015610b415760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610551565b610b4e84848484036109b8565b50505050565b6001600160a01b038316610bb85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610551565b6001600160a01b038216610c1a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610551565b6001600160a01b0383165f9081526020819052604090205481811015610c915760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610551565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b4e565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610d4e57507f000000000000000000000000000000000000000000000000000000000000000046145b15610d7857507f000000000000000000000000000000000000000000000000000000000000000090565b61047b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216610e7f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610551565b6001600160a01b0382165f9081526020819052604090205481811015610ef25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610551565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610acf565b606060ff8314610f6157610f5a83611127565b90506103d4565b818054610f6d906115b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f99906115b9565b8015610fe45780601f10610fbb57610100808354040283529160200191610fe4565b820191905f5260205f20905b815481529060010190602001808311610fc757829003601f168201915b505050505090506103d4565b6001600160a01b0382166110465760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610551565b8060025f828254611057919061161e565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105da565b6001600160a01b0381165f9081526007602052604090208054600181018255905b50919050565b5f6103d46110e1610cf6565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f61111087878787611164565b9150915061111d81611221565b5095945050505050565b60605f6111338361136a565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561119957505f90506003611218565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156111ea573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611212575f60019250925050611218565b91505f90505b94509492505050565b5f8160048111156112345761123461168b565b0361123c5750565b60018160048111156112505761125061168b565b0361129d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610551565b60028160048111156112b1576112b161168b565b036112fe5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610551565b60038160048111156113125761131261168b565b036105dc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610551565b5f60ff8216601f8111156103d457604051632cd44ac360e21b815260040160405180910390fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6113d16020830184611391565b9392505050565b80356001600160a01b03811681146113ee575f5ffd5b919050565b5f5f60408385031215611404575f5ffd5b61140d836113d8565b946020939093013593505050565b5f5f5f6060848603121561142d575f5ffd5b611436846113d8565b9250611444602085016113d8565b929592945050506040919091013590565b5f60208284031215611465575f5ffd5b6113d1826113d8565b5f6020828403121561147e575f5ffd5b5035919050565b60ff60f81b8816815260e060208201525f6114a360e0830189611391565b82810360408401526114b58189611391565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561150a5783518352602093840193909201916001016114ec565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611531575f5ffd5b61153a886113d8565b9650611548602089016113d8565b95506040880135945060608801359350608088013560ff8116811461156b575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611599575f5ffd5b6115a2836113d8565b91506115b0602084016113d8565b90509250929050565b600181811c908216806115cd57607f821691505b6020821081036110cf57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261161957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156103d4576103d46115eb565b60208082526016908201527537b7363c903634b8bab4b234ba3c9036b0b730b3b2b960511b604082015260600190565b818103818111156103d4576103d46115eb565b80820281158282048414176103d4576103d46115eb565b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220bbc0598463dce7b9da7bca85feb96401227336a3c89f1b27973da93de6d32cb664736f6c634300081c0033","sourceMap":"544:5249:74:-:0;;;1466:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3178:431:47;;;;;;;;;;;;-1:-1:-1;;;3178:431:47;;;;1556:5:74;;;;;1535:7;2046:5:34;:13;1556:5:74;2046::34;:13;:::i;:::-;-1:-1:-1;2069:7:34;:17;2079:7;2069;:17;:::i;:::-;-1:-1:-1;3251:45:47;;-1:-1:-1;3251:4:47;;-1:-1:-1;3282:13:47;3251:30;:45::i;:::-;3243:53;;3317:51;:7;3351:16;3317:33;:51::i;:::-;3306:62;;3392:22;;;;;;;;;;3378:36;;3441:25;;;;;;3424:42;;3494:13;3477:30;;3542:23;4077:11;;4090:14;;4054:81;;;1929:95;4054:81;;;4204:25:98;4245:18;;;4238:34;;;;4288:18;;;4281:34;4106:13:47;4331:18:98;;;4324:34;4129:4:47;4374:19:98;;;4367:61;4018:7:47;;4176:19:98;;4054:81:47;;;;;;;;;;;;4044:92;;;;;;4037:99;;3963:180;;3542:23;3517:48;;-1:-1:-1;;3597:4:47;3575:27;;-1:-1:-1;544:5249:74;;-1:-1:-1;;544:5249:74;2895:341:43;2991:11;3040:2;3024:5;3018:19;:24;3014:216;;;3065:20;3079:5;3065:13;:20::i;:::-;3058:27;;;;3014:216;3142:5;3116:46;3157:5;3142;3116:46;:::i;:::-;-1:-1:-1;1371:66:43;;-1:-1:-1;3014:216:43;2895:341;;;;:::o;1689:286::-;1754:11;1777:17;1803:3;1777:30;;1835:2;1821:4;:11;:16;1817:72;;;1874:3;1860:18;;-1:-1:-1;;;1860:18:43;;;;;;;;:::i;:::-;;;;;;;;1817:72;1955:11;;1938:13;1955:4;1938:13;:::i;:::-;1930:36;;1689:286;-1:-1:-1;;;1689:286:43:o;14:127:98:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:98;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:98;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:98;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:98;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:98:o;874:557::-;973:6;981;1034:2;1022:9;1013:7;1009:23;1005:32;1002:52;;;1050:1;1047;1040:12;1002:52;1077:16;;-1:-1:-1;;;;;1105:30:98;;1102:50;;;1148:1;1145;1138:12;1102:50;1171:61;1224:7;1215:6;1204:9;1200:22;1171:61;:::i;:::-;1278:2;1263:18;;1257:25;1161:71;;-1:-1:-1;1257:25:98;-1:-1:-1;;;;;;1294:32:98;;1291:52;;;1339:1;1336;1329:12;1291:52;1362:63;1417:7;1406:8;1395:9;1391:24;1362:63;:::i;:::-;1352:73;;;874:557;;;;;:::o;1436:380::-;1515:1;1511:12;;;;1558;;;1579:61;;1633:4;1625:6;1621:17;1611:27;;1579:61;1686:2;1678:6;1675:14;1655:18;1652:38;1649:161;;1732:10;1727:3;1723:20;1720:1;1713:31;1767:4;1764:1;1757:15;1795:4;1792:1;1785:15;1649:161;;1436:380;;;:::o;1947:518::-;2049:2;2044:3;2041:11;2038:421;;;2085:5;2082:1;2075:16;2129:4;2126:1;2116:18;2199:2;2187:10;2183:19;2180:1;2176:27;2170:4;2166:38;2235:4;2223:10;2220:20;2217:47;;;-1:-1:-1;2258:4:98;2217:47;2313:2;2308:3;2304:12;2301:1;2297:20;2291:4;2287:31;2277:41;;2368:81;2386:2;2379:5;2376:13;2368:81;;;2445:1;2431:16;;2412:1;2401:13;2368:81;;;2372:3;;2038:421;1947:518;;;:::o;2641:1299::-;2761:10;;-1:-1:-1;;;;;2783:30:98;;2780:56;;;2816:18;;:::i;:::-;2845:97;2935:6;2895:38;2927:4;2921:11;2895:38;:::i;:::-;2889:4;2845:97;:::i;:::-;2991:4;3022:2;3011:14;;3039:1;3034:649;;;;3727:1;3744:6;3741:89;;;-1:-1:-1;3796:19:98;;;3790:26;3741:89;-1:-1:-1;;2598:1:98;2594:11;;;2590:24;2586:29;2576:40;2622:1;2618:11;;;2573:57;3843:81;;3004:930;;3034:649;1894:1;1887:14;;;1931:4;1918:18;;-1:-1:-1;;3070:20:98;;;3188:222;3202:7;3199:1;3196:14;3188:222;;;3284:19;;;3278:26;3263:42;;3391:4;3376:20;;;;3344:1;3332:14;;;;3218:12;3188:222;;;3192:3;3438:6;3429:7;3426:19;3423:201;;;3499:19;;;3493:26;-1:-1:-1;;3582:1:98;3578:14;;;3594:3;3574:24;3570:37;3566:42;3551:58;3536:74;;3423:201;-1:-1:-1;;;;3670:1:98;3654:14;;;3650:22;3637:36;;-1:-1:-1;2641:1299:98:o;4439:418::-;4588:2;4577:9;4570:21;4551:4;4620:6;4614:13;4663:6;4658:2;4647:9;4643:18;4636:34;4722:6;4717:2;4709:6;4705:15;4700:2;4689:9;4685:18;4679:50;4778:1;4773:2;4764:6;4753:9;4749:22;4745:31;4738:42;4848:2;4841;4837:7;4832:2;4824:6;4820:15;4816:29;4805:9;4801:45;4797:54;4789:62;;;4439:418;;;;:::o;4862:297::-;4980:12;;5027:4;5016:16;;;5010:23;;4980:12;5045:16;;5042:111;;;-1:-1:-1;;5119:4:98;5115:17;;;;5112:1;5108:25;5104:38;5093:50;;4862:297;-1:-1:-1;4862:297:98:o;:::-;544:5249:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610153575f3560e01c80637ecebe00116100bf578063a457c2d711610079578063a457c2d7146102b7578063a9059cbb146102ca578063b79be3f0146102dd578063caacafe214610303578063d505accf1461030b578063dd62ed3e1461031e575f5ffd5b80637ecebe001461025257806380ba0f0f1461026557806384b0196e1461026e57806395d89b41146102895780639c547c4b14610291578063a0712d68146102a4575f5ffd5b80633644e515116101105780633644e515146101e1578063375b3c0a146101e957806339509351146101f15780633c1624d41461020457806342966c681461021757806370a082311461022a575f5ffd5b806306fdde0314610157578063095ea7b31461017557806318160ddd1461019857806323b872dd146101aa5780633028f63a146101bd578063313ce567146101d2575b5f5ffd5b61015f610331565b60405161016c91906113bf565b60405180910390f35b6101886101833660046113f3565b6103c1565b604051901515815260200161016c565b6002545b60405190815260200161016c565b6101886101b836600461141b565b6103da565b6101d06101cb366004611455565b6103fd565b005b6040516012815260200161016c565b61019c610472565b61019c610480565b6101886101ff3660046113f3565b610491565b6101d0610212366004611455565b6104b2565b6101d061022536600461146e565b610527565b61019c610238366004611455565b6001600160a01b03165f9081526020819052604090205490565b61019c610260366004611455565b6105df565b61019c600b5481565b6102766105fc565b60405161016c9796959493929190611485565b61015f610683565b6101d061029f36600461146e565b610692565b6101d06102b236600461146e565b6106c1565b6101886102c53660046113f3565b61077f565b6101886102d83660046113f3565b6107f9565b600954600a54604080516001600160a01b0393841681529290911660208301520161016c565b61019c610806565b6101d061031936600461151b565b61082d565b61019c61032c366004611588565b61098e565b606060038054610340906115b9565b80601f016020809104026020016040519081016040528092919081815260200182805461036c906115b9565b80156103b75780601f1061038e576101008083540402835291602001916103b7565b820191905f5260205f20905b81548152906001019060200180831161039a57829003601f168201915b5050505050905090565b5f336103ce8185856109b8565b60019150505b92915050565b5f336103e7858285610adc565b6103f2858585610b54565b506001949350505050565b6001600160a01b0381165f0361042657604051633b2e669960e01b815260040160405180910390fd5b600a546001600160a01b03161561045057604051637b1616c160e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61047b610cf6565b905090565b5f610bb8600b5461047b91906115ff565b5f336103ce8185856104a3838361098e565b6104ad919061161e565b6109b8565b6001600160a01b0381165f036104db57604051633b2e669960e01b815260040160405180910390fd5b6009546001600160a01b03161561050557604051637b1616c160e11b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b0316331461055a5760405162461bcd60e51b815260040161055190611631565b60405180910390fd5b80156105dc57600a546001600160a01b03165f9081526020819052604090205480156105c4575f8161058b60025490565b6105959190611661565b61059f8484611674565b6105a991906115ff565b600a549091506105c2906001600160a01b031682610e1f565b505b6009546105da906001600160a01b031683610e1f565b505b50565b6001600160a01b0381165f908152600760205260408120546103d4565b5f6060808280808361062f7f00000000000000000000000000000000000000000000000000000000000000006005610f47565b61065a7f00000000000000000000000000000000000000000000000000000000000000006006610f47565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b606060048054610340906115b9565b6009546001600160a01b031633146106bc5760405162461bcd60e51b815260040161055190611631565b600b55565b6009546001600160a01b031633146106eb5760405162461bcd60e51b815260040161055190611631565b801561076d57600a546001600160a01b03165f908152602081905260409020548015610755575f8161071c60025490565b6107269190611661565b6107308484611674565b61073a91906115ff565b600a54909150610753906001600160a01b031682610ff0565b505b60095461076b906001600160a01b031683610ff0565b505b600b545f036105dc57600254600b5550565b5f338161078c828661098e565b9050838110156107ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610551565b6103f282868684036109b8565b5f336103ce818585610b54565b6009546001600160a01b03165f9081526020819052604081205460025461047b9190611661565b8342111561087d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610551565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108ab8c6110ae565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f610905826110d5565b90505f61091482878787611101565b9050896001600160a01b0316816001600160a01b0316146109775760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610551565b6109828a8a8a6109b8565b50505050505050505050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610a1a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610551565b6001600160a01b038216610a7b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610551565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f610ae7848461098e565b90505f198114610b4e5781811015610b415760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610551565b610b4e84848484036109b8565b50505050565b6001600160a01b038316610bb85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610551565b6001600160a01b038216610c1a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610551565b6001600160a01b0383165f9081526020819052604090205481811015610c915760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610551565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b4e565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610d4e57507f000000000000000000000000000000000000000000000000000000000000000046145b15610d7857507f000000000000000000000000000000000000000000000000000000000000000090565b61047b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216610e7f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610551565b6001600160a01b0382165f9081526020819052604090205481811015610ef25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610551565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610acf565b606060ff8314610f6157610f5a83611127565b90506103d4565b818054610f6d906115b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f99906115b9565b8015610fe45780601f10610fbb57610100808354040283529160200191610fe4565b820191905f5260205f20905b815481529060010190602001808311610fc757829003601f168201915b505050505090506103d4565b6001600160a01b0382166110465760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610551565b8060025f828254611057919061161e565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105da565b6001600160a01b0381165f9081526007602052604090208054600181018255905b50919050565b5f6103d46110e1610cf6565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f61111087878787611164565b9150915061111d81611221565b5095945050505050565b60605f6111338361136a565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561119957505f90506003611218565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156111ea573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611212575f60019250925050611218565b91505f90505b94509492505050565b5f8160048111156112345761123461168b565b0361123c5750565b60018160048111156112505761125061168b565b0361129d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610551565b60028160048111156112b1576112b161168b565b036112fe5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610551565b60038160048111156113125761131261168b565b036105dc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610551565b5f60ff8216601f8111156103d457604051632cd44ac360e21b815260040160405180910390fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6113d16020830184611391565b9392505050565b80356001600160a01b03811681146113ee575f5ffd5b919050565b5f5f60408385031215611404575f5ffd5b61140d836113d8565b946020939093013593505050565b5f5f5f6060848603121561142d575f5ffd5b611436846113d8565b9250611444602085016113d8565b929592945050506040919091013590565b5f60208284031215611465575f5ffd5b6113d1826113d8565b5f6020828403121561147e575f5ffd5b5035919050565b60ff60f81b8816815260e060208201525f6114a360e0830189611391565b82810360408401526114b58189611391565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561150a5783518352602093840193909201916001016114ec565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611531575f5ffd5b61153a886113d8565b9650611548602089016113d8565b95506040880135945060608801359350608088013560ff8116811461156b575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611599575f5ffd5b6115a2836113d8565b91506115b0602084016113d8565b90509250929050565b600181811c908216806115cd57607f821691505b6020821081036110cf57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261161957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156103d4576103d46115eb565b60208082526016908201527537b7363c903634b8bab4b234ba3c9036b0b730b3b2b960511b604082015260600190565b818103818111156103d4576103d46115eb565b80820281158282048414176103d4576103d46115eb565b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220bbc0598463dce7b9da7bca85feb96401227336a3c89f1b27973da93de6d32cb664736f6c634300081c0033","sourceMap":"544:5249:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1181:14:98;;1174:22;1156:41;;1144:2;1129:18;4444:197:34;1016:187:98;3255:106:34;3342:12;;3255:106;;;1354:25:98;;;1342:2;1327:18;3255:106:34;1208:177:98;5203:256:34;;;;;;:::i;:::-;;:::i;2570:235:74:-;;;;;;:::i;:::-;;:::i;:::-;;3104:91:34;;;3186:2;2102:36:98;;2090:2;2075:18;3104:91:34;1960:184:98;2836:113:36;;;:::i;3263:116:74:-;;;:::i;5854:234:34:-;;;;;;:::i;:::-;;:::i;1945:265:74:-;;;;;;:::i;:::-;;:::i;4760:496::-;;;;;;:::i;:::-;;:::i;3419:125:34:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:34;3493:7;3519:18;;;;;;;;;;;;3419:125;2603:126:36;;;;;;:::i;:::-;;:::i;986:34:74:-;;;;;;5021:633:47;;;:::i;:::-;;;;;;;;;;;;;:::i;2369:102:34:-;;;:::i;5374:117:74:-;;;;;;:::i;:::-;;:::i;3735:598::-;;;;;;:::i;:::-;;:::i;6575:427:34:-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;2996:126:74:-;3085:16;;3103:11;;2996:126;;;-1:-1:-1;;;;;3085:16:74;;;3979:51:98;;3103:11:74;;;;4061:2:98;4046:18;;4039:60;3952:18;2996:126:74;3805:300:98;5665:126:74;;;:::i;1923:626:36:-;;;;;;:::i;:::-;;:::i;3987:149:34:-;;;;;;:::i;:::-;;:::i;2158:98::-;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;734:10:41;4581:32:34;734:10:41;4597:7:34;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;734:10:41;5356:38:34;5372:4;734:10:41;5387:6:34;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:34;;5203:256;-1:-1:-1;;;;5203:256:34:o;2570:235:74:-;-1:-1:-1;;;;;2639:26:74;;2647:1;2639:26;2635:60;;2674:21;;-1:-1:-1;;;2674:21:74;;;;;;;;;;;2635:60;2709:11;;-1:-1:-1;;;;;2709:11:74;:25;2705:57;;2743:19;;-1:-1:-1;;;2743:19:74;;;;;;;;;;;2705:57;2772:11;:26;;-1:-1:-1;;;;;;2772:26:74;-1:-1:-1;;;;;2772:26:74;;;;;;;;;;2570:235::o;2836:113:36:-;2896:7;2922:20;:18;:20::i;:::-;2915:27;;2836:113;:::o;3263:116:74:-;3306:7;775:4;3332:19;;:40;;;;:::i;5854:234:34:-;5942:4;734:10:41;5996:64:34;734:10:41;6012:7:34;6049:10;6021:25;734:10:41;6012:7:34;6021:9;:25::i;:::-;:38;;;;:::i;:::-;5996:8;:64::i;1945:265:74:-;-1:-1:-1;;;;;2024:31:74;;2032:1;2024:31;2020:65;;2064:21;;-1:-1:-1;;;2064:21:74;;;;;;;;;;;2020:65;2099:16;;-1:-1:-1;;;;;2099:16:74;:30;2095:62;;2138:19;;-1:-1:-1;;;2138:19:74;;;;;;;;;;;2095:62;2167:16;:36;;-1:-1:-1;;;;;;2167:36:74;-1:-1:-1;;;;;2167:36:74;;;;;;;;;;1945:265::o;4760:496::-;1245:16;;-1:-1:-1;;;;;1245:16:74;1223:10;:39;1215:74;;;;-1:-1:-1;;;1215:74:74;;;;;;;:::i;:::-;;;;;;;;;4835:11;;4831:419:::1;;4960:11;::::0;-1:-1:-1;;;;;4960:11:74::1;4921:26;3519:18:34::0;;;;;;;;;;;4990:22:74;;4986:199:::1;;5032:19;5102:18;5086:13;3342:12:34::0;;;3255:106;5086:13:74::1;:34;;;;:::i;:::-;5054:28;5075:7:::0;5054:18;:28:::1;:::i;:::-;:67;;;;:::i;:::-;5145:11;::::0;5032:89;;-1:-1:-1;5139:31:74::1;::::0;-1:-1:-1;;;;;5145:11:74::1;5032:89:::0;5139:5:::1;:31::i;:::-;5014:171;4986:199;5212:16;::::0;5198:41:::1;::::0;-1:-1:-1;;;;;5212:16:74::1;5231:7:::0;5198:5:::1;:41::i;:::-;4848:402;4831:419;4760:496:::0;:::o;2603:126:36:-;-1:-1:-1;;;;;2698:14:36;;2672:7;2698:14;;;:7;:14;;;;;918::42;2698:24:36;827:112:42;5021:633:47;5136:13;5163:18;;5136:13;;;5163:18;5427:41;:5;5454:13;5427:26;:41::i;:::-;5482:47;:8;5512:16;5482:29;:47::i;:::-;5621:16;;;5605:1;5621:16;;;;;;;;;-1:-1:-1;;;5376:271:47;;;-1:-1:-1;5376:271:47;;-1:-1:-1;5543:13:47;;-1:-1:-1;5578:4:47;;-1:-1:-1;5605:1:47;-1:-1:-1;5621:16:47;-1:-1:-1;5376:271:47;-1:-1:-1;5021:633:47:o;2369:102:34:-;2425:13;2457:7;2450:14;;;;;:::i;5374:117:74:-;1245:16;;-1:-1:-1;;;;;1245:16:74;1223:10;:39;1215:74;;;;-1:-1:-1;;;1215:74:74;;;;;;;:::i;:::-;5459:19:::1;:25:::0;5374:117::o;3735:598::-;1245:16;;-1:-1:-1;;;;;1245:16:74;1223:10;:39;1215:74;;;;-1:-1:-1;;;1215:74:74;;;;;;;:::i;:::-;3810:11;;3806:422:::1;;3944:11;::::0;-1:-1:-1;;;;;3944:11:74::1;3905:26;3519:18:34::0;;;;;;;;;;;3974:22:74;;3970:193:::1;;4016:16;4083:18;4067:13;3342:12:34::0;;;3255:106;4067:13:74::1;:34;;;;:::i;:::-;4035:28;4056:7:::0;4035:18;:28:::1;:::i;:::-;:67;;;;:::i;:::-;4126:11;::::0;4016:86;;-1:-1:-1;4120:28:74::1;::::0;-1:-1:-1;;;;;4126:11:74::1;4016:86:::0;4120:5:::1;:28::i;:::-;3998:165;3970:193;4190:16;::::0;4176:41:::1;::::0;-1:-1:-1;;;;;4190:16:74::1;4209:7:::0;4176:5:::1;:41::i;:::-;3823:405;3806:422;4241:19;;4264:1;4241:24:::0;4237:90:::1;;3342:12:34::0;;4281:19:74::1;:35:::0;3735:598;:::o;6575:427:34:-;6668:4;734:10:41;6668:4:34;6749:25;734:10:41;6766:7:34;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:34;;7143:2:98;6784:85:34;;;7125:21:98;7182:2;7162:18;;;7155:30;7221:34;7201:18;;;7194:62;-1:-1:-1;;;7272:18:98;;;7265:35;7317:19;;6784:85:34;6941:401:98;6784:85:34;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;734:10:41;3873:28:34;734:10:41;3890:2:34;3894:6;3873:9;:28::i;5665:126:74:-;5767:16;;-1:-1:-1;;;;;5767:16:74;5715:7;3519:18:34;;;;;;;;;;;3342:12;;5741:43:74;;;;:::i;1923:626:36:-;2158:8;2139:15;:27;;2131:69;;;;-1:-1:-1;;;2131:69:36;;7549:2:98;2131:69:36;;;7531:21:98;7588:2;7568:18;;;7561:30;7627:31;7607:18;;;7600:59;7676:18;;2131:69:36;7347:353:98;2131:69:36;2211:18;1125:95;2271:5;2278:7;2287:5;2294:16;2304:5;2294:9;:16::i;:::-;2242:79;;;;;;7992:25:98;;;;-1:-1:-1;;;;;8053:32:98;;;8033:18;;;8026:60;8122:32;;;;8102:18;;;8095:60;8171:18;;;8164:34;8214:19;;;8207:35;8258:19;;;8251:35;;;7964:19;;2242:79:36;;;;;;;;;;;;2232:90;;;;;;2211:111;;2333:12;2348:28;2365:10;2348:16;:28::i;:::-;2333:43;;2387:14;2404:28;2418:4;2424:1;2427;2430;2404:13;:28::i;:::-;2387:45;;2460:5;-1:-1:-1;;;;;2450:15:36;:6;-1:-1:-1;;;;;2450:15:36;;2442:58;;;;-1:-1:-1;;;2442:58:36;;8499:2:98;2442:58:36;;;8481:21:98;8538:2;8518:18;;;8511:30;8577:32;8557:18;;;8550:60;8627:18;;2442:58:36;8297:354:98;2442:58:36;2511:31;2520:5;2527:7;2536:5;2511:8;:31::i;:::-;2121:428;;;1923:626;;;;;;;:::o;3987:149:34:-;-1:-1:-1;;;;;4102:18:34;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149::o;10457:340::-;-1:-1:-1;;;;;10558:19:34;;10550:68;;;;-1:-1:-1;;;10550:68:34;;8858:2:98;10550:68:34;;;8840:21:98;8897:2;8877:18;;;8870:30;8936:34;8916:18;;;8909:62;-1:-1:-1;;;8987:18:98;;;8980:34;9031:19;;10550:68:34;8656:400:98;10550:68:34;-1:-1:-1;;;;;10636:21:34;;10628:68;;;;-1:-1:-1;;;10628:68:34;;9263:2:98;10628:68:34;;;9245:21:98;9302:2;9282:18;;;9275:30;9341:34;9321:18;;;9314:62;-1:-1:-1;;;9392:18:98;;;9385:32;9434:19;;10628:68:34;9061:398:98;10628:68:34;-1:-1:-1;;;;;10707:18:34;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1354:25:98;;;10758:32:34;;1327:18:98;10758:32:34;;;;;;;;10457:340;;;:::o;11078:411::-;11178:24;11205:25;11215:5;11222:7;11205:9;:25::i;:::-;11178:52;;-1:-1:-1;;11244:16:34;:37;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:34;;9666:2:98;11297:68:34;;;9648:21:98;9705:2;9685:18;;;9678:30;9744:31;9724:18;;;9717:59;9793:18;;11297:68:34;9464:353:98;11297:68:34;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:34;;7544:68;;;;-1:-1:-1;;;7544:68:34;;10024:2:98;7544:68:34;;;10006:21:98;10063:2;10043:18;;;10036:30;10102:34;10082:18;;;10075:62;-1:-1:-1;;;10153:18:98;;;10146:35;10198:19;;7544:68:34;9822:401:98;7544:68:34;-1:-1:-1;;;;;7630:16:34;;7622:64;;;;-1:-1:-1;;;7622:64:34;;10430:2:98;7622:64:34;;;10412:21:98;10469:2;10449:18;;;10442:30;10508:34;10488:18;;;10481:62;-1:-1:-1;;;10559:18:98;;;10552:33;10602:19;;7622:64:34;10228:399:98;7622:64:34;-1:-1:-1;;;;;7768:15:34;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:34;;10834:2:98;7793:72:34;;;10816:21:98;10873:2;10853:18;;;10846:30;10912:34;10892:18;;;10885:62;-1:-1:-1;;;10963:18:98;;;10956:36;11009:19;;7793:72:34;10632:402:98;7793:72:34;-1:-1:-1;;;;;7899:15:34;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1354:25:98;;;8114:13:34;;8163:26;;1327:18:98;8163:26:34;;;;;;;8200:37;9375:659;3695:262:47;3748:7;3779:4;-1:-1:-1;;;;;3788:11:47;3771:28;;:63;;;;;3820:14;3803:13;:31;3771:63;3767:184;;;-1:-1:-1;3857:22:47;;3695:262::o;3767:184::-;3917:23;4054:81;;;1929:95;4054:81;;;12463:25:98;4077:11:47;12504:18:98;;;12497:34;;;;4090:14:47;12547:18:98;;;12540:34;4106:13:47;12590:18:98;;;12583:34;4129:4:47;12633:19:98;;;12626:61;4018:7:47;;12435:19:98;;4054:81:47;;;;;;;;;;;;4044:92;;;;;;4037:99;;3963:180;;9375:659:34;-1:-1:-1;;;;;9458:21:34;;9450:67;;;;-1:-1:-1;;;9450:67:34;;11241:2:98;9450:67:34;;;11223:21:98;11280:2;11260:18;;;11253:30;11319:34;11299:18;;;11292:62;-1:-1:-1;;;11370:18:98;;;11363:31;11411:19;;9450:67:34;11039:397:98;9450:67:34;-1:-1:-1;;;;;9613:18:34;;9588:22;9613:18;;;;;;;;;;;9649:24;;;;9641:71;;;;-1:-1:-1;;;9641:71:34;;11643:2:98;9641:71:34;;;11625:21:98;11682:2;11662:18;;;11655:30;11721:34;11701:18;;;11694:62;-1:-1:-1;;;11772:18:98;;;11765:32;11814:19;;9641:71:34;11441:398:98;9641:71:34;-1:-1:-1;;;;;9746:18:34;;:9;:18;;;;;;;;;;;9767:23;;;9746:44;;9883:12;:22;;;;;;;9931:37;1354:25:98;;;9746:9:34;;:18;9931:37;;1327:18:98;9931:37:34;1208:177:98;3367:268:43;3461:13;1371:66;3490:47;;3486:143;;3560:15;3569:5;3560:8;:15::i;:::-;3553:22;;;;3486:143;3613:5;3606:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8520:535:34;-1:-1:-1;;;;;8603:21:34;;8595:65;;;;-1:-1:-1;;;8595:65:34;;12046:2:98;8595:65:34;;;12028:21:98;12085:2;12065:18;;;12058:30;12124:33;12104:18;;;12097:61;12175:18;;8595:65:34;11844:355:98;8595:65:34;8747:6;8731:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8899:18:34;;:9;:18;;;;;;;;;;;:28;;;;;;8952:37;1354:25:98;;;8952:37:34;;1327:18:98;8952:37:34;;;;;;;9000:48;9375:659;3080:203:36;-1:-1:-1;;;;;3200:14:36;;3140:15;3200:14;;;:7;:14;;;;;918::42;;1050:1;1032:19;;;;918:14;3259:17:36;3157:126;3080:203;;;:::o;4768:165:47:-;4845:7;4871:55;4893:20;:18;:20::i;:::-;4915:10;8536:4:46;8530:11;-1:-1:-1;;;8554:23:46;;8606:4;8597:14;;8590:39;;;;8658:4;8649:14;;8642:34;8712:4;8697:20;;;8336:397;6598:232;6683:7;6703:17;6722:18;6744:25;6755:4;6761:1;6764;6767;6744:10;:25::i;:::-;6702:67;;;;6779:18;6791:5;6779:11;:18::i;:::-;-1:-1:-1;6814:9:46;6598:232;-1:-1:-1;;;;;6598:232:46:o;2059:405:43:-;2118:13;2143:11;2157:16;2168:4;2157:10;:16::i;:::-;2281:14;;;2292:2;2281:14;;;;;;;;;2143:30;;-1:-1:-1;2261:17:43;;2281:14;;;;;;;;;-1:-1:-1;;;2371:16:43;;;-1:-1:-1;2416:4:43;2407:14;;2400:28;;;;-1:-1:-1;2371:16:43;2059:405::o;5009:1456:46:-;5097:7;;6021:66;6008:79;;6004:161;;;-1:-1:-1;6119:1:46;;-1:-1:-1;6123:30:46;6103:51;;6004:161;6276:24;;;6259:14;6276:24;;;;;;;;;12925:25:98;;;12998:4;12986:17;;12966:18;;;12959:45;;;;13020:18;;;13013:34;;;13063:18;;;13056:34;;;6276:24:46;;12897:19:98;;6276:24:46;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6276:24:46;;-1:-1:-1;;6276:24:46;;;-1:-1:-1;;;;;;;6314:20:46;;6310:101;;6366:1;6370:29;6350:50;;;;;;;6310:101;6429:6;-1:-1:-1;6437:20:46;;-1:-1:-1;5009:1456:46;;;;;;;;:::o;570:511::-;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:441;;570:511;:::o;634:441::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:345;;788:34;;-1:-1:-1;;;788:34:46;;13435:2:98;788:34:46;;;13417:21:98;13474:2;13454:18;;;13447:30;13513:26;13493:18;;;13486:54;13557:18;;788:34:46;13233:348:98;730:345:46;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:236;;903:41;;-1:-1:-1;;;903:41:46;;13788:2:98;903:41:46;;;13770:21:98;13827:2;13807:18;;;13800:30;13866:33;13846:18;;;13839:61;13917:18;;903:41:46;13586:355:98;839:236:46;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:114;;1020:44;;-1:-1:-1;;;1020:44:46;;14148:2:98;1020:44:46;;;14130:21:98;14187:2;14167:18;;;14160:30;14226:34;14206:18;;;14199:62;-1:-1:-1;;;14277:18:98;;;14270:32;14319:19;;1020:44:46;13946:398:98;2536:245:43;2597:7;2669:4;2633:40;;2696:2;2687:11;;2683:69;;;2721:20;;-1:-1:-1;;;2721:20:43;;;;;;;;;;;14:289:98;56:3;94:5;88:12;121:6;116:3;109:19;177:6;170:4;163:5;159:16;152:4;147:3;143:14;137:47;229:1;222:4;213:6;208:3;204:16;200:27;193:38;292:4;285:2;281:7;276:2;268:6;264:15;260:29;255:3;251:39;247:50;240:57;;;14:289;;;;:::o;308:220::-;457:2;446:9;439:21;420:4;477:45;518:2;507:9;503:18;495:6;477:45;:::i;:::-;469:53;308:220;-1:-1:-1;;;308:220:98:o;533:173::-;601:20;;-1:-1:-1;;;;;650:31:98;;640:42;;630:70;;696:1;693;686:12;630:70;533:173;;;:::o;711:300::-;779:6;787;840:2;828:9;819:7;815:23;811:32;808:52;;;856:1;853;846:12;808:52;879:29;898:9;879:29;:::i;:::-;869:39;977:2;962:18;;;;949:32;;-1:-1:-1;;;711:300:98:o;1390:374::-;1467:6;1475;1483;1536:2;1524:9;1515:7;1511:23;1507:32;1504:52;;;1552:1;1549;1542:12;1504:52;1575:29;1594:9;1575:29;:::i;:::-;1565:39;;1623:38;1657:2;1646:9;1642:18;1623:38;:::i;:::-;1390:374;;1613:48;;-1:-1:-1;;;1730:2:98;1715:18;;;;1702:32;;1390:374::o;1769:186::-;1828:6;1881:2;1869:9;1860:7;1856:23;1852:32;1849:52;;;1897:1;1894;1887:12;1849:52;1920:29;1939:9;1920:29;:::i;2331:226::-;2390:6;2443:2;2431:9;2422:7;2418:23;2414:32;2411:52;;;2459:1;2456;2449:12;2411:52;-1:-1:-1;2504:23:98;;2331:226;-1:-1:-1;2331:226:98:o;2562:1238::-;2968:3;2963;2959:13;2951:6;2947:26;2936:9;2929:45;3010:3;3005:2;2994:9;2990:18;2983:31;2910:4;3037:46;3078:3;3067:9;3063:19;3055:6;3037:46;:::i;:::-;3131:9;3123:6;3119:22;3114:2;3103:9;3099:18;3092:50;3165:33;3191:6;3183;3165:33;:::i;:::-;3229:2;3214:18;;3207:34;;;-1:-1:-1;;;;;3278:32:98;;3272:3;3257:19;;3250:61;3298:3;3327:19;;3320:35;;;3392:22;;;3386:3;3371:19;;3364:51;3464:13;;3486:22;;;3536:2;3562:15;;;;-1:-1:-1;3524:15:98;;;;-1:-1:-1;3605:169:98;3619:6;3616:1;3613:13;3605:169;;;3680:13;;3668:26;;3723:2;3749:15;;;;3714:12;;;;3641:1;3634:9;3605:169;;;-1:-1:-1;3791:3:98;;2562:1238;-1:-1:-1;;;;;;;;;;;2562:1238:98:o;4110:903::-;4221:6;4229;4237;4245;4253;4261;4269;4322:3;4310:9;4301:7;4297:23;4293:33;4290:53;;;4339:1;4336;4329:12;4290:53;4362:29;4381:9;4362:29;:::i;:::-;4352:39;;4410:38;4444:2;4433:9;4429:18;4410:38;:::i;:::-;4400:48;-1:-1:-1;4517:2:98;4502:18;;4489:32;;-1:-1:-1;4618:2:98;4603:18;;4590:32;;-1:-1:-1;4700:3:98;4685:19;;4672:33;4749:4;4736:18;;4724:31;;4714:59;;4769:1;4766;4759:12;4714:59;4110:903;;;;-1:-1:-1;4110:903:98;;;;4792:7;4872:3;4857:19;;4844:33;;-1:-1:-1;4976:3:98;4961:19;;;4948:33;;4110:903;-1:-1:-1;;4110:903:98:o;5018:260::-;5086:6;5094;5147:2;5135:9;5126:7;5122:23;5118:32;5115:52;;;5163:1;5160;5153:12;5115:52;5186:29;5205:9;5186:29;:::i;:::-;5176:39;;5234:38;5268:2;5257:9;5253:18;5234:38;:::i;:::-;5224:48;;5018:260;;;;;:::o;5283:380::-;5362:1;5358:12;;;;5405;;;5426:61;;5480:4;5472:6;5468:17;5458:27;;5426:61;5533:2;5525:6;5522:14;5502:18;5499:38;5496:161;;5579:10;5574:3;5570:20;5567:1;5560:31;5614:4;5611:1;5604:15;5642:4;5639:1;5632:15;5668:127;5729:10;5724:3;5720:20;5717:1;5710:31;5760:4;5757:1;5750:15;5784:4;5781:1;5774:15;5800:217;5840:1;5866;5856:132;;5910:10;5905:3;5901:20;5898:1;5891:31;5945:4;5942:1;5935:15;5973:4;5970:1;5963:15;5856:132;-1:-1:-1;6002:9:98;;5800:217::o;6022:125::-;6087:9;;;6108:10;;;6105:36;;;6121:18;;:::i;6152:346::-;6354:2;6336:21;;;6393:2;6373:18;;;6366:30;-1:-1:-1;;;6427:2:98;6412:18;;6405:52;6489:2;6474:18;;6152:346::o;6503:128::-;6570:9;;;6591:11;;;6588:37;;;6605:18;;:::i;6636:168::-;6709:9;;;6740;;6757:15;;;6751:22;;6737:37;6727:71;;6778:18;;:::i;13101:127::-;13162:10;13157:3;13153:20;13150:1;13143:31;13193:4;13190:1;13183:15;13217:4;13214:1;13207:15","linkReferences":{},"immutableReferences":{"52826":[{"start":3414,"length":32}],"52828":[{"start":3372,"length":32}],"52830":[{"start":3330,"length":32}],"52832":[{"start":3495,"length":32}],"52834":[{"start":3535,"length":32}],"52837":[{"start":1545,"length":32}],"52840":[{"start":1588,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","eip712Domain()":"84b0196e","increaseAllowance(address,uint256)":"39509351","minStake()":"375b3c0a","mint(uint256)":"a0712d68","name()":"06fdde03","nonces(address)":"7ecebe00","outstandingSupply()":"caacafe2","peripheryContracts()":"b79be3f0","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","previousTotalSupply()":"80ba0f0f","setLiquidityManager(address)":"3c1624d4","setPreviousTotalSupply(uint256)":"9c547c4b","setStakingPool(address)":"3028f63a","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AddressAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressInSetter\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"outstandingSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"peripheryContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previousTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidityManager_\",\"type\":\"address\"}],\"name\":\"setLiquidityManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ts\",\"type\":\"uint256\"}],\"name\":\"setPreviousTotalSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingPool_\",\"type\":\"address\"}],\"name\":\"setStakingPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"When tokens are burned, the total supply shrinks, making excess tokens in the staking pool unnecessary. These excess tokens are burned to maintain the guaranteed fixed percentage of the total supply for stakers.\",\"params\":{\"_amount\":\"The number of tokens to burn.\"}},\"constructor\":{\"params\":{\"name_\":\"The name of the token\",\"symbol_\":\"The symbol of the token\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"eip712Domain()\":{\"details\":\"See {EIP-5267}. _Available since v4.9._\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"minStake()\":{\"returns\":{\"_0\":\"The minimum stake amount\"}},\"mint(uint256)\":{\"details\":\"Tokens minted are managed as community liquidity in the Uniswap pool to stabilize KRAIKEN prices. Only callable by the Liquidity Manager. Minting rules and limits are defined externally.\",\"params\":{\"_amount\":\"The number of tokens to mint.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"outstandingSupply()\":{\"returns\":{\"_0\":\"The outstanding supply\"}},\"peripheryContracts()\":{\"returns\":{\"_0\":\"The addresses of the TWAB controller, liquidity manager, staking pool, and liquidity pool\"}},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"setLiquidityManager(address)\":{\"details\":\"Should be called only once right after the contract deployment to set the liquidity manager address. Throws AddressAlreadySet if called more than once.\",\"params\":{\"liquidityManager_\":\"The address of the liquidity manager.\"}},\"setPreviousTotalSupply(uint256)\":{\"params\":{\"_ts\":\"The previous total supply value\"}},\"setStakingPool(address)\":{\"details\":\"Should be called only once right after the contract deployment to set the staking pool address. Throws AddressAlreadySet if called more than once.\",\"params\":{\"stakingPool_\":\"The address of the staking pool.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"title\":\"stakeable ERC20 Token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Allows the liquidity manager to burn tokens from its account, adjusting the staking pool accordingly.\"},\"constructor\":{\"notice\":\"Constructor for the Kraiken token\"},\"minStake()\":{\"notice\":\"Calculates the minimum stake based on the previous total supply\"},\"mint(uint256)\":{\"notice\":\"Allows the liquidity manager to mint tokens for itself.\"},\"outstandingSupply()\":{\"notice\":\"Returns the outstanding supply, excluding the balances of the liquidity pool and liquidity manager\"},\"peripheryContracts()\":{\"notice\":\"Returns the addresses of the periphery contracts\"},\"setLiquidityManager(address)\":{\"notice\":\"Sets the address for the liquidityManager. Used once post-deployment to initialize the contract.\"},\"setPreviousTotalSupply(uint256)\":{\"notice\":\"Sets the previous total supply\"},\"setStakingPool(address)\":{\"notice\":\"Sets the address for the stakingPool. Used once post-deployment to initialize the contract.\"}},\"notice\":\"This contract implements an ERC20 token with mechanisms for minting and burning in which a single account (staking Pool) is proportionally receiving a share. Only the liquidity manager has permission to manage token supply.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Kraiken.sol\":\"Kraiken\"},\"evmVersion\":\"cancun\",\"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/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\":\"0x36e95626b3927127004954f77c3b6565e9dbda68d9ad41ca00d12188ca5c336d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d127878308d493074c4499c2cc42b5b357e609f65f83e93e682518113a789115\",\"dweb:/ipfs/QmbbRbjrmgkVX31XRmZ7ba8dL2YqYh9HkA8LQMVcLXRap1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AddressAlreadySet"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[],"type":"error","name":"ZeroAddressInSetter"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"outstandingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"peripheryContracts","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"previousTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"liquidityManager_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setLiquidityManager"},{"inputs":[{"internalType":"uint256","name":"_ts","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPreviousTotalSupply"},{"inputs":[{"internalType":"address","name":"stakingPool_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingPool"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(uint256)":{"details":"When tokens are burned, the total supply shrinks, making excess tokens in the staking pool unnecessary. These excess tokens are burned to maintain the guaranteed fixed percentage of the total supply for stakers.","params":{"_amount":"The number of tokens to burn."}},"constructor":{"params":{"name_":"The name of the token","symbol_":"The symbol of the token"}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"eip712Domain()":{"details":"See {EIP-5267}. _Available since v4.9._"},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"minStake()":{"returns":{"_0":"The minimum stake amount"}},"mint(uint256)":{"details":"Tokens minted are managed as community liquidity in the Uniswap pool to stabilize KRAIKEN prices. Only callable by the Liquidity Manager. Minting rules and limits are defined externally.","params":{"_amount":"The number of tokens to mint."}},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"outstandingSupply()":{"returns":{"_0":"The outstanding supply"}},"peripheryContracts()":{"returns":{"_0":"The addresses of the TWAB controller, liquidity manager, staking pool, and liquidity pool"}},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."},"setLiquidityManager(address)":{"details":"Should be called only once right after the contract deployment to set the liquidity manager address. Throws AddressAlreadySet if called more than once.","params":{"liquidityManager_":"The address of the liquidity manager."}},"setPreviousTotalSupply(uint256)":{"params":{"_ts":"The previous total supply value"}},"setStakingPool(address)":{"details":"Should be called only once right after the contract deployment to set the staking pool address. Throws AddressAlreadySet if called more than once.","params":{"stakingPool_":"The address of the staking pool."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{"burn(uint256)":{"notice":"Allows the liquidity manager to burn tokens from its account, adjusting the staking pool accordingly."},"constructor":{"notice":"Constructor for the Kraiken token"},"minStake()":{"notice":"Calculates the minimum stake based on the previous total supply"},"mint(uint256)":{"notice":"Allows the liquidity manager to mint tokens for itself."},"outstandingSupply()":{"notice":"Returns the outstanding supply, excluding the balances of the liquidity pool and liquidity manager"},"peripheryContracts()":{"notice":"Returns the addresses of the periphery contracts"},"setLiquidityManager(address)":{"notice":"Sets the address for the liquidityManager. Used once post-deployment to initialize the contract."},"setPreviousTotalSupply(uint256)":{"notice":"Sets the previous total supply"},"setStakingPool(address)":{"notice":"Sets the address for the stakingPool. Used once post-deployment to initialize the contract."}},"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/Kraiken.sol":"Kraiken"},"evmVersion":"cancun","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/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":"0x36e95626b3927127004954f77c3b6565e9dbda68d9ad41ca00d12188ca5c336d","urls":["bzz-raw://d127878308d493074c4499c2cc42b5b357e609f65f83e93e682518113a789115","dweb:/ipfs/QmbbRbjrmgkVX31XRmZ7ba8dL2YqYh9HkA8LQMVcLXRap1"],"license":"GPL-3.0-or-later"}},"version":1},"id":74} \ No newline at end of file diff --git a/subgraph/base_sepolia/abis/Stake.json b/subgraph/base_sepolia/abis/Stake.json index 0e5950f..0854480 100644 --- a/subgraph/base_sepolia/abis/Stake.json +++ b/subgraph/base_sepolia/abis/Stake.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"address","name":"_harberg","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":"harbergDeposit","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":"harbergPayout","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":"harbergPayout","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"}] \ No newline at end of file +{"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":"0x60075f556104a0604052600160e08181526003610100526005610120526008610140908152600c6101605260126101805260186101a052601e6101c081905260286101e052603261020052603c6102205260506102405260646102605260826102805260b46102a05260fa6102c0526102e0919091526101a46103005261021c610320526102bc61034052610398610360526104b0610380526106406103a0526107d06103c052610a286103e052610d48610400526111306104205261164461044052611d4c610460526125e4610480526100db929190610200565b503480156100e7575f5ffd5b506040516122cb3803806122cb833981016040819052610106916102b7565b6001600160a01b03808316608081905290821660a0525f546040805163313ce56760e01b8152905191929163313ce567916004808201926020929091908290030181865afa15801561015a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017e91906102e8565b60ff1661018b9190610323565b61019690600a61041f565b60c0526209fbf16003556001546001600160401b038111156101ba576101ba61042a565b6040519080825280602002602001820160405280156101e3578160200160208202803683370190505b5080516101f89160059160209091019061024f565b50505061043e565b828054828255905f5260205f2090810192821561023f579160200282015b8281111561023f578251829061ffff1690559160200191906001019061021e565b5061024b929150610288565b5090565b828054828255905f5260205f2090810192821561023f579160200282015b8281111561023f57825182559160200191906001019061026d565b5b8082111561024b575f8155600101610289565b80516001600160a01b03811681146102b2575f5ffd5b919050565b5f5f604083850312156102c8575f5ffd5b6102d18361029c565b91506102df6020840161029c565b90509250929050565b5f602082840312156102f8575f5ffd5b815160ff81168114610308575f5ffd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103365761033661030f565b92915050565b6001815b60018411156103775780850481111561035b5761035b61030f565b600184161561036957908102905b60019390931c928002610340565b935093915050565b5f8261038d57506001610336565b8161039957505f610336565b81600181146103af57600281146103b9576103d5565b6001915050610336565b60ff8411156103ca576103ca61030f565b50506001821b610336565b5060208310610133831016604e8410600b84101617156103f8575081810a610336565b6104045f19848461033c565b805f19048211156104175761041761030f565b029392505050565b5f610308838361037f565b634e487b7160e01b5f52604160045260245ffd5b60805160a05160c051611e166104b55f395f818161012a015281816105860152818161094201528181610b2801526115e301525f61144801525f81816103de015281816105040152818161096301528181610a1801528181610f58015281816114270152818161155001526117220152611e165ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c806399fbab8811610093578063cbcebdba11610063578063cbcebdba14610268578063e0b231fa1461027b578063e95beb931461028e578063febf6b7b14610296575f5ffd5b806399fbab88146101a15780639d8e5ea71461022f578063a05aaf5014610242578063b8b1bc5114610255575f5ffd5b80635cb36034116100ce5780635cb360341461015d57806378dc9059146101705780637fe0c85014610185578063899346c714610198575f5ffd5b806313f5c726146100ff57806318160ddd1461012557806321139a011461014c5780635343275014610154575b5f5ffd5b61011261010d366004611abc565b6102a9565b6040519081526020015b60405180910390f35b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6101126102c8565b61011260025481565b61011261016b366004611b49565b610392565b61018361017e366004611abc565b610452565b005b610112610193366004611abc565b6104fe565b61011260035481565b6101f46101af366004611abc565b60046020525f9081526040902080546001909101546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b8104821691600160e01b9091041685565b604080519586526001600160a01b03909416602086015263ffffffff928316938501939093528116606084015216608082015260a00161011c565b61011261023d366004611be7565b6105b1565b610183610250366004611abc565b6106aa565b610183610263366004611c07565b6106ff565b610112610276366004611abc565b61092d565b610112610289366004611abc565b61093c565b6101126109ea565b6101126102a4366004611c31565b610a08565b600181815481106102b8575f80fd5b5f91825260209091200154905081565b6002545f901561038f575f5b60015481101561033457600581815481106102f1576102f1611c9b565b905f5260205f2001546001828154811061030d5761030d611c9b565b905f5260205f2001546103209190611cc3565b61032a9083611cda565b91506001016102d4565b506002546103429082611d01565b6001805491925090610355908290611d20565b8154811061036557610365611c9b565b905f5260205f20015481670de0b6b3a76400006103829190611cc3565b61038c9190611d01565b90505b90565b60405163d505accf60e01b81526001600160a01b038981166004830152306024830152604482018b90526064820186905260ff8516608483015260a4820184905260c482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d505accf9060e4015f604051808303815f87803b158015610421575f5ffd5b505af1158015610433573d5f5f3e3d5ffd5b505050506104448a8a8a8a8a610a08565b9a9950505050505050505050565b5f81815260046020526040902060018101546001600160a01b031633146104a8576001810154604051637b653e7d60e11b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6001810154600160a01b900463ffffffff165f036104e25760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104f082826203f4806110fd565b6104fa8282611476565b5050565b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105829190611d33565b83907f00000000000000000000000000000000000000000000000000000000000000005f61157c565b92915050565b5f8281526004602052604081206001810154829084906105de90600160a01b900463ffffffff1642611d20565b106105e95742610606565b6001820154610606908590600160a01b900463ffffffff16611cda565b60018301549091505f9061062790600160c01b900463ffffffff1683611d20565b90505f610636845f01546104fe565b905060646301e1338083600187600101601c9054906101000a900463ffffffff1663ffffffff168154811061066d5761066d611c9b565b905f5260205f200154846106819190611cc3565b61068b9190611cc3565b6106959190611d01565b61069f9190611d01565b979650505050505050565b5f81815260046020526040812060018101549091600160a01b90910463ffffffff1690036106f45760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104fa82825f6110fd565b60015463ffffffff82161061074f5760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b5f82815260046020526040812060018101549091600160a01b90910463ffffffff1690036107995760405163d37d088960e01b81526004810184905233602482015260440161049f565b60018101546001600160a01b031633146107dd576001810154604051637b653e7d60e11b81523360048201526001600160a01b03909116602482015260440161049f565b600181015463ffffffff600160e01b9091048116908316116108395760405162461bcd60e51b81526020600482015260156024820152740e8c2f040e8dede40d8deee40e8de40e6dcc2e8c6d605b1b604482015260640161049f565b61084483825f6110fd565b80546001820154600580549091600160e01b900463ffffffff1690811061086d5761086d611c9b565b905f5260205f20015f8282546108839190611d20565b909155505080546005805463ffffffff85169081106108a4576108a4611c9b565b905f5260205f20015f8282546108ba9190611cda565b90915550506001810180546001600160e01b038116600160e01b63ffffffff86169081029182179093556040519283526001600160a01b039182169116179084907fe6767cb515204f8d7033d356fa5c77de82ad12fc94271799b5b8b1c7663369449060200160405180910390a3505050565b600581815481106102b8575f80fd5b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e19190611d33565b8491905f61157c565b5f6109f36115d9565b60025461038290670de0b6b3a7640000611cc3565b5f5f610a138761093c565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663375b3c0a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a969190611d33565b905080881015610ad257604051635fa7efd160e11b81526001600160a01b0388166004820152602481018990526044810182905260640161049f565b5060015463ffffffff861610610b235760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b6002547f0000000000000000000000000000000000000000000000000000000000000000905f90610b526115d9565b610b5c9190611d20565b905060028510610cf8575f5b610b73600187611d20565b811015610cf6575f60045f898985818110610b9057610b90611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610c0d57878783818110610bd957610bd9611c9b565b60405163d37d088960e01b8152602090910292909201356004830152506001600160a01b038b16602482015260440161049f565b600181015463ffffffff600160e01b9091048116908a1611610c9a5760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b60405163aed9ae5960e01b81526001600160a01b0396909616600487015263ffffffff94851660248701529290931660448501526020909102013560648301525060840161049f565b8054841115610ca857805493505b610ccb888884818110610cbd57610cbd611c9b565b90506020020135825f6110fd565b610ced888884818110610ce057610ce0611c9b565b9050602002013582611476565b50600101610b68565b505b600254610d036115d9565b610d0d9190611d20565b90508415610eb8575f610d21600187611d20565b90505f60045f898985818110610d3957610d39611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610d8257878783818110610bd957610bd9611c9b565b600181015463ffffffff600160e01b9091048116908a1611610dc65760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b8054841115610dd457805493505b610dfa888884818110610de957610de9611c9b565b90506020020135826203f4806110fd565b84831115610e3b576040516378147d3360e01b81526001600160a01b038b16600482015260248101869052604481018490526064810185905260840161049f565b5f610e468487611d20565b8254909150606490610e59906050611cc3565b610e639190611d01565b811115610e9157610e8c898985818110610e7f57610e7f611c9b565b9050602002013583611476565b610eb4565b610eb4898985818110610ea657610ea6611c9b565b905060200201358383611607565b5050505b600254610ec36115d9565b610ecd9190611d20565b905080831115610f09576040516312797e8f60e11b81526001600160a01b0389166004820152602481018490526044810182905260640161049f565b81610f148483611d20565b1115610f53576040516378147d3360e01b81526001600160a01b038916600482015260248101849052604481018290526064810183905260840161049f565b610f7f7f000000000000000000000000000000000000000000000000000000000000000033308c611751565b60038054905f610f8e83611d4a565b9190505593505f60045f8681526020019081526020015f20905083815f018190555088816001015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550428160010160186101000a81548163ffffffff021916908363ffffffff160217905550428160010160146101000a81548163ffffffff021916908363ffffffff1602179055508781600101601c6101000a81548163ffffffff021916908363ffffffff1602179055508360058963ffffffff168154811061105b5761105b611c9b565b905f5260205f20015f8282546110719190611cda565b925050819055508360025f8282546110899190611cda565b909155505060018101548154604080518d8152602081019290925263ffffffff600160e01b840416908201526001600160a01b039091169086907f8f7598451bc034be2bd3fe6e2f06af052c2dc238bb90bc6fb426754f043014629060600160405180910390a35050505095945050505050565b60018201545f90829061111d90600160a01b900463ffffffff1642611d20565b106111285742611145565b6001830154611145908390600160a01b900463ffffffff16611cda565b60018401549091505f9061116690600160c01b900463ffffffff1683611d20565b90505f611175855f01546104fe565b90505f60646301e1338084600189600101601c9054906101000a900463ffffffff1663ffffffff16815481106111ad576111ad611c9b565b905f5260205f200154856111c19190611cc3565b6111cb9190611cc3565b6111d59190611d01565b6111df9190611d01565b90508181106111eb5750805b5f6111f68284611d20565b111561130c575f61120a6102898385611d20565b90505f81885f015461121c9190611d20565b905080600589600101601c9054906101000a900463ffffffff1663ffffffff168154811061124c5761124c611c9b565b905f5260205f20015f8282546112629190611d20565b925050819055508060025f82825461127a9190611d20565b909155505081885560018801805463ffffffff428116600160c01b0263ffffffff60c01b1983168117938490556040805188815260208101889052600160e01b909504909216918401919091526001600160a01b03908116911617908a907fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a69060600160405180910390a35050611422565b85546001870154600580549091600160e01b900463ffffffff1690811061133557611335611c9b565b905f5260205f20015f82825461134b9190611d20565b90915550508554600280545f90611363908490611d20565b90915550506001860154604080518381525f602082015263ffffffff600160e01b8404168183015290516001600160a01b039092169189917fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a6919081900360600190a360018601546040515f81526001600160a01b039091169088907f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d79060200160405180910390a36001860180546001600160c01b03191690555f86555b61146d7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836117bc565b50505050505050565b80546001820154600580549091600160e01b900463ffffffff1690811061149f5761149f611c9b565b905f5260205f20015f8282546114b59190611d20565b90915550508054600280545f906114cd908490611d20565b9091555050600181015481546001600160a01b03909116905f906114f0906104fe565b9050816001600160a01b0316847f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d78360405161152e91815260200190565b60405180910390a36001830180546001600160c01b03191690555f83556115767f000000000000000000000000000000000000000000000000000000000000000083836117bc565b50505050565b5f5f6115898686866117f1565b9050600183600281111561159f5761159f611d62565b1480156115bb57505f84806115b6576115b6611ced565b868809115b156115ce576115cb600182611cda565b90505b90505b949350505050565b5f606461038260147f0000000000000000000000000000000000000000000000000000000000000000611cc3565b8154811061164c5760405162461bcd60e51b81526020600482015260126024820152711c1bdcda5d1a5bdb881d1bdbc81cdb585b1b60721b604482015260640161049f565b5f611656826104fe565b905081835f015f82825461166a9190611d20565b90915550506001830154600580548492600160e01b900463ffffffff1690811061169657611696611c9b565b905f5260205f20015f8282546116ac9190611d20565b925050819055508160025f8282546116c49190611d20565b90915550506001830154835460408051918252602082018490526001600160a01b039092169186917fa2d77705aa53a16a9bf1d72a714fcb5a94cc2decf59925f07ead504c92668ee2910160405180910390a36001830154611576907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0316836117bc565b6040516001600160a01b03808516602483015283166044820152606481018290526115769085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118dc565b6040516001600160a01b0383166024820152604481018290526117ec90849063a9059cbb60e01b90606401611785565b505050565b5f80805f19858709858702925082811083820303915050805f036118285783828161181e5761181e611ced565b04925050506118d5565b80841161186f5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161049f565b5f848688098519600190810187169687900496828603819004959092119093035f82900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b5f611930826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119af9092919063ffffffff16565b905080515f14806119505750808060200190518101906119509190611d76565b6117ec5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161049f565b60606115d184845f85855f5f866001600160a01b031685876040516119d49190611d95565b5f6040518083038185875af1925050503d805f8114611a0e576040519150601f19603f3d011682016040523d82523d5f602084013e611a13565b606091505b509150915061069f8783838760608315611a8d5782515f03611a86576001600160a01b0385163b611a865760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161049f565b50816115d1565b6115d18383815115611aa25781518083602001fd5b8060405162461bcd60e51b815260040161049f9190611dab565b5f60208284031215611acc575f5ffd5b5035919050565b80356001600160a01b0381168114611ae9575f5ffd5b919050565b803563ffffffff81168114611ae9575f5ffd5b5f5f83601f840112611b11575f5ffd5b50813567ffffffffffffffff811115611b28575f5ffd5b6020830191508360208260051b8501011115611b42575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f6101008a8c031215611b62575f5ffd5b89359850611b7260208b01611ad3565b9750611b8060408b01611aee565b965060608a013567ffffffffffffffff811115611b9b575f5ffd5b611ba78c828d01611b01565b90975095505060808a0135935060a08a013560ff81168114611bc7575f5ffd5b989b979a50959894979396929550929360c0810135935060e00135919050565b5f5f60408385031215611bf8575f5ffd5b50508035926020909101359150565b5f5f60408385031215611c18575f5ffd5b82359150611c2860208401611aee565b90509250929050565b5f5f5f5f5f60808688031215611c45575f5ffd5b85359450611c5560208701611ad3565b9350611c6360408701611aee565b9250606086013567ffffffffffffffff811115611c7e575f5ffd5b611c8a88828901611b01565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105ab576105ab611caf565b808201808211156105ab576105ab611caf565b634e487b7160e01b5f52601260045260245ffd5b5f82611d1b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105ab576105ab611caf565b5f60208284031215611d43575f5ffd5b5051919050565b5f60018201611d5b57611d5b611caf565b5060010190565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611d86575f5ffd5b815180151581146118d5575f5ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea264697066735822122098374021a393cce0ff30820fda72b3b8d4f50edf8c1b7f7b1daf2751405049c764736f6c634300081c0033","sourceMap":"1918:5:78:-:0;1884:39;;2314:418;1663:17901;2314:418;2353:1;1663:17901;2314:418;;;2364:1;2314:418;;2375:1;2314:418;;2386:1;2314:418;;;;2397:2;2314:418;;2409:2;2314:418;;2421:2;2314:418;;2433:2;2314:418;;;;2445:2;2314:418;;2457:2;2314:418;;2469:2;2314:418;;2481:2;2314:418;;2493:3;2314:418;;2506:3;2314:418;;2519:3;2314:418;;2532:3;2314:418;;;;;;;2558:3;2314:418;;2571:3;2314:418;;2584:3;2314:418;;2597:3;2314:418;;2610:4;2314:418;;2624:4;2314:418;;2638:4;2314:418;;2652:4;2314:418;;2666:4;2314:418;;2680:4;2314:418;;2694:4;2314:418;;2708:4;2314:418;;2722:4;2314:418;;;;2353:1;1663:17901;2314:418;:::i;:::-;;4749:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4811:27:78;;;;;;;4848:26;;;;;4926:14;;4905:18;;;-1:-1:-1;;;4905:18:78;;;;4926:14;;4811:27;4905:16;;:18;;;;;;;;;;;;;;;4811:27;4905:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;;;;;;:::i;:::-;4898:43;;:2;:43;:::i;:::-;4884:57;;5004:6;4987:14;:23;5106:9;:16;-1:-1:-1;;;;;5092:31:78;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5092:31:78;-1:-1:-1;5069:54:78;;;;:20;;:54;;;;;;:::i;:::-;;4749:381;;1663:17901;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1663:17901:78;;;-1:-1:-1;1663:17901:78;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:177:98;93:13;;-1:-1:-1;;;;;135:31:98;;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:98: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:98;1548:5;;1483:80;1582:4;1572:76;;-1:-1:-1;1619:1:98;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:98;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:98;;;2116:5;;1928:203;2163:42;-1:-1:-1;;2188:8:98;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:98: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;1663:17901:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c806399fbab8811610093578063cbcebdba11610063578063cbcebdba14610268578063e0b231fa1461027b578063e95beb931461028e578063febf6b7b14610296575f5ffd5b806399fbab88146101a15780639d8e5ea71461022f578063a05aaf5014610242578063b8b1bc5114610255575f5ffd5b80635cb36034116100ce5780635cb360341461015d57806378dc9059146101705780637fe0c85014610185578063899346c714610198575f5ffd5b806313f5c726146100ff57806318160ddd1461012557806321139a011461014c5780635343275014610154575b5f5ffd5b61011261010d366004611abc565b6102a9565b6040519081526020015b60405180910390f35b6101127f000000000000000000000000000000000000000000000000000000000000000081565b6101126102c8565b61011260025481565b61011261016b366004611b49565b610392565b61018361017e366004611abc565b610452565b005b610112610193366004611abc565b6104fe565b61011260035481565b6101f46101af366004611abc565b60046020525f9081526040902080546001909101546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b8104821691600160e01b9091041685565b604080519586526001600160a01b03909416602086015263ffffffff928316938501939093528116606084015216608082015260a00161011c565b61011261023d366004611be7565b6105b1565b610183610250366004611abc565b6106aa565b610183610263366004611c07565b6106ff565b610112610276366004611abc565b61092d565b610112610289366004611abc565b61093c565b6101126109ea565b6101126102a4366004611c31565b610a08565b600181815481106102b8575f80fd5b5f91825260209091200154905081565b6002545f901561038f575f5b60015481101561033457600581815481106102f1576102f1611c9b565b905f5260205f2001546001828154811061030d5761030d611c9b565b905f5260205f2001546103209190611cc3565b61032a9083611cda565b91506001016102d4565b506002546103429082611d01565b6001805491925090610355908290611d20565b8154811061036557610365611c9b565b905f5260205f20015481670de0b6b3a76400006103829190611cc3565b61038c9190611d01565b90505b90565b60405163d505accf60e01b81526001600160a01b038981166004830152306024830152604482018b90526064820186905260ff8516608483015260a4820184905260c482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d505accf9060e4015f604051808303815f87803b158015610421575f5ffd5b505af1158015610433573d5f5f3e3d5ffd5b505050506104448a8a8a8a8a610a08565b9a9950505050505050505050565b5f81815260046020526040902060018101546001600160a01b031633146104a8576001810154604051637b653e7d60e11b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6001810154600160a01b900463ffffffff165f036104e25760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104f082826203f4806110fd565b6104fa8282611476565b5050565b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105829190611d33565b83907f00000000000000000000000000000000000000000000000000000000000000005f61157c565b92915050565b5f8281526004602052604081206001810154829084906105de90600160a01b900463ffffffff1642611d20565b106105e95742610606565b6001820154610606908590600160a01b900463ffffffff16611cda565b60018301549091505f9061062790600160c01b900463ffffffff1683611d20565b90505f610636845f01546104fe565b905060646301e1338083600187600101601c9054906101000a900463ffffffff1663ffffffff168154811061066d5761066d611c9b565b905f5260205f200154846106819190611cc3565b61068b9190611cc3565b6106959190611d01565b61069f9190611d01565b979650505050505050565b5f81815260046020526040812060018101549091600160a01b90910463ffffffff1690036106f45760405163d37d088960e01b81526004810183905233602482015260440161049f565b6104fa82825f6110fd565b60015463ffffffff82161061074f5760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b5f82815260046020526040812060018101549091600160a01b90910463ffffffff1690036107995760405163d37d088960e01b81526004810184905233602482015260440161049f565b60018101546001600160a01b031633146107dd576001810154604051637b653e7d60e11b81523360048201526001600160a01b03909116602482015260440161049f565b600181015463ffffffff600160e01b9091048116908316116108395760405162461bcd60e51b81526020600482015260156024820152740e8c2f040e8dede40d8deee40e8de40e6dcc2e8c6d605b1b604482015260640161049f565b61084483825f6110fd565b80546001820154600580549091600160e01b900463ffffffff1690811061086d5761086d611c9b565b905f5260205f20015f8282546108839190611d20565b909155505080546005805463ffffffff85169081106108a4576108a4611c9b565b905f5260205f20015f8282546108ba9190611cda565b90915550506001810180546001600160e01b038116600160e01b63ffffffff86169081029182179093556040519283526001600160a01b039182169116179084907fe6767cb515204f8d7033d356fa5c77de82ad12fc94271799b5b8b1c7663369449060200160405180910390a3505050565b600581815481106102b8575f80fd5b5f6105ab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e19190611d33565b8491905f61157c565b5f6109f36115d9565b60025461038290670de0b6b3a7640000611cc3565b5f5f610a138761093c565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663375b3c0a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a969190611d33565b905080881015610ad257604051635fa7efd160e11b81526001600160a01b0388166004820152602481018990526044810182905260640161049f565b5060015463ffffffff861610610b235760405162461bcd60e51b81526020600482015260166024820152757461782072617465206f7574206f6620626f756e647360501b604482015260640161049f565b6002547f0000000000000000000000000000000000000000000000000000000000000000905f90610b526115d9565b610b5c9190611d20565b905060028510610cf8575f5b610b73600187611d20565b811015610cf6575f60045f898985818110610b9057610b90611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610c0d57878783818110610bd957610bd9611c9b565b60405163d37d088960e01b8152602090910292909201356004830152506001600160a01b038b16602482015260440161049f565b600181015463ffffffff600160e01b9091048116908a1611610c9a5760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b60405163aed9ae5960e01b81526001600160a01b0396909616600487015263ffffffff94851660248701529290931660448501526020909102013560648301525060840161049f565b8054841115610ca857805493505b610ccb888884818110610cbd57610cbd611c9b565b90506020020135825f6110fd565b610ced888884818110610ce057610ce0611c9b565b9050602002013582611476565b50600101610b68565b505b600254610d036115d9565b610d0d9190611d20565b90508415610eb8575f610d21600187611d20565b90505f60045f898985818110610d3957610d39611c9b565b9050602002013581526020019081526020015f2090508060010160149054906101000a900463ffffffff1663ffffffff165f03610d8257878783818110610bd957610bd9611c9b565b600181015463ffffffff600160e01b9091048116908a1611610dc65760018101548a908a90600160e01b900463ffffffff168a8a86818110610c5157610c51611c9b565b8054841115610dd457805493505b610dfa888884818110610de957610de9611c9b565b90506020020135826203f4806110fd565b84831115610e3b576040516378147d3360e01b81526001600160a01b038b16600482015260248101869052604481018490526064810185905260840161049f565b5f610e468487611d20565b8254909150606490610e59906050611cc3565b610e639190611d01565b811115610e9157610e8c898985818110610e7f57610e7f611c9b565b9050602002013583611476565b610eb4565b610eb4898985818110610ea657610ea6611c9b565b905060200201358383611607565b5050505b600254610ec36115d9565b610ecd9190611d20565b905080831115610f09576040516312797e8f60e11b81526001600160a01b0389166004820152602481018490526044810182905260640161049f565b81610f148483611d20565b1115610f53576040516378147d3360e01b81526001600160a01b038916600482015260248101849052604481018290526064810183905260840161049f565b610f7f7f000000000000000000000000000000000000000000000000000000000000000033308c611751565b60038054905f610f8e83611d4a565b9190505593505f60045f8681526020019081526020015f20905083815f018190555088816001015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550428160010160186101000a81548163ffffffff021916908363ffffffff160217905550428160010160146101000a81548163ffffffff021916908363ffffffff1602179055508781600101601c6101000a81548163ffffffff021916908363ffffffff1602179055508360058963ffffffff168154811061105b5761105b611c9b565b905f5260205f20015f8282546110719190611cda565b925050819055508360025f8282546110899190611cda565b909155505060018101548154604080518d8152602081019290925263ffffffff600160e01b840416908201526001600160a01b039091169086907f8f7598451bc034be2bd3fe6e2f06af052c2dc238bb90bc6fb426754f043014629060600160405180910390a35050505095945050505050565b60018201545f90829061111d90600160a01b900463ffffffff1642611d20565b106111285742611145565b6001830154611145908390600160a01b900463ffffffff16611cda565b60018401549091505f9061116690600160c01b900463ffffffff1683611d20565b90505f611175855f01546104fe565b90505f60646301e1338084600189600101601c9054906101000a900463ffffffff1663ffffffff16815481106111ad576111ad611c9b565b905f5260205f200154856111c19190611cc3565b6111cb9190611cc3565b6111d59190611d01565b6111df9190611d01565b90508181106111eb5750805b5f6111f68284611d20565b111561130c575f61120a6102898385611d20565b90505f81885f015461121c9190611d20565b905080600589600101601c9054906101000a900463ffffffff1663ffffffff168154811061124c5761124c611c9b565b905f5260205f20015f8282546112629190611d20565b925050819055508060025f82825461127a9190611d20565b909155505081885560018801805463ffffffff428116600160c01b0263ffffffff60c01b1983168117938490556040805188815260208101889052600160e01b909504909216918401919091526001600160a01b03908116911617908a907fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a69060600160405180910390a35050611422565b85546001870154600580549091600160e01b900463ffffffff1690811061133557611335611c9b565b905f5260205f20015f82825461134b9190611d20565b90915550508554600280545f90611363908490611d20565b90915550506001860154604080518381525f602082015263ffffffff600160e01b8404168183015290516001600160a01b039092169189917fb0b012792448969fc7ffc769b83b27cda55565d5a592a63209be2a6f1c5764a6919081900360600190a360018601546040515f81526001600160a01b039091169088907f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d79060200160405180910390a36001860180546001600160c01b03191690555f86555b61146d7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836117bc565b50505050505050565b80546001820154600580549091600160e01b900463ffffffff1690811061149f5761149f611c9b565b905f5260205f20015f8282546114b59190611d20565b90915550508054600280545f906114cd908490611d20565b9091555050600181015481546001600160a01b03909116905f906114f0906104fe565b9050816001600160a01b0316847f6f0b3e0cf1a11235226a949a12602f7cae95c342402ec2f4183fd70eab9921d78360405161152e91815260200190565b60405180910390a36001830180546001600160c01b03191690555f83556115767f000000000000000000000000000000000000000000000000000000000000000083836117bc565b50505050565b5f5f6115898686866117f1565b9050600183600281111561159f5761159f611d62565b1480156115bb57505f84806115b6576115b6611ced565b868809115b156115ce576115cb600182611cda565b90505b90505b949350505050565b5f606461038260147f0000000000000000000000000000000000000000000000000000000000000000611cc3565b8154811061164c5760405162461bcd60e51b81526020600482015260126024820152711c1bdcda5d1a5bdb881d1bdbc81cdb585b1b60721b604482015260640161049f565b5f611656826104fe565b905081835f015f82825461166a9190611d20565b90915550506001830154600580548492600160e01b900463ffffffff1690811061169657611696611c9b565b905f5260205f20015f8282546116ac9190611d20565b925050819055508160025f8282546116c49190611d20565b90915550506001830154835460408051918252602082018490526001600160a01b039092169186917fa2d77705aa53a16a9bf1d72a714fcb5a94cc2decf59925f07ead504c92668ee2910160405180910390a36001830154611576907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0316836117bc565b6040516001600160a01b03808516602483015283166044820152606481018290526115769085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118dc565b6040516001600160a01b0383166024820152604481018290526117ec90849063a9059cbb60e01b90606401611785565b505050565b5f80805f19858709858702925082811083820303915050805f036118285783828161181e5761181e611ced565b04925050506118d5565b80841161186f5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161049f565b5f848688098519600190810187169687900496828603819004959092119093035f82900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b5f611930826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119af9092919063ffffffff16565b905080515f14806119505750808060200190518101906119509190611d76565b6117ec5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161049f565b60606115d184845f85855f5f866001600160a01b031685876040516119d49190611d95565b5f6040518083038185875af1925050503d805f8114611a0e576040519150601f19603f3d011682016040523d82523d5f602084013e611a13565b606091505b509150915061069f8783838760608315611a8d5782515f03611a86576001600160a01b0385163b611a865760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161049f565b50816115d1565b6115d18383815115611aa25781518083602001fd5b8060405162461bcd60e51b815260040161049f9190611dab565b5f60208284031215611acc575f5ffd5b5035919050565b80356001600160a01b0381168114611ae9575f5ffd5b919050565b803563ffffffff81168114611ae9575f5ffd5b5f5f83601f840112611b11575f5ffd5b50813567ffffffffffffffff811115611b28575f5ffd5b6020830191508360208260051b8501011115611b42575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f6101008a8c031215611b62575f5ffd5b89359850611b7260208b01611ad3565b9750611b8060408b01611aee565b965060608a013567ffffffffffffffff811115611b9b575f5ffd5b611ba78c828d01611b01565b90975095505060808a0135935060a08a013560ff81168114611bc7575f5ffd5b989b979a50959894979396929550929360c0810135935060e00135919050565b5f5f60408385031215611bf8575f5ffd5b50508035926020909101359150565b5f5f60408385031215611c18575f5ffd5b82359150611c2860208401611aee565b90509250929050565b5f5f5f5f5f60808688031215611c45575f5ffd5b85359450611c5560208701611ad3565b9350611c6360408701611aee565b9250606086013567ffffffffffffffff811115611c7e575f5ffd5b611c8a88828901611b01565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105ab576105ab611caf565b808201808211156105ab576105ab611caf565b634e487b7160e01b5f52601260045260245ffd5b5f82611d1b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105ab576105ab611caf565b5f60208284031215611d43575f5ffd5b5051919050565b5f60018201611d5b57611d5b611caf565b5060010190565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611d86575f5ffd5b815180151581146118d5575f5ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea264697066735822122098374021a393cce0ff30820fda72b3b8d4f50edf8c1b7f7b1daf2751405049c764736f6c634300081c0033","sourceMap":"1663:17901:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2314:418;;;;;;:::i;:::-;;:::i;:::-;;;391:25:98;;;379:2;364:18;2314:418:78;;;;;;;;4150:36;;;;;18634:545;;;:::i;4192:31::-;;;;;;14647:524;;;;;;:::i;:::-;;:::i;16583:504::-;;;;;;:::i;:::-;;:::i;:::-;;9142:163;;;;;;:::i;:::-;;:::i;4229:29::-;;;;;;4265:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4265:52:78;;;;-1:-1:-1;;;4265:52:78;;;;;-1:-1:-1;;;4265:52:78;;;;;-1:-1:-1;;;4265:52:78;;;;;;;;;;2630:25:98;;;-1:-1:-1;;;;;2691:32:98;;;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;4265:52:78;2377:534:98;17931:605:78;;;;;;:::i;:::-;;:::i;17351:258::-;;;;;;:::i;:::-;;:::i;15497:801::-;;;;;;:::i;:::-;;:::i;4384:37::-;;;;;;:::i;:::-;;:::i;8756:163::-;;;;;;:::i;:::-;;:::i;19401:161::-;;;:::i;9923:4075::-;;;;;;:::i;:::-;;:::i;2314:418::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2314:418:78;:::o;18634:545::-;18807:16;;18686:22;;18807:20;18803:370;;18848:9;18843:136;18867:9;:16;18863:20;;18843:136;;;18941:20;18962:1;18941:23;;;;;;;;:::i;:::-;;;;;;;;;18926:9;18936:1;18926:12;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;:::i;:::-;18908:56;;;;:::i;:::-;;-1:-1:-1;18885:3:78;;18843:136;;;-1:-1:-1;19026:16:78;;19009:33;;:14;:33;:::i;:::-;19131:9;19141:16;;18992:50;;-1:-1:-1;19131:9:78;19141:20;;19131:9;;19141:20;:::i;:::-;19131:31;;;;;;;;:::i;:::-;;;;;;;;;19107:14;19124:4;19107:21;;;;:::i;:::-;:55;;;;:::i;:::-;19090:72;;18803:370;18634:545;:::o;14647:524::-;15007:88;;-1:-1:-1;;;15007:88:78;;-1:-1:-1;;;;;5656:32:98;;;15007:88:78;;;5638:51:98;15062:4:78;5705:18:98;;;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;;;14977:18:78;;15027:7;15007:36;;;;;;5610:19:98;;15007:88:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15112:52;15119:6;15127:8;15137:7;15146:17;;15112:6;:52::i;:::-;15105:59;14647:524;-1:-1:-1;;;;;;;;;;14647:524:78:o;16583:504::-;16644:27;16674:21;;;:9;:21;;;;;16709:9;;;;-1:-1:-1;;;;;16709:9:78;16722:10;16709:23;16705:96;;16780:9;;;;16755:35;;-1:-1:-1;;;16755:35:78;;16768:10;16755:35;;;6172:51:98;-1:-1:-1;;;;;16780:9:78;;;6239:18:98;;;6232:60;6145:18;;16755:35:78;;;;;;;;16705:96;16814:16;;;;-1:-1:-1;;;16814:16:78;;;;16834:1;16814:21;16810:99;;16858:40;;-1:-1:-1;;;16858:40:78;;;;;6477:25:98;;;16887:10:78;6518:18:98;;;6511:60;6450:18;;16858:40:78;6303:274:98;16810:99:78;16996:44;17004:10;17016:3;2106:16;16996:7;:44::i;:::-;17050:30;17064:10;17076:3;17050:13;:30::i;:::-;16634:453;16583:504;:::o;9142:163::-;9203:7;9229:69;9243:7;-1:-1:-1;;;;;9243:19:78;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9229:6;;9266:11;9279:18;9229:13;:69::i;:::-;9222:76;9142:163;-1:-1:-1;;9142:163:78:o;17931:605::-;18014:17;18073:21;;;:9;:21;;;;;18189:16;;;;18014:17;;18208:16;;18171:34;;-1:-1:-1;;;18189:16:78;;;;18171:15;:34;:::i;:::-;:53;18170:135;;18290:15;18170:135;;;18240:16;;;;:35;;18259:16;;-1:-1:-1;;;18240:16:78;;;;:35;:::i;:::-;18344:15;;;;18155:150;;-1:-1:-1;18315:19:78;;18337:22;;-1:-1:-1;;;18344:15:78;;;;18155:150;18337:22;:::i;:::-;18315:44;;18369:20;18392:25;18407:3;:9;;;18392:14;:25::i;:::-;18369:48;;2855:3;18494:18;18479:11;18454:9;18464:3;:11;;;;;;;;;;;;18454:22;;;;;;;;;;:::i;:::-;;;;;;;;;18439:12;:37;;;;:::i;:::-;:51;;;;:::i;:::-;:74;;;;:::i;:::-;:90;;;;:::i;:::-;18427:102;17931:605;-1:-1:-1;;;;;;;17931:605:78:o;17351:258::-;17406:27;17436:21;;;:9;:21;;;;;17471:16;;;;17436:21;;-1:-1:-1;;;17471:16:78;;;;;:21;;17467:99;;17515:40;;-1:-1:-1;;;17515:40:78;;;;;6477:25:98;;;17544:10:78;6518:18:98;;;6511:60;6450:18;;17515:40:78;6303:274:98;17467:99:78;17575:27;17583:10;17595:3;17600:1;17575:7;:27::i;15497:801::-;15589:9;:16;15579:26;;;;15571:61;;;;-1:-1:-1;;;15571:61:78;;6973:2:98;15571:61:78;;;6955:21:98;7012:2;6992:18;;;6985:30;-1:-1:-1;;;7031:18:98;;;7024:52;7093:18;;15571:61:78;6771:346:98;15571:61:78;15642:27;15672:21;;;:9;:21;;;;;15707:16;;;;15672:21;;-1:-1:-1;;;15707:16:78;;;;;:21;;15703:99;;15751:40;;-1:-1:-1;;;15751:40:78;;;;;6477:25:98;;;15780:10:78;6518:18:98;;;6511:60;6450:18;;15751:40:78;6303:274:98;15703:99:78;15815:9;;;;-1:-1:-1;;;;;15815:9:78;15828:10;15815:23;15811:96;;15886:9;;;;15861:35;;-1:-1:-1;;;15861:35:78;;15874:10;15861:35;;;6172:51:98;-1:-1:-1;;;;;15886:9:78;;;6239:18:98;;;6232:60;6145:18;;15861:35:78;5998:300:98;15811:96:78;16014:11;;;;;-1:-1:-1;;;16014:11:78;;;;;16004:21;;;;15996:55;;;;-1:-1:-1;;;15996:55:78;;7324:2:98;15996:55:78;;;7306:21:98;7363:2;7343:18;;;7336:30;-1:-1:-1;;;7382:18:98;;;7375:51;7443:18;;15996:55:78;7122:345:98;15996:55:78;16061:27;16069:10;16081:3;16086:1;16061:7;:27::i;:::-;16135:9;;16119:11;;;;16098:20;:33;;:20;;-1:-1:-1;;;16119:11:78;;;;;16098:33;;;;;;:::i;:::-;;;;;;;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;16187:9:78;;16154:20;:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;16206:11:78;;;:21;;-1:-1:-1;;;;;16206:21:78;;-1:-1:-1;;;16206:21:78;;;;;;;;;;;;16242:49;;7617:42:98;;;-1:-1:-1;;;;;16272:9:78;;;;;;;16260:10;;16242:49;;7605:2:98;7590:18;16242:49:78;;;;;;;15561:737;15497:801;;:::o;4384:37::-;;;;;;;;;;;;8756:163;8817:7;8843:69;8857:11;8870:7;-1:-1:-1;;;;;8870:19:78;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8843:6;;:69;8893:18;8843:13;:69::i;19401:161::-;19455:24;19538:17;:15;:17::i;:::-;19511:16;;:23;;19530:4;19511:23;:::i;9923:4075::-;10059:18;10125:20;10148:22;10163:6;10148:14;:22::i;:::-;10125:45;;10329:16;10348:7;-1:-1:-1;;;;;10348:16:78;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10329:37;;10393:8;10384:6;:17;10380:102;;;10428:39;;-1:-1:-1;;;10428:39:78;;-1:-1:-1;;;;;7890:32:98;;10428:39:78;;;7872:51:98;7939:18;;;7932:34;;;7982:18;;;7975:34;;;7845:18;;10428:39:78;7670:345:98;10380:102:78;-1:-1:-1;10519:9:78;:16;10509:26;;;;10501:61;;;;-1:-1:-1;;;10501:61:78;;6973:2:98;10501:61:78;;;6955:21:98;7012:2;6992:18;;;6985:30;-1:-1:-1;;;7031:18:98;;;7024:52;7093:18;;10501:61:78;6771:346:98;10501:61:78;10671:16;;10605:11;;10573:29;;10651:17;:15;:17::i;:::-;:36;;;;:::i;:::-;10626:61;-1:-1:-1;10730:1:78;10702:29;;10698:888;;10812:9;10807:769;10831:28;10858:1;10831:17;:28;:::i;:::-;10827:1;:32;10807:769;;;10884:27;10914:9;:31;10924:17;;10942:1;10924:20;;;;;;;:::i;:::-;;;;;;;10914:31;;;;;;;;;;;10884:61;;10967:3;:16;;;;;;;;;;;;:21;;10987:1;10967:21;10963:123;;11036:17;;11054:1;11036:20;;;;;;;:::i;:::-;11019:48;;-1:-1:-1;;;11019:48:78;;11036:20;;;;;;;;;11019:48;;;6477:25:98;-1:-1:-1;;;;;;6538:32:98;;6518:18;;;6511:60;6450:18;;11019:48:78;6303:274:98;10963:123:78;11158:11;;;;;-1:-1:-1;;;11158:11:78;;;;;11147:22;;;;11143:139;;11229:11;;;;11210:8;;11220:7;;-1:-1:-1;;;11229:11:78;;;;11242:17;;11260:1;11242:20;;;;;;;:::i;:::-;11200:63;;-1:-1:-1;;;11200:63:78;;-1:-1:-1;;;;;8265:32:98;;;;11200:63:78;;;8247:51:98;8346:10;8334:23;;;8314:18;;;8307:51;8394:23;;;;8374:18;;;8367:51;11242:20:78;;;;;;8434:18:98;;;8427:34;-1:-1:-1;8219:19:98;;11200:63:78;8020:447:98;11143:139:78;11303:9;;:33;-1:-1:-1;11299:113:78;;;11384:9;;;-1:-1:-1;11299:113:78;11466:37;11474:17;;11492:1;11474:20;;;;;;;:::i;:::-;;;;;;;11496:3;11501:1;11466:7;:37::i;:::-;11521:40;11535:17;;11553:1;11535:20;;;;;;;:::i;:::-;;;;;;;11557:3;11521:13;:40::i;:::-;-1:-1:-1;10861:3:78;;10807:769;;;;10698:888;11632:16;;11612:17;:15;:17::i;:::-;:36;;;;:::i;:::-;11595:53;-1:-1:-1;11663:28:78;;11659:1294;;11768:13;11784:28;11811:1;11784:17;:28;:::i;:::-;11768:44;;11826:31;11860:9;:35;11870:17;;11888:5;11870:24;;;;;;;:::i;:::-;;;;;;;11860:35;;;;;;;;;;;11826:69;;11913:7;:20;;;;;;;;;;;;:25;;11937:1;11913:25;11909:123;;11982:17;;12000:5;11982:24;;;;;;;:::i;11909:123::-;12096:15;;;;;-1:-1:-1;;;12096:15:78;;;;;12085:26;;;;12081:143;;12167:15;;;;12148:8;;12158:7;;-1:-1:-1;;;12167:15:78;;;;12184:17;;12202:5;12184:24;;;;;;;:::i;12081:143::-;12241:13;;:37;-1:-1:-1;12237:113:78;;;12322:13;;;-1:-1:-1;12237:113:78;12396:62;12404:17;;12422:5;12404:24;;;;;;;:::i;:::-;;;;;;;12430:7;2106:16;12396:7;:62::i;:::-;12493:12;12476:14;:29;12472:151;;;12532:76;;-1:-1:-1;;;12532:76:78;;-1:-1:-1;;;;;8721:32:98;;12532:76:78;;;8703:51:98;8770:18;;;8763:34;;;8813:18;;;8806:34;;;8856:18;;;8849:34;;;8675:19;;12532:76:78;8472:417:98;12472:151:78;12636:24;12663:29;12678:14;12663:12;:29;:::i;:::-;12729:13;;12636:56;;-1:-1:-1;12750:3:78;;12729:18;;12745:2;12729:18;:::i;:::-;:24;;;;:::i;:::-;12710:16;:43;12706:237;;;12773:48;12787:17;;12805:5;12787:24;;;;;;;:::i;:::-;;;;;;;12813:7;12773:13;:48::i;:::-;12706:237;;;12860:68;12876:17;;12894:5;12876:24;;;;;;;:::i;:::-;;;;;;;12902:7;12911:16;12860:15;:68::i;:::-;11693:1260;;;11659:1294;12999:16;;12979:17;:15;:17::i;:::-;:36;;;;:::i;:::-;12962:53;;13045:14;13030:12;:29;13026:129;;;13082:62;;-1:-1:-1;;;13082:62:78;;-1:-1:-1;;;;;7890:32:98;;13082:62:78;;;7872:51:98;7939:18;;;7932:34;;;7982:18;;;7975:34;;;7845:18;;13082:62:78;7670:345:98;13026:129:78;13271:21;13239:29;13256:12;13239:14;:29;:::i;:::-;:53;13235:167;;;13315:76;;-1:-1:-1;;;13315:76:78;;-1:-1:-1;;;;;8721:32:98;;13315:76:78;;;8703:51:98;8770:18;;;8763:34;;;8813:18;;;8806:34;;;8856:18;;;8849:34;;;8675:19;;13315:76:78;8472:417:98;13235:167:78;13432:70;13459:7;13468:10;13488:4;13495:6;13432:26;:70::i;:::-;13542:14;:16;;;:14;:16;;;:::i;:::-;;;;;13529:29;;13568:26;13597:9;:21;13607:10;13597:21;;;;;;;;;;;13568:50;;13639:12;13628:2;:8;;:23;;;;13672:8;13661:2;:8;;;:19;;;;;-1:-1:-1;;;;;13661:19:78;;;;;-1:-1:-1;;;;;13661:19:78;;;;;;13714:15;13690:2;:14;;;:40;;;;;;;;;;;;;;;;;;13765:15;13740:2;:15;;;:41;;;;;;;;;;;;;;;;;;13804:7;13791:2;:10;;;:20;;;;;;;;;;;;;;;;;;13855:12;13822:20;13843:7;13822:29;;;;;;;;;;:::i;:::-;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;13897:12;13877:16;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;13952:8:78;;;;13970;;13924:67;;;9234:25:98;;;9290:2;9275:18;;9268:34;;;;13980:10:78;-1:-1:-1;;;13980:10:78;;;9318:18:98;;;9311:51;-1:-1:-1;;;;;13952:8:78;;;;13940:10;;13924:67;;9222:2:98;9207:18;13924:67:78;;;;;;;10083:3915;;;;9923:4075;;;;;;;:::o;5392:1815::-;5645:16;;;;5611:12;;5664:16;;5627:34;;-1:-1:-1;;;5645:16:78;;;;5627:15;:34;:::i;:::-;:53;5626:135;;5746:15;5626:135;;;5696:16;;;;:35;;5715:16;;-1:-1:-1;;;5696:16:78;;;;:35;:::i;:::-;5800:15;;;;5611:150;;-1:-1:-1;5771:19:78;;5793:22;;-1:-1:-1;;;5800:15:78;;;;5611:150;5793:22;:::i;:::-;5771:44;;5825:20;5848:25;5863:3;:9;;;5848:14;:25::i;:::-;5825:48;;5883:20;2855:3;5973:18;5958:11;5933:9;5943:3;:11;;;;;;;;;;;;5933:22;;;;;;;;;;:::i;:::-;;;;;;;;;5918:12;:37;;;;:::i;:::-;:51;;;;:::i;:::-;:74;;;;:::i;:::-;:90;;;;:::i;:::-;5883:125;;6038:12;6022;:28;6018:145;;-1:-1:-1;6140:12:78;6018:145;6206:1;6176:27;6191:12;6176;:27;:::i;:::-;:31;6172:961;;;6277:21;6301:43;6316:27;6331:12;6316;:27;:::i;6301:43::-;6277:67;;6358:18;6391:13;6379:3;:9;;;:25;;;;:::i;:::-;6358:46;;6455:10;6418:20;6439:3;:11;;;;;;;;;;;;6418:33;;;;;;;;;;:::i;:::-;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;6499:10;6479:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;6523:25:78;;;6562:15;;;:41;;;6587:15;6562:41;;-1:-1:-1;;;6562:41:78;-1:-1:-1;;;;6562:41:78;;;;;;;;6622:80;;;9234:25:98;;;9290:2;9275:18;;9268:34;;;-1:-1:-1;;;6690:11:78;;;;;;9318:18:98;;;9311:51;;;;-1:-1:-1;;;;;6650:9:78;;;;;;;6638:10;;6622:80;;9222:2:98;9207:18;6622:80:78;;;;;;;6209:504;;6172:961;;;6826:9;;6810:11;;;;6789:20;:33;;:20;;-1:-1:-1;;;6810:11:78;;;;;6789:33;;;;;;:::i;:::-;;;;;;;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;6869:9:78;;6849:16;:29;;6869:9;;6849:29;;6869:9;;6849:29;:::i;:::-;;;;-1:-1:-1;;6925:9:78;;;;6897:68;;;9234:25:98;;;6925:9:78;9290:2:98;9275:18;;9268:34;6953:11:78;-1:-1:-1;;;6953:11:78;;;9318:18:98;;;9311:51;6897:68:78;;-1:-1:-1;;;;;6925:9:78;;;;6913:10;;6897:68;;;;;;9222:2:98;6897:68:78;;;7012:9;;;;6984:41;;7012:9;391:25:98;;-1:-1:-1;;;;;7012:9:78;;;;7000:10;;6984:41;;379:2:98;364:18;6984:41:78;;;;;;;7046:9;;;7039:16;;-1:-1:-1;;;;;;7069:23:78;;;7046:9;7106:16;;6172:961;7142:58;7165:7;7174:11;7187:12;7142:22;:58::i;:::-;5492:1715;;;;5392:1815;;;:::o;7352:467::-;7479:9;;7463:11;;;;7442:20;:33;;:20;;-1:-1:-1;;;7463:11:78;;;;;7442:33;;;;;;:::i;:::-;;;;;;;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;7518:9:78;;7498:16;:29;;7518:9;;7498:29;;7518:9;;7498:29;:::i;:::-;;;;-1:-1:-1;;7553:9:78;;;;7604;;-1:-1:-1;;;;;7553:9:78;;;;7537:13;;7589:25;;:14;:25::i;:::-;7572:42;;7657:5;-1:-1:-1;;;;;7629:42:78;7645:10;7629:42;7664:6;7629:42;;;;391:25:98;;379:2;364:18;;245:177;7629:42:78;;;;;;;;7688:9;;;7681:16;;-1:-1:-1;;;;;;7707:23:78;;;7688:9;7740:16;;7766:46;7789:7;7798:5;7805:6;7766:22;:46::i;:::-;7432:387;;7352:467;;:::o;6012:299:48:-;6113:7;6132:14;6149:25;6156:1;6159;6162:11;6149:6;:25::i;:::-;6132:42;-1:-1:-1;6200:11:48;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:48;;;;;;;:::o;5136:111:78:-;5185:7;5237:3;5211:23;2026:2;5211:11;:23;:::i;7990:498::-;8127:9;;8112:24;;8104:55;;;;-1:-1:-1;;;8104:55:78;;10585:2:98;8104:55:78;;;10567:21:98;10624:2;10604:18;;;10597:30;-1:-1:-1;;;10643:18:98;;;10636:48;10701:18;;8104:55:78;10383:342:98;8104:55:78;8169:14;8186:28;8201:12;8186:14;:28::i;:::-;8169:45;;8237:12;8224:3;:9;;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;8280:11:78;;;;8259:20;:33;;8296:12;;-1:-1:-1;;;8280:11:78;;;;;8259:33;;;;;;:::i;:::-;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;8338:12;8318:16;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;8392:9:78;;;;8403;;8365:56;;;10904:25:98;;;10960:2;10945:18;;10938:34;;;-1:-1:-1;;;;;8392:9:78;;;;8380:10;;8365:56;;10877:18:98;8365:56:78;;;;;;;8463:9;;;;8431:50;;8454:7;;-1:-1:-1;;;;;8463:9:78;8474:6;8431:22;:50::i;1355:203:39:-;1482:68;;-1:-1:-1;;;;;11203:32:98;;;1482:68:39;;;11185:51:98;11272:32;;11252:18;;;11245:60;11321:18;;;11314:34;;;1455:96:39;;1475:5;;-1:-1:-1;;;1505:27:39;11158:18:98;;1482:68:39;;;;-1:-1:-1;;1482:68:39;;;;;;;;;;;;;;-1:-1:-1;;;;;1482:68:39;-1:-1:-1;;;;;;1482:68:39;;;;;;;;;;1455:19;:96::i;941:175::-;1050:58;;-1:-1:-1;;;;;11551:32:98;;1050:58:39;;;11533:51:98;11600:18;;;11593:34;;;1023:86:39;;1043:5;;-1:-1:-1;;;1073:23:39;11506:18:98;;1050:58:39;11359:274:98;1023:86:39;941:175;;;:::o;1667:4213:48:-;1749:14;;;-1:-1:-1;;2286:1:48;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:48;;11840:2:98;2952:53:48;;;11822:21:98;11879:2;11859:18;;;11852:30;-1:-1:-1;;;11898:18:98;;;11891:51;11959:18;;2952:53:48;11638:345:98;2952:53:48;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:48;;;;;;:::o;5196:642:39:-;5615:23;5641:69;5669:4;5641:69;;;;;;;;;;;;;;;;;5649:5;-1:-1:-1;;;;;5641:27:39;;;:69;;;;;:::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;-1:-1:-1;;;5720:111:39;;12472:2:98;5720:111:39;;;12454:21:98;12511:2;12491:18;;;12484:30;12550:34;12530:18;;;12523:62;-1:-1:-1;;;12601:18:98;;;12594:40;12651:19;;5720:111:39;12270:406:98;4108:223:40;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4241;5446;5460:23;5487:6;-1:-1:-1;;;;;5487:11:40;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:40;;;8113:60;;;;-1:-1:-1;;;8113:60:40;;13596:2:98;8113:60:40;;;13578:21:98;13635:2;13615:18;;;13608:30;13674:31;13654:18;;;13647:59;13723:18;;8113:60:40;13394:353:98;8113:60:40;-1:-1:-1;8208:10:40;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:40;;;;;;;;:::i;14:226:98:-;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:98;;14:226;-1:-1:-1;14:226:98:o;427:173::-;495:20;;-1:-1:-1;;;;;544:31:98;;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:98;;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:98;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:98;-1:-1:-1;;1976:3:98;1961:19;;1948:33;;-1:-1:-1;2059:3:98;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:98;;;;;;;;-1:-1:-1;2151:7:98;;2231:3;2216:19;;2203:33;;-1:-1:-1;2335:3:98;2320:19;2307:33;;1145:1227;-1:-1:-1;1145:1227:98: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:98;;;3226:2;3211:18;;;3198:32;;-1:-1:-1;2916:346:98: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:98;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:98;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:98;;-1:-1:-1;4227:8:98;;4112:96;3570:698;-1:-1:-1;;;3570:698:98: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:98;;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:98;;6582:184;-1:-1:-1;6582:184:98:o;8894:135::-;8933:3;8954:17;;;8951:43;;8974:18;;:::i;:::-;-1:-1:-1;9021:1:98;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:98;13088:301;-1:-1:-1;13088:301:98: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":{"61018":[{"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}],"61020":[{"start":5192,"length":32}],"61022":[{"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.28+commit.7893614a\"},\"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\":{\"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 Harberg tokens to convert.\"},\"returns\":{\"_0\":\"Number of shares corresponding to the input assets based on the current total supply of Harberg 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 Harberg 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 Harberg 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 Harberg 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 Harberg 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 Harberg 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 Harberg 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 Harberg 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\":\"cancun\",\"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\":\"0x36e95626b3927127004954f77c3b6565e9dbda68d9ad41ca00d12188ca5c336d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d127878308d493074c4499c2cc42b5b357e609f65f83e93e682518113a789115\",\"dweb:/ipfs/QmbbRbjrmgkVX31XRmZ7ba8dL2YqYh9HkA8LQMVcLXRap1\"]},\"src/Stake.sol\":{\"keccak256\":\"0x182c043d56dfe50d571e27c8d8eeed85e48cf81c2aaf6d2c89d05e513dac9cd8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e71bed07050a1841faa49fc559c5e85bfbfab822093eb1371da0b632524f44e7\",\"dweb:/ipfs/QmQ8vwL7QSnheaYyAxM1wFWFkSVDxQAHEfVzhFw41nLuja\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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 Harberg tokens to convert."},"returns":{"_0":"Number of shares corresponding to the input assets based on the current total supply of Harberg 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 Harberg 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 Harberg 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 Harberg 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 Harberg 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 Harberg 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 Harberg 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 Harberg 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":"cancun","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":"0x36e95626b3927127004954f77c3b6565e9dbda68d9ad41ca00d12188ca5c336d","urls":["bzz-raw://d127878308d493074c4499c2cc42b5b357e609f65f83e93e682518113a789115","dweb:/ipfs/QmbbRbjrmgkVX31XRmZ7ba8dL2YqYh9HkA8LQMVcLXRap1"],"license":"GPL-3.0-or-later"},"src/Stake.sol":{"keccak256":"0x182c043d56dfe50d571e27c8d8eeed85e48cf81c2aaf6d2c89d05e513dac9cd8","urls":["bzz-raw://e71bed07050a1841faa49fc559c5e85bfbfab822093eb1371da0b632524f44e7","dweb:/ipfs/QmQ8vwL7QSnheaYyAxM1wFWFkSVDxQAHEfVzhFw41nLuja"],"license":"GPL-3.0-or-later"}},"version":1},"id":78} \ No newline at end of file diff --git a/subgraph/base_sepolia/package-lock.json b/subgraph/base_sepolia/package-lock.json index c0530d0..6723a79 100644 --- a/subgraph/base_sepolia/package-lock.json +++ b/subgraph/base_sepolia/package-lock.json @@ -1,10 +1,10 @@ { - "name": "harb", + "name": "kraiken", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "harb", + "name": "kraiken", "license": "UNLICENSED", "dependencies": { "@graphprotocol/graph-cli": "0.69.0", diff --git a/subgraph/base_sepolia/package.json b/subgraph/base_sepolia/package.json index 4811d2a..f14238e 100644 --- a/subgraph/base_sepolia/package.json +++ b/subgraph/base_sepolia/package.json @@ -1,13 +1,13 @@ { - "name": "harb", + "name": "kraiken", "license": "UNLICENSED", "scripts": { "codegen": "graph codegen", "build": "graph build", - "deploy": "graph deploy --node https://api.studio.thegraph.com/deploy/ harb-base-sepolia", - "create-local": "graph create --node http://localhost:8020/ harb", - "remove-local": "graph remove --node http://localhost:8020/ harb", - "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 harb", + "deploy": "graph deploy --node https://api.studio.thegraph.com/deploy/ kraiken-base-sepolia", + "create-local": "graph create --node http://localhost:8020/ kraiken", + "remove-local": "graph remove --node http://localhost:8020/ kraiken", + "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 kraiken", "test": "graph test" }, "dependencies": { diff --git a/subgraph/base_sepolia/schema.graphql b/subgraph/base_sepolia/schema.graphql index c1e5761..76ae56a 100644 --- a/subgraph/base_sepolia/schema.graphql +++ b/subgraph/base_sepolia/schema.graphql @@ -4,7 +4,7 @@ type Stats @entity { id: Bytes! - harbTotalSupply: BigInt! # uint256 + kraikenTotalSupply: BigInt! # uint256 stakeTotalSupply: BigInt! # uint256 outstandingStake: BigInt! # uint256 ringBuffer: [BigInt!]! # Ring buffer to store daily totals @@ -37,7 +37,7 @@ type Position @entity { lastTaxTime: Int taxRate: BigDecimal! taxPaid: BigInt! - harbDeposit: BigInt! + kraikenDeposit: BigInt! snatched: Int! totalSupplyInit: BigInt! totalSupplyEnd: BigInt diff --git a/subgraph/base_sepolia/src/chains.ts b/subgraph/base_sepolia/src/chains.ts index b0a6d04..45b4ae8 100644 --- a/subgraph/base_sepolia/src/chains.ts +++ b/subgraph/base_sepolia/src/chains.ts @@ -11,7 +11,7 @@ const BASE_SEPOLIA_NETWORK_NAME = 'base-sepolia' export class SubgraphConfig { - harbergAddress: Address + kraikenAddress: Address stakeAddress: Address @@ -24,12 +24,12 @@ export function getSubgraphConfig(): SubgraphConfig { // subgraph does not support case switch with strings, hence this if else block if (selectedNetwork == BASE_NETWORK_NAME) { return { - harbergAddress: Address.fromString('0x45caa5929f6ee038039984205bdecf968b954820'), + kraikenAddress: Address.fromString('0x45caa5929f6ee038039984205bdecf968b954820'), stakeAddress: Address.fromString('0xed70707fab05d973ad41eae8d17e2bcd36192cfc'), } } else if (selectedNetwork == BASE_SEPOLIA_NETWORK_NAME) { return { - harbergAddress: Address.fromString('0x22c264Ecf8D4E49D1E3CabD8DD39b7C4Ab51C1B8'), + kraikenAddress: Address.fromString('0x22c264Ecf8D4E49D1E3CabD8DD39b7C4Ab51C1B8'), stakeAddress: Address.fromString('0xe28020BCdEeAf2779dd47c670A8eFC2973316EE2'), } } else { diff --git a/subgraph/base_sepolia/src/harb.ts b/subgraph/base_sepolia/src/kraiken.ts similarity index 95% rename from subgraph/base_sepolia/src/harb.ts rename to subgraph/base_sepolia/src/kraiken.ts index 271b622..b8a189b 100644 --- a/subgraph/base_sepolia/src/harb.ts +++ b/subgraph/base_sepolia/src/kraiken.ts @@ -2,8 +2,8 @@ import { Approval as ApprovalEvent, EIP712DomainChanged as EIP712DomainChangedEvent, Transfer as TransferEvent, - Harb -} from "../generated/Harb/Harb"; + Kraiken +} from "../generated/Kraiken/Kraiken"; import { BigInt, Bytes, ethereum, Address, log } from "@graphprotocol/graph-ts"; import { Stats } from "../generated/schema"; import { getSubgraphConfig } from './chains'; @@ -16,11 +16,11 @@ function getOrCreateStats(): Stats { if (stats == null) { log.info("Stats not found, creating a new one", []); stats = new Stats(Bytes.fromHexString("0x01") as Bytes); - let harb = Harb.bind(getSubgraphConfig().harbergAddress); + let kraiken = Kraiken.bind(getSubgraphConfig().kraikenAddress); - stats.harbTotalSupply = harb.totalSupply(); + stats.kraikenTotalSupply = kraiken.totalSupply(); stats.stakeTotalSupply = stakeTotalSupply; stats.outstandingStake = BigInt.zero(); @@ -68,7 +68,7 @@ export function handleTransfer(event: TransferEvent): void { let mintBufferIndex = (stats.ringBufferPointer * 4) + 1; // Minted tokens are at index 1 ringBuffer[mintBufferIndex] = ringBuffer[mintBufferIndex].plus(event.params.value); - stats.harbTotalSupply = stats.harbTotalSupply.plus(event.params.value); + stats.kraikenTotalSupply = stats.kraikenTotalSupply.plus(event.params.value); } else if (event.params.to == ZERO_ADDRESS) { // Burn event @@ -78,7 +78,7 @@ export function handleTransfer(event: TransferEvent): void { let burnBufferIndex = (stats.ringBufferPointer * 4) + 2; // Burned tokens are at index 2 ringBuffer[burnBufferIndex] = ringBuffer[burnBufferIndex].plus(event.params.value); - stats.harbTotalSupply = stats.harbTotalSupply.minus(event.params.value); + stats.kraikenTotalSupply = stats.kraikenTotalSupply.minus(event.params.value); } else if (event.params.to == TAX_POOL_ADDR) { diff --git a/subgraph/base_sepolia/src/stake.ts b/subgraph/base_sepolia/src/stake.ts index 44fcf9d..5ebf895 100644 --- a/subgraph/base_sepolia/src/stake.ts +++ b/subgraph/base_sepolia/src/stake.ts @@ -5,7 +5,7 @@ import { PositionShrunk as PositionShrunkEvent, PositionRateHiked as PositionRateHikedEvent, } from "../generated/Stake/Stake"; -import { Harb } from "../generated/Harb/Harb"; +import { Kraiken } from "../generated/Kraiken/Kraiken"; import { Stake } from "../generated/Stake/Stake"; import { getSubgraphConfig, SubgraphConfig } from './chains'; import { BigDecimal, BigInt, Bytes } from "@graphprotocol/graph-ts"; @@ -22,13 +22,13 @@ export function handlePositionCreated(event: PositionCreatedEvent): void { position.creationTime = event.block.timestamp.toI32(); position.lastTaxTime = event.block.timestamp.toI32(); position.taxRate = BigDecimal.fromString(taxRates[event.params.taxRate.toI32()]); - position.harbDeposit = event.params.harbergDeposit; + position.kraikenDeposit = event.params.kraikenDeposit; position.status = "Active"; position.snatched = 0; position.payout = BigInt.fromString("0"); position.taxPaid = BigInt.fromString("0"); - let harb = Harb.bind(getSubgraphConfig().harbergAddress); - position.totalSupplyInit = harb.totalSupply(); + let kraiken = Kraiken.bind(getSubgraphConfig().kraikenAddress); + position.totalSupplyInit = kraiken.totalSupply(); position.save(); let stake = Stake.bind(event.address); let stats = Stats.load(Bytes.fromHexString("0x01") as Bytes); @@ -42,9 +42,9 @@ export function handlePositionRemoved(event: PositionRemovedEvent): void { let position = Position.load(Bytes.fromI32(event.params.positionId.toI32())); if (position != null) { position.status = "Closed"; - let harb = Harb.bind(getSubgraphConfig().harbergAddress); - position.totalSupplyEnd = harb.totalSupply(); - // position.payout = position.payout.plus(event.params.harbPayout); + let kraiken = Kraiken.bind(getSubgraphConfig().kraikenAddress); + position.totalSupplyEnd = kraiken.totalSupply(); + // position.payout = position.payout.plus(event.params.kraikenPayout); position.save(); } let stake = Stake.bind(event.address); @@ -59,10 +59,10 @@ export function handlePositionShrunk(event: PositionShrunkEvent): void { let position = Position.load(Bytes.fromI32(event.params.positionId.toI32())); if (position != null) { position.share = event.params.newShares.toBigDecimal().div(totalSupply); - position.harbDeposit = position.harbDeposit.minus(event.params.harbergPayout); + position.kraikenDeposit = position.kraikenDeposit.minus(event.params.kraikenPayout); position.snatched = position.snatched++; - // position.payout = position.payout.plus(event.params.harbPayout); + // position.payout = position.payout.plus(event.params.kraikenPayout); position.save(); } } diff --git a/subgraph/base_sepolia/subgraph.yaml b/subgraph/base_sepolia/subgraph.yaml index 7289e1f..81aaf01 100644 --- a/subgraph/base_sepolia/subgraph.yaml +++ b/subgraph/base_sepolia/subgraph.yaml @@ -1,15 +1,15 @@ specVersion: 0.0.4 repository: http://gitea.loseyourip.com:4000/dark-meme-society/harb.git -description: Harberger Tax Token +description: Kraiken Token schema: file: ./schema.graphql dataSources: - kind: ethereum - name: Harb + name: Kraiken network: base source: address: "0x45caa5929f6ee038039984205bdecf968b954820" - abi: Harb + abi: Kraiken startBlock: 26038614 mapping: kind: ethereum/events @@ -19,14 +19,14 @@ dataSources: - Stats - UbiClaim abis: - - name: Harb - file: ./abis/Harb.json + - name: Kraiken + file: ./abis/Kraiken.json eventHandlers: - event: Transfer(indexed address,indexed address,uint256) handler: handleTransfer blockHandlers: - handler: handleBlock - file: ./src/harb.ts + file: ./src/kraiken.ts - kind: ethereum name: Stake network: base @@ -43,8 +43,8 @@ dataSources: abis: - name: Stake file: ./abis/Stake.json - - name: Harb - file: ./abis/Harb.json + - name: Kraiken + file: ./abis/Kraiken.json eventHandlers: - event: PositionCreated(indexed uint256,indexed address,uint256,uint256,uint32) handler: handlePositionCreated