{"_format":"hh3-sol-build-info-output-1","id":"solc-0_8_33-8a8197f199e47567790c3b9e32470a2af3dca8ea","output":{"contracts":{"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol":{"IIssuanceAllocationAdministration":{"abi":[{"inputs":[],"name":"distributePendingIssuance","outputs":[{"internalType":"uint256","name":"distributedBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"toBlockNumber","type":"uint256"}],"name":"distributePendingIssuance","outputs":[{"internalType":"uint256","name":"distributedBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"forceTargetNoChangeNotificationBlock","outputs":[{"internalType":"uint256","name":"notificationBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getSelfMintingEventMode","outputs":[{"internalType":"enum SelfMintingEventMode","name":"mode","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"notifyTarget","outputs":[{"internalType":"bool","name":"notified","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDefaultTarget","outputs":[{"internalType":"bool","name":"applied","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"uint256","name":"minDistributedBlock","type":"uint256"}],"name":"setDefaultTarget","outputs":[{"internalType":"bool","name":"applied","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newIssuancePerBlock","type":"uint256"}],"name":"setIssuancePerBlock","outputs":[{"internalType":"bool","name":"applied","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newIssuancePerBlock","type":"uint256"},{"internalType":"uint256","name":"minDistributedBlock","type":"uint256"}],"name":"setIssuancePerBlock","outputs":[{"internalType":"bool","name":"applied","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum SelfMintingEventMode","name":"newMode","type":"uint8"}],"name":"setSelfMintingEventMode","outputs":[{"internalType":"bool","name":"applied","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IIssuanceTarget","name":"target","type":"address"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"}],"name":"setTargetAllocation","outputs":[{"internalType":"bool","name":"applied","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IIssuanceTarget","name":"target","type":"address"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"}],"name":"setTargetAllocation","outputs":[{"internalType":"bool","name":"applied","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IIssuanceTarget","name":"target","type":"address"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"},{"internalType":"uint256","name":"minDistributedBlock","type":"uint256"}],"name":"setTargetAllocation","outputs":[{"internalType":"bool","name":"applied","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"distributePendingIssuance()":"3af5b073","distributePendingIssuance(uint256)":"52c0e18c","forceTargetNoChangeNotificationBlock(address,uint256)":"7c92330b","getSelfMintingEventMode()":"93c911a8","notifyTarget(address)":"4887693c","setDefaultTarget(address)":"697cf322","setDefaultTarget(address,uint256)":"d012a15b","setIssuancePerBlock(uint256)":"1156bdc1","setIssuancePerBlock(uint256,uint256)":"c627b7a4","setSelfMintingEventMode(uint8)":"13a7855d","setTargetAllocation(address,uint256)":"443990fa","setTargetAllocation(address,uint256,uint256)":"647b3682","setTargetAllocation(address,uint256,uint256,uint256)":"c2cb3544"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"distributePendingIssuance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"distributedBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toBlockNumber\",\"type\":\"uint256\"}],\"name\":\"distributePendingIssuance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"distributedBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"forceTargetNoChangeNotificationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"notificationBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelfMintingEventMode\",\"outputs\":[{\"internalType\":\"enum SelfMintingEventMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"notifyTarget\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"notified\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setDefaultTarget\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"applied\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minDistributedBlock\",\"type\":\"uint256\"}],\"name\":\"setDefaultTarget\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"applied\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newIssuancePerBlock\",\"type\":\"uint256\"}],\"name\":\"setIssuancePerBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"applied\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newIssuancePerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDistributedBlock\",\"type\":\"uint256\"}],\"name\":\"setIssuancePerBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"applied\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum SelfMintingEventMode\",\"name\":\"newMode\",\"type\":\"uint8\"}],\"name\":\"setSelfMintingEventMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"applied\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIssuanceTarget\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"}],\"name\":\"setTargetAllocation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"applied\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIssuanceTarget\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"}],\"name\":\"setTargetAllocation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"applied\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIssuanceTarget\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDistributedBlock\",\"type\":\"uint256\"}],\"name\":\"setTargetAllocation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"applied\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"kind\":\"dev\",\"methods\":{\"distributePendingIssuance()\":{\"details\":\"Distributes accumulated allocator-minting issuance using current rates (retroactively applied to the period from lastDistributionBlock to current block). Prioritizes non-default targets getting full rates; default gets remainder.Finalizes self-minting accumulation for the period being distributed.\",\"returns\":{\"distributedBlock\":\"Block number that issuance was distributed up to\"}},\"distributePendingIssuance(uint256)\":{\"details\":\"Distributes accumulated allocator-minting issuance using current rates (retroactively applied to the period from lastDistributionBlock to toBlockNumber). Prioritizes non-default targets getting full rates; default gets remainder.Finalizes self-minting accumulation for the period being distributed.\",\"params\":{\"toBlockNumber\":\"Block number to distribute up to (must be <= block.number and >= lastDistributionBlock)\"},\"returns\":{\"distributedBlock\":\"Block number that issuance was distributed up to\"}},\"forceTargetNoChangeNotificationBlock(address,uint256)\":{\"details\":\"This can be used to enable notification to be sent again (by setting to a past block)or to prevent notification until a future block (by setting to current or future block).\",\"params\":{\"blockNumber\":\"Block number to set as the lastChangeNotifiedBlock\",\"target\":\"Address of the target to update\"},\"returns\":{\"notificationBlock\":\"The block number that was set\"}},\"getSelfMintingEventMode()\":{\"returns\":{\"mode\":\"The current emission mode\"}},\"notifyTarget(address)\":{\"params\":{\"target\":\"Address of the target to notify\"},\"returns\":{\"notified\":\"True if notification was sent or already sent this block, false otherwise\"}},\"setDefaultTarget(address)\":{\"params\":{\"newAddress\":\"The new default target address (can be address(0))\"},\"returns\":{\"applied\":\"True if applied\"}},\"setDefaultTarget(address,uint256)\":{\"details\":\"Governance should explicitly call distributePendingIssuance(blockNumber) first if paused and distribution is not up to minDistributedBlock block. then call this function with the same or lower blockNumber.\",\"params\":{\"minDistributedBlock\":\"Minimum block number that distribution must have reached\",\"newAddress\":\"The new default target address (can be address(0))\"},\"returns\":{\"applied\":\"True if applied, false if distribution has not reached minDistributedBlock and therefore the change was not applied\"}},\"setIssuancePerBlock(uint256)\":{\"details\":\"Requires distribution to have reached block.number\",\"params\":{\"newIssuancePerBlock\":\"New issuance per block\"},\"returns\":{\"applied\":\"True if the value is applied (including if already the case)\"}},\"setIssuancePerBlock(uint256,uint256)\":{\"details\":\"Governance should explicitly call distributePendingIssuance(blockNumber) first if distribution is behind minDistributedBlock.This allows configuration changes while paused: first call distributePendingIssuance(blockNumber), then call this function with the same or lower blockNumber.\",\"params\":{\"minDistributedBlock\":\"Minimum block number that distribution must have reached\",\"newIssuancePerBlock\":\"New issuance per block\"},\"returns\":{\"applied\":\"True if the value is applied (including if already the case), false if distribution hasn't reached minDistributedBlock\"}},\"setSelfMintingEventMode(uint8)\":{\"details\":\"None: Skip event emission entirely (lowest gas)Aggregate: Emit single aggregated event for all self-minting (medium gas)PerTarget: Emit events for each target with self-minting (highest gas)Self-minting targets should call getTargetIssuancePerBlock() rather than relying on events\",\"params\":{\"newMode\":\"The new emission mode (None, Aggregate, or PerTarget)\"},\"returns\":{\"applied\":\"True if the mode was set (including if already set to that mode)\"}},\"setTargetAllocation(address,uint256)\":{\"details\":\"This variant sets selfMintingRate to 0 and evenIfDistributionPending to false\",\"params\":{\"allocatorMintingRate\":\"Allocator-minting rate for the target (tokens per block)\",\"target\":\"The target contract to update\"},\"returns\":{\"applied\":\"True if the value is applied (including if already the case), false if not applied\"}},\"setTargetAllocation(address,uint256,uint256)\":{\"details\":\"This variant sets evenIfDistributionPending to false\",\"params\":{\"allocatorMintingRate\":\"Allocator-minting rate for the target (tokens per block)\",\"selfMintingRate\":\"Self-minting rate for the target (tokens per block)\",\"target\":\"The target contract to update\"},\"returns\":{\"applied\":\"True if the value is applied (including if already the case), false if not applied\"}},\"setTargetAllocation(address,uint256,uint256,uint256)\":{\"details\":\"Governance should explicitly call distributePendingIssuance(blockNumber) first if paused and not distributed up to minDistributedBlock block.This allows configuration changes while paused: first call distributePendingIssuance(blockNumber), then call this function with the same or lower blockNumber.\",\"params\":{\"allocatorMintingRate\":\"Allocator-minting rate for the target (tokens per block)\",\"minDistributedBlock\":\"Minimum block number that distribution must have reached\",\"selfMintingRate\":\"Self-minting rate for the target (tokens per block)\",\"target\":\"The target contract to update\"},\"returns\":{\"applied\":\"True if the value is applied (including if already the case), false if distribution hasn't reached minDistributedBlock and therefore the change was not applied\"}}},\"title\":\"IIssuanceAllocationAdministration\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"distributePendingIssuance()\":{\"notice\":\"Distribute pending accumulated allocator-minting issuance\"},\"distributePendingIssuance(uint256)\":{\"notice\":\"Distribute pending accumulated allocator-minting issuance up to specified block\"},\"forceTargetNoChangeNotificationBlock(address,uint256)\":{\"notice\":\"Force set the lastChangeNotifiedBlock for a target to a specific block number\"},\"getSelfMintingEventMode()\":{\"notice\":\"Get the current self-minting event emission mode\"},\"notifyTarget(address)\":{\"notice\":\"Notify a specific target about an upcoming allocation change\"},\"setDefaultTarget(address)\":{\"notice\":\"Set the address that receives the default portion of issuance not allocated to other targets\"},\"setDefaultTarget(address,uint256)\":{\"notice\":\"Set the address that receives the default portion of issuance not allocated to other targets\"},\"setIssuancePerBlock(uint256)\":{\"notice\":\"Set the issuance per block.\"},\"setIssuancePerBlock(uint256,uint256)\":{\"notice\":\"Set the issuance per block, requiring distribution has reached at least the specified block\"},\"setSelfMintingEventMode(uint8)\":{\"notice\":\"Set the self-minting event emission mode\"},\"setTargetAllocation(address,uint256)\":{\"notice\":\"Set the allocation for a target with only allocator minting\"},\"setTargetAllocation(address,uint256,uint256)\":{\"notice\":\"Set the allocation for a target with both allocator and self minting\"},\"setTargetAllocation(address,uint256,uint256,uint256)\":{\"notice\":\"Set the allocation for a target, provided distribution has reached at least the specified block\"}},\"notice\":\"Interface for administrative operations on the issuance allocator. These functions are typically restricted to the governor role.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol\":\"IIssuanceAllocationAdministration\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol\":{\"keccak256\":\"0xb4d95a9c0ce489cd8df7f047dcbfc19c4a4ec9d05878b2bef4f3abd5fa4e91ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7923e80806cfbf8cf9d78c4de574b7e0a6c9f87b81702303b7170adf935ffb5c\",\"dweb:/ipfs/QmVVLV3jzxjS3HoRyg1C9hHcnWqV8ux1QaEwZgFKXrDu1X\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol\":{\"keccak256\":\"0x5054506b182f49cece8bd7bab5f1d06a7b9d8def75b6c02aecd623aa3bf728cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://48a35b7e89144bc7e9e3d94269d661109775777bd8bcfb013ebd794f6629798a\",\"dweb:/ipfs/Qmbnzo8kVX42WfwkpL8nTZAEB7LTtSCR5xBf97SZbte9XJ\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol\":{\"keccak256\":\"0x4072d8fb200c3f5f1c7dd296c8e3b816d372c7f02ccde3c1e7efe0828a379dab\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e455b77e7a53046d94720f6fd0229b47e0bbf8d6bb43c291af39a8a8dccb34b5\",\"dweb:/ipfs/QmXVP248rUtadhed7BrNpUXQXjh99B9U73JcWF8LBdZLQV\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationData.sol":{"IIssuanceAllocationData":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetData","outputs":[{"components":[{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"},{"internalType":"uint256","name":"lastChangeNotifiedBlock","type":"uint256"}],"internalType":"struct AllocationTarget","name":"","type":"tuple"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getTargetData(address)":"48c3c62e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeNotifiedBlock\",\"type\":\"uint256\"}],\"internalType\":\"struct AllocationTarget\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"This interface provides access to internal allocation target information, primarily useful for operators and off-chain monitoring systems.\",\"kind\":\"dev\",\"methods\":{\"getTargetData(address)\":{\"params\":{\"target\":\"Address of the target\"},\"returns\":{\"_0\":\"AllocationTarget struct containing target information including lastChangeNotifiedBlock\"}}},\"title\":\"IIssuanceAllocationData\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getTargetData(address)\":{\"notice\":\"Get target data for a specific target\"}},\"notice\":\"Interface for querying issuance allocation target data\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationData.sol\":\"IIssuanceAllocationData\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationData.sol\":{\"keccak256\":\"0x4c01f32e6a019dd5f8c3946b652c947a6cf05f9a4542328b3329a49f06b47181\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e0db23b187a7b8b7263a9781f97bef15616df4d66fea2dc72541e6592bc18d73\",\"dweb:/ipfs/QmdJZhN1o8yc2yQjPKZrgySCdMUF6UeoprEbyvKtYTmnyw\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol\":{\"keccak256\":\"0x5054506b182f49cece8bd7bab5f1d06a7b9d8def75b6c02aecd623aa3bf728cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://48a35b7e89144bc7e9e3d94269d661109775777bd8bcfb013ebd794f6629798a\",\"dweb:/ipfs/Qmbnzo8kVX42WfwkpL8nTZAEB7LTtSCR5xBf97SZbte9XJ\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol":{"IIssuanceAllocationDistribution":{"abi":[{"inputs":[],"name":"distributeIssuance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetIssuancePerBlock","outputs":[{"components":[{"internalType":"uint256","name":"allocatorIssuanceRate","type":"uint256"},{"internalType":"uint256","name":"allocatorIssuanceBlockAppliedTo","type":"uint256"},{"internalType":"uint256","name":"selfIssuanceRate","type":"uint256"},{"internalType":"uint256","name":"selfIssuanceBlockAppliedTo","type":"uint256"}],"internalType":"struct TargetIssuancePerBlock","name":"targetIssuance","type":"tuple"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"distributeIssuance()":"49bdfcb0","getTargetIssuancePerBlock(address)":"3067cb4c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"distributeIssuance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetIssuancePerBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allocatorIssuanceRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatorIssuanceBlockAppliedTo\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfIssuanceRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfIssuanceBlockAppliedTo\",\"type\":\"uint256\"}],\"internalType\":\"struct TargetIssuancePerBlock\",\"name\":\"targetIssuance\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"kind\":\"dev\",\"methods\":{\"distributeIssuance()\":{\"details\":\"When the contract is paused, no issuance is distributed and lastIssuanceBlock is not updated.This function is permissionless and can be called by anyone, including targets as part of their normal flow.\",\"returns\":{\"_0\":\"Block number that issuance has been distributed to. That will normally be the current block number, unless the contract is paused.\"}},\"getTargetIssuancePerBlock(address)\":{\"details\":\"This function does not revert when paused, instead the caller is expected to correctly read and apply the information provided.Targets should check allocatorIssuanceBlockAppliedTo and selfIssuanceBlockAppliedTo - if either is not the current block, that type of issuance is paused for that target.Targets should not check the allocator's pause state directly, but rely on the blockAppliedTo fields to determine if issuance is paused.\",\"params\":{\"target\":\"Address of the target\"},\"returns\":{\"targetIssuance\":\"TargetIssuancePerBlock struct containing allocatorIssuanceBlockAppliedTo, selfIssuanceBlockAppliedTo, allocatorIssuanceRate, and selfIssuanceRate\"}}},\"title\":\"IIssuanceAllocationDistribution\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"distributeIssuance()\":{\"notice\":\"Distribute issuance to allocated non-self-minting targets.\"},\"getTargetIssuancePerBlock(address)\":{\"notice\":\"Target issuance per block information\"}},\"notice\":\"Interface for distribution and target interaction with the issuance allocator. This is the minimal interface that targets need to interact with the allocator.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol\":\"IIssuanceAllocationDistribution\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol\":{\"keccak256\":\"0x6927a5d307ac841444e03af363c41c7ba032693074614f0e3ee1e25c6f8789e1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://906d824aa38a6e6daa83f34cdfc1d9b0a9ff5f895b4a2083b9a7b7d5d8285397\",\"dweb:/ipfs/QmZCCSW7Nxtf3tLPnHazMhsyDPBBiAHqfzceGdb6CFNNEJ\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol\":{\"keccak256\":\"0x5054506b182f49cece8bd7bab5f1d06a7b9d8def75b6c02aecd623aa3bf728cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://48a35b7e89144bc7e9e3d94269d661109775777bd8bcfb013ebd794f6629798a\",\"dweb:/ipfs/Qmbnzo8kVX42WfwkpL8nTZAEB7LTtSCR5xBf97SZbte9XJ\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationStatus.sol":{"IIssuanceAllocationStatus":{"abi":[{"inputs":[],"name":"getDistributionState","outputs":[{"components":[{"internalType":"uint256","name":"lastDistributionBlock","type":"uint256"},{"internalType":"uint256","name":"lastSelfMintingBlock","type":"uint256"},{"internalType":"uint256","name":"selfMintingOffset","type":"uint256"}],"internalType":"struct DistributionState","name":"distributionState","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIssuancePerBlock","outputs":[{"internalType":"uint256","name":"issuancePerBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetAllocation","outputs":[{"components":[{"internalType":"uint256","name":"totalAllocationRate","type":"uint256"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"}],"internalType":"struct Allocation","name":"allocation","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTargetAt","outputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTargetCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTargets","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAllocation","outputs":[{"components":[{"internalType":"uint256","name":"totalAllocationRate","type":"uint256"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"}],"internalType":"struct Allocation","name":"allocation","type":"tuple"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDistributionState()":"ee56977e","getIssuancePerBlock()":"79d5fc54","getTargetAllocation(address)":"84c48422","getTargetAt(uint256)":"87ee921c","getTargetCount()":"4a1293b7","getTargets()":"63fe3b56","getTotalAllocation()":"15d3b5d8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDistributionState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastDistributionBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastSelfMintingBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingOffset\",\"type\":\"uint256\"}],\"internalType\":\"struct DistributionState\",\"name\":\"distributionState\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getIssuancePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuancePerBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetAllocation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalAllocationRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Allocation\",\"name\":\"allocation\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getTargetAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTargetCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTargets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalAllocation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalAllocationRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Allocation\",\"name\":\"allocation\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"kind\":\"dev\",\"methods\":{\"getDistributionState()\":{\"returns\":{\"distributionState\":\"DistributionState struct containing block tracking and accumulation info\"}},\"getIssuancePerBlock()\":{\"returns\":{\"issuancePerBlock\":\"The current issuance per block\"}},\"getTargetAllocation(address)\":{\"params\":{\"target\":\"Address of the target\"},\"returns\":{\"allocation\":\"Allocation struct containing total, allocator-minting, and self-minting allocations\"}},\"getTargetAt(uint256)\":{\"params\":{\"index\":\"The index of the target address to retrieve\"},\"returns\":{\"target\":\"The target address at the specified index\"}},\"getTargetCount()\":{\"returns\":{\"count\":\"The total number of allocated targets\"}},\"getTargets()\":{\"returns\":{\"targets\":\"Array of target addresses\"}},\"getTotalAllocation()\":{\"returns\":{\"allocation\":\"Allocation struct containing total, allocator-minting, and self-minting allocations across all targets\"}}},\"title\":\"IIssuanceAllocationStatus\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getDistributionState()\":{\"notice\":\"Get pending issuance distribution state\"},\"getIssuancePerBlock()\":{\"notice\":\"Get the current issuance per block\"},\"getTargetAllocation(address)\":{\"notice\":\"Get the current allocation for a target\"},\"getTargetAt(uint256)\":{\"notice\":\"Get a specific allocated target address by index\"},\"getTargetCount()\":{\"notice\":\"Get the number of allocated targets\"},\"getTargets()\":{\"notice\":\"Get all allocated target addresses\"},\"getTotalAllocation()\":{\"notice\":\"Get the current global allocation totals\"}},\"notice\":\"Interface for read-only status and query operations on the issuance allocator. All functions in this interface are view functions that provide information about the current state of the allocator, including allocations and system status.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationStatus.sol\":\"IIssuanceAllocationStatus\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationStatus.sol\":{\"keccak256\":\"0xdeeda74ab0868b7dc38bb7719c09394fe4d652532978dfdbb72320486190bb29\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7bffd43fb18d81fea035b60f11a450806bef79221c22b92be72e9d23d9920f89\",\"dweb:/ipfs/QmbSBpkAhYb5Zm3ZPDPaHrqupTXu1sP2SY99NUGgvYeGXt\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol\":{\"keccak256\":\"0x5054506b182f49cece8bd7bab5f1d06a7b9d8def75b6c02aecd623aa3bf728cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://48a35b7e89144bc7e9e3d94269d661109775777bd8bcfb013ebd794f6629798a\",\"dweb:/ipfs/Qmbnzo8kVX42WfwkpL8nTZAEB7LTtSCR5xBf97SZbte9XJ\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol":{"IIssuanceTarget":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldIssuanceAllocator","type":"address"},{"indexed":true,"internalType":"address","name":"newIssuanceAllocator","type":"address"}],"name":"IssuanceAllocatorSet","type":"event"},{"inputs":[],"name":"beforeIssuanceAllocationChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newIssuanceAllocator","type":"address"}],"name":"setIssuanceAllocator","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"beforeIssuanceAllocationChange()":"3df8d682","setIssuanceAllocator(address)":"931c0ac1"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldIssuanceAllocator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newIssuanceAllocator\",\"type\":\"address\"}],\"name\":\"IssuanceAllocatorSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"beforeIssuanceAllocationChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newIssuanceAllocator\",\"type\":\"address\"}],\"name\":\"setIssuanceAllocator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"events\":{\"IssuanceAllocatorSet(address,address)\":{\"params\":{\"newIssuanceAllocator\":\"New issuance allocator address\",\"oldIssuanceAllocator\":\"Old issuance allocator address\"}}},\"kind\":\"dev\",\"methods\":{\"beforeIssuanceAllocationChange()\":{\"details\":\"The target should ensure that all issuance related calculations are up-to-date with the current block so that an allocation change can be applied correctly. Note that the allocation could change multiple times in the same block after this function has been called, only the final allocation is relevant.\"},\"setIssuanceAllocator(address)\":{\"details\":\"This function facilitates upgrades by providing a standard way for targets to change their allocator. Implementations can define their own access control.\",\"params\":{\"newIssuanceAllocator\":\"Address of the issuance allocator\"}}},\"title\":\"IIssuanceTarget\",\"version\":1},\"userdoc\":{\"events\":{\"IssuanceAllocatorSet(address,address)\":{\"notice\":\"New issuance allocator set\"}},\"kind\":\"user\",\"methods\":{\"beforeIssuanceAllocationChange()\":{\"notice\":\"Called by the issuance allocator before the target's issuance allocation changes\"},\"setIssuanceAllocator(address)\":{\"notice\":\"Sets the issuance allocator for this target\"}},\"notice\":\"Interface for contracts that receive issuance from an issuance allocator\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol\":\"IIssuanceTarget\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol\":{\"keccak256\":\"0x4072d8fb200c3f5f1c7dd296c8e3b816d372c7f02ccde3c1e7efe0828a379dab\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e455b77e7a53046d94720f6fd0229b47e0bbf8d6bb43c291af39a8a8dccb34b5\",\"dweb:/ipfs/QmXVP248rUtadhed7BrNpUXQXjh99B9U73JcWF8LBdZLQV\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/ISendTokens.sol":{"ISendTokens":{"abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"sendTokens(address,uint256)":"05ab421d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"This interface provides a simple token transfer capability for contracts that need to distribute or send tokens programmatically.\",\"kind\":\"dev\",\"methods\":{\"sendTokens(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to send\",\"to\":\"The address to send tokens to\"}}},\"title\":\"ISendTokens\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"sendTokens(address,uint256)\":{\"notice\":\"Send tokens to a specified address\"}},\"notice\":\"Interface for contracts that can send tokens to arbitrary addresses\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/ISendTokens.sol\":\"ISendTokens\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/ISendTokens.sol\":{\"keccak256\":\"0xa911740dd57395ffdc478c2d83c60d881fee0f521d25ec99619939ff545cfa13\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://62a95fe4acbbb29cd05a89993fb4cce9126430386db8d8780404ba7e04bf0c08\",\"dweb:/ipfs/QmURXpnJrzBzSdZPq11iizFNwm7bwxvhFGuXC6d2GPkufM\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol":{"IPausableControl":{"abi":[{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"pause()":"8456cb59","paused()":"5c975abb","unpause()":"3f4ba83a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"This interface extends standard pausable functionality with explicit pause and unpause functions. Contracts implementing this interface allow authorized accounts to pause and unpause contract operations. Events (Paused, Unpaused) are inherited from OpenZeppelin's PausableUpgradeable.\",\"kind\":\"dev\",\"methods\":{\"pause()\":{\"details\":\"Pauses contract operations. Only functions using whenNotPaused modifier will be affected.\"},\"paused()\":{\"returns\":{\"_0\":\"True if the contract is paused, false otherwise\"}},\"unpause()\":{\"details\":\"Resumes contract operations. Only functions using whenPaused modifier will be affected.\"}},\"title\":\"IPausableControl\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"pause()\":{\"notice\":\"Pause the contract\"},\"paused()\":{\"notice\":\"Check if the contract is currently paused\"},\"unpause()\":{\"notice\":\"Unpause the contract\"}},\"notice\":\"Interface for contracts that support pause/unpause functionality\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol\":\"IPausableControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol\":{\"keccak256\":\"0xb60ae62d0ab5cb8a9d06b922f036500e2fc5f0a491ea3322df6db8124ffd1a6a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://25404feafd215b17a25d71661d308ad19c6604f2f32b2447b1337e60974934cb\",\"dweb:/ipfs/QmYyQVQaU5fdfqgbQ1CQXVkBZhW53FiZBC79E42cWEEjnJ\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibility.sol":{"IRewardsEligibility":{"abi":[{"inputs":[{"internalType":"address","name":"indexer","type":"address"}],"name":"isEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isEligible(address)":"66e305fd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"indexer\",\"type\":\"address\"}],\"name\":\"isEligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"This is the interface that consumers (e.g., RewardsManager) need to check if an indexer is eligible to receive rewards\",\"kind\":\"dev\",\"methods\":{\"isEligible(address)\":{\"params\":{\"indexer\":\"Address of the indexer\"},\"returns\":{\"_0\":\"True if the indexer is eligible to receive rewards, false otherwise\"}}},\"title\":\"IRewardsEligibility\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isEligible(address)\":{\"notice\":\"Check if an indexer is eligible to receive rewards\"}},\"notice\":\"Minimal interface for checking indexer rewards eligibility\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibility.sol\":\"IRewardsEligibility\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibility.sol\":{\"keccak256\":\"0x9f04d4f78937e63aba2b269323bbe037a32cb7570d7e07e40684ea9c40a38525\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3ffe02a7238802e9ca2e04f8caba1bff61745d8b0f55fa75f697ce48685e22af\",\"dweb:/ipfs/Qme8aje3vkFnL8aQQHcMd9tbzEp4hbv6oKgpbyAY7HiMv2\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityAdministration.sol":{"IRewardsEligibilityAdministration":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldPeriod","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"EligibilityPeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"EligibilityValidationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oracle","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"IndexerEligibilityData","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"indexer","type":"address"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"}],"name":"IndexerEligibilityRenewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldTimeout","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newTimeout","type":"uint256"}],"name":"OracleUpdateTimeoutUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"eligibilityPeriod","type":"uint256"}],"name":"setEligibilityPeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setEligibilityValidation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"oracleUpdateTimeout","type":"uint256"}],"name":"setOracleUpdateTimeout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"setEligibilityPeriod(uint256)":"5fd772d5","setEligibilityValidation(bool)":"57f44afc","setOracleUpdateTimeout(uint256)":"924ace83"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldPeriod\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newPeriod\",\"type\":\"uint256\"}],\"name\":\"EligibilityPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"EligibilityValidationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"IndexerEligibilityData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"indexer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"IndexerEligibilityRenewed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldTimeout\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newTimeout\",\"type\":\"uint256\"}],\"name\":\"OracleUpdateTimeoutUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eligibilityPeriod\",\"type\":\"uint256\"}],\"name\":\"setEligibilityPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setEligibilityValidation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"oracleUpdateTimeout\",\"type\":\"uint256\"}],\"name\":\"setOracleUpdateTimeout\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"Functions in this interface are restricted to accounts with OPERATOR_ROLE\",\"events\":{\"EligibilityPeriodUpdated(uint256,uint256)\":{\"params\":{\"newPeriod\":\"The new eligibility period in seconds\",\"oldPeriod\":\"The previous eligibility period in seconds\"}},\"EligibilityValidationUpdated(bool)\":{\"params\":{\"enabled\":\"True if eligibility validation is enabled, false if disabled\"}},\"IndexerEligibilityData(address,bytes)\":{\"params\":{\"data\":\"The eligibility data submitted by the oracle\",\"oracle\":\"The address of the oracle that submitted the data\"}},\"IndexerEligibilityRenewed(address,address)\":{\"params\":{\"indexer\":\"The address of the indexer whose eligibility was renewed\",\"oracle\":\"The address of the oracle that renewed the indexer's eligibility\"}},\"OracleUpdateTimeoutUpdated(uint256,uint256)\":{\"params\":{\"newTimeout\":\"The new timeout period in seconds\",\"oldTimeout\":\"The previous timeout period in seconds\"}}},\"kind\":\"dev\",\"methods\":{\"setEligibilityPeriod(uint256)\":{\"details\":\"Only callable by accounts with the OPERATOR_ROLE\",\"params\":{\"eligibilityPeriod\":\"New eligibility period in seconds\"},\"returns\":{\"_0\":\"True if the state is as requested (eligibility period is set to the specified value)\"}},\"setEligibilityValidation(bool)\":{\"details\":\"Only callable by accounts with the OPERATOR_ROLE\",\"params\":{\"enabled\":\"True to enable eligibility validation, false to disable\"},\"returns\":{\"_0\":\"True if successfully set (always the case for current code)\"}},\"setOracleUpdateTimeout(uint256)\":{\"details\":\"Only callable by accounts with the OPERATOR_ROLE\",\"params\":{\"oracleUpdateTimeout\":\"New timeout period in seconds\"},\"returns\":{\"_0\":\"True if the state is as requested (timeout is set to the specified value)\"}}},\"title\":\"IRewardsEligibilityAdministration\",\"version\":1},\"userdoc\":{\"events\":{\"EligibilityPeriodUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the eligibility period is updated\"},\"EligibilityValidationUpdated(bool)\":{\"notice\":\"Emitted when eligibility validation is enabled or disabled\"},\"IndexerEligibilityData(address,bytes)\":{\"notice\":\"Emitted when an oracle submits eligibility data\"},\"IndexerEligibilityRenewed(address,address)\":{\"notice\":\"Emitted when an indexer's eligibility is renewed by an oracle\"},\"OracleUpdateTimeoutUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the oracle update timeout is updated\"}},\"kind\":\"user\",\"methods\":{\"setEligibilityPeriod(uint256)\":{\"notice\":\"Set the eligibility period for indexers\"},\"setEligibilityValidation(bool)\":{\"notice\":\"Set eligibility validation state\"},\"setOracleUpdateTimeout(uint256)\":{\"notice\":\"Set the oracle update timeout\"}},\"notice\":\"Interface for administrative operations on rewards eligibility\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityAdministration.sol\":\"IRewardsEligibilityAdministration\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityAdministration.sol\":{\"keccak256\":\"0xed77f9b474cf5c8ede8706721b092c48dfddee08732dcd802532e7b1af764815\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7a8b3ec60d958caf3a4d40defe93a38233ef87a6f662d81490e5163d4b8fb505\",\"dweb:/ipfs/QmWqPu9rXdy5Bo7iU2SogAiSveKnwpfcA5cKQ9gAwtPiB4\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityEvents.sol\":{\"keccak256\":\"0xe482621df496359d77180b4a02b485135a7b87de66136897b2e63cd92b99ea90\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://43544818c324aebef65bda208e247bf5ae6b27cdc60fd2385dba550787bdf875\",\"dweb:/ipfs/QmPv3gpSRgWXiHVpZMAaxhHbuhatHvDGRcx19hz8RRrQw6\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityEvents.sol":{"IRewardsEligibilityEvents":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldPeriod","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"EligibilityPeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"EligibilityValidationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oracle","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"IndexerEligibilityData","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"indexer","type":"address"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"}],"name":"IndexerEligibilityRenewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldTimeout","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newTimeout","type":"uint256"}],"name":"OracleUpdateTimeoutUpdated","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldPeriod\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newPeriod\",\"type\":\"uint256\"}],\"name\":\"EligibilityPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"EligibilityValidationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"IndexerEligibilityData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"indexer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"IndexerEligibilityRenewed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldTimeout\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newTimeout\",\"type\":\"uint256\"}],\"name\":\"OracleUpdateTimeoutUpdated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"events\":{\"EligibilityPeriodUpdated(uint256,uint256)\":{\"params\":{\"newPeriod\":\"The new eligibility period in seconds\",\"oldPeriod\":\"The previous eligibility period in seconds\"}},\"EligibilityValidationUpdated(bool)\":{\"params\":{\"enabled\":\"True if eligibility validation is enabled, false if disabled\"}},\"IndexerEligibilityData(address,bytes)\":{\"params\":{\"data\":\"The eligibility data submitted by the oracle\",\"oracle\":\"The address of the oracle that submitted the data\"}},\"IndexerEligibilityRenewed(address,address)\":{\"params\":{\"indexer\":\"The address of the indexer whose eligibility was renewed\",\"oracle\":\"The address of the oracle that renewed the indexer's eligibility\"}},\"OracleUpdateTimeoutUpdated(uint256,uint256)\":{\"params\":{\"newTimeout\":\"The new timeout period in seconds\",\"oldTimeout\":\"The previous timeout period in seconds\"}}},\"kind\":\"dev\",\"methods\":{},\"title\":\"IRewardsEligibilityEvents\",\"version\":1},\"userdoc\":{\"events\":{\"EligibilityPeriodUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the eligibility period is updated\"},\"EligibilityValidationUpdated(bool)\":{\"notice\":\"Emitted when eligibility validation is enabled or disabled\"},\"IndexerEligibilityData(address,bytes)\":{\"notice\":\"Emitted when an oracle submits eligibility data\"},\"IndexerEligibilityRenewed(address,address)\":{\"notice\":\"Emitted when an indexer's eligibility is renewed by an oracle\"},\"OracleUpdateTimeoutUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the oracle update timeout is updated\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared events for rewards eligibility interfaces\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityEvents.sol\":\"IRewardsEligibilityEvents\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityEvents.sol\":{\"keccak256\":\"0xe482621df496359d77180b4a02b485135a7b87de66136897b2e63cd92b99ea90\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://43544818c324aebef65bda208e247bf5ae6b27cdc60fd2385dba550787bdf875\",\"dweb:/ipfs/QmPv3gpSRgWXiHVpZMAaxhHbuhatHvDGRcx19hz8RRrQw6\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityReporting.sol":{"IRewardsEligibilityReporting":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldPeriod","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"EligibilityPeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"EligibilityValidationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oracle","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"IndexerEligibilityData","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"indexer","type":"address"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"}],"name":"IndexerEligibilityRenewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldTimeout","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newTimeout","type":"uint256"}],"name":"OracleUpdateTimeoutUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"indexers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"renewIndexerEligibility","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"renewIndexerEligibility(address[],bytes)":"38b7c077"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldPeriod\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newPeriod\",\"type\":\"uint256\"}],\"name\":\"EligibilityPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"EligibilityValidationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"IndexerEligibilityData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"indexer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"IndexerEligibilityRenewed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldTimeout\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newTimeout\",\"type\":\"uint256\"}],\"name\":\"OracleUpdateTimeoutUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"indexers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"renewIndexerEligibility\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"Functions in this interface are restricted to accounts with ORACLE_ROLE\",\"events\":{\"EligibilityPeriodUpdated(uint256,uint256)\":{\"params\":{\"newPeriod\":\"The new eligibility period in seconds\",\"oldPeriod\":\"The previous eligibility period in seconds\"}},\"EligibilityValidationUpdated(bool)\":{\"params\":{\"enabled\":\"True if eligibility validation is enabled, false if disabled\"}},\"IndexerEligibilityData(address,bytes)\":{\"params\":{\"data\":\"The eligibility data submitted by the oracle\",\"oracle\":\"The address of the oracle that submitted the data\"}},\"IndexerEligibilityRenewed(address,address)\":{\"params\":{\"indexer\":\"The address of the indexer whose eligibility was renewed\",\"oracle\":\"The address of the oracle that renewed the indexer's eligibility\"}},\"OracleUpdateTimeoutUpdated(uint256,uint256)\":{\"params\":{\"newTimeout\":\"The new timeout period in seconds\",\"oldTimeout\":\"The previous timeout period in seconds\"}}},\"kind\":\"dev\",\"methods\":{\"renewIndexerEligibility(address[],bytes)\":{\"params\":{\"data\":\"Arbitrary calldata for future extensions\",\"indexers\":\"Array of indexer addresses. Zero addresses are ignored.\"},\"returns\":{\"_0\":\"Number of indexers whose eligibility renewal timestamp was updated\"}}},\"title\":\"IRewardsEligibilityReporting\",\"version\":1},\"userdoc\":{\"events\":{\"EligibilityPeriodUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the eligibility period is updated\"},\"EligibilityValidationUpdated(bool)\":{\"notice\":\"Emitted when eligibility validation is enabled or disabled\"},\"IndexerEligibilityData(address,bytes)\":{\"notice\":\"Emitted when an oracle submits eligibility data\"},\"IndexerEligibilityRenewed(address,address)\":{\"notice\":\"Emitted when an indexer's eligibility is renewed by an oracle\"},\"OracleUpdateTimeoutUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the oracle update timeout is updated\"}},\"kind\":\"user\",\"methods\":{\"renewIndexerEligibility(address[],bytes)\":{\"notice\":\"Renew eligibility for provided indexers to receive rewards\"}},\"notice\":\"Interface for oracle reporting of indexer eligibility\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityReporting.sol\":\"IRewardsEligibilityReporting\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityEvents.sol\":{\"keccak256\":\"0xe482621df496359d77180b4a02b485135a7b87de66136897b2e63cd92b99ea90\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://43544818c324aebef65bda208e247bf5ae6b27cdc60fd2385dba550787bdf875\",\"dweb:/ipfs/QmPv3gpSRgWXiHVpZMAaxhHbuhatHvDGRcx19hz8RRrQw6\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityReporting.sol\":{\"keccak256\":\"0x86d8cade4fe79aadd959ecb59e51cf9635d4f11468abafdaa9e7a6521a8cf215\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0667f05a62ba7277164934a725916eb16f001d2ce1b6be780074d3e4e3ad2441\",\"dweb:/ipfs/QmbnAs7oYbhYmLHyRkYataL8rSg7QK8mzGYz8zwK6qGc3T\"]}},\"version\":1}"}},"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityStatus.sol":{"IRewardsEligibilityStatus":{"abi":[{"inputs":[],"name":"getEligibilityPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"indexer","type":"address"}],"name":"getEligibilityRenewalTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEligibilityValidation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastOracleUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleUpdateTimeout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getEligibilityPeriod()":"d0a5379e","getEligibilityRenewalTime(address)":"d353402d","getEligibilityValidation()":"ce0a2071","getLastOracleUpdateTime()":"be626dd2","getOracleUpdateTimeout()":"20ea3509"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getEligibilityPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"indexer\",\"type\":\"address\"}],\"name\":\"getEligibilityRenewalTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEligibilityValidation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastOracleUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOracleUpdateTimeout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"All functions are view-only and can be called by anyone\",\"kind\":\"dev\",\"methods\":{\"getEligibilityPeriod()\":{\"returns\":{\"_0\":\"The current eligibility period in seconds\"}},\"getEligibilityRenewalTime(address)\":{\"params\":{\"indexer\":\"Address of the indexer\"},\"returns\":{\"_0\":\"The last eligibility renewal timestamp, or 0 if the indexer's eligibility has never been renewed\"}},\"getEligibilityValidation()\":{\"returns\":{\"_0\":\"True if eligibility validation is enabled, false otherwise\"}},\"getLastOracleUpdateTime()\":{\"returns\":{\"_0\":\"The timestamp of the last oracle update\"}},\"getOracleUpdateTimeout()\":{\"returns\":{\"_0\":\"The current oracle update timeout in seconds\"}}},\"title\":\"IRewardsEligibilityStatus\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getEligibilityPeriod()\":{\"notice\":\"Get the eligibility period\"},\"getEligibilityRenewalTime(address)\":{\"notice\":\"Get the last eligibility renewal timestamp for an indexer\"},\"getEligibilityValidation()\":{\"notice\":\"Get eligibility validation state\"},\"getLastOracleUpdateTime()\":{\"notice\":\"Get the last oracle update time\"},\"getOracleUpdateTimeout()\":{\"notice\":\"Get the oracle update timeout\"}},\"notice\":\"Interface for querying rewards eligibility status and configuration\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityStatus.sol\":\"IRewardsEligibilityStatus\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityStatus.sol\":{\"keccak256\":\"0x30197018a7f9bd3e6a4228c8f06cc8109d6a6a0ab27a84cd2473b0385e2b8b43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a9229ae68ba6da43a532f558349337e6502b38fd071888bef3c3872e86923afc\",\"dweb:/ipfs/QmUtjEEJTbuqUs3wJ4tMnZwakjmGikYEKDs1xmgLyJAJqF\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol":{"AccessControlUpgradeable":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public {     require(hasRole(MY_ROLE, msg.sender));     ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol\":\"AccessControlUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol":{"AccessControlEnumerableUpgradeable":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMembers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","getRoleMembers(bytes32)":"a3246ad3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {AccessControl} that allows enumerating the members of each role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol\":\"AccessControlEnumerableUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0x52d72be5f7529846ba76aacf0c49de92bde89a5203b6fbc3919e7384c0df0905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d5e789d39c6623db24d427ca8380978f44cc736070e2ac3ee19f88095c43b17\",\"dweb:/ipfs/QmSzyMMTnZrUWY2e4B2U3VE2fjz8AFawhk7jex8SPW1eT2\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xbc97d8c0d67d4d7eba1e662f0a8671712ace9e060ab03af547c4bb321aec1d8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://890d156f50630d52c7be57d7e0499132d6fd92b2e1365b81531f4463b3304377\",\"dweb:/ipfs/QmUHe9uL1ciePH2pQg7wdrgTAFRZWjcpBEAg8V1UNtXutd\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() {     _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\\\"MyToken\\\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol":{"PausableUpgradeable":{"abi":[{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"paused()":"5c975abb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol\":\"PausableUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol":{"IAccessControlEnumerable":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControlEnumerable declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol\":\"IAccessControlEnumerable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xbc97d8c0d67d4d7eba1e662f0a8671712ace9e060ab03af547c4bb321aec1d8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://890d156f50630d52c7be57d7e0499132d6fd92b2e1365b81531f4463b3304377\",\"dweb:/ipfs/QmUHe9uL1ciePH2pQg7wdrgTAFRZWjcpBEAg8V1UNtXutd\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"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":[{"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":[{"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":"value","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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":[{\"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\":\"value\",\"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\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"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.\"},\"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\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol":{"Arrays":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212207e0b62056904048220c66daa53ddd125aded60b1cbe8d99543fbc6c94ef7b05564736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0xB62056904048220C66DAA53DDD125ADED60B1CBE8D99543FBC6C94EF7B055 PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"459:20446:22:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea26469706673582212207e0b62056904048220c66daa53ddd125aded60b1cbe8d99543fbc6c94ef7b05564736f6c63430008210033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0xB62056904048220C66DAA53DDD125ADED60B1CBE8D99543FBC6C94EF7B055 PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"459:20446:22:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to array types.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol\":\"Arrays\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol":{"Comparators":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220e668141befaf6ad39815a3d1e7c215ba44ad7a705ab335a0b968297f7959523264736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUPN 0x68 EQ SHL 0xEF 0xAF PUSH11 0xD39815A3D1E7C215BA44AD PUSH27 0x705AB335A0B968297F7959523264736F6C63430008210033000000 ","sourceMap":"224:218:23:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220e668141befaf6ad39815a3d1e7c215ba44ad7a705ab335a0b968297f7959523264736f6c63430008210033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUPN 0x68 EQ SHL 0xEF 0xAF PUSH11 0xD39815A3D1E7C215BA44AD PUSH27 0x705AB335A0B968297F7959523264736F6C63430008210033000000 ","sourceMap":"224:218:23:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides a set of functions to compare values. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol\":\"Comparators\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol":{"Panic":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220b2c31919447c90811abe328c8b643d8c140f35b5b9133f731dea9e895411eb7d64736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 0xC3 NOT NOT PREVRANDAO PUSH29 0x90811ABE328C8B643D8C140F35B5B9133F731DEA9E895411EB7D64736F PUSH13 0x63430008210033000000000000 ","sourceMap":"657:1315:24:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220b2c31919447c90811abe328c8b643d8c140f35b5b9133f731dea9e895411eb7d64736f6c63430008210033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 0xC3 NOT NOT PREVRANDAO PUSH29 0x90811ABE328C8B643D8C140F35B5B9133F731DEA9E895411EB7D64736F PUSH13 0x63430008210033000000000000 ","sourceMap":"657:1315:24:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example {      using Panic for uint256;      // Use any of the declared internal constants      function foo() { Panic.GENERIC.panic(); }      // Alternatively      function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/ReentrancyGuardTransient.sol":{"ReentrancyGuardTransient":{"abi":[{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Variant of {ReentrancyGuard} that uses transient storage. NOTE: This variant only works on networks where EIP-1153 is available. _Available since v5.1._\",\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/ReentrancyGuardTransient.sol\":\"ReentrancyGuardTransient\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0xe56ff5015046505f81f9d62671a784e933dd099db4c3a8fa8de598f20af2c5a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://355863359b4a250f7016836ef9a9672578e898503896f70a0d42b80141586f3e\",\"dweb:/ipfs/QmXXzvoMSFNQf8nRbcyRap5qzcbekWuzbXDY5C8f68JiG3\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol":{"SlotDerivation":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220e01f42063874c788c17177fb52706bb9ca173b4948384cd91d06fddca577b05364736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RJUMP 0x1F42 MOD CODESIZE PUSH21 0xC788C17177FB52706BB9CA173B4948384CD91D06FD 0xDC 0xA5 PUSH24 0xB05364736F6C634300082100330000000000000000000000 ","sourceMap":"1599:3723:26:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220e01f42063874c788c17177fb52706bb9ca173b4948384cd91d06fddca577b05364736f6c63430008210033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RJUMP 0x1F42 MOD CODESIZE PUSH21 0xC788C17177FB52706BB9CA173B4948384CD91D06FD 0xDC 0xA5 PUSH24 0xB05364736F6C634300082100330000000000000000000000 ","sourceMap":"1599:3723:26:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for computing storage (and transient storage) locations from namespaces and deriving slots corresponding to standard patterns. The derivation method for array and mapping matches the storage layout used by the solidity language / compiler. See https://docs.soliditylang.org/en/v0.8.20/internals/layout_in_storage.html#mappings-and-dynamic-arrays[Solidity docs for mappings and dynamic arrays.]. Example usage: ```solidity contract Example {     // Add the library methods     using StorageSlot for bytes32;     using SlotDerivation for bytes32;     // Declare a namespace     string private constant _NAMESPACE = \\\"<namespace>\\\"; // eg. OpenZeppelin.Slot     function setValueInNamespace(uint256 key, address newValue) internal {         _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value = newValue;     }     function getValueInNamespace(uint256 key) internal view returns (address) {         return _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value;     } } ``` TIP: Consider using this library along with {StorageSlot}. NOTE: This library provides a way to manipulate storage locations in a non-standard way. Tooling for checking upgrade safety will ignore the slots accessed through this library. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol\":\"SlotDerivation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212203ac28ce7ddecfbd7fe53738f1dd16aef98e5651f1cfb8961f34d096b9e8eccaa64736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xC2 DUP13 SWAPN 0xDD EOFCREATE 0xFB 0xD7 INVALID MSTORE8 PUSH20 0x8F1DD16AEF98E5651F1CFB8961F34D096B9E8ECC 0xAA PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"1407:2774:27:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea26469706673582212203ac28ce7ddecfbd7fe53738f1dd16aef98e5651f1cfb8961f34d096b9e8eccaa64736f6c63430008210033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xC2 DUP13 SWAPN 0xDD EOFCREATE 0xFB 0xD7 INVALID MSTORE8 PUSH20 0x8F1DD16AEF98E5651F1CFB8961F34D096B9E8ECC 0xAA PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"1407:2774:27:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 {     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(newImplementation.code.length > 0);         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol":{"TransientSlot":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212207ac546d06a6c92f294cfc72724005d9ed971c237398ab112e4f7080e831d3a0564736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0xC546D06A6C92F294CFC72724005D9ED971C237398AB112E4F7080E DUP4 SAR GASPRICE SDIV PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"1163:3911:28:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea26469706673582212207ac546d06a6c92f294cfc72724005d9ed971c237398ab112e4f7080e831d3a0564736f6c63430008210033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0xC546D06A6C92F294CFC72724005D9ED971C237398AB112E4F7080E DUP4 SAR GASPRICE SDIV PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"1163:3911:28:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing value-types to specific transient storage slots. Transient slots are often used to store temporary values that are removed after the current transaction. This library helps with reading and writing to such slots without the need for inline assembly.  * Example reading and writing values using transient storage: ```solidity contract Lock {     using TransientSlot for *;     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     bytes32 internal constant _LOCK_SLOT = 0xf4678858b2b588224636b8522b729e7722d32fc491da849ed75b3fdf3c84f542;     modifier locked() {         require(!_LOCK_SLOT.asBoolean().tload());         _LOCK_SLOT.asBoolean().tstore(true);         _;         _LOCK_SLOT.asBoolean().tstore(false);     } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol\":\"TransientSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220913ddb2d601a41f1d6c7f4295750fd6e2056711fcc0f64c9ccc8f22728c50a1a64736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 RETURNDATASIZE 0xDB 0x2D PUSH1 0x1A COINBASE CALL 0xD6 0xC7 DELEGATECALL 0x29 JUMPI POP REVERT PUSH15 0x2056711FCC0F64C9CCC8F22728C50A BYTE PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"281:31863:31:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220913ddb2d601a41f1d6c7f4295750fd6e2056711fcc0f64c9ccc8f22728c50a1a64736f6c63430008210033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 RETURNDATASIZE 0xDB 0x2D PUSH1 0x1A COINBASE CALL 0xD6 0xC7 DELEGATECALL 0x29 JUMPI POP REVERT PUSH15 0x2056711FCC0F64C9CCC8F22728C50A BYTE PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"281:31863:31:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntDowncast","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220b4b7d4f749595954230eb7fc7f9074812a79cde09de17aba14f2d443dd0b22a264736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xB7 0xD4 0xF7 BLOBHASH MSIZE MSIZE SLOAD 0x23 0xE 0xB7 0xFC PUSH32 0x9074812A79CDE09DE17ABA14F2D443DD0B22A264736F6C634300082100330000 ","sourceMap":"769:34173:32:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220b4b7d4f749595954230eb7fc7f9074812a79cde09de17aba14f2d443dd0b22a264736f6c63430008210033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xB7 0xD4 0xF7 BLOBHASH MSIZE MSIZE SLOAD 0x23 0xE 0xB7 0xFC PUSH32 0x9074812A79CDE09DE17ABA14F2D443DD0B22A264736F6C634300082100330000 ","sourceMap":"769:34173:32:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"}},"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122066f936e4cbfdcf05baef4c1973e009706c19edffd391636979a5b6fc62a1e6f364736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0xF936E4CBFDCF05 0xBA 0xEF 0x4C NOT PUSH20 0xE009706C19EDFFD391636979A5B6FC62A1E6F364 PUSH20 0x6F6C634300082100330000000000000000000000 ","sourceMap":"1586:28038:33:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122066f936e4cbfdcf05baef4c1973e009706c19edffd391636979a5b6fc62a1e6f364736f6c63430008210033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0xF936E4CBFDCF05 0xBA 0xEF 0x4C NOT PUSH20 0xE009706C19EDFFD391636979A5B6FC62A1E6F364 PUSH20 0x6F6C634300082100330000000000000000000000 ","sourceMap":"1586:28038:33:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. - Set can be cleared (all elements removed) in O(n). ```solidity contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` The following types are supported: - `bytes32` (`Bytes32Set`) since v3.3.0 - `address` (`AddressSet`) since v3.3.0 - `uint256` (`UintSet`) since v3.3.0 - `string` (`StringSet`) since v5.4.0 - `bytes` (`BytesSet`) since v5.4.0 [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]}},\"version\":1}"}},"project/contracts/allocate/DirectAllocation.sol":{"DirectAllocation":{"abi":[{"inputs":[{"internalType":"address","name":"graphToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"GovernorCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"GraphTokenCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendTokensFailed","type":"error"},{"anonymous":false,"inputs":[],"name":"BeforeIssuanceAllocationChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldIssuanceAllocator","type":"address"},{"indexed":true,"internalType":"address","name":"newIssuanceAllocator","type":"address"}],"name":"IssuanceAllocatorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MILLION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beforeIssuanceAllocationChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMembers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"governor","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"issuanceAllocator","type":"address"}],"name":"setIssuanceAllocator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a03461011957601f6112da38819003918201601f19168301916001600160401b0383118484101761011d5780849260209460405283398101031261011957516001600160a01b0381169081900361011957801561010a576080525f5160206112ba5f395f51905f525460ff8160401c166100fb576002600160401b03196001600160401b038216016100a5575b604051611188908161013282396080518161095e0152f35b6001600160401b0319166001600160401b039081175f5160206112ba5f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f61008d565b63f92ee8a960e01b5f5260045ffd5b6369e4eeb360e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610a395750806305ab421d146108cd578063248a9ca3146108a75780632f2ff15d1461087657806332bc934c1461085957806336568abe14610815578063389ed267146107ee5780633df8d682146107b85780633f4ba83a1461073a5780635c975abb1461070c5780638456cb591461069b5780639010d07c1461064a57806391d14854146105f5578063931c0ac114610592578063a217fddf14610578578063a3246ad3146104bd578063c4d66de8146101c3578063ca15c8731461018d578063ccc5749014610166578063d547741f1461012e5763f5b541a614610103575f80fd5b3461012a575f36600319011261012a5760206040515f5160206110b35f395f51905f528152f35b5f80fd5b3461012a57604036600319011261012a5761016460043561014d610b08565b9061015f61015a82610b54565b610bce565b610c81565b005b3461012a575f36600319011261012a5760206040515f5160206110935f395f51905f528152f35b3461012a57602036600319011261012a576004355f525f5160206110535f395f51905f52602052602060405f2054604051908152f35b3461012a57602036600319011261012a576101dc610af2565b5f5160206111335f395f51905f52549060ff8260401c16159167ffffffffffffffff8116801590816104b5575b60011490816104ab575b1590816104a2575b506104935767ffffffffffffffff1981166001175f5160206111335f395f51905f525582610467575b5061024d611007565b610255611007565b6001600160a01b038116908115610458575f5160206110935f395f51905f525f8181525f5160206110d35f395f51905f526020527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8048054908390556103a893929182905f5160206110335f395f51905f529080a45f5160206111135f395f51905f525f8181525f5160206110d35f395f51905f526020527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff13480545f5160206110935f395f51905f5291829055909290915f5160206110335f395f51905f529080a45f5160206110b35f395f51905f525f8181525f5160206110d35f395f51905f526020527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45780545f5160206110935f395f51905f5291829055909290915f5160206110335f395f51905f529080a4610cc3565b610406575b506103b457005b60ff60401b195f5160206111335f395f51905f5254165f5160206111335f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b5f5160206110935f395f51905f525f525f5160206110535f395f51905f52602052610451907f955af8caaf1bb5fca493cbb01cefeb9e610a81071c268cd8b40c82100cbb956e610ec4565b50816103ad565b63395d053560e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f5160206111335f395f51905f525582610244565b63f92ee8a960e01b5f5260045ffd5b9050158461021b565b303b159150610213565b849150610209565b3461012a57602036600319011261012a576004355f525f5160206110535f395f51905f5260205260405f20604051806020835491828152019081935f5260205f20905f5b8181106105625750505081610517910382610b1e565b604051918291602083019060208452518091526040830191905f5b818110610540575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610532565b8254845260209093019260019283019201610501565b3461012a575f36600319011261012a5760206040515f8152f35b3461012a57602036600319011261012a576105ab610af2565b50335f9081525f5160206110735f395f51905f52602052604090205460ff16156105d157005b63e2517d3f60e01b5f52336004525f5160206110935f395f51905f5260245260445ffd5b3461012a57604036600319011261012a5761060e610b08565b6004355f525f5160206110d35f395f51905f5260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461012a57604036600319011261012a576004355f525f5160206110535f395f51905f52602052602061068260243560405f20610e9b565b905460405160039290921b1c6001600160a01b03168152f35b3461012a575f36600319011261012a576106b3610b72565b6106bb610c14565b600160ff195f5160206110f35f395f51905f525416175f5160206110f35f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461012a575f36600319011261012a57602060ff5f5160206110f35f395f51905f5254166040519015158152f35b3461012a575f36600319011261012a57610752610b72565b5f5160206110f35f395f51905f525460ff8116156107a95760ff19165f5160206110f35f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461012a575f36600319011261012a577fa3b917c02656dce72578274a2691b36a801594defb0373242b11f7f3021194065f80a1005b3461012a575f36600319011261012a5760206040515f5160206111135f395f51905f528152f35b3461012a57604036600319011261012a5761082e610b08565b336001600160a01b0382160361084a5761016490600435610c81565b63334bd91960e11b5f5260045ffd5b3461012a575f36600319011261012a576020604051620f42408152f35b3461012a57604036600319011261012a57610164600435610895610b08565b906108a261015a82610b54565b610c3b565b3461012a57602036600319011261012a5760206108c5600435610b54565b604051908152f35b3461012a57604036600319011261012a576108e6610af2565b335f9081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb4566020526040902054602435919060ff1615610a1557610929610c14565b60405163a9059cbb60e01b81526001600160a01b03918216600482018190526024820184905291602090829060449082905f907f0000000000000000000000000000000000000000000000000000000000000000165af1908115610a0a575f916109cf575b50156109ba577ff18d5a93c62c1d0c761ed52107f11d20bc2071851206b79c4dd3283bd9f006f15f80a3005b636e4cad2760e01b5f5260045260245260445ffd5b90506020813d602011610a02575b816109ea60209383610b1e565b8101031261012a5751801515810361012a578361098e565b3d91506109dd565b6040513d5f823e3d90fd5b63e2517d3f60e01b5f52336004525f5160206110b35f395f51905f5260245260445ffd5b3461012a57602036600319011261012a576004359063ffffffff60e01b821680920361012a5760209163aee4dc4360e01b8114908115610ae1575b8115610a82575b5015158152f35b631cf1473b60e31b811491508115610a9c575b5083610a7b565b635a05180f60e01b811491508115610ab6575b5083610a95565b637965db0b60e01b811491508115610ad0575b5083610aaf565b6301ffc9a760e01b14905083610ac9565b6305ab421d60e01b81149150610a74565b600435906001600160a01b038216820361012a57565b602435906001600160a01b038216820361012a57565b90601f8019910116810190811067ffffffffffffffff821117610b4057604052565b634e487b7160e01b5f52604160045260245ffd5b5f525f5160206110d35f395f51905f52602052600160405f20015490565b335f9081527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff133602052604090205460ff1615610baa57565b63e2517d3f60e01b5f52336004525f5160206111135f395f51905f5260245260445ffd5b5f8181525f5160206110d35f395f51905f526020908152604080832033845290915290205460ff1615610bfe5750565b63e2517d3f60e01b5f523360045260245260445ffd5b60ff5f5160206110f35f395f51905f525416610c2c57565b63d93c066560e01b5f5260045ffd5b610c458282610d5b565b9182610c5057505090565b5f9182525f5160206110535f395f51905f526020526040909120610c7d916001600160a01b031690610ec4565b5090565b610c8b8282610dff565b9182610c9657505090565b5f9182525f5160206110535f395f51905f526020526040909120610c7d916001600160a01b031690610f2e565b6001600160a01b0381165f9081525f5160206110735f395f51905f52602052604090205460ff16610d56576001600160a01b03165f8181525f5160206110735f395f51905f5260205260408120805460ff191660011790553391905f5160206110935f395f51905f52907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b505f90565b5f8181525f5160206110d35f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16610df9575f8181525f5160206110d35f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f8181525f5160206110d35f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615610df9575f8181525f5160206110d35f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b8054821015610eb0575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6001810190825f528160205260405f2054155f14610f27578054600160401b811015610b4057610f14610efe826001879401855584610e9b565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b906001820191815f528260205260405f20548015155f14610fff575f198101818111610feb5782545f19810191908211610feb57818103610fb6575b50505080548015610fa2575f190190610f838282610e9b565b8154905f199060031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b610fd6610fc6610efe9386610e9b565b90549060031b1c92839286610e9b565b90555f528360205260405f20555f8080610f6a565b634e487b7160e01b5f52601160045260245ffd5b505050505f90565b60ff5f5160206111335f395f51905f525460401c161561102357565b631afcd79f60e31b5f5260045ffdfebd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200075e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8037935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5597667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46df0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220648247bdd512fc2918e2d95787c17abad57d1ad135d24eba5bccea275673fe2664736f6c63430008210033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","opcodes":"PUSH1 0xA0 CALLVALUE PUSH2 0x119 JUMPI PUSH1 0x1F PUSH2 0x12DA CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x11D JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x119 JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0x119 JUMPI DUP1 ISZERO PUSH2 0x10A JUMPI PUSH1 0x80 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x12BA PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 PUSH1 0x40 SHR AND PUSH2 0xFB JUMPI PUSH1 0x2 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND ADD PUSH2 0xA5 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1188 SWAP1 DUP2 PUSH2 0x132 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x95E ADD MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x12BA PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 SWAP1 LOG1 PUSH0 PUSH2 0x8D JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x69E4EEB3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0xA39 JUMPI POP DUP1 PUSH4 0x5AB421D EQ PUSH2 0x8CD JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0x32BC934C EQ PUSH2 0x859 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x815 JUMPI DUP1 PUSH4 0x389ED267 EQ PUSH2 0x7EE JUMPI DUP1 PUSH4 0x3DF8D682 EQ PUSH2 0x7B8 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x73A JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x69B JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x64A JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0x931C0AC1 EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x578 JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xCCC57490 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x12E JUMPI PUSH4 0xF5B541A6 EQ PUSH2 0x103 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10B3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x164 PUSH1 0x4 CALLDATALOAD PUSH2 0x14D PUSH2 0xB08 JUMP JUMPDEST SWAP1 PUSH2 0x15F PUSH2 0x15A DUP3 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0xBCE JUMP JUMPDEST PUSH2 0xC81 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x1DC PUSH2 0xAF2 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x40 SHR AND ISZERO SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 ISZERO SWAP1 DUP2 PUSH2 0x4B5 JUMPI JUMPDEST PUSH1 0x1 EQ SWAP1 DUP2 PUSH2 0x4AB JUMPI JUMPDEST ISZERO SWAP1 DUP2 PUSH2 0x4A2 JUMPI JUMPDEST POP PUSH2 0x493 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x467 JUMPI JUMPDEST POP PUSH2 0x24D PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x458 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE804 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH2 0x3A8 SWAP4 SWAP3 SWAP2 DUP3 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1033 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1113 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF134 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1033 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10B3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB457 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1033 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH2 0xCC3 JUMP JUMPDEST PUSH2 0x406 JUMPI JUMPDEST POP PUSH2 0x3B4 JUMPI STOP JUMPDEST PUSH1 0xFF PUSH1 0x40 SHL NOT PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x451 SWAP1 PUSH32 0x955AF8CAAF1BB5FCA493CBB01CEFEB9E610A81071C268CD8B40C82100CBB956E PUSH2 0xEC4 JUMP JUMPDEST POP DUP2 PUSH2 0x3AD JUMP JUMPDEST PUSH4 0x395D0535 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFFFF NOT AND PUSH9 0x10000000000000001 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x244 JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP ISZERO DUP5 PUSH2 0x21B JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP PUSH2 0x213 JUMP JUMPDEST DUP5 SWAP2 POP PUSH2 0x209 JUMP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 DUP4 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP1 DUP2 SWAP4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x562 JUMPI POP POP POP DUP2 PUSH2 0x517 SWAP2 SUB DUP3 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x540 JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x532 JUMP JUMPDEST DUP3 SLOAD DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x501 JUMP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x5AB PUSH2 0xAF2 JUMP JUMPDEST POP CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1073 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5D1 JUMPI STOP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x60E PUSH2 0xB08 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x682 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0xE9B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x3 SWAP3 SWAP1 SWAP3 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x6B3 PUSH2 0xB72 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x752 PUSH2 0xB72 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND ISZERO PUSH2 0x7A9 JUMPI PUSH1 0xFF NOT AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x8DFC202B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH32 0xA3B917C02656DCE72578274A2691B36A801594DEFB0373242B11F7F302119406 PUSH0 DUP1 LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1113 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x82E PUSH2 0xB08 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SUB PUSH2 0x84A JUMPI PUSH2 0x164 SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0xC81 JUMP JUMPDEST PUSH4 0x334BD919 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x164 PUSH1 0x4 CALLDATALOAD PUSH2 0x895 PUSH2 0xB08 JUMP JUMPDEST SWAP1 PUSH2 0x8A2 PUSH2 0x15A DUP3 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0xC3B JUMP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH2 0x8C5 PUSH1 0x4 CALLDATALOAD PUSH2 0xB54 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x8E6 PUSH2 0xAF2 JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB456 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x24 CALLDATALOAD SWAP2 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xA15 JUMPI PUSH2 0x929 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xA0A JUMPI PUSH0 SWAP2 PUSH2 0x9CF JUMPI JUMPDEST POP ISZERO PUSH2 0x9BA JUMPI PUSH32 0xF18D5A93C62C1D0C761ED52107F11D20BC2071851206B79C4DD3283BD9F006F1 PUSH0 DUP1 LOG3 STOP JUMPDEST PUSH4 0x6E4CAD27 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xA02 JUMPI JUMPDEST DUP2 PUSH2 0x9EA PUSH1 0x20 SWAP4 DUP4 PUSH2 0xB1E JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x12A JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x12A JUMPI DUP4 PUSH2 0x98E JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x9DD JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10B3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0x12A JUMPI PUSH1 0x20 SWAP2 PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0xAE1 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0xA82 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1CF1473B PUSH1 0xE3 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xA9C JUMPI JUMPDEST POP DUP4 PUSH2 0xA7B JUMP JUMPDEST PUSH4 0x5A05180F PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xAB6 JUMPI JUMPDEST POP DUP4 PUSH2 0xA95 JUMP JUMPDEST PUSH4 0x7965DB0B PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xAD0 JUMPI JUMPDEST POP DUP4 PUSH2 0xAAF JUMP JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0xAC9 JUMP JUMPDEST PUSH4 0x5AB421D PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0xA74 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x12A JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x12A JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB40 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF133 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xBAA JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1113 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xBFE JUMPI POP JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH2 0xC2C JUMPI JUMP JUMPDEST PUSH4 0xD93C0665 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0xC45 DUP3 DUP3 PUSH2 0xD5B JUMP JUMPDEST SWAP2 DUP3 PUSH2 0xC50 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0xC7D SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xEC4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0xC8B DUP3 DUP3 PUSH2 0xDFF JUMP JUMPDEST SWAP2 DUP3 PUSH2 0xC96 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0xC7D SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xF2E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1073 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xD56 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1073 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP2 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xDF9 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xDF9 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0xEB0 JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH0 EQ PUSH2 0xF27 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0xB40 JUMPI PUSH2 0xF14 PUSH2 0xEFE DUP3 PUSH1 0x1 DUP8 SWAP5 ADD DUP6 SSTORE DUP5 PUSH2 0xE9B JUMP JUMPDEST DUP2 SWAP4 SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP2 DUP3 SHL SWAP2 PUSH0 NOT SWAP1 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE SLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP2 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0xFFF JUMPI PUSH0 NOT DUP2 ADD DUP2 DUP2 GT PUSH2 0xFEB JUMPI DUP3 SLOAD PUSH0 NOT DUP2 ADD SWAP2 SWAP1 DUP3 GT PUSH2 0xFEB JUMPI DUP2 DUP2 SUB PUSH2 0xFB6 JUMPI JUMPDEST POP POP POP DUP1 SLOAD DUP1 ISZERO PUSH2 0xFA2 JUMPI PUSH0 NOT ADD SWAP1 PUSH2 0xF83 DUP3 DUP3 PUSH2 0xE9B JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE SSTORE PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xFD6 PUSH2 0xFC6 PUSH2 0xEFE SWAP4 DUP7 PUSH2 0xE9B JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR SWAP3 DUP4 SWAP3 DUP7 PUSH2 0xE9B JUMP JUMPDEST SWAP1 SSTORE PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 DUP1 PUSH2 0xF6A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 SHR AND ISZERO PUSH2 0x1023 JUMPI JUMP JUMPDEST PUSH4 0x1AFCD79F PUSH1 0xE3 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID 0xBD PUSH26 0xB86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E12 SWAP16 SIGNEXTEND STOP SELFDESTRUCT 0xC1 0xF6 INVALID 0x24 PUSH3 0x1CE81E 0xC5 DUP3 PUSH29 0xAF0253CADB74709B061630E6B55E8237170593200075E09417C5070057 0xDF RETURNDATACOPY 0xAF JUMPF 0x54D MSTORE STATICCALL SIGNEXTEND 0x2A DUP8 0xD6 BLOBBASEFEE 0x23 MCOPY NOT PUSH26 0x63B615AEDEE8037935BD0AE54BC31F548C14DBA4D37C5C64B3F8 0xCA SWAP1 0xC 0xB4 PUSH9 0xFB8ABD54D5894F5597 PUSH7 0x7070C54EF182B0 CREATE2 DUP6 DUP12 SUB 0x4B 0xEA 0xC1 0xB6 RETURN ADDMOD SWAP11 LOG2 0xD3 XOR DUP12 0xB1 0xE8 SWAP3 SWAP16 0x4F 0xA9 0xB9 0x29 MUL 0xDD PUSH28 0xC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B6268 STOP 0xCD MCOPY DATALOADN 0x5C6E XOR PUSH31 0x77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300139C2898040E CALL PUSH10 0x10DC9F44DC697DF79363 0xDA PUSH23 0x7D8BC92F2E310312B816E46DF0C57E16840DF040F15088 0xDC 0x2F DUP2 INVALID CODECOPY SHR CODECOPY 0x23 0xBE 0xC7 RETURNDATACOPY 0x23 0xA9 PUSH7 0x2EFC9C229C6A00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0x8247BDD512 0xFC 0x29 XOR 0xE2 0xD9 JUMPI DUP8 0xC1 PUSH27 0xBAD57D1AD135D24EBA5BCCEA275673FE2664736F6C634300082100 CALLER CREATE 0xC5 PUSH31 0x16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A000000 ","sourceMap":"1194:2748:34:-:0;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;-1:-1:-1;;;;;1194:2748:34;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1194:2748:34;;;;;;;;4199:24:36;;1194:2748:34;;4267:37:36;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;7894:76:15;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;7983:34:15;7979:146;;-1:-1:-1;1194:2748:34;;;;;;;;4267:37:36;1194:2748:34;;;;;;7979:146:15;-1:-1:-1;;;;;;1194:2748:34;-1:-1:-1;;;;;1194:2748:34;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;8085:29:15;;1194:2748:34;;8085:29:15;7979:146;;;7894:76;7936:23;;;-1:-1:-1;7936:23:15;;-1:-1:-1;7936:23:15;1194:2748:34;;;;-1:-1:-1;1194:2748:34;;-1:-1:-1;1194:2748:34;;-1:-1:-1;1194:2748:34;;;;;;-1:-1:-1;1194:2748:34;;;;;-1:-1:-1;1194:2748:34"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":2802,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2824,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":2846,"id":null,"parameterSlots":2,"returnSlots":0},"fun__checkRole":{"entryPoint":2930,"id":587,"parameterSlots":0,"returnSlots":0},"fun__grantRole":{"entryPoint":3267,"id":773,"parameterSlots":1,"returnSlots":1},"fun__revokeRole":{"entryPoint":3201,"id":1045,"parameterSlots":2,"returnSlots":1},"fun_add":{"entryPoint":3780,"id":6810,"parameterSlots":2,"returnSlots":1},"fun_checkInitializing":{"entryPoint":4103,"id":1222,"parameterSlots":0,"returnSlots":0},"fun_checkRole":{"entryPoint":3022,"id":587,"parameterSlots":1,"returnSlots":0},"fun_getRoleAdmin":{"entryPoint":2900,"id":629,"parameterSlots":1,"returnSlots":1},"fun_grantRole":{"entryPoint":3419,"id":773,"parameterSlots":2,"returnSlots":1},"fun_grantRole_1005":{"entryPoint":3131,"id":1005,"parameterSlots":2,"returnSlots":1},"fun_remove":{"entryPoint":3886,"id":6894,"parameterSlots":2,"returnSlots":1},"fun_requireNotPaused":{"entryPoint":3092,"id":1458,"parameterSlots":0,"returnSlots":0},"fun_revokeRole":{"entryPoint":3583,"id":819,"parameterSlots":2,"returnSlots":1},"storage_array_index_access_bytes32_dyn":{"entryPoint":3739,"id":null,"parameterSlots":2,"returnSlots":2},"update_byte_slice_dynamic32":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"10718":[{"length":32,"start":2398}]},"linkReferences":{},"object":"6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610a395750806305ab421d146108cd578063248a9ca3146108a75780632f2ff15d1461087657806332bc934c1461085957806336568abe14610815578063389ed267146107ee5780633df8d682146107b85780633f4ba83a1461073a5780635c975abb1461070c5780638456cb591461069b5780639010d07c1461064a57806391d14854146105f5578063931c0ac114610592578063a217fddf14610578578063a3246ad3146104bd578063c4d66de8146101c3578063ca15c8731461018d578063ccc5749014610166578063d547741f1461012e5763f5b541a614610103575f80fd5b3461012a575f36600319011261012a5760206040515f5160206110b35f395f51905f528152f35b5f80fd5b3461012a57604036600319011261012a5761016460043561014d610b08565b9061015f61015a82610b54565b610bce565b610c81565b005b3461012a575f36600319011261012a5760206040515f5160206110935f395f51905f528152f35b3461012a57602036600319011261012a576004355f525f5160206110535f395f51905f52602052602060405f2054604051908152f35b3461012a57602036600319011261012a576101dc610af2565b5f5160206111335f395f51905f52549060ff8260401c16159167ffffffffffffffff8116801590816104b5575b60011490816104ab575b1590816104a2575b506104935767ffffffffffffffff1981166001175f5160206111335f395f51905f525582610467575b5061024d611007565b610255611007565b6001600160a01b038116908115610458575f5160206110935f395f51905f525f8181525f5160206110d35f395f51905f526020527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8048054908390556103a893929182905f5160206110335f395f51905f529080a45f5160206111135f395f51905f525f8181525f5160206110d35f395f51905f526020527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff13480545f5160206110935f395f51905f5291829055909290915f5160206110335f395f51905f529080a45f5160206110b35f395f51905f525f8181525f5160206110d35f395f51905f526020527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45780545f5160206110935f395f51905f5291829055909290915f5160206110335f395f51905f529080a4610cc3565b610406575b506103b457005b60ff60401b195f5160206111335f395f51905f5254165f5160206111335f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b5f5160206110935f395f51905f525f525f5160206110535f395f51905f52602052610451907f955af8caaf1bb5fca493cbb01cefeb9e610a81071c268cd8b40c82100cbb956e610ec4565b50816103ad565b63395d053560e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f5160206111335f395f51905f525582610244565b63f92ee8a960e01b5f5260045ffd5b9050158461021b565b303b159150610213565b849150610209565b3461012a57602036600319011261012a576004355f525f5160206110535f395f51905f5260205260405f20604051806020835491828152019081935f5260205f20905f5b8181106105625750505081610517910382610b1e565b604051918291602083019060208452518091526040830191905f5b818110610540575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610532565b8254845260209093019260019283019201610501565b3461012a575f36600319011261012a5760206040515f8152f35b3461012a57602036600319011261012a576105ab610af2565b50335f9081525f5160206110735f395f51905f52602052604090205460ff16156105d157005b63e2517d3f60e01b5f52336004525f5160206110935f395f51905f5260245260445ffd5b3461012a57604036600319011261012a5761060e610b08565b6004355f525f5160206110d35f395f51905f5260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461012a57604036600319011261012a576004355f525f5160206110535f395f51905f52602052602061068260243560405f20610e9b565b905460405160039290921b1c6001600160a01b03168152f35b3461012a575f36600319011261012a576106b3610b72565b6106bb610c14565b600160ff195f5160206110f35f395f51905f525416175f5160206110f35f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461012a575f36600319011261012a57602060ff5f5160206110f35f395f51905f5254166040519015158152f35b3461012a575f36600319011261012a57610752610b72565b5f5160206110f35f395f51905f525460ff8116156107a95760ff19165f5160206110f35f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461012a575f36600319011261012a577fa3b917c02656dce72578274a2691b36a801594defb0373242b11f7f3021194065f80a1005b3461012a575f36600319011261012a5760206040515f5160206111135f395f51905f528152f35b3461012a57604036600319011261012a5761082e610b08565b336001600160a01b0382160361084a5761016490600435610c81565b63334bd91960e11b5f5260045ffd5b3461012a575f36600319011261012a576020604051620f42408152f35b3461012a57604036600319011261012a57610164600435610895610b08565b906108a261015a82610b54565b610c3b565b3461012a57602036600319011261012a5760206108c5600435610b54565b604051908152f35b3461012a57604036600319011261012a576108e6610af2565b335f9081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb4566020526040902054602435919060ff1615610a1557610929610c14565b60405163a9059cbb60e01b81526001600160a01b03918216600482018190526024820184905291602090829060449082905f907f0000000000000000000000000000000000000000000000000000000000000000165af1908115610a0a575f916109cf575b50156109ba577ff18d5a93c62c1d0c761ed52107f11d20bc2071851206b79c4dd3283bd9f006f15f80a3005b636e4cad2760e01b5f5260045260245260445ffd5b90506020813d602011610a02575b816109ea60209383610b1e565b8101031261012a5751801515810361012a578361098e565b3d91506109dd565b6040513d5f823e3d90fd5b63e2517d3f60e01b5f52336004525f5160206110b35f395f51905f5260245260445ffd5b3461012a57602036600319011261012a576004359063ffffffff60e01b821680920361012a5760209163aee4dc4360e01b8114908115610ae1575b8115610a82575b5015158152f35b631cf1473b60e31b811491508115610a9c575b5083610a7b565b635a05180f60e01b811491508115610ab6575b5083610a95565b637965db0b60e01b811491508115610ad0575b5083610aaf565b6301ffc9a760e01b14905083610ac9565b6305ab421d60e01b81149150610a74565b600435906001600160a01b038216820361012a57565b602435906001600160a01b038216820361012a57565b90601f8019910116810190811067ffffffffffffffff821117610b4057604052565b634e487b7160e01b5f52604160045260245ffd5b5f525f5160206110d35f395f51905f52602052600160405f20015490565b335f9081527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff133602052604090205460ff1615610baa57565b63e2517d3f60e01b5f52336004525f5160206111135f395f51905f5260245260445ffd5b5f8181525f5160206110d35f395f51905f526020908152604080832033845290915290205460ff1615610bfe5750565b63e2517d3f60e01b5f523360045260245260445ffd5b60ff5f5160206110f35f395f51905f525416610c2c57565b63d93c066560e01b5f5260045ffd5b610c458282610d5b565b9182610c5057505090565b5f9182525f5160206110535f395f51905f526020526040909120610c7d916001600160a01b031690610ec4565b5090565b610c8b8282610dff565b9182610c9657505090565b5f9182525f5160206110535f395f51905f526020526040909120610c7d916001600160a01b031690610f2e565b6001600160a01b0381165f9081525f5160206110735f395f51905f52602052604090205460ff16610d56576001600160a01b03165f8181525f5160206110735f395f51905f5260205260408120805460ff191660011790553391905f5160206110935f395f51905f52907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b505f90565b5f8181525f5160206110d35f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16610df9575f8181525f5160206110d35f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f8181525f5160206110d35f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615610df9575f8181525f5160206110d35f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b8054821015610eb0575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6001810190825f528160205260405f2054155f14610f27578054600160401b811015610b4057610f14610efe826001879401855584610e9b565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b906001820191815f528260205260405f20548015155f14610fff575f198101818111610feb5782545f19810191908211610feb57818103610fb6575b50505080548015610fa2575f190190610f838282610e9b565b8154905f199060031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b610fd6610fc6610efe9386610e9b565b90549060031b1c92839286610e9b565b90555f528360205260405f20555f8080610f6a565b634e487b7160e01b5f52601160045260245ffd5b505050505f90565b60ff5f5160206111335f395f51905f525460401c161561102357565b631afcd79f60e31b5f5260045ffdfebd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200075e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8037935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5597667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46df0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220648247bdd512fc2918e2d95787c17abad57d1ad135d24eba5bccea275673fe2664736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0xA39 JUMPI POP DUP1 PUSH4 0x5AB421D EQ PUSH2 0x8CD JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x876 JUMPI DUP1 PUSH4 0x32BC934C EQ PUSH2 0x859 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x815 JUMPI DUP1 PUSH4 0x389ED267 EQ PUSH2 0x7EE JUMPI DUP1 PUSH4 0x3DF8D682 EQ PUSH2 0x7B8 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x73A JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x69B JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x64A JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x5F5 JUMPI DUP1 PUSH4 0x931C0AC1 EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x578 JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xCCC57490 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x12E JUMPI PUSH4 0xF5B541A6 EQ PUSH2 0x103 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10B3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x164 PUSH1 0x4 CALLDATALOAD PUSH2 0x14D PUSH2 0xB08 JUMP JUMPDEST SWAP1 PUSH2 0x15F PUSH2 0x15A DUP3 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0xBCE JUMP JUMPDEST PUSH2 0xC81 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x1DC PUSH2 0xAF2 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x40 SHR AND ISZERO SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 ISZERO SWAP1 DUP2 PUSH2 0x4B5 JUMPI JUMPDEST PUSH1 0x1 EQ SWAP1 DUP2 PUSH2 0x4AB JUMPI JUMPDEST ISZERO SWAP1 DUP2 PUSH2 0x4A2 JUMPI JUMPDEST POP PUSH2 0x493 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x467 JUMPI JUMPDEST POP PUSH2 0x24D PUSH2 0x1007 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x1007 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x458 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE804 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH2 0x3A8 SWAP4 SWAP3 SWAP2 DUP3 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1033 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1113 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF134 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1033 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10B3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB457 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1033 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH2 0xCC3 JUMP JUMPDEST PUSH2 0x406 JUMPI JUMPDEST POP PUSH2 0x3B4 JUMPI STOP JUMPDEST PUSH1 0xFF PUSH1 0x40 SHL NOT PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x451 SWAP1 PUSH32 0x955AF8CAAF1BB5FCA493CBB01CEFEB9E610A81071C268CD8B40C82100CBB956E PUSH2 0xEC4 JUMP JUMPDEST POP DUP2 PUSH2 0x3AD JUMP JUMPDEST PUSH4 0x395D0535 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFFFF NOT AND PUSH9 0x10000000000000001 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x244 JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP ISZERO DUP5 PUSH2 0x21B JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP PUSH2 0x213 JUMP JUMPDEST DUP5 SWAP2 POP PUSH2 0x209 JUMP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 DUP4 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP1 DUP2 SWAP4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x562 JUMPI POP POP POP DUP2 PUSH2 0x517 SWAP2 SUB DUP3 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x540 JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x532 JUMP JUMPDEST DUP3 SLOAD DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x501 JUMP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x5AB PUSH2 0xAF2 JUMP JUMPDEST POP CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1073 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5D1 JUMPI STOP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x60E PUSH2 0xB08 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x682 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0xE9B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x3 SWAP3 SWAP1 SWAP3 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x6B3 PUSH2 0xB72 JUMP JUMPDEST PUSH2 0x6BB PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x752 PUSH2 0xB72 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND ISZERO PUSH2 0x7A9 JUMPI PUSH1 0xFF NOT AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x8DFC202B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH32 0xA3B917C02656DCE72578274A2691B36A801594DEFB0373242B11F7F302119406 PUSH0 DUP1 LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1113 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x82E PUSH2 0xB08 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SUB PUSH2 0x84A JUMPI PUSH2 0x164 SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0xC81 JUMP JUMPDEST PUSH4 0x334BD919 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x164 PUSH1 0x4 CALLDATALOAD PUSH2 0x895 PUSH2 0xB08 JUMP JUMPDEST SWAP1 PUSH2 0x8A2 PUSH2 0x15A DUP3 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0xC3B JUMP JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x20 PUSH2 0x8C5 PUSH1 0x4 CALLDATALOAD PUSH2 0xB54 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH2 0x8E6 PUSH2 0xAF2 JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB456 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x24 CALLDATALOAD SWAP2 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xA15 JUMPI PUSH2 0x929 PUSH2 0xC14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 PUSH1 0x20 SWAP1 DUP3 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xA0A JUMPI PUSH0 SWAP2 PUSH2 0x9CF JUMPI JUMPDEST POP ISZERO PUSH2 0x9BA JUMPI PUSH32 0xF18D5A93C62C1D0C761ED52107F11D20BC2071851206B79C4DD3283BD9F006F1 PUSH0 DUP1 LOG3 STOP JUMPDEST PUSH4 0x6E4CAD27 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xA02 JUMPI JUMPDEST DUP2 PUSH2 0x9EA PUSH1 0x20 SWAP4 DUP4 PUSH2 0xB1E JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x12A JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x12A JUMPI DUP4 PUSH2 0x98E JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x9DD JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10B3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x12A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x12A JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0x12A JUMPI PUSH1 0x20 SWAP2 PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0xAE1 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0xA82 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1CF1473B PUSH1 0xE3 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xA9C JUMPI JUMPDEST POP DUP4 PUSH2 0xA7B JUMP JUMPDEST PUSH4 0x5A05180F PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xAB6 JUMPI JUMPDEST POP DUP4 PUSH2 0xA95 JUMP JUMPDEST PUSH4 0x7965DB0B PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xAD0 JUMPI JUMPDEST POP DUP4 PUSH2 0xAAF JUMP JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0xAC9 JUMP JUMPDEST PUSH4 0x5AB421D PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0xA74 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x12A JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x12A JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB40 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF133 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xBAA JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1113 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xBFE JUMPI POP JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10F3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH2 0xC2C JUMPI JUMP JUMPDEST PUSH4 0xD93C0665 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0xC45 DUP3 DUP3 PUSH2 0xD5B JUMP JUMPDEST SWAP2 DUP3 PUSH2 0xC50 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0xC7D SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xEC4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0xC8B DUP3 DUP3 PUSH2 0xDFF JUMP JUMPDEST SWAP2 DUP3 PUSH2 0xC96 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1053 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0xC7D SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xF2E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1073 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xD56 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1073 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP2 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1093 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xDF9 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xDF9 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x10D3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0xEB0 JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH0 EQ PUSH2 0xF27 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0xB40 JUMPI PUSH2 0xF14 PUSH2 0xEFE DUP3 PUSH1 0x1 DUP8 SWAP5 ADD DUP6 SSTORE DUP5 PUSH2 0xE9B JUMP JUMPDEST DUP2 SWAP4 SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP2 DUP3 SHL SWAP2 PUSH0 NOT SWAP1 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE SLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP2 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0xFFF JUMPI PUSH0 NOT DUP2 ADD DUP2 DUP2 GT PUSH2 0xFEB JUMPI DUP3 SLOAD PUSH0 NOT DUP2 ADD SWAP2 SWAP1 DUP3 GT PUSH2 0xFEB JUMPI DUP2 DUP2 SUB PUSH2 0xFB6 JUMPI JUMPDEST POP POP POP DUP1 SLOAD DUP1 ISZERO PUSH2 0xFA2 JUMPI PUSH0 NOT ADD SWAP1 PUSH2 0xF83 DUP3 DUP3 PUSH2 0xE9B JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE SSTORE PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xFD6 PUSH2 0xFC6 PUSH2 0xEFE SWAP4 DUP7 PUSH2 0xE9B JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR SWAP3 DUP4 SWAP3 DUP7 PUSH2 0xE9B JUMP JUMPDEST SWAP1 SSTORE PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 DUP1 PUSH2 0xF6A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1133 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 SHR AND ISZERO PUSH2 0x1023 JUMPI JUMP JUMPDEST PUSH4 0x1AFCD79F PUSH1 0xE3 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID 0xBD PUSH26 0xB86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E12 SWAP16 SIGNEXTEND STOP SELFDESTRUCT 0xC1 0xF6 INVALID 0x24 PUSH3 0x1CE81E 0xC5 DUP3 PUSH29 0xAF0253CADB74709B061630E6B55E8237170593200075E09417C5070057 0xDF RETURNDATACOPY 0xAF JUMPF 0x54D MSTORE STATICCALL SIGNEXTEND 0x2A DUP8 0xD6 BLOBBASEFEE 0x23 MCOPY NOT PUSH26 0x63B615AEDEE8037935BD0AE54BC31F548C14DBA4D37C5C64B3F8 0xCA SWAP1 0xC 0xB4 PUSH9 0xFB8ABD54D5894F5597 PUSH7 0x7070C54EF182B0 CREATE2 DUP6 DUP12 SUB 0x4B 0xEA 0xC1 0xB6 RETURN ADDMOD SWAP11 LOG2 0xD3 XOR DUP12 0xB1 0xE8 SWAP3 SWAP16 0x4F 0xA9 0xB9 0x29 MUL 0xDD PUSH28 0xC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B6268 STOP 0xCD MCOPY DATALOADN 0x5C6E XOR PUSH31 0x77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300139C2898040E CALL PUSH10 0x10DC9F44DC697DF79363 0xDA PUSH23 0x7D8BC92F2E310312B816E46DF0C57E16840DF040F15088 0xDC 0x2F DUP2 INVALID CODECOPY SHR CODECOPY 0x23 0xBE 0xC7 RETURNDATACOPY 0x23 0xA9 PUSH7 0x2EFC9C229C6A00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0x8247BDD512 0xFC 0x29 XOR 0xE2 0xD9 JUMPI DUP8 0xC1 PUSH27 0xBAD57D1AD135D24EBA5BCCEA275673FE2664736F6C634300082100 CALLER ","sourceMap":"1194:2748:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;5815:26:13;1194:2748:34;;;;:::i;:::-;5785:18:13;3283:4;5785:18;;;:::i;:::-;3283:4;:::i;:::-;5815:26;:::i;:::-;1194:2748:34;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;4301:16:15;1194:2748:34;;;;4724:16:15;;:34;;;;1194:2748:34;4803:1:15;4788:16;:50;;;;1194:2748:34;4853:13:15;:30;;;;1194:2748:34;4849:91:15;;;-1:-1:-1;;1194:2748:34;;4803:1:15;1194:2748:34;-1:-1:-1;;;;;;;;;;;1194:2748:34;;4977:67:15;;1194:2748:34;6891:76:15;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;1194:2748:34;;;5377:22:36;;1194:2748:34;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;4967:24:13;1194:2748:34;;;;;;4241:31:14;;6946:18:13;2399:26:36;;;-1:-1:-1;;;;;;;;;;;7025:52:13;1194:2748:34;7025:52:13;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;4967:24:13;1194:2748:34;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;2399:26:36;;1194:2748:34;;-1:-1:-1;;;;;;;;;;;7025:52:13;1194:2748:34;7025:52:13;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;4967:24:13;1194:2748:34;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;2399:26:36;;1194:2748:34;;-1:-1:-1;;;;;;;;;;;7025:52:13;1194:2748:34;7025:52:13;4241:31:14;:::i;:::-;4282:71;;1194:2748:34;5064:101:15;;;1194:2748:34;5064:101:15;1194:2748:34;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;-1:-1:-1;;;;;;;;;;;1194:2748:34;5140:14:15;1194:2748:34;;;4803:1:15;1194:2748:34;;5140:14:15;1194:2748:34;4282:71:14;-1:-1:-1;;;;;;;;;;;1194:2748:34;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;11511:50:33;;1194:2748:34;11511:50:33;:::i;:::-;;4282:71:14;;;1194:2748:34;;;;;;;;;4977:67:15;-1:-1:-1;;1194:2748:34;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;4977:67:15;;;4849:91;4906:23;;;1194:2748:34;4906:23:15;1194:2748:34;;4906:23:15;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:15;;4724:34;;;-1:-1:-1;4724:34:15;;1194:2748:34;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1194:2748:34;;;;;-1:-1:-1;1194:2748:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;:::i;:::-;-1:-1:-1;966:10:16;1194:2748:34;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;4516:23:13;4512:108;;1194:2748:34;4512:108:13;4562:47;;;1194:2748:34;4562:47:13;966:10:16;1194:2748:34;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;4562:47:13;1194:2748:34;;;;;;-1:-1:-1;;1194:2748:34;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;3949:31:13;1194:2748:34;;;;;;-1:-1:-1;1194:2748:34;;;;;;-1:-1:-1;1194:2748:34;;;;;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;5853:18:33;1194:2748:34;;;;;5853:18:33;:::i;:::-;1194:2748:34;;;;;;;;;;-1:-1:-1;;;;;1194:2748:34;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;3283:4:13;;:::i;:::-;1944:72:17;;:::i;:::-;3300:4;1194:2748:34;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;3319:20:17;1194:2748:34;;;966:10:16;1194:2748:34;;3319:20:17;1194:2748:34;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;3283:4:13;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;2971:9:17;2967:62;;1194:2748:34;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;3627:22:17;1194:2748:34;;;966:10:16;1194:2748:34;;3627:22:17;1194:2748:34;2967:62:17;3003:15;;;1194:2748:34;3003:15:17;1194:2748:34;;3003:15:17;1194:2748:34;;;;;;-1:-1:-1;;1194:2748:34;;;;3662:32;1194:2748;3662:32;;1194:2748;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;:::i;:::-;966:10:16;-1:-1:-1;;;;;1194:2748:34;;6489:34:13;6485:102;;6597:37;1194:2748:34;;;6597:37:13;:::i;6485:102::-;6546:30;;;1194:2748:34;6546:30:13;1194:2748:34;;6546:30:13;1194:2748:34;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;1936:9:36;1194:2748:34;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;5398:25:13;1194:2748:34;;;;:::i;:::-;5368:18:13;3283:4;5368:18;;;:::i;3283:4::-;5398:25;:::i;1194:2748:34:-;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;:::i;:::-;966:10:16;1194:2748:34;;;;;;;;;;;;;;;;;4516:23:13;4512:108;;1944:72:17;;:::i;:::-;1194:2748:34;;-1:-1:-1;;;3228:32:34;;-1:-1:-1;;;;;1194:2748:34;;;;3228:32;;1194:2748;;;;;;;;;;;;;;3228:32;;1194:2748;;-1:-1:-1;;3228:11:34;1194:2748;3228:32;;;;;;;1194:2748;3228:32;;;1194:2748;;;;;3306:22;1194:2748;3306:22;;1194:2748;;;;;;;;;;;3228:32;1194:2748;;3228:32;;;1194:2748;3228:32;;1194:2748;3228:32;;;;;;1194:2748;3228:32;;;:::i;:::-;;;1194:2748;;;;;;;;;;;;3228:32;;;;;;-1:-1:-1;3228:32:34;;;1194:2748;;;;;;;;;4512:108:13;4562:47;;;1194:2748:34;4562:47:13;966:10:16;1194:2748:34;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;4562:47:13;1194:2748:34;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2853:48:34;;;:108;;;;1194:2748;2853:160;;;;1194:2748;;;;;;;2853:160;-1:-1:-1;;;6687:49:36;;;-1:-1:-1;6687:89:36;;;;2853:160:34;;;;;6687:89:36;-1:-1:-1;;;1851:57:14;;;-1:-1:-1;1851:97:14;;;;6687:89:36;;;;;1851:97:14;-1:-1:-1;;;3599:47:13;;;-1:-1:-1;3599:87:13;;;;1851:97:14;;;;;3599:87:13;-1:-1:-1;;;1101:40:18;;-1:-1:-1;3599:87:13;;;2853:108:34;-1:-1:-1;;;2917:44:34;;;-1:-1:-1;2853:108:34;;1194:2748;;;;-1:-1:-1;;;;;1194:2748:34;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1194:2748:34;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1194:2748:34;;;;;-1:-1:-1;1194:2748:34;4807:191:13;-1:-1:-1;1194:2748:34;-1:-1:-1;;;;;;;;;;;1194:2748:34;;4967:24:13;1194:2748:34;-1:-1:-1;1194:2748:34;4967:24:13;1194:2748:34;4807:191:13;:::o;4196:103::-;966:10:16;-1:-1:-1;1194:2748:34;;;;;;;;;;;;4516:23:13;4512:108;;4196:103::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;1194:2748:34;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;-1:-1:-1;4562:47:13;4196:103;-1:-1:-1;1194:2748:34;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;966:10:16;1194:2748:34;;;;;;;;;;4516:23:13;4512:108;;4196:103;:::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;1194:2748:34;;;;-1:-1:-1;4562:47:13;2709:128:17;1194:2748:34;-1:-1:-1;;;;;;;;;;;1194:2748:34;;2770:61:17;;2709:128::o;2770:61::-;2805:15;;;-1:-1:-1;2805:15:17;;-1:-1:-1;2805:15:17;4035:348:14;4241:31;;;;:::i;:::-;4282:71;;;;4362:14;;4035:348;:::o;4282:71::-;-1:-1:-1;1194:2748:34;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;11511:50:33;;-1:-1:-1;;;;;1194:2748:34;;11511:50:33;:::i;:::-;;4035:348:14;:::o;4486:353::-;4693:32;;;;:::i;:::-;4735:74;;;;4818:14;;4486:353;:::o;4735:74::-;-1:-1:-1;1194:2748:34;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;11832:53:33;;-1:-1:-1;;;;;1194:2748:34;;11832:53:33;:::i;7318:387:13:-;-1:-1:-1;;;;;1194:2748:34;;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;;;-1:-1:-1;;;;;1194:2748:34;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;-1:-1:-1;;1194:2748:34;;;;;966:10:16;;1194:2748:34;-1:-1:-1;;;;;;;;;;;2399:26:36;7580:40:13;;1194:2748:34;7580:40:13;7557:4;7634:11;:::o;7480:219::-;7676:12;1194:2748:34;7676:12:13;:::o;7318:387::-;1194:2748:34;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;-1:-1:-1;;;;;1194:2748:34;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;-1:-1:-1;;;;;1194:2748:34;;;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;966:10:16;;1194:2748:34;;7580:40:13;;1194:2748:34;7580:40:13;7557:4;7634:11;:::o;7480:219::-;7676:12;;1194:2748:34;7676:12:13;:::o;7942:388::-;1194:2748:34;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;-1:-1:-1;;;;;1194:2748:34;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;;;;;-1:-1:-1;;;;;1194:2748:34;;;;;;;;;;;;;;;-1:-1:-1;;1194:2748:34;;;966:10:16;;1194:2748:34;;8205:40:13;;1194:2748:34;8205:40:13;1194:2748:34;8259:11:13;:::o;1194:2748:34:-;;;;;;;;-1:-1:-1;1194:2748:34;;-1:-1:-1;1194:2748:34;;;-1:-1:-1;1194:2748:34;:::o;:::-;;;;;;;;;;;;2497:406:33;5197:14;;;1194:2748:34;;;;;;;;;;;5197:26:33;2576:321;1194:2748:34;;;;;-1:-1:-1;;;1194:2748:34;;;;;;;;5197:14:33;1194:2748:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5197:14:33;2832:11;:::o;2576:321::-;2874:12;;;1194:2748:34;2874:12:33;:::o;3071:1368::-;;3266:14;;;1194:2748:34;;;;;;;;;;;3302:13:33;;;3298:1135;3302:13;;;-1:-1:-1;;1194:2748:34;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;;;3777:23:33;;;3773:378;;3298:1135;1194:2748:34;;;;;;;;;-1:-1:-1;;1194:2748:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3266:14:33;4368:11;:::o;1194:2748:34:-;;;;;;;;;;;;3773:378:33;1194:2748:34;3840:22:33;3961:23;3840:22;;;:::i;:::-;1194:2748:34;;;;;;3961:23:33;;;;;:::i;1194:2748:34:-;;;;;;;;;;;;3773:378:33;;;;;1194:2748:34;;;;;;;;;;;;3298:1135:33;4410:12;;;;1194:2748:34;4410:12:33;:::o;7082:141:15:-;1194:2748:34;-1:-1:-1;;;;;;;;;;;1194:2748:34;;;;7148:18:15;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:15;;-1:-1:-1;7189:17:15"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","GOVERNOR_ROLE()":"ccc57490","MILLION()":"32bc934c","OPERATOR_ROLE()":"f5b541a6","PAUSE_ROLE()":"389ed267","beforeIssuanceAllocationChange()":"3df8d682","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","getRoleMembers(bytes32)":"a3246ad3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address)":"c4d66de8","pause()":"8456cb59","paused()":"5c975abb","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","sendTokens(address,uint256)":"05ab421d","setIssuanceAllocator(address)":"931c0ac1","supportsInterface(bytes4)":"01ffc9a7","unpause()":"3f4ba83a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"graphToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GovernorCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GraphTokenCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SendTokensFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"BeforeIssuanceAllocationChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldIssuanceAllocator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newIssuanceAllocator\",\"type\":\"address\"}],\"name\":\"IssuanceAllocatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOVERNOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MILLION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beforeIssuanceAllocationChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"governor\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"issuanceAllocator\",\"type\":\"address\"}],\"name\":\"setIssuanceAllocator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"custom:security-contact\":\"Please email security+contracts@thegraph.com if you find any bugs. We might have an active bug bounty program.\",\"details\":\"This contract is designed to be an allocator-minting target in the IssuanceAllocator. The IssuanceAllocator will mint tokens directly to this contract, and the authorized operator can send them to individual addresses as needed. This contract is pausable by the PAUSE_ROLE. When paused, tokens cannot be sent.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"SendTokensFailed(address,uint256)\":[{\"params\":{\"amount\":\"The amount of tokens that failed to transfer\",\"to\":\"The address that the transfer was attempted to\"}}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"IssuanceAllocatorSet(address,address)\":{\"params\":{\"newIssuanceAllocator\":\"New issuance allocator address\",\"oldIssuanceAllocator\":\"Old issuance allocator address\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TokensSent(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens sent\",\"to\":\"The address that received the tokens\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"beforeIssuanceAllocationChange()\":{\"details\":\"For DirectAllocation, this is a no-op since we don't need to perform any calculations before an allocation change. We simply receive tokens from the IssuanceAllocator.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"This contract is upgradeable, but we use the constructor to pass the Graph Token address to the base contract.\",\"params\":{\"graphToken\":\"Address of the Graph Token contract\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address)\":{\"params\":{\"governor\":\"Address that will have the GOVERNOR_ROLE\"}},\"pause()\":{\"details\":\"Pauses contract operations. Only functions using whenNotPaused modifier will be affected.\"},\"paused()\":{\"returns\":{\"_0\":\"True if the contract is paused, false otherwise\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"sendTokens(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to send\",\"to\":\"The address to send tokens to\"}},\"setIssuanceAllocator(address)\":{\"details\":\"No-op for DirectAllocation; issuanceAllocator is not stored.\",\"params\":{\"newIssuanceAllocator\":\"Address of the issuance allocator\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"unpause()\":{\"details\":\"Resumes contract operations. Only functions using whenPaused modifier will be affected.\"}},\"title\":\"DirectAllocation\",\"version\":1},\"userdoc\":{\"errors\":{\"GovernorCannotBeZeroAddress()\":[{\"notice\":\"Thrown when attempting to set the governor to the zero address\"}],\"GraphTokenCannotBeZeroAddress()\":[{\"notice\":\"Thrown when attempting to set the Graph Token to the zero address\"}],\"SendTokensFailed(address,uint256)\":[{\"notice\":\"Thrown when token transfer fails\"}]},\"events\":{\"BeforeIssuanceAllocationChange()\":{\"notice\":\"Emitted before the issuance allocation changes\"},\"IssuanceAllocatorSet(address,address)\":{\"notice\":\"New issuance allocator set\"},\"TokensSent(address,uint256)\":{\"notice\":\"Emitted when tokens are sent\"}},\"kind\":\"user\",\"methods\":{\"GOVERNOR_ROLE()\":{\"notice\":\"Role identifier for governor accounts\"},\"MILLION()\":{\"notice\":\"One million - used as the denominator for values provided as Parts Per Million (PPM)\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role identifier for operator accounts\"},\"PAUSE_ROLE()\":{\"notice\":\"Role identifier for pause accounts\"},\"beforeIssuanceAllocationChange()\":{\"notice\":\"Called by the issuance allocator before the target's issuance allocation changes\"},\"constructor\":{\"notice\":\"Constructor for the DirectAllocation contract\"},\"initialize(address)\":{\"notice\":\"Initialize the DirectAllocation contract\"},\"pause()\":{\"notice\":\"Pause the contract\"},\"paused()\":{\"notice\":\"Check if the contract is currently paused\"},\"sendTokens(address,uint256)\":{\"notice\":\"Send tokens to a specified address\"},\"setIssuanceAllocator(address)\":{\"notice\":\"Sets the issuance allocator for this target\"},\"unpause()\":{\"notice\":\"Unpause the contract\"}},\"notice\":\"A simple contract that receives tokens from the IssuanceAllocator and allows an authorized operator to withdraw them.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/allocate/DirectAllocation.sol\":\"DirectAllocation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol\":{\"keccak256\":\"0x4072d8fb200c3f5f1c7dd296c8e3b816d372c7f02ccde3c1e7efe0828a379dab\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e455b77e7a53046d94720f6fd0229b47e0bbf8d6bb43c291af39a8a8dccb34b5\",\"dweb:/ipfs/QmXVP248rUtadhed7BrNpUXQXjh99B9U73JcWF8LBdZLQV\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/ISendTokens.sol\":{\"keccak256\":\"0xa911740dd57395ffdc478c2d83c60d881fee0f521d25ec99619939ff545cfa13\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://62a95fe4acbbb29cd05a89993fb4cce9126430386db8d8780404ba7e04bf0c08\",\"dweb:/ipfs/QmURXpnJrzBzSdZPq11iizFNwm7bwxvhFGuXC6d2GPkufM\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol\":{\"keccak256\":\"0xb60ae62d0ab5cb8a9d06b922f036500e2fc5f0a491ea3322df6db8124ffd1a6a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://25404feafd215b17a25d71661d308ad19c6604f2f32b2447b1337e60974934cb\",\"dweb:/ipfs/QmYyQVQaU5fdfqgbQ1CQXVkBZhW53FiZBC79E42cWEEjnJ\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0x52d72be5f7529846ba76aacf0c49de92bde89a5203b6fbc3919e7384c0df0905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d5e789d39c6623db24d427ca8380978f44cc736070e2ac3ee19f88095c43b17\",\"dweb:/ipfs/QmSzyMMTnZrUWY2e4B2U3VE2fjz8AFawhk7jex8SPW1eT2\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xbc97d8c0d67d4d7eba1e662f0a8671712ace9e060ab03af547c4bb321aec1d8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://890d156f50630d52c7be57d7e0499132d6fd92b2e1365b81531f4463b3304377\",\"dweb:/ipfs/QmUHe9uL1ciePH2pQg7wdrgTAFRZWjcpBEAg8V1UNtXutd\"]},\"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"project/contracts/allocate/DirectAllocation.sol\":{\"keccak256\":\"0x5b5440ca98ddd3bd1f925eaac3702a05bfc960bb605531dcaed4d86acf221d12\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7394cc20a3504fdd8ba63d87c5caa0d7910cb9975cd06948ab825485fbda873f\",\"dweb:/ipfs/QmehhTioQJCiwqFY6dPqU1P9dsEKFa8PWFM8Y5T4ecmrYW\"]},\"project/contracts/common/BaseUpgradeable.sol\":{\"keccak256\":\"0x78604bc34c8f141aeae60c342c88d3665ceb74787f9becfcb4847247cff4e79e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://28bd9105960c7c3769d5c27d8ba2d78afe8d55bd4baaccc9dcc0c26468e719ae\",\"dweb:/ipfs/QmSojY3oUAxUieyr67ggKdP2jdbfBQDsexkTdWt4t7jTM6\"]},\"project/contracts/common/IGraphToken.sol\":{\"keccak256\":\"0xfdc400179050b90ce5170c12bcadb22de1b0a7b22add8c5d72a9e3dfa1ccaad1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a0e3d4d02da94e103036a64a4d549efaa04289997cfbc039e415917615050f44\",\"dweb:/ipfs/QmYq7oDWg33TBmJa9FcXNdovANgP1X2dnidcCaDFrgzX4J\"]}},\"version\":1}"}},"project/contracts/allocate/IssuanceAllocator.sol":{"IssuanceAllocator":{"abi":[{"inputs":[{"internalType":"address","name":"_graphToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"defaultTarget","type":"address"}],"name":"CannotSetAllocationForDefaultTarget","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"CannotSetDefaultToAllocatedTarget","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"GovernorCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"GraphTokenCannotBeZeroAddress","type":"error"},{"inputs":[{"internalType":"uint256","name":"requested","type":"uint256"},{"internalType":"uint256","name":"available","type":"uint256"}],"name":"InsufficientAllocationAvailable","type":"error"},{"inputs":[{"internalType":"uint256","name":"oldRate","type":"uint256"},{"internalType":"uint256","name":"newRate","type":"uint256"},{"internalType":"uint256","name":"unallocated","type":"uint256"}],"name":"InsufficientUnallocatedForRateDecrease","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"TargetAddressCannotBeZero","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"TargetDoesNotSupportIIssuanceTarget","type":"error"},{"inputs":[{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"uint256","name":"minBlock","type":"uint256"},{"internalType":"uint256","name":"maxBlock","type":"uint256"}],"name":"ToBlockOutOfRange","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"DefaultTargetUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"fromBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"toBlock","type":"uint256"}],"name":"IssuanceDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldIssuancePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newIssuancePerBlock","type":"uint256"}],"name":"IssuancePerBlockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"fromBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"toBlock","type":"uint256"}],"name":"IssuanceSelfMintAllowance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"fromBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"toBlock","type":"uint256"}],"name":"IssuanceSelfMintAllowanceAggregate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum SelfMintingEventMode","name":"oldMode","type":"uint8"},{"indexed":false,"internalType":"enum SelfMintingEventMode","name":"newMode","type":"uint8"}],"name":"SelfMintingEventModeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"offsetBefore","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"offsetAfter","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"fromBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"toBlock","type":"uint256"}],"name":"SelfMintingOffsetAccumulated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"offsetBefore","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"offsetAfter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalForPeriod","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"fromBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"toBlock","type":"uint256"}],"name":"SelfMintingOffsetReconciled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"newAllocatorMintingRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSelfMintingRate","type":"uint256"}],"name":"TargetAllocationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MILLION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeIssuance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributePendingIssuance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"toBlockNumber","type":"uint256"}],"name":"distributePendingIssuance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"forceTargetNoChangeNotificationBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDistributionState","outputs":[{"components":[{"internalType":"uint256","name":"lastDistributionBlock","type":"uint256"},{"internalType":"uint256","name":"lastSelfMintingBlock","type":"uint256"},{"internalType":"uint256","name":"selfMintingOffset","type":"uint256"}],"internalType":"struct DistributionState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIssuancePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMembers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSelfMintingEventMode","outputs":[{"internalType":"enum SelfMintingEventMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetAllocation","outputs":[{"components":[{"internalType":"uint256","name":"totalAllocationRate","type":"uint256"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"}],"internalType":"struct Allocation","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTargetAt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTargetCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetData","outputs":[{"components":[{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"},{"internalType":"uint256","name":"lastChangeNotifiedBlock","type":"uint256"}],"internalType":"struct AllocationTarget","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetIssuancePerBlock","outputs":[{"components":[{"internalType":"uint256","name":"allocatorIssuanceRate","type":"uint256"},{"internalType":"uint256","name":"allocatorIssuanceBlockAppliedTo","type":"uint256"},{"internalType":"uint256","name":"selfIssuanceRate","type":"uint256"},{"internalType":"uint256","name":"selfIssuanceBlockAppliedTo","type":"uint256"}],"internalType":"struct TargetIssuancePerBlock","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTargets","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAllocation","outputs":[{"components":[{"internalType":"uint256","name":"totalAllocationRate","type":"uint256"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"}],"internalType":"struct Allocation","name":"allocation","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_governor","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"notifyTarget","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDefaultTarget","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"uint256","name":"minDistributedBlock","type":"uint256"}],"name":"setDefaultTarget","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newIssuancePerBlock","type":"uint256"}],"name":"setIssuancePerBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newIssuancePerBlock","type":"uint256"},{"internalType":"uint256","name":"minDistributedBlock","type":"uint256"}],"name":"setIssuancePerBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum SelfMintingEventMode","name":"newMode","type":"uint8"}],"name":"setSelfMintingEventMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IIssuanceTarget","name":"target","type":"address"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"}],"name":"setTargetAllocation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IIssuanceTarget","name":"target","type":"address"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"}],"name":"setTargetAllocation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IIssuanceTarget","name":"target","type":"address"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"},{"internalType":"uint256","name":"minDistributedBlock","type":"uint256"}],"name":"setTargetAllocation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a03461012e57601f612d9c38819003918201601f19168301916001600160401b038311848410176101325780849260209460405283398101031261012e57516001600160a01b0381169081900361012e57801561011f576080525f516020612d7c5f395f51905f525460ff8160401c16610110576002600160401b03196001600160401b038216016100ba575b604051612c359081610147823960805181818161184601528181611941015281816125e501526128a00152f35b6001600160401b0319166001600160401b039081175f516020612d7c5f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f61008d565b63f92ee8a960e01b5f5260045ffd5b6369e4eeb360e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611009575080631156bdc114610fda57806313a7855d14610fa057806315d3b5d814610f27578063248a9ca314610f095780632f2ff15d14610ed85780633067cb4c14610e3057806332bc934c14610e1357806336568abe14610dcf578063389ed26714610da85780633af5b07314610d7d5780633f4ba83a14610cff578063443990fa14610cbd5780634887693c14610c8a57806348c3c62e14610c0457806349bdfcb014610bc75780634a1293b714610ba157806352c0e18c14610b5b5780635c975abb14610b2d57806363fe3b5614610ac4578063647b368214610a7e578063697cf32214610a4957806379d5fc5414610a265780637c92330b146109d65780638456cb591461095557806384c48422146108f557806387ee921c146108cc5780639010d07c1461087b57806391d148541461082657806393c911a8146107f8578063a217fddf146107de578063a3246ad31461075e578063c2cb354414610716578063c4d66de8146103a4578063c627b7a414610373578063ca15c8731461033d578063ccc5749014610316578063d012a15b146102c5578063d547741f1461028d578063ee56977e1461021d5763f5b541a6146101df575f80fd5b34610219575f3660031901126102195760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b5f80fd5b34610219575f3660031901126102195761023561125e565b506060610240611566565b60018101549060036002820154910154906040519261025e84611220565b83526020830152604082015261028b60405180926040809180518452602081015160208501520151910152565bf35b34610219576040366003190112610219576102c36004356102ac6110f2565b906102be6102b98261129d565b6113f1565b6115f0565b005b346102195760403660031901126102195760206102fc6102e3611108565b6102eb61134c565b6102f3611437565b60243590612024565b5f5f516020612ba05f395f51905f525d6040519015158152f35b34610219575f3660031901126102195760206040515f516020612b205f395f51905f528152f35b34610219576020366003190112610219576004355f525f516020612ac05f395f51905f52602052602060405f2054604051908152f35b346102195760403660031901126102195761038c61134c565b610394611437565b60206102fc60243560043561146c565b34610219576020366003190112610219576103bd611108565b5f516020612be05f395f51905f52549060ff8260401c16159167ffffffffffffffff81168015908161070e575b6001149081610704575b1590816106fb575b506106ec5767ffffffffffffffff1981166001175f516020612be05f395f51905f5255826106c0575b5061042e612a74565b610436612a74565b6001600160a01b0381169081156106b1575f516020612b205f395f51905f525f8181525f516020612b405f395f51905f526020527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee80480549083905561059c93929182905f516020612aa05f395f51905f529080a45f516020612b805f395f51905f525f8181525f516020612b405f395f51905f526020527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff13480545f516020612b205f395f51905f5291829055909290915f516020612aa05f395f51905f529080a47f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9295f8181525f516020612b405f395f51905f526020527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45780545f516020612b205f395f51905f5291829055909290915f516020612aa05f395f51905f529080a461219a565b61065f575b506105aa611566565b600581018054600160401b81101561064b576105cb916001820181556112ee565b81549060018060a01b039060031b1b1916905560078101600260ff198254161790556001439101556105f957005b60ff60401b195f516020612be05f395f51905f5254165f516020612be05f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b634e487b7160e01b5f52604160045260245ffd5b5f516020612b205f395f51905f525f525f516020612ac05f395f51905f526020526106aa907f955af8caaf1bb5fca493cbb01cefeb9e610a81071c268cd8b40c82100cbb956e612960565b50816105a1565b63395d053560e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f516020612be05f395f51905f525582610425565b63f92ee8a960e01b5f5260045ffd5b905015846103fc565b303b1591506103f4565b8491506103ea565b346102195760803660031901126102195760206102fc610734611108565b61073c61134c565b610744611437565b6064359060443590602435906001600160a01b0316611cc8565b34610219576020366003190112610219576004355f525f516020612ac05f395f51905f5260205260405f206040519081602082549182815201915f5260205f20905f5b8181106107c8576107c4856107b88187038261123c565b6040519182918261111e565b0390f35b82548452602090930192600192830192016107a1565b34610219575f3660031901126102195760206040515f8152f35b34610219575f36600319011261021957602060ff6007610816611566565b01541661028b6040518092611160565b346102195760403660031901126102195761083f6110f2565b6004355f525f516020612b405f395f51905f5260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610219576040366003190112610219576004355f525f516020612ac05f395f51905f5260205260206108b360243560405f206112ee565b905460405160039290921b1c6001600160a01b03168152f35b346102195760203660031901126102195760206108b360043560056108ef611566565b016112ee565b346102195760203660031901126102195761090e611108565b61091661125e565b506004610921611566565b019060018060a01b03165f52602052606060405f206001815491015461094781836112bb565b916040519261025e84611220565b34610219575f3660031901126102195761096d611395565b5f516020612b605f395f51905f525460ff81166109c75760019060ff1916175f516020612b605f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b63d93c066560e01b5f5260045ffd5b346102195760403660031901126102195760206109f1611108565b602435906109fd61134c565b6004610a07611566565b019060018060a01b03165f52825280600260405f200155604051908152f35b34610219575f366003190112610219576020610a40611566565b54604051908152f35b346102195760203660031901126102195760206102fc610a67611108565b610a6f61134c565b610a77611437565b4390612024565b346102195760603660031901126102195760206102fc610a9c611108565b610aa461134c565b610aac611437565b439060443590602435906001600160a01b0316611cc8565b34610219575f366003190112610219576005610ade611566565b016040519081602082549182815201915f5260205f20905f5b818110610b0e576107c4856107b88187038261123c565b82546001600160a01b0316845260209093019260019283019201610af7565b34610219575f36600319011261021957602060ff5f516020612b605f395f51905f5254166040519015158152f35b3461021957602036600319011261021957610b7461134c565b610b7c611437565b6020610b89600435611645565b5f5f516020612ba05f395f51905f525d604051908152f35b34610219575f3660031901126102195760206005610bbd611566565b0154604051908152f35b34610219575f366003190112610219576001610be1611566565b01544303610bf5576020435b604051908152f35b6020610bff611fda565b610bed565b3461021957602036600319011261021957610c1d611108565b610c2561125e565b506004610c30611566565b019060018060a01b03165f52602052606060405f20600260405191610c5483611220565b80548352600181015460208401520154604082015261028b60405180926040809180518452602081015160208501520151910152565b346102195760203660031901126102195760206102fc610ca8611108565b610cb061134c565b610cb8611437565b611f60565b346102195760403660031901126102195760206102fc610cdb611108565b610ce361134c565b610ceb611437565b4390602435906001600160a01b0316611a18565b34610219575f36600319011261021957610d17611395565b5f516020612b605f395f51905f525460ff811615610d6e5760ff19165f516020612b605f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b34610219575f36600319011261021957610d9561134c565b610d9d611437565b6020610b8943611645565b34610219575f3660031901126102195760206040515f516020612b805f395f51905f528152f35b3461021957604036600319011261021957610de86110f2565b336001600160a01b03821603610e04576102c3906004356115f0565b63334bd91960e11b5f5260045ffd5b34610219575f366003190112610219576020604051620f42408152f35b34610219576020366003190112610219576080610e4b611108565b5f6060604051610e5a81611204565b8281528260208201528260408201520152610e73611566565b9060018060a01b03165f526004810160205260405f208054916002600180830154930154910154916060604051610ea981611204565b858152602081019283526040810193845201928352604051938452516020840152516040830152516060820152f35b34610219576040366003190112610219576102c3600435610ef76110f2565b90610f046102b98261129d565b6115aa565b34610219576020366003190112610219576020610bed60043561129d565b34610219575f366003190112610219576060610f4161125e565b610f7a610f4c611566565b6006610f6882545f80526004840160205260405f20549061127c565b9182855201549081604085015261127c565b602082015261028b60405180926040809180518452602081015160208501520151910152565b3461021957602036600319011261021957600435600381101561021957610fd0602091610fcb61134c565b611181565b6040519015158152f35b3461021957602036600319011261021957610ff361134c565b610ffb611437565b60206102fc4360043561146c565b34610219576020366003190112610219576004359063ffffffff60e01b821680920361021957602091631e768dff60e21b81149081156110e1575b81156110d0575b81156110bf575b8115611060575b5015158152f35b631cf1473b60e31b81149150811561107a575b5083611059565b635a05180f60e01b811491508115611094575b5083611073565b637965db0b60e01b8114915081156110ae575b508361108d565b6301ffc9a760e01b149050836110a7565b632461e31760e11b81149150611052565b63a896602d60e01b8114915061104b565b6350d8541d60e01b81149150611044565b602435906001600160a01b038216820361021957565b600435906001600160a01b038216820361021957565b60206040818301928281528451809452019201905f5b8181106111415750505090565b82516001600160a01b0316845260209384019390920191600101611134565b90600382101561116d5752565b634e487b7160e01b5f52602160045260245ffd5b600761118b611566565b019060ff825416600381101561116d57600382101561116d578082146111fc576111f66040927f3f59746e46bfb9af931035055d53b82d1b70968466065162b7dbf8e998aee6299460ff1981541660ff83161790556111ec84518094611160565b6020830190611160565ba1600190565b505050600190565b6080810190811067ffffffffffffffff82111761064b57604052565b6060810190811067ffffffffffffffff82111761064b57604052565b90601f8019910116810190811067ffffffffffffffff82111761064b57604052565b6040519061126b82611220565b5f6040838281528260208201520152565b9190820391821161128957565b634e487b7160e01b5f52601160045260245ffd5b5f525f516020612b405f395f51905f52602052600160405f20015490565b9190820180921161128957565b8054156112da575f5260205f20905f90565b634e487b7160e01b5f52603260045260245ffd5b80548210156112da575f5260205f2001905f90565b80549190600160401b83101561064b578261132691600161134a950181556112ee565b9080546001600160a01b0360039390931b83811b199091169290931690921b179055565b565b335f9081525f516020612ae05f395f51905f52602052604090205460ff161561137157565b63e2517d3f60e01b5f52336004525f516020612b205f395f51905f5260245260445ffd5b335f9081527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff133602052604090205460ff16156113cd57565b63e2517d3f60e01b5f52336004525f516020612b805f395f51905f5260245260445ffd5b5f8181525f516020612b405f395f51905f526020908152604080832033845290915290205460ff16156114215750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f516020612ba05f395f51905f525c61145d5760015f516020612ba05f395f51905f525d565b633ee5aeb560e01b5f5260045ffd5b611474611566565b80549283831461155d57611486611fda565b10611556576114bb600582016114b561149e826112c8565b905460039190911b1c6001600160a01b0316611f60565b506112c8565b905460039190911b1c6001600160a01b03165f908152600482016020526040902080546114e881856112bb565b851161153c5792849281926115297f2925be3e6d4b2cbcec6c06d5060fb3b53f160410555e45ee0a1f6dc7ae9b24c097611524856040996112bb565b61127c565b90555582519182526020820152a1600190565b8385632c421f2b60e21b5f5260045260245260445260645ffd5b5050505f90565b50505050600190565b604051602081017f109cdeb08b6fcb52a0f8a35af1bf023afdacdc6e602b08424b2171d0f4fa3cd481526020825261159f60408361123c565b9051902060ff191690565b6115b48282612232565b91826115bf57505090565b5f9182525f516020612ac05f395f51905f5260205260409091206115ec916001600160a01b031690612960565b5090565b6115fa82826122d0565b918261160557505090565b5f9182525f516020612ac05f395f51905f5260205260409091206115ec916001600160a01b0316906129c3565b8181029291811591840414171561128957565b61164d61236c565b611655611566565b600181019081548381111580611a0e575b156119f457611675908461127c565b9182156119ee578382549161168a8584611632565b926003850154948486105f146119e7576116a4868661127c565b915b8261174a575b505050556116b8611566565b9043850361172c575f935b8484036116d6575b505060039150015590565b6116e0908661127c565b60018101809111611289577f1a45018bdab6039c806fac73d617b3bc5c6a2a0f22f6f90d2ca202b083087f99606060039588946040519182528860208301526040820152a35f806116cb565b828110156117445761173e818461127c565b936116c3565b5f61173e565b6117969293945061178e90611761600584016112c8565b905460039190911b1c6001600160a01b03165f90815260048401602052604090206006909301549061127c565b90549061127c565b906117a18683611632565b808210156117bf5750868093926117b792612553565b5f80806116ac565b9695939294909791506117d0611566565b9260018401549560018701809711611289576001999860046005870196019a5b86548110156118f75761180381886112ee565b905460039190911b1c6001600160a01b03165f81815260208e9052604090205490919089908061183a575b505060019150016117f0565b9061184491611632565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290833b15610219576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af19182156118ec575f516020612b005f395f51905f5260208f94938f94976001986118dc575b50604051908152a4885f61182e565b5f6118e69161123c565b5f6118cd565b6040513d5f823e3d90fd5b5061190e91949a508899989592969897939761127c565b908161191d575b5050506117b7565b611926906112c8565b905460039190911b1c6001600160a01b0316918215611915577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031694509091843b15610219576040516340c10f1960e01b81526001600160a01b038216600482015260248101849052945f908690604490829084905af19485156118ec5760208a96945f516020612b005f395f51905f529288966119d7575b50604051908152a45f8080611915565b5f6119e19161123c565b5f6119c7565b5f916116a6565b50505090565b8363a0d2b9db60e01b5f526004526024524360445260645ffd5b5043841115611666565b9091611a255f84846126ba565b156111fc57611a32611fda565b10611cc257611a4081611f60565b50611a5761149e6005611a51611566565b016112c8565b50611a60611566565b600481019060018060a01b0383165f528160205260405f2091611a85600583016112c8565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611ac491600191611ab9916112bb565b9401938454906112bb565b808611611cac5791600691611adc87611aea9561127c565b90550191825490549061127c565b9055611af4611566565b6001600160a01b0382165f9081526004820160205260409020908315801590611ca5575b15611b8357915f6001835f516020612bc05f395f51905f529584604096541580611b78575b611b65575b505086815501555b81519384525f60208501526001600160a01b031692a2600190565b6005611b719201611303565b5f84611b42565b508383015415611b3d565b505090611b8e611566565b916001600160a01b03811690600584019060015b825480821015611c875784611bb783866112ee565b905460039190911b1c6001600160a01b031614611bd75750600101611ba2565b905f96929394959619820191821161128957611326611bf9611c1293876112ee565b905460039190911b1c6001600160a01b031691866112ee565b8254908115611c73575f516020612bc05f395f51905f52946040946004935f190190611c56611c4183836112ee565b81549060018060a01b039060031b1b19169055565b555f52016020525f60028382208281558260018201550155611b4a565b634e487b7160e01b5f52603160045260245ffd5b505090505f516020612bc05f395f51905f5292935060409150611b4a565b505f611b18565b8563162930e360e11b5f5260045260245260445ffd5b50505f90565b92919091611cd78284866126ba565b1561155d57611ce4611fda565b1061155657611cf283611f60565b50611d0361149e6005611a51611566565b50611d0c611566565b600481019060018060a01b0385165f528160205260405f2091611d31600583016112c8565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611d6591600191611ab9916112bb565b80611d7086886112bb565b11611d7b86886112bb565b90611f4b57506006611dad938693611d9a856115248b611da89761127c565b90550193845490549061127c565b6112bb565b9055611db7611566565b6001600160a01b0384165f9081526004820160205260409020908315801590611f42575b15611e47579180600183604095885f516020612bc05f395f51905f52989996541580611e3c575b611e29575b505087815501555b825194855260208501526001600160a01b031692a2600190565b6005611e359201611303565b5f85611e07565b508383015415611e02565b505091611e52611566565b926001600160a01b03821691600585019160015b835480821015611f235785611e7b83876112ee565b905460039190911b1c6001600160a01b031614611e9b5750600101611e66565b905f9792939495969719820191821161128957611326611ebe611ed793886112ee565b905460039190911b1c6001600160a01b031691876112ee565b8354908115611c73575f516020612bc05f395f51905f52956040956004935f190190611f06611c4183836112ee565b555f52016020525f60028482208281558260018201550155611e0f565b50509091505f516020612bc05f395f51905f5293945060409250611e0f565b50821515611ddb565b63162930e360e11b5f5260045260245260445ffd5b6001600160a01b03168015611fbd576004611f79611566565b01815f52602052600260405f20018054431115611fd357439055803b15610219575f8091600460405180948193631efc6b4160e11b83525af180156118ec57611fc3575b50600190565b5f611fcd9161123c565b5f611fbd565b5050600190565b611fe2611566565b611fea61236c565b60ff5f516020612b605f395f51905f52541661201d5760030154156120155761201243611645565b90565b612012612806565b6001015490565b61202c611566565b90600582019061203b826112c8565b90546001600160a01b038381169660039390931b9190911c16939085851461218f57835460015b818110612152575050612073611fda565b106121495760046120ac9161208786611f60565b5061209184611f60565b500191855f5282602052611326600260405f200154946112c8565b6001600160a01b0383165f9081526020829052604080822086835291209080820361212b575b505060018060a01b0383165f52806020525f6002604082208281558260018201550155835f52602052600260405f2001557ef06471e88e0bc1db6b6126efdb09f80b597e6ddc145ff0dcabd12afab4ec575f80a3600190565b60028181925484556001810154600185015501549101555f806120d2565b50505050505f90565b8761215d82886112ee565b905460039190911b1c6001600160a01b03161461217c57600101612062565b8763f158185d60e01b5f5260045260245ffd5b505050505050600190565b6001600160a01b0381165f9081525f516020612ae05f395f51905f52602052604090205460ff1661222d576001600160a01b03165f8181525f516020612ae05f395f51905f5260205260408120805460ff191660011790553391905f516020612b205f395f51905f52907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b505f90565b5f8181525f516020612b405f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16611cc2575f8181525f516020612b405f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5f8181525f516020612b405f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615611cc2575f8181525f516020612b405f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b612374611566565b6002810190815443811461254e5761238c814361127c565b9260018201809211611289576003830180549060ff5f516020612b605f395f51905f5254168015612545575b6124ea575b50504390556006820154806123d3575b50505050565b60ff600784015416600381101561116d576002810361249657505060058201805493600490930192905f5b858110612415575050505050505b5f8080806123cd565b80612422600192846112ee565b838060a01b0391549060031b1c16828060a01b0381165f5286602052858360405f2001548681612457575b50505050016123fe565b61246091611632565b916040519283527fa34db09d4126dd8dcd1d29f3df65c01dcac405127546e380add77fedca459ba760204394a45f85818661244d565b9193909250906001146124ac575b50505061240c565b6124b591611632565b906040519182527fcef44ce1a1fc7ca1f3078daf79d3b60646d0e751bc72a69bff12f66c4aef3b8d60204393a35f80806124a4565b6125016124fb876006880154611632565b836112bb565b809155808203156123bd576040519182526020820152827f0539ce444a515b8aa8769802297761fbec80b5b543c617714bf5e0611cf669db60404393a35f806123bd565b508115156123b8565b505050565b91909161255e611566565b9280158080156126b2575b6126ab57600185015492600184018094116112895760048601969560050160015b81548110156126a05761259d81836112ee565b905460039190911b1c6001600160a01b03165f81815260208b905260409020549091908590806125d4575b5050600191500161258a565b6125de9086611632565b9061268c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290879004833b15610219576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af19182156118ec575f516020612b005f395f51905f5260208b936001978e9661267c575b50604051908152a4845f6125c8565b5f6126869161123c565b5f61266d565b634e487b7160e01b5f52601260045260245ffd5b505050505050509050565b5050505050565b508215612569565b6001600160a01b0316919082156127f7576126d3611566565b600581016126fd6126e3826112c8565b905460039190911b1c6001600160a01b03168614916112c8565b905460039190911b1c6001600160a01b0316906127e55750600490845f520160205260405f20828282541491826127d7575b50506115565715908115916127cd575b5061274a5750600190565b6040516301ffc9a760e01b815263aee4dc4360e01b6004820152602081602481855afa9081156118ec575f91612792575b50611fbd5763a5fe861560e01b5f5260045260245ffd5b90506020813d6020116127c5575b816127ad6020938361123c565b8101031261021957518015158103610219575f61277b565b3d91506127a0565b905015155f61273f565b60010154149050825f61272f565b63fda6c18760e01b5f5260045260245ffd5b6322a4ec7b60e11b5f5260045ffd5b61280e611566565b906001820191825490612821824361127c565b9081156129595760018301809311611289575f94936004600583019201955b825481101561294c5761285381846112ee565b905460039190911b1c6001600160a01b03169081156129435760018060a01b0382165f52876020528460405f205480612894575b5050600191505b01612840565b9061289e91611632565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692833b15610219576040516340c10f1960e01b81526001600160a01b038216600482015260248101839052935f908590604490829084905af19081156118ec576001948992612933575b506040519283525f516020612b005f395f51905f5260204394a4845f612887565b5f61293d9161123c565b5f612912565b6001915061288e565b5094505050504390554390565b5090925050565b6001810190825f528160205260405f2054155f14611556578054600160401b81101561064b576129b061299a8260018794018555846112ee565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b906001820191815f528260205260405f20548015155f14612a6c575f1981018181116112895782545f1981019190821161128957818103612a37575b50505080548015611c73575f190190612a1882826112ee565b8154905f199060031b1b19169055555f526020525f6040812055600190565b612a57612a4761299a93866112ee565b90549060031b1c928392866112ee565b90555f528360205260405f20555f80806129ff565b505050505f90565b60ff5f516020612be05f395f51905f525460401c1615612a9057565b631afcd79f60e31b5f5260045ffdfebd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200075e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8030c56d855d8df534c916b78eac3522e5fafd59f48799c4a97d42e80f6e08989607935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f001bd3f0d2f1001a856d81215ceb86c548bdbc3bf52480a08978f8c3ea6e2bd421f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212209457a5e4c6d84f224585e79d573325e167fe728fa434f45fca45fc71e3868f7264736f6c63430008210033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","opcodes":"PUSH1 0xA0 CALLVALUE PUSH2 0x12E JUMPI PUSH1 0x1F PUSH2 0x2D9C CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x132 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x12E JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0x12E JUMPI DUP1 ISZERO PUSH2 0x11F JUMPI PUSH1 0x80 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2D7C PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 PUSH1 0x40 SHR AND PUSH2 0x110 JUMPI PUSH1 0x2 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND ADD PUSH2 0xBA JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C35 SWAP1 DUP2 PUSH2 0x147 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x1846 ADD MSTORE DUP2 DUP2 PUSH2 0x1941 ADD MSTORE DUP2 DUP2 PUSH2 0x25E5 ADD MSTORE PUSH2 0x28A0 ADD MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2D7C PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 SWAP1 LOG1 PUSH0 PUSH2 0x8D JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x69E4EEB3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x1009 JUMPI POP DUP1 PUSH4 0x1156BDC1 EQ PUSH2 0xFDA JUMPI DUP1 PUSH4 0x13A7855D EQ PUSH2 0xFA0 JUMPI DUP1 PUSH4 0x15D3B5D8 EQ PUSH2 0xF27 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0xF09 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0xED8 JUMPI DUP1 PUSH4 0x3067CB4C EQ PUSH2 0xE30 JUMPI DUP1 PUSH4 0x32BC934C EQ PUSH2 0xE13 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0xDCF JUMPI DUP1 PUSH4 0x389ED267 EQ PUSH2 0xDA8 JUMPI DUP1 PUSH4 0x3AF5B073 EQ PUSH2 0xD7D JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0xCFF JUMPI DUP1 PUSH4 0x443990FA EQ PUSH2 0xCBD JUMPI DUP1 PUSH4 0x4887693C EQ PUSH2 0xC8A JUMPI DUP1 PUSH4 0x48C3C62E EQ PUSH2 0xC04 JUMPI DUP1 PUSH4 0x49BDFCB0 EQ PUSH2 0xBC7 JUMPI DUP1 PUSH4 0x4A1293B7 EQ PUSH2 0xBA1 JUMPI DUP1 PUSH4 0x52C0E18C EQ PUSH2 0xB5B JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0xB2D JUMPI DUP1 PUSH4 0x63FE3B56 EQ PUSH2 0xAC4 JUMPI DUP1 PUSH4 0x647B3682 EQ PUSH2 0xA7E JUMPI DUP1 PUSH4 0x697CF322 EQ PUSH2 0xA49 JUMPI DUP1 PUSH4 0x79D5FC54 EQ PUSH2 0xA26 JUMPI DUP1 PUSH4 0x7C92330B EQ PUSH2 0x9D6 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x955 JUMPI DUP1 PUSH4 0x84C48422 EQ PUSH2 0x8F5 JUMPI DUP1 PUSH4 0x87EE921C EQ PUSH2 0x8CC JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x87B JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0x93C911A8 EQ PUSH2 0x7F8 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x7DE JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH2 0x75E JUMPI DUP1 PUSH4 0xC2CB3544 EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0xC627B7A4 EQ PUSH2 0x373 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xCCC57490 EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0xD012A15B EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0xEE56977E EQ PUSH2 0x21D JUMPI PUSH4 0xF5B541A6 EQ PUSH2 0x1DF JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x97667070C54EF182B0F5858B034BEAC1B6F3089AA2D3188BB1E8929F4FA9B929 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x235 PUSH2 0x125E JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x240 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD SWAP1 PUSH1 0x3 PUSH1 0x2 DUP3 ADD SLOAD SWAP2 ADD SLOAD SWAP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x25E DUP5 PUSH2 0x1220 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x28B PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x2C3 PUSH1 0x4 CALLDATALOAD PUSH2 0x2AC PUSH2 0x10F2 JUMP JUMPDEST SWAP1 PUSH2 0x2BE PUSH2 0x2B9 DUP3 PUSH2 0x129D JUMP JUMPDEST PUSH2 0x13F1 JUMP JUMPDEST PUSH2 0x15F0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0x2E3 PUSH2 0x1108 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x134C JUMP JUMPDEST PUSH2 0x2F3 PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x2024 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x38C PUSH2 0x134C JUMP JUMPDEST PUSH2 0x394 PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2FC PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x146C JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x3BD PUSH2 0x1108 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x40 SHR AND ISZERO SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 ISZERO SWAP1 DUP2 PUSH2 0x70E JUMPI JUMPDEST PUSH1 0x1 EQ SWAP1 DUP2 PUSH2 0x704 JUMPI JUMPDEST ISZERO SWAP1 DUP2 PUSH2 0x6FB JUMPI JUMPDEST POP PUSH2 0x6EC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x6C0 JUMPI JUMPDEST POP PUSH2 0x42E PUSH2 0x2A74 JUMP JUMPDEST PUSH2 0x436 PUSH2 0x2A74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x6B1 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE804 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH2 0x59C SWAP4 SWAP3 SWAP2 DUP3 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B80 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF134 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH32 0x97667070C54EF182B0F5858B034BEAC1B6F3089AA2D3188BB1E8929F4FA9B929 PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB457 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH2 0x219A JUMP JUMPDEST PUSH2 0x65F JUMPI JUMPDEST POP PUSH2 0x5AA PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0x64B JUMPI PUSH2 0x5CB SWAP2 PUSH1 0x1 DUP3 ADD DUP2 SSTORE PUSH2 0x12EE JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE PUSH1 0x7 DUP2 ADD PUSH1 0x2 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x1 NUMBER SWAP2 ADD SSTORE PUSH2 0x5F9 JUMPI STOP JUMPDEST PUSH1 0xFF PUSH1 0x40 SHL NOT PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x6AA SWAP1 PUSH32 0x955AF8CAAF1BB5FCA493CBB01CEFEB9E610A81071C268CD8B40C82100CBB956E PUSH2 0x2960 JUMP JUMPDEST POP DUP2 PUSH2 0x5A1 JUMP JUMPDEST PUSH4 0x395D0535 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFFFF NOT AND PUSH9 0x10000000000000001 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x425 JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP ISZERO DUP5 PUSH2 0x3FC JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP PUSH2 0x3F4 JUMP JUMPDEST DUP5 SWAP2 POP PUSH2 0x3EA JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x80 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0x734 PUSH2 0x1108 JUMP JUMPDEST PUSH2 0x73C PUSH2 0x134C JUMP JUMPDEST PUSH2 0x744 PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CC8 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x7C8 JUMPI PUSH2 0x7C4 DUP6 PUSH2 0x7B8 DUP2 DUP8 SUB DUP3 PUSH2 0x123C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x111E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP3 SLOAD DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x7A1 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x7 PUSH2 0x816 PUSH2 0x1566 JUMP JUMPDEST ADD SLOAD AND PUSH2 0x28B PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH2 0x1160 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x83F PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x8B3 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x3 SWAP3 SWAP1 SWAP3 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x8B3 PUSH1 0x4 CALLDATALOAD PUSH1 0x5 PUSH2 0x8EF PUSH2 0x1566 JUMP JUMPDEST ADD PUSH2 0x12EE JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x90E PUSH2 0x1108 JUMP JUMPDEST PUSH2 0x916 PUSH2 0x125E JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0x921 PUSH2 0x1566 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x60 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 DUP2 SLOAD SWAP2 ADD SLOAD PUSH2 0x947 DUP2 DUP4 PUSH2 0x12BB JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x25E DUP5 PUSH2 0x1220 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x96D PUSH2 0x1395 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND PUSH2 0x9C7 JUMPI PUSH1 0x1 SWAP1 PUSH1 0xFF NOT AND OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0xD93C0665 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x9F1 PUSH2 0x1108 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x9FD PUSH2 0x134C JUMP JUMPDEST PUSH1 0x4 PUSH2 0xA07 PUSH2 0x1566 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE DUP3 MSTORE DUP1 PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0xA40 PUSH2 0x1566 JUMP JUMPDEST SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0xA67 PUSH2 0x1108 JUMP JUMPDEST PUSH2 0xA6F PUSH2 0x134C JUMP JUMPDEST PUSH2 0xA77 PUSH2 0x1437 JUMP JUMPDEST NUMBER SWAP1 PUSH2 0x2024 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0xA9C PUSH2 0x1108 JUMP JUMPDEST PUSH2 0xAA4 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xAAC PUSH2 0x1437 JUMP JUMPDEST NUMBER SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CC8 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x5 PUSH2 0xADE PUSH2 0x1566 JUMP JUMPDEST ADD PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xB0E JUMPI PUSH2 0x7C4 DUP6 PUSH2 0x7B8 DUP2 DUP8 SUB DUP3 PUSH2 0x123C JUMP JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0xAF7 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xB74 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xB7C PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xB89 PUSH1 0x4 CALLDATALOAD PUSH2 0x1645 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x5 PUSH2 0xBBD PUSH2 0x1566 JUMP JUMPDEST ADD SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x1 PUSH2 0xBE1 PUSH2 0x1566 JUMP JUMPDEST ADD SLOAD NUMBER SUB PUSH2 0xBF5 JUMPI PUSH1 0x20 NUMBER JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 PUSH2 0xBFF PUSH2 0x1FDA JUMP JUMPDEST PUSH2 0xBED JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xC1D PUSH2 0x1108 JUMP JUMPDEST PUSH2 0xC25 PUSH2 0x125E JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0xC30 PUSH2 0x1566 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x60 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP2 PUSH2 0xC54 DUP4 PUSH2 0x1220 JUMP JUMPDEST DUP1 SLOAD DUP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP5 ADD MSTORE ADD SLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x28B PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0xCA8 PUSH2 0x1108 JUMP JUMPDEST PUSH2 0xCB0 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xCB8 PUSH2 0x1437 JUMP JUMPDEST PUSH2 0x1F60 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0xCDB PUSH2 0x1108 JUMP JUMPDEST PUSH2 0xCE3 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xCEB PUSH2 0x1437 JUMP JUMPDEST NUMBER SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A18 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xD17 PUSH2 0x1395 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND ISZERO PUSH2 0xD6E JUMPI PUSH1 0xFF NOT AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x8DFC202B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xD95 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xD9D PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xB89 NUMBER PUSH2 0x1645 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B80 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xDE8 PUSH2 0x10F2 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SUB PUSH2 0xE04 JUMPI PUSH2 0x2C3 SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0x15F0 JUMP JUMPDEST PUSH4 0x334BD919 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x80 PUSH2 0xE4B PUSH2 0x1108 JUMP JUMPDEST PUSH0 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH2 0xE5A DUP2 PUSH2 0x1204 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE PUSH2 0xE73 PUSH2 0x1566 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP2 PUSH1 0x2 PUSH1 0x1 DUP1 DUP4 ADD SLOAD SWAP4 ADD SLOAD SWAP2 ADD SLOAD SWAP2 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH2 0xEA9 DUP2 PUSH2 0x1204 JUMP JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 DUP4 MSTORE PUSH1 0x40 DUP2 ADD SWAP4 DUP5 MSTORE ADD SWAP3 DUP4 MSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 MSTORE MLOAD PUSH1 0x20 DUP5 ADD MSTORE MLOAD PUSH1 0x40 DUP4 ADD MSTORE MLOAD PUSH1 0x60 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x2C3 PUSH1 0x4 CALLDATALOAD PUSH2 0xEF7 PUSH2 0x10F2 JUMP JUMPDEST SWAP1 PUSH2 0xF04 PUSH2 0x2B9 DUP3 PUSH2 0x129D JUMP JUMPDEST PUSH2 0x15AA JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0xBED PUSH1 0x4 CALLDATALOAD PUSH2 0x129D JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x60 PUSH2 0xF41 PUSH2 0x125E JUMP JUMPDEST PUSH2 0xF7A PUSH2 0xF4C PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x6 PUSH2 0xF68 DUP3 SLOAD PUSH0 DUP1 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x127C JUMP JUMPDEST SWAP2 DUP3 DUP6 MSTORE ADD SLOAD SWAP1 DUP2 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x127C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x28B PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x219 JUMPI PUSH2 0xFD0 PUSH1 0x20 SWAP2 PUSH2 0xFCB PUSH2 0x134C JUMP JUMPDEST PUSH2 0x1181 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xFF3 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xFFB PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2FC NUMBER PUSH1 0x4 CALLDATALOAD PUSH2 0x146C JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0x219 JUMPI PUSH1 0x20 SWAP2 PUSH4 0x1E768DFF PUSH1 0xE2 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x10E1 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x10D0 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x10BF JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x1060 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1CF1473B PUSH1 0xE3 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x107A JUMPI JUMPDEST POP DUP4 PUSH2 0x1059 JUMP JUMPDEST PUSH4 0x5A05180F PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x1094 JUMPI JUMPDEST POP DUP4 PUSH2 0x1073 JUMP JUMPDEST PUSH4 0x7965DB0B PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x10AE JUMPI JUMPDEST POP DUP4 PUSH2 0x108D JUMP JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0x10A7 JUMP JUMPDEST PUSH4 0x2461E317 PUSH1 0xE1 SHL DUP2 EQ SWAP2 POP PUSH2 0x1052 JUMP JUMPDEST PUSH4 0xA896602D PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x104B JUMP JUMPDEST PUSH4 0x50D8541D PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x1044 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x219 JUMPI JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x219 JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1141 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1134 JUMP JUMPDEST SWAP1 PUSH1 0x3 DUP3 LT ISZERO PUSH2 0x116D JUMPI MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x7 PUSH2 0x118B PUSH2 0x1566 JUMP JUMPDEST ADD SWAP1 PUSH1 0xFF DUP3 SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x116D JUMPI PUSH1 0x3 DUP3 LT ISZERO PUSH2 0x116D JUMPI DUP1 DUP3 EQ PUSH2 0x11FC JUMPI PUSH2 0x11F6 PUSH1 0x40 SWAP3 PUSH32 0x3F59746E46BFB9AF931035055D53B82D1B70968466065162B7DBF8E998AEE629 SWAP5 PUSH1 0xFF NOT DUP2 SLOAD AND PUSH1 0xFF DUP4 AND OR SWAP1 SSTORE PUSH2 0x11EC DUP5 MLOAD DUP1 SWAP5 PUSH2 0x1160 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1160 JUMP JUMPDEST LOG1 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x64B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x64B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x64B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x126B DUP3 PUSH2 0x1220 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1289 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1289 JUMPI JUMP JUMPDEST DUP1 SLOAD ISZERO PUSH2 0x12DA JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x12DA JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x40 SHL DUP4 LT ISZERO PUSH2 0x64B JUMPI DUP3 PUSH2 0x1326 SWAP2 PUSH1 0x1 PUSH2 0x134A SWAP6 ADD DUP2 SSTORE PUSH2 0x12EE JUMP JUMPDEST SWAP1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x3 SWAP4 SWAP1 SWAP4 SHL DUP4 DUP2 SHL NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP1 SWAP3 SHL OR SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1371 JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF133 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x13CD JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B80 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1421 JUMPI POP JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TLOAD PUSH2 0x145D JUMPI PUSH1 0x1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE JUMP JUMPDEST PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1474 PUSH2 0x1566 JUMP JUMPDEST DUP1 SLOAD SWAP3 DUP4 DUP4 EQ PUSH2 0x155D JUMPI PUSH2 0x1486 PUSH2 0x1FDA JUMP JUMPDEST LT PUSH2 0x1556 JUMPI PUSH2 0x14BB PUSH1 0x5 DUP3 ADD PUSH2 0x14B5 PUSH2 0x149E DUP3 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F60 JUMP JUMPDEST POP PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x14E8 DUP2 DUP6 PUSH2 0x12BB JUMP JUMPDEST DUP6 GT PUSH2 0x153C JUMPI SWAP3 DUP5 SWAP3 DUP2 SWAP3 PUSH2 0x1529 PUSH32 0x2925BE3E6D4B2CBCEC6C06D5060FB3B53F160410555E45EE0A1F6DC7AE9B24C0 SWAP8 PUSH2 0x1524 DUP6 PUSH1 0x40 SWAP10 PUSH2 0x12BB JUMP JUMPDEST PUSH2 0x127C JUMP JUMPDEST SWAP1 SSTORE SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 PUSH1 0x1 SWAP1 JUMP JUMPDEST DUP4 DUP6 PUSH4 0x2C421F2B PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH32 0x109CDEB08B6FCB52A0F8A35AF1BF023AFDACDC6E602B08424B2171D0F4FA3CD4 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x159F PUSH1 0x40 DUP4 PUSH2 0x123C JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x15B4 DUP3 DUP3 PUSH2 0x2232 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x15BF JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x15EC SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2960 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x15FA DUP3 DUP3 PUSH2 0x22D0 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x1605 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x15EC SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x29C3 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1289 JUMPI JUMP JUMPDEST PUSH2 0x164D PUSH2 0x236C JUMP JUMPDEST PUSH2 0x1655 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP2 SLOAD DUP4 DUP2 GT ISZERO DUP1 PUSH2 0x1A0E JUMPI JUMPDEST ISZERO PUSH2 0x19F4 JUMPI PUSH2 0x1675 SWAP1 DUP5 PUSH2 0x127C JUMP JUMPDEST SWAP2 DUP3 ISZERO PUSH2 0x19EE JUMPI DUP4 DUP3 SLOAD SWAP2 PUSH2 0x168A DUP6 DUP5 PUSH2 0x1632 JUMP JUMPDEST SWAP3 PUSH1 0x3 DUP6 ADD SLOAD SWAP5 DUP5 DUP7 LT PUSH0 EQ PUSH2 0x19E7 JUMPI PUSH2 0x16A4 DUP7 DUP7 PUSH2 0x127C JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x174A JUMPI JUMPDEST POP POP POP SSTORE PUSH2 0x16B8 PUSH2 0x1566 JUMP JUMPDEST SWAP1 NUMBER DUP6 SUB PUSH2 0x172C JUMPI PUSH0 SWAP4 JUMPDEST DUP5 DUP5 SUB PUSH2 0x16D6 JUMPI JUMPDEST POP POP PUSH1 0x3 SWAP2 POP ADD SSTORE SWAP1 JUMP JUMPDEST PUSH2 0x16E0 SWAP1 DUP7 PUSH2 0x127C JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1289 JUMPI PUSH32 0x1A45018BDAB6039C806FAC73D617B3BC5C6A2A0F22F6F90D2CA202B083087F99 PUSH1 0x60 PUSH1 0x3 SWAP6 DUP9 SWAP5 PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE DUP9 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE LOG3 PUSH0 DUP1 PUSH2 0x16CB JUMP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1744 JUMPI PUSH2 0x173E DUP2 DUP5 PUSH2 0x127C JUMP JUMPDEST SWAP4 PUSH2 0x16C3 JUMP JUMPDEST PUSH0 PUSH2 0x173E JUMP JUMPDEST PUSH2 0x1796 SWAP3 SWAP4 SWAP5 POP PUSH2 0x178E SWAP1 PUSH2 0x1761 PUSH1 0x5 DUP5 ADD PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x6 SWAP1 SWAP4 ADD SLOAD SWAP1 PUSH2 0x127C JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH2 0x127C JUMP JUMPDEST SWAP1 PUSH2 0x17A1 DUP7 DUP4 PUSH2 0x1632 JUMP JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x17BF JUMPI POP DUP7 DUP1 SWAP4 SWAP3 PUSH2 0x17B7 SWAP3 PUSH2 0x2553 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x16AC JUMP JUMPDEST SWAP7 SWAP6 SWAP4 SWAP3 SWAP5 SWAP1 SWAP8 SWAP2 POP PUSH2 0x17D0 PUSH2 0x1566 JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP5 ADD SLOAD SWAP6 PUSH1 0x1 DUP8 ADD DUP1 SWAP8 GT PUSH2 0x1289 JUMPI PUSH1 0x1 SWAP10 SWAP9 PUSH1 0x4 PUSH1 0x5 DUP8 ADD SWAP7 ADD SWAP11 JUMPDEST DUP7 SLOAD DUP2 LT ISZERO PUSH2 0x18F7 JUMPI PUSH2 0x1803 DUP2 DUP9 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP15 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP10 SWAP1 DUP1 PUSH2 0x183A JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP ADD PUSH2 0x17F0 JUMP JUMPDEST SWAP1 PUSH2 0x1844 SWAP2 PUSH2 0x1632 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP1 DUP4 EXTCODESIZE ISZERO PUSH2 0x219 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x18EC JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 DUP16 SWAP5 SWAP4 DUP16 SWAP5 SWAP8 PUSH1 0x1 SWAP9 PUSH2 0x18DC JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 DUP9 PUSH0 PUSH2 0x182E JUMP JUMPDEST PUSH0 PUSH2 0x18E6 SWAP2 PUSH2 0x123C JUMP JUMPDEST PUSH0 PUSH2 0x18CD JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP PUSH2 0x190E SWAP2 SWAP5 SWAP11 POP DUP9 SWAP10 SWAP9 SWAP6 SWAP3 SWAP7 SWAP9 SWAP8 SWAP4 SWAP8 PUSH2 0x127C JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x191D JUMPI JUMPDEST POP POP POP PUSH2 0x17B7 JUMP JUMPDEST PUSH2 0x1926 SWAP1 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x1915 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 POP SWAP1 SWAP2 DUP5 EXTCODESIZE ISZERO PUSH2 0x219 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP5 PUSH0 SWAP1 DUP7 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x18EC JUMPI PUSH1 0x20 DUP11 SWAP7 SWAP5 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP3 DUP9 SWAP7 PUSH2 0x19D7 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 PUSH0 DUP1 DUP1 PUSH2 0x1915 JUMP JUMPDEST PUSH0 PUSH2 0x19E1 SWAP2 PUSH2 0x123C JUMP JUMPDEST PUSH0 PUSH2 0x19C7 JUMP JUMPDEST PUSH0 SWAP2 PUSH2 0x16A6 JUMP JUMPDEST POP POP POP SWAP1 JUMP JUMPDEST DUP4 PUSH4 0xA0D2B9DB PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE NUMBER PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST POP NUMBER DUP5 GT ISZERO PUSH2 0x1666 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1A25 PUSH0 DUP5 DUP5 PUSH2 0x26BA JUMP JUMPDEST ISZERO PUSH2 0x11FC JUMPI PUSH2 0x1A32 PUSH2 0x1FDA JUMP JUMPDEST LT PUSH2 0x1CC2 JUMPI PUSH2 0x1A40 DUP2 PUSH2 0x1F60 JUMP JUMPDEST POP PUSH2 0x1A57 PUSH2 0x149E PUSH1 0x5 PUSH2 0x1A51 PUSH2 0x1566 JUMP JUMPDEST ADD PUSH2 0x12C8 JUMP JUMPDEST POP PUSH2 0x1A60 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH2 0x1A85 PUSH1 0x5 DUP4 ADD PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SLOAD PUSH2 0x1AC4 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x1AB9 SWAP2 PUSH2 0x12BB JUMP JUMPDEST SWAP5 ADD SWAP4 DUP5 SLOAD SWAP1 PUSH2 0x12BB JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x1CAC JUMPI SWAP2 PUSH1 0x6 SWAP2 PUSH2 0x1ADC DUP8 PUSH2 0x1AEA SWAP6 PUSH2 0x127C JUMP JUMPDEST SWAP1 SSTORE ADD SWAP2 DUP3 SLOAD SWAP1 SLOAD SWAP1 PUSH2 0x127C JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x1AF4 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CA5 JUMPI JUMPDEST ISZERO PUSH2 0x1B83 JUMPI SWAP2 PUSH0 PUSH1 0x1 DUP4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP6 DUP5 PUSH1 0x40 SWAP7 SLOAD ISZERO DUP1 PUSH2 0x1B78 JUMPI JUMPDEST PUSH2 0x1B65 JUMPI JUMPDEST POP POP DUP7 DUP2 SSTORE ADD SSTORE JUMPDEST DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH0 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 LOG2 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1B71 SWAP3 ADD PUSH2 0x1303 JUMP JUMPDEST PUSH0 DUP5 PUSH2 0x1B42 JUMP JUMPDEST POP DUP4 DUP4 ADD SLOAD ISZERO PUSH2 0x1B3D JUMP JUMPDEST POP POP SWAP1 PUSH2 0x1B8E PUSH2 0x1566 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x5 DUP5 ADD SWAP1 PUSH1 0x1 JUMPDEST DUP3 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0x1C87 JUMPI DUP5 PUSH2 0x1BB7 DUP4 DUP7 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1BD7 JUMPI POP PUSH1 0x1 ADD PUSH2 0x1BA2 JUMP JUMPDEST SWAP1 PUSH0 SWAP7 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x1289 JUMPI PUSH2 0x1326 PUSH2 0x1BF9 PUSH2 0x1C12 SWAP4 DUP8 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP7 PUSH2 0x12EE JUMP JUMPDEST DUP3 SLOAD SWAP1 DUP2 ISZERO PUSH2 0x1C73 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP5 PUSH1 0x40 SWAP5 PUSH1 0x4 SWAP4 PUSH0 NOT ADD SWAP1 PUSH2 0x1C56 PUSH2 0x1C41 DUP4 DUP4 PUSH2 0x12EE JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST SSTORE PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 DUP4 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE PUSH2 0x1B4A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP SWAP1 POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP3 SWAP4 POP PUSH1 0x40 SWAP2 POP PUSH2 0x1B4A JUMP JUMPDEST POP PUSH0 PUSH2 0x1B18 JUMP JUMPDEST DUP6 PUSH4 0x162930E3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x1CD7 DUP3 DUP5 DUP7 PUSH2 0x26BA JUMP JUMPDEST ISZERO PUSH2 0x155D JUMPI PUSH2 0x1CE4 PUSH2 0x1FDA JUMP JUMPDEST LT PUSH2 0x1556 JUMPI PUSH2 0x1CF2 DUP4 PUSH2 0x1F60 JUMP JUMPDEST POP PUSH2 0x1D03 PUSH2 0x149E PUSH1 0x5 PUSH2 0x1A51 PUSH2 0x1566 JUMP JUMPDEST POP PUSH2 0x1D0C PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH2 0x1D31 PUSH1 0x5 DUP4 ADD PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SLOAD PUSH2 0x1D65 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x1AB9 SWAP2 PUSH2 0x12BB JUMP JUMPDEST DUP1 PUSH2 0x1D70 DUP7 DUP9 PUSH2 0x12BB JUMP JUMPDEST GT PUSH2 0x1D7B DUP7 DUP9 PUSH2 0x12BB JUMP JUMPDEST SWAP1 PUSH2 0x1F4B JUMPI POP PUSH1 0x6 PUSH2 0x1DAD SWAP4 DUP7 SWAP4 PUSH2 0x1D9A DUP6 PUSH2 0x1524 DUP12 PUSH2 0x1DA8 SWAP8 PUSH2 0x127C JUMP JUMPDEST SWAP1 SSTORE ADD SWAP4 DUP5 SLOAD SWAP1 SLOAD SWAP1 PUSH2 0x127C JUMP JUMPDEST PUSH2 0x12BB JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x1DB7 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F42 JUMPI JUMPDEST ISZERO PUSH2 0x1E47 JUMPI SWAP2 DUP1 PUSH1 0x1 DUP4 PUSH1 0x40 SWAP6 DUP9 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP9 SWAP10 SWAP7 SLOAD ISZERO DUP1 PUSH2 0x1E3C JUMPI JUMPDEST PUSH2 0x1E29 JUMPI JUMPDEST POP POP DUP8 DUP2 SSTORE ADD SSTORE JUMPDEST DUP3 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 LOG2 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1E35 SWAP3 ADD PUSH2 0x1303 JUMP JUMPDEST PUSH0 DUP6 PUSH2 0x1E07 JUMP JUMPDEST POP DUP4 DUP4 ADD SLOAD ISZERO PUSH2 0x1E02 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x1E52 PUSH2 0x1566 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 PUSH1 0x5 DUP6 ADD SWAP2 PUSH1 0x1 JUMPDEST DUP4 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0x1F23 JUMPI DUP6 PUSH2 0x1E7B DUP4 DUP8 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E9B JUMPI POP PUSH1 0x1 ADD PUSH2 0x1E66 JUMP JUMPDEST SWAP1 PUSH0 SWAP8 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x1289 JUMPI PUSH2 0x1326 PUSH2 0x1EBE PUSH2 0x1ED7 SWAP4 DUP9 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP8 PUSH2 0x12EE JUMP JUMPDEST DUP4 SLOAD SWAP1 DUP2 ISZERO PUSH2 0x1C73 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP6 PUSH1 0x40 SWAP6 PUSH1 0x4 SWAP4 PUSH0 NOT ADD SWAP1 PUSH2 0x1F06 PUSH2 0x1C41 DUP4 DUP4 PUSH2 0x12EE JUMP JUMPDEST SSTORE PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 DUP5 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE PUSH2 0x1E0F JUMP JUMPDEST POP POP SWAP1 SWAP2 POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP4 SWAP5 POP PUSH1 0x40 SWAP3 POP PUSH2 0x1E0F JUMP JUMPDEST POP DUP3 ISZERO ISZERO PUSH2 0x1DDB JUMP JUMPDEST PUSH4 0x162930E3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1FBD JUMPI PUSH1 0x4 PUSH2 0x1F79 PUSH2 0x1566 JUMP JUMPDEST ADD DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD DUP1 SLOAD NUMBER GT ISZERO PUSH2 0x1FD3 JUMPI NUMBER SWAP1 SSTORE DUP1 EXTCODESIZE ISZERO PUSH2 0x219 JUMPI PUSH0 DUP1 SWAP2 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH4 0x1EFC6B41 PUSH1 0xE1 SHL DUP4 MSTORE GAS CALL DUP1 ISZERO PUSH2 0x18EC JUMPI PUSH2 0x1FC3 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1FCD SWAP2 PUSH2 0x123C JUMP JUMPDEST PUSH0 PUSH2 0x1FBD JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x1FE2 PUSH2 0x1566 JUMP JUMPDEST PUSH2 0x1FEA PUSH2 0x236C JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH2 0x201D JUMPI PUSH1 0x3 ADD SLOAD ISZERO PUSH2 0x2015 JUMPI PUSH2 0x2012 NUMBER PUSH2 0x1645 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2012 PUSH2 0x2806 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x202C PUSH2 0x1566 JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 ADD SWAP1 PUSH2 0x203B DUP3 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP7 PUSH1 0x3 SWAP4 SWAP1 SWAP4 SHL SWAP2 SWAP1 SWAP2 SHR AND SWAP4 SWAP1 DUP6 DUP6 EQ PUSH2 0x218F JUMPI DUP4 SLOAD PUSH1 0x1 JUMPDEST DUP2 DUP2 LT PUSH2 0x2152 JUMPI POP POP PUSH2 0x2073 PUSH2 0x1FDA JUMP JUMPDEST LT PUSH2 0x2149 JUMPI PUSH1 0x4 PUSH2 0x20AC SWAP2 PUSH2 0x2087 DUP7 PUSH2 0x1F60 JUMP JUMPDEST POP PUSH2 0x2091 DUP5 PUSH2 0x1F60 JUMP JUMPDEST POP ADD SWAP2 DUP6 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH2 0x1326 PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP5 PUSH2 0x12C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP4 MSTORE SWAP2 KECCAK256 SWAP1 DUP1 DUP3 SUB PUSH2 0x212B JUMPI JUMPDEST POP POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE DUP4 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SSTORE PUSH31 0xF06471E88E0BC1DB6B6126EFDB09F80B597E6DDC145FF0DCABD12AFAB4EC57 PUSH0 DUP1 LOG3 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SWAP3 SLOAD DUP5 SSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 DUP6 ADD SSTORE ADD SLOAD SWAP2 ADD SSTORE PUSH0 DUP1 PUSH2 0x20D2 JUMP JUMPDEST POP POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST DUP8 PUSH2 0x215D DUP3 DUP9 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x217C JUMPI PUSH1 0x1 ADD PUSH2 0x2062 JUMP JUMPDEST DUP8 PUSH4 0xF158185D PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x222D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP2 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1CC2 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1CC2 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x2374 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SWAP1 DUP2 SLOAD NUMBER DUP2 EQ PUSH2 0x254E JUMPI PUSH2 0x238C DUP2 NUMBER PUSH2 0x127C JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1289 JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD SWAP1 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND DUP1 ISZERO PUSH2 0x2545 JUMPI JUMPDEST PUSH2 0x24EA JUMPI JUMPDEST POP POP NUMBER SWAP1 SSTORE PUSH1 0x6 DUP3 ADD SLOAD DUP1 PUSH2 0x23D3 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0xFF PUSH1 0x7 DUP5 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x116D JUMPI PUSH1 0x2 DUP2 SUB PUSH2 0x2496 JUMPI POP POP PUSH1 0x5 DUP3 ADD DUP1 SLOAD SWAP4 PUSH1 0x4 SWAP1 SWAP4 ADD SWAP3 SWAP1 PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x2415 JUMPI POP POP POP POP POP POP JUMPDEST PUSH0 DUP1 DUP1 DUP1 PUSH2 0x23CD JUMP JUMPDEST DUP1 PUSH2 0x2422 PUSH1 0x1 SWAP3 DUP5 PUSH2 0x12EE JUMP JUMPDEST DUP4 DUP1 PUSH1 0xA0 SHL SUB SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SHR AND DUP3 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE DUP7 PUSH1 0x20 MSTORE DUP6 DUP4 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD DUP7 DUP2 PUSH2 0x2457 JUMPI JUMPDEST POP POP POP POP ADD PUSH2 0x23FE JUMP JUMPDEST PUSH2 0x2460 SWAP2 PUSH2 0x1632 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH32 0xA34DB09D4126DD8DCD1D29F3DF65C01DCAC405127546E380ADD77FEDCA459BA7 PUSH1 0x20 NUMBER SWAP5 LOG4 PUSH0 DUP6 DUP2 DUP7 PUSH2 0x244D JUMP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 EQ PUSH2 0x24AC JUMPI JUMPDEST POP POP POP PUSH2 0x240C JUMP JUMPDEST PUSH2 0x24B5 SWAP2 PUSH2 0x1632 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0xCEF44CE1A1FC7CA1F3078DAF79D3B60646D0E751BC72A69BFF12F66C4AEF3B8D PUSH1 0x20 NUMBER SWAP4 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x24A4 JUMP JUMPDEST PUSH2 0x2501 PUSH2 0x24FB DUP8 PUSH1 0x6 DUP9 ADD SLOAD PUSH2 0x1632 JUMP JUMPDEST DUP4 PUSH2 0x12BB JUMP JUMPDEST DUP1 SWAP2 SSTORE DUP1 DUP3 SUB ISZERO PUSH2 0x23BD JUMPI PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH32 0x539CE444A515B8AA8769802297761FBEC80B5B543C617714BF5E0611CF669DB PUSH1 0x40 NUMBER SWAP4 LOG3 PUSH0 DUP1 PUSH2 0x23BD JUMP JUMPDEST POP DUP2 ISZERO ISZERO PUSH2 0x23B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x255E PUSH2 0x1566 JUMP JUMPDEST SWAP3 DUP1 ISZERO DUP1 DUP1 ISZERO PUSH2 0x26B2 JUMPI JUMPDEST PUSH2 0x26AB JUMPI PUSH1 0x1 DUP6 ADD SLOAD SWAP3 PUSH1 0x1 DUP5 ADD DUP1 SWAP5 GT PUSH2 0x1289 JUMPI PUSH1 0x4 DUP7 ADD SWAP7 SWAP6 PUSH1 0x5 ADD PUSH1 0x1 JUMPDEST DUP2 SLOAD DUP2 LT ISZERO PUSH2 0x26A0 JUMPI PUSH2 0x259D DUP2 DUP4 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP6 SWAP1 DUP1 PUSH2 0x25D4 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP ADD PUSH2 0x258A JUMP JUMPDEST PUSH2 0x25DE SWAP1 DUP7 PUSH2 0x1632 JUMP JUMPDEST SWAP1 PUSH2 0x268C JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP1 DUP8 SWAP1 DIV DUP4 EXTCODESIZE ISZERO PUSH2 0x219 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x18EC JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 DUP12 SWAP4 PUSH1 0x1 SWAP8 DUP15 SWAP7 PUSH2 0x267C JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 DUP5 PUSH0 PUSH2 0x25C8 JUMP JUMPDEST PUSH0 PUSH2 0x2686 SWAP2 PUSH2 0x123C JUMP JUMPDEST PUSH0 PUSH2 0x266D JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP1 POP JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 DUP3 ISZERO PUSH2 0x27F7 JUMPI PUSH2 0x26D3 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD PUSH2 0x26FD PUSH2 0x26E3 DUP3 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 EQ SWAP2 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x27E5 JUMPI POP PUSH1 0x4 SWAP1 DUP5 PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 DUP3 SLOAD EQ SWAP2 DUP3 PUSH2 0x27D7 JUMPI JUMPDEST POP POP PUSH2 0x1556 JUMPI ISZERO SWAP1 DUP2 ISZERO SWAP2 PUSH2 0x27CD JUMPI JUMPDEST POP PUSH2 0x274A JUMPI POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 DUP6 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x18EC JUMPI PUSH0 SWAP2 PUSH2 0x2792 JUMPI JUMPDEST POP PUSH2 0x1FBD JUMPI PUSH4 0xA5FE8615 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x27C5 JUMPI JUMPDEST DUP2 PUSH2 0x27AD PUSH1 0x20 SWAP4 DUP4 PUSH2 0x123C JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x219 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x219 JUMPI PUSH0 PUSH2 0x277B JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x27A0 JUMP JUMPDEST SWAP1 POP ISZERO ISZERO PUSH0 PUSH2 0x273F JUMP JUMPDEST PUSH1 0x1 ADD SLOAD EQ SWAP1 POP DUP3 PUSH0 PUSH2 0x272F JUMP JUMPDEST PUSH4 0xFDA6C187 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x22A4EC7B PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x280E PUSH2 0x1566 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP3 SLOAD SWAP1 PUSH2 0x2821 DUP3 NUMBER PUSH2 0x127C JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x2959 JUMPI PUSH1 0x1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x1289 JUMPI PUSH0 SWAP5 SWAP4 PUSH1 0x4 PUSH1 0x5 DUP4 ADD SWAP3 ADD SWAP6 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x294C JUMPI PUSH2 0x2853 DUP2 DUP5 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x2943 JUMPI PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE DUP8 PUSH1 0x20 MSTORE DUP5 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 PUSH2 0x2894 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP JUMPDEST ADD PUSH2 0x2840 JUMP JUMPDEST SWAP1 PUSH2 0x289E SWAP2 PUSH2 0x1632 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x219 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x18EC JUMPI PUSH1 0x1 SWAP5 DUP10 SWAP3 PUSH2 0x2933 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 NUMBER SWAP5 LOG4 DUP5 PUSH0 PUSH2 0x2887 JUMP JUMPDEST PUSH0 PUSH2 0x293D SWAP2 PUSH2 0x123C JUMP JUMPDEST PUSH0 PUSH2 0x2912 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x288E JUMP JUMPDEST POP SWAP5 POP POP POP POP NUMBER SWAP1 SSTORE NUMBER SWAP1 JUMP JUMPDEST POP SWAP1 SWAP3 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH0 EQ PUSH2 0x1556 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0x64B JUMPI PUSH2 0x29B0 PUSH2 0x299A DUP3 PUSH1 0x1 DUP8 SWAP5 ADD DUP6 SSTORE DUP5 PUSH2 0x12EE JUMP JUMPDEST DUP2 SWAP4 SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP2 DUP3 SHL SWAP2 PUSH0 NOT SWAP1 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE SLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP2 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0x2A6C JUMPI PUSH0 NOT DUP2 ADD DUP2 DUP2 GT PUSH2 0x1289 JUMPI DUP3 SLOAD PUSH0 NOT DUP2 ADD SWAP2 SWAP1 DUP3 GT PUSH2 0x1289 JUMPI DUP2 DUP2 SUB PUSH2 0x2A37 JUMPI JUMPDEST POP POP POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x1C73 JUMPI PUSH0 NOT ADD SWAP1 PUSH2 0x2A18 DUP3 DUP3 PUSH2 0x12EE JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE SSTORE PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x2A57 PUSH2 0x2A47 PUSH2 0x299A SWAP4 DUP7 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR SWAP3 DUP4 SWAP3 DUP7 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SSTORE PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x29FF JUMP JUMPDEST POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 SHR AND ISZERO PUSH2 0x2A90 JUMPI JUMP JUMPDEST PUSH4 0x1AFCD79F PUSH1 0xE3 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID 0xBD PUSH26 0xB86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E12 SWAP16 SIGNEXTEND STOP SELFDESTRUCT 0xC1 0xF6 INVALID 0x24 PUSH3 0x1CE81E 0xC5 DUP3 PUSH29 0xAF0253CADB74709B061630E6B55E8237170593200075E09417C5070057 0xDF RETURNDATACOPY 0xAF JUMPF 0x54D MSTORE STATICCALL SIGNEXTEND 0x2A DUP8 0xD6 BLOBBASEFEE 0x23 MCOPY NOT PUSH26 0x63B615AEDEE8030C56D855D8DF534C916B78EAC3522E5FAFD59F BASEFEE PUSH26 0x9C4A97D42E80F6E08989607935BD0AE54BC31F548C14DBA4D37C TLOAD PUSH5 0xB3F8CA900C 0xB4 PUSH9 0xFB8ABD54D5894F5502 0xDD PUSH28 0xC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B6268 STOP 0xCD MCOPY DATALOADN 0x5C6E XOR PUSH31 0x77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300139C2898040E CALL PUSH10 0x10DC9F44DC697DF79363 0xDA PUSH23 0x7D8BC92F2E310312B816E46D9B779B17422D0DF9222301 DUP12 ORIGIN 0xB4 DATALOADN 0xFA46 RJUMP 0x7172 RETURNDATASIZE PUSH9 0x17E2486D003BECC55F STOP SHL 0xD3 CREATE 0xD2 CALL STOP BYTE DUP6 PUSH14 0x81215CEB86C548BDBC3BF52480A0 DUP10 PUSH25 0xF8C3EA6E2BD421F0C57E16840DF040F15088DC2F81FE391C39 0x23 0xBE 0xC7 RETURNDATACOPY 0x23 0xA9 PUSH7 0x2EFC9C229C6A00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 JUMPI 0xA5 RETF 0xC6 0xD8 0x4F 0x22 GASLIMIT DUP6 SWAPN 0x9D JUMPI CALLER 0x25 RJUMPI 0x67FE PUSH19 0x8FA434F45FCA45FC71E3868F7264736F6C6343 STOP ADDMOD 0x21 STOP CALLER CREATE 0xC5 PUSH31 0x16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A000000 ","sourceMap":"9256:54785:35:-:0;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;4199:24:36;;9256:54785:35;;4267:37:36;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;7894:76:15;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;7983:34:15;7979:146;;-1:-1:-1;9256:54785:35;;;;;;;;4267:37:36;9256:54785:35;;;;;;;;;;;;;;;;;;;;;7979:146:15;-1:-1:-1;;;;;;9256:54785:35;-1:-1:-1;;;;;9256:54785:35;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;8085:29:15;;9256:54785:35;;8085:29:15;7979:146;;;7894:76;7936:23;;;-1:-1:-1;7936:23:15;;-1:-1:-1;7936:23:15;9256:54785:35;;;;-1:-1:-1;9256:54785:35;;-1:-1:-1;9256:54785:35;;-1:-1:-1;9256:54785:35;;;;;;-1:-1:-1;9256:54785:35;;;;;-1:-1:-1;9256:54785:35"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":4360,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_t_address":{"entryPoint":4338,"id":null,"parameterSlots":0,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_address_dyn":{"entryPoint":4382,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_enum_SelfMintingEventMode":{"entryPoint":4448,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_Allocation":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_struct_struct_Allocation":{"entryPoint":4702,"id":null,"parameterSlots":0,"returnSlots":1},"array_push_from_address_to_array_address_dyn_storage_ptr":{"entryPoint":4867,"id":null,"parameterSlots":2,"returnSlots":0},"checked_add_uint256":{"entryPoint":4795,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":5682,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":4732,"id":null,"parameterSlots":2,"returnSlots":1},"constant_ISSUANCE_ALLOCATOR_STORAGE_LOCATION":{"entryPoint":5478,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":4668,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_18276":{"entryPoint":4612,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_18287":{"entryPoint":4640,"id":null,"parameterSlots":1,"returnSlots":0},"fun__checkRole":{"entryPoint":4940,"id":587,"parameterSlots":0,"returnSlots":0},"fun__grantRole":{"entryPoint":5546,"id":1005,"parameterSlots":2,"returnSlots":1},"fun__revokeRole":{"entryPoint":5616,"id":1045,"parameterSlots":2,"returnSlots":1},"fun__setTargetAllocation":{"entryPoint":7368,"id":10153,"parameterSlots":4,"returnSlots":1},"fun_add":{"entryPoint":10592,"id":6810,"parameterSlots":2,"returnSlots":1},"fun_advanceSelfMintingBlock":{"entryPoint":9068,"id":8933,"parameterSlots":0,"returnSlots":0},"fun_checkInitializing":{"entryPoint":10868,"id":1222,"parameterSlots":0,"returnSlots":0},"fun_checkRole":{"entryPoint":5105,"id":587,"parameterSlots":1,"returnSlots":0},"fun_checkRole_18280":{"entryPoint":5013,"id":587,"parameterSlots":0,"returnSlots":0},"fun_distributeIssuance":{"entryPoint":8154,"id":8967,"parameterSlots":0,"returnSlots":1},"fun_distributePendingIssuance":{"entryPoint":5701,"id":9256,"parameterSlots":1,"returnSlots":1},"fun_distributePendingProportionally":{"entryPoint":9555,"id":9530,"parameterSlots":3,"returnSlots":0},"fun_getRoleAdmin":{"entryPoint":4765,"id":629,"parameterSlots":1,"returnSlots":1},"fun_grantRole":{"entryPoint":8754,"id":773,"parameterSlots":2,"returnSlots":1},"fun_grantRole_18305":{"entryPoint":8602,"id":773,"parameterSlots":1,"returnSlots":1},"fun_nonReentrantBefore":{"entryPoint":5175,"id":2852,"parameterSlots":0,"returnSlots":0},"fun_notifyTarget":{"entryPoint":8032,"id":9779,"parameterSlots":1,"returnSlots":1},"fun_performNormalDistribution":{"entryPoint":10246,"id":9077,"parameterSlots":0,"returnSlots":1},"fun_remove":{"entryPoint":10691,"id":6894,"parameterSlots":2,"returnSlots":1},"fun_revokeRole":{"entryPoint":8912,"id":819,"parameterSlots":2,"returnSlots":1},"fun_setDefaultTarget":{"entryPoint":8228,"id":10090,"parameterSlots":2,"returnSlots":1},"fun_setIssuancePerBlock":{"entryPoint":5228,"id":9667,"parameterSlots":2,"returnSlots":1},"fun_setSelfMintingEventMode_inner":{"entryPoint":4481,"id":null,"parameterSlots":1,"returnSlots":1},"fun_setTargetAllocation":{"entryPoint":6680,"id":10153,"parameterSlots":3,"returnSlots":1},"fun_validateAllocationChange":{"entryPoint":9914,"id":10243,"parameterSlots":3,"returnSlots":1},"storage_array_index_access_address_dyn":{"entryPoint":4846,"id":null,"parameterSlots":2,"returnSlots":2},"storage_array_index_access_address_dyn_":{"entryPoint":4808,"id":null,"parameterSlots":1,"returnSlots":2},"update_byte_slice_dynamic32":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_address_to_address":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":0},"update_storage_value_address_to_address_18415":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"10718":[{"length":32,"start":6214},{"length":32,"start":6465},{"length":32,"start":9701},{"length":32,"start":10400}]},"linkReferences":{},"object":"6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611009575080631156bdc114610fda57806313a7855d14610fa057806315d3b5d814610f27578063248a9ca314610f095780632f2ff15d14610ed85780633067cb4c14610e3057806332bc934c14610e1357806336568abe14610dcf578063389ed26714610da85780633af5b07314610d7d5780633f4ba83a14610cff578063443990fa14610cbd5780634887693c14610c8a57806348c3c62e14610c0457806349bdfcb014610bc75780634a1293b714610ba157806352c0e18c14610b5b5780635c975abb14610b2d57806363fe3b5614610ac4578063647b368214610a7e578063697cf32214610a4957806379d5fc5414610a265780637c92330b146109d65780638456cb591461095557806384c48422146108f557806387ee921c146108cc5780639010d07c1461087b57806391d148541461082657806393c911a8146107f8578063a217fddf146107de578063a3246ad31461075e578063c2cb354414610716578063c4d66de8146103a4578063c627b7a414610373578063ca15c8731461033d578063ccc5749014610316578063d012a15b146102c5578063d547741f1461028d578063ee56977e1461021d5763f5b541a6146101df575f80fd5b34610219575f3660031901126102195760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b5f80fd5b34610219575f3660031901126102195761023561125e565b506060610240611566565b60018101549060036002820154910154906040519261025e84611220565b83526020830152604082015261028b60405180926040809180518452602081015160208501520151910152565bf35b34610219576040366003190112610219576102c36004356102ac6110f2565b906102be6102b98261129d565b6113f1565b6115f0565b005b346102195760403660031901126102195760206102fc6102e3611108565b6102eb61134c565b6102f3611437565b60243590612024565b5f5f516020612ba05f395f51905f525d6040519015158152f35b34610219575f3660031901126102195760206040515f516020612b205f395f51905f528152f35b34610219576020366003190112610219576004355f525f516020612ac05f395f51905f52602052602060405f2054604051908152f35b346102195760403660031901126102195761038c61134c565b610394611437565b60206102fc60243560043561146c565b34610219576020366003190112610219576103bd611108565b5f516020612be05f395f51905f52549060ff8260401c16159167ffffffffffffffff81168015908161070e575b6001149081610704575b1590816106fb575b506106ec5767ffffffffffffffff1981166001175f516020612be05f395f51905f5255826106c0575b5061042e612a74565b610436612a74565b6001600160a01b0381169081156106b1575f516020612b205f395f51905f525f8181525f516020612b405f395f51905f526020527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee80480549083905561059c93929182905f516020612aa05f395f51905f529080a45f516020612b805f395f51905f525f8181525f516020612b405f395f51905f526020527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff13480545f516020612b205f395f51905f5291829055909290915f516020612aa05f395f51905f529080a47f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9295f8181525f516020612b405f395f51905f526020527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45780545f516020612b205f395f51905f5291829055909290915f516020612aa05f395f51905f529080a461219a565b61065f575b506105aa611566565b600581018054600160401b81101561064b576105cb916001820181556112ee565b81549060018060a01b039060031b1b1916905560078101600260ff198254161790556001439101556105f957005b60ff60401b195f516020612be05f395f51905f5254165f516020612be05f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b634e487b7160e01b5f52604160045260245ffd5b5f516020612b205f395f51905f525f525f516020612ac05f395f51905f526020526106aa907f955af8caaf1bb5fca493cbb01cefeb9e610a81071c268cd8b40c82100cbb956e612960565b50816105a1565b63395d053560e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f516020612be05f395f51905f525582610425565b63f92ee8a960e01b5f5260045ffd5b905015846103fc565b303b1591506103f4565b8491506103ea565b346102195760803660031901126102195760206102fc610734611108565b61073c61134c565b610744611437565b6064359060443590602435906001600160a01b0316611cc8565b34610219576020366003190112610219576004355f525f516020612ac05f395f51905f5260205260405f206040519081602082549182815201915f5260205f20905f5b8181106107c8576107c4856107b88187038261123c565b6040519182918261111e565b0390f35b82548452602090930192600192830192016107a1565b34610219575f3660031901126102195760206040515f8152f35b34610219575f36600319011261021957602060ff6007610816611566565b01541661028b6040518092611160565b346102195760403660031901126102195761083f6110f2565b6004355f525f516020612b405f395f51905f5260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610219576040366003190112610219576004355f525f516020612ac05f395f51905f5260205260206108b360243560405f206112ee565b905460405160039290921b1c6001600160a01b03168152f35b346102195760203660031901126102195760206108b360043560056108ef611566565b016112ee565b346102195760203660031901126102195761090e611108565b61091661125e565b506004610921611566565b019060018060a01b03165f52602052606060405f206001815491015461094781836112bb565b916040519261025e84611220565b34610219575f3660031901126102195761096d611395565b5f516020612b605f395f51905f525460ff81166109c75760019060ff1916175f516020612b605f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b63d93c066560e01b5f5260045ffd5b346102195760403660031901126102195760206109f1611108565b602435906109fd61134c565b6004610a07611566565b019060018060a01b03165f52825280600260405f200155604051908152f35b34610219575f366003190112610219576020610a40611566565b54604051908152f35b346102195760203660031901126102195760206102fc610a67611108565b610a6f61134c565b610a77611437565b4390612024565b346102195760603660031901126102195760206102fc610a9c611108565b610aa461134c565b610aac611437565b439060443590602435906001600160a01b0316611cc8565b34610219575f366003190112610219576005610ade611566565b016040519081602082549182815201915f5260205f20905f5b818110610b0e576107c4856107b88187038261123c565b82546001600160a01b0316845260209093019260019283019201610af7565b34610219575f36600319011261021957602060ff5f516020612b605f395f51905f5254166040519015158152f35b3461021957602036600319011261021957610b7461134c565b610b7c611437565b6020610b89600435611645565b5f5f516020612ba05f395f51905f525d604051908152f35b34610219575f3660031901126102195760206005610bbd611566565b0154604051908152f35b34610219575f366003190112610219576001610be1611566565b01544303610bf5576020435b604051908152f35b6020610bff611fda565b610bed565b3461021957602036600319011261021957610c1d611108565b610c2561125e565b506004610c30611566565b019060018060a01b03165f52602052606060405f20600260405191610c5483611220565b80548352600181015460208401520154604082015261028b60405180926040809180518452602081015160208501520151910152565b346102195760203660031901126102195760206102fc610ca8611108565b610cb061134c565b610cb8611437565b611f60565b346102195760403660031901126102195760206102fc610cdb611108565b610ce361134c565b610ceb611437565b4390602435906001600160a01b0316611a18565b34610219575f36600319011261021957610d17611395565b5f516020612b605f395f51905f525460ff811615610d6e5760ff19165f516020612b605f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b34610219575f36600319011261021957610d9561134c565b610d9d611437565b6020610b8943611645565b34610219575f3660031901126102195760206040515f516020612b805f395f51905f528152f35b3461021957604036600319011261021957610de86110f2565b336001600160a01b03821603610e04576102c3906004356115f0565b63334bd91960e11b5f5260045ffd5b34610219575f366003190112610219576020604051620f42408152f35b34610219576020366003190112610219576080610e4b611108565b5f6060604051610e5a81611204565b8281528260208201528260408201520152610e73611566565b9060018060a01b03165f526004810160205260405f208054916002600180830154930154910154916060604051610ea981611204565b858152602081019283526040810193845201928352604051938452516020840152516040830152516060820152f35b34610219576040366003190112610219576102c3600435610ef76110f2565b90610f046102b98261129d565b6115aa565b34610219576020366003190112610219576020610bed60043561129d565b34610219575f366003190112610219576060610f4161125e565b610f7a610f4c611566565b6006610f6882545f80526004840160205260405f20549061127c565b9182855201549081604085015261127c565b602082015261028b60405180926040809180518452602081015160208501520151910152565b3461021957602036600319011261021957600435600381101561021957610fd0602091610fcb61134c565b611181565b6040519015158152f35b3461021957602036600319011261021957610ff361134c565b610ffb611437565b60206102fc4360043561146c565b34610219576020366003190112610219576004359063ffffffff60e01b821680920361021957602091631e768dff60e21b81149081156110e1575b81156110d0575b81156110bf575b8115611060575b5015158152f35b631cf1473b60e31b81149150811561107a575b5083611059565b635a05180f60e01b811491508115611094575b5083611073565b637965db0b60e01b8114915081156110ae575b508361108d565b6301ffc9a760e01b149050836110a7565b632461e31760e11b81149150611052565b63a896602d60e01b8114915061104b565b6350d8541d60e01b81149150611044565b602435906001600160a01b038216820361021957565b600435906001600160a01b038216820361021957565b60206040818301928281528451809452019201905f5b8181106111415750505090565b82516001600160a01b0316845260209384019390920191600101611134565b90600382101561116d5752565b634e487b7160e01b5f52602160045260245ffd5b600761118b611566565b019060ff825416600381101561116d57600382101561116d578082146111fc576111f66040927f3f59746e46bfb9af931035055d53b82d1b70968466065162b7dbf8e998aee6299460ff1981541660ff83161790556111ec84518094611160565b6020830190611160565ba1600190565b505050600190565b6080810190811067ffffffffffffffff82111761064b57604052565b6060810190811067ffffffffffffffff82111761064b57604052565b90601f8019910116810190811067ffffffffffffffff82111761064b57604052565b6040519061126b82611220565b5f6040838281528260208201520152565b9190820391821161128957565b634e487b7160e01b5f52601160045260245ffd5b5f525f516020612b405f395f51905f52602052600160405f20015490565b9190820180921161128957565b8054156112da575f5260205f20905f90565b634e487b7160e01b5f52603260045260245ffd5b80548210156112da575f5260205f2001905f90565b80549190600160401b83101561064b578261132691600161134a950181556112ee565b9080546001600160a01b0360039390931b83811b199091169290931690921b179055565b565b335f9081525f516020612ae05f395f51905f52602052604090205460ff161561137157565b63e2517d3f60e01b5f52336004525f516020612b205f395f51905f5260245260445ffd5b335f9081527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff133602052604090205460ff16156113cd57565b63e2517d3f60e01b5f52336004525f516020612b805f395f51905f5260245260445ffd5b5f8181525f516020612b405f395f51905f526020908152604080832033845290915290205460ff16156114215750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f516020612ba05f395f51905f525c61145d5760015f516020612ba05f395f51905f525d565b633ee5aeb560e01b5f5260045ffd5b611474611566565b80549283831461155d57611486611fda565b10611556576114bb600582016114b561149e826112c8565b905460039190911b1c6001600160a01b0316611f60565b506112c8565b905460039190911b1c6001600160a01b03165f908152600482016020526040902080546114e881856112bb565b851161153c5792849281926115297f2925be3e6d4b2cbcec6c06d5060fb3b53f160410555e45ee0a1f6dc7ae9b24c097611524856040996112bb565b61127c565b90555582519182526020820152a1600190565b8385632c421f2b60e21b5f5260045260245260445260645ffd5b5050505f90565b50505050600190565b604051602081017f109cdeb08b6fcb52a0f8a35af1bf023afdacdc6e602b08424b2171d0f4fa3cd481526020825261159f60408361123c565b9051902060ff191690565b6115b48282612232565b91826115bf57505090565b5f9182525f516020612ac05f395f51905f5260205260409091206115ec916001600160a01b031690612960565b5090565b6115fa82826122d0565b918261160557505090565b5f9182525f516020612ac05f395f51905f5260205260409091206115ec916001600160a01b0316906129c3565b8181029291811591840414171561128957565b61164d61236c565b611655611566565b600181019081548381111580611a0e575b156119f457611675908461127c565b9182156119ee578382549161168a8584611632565b926003850154948486105f146119e7576116a4868661127c565b915b8261174a575b505050556116b8611566565b9043850361172c575f935b8484036116d6575b505060039150015590565b6116e0908661127c565b60018101809111611289577f1a45018bdab6039c806fac73d617b3bc5c6a2a0f22f6f90d2ca202b083087f99606060039588946040519182528860208301526040820152a35f806116cb565b828110156117445761173e818461127c565b936116c3565b5f61173e565b6117969293945061178e90611761600584016112c8565b905460039190911b1c6001600160a01b03165f90815260048401602052604090206006909301549061127c565b90549061127c565b906117a18683611632565b808210156117bf5750868093926117b792612553565b5f80806116ac565b9695939294909791506117d0611566565b9260018401549560018701809711611289576001999860046005870196019a5b86548110156118f75761180381886112ee565b905460039190911b1c6001600160a01b03165f81815260208e9052604090205490919089908061183a575b505060019150016117f0565b9061184491611632565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290833b15610219576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af19182156118ec575f516020612b005f395f51905f5260208f94938f94976001986118dc575b50604051908152a4885f61182e565b5f6118e69161123c565b5f6118cd565b6040513d5f823e3d90fd5b5061190e91949a508899989592969897939761127c565b908161191d575b5050506117b7565b611926906112c8565b905460039190911b1c6001600160a01b0316918215611915577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031694509091843b15610219576040516340c10f1960e01b81526001600160a01b038216600482015260248101849052945f908690604490829084905af19485156118ec5760208a96945f516020612b005f395f51905f529288966119d7575b50604051908152a45f8080611915565b5f6119e19161123c565b5f6119c7565b5f916116a6565b50505090565b8363a0d2b9db60e01b5f526004526024524360445260645ffd5b5043841115611666565b9091611a255f84846126ba565b156111fc57611a32611fda565b10611cc257611a4081611f60565b50611a5761149e6005611a51611566565b016112c8565b50611a60611566565b600481019060018060a01b0383165f528160205260405f2091611a85600583016112c8565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611ac491600191611ab9916112bb565b9401938454906112bb565b808611611cac5791600691611adc87611aea9561127c565b90550191825490549061127c565b9055611af4611566565b6001600160a01b0382165f9081526004820160205260409020908315801590611ca5575b15611b8357915f6001835f516020612bc05f395f51905f529584604096541580611b78575b611b65575b505086815501555b81519384525f60208501526001600160a01b031692a2600190565b6005611b719201611303565b5f84611b42565b508383015415611b3d565b505090611b8e611566565b916001600160a01b03811690600584019060015b825480821015611c875784611bb783866112ee565b905460039190911b1c6001600160a01b031614611bd75750600101611ba2565b905f96929394959619820191821161128957611326611bf9611c1293876112ee565b905460039190911b1c6001600160a01b031691866112ee565b8254908115611c73575f516020612bc05f395f51905f52946040946004935f190190611c56611c4183836112ee565b81549060018060a01b039060031b1b19169055565b555f52016020525f60028382208281558260018201550155611b4a565b634e487b7160e01b5f52603160045260245ffd5b505090505f516020612bc05f395f51905f5292935060409150611b4a565b505f611b18565b8563162930e360e11b5f5260045260245260445ffd5b50505f90565b92919091611cd78284866126ba565b1561155d57611ce4611fda565b1061155657611cf283611f60565b50611d0361149e6005611a51611566565b50611d0c611566565b600481019060018060a01b0385165f528160205260405f2091611d31600583016112c8565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611d6591600191611ab9916112bb565b80611d7086886112bb565b11611d7b86886112bb565b90611f4b57506006611dad938693611d9a856115248b611da89761127c565b90550193845490549061127c565b6112bb565b9055611db7611566565b6001600160a01b0384165f9081526004820160205260409020908315801590611f42575b15611e47579180600183604095885f516020612bc05f395f51905f52989996541580611e3c575b611e29575b505087815501555b825194855260208501526001600160a01b031692a2600190565b6005611e359201611303565b5f85611e07565b508383015415611e02565b505091611e52611566565b926001600160a01b03821691600585019160015b835480821015611f235785611e7b83876112ee565b905460039190911b1c6001600160a01b031614611e9b5750600101611e66565b905f9792939495969719820191821161128957611326611ebe611ed793886112ee565b905460039190911b1c6001600160a01b031691876112ee565b8354908115611c73575f516020612bc05f395f51905f52956040956004935f190190611f06611c4183836112ee565b555f52016020525f60028482208281558260018201550155611e0f565b50509091505f516020612bc05f395f51905f5293945060409250611e0f565b50821515611ddb565b63162930e360e11b5f5260045260245260445ffd5b6001600160a01b03168015611fbd576004611f79611566565b01815f52602052600260405f20018054431115611fd357439055803b15610219575f8091600460405180948193631efc6b4160e11b83525af180156118ec57611fc3575b50600190565b5f611fcd9161123c565b5f611fbd565b5050600190565b611fe2611566565b611fea61236c565b60ff5f516020612b605f395f51905f52541661201d5760030154156120155761201243611645565b90565b612012612806565b6001015490565b61202c611566565b90600582019061203b826112c8565b90546001600160a01b038381169660039390931b9190911c16939085851461218f57835460015b818110612152575050612073611fda565b106121495760046120ac9161208786611f60565b5061209184611f60565b500191855f5282602052611326600260405f200154946112c8565b6001600160a01b0383165f9081526020829052604080822086835291209080820361212b575b505060018060a01b0383165f52806020525f6002604082208281558260018201550155835f52602052600260405f2001557ef06471e88e0bc1db6b6126efdb09f80b597e6ddc145ff0dcabd12afab4ec575f80a3600190565b60028181925484556001810154600185015501549101555f806120d2565b50505050505f90565b8761215d82886112ee565b905460039190911b1c6001600160a01b03161461217c57600101612062565b8763f158185d60e01b5f5260045260245ffd5b505050505050600190565b6001600160a01b0381165f9081525f516020612ae05f395f51905f52602052604090205460ff1661222d576001600160a01b03165f8181525f516020612ae05f395f51905f5260205260408120805460ff191660011790553391905f516020612b205f395f51905f52907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b505f90565b5f8181525f516020612b405f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16611cc2575f8181525f516020612b405f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5f8181525f516020612b405f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615611cc2575f8181525f516020612b405f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b612374611566565b6002810190815443811461254e5761238c814361127c565b9260018201809211611289576003830180549060ff5f516020612b605f395f51905f5254168015612545575b6124ea575b50504390556006820154806123d3575b50505050565b60ff600784015416600381101561116d576002810361249657505060058201805493600490930192905f5b858110612415575050505050505b5f8080806123cd565b80612422600192846112ee565b838060a01b0391549060031b1c16828060a01b0381165f5286602052858360405f2001548681612457575b50505050016123fe565b61246091611632565b916040519283527fa34db09d4126dd8dcd1d29f3df65c01dcac405127546e380add77fedca459ba760204394a45f85818661244d565b9193909250906001146124ac575b50505061240c565b6124b591611632565b906040519182527fcef44ce1a1fc7ca1f3078daf79d3b60646d0e751bc72a69bff12f66c4aef3b8d60204393a35f80806124a4565b6125016124fb876006880154611632565b836112bb565b809155808203156123bd576040519182526020820152827f0539ce444a515b8aa8769802297761fbec80b5b543c617714bf5e0611cf669db60404393a35f806123bd565b508115156123b8565b505050565b91909161255e611566565b9280158080156126b2575b6126ab57600185015492600184018094116112895760048601969560050160015b81548110156126a05761259d81836112ee565b905460039190911b1c6001600160a01b03165f81815260208b905260409020549091908590806125d4575b5050600191500161258a565b6125de9086611632565b9061268c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290879004833b15610219576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af19182156118ec575f516020612b005f395f51905f5260208b936001978e9661267c575b50604051908152a4845f6125c8565b5f6126869161123c565b5f61266d565b634e487b7160e01b5f52601260045260245ffd5b505050505050509050565b5050505050565b508215612569565b6001600160a01b0316919082156127f7576126d3611566565b600581016126fd6126e3826112c8565b905460039190911b1c6001600160a01b03168614916112c8565b905460039190911b1c6001600160a01b0316906127e55750600490845f520160205260405f20828282541491826127d7575b50506115565715908115916127cd575b5061274a5750600190565b6040516301ffc9a760e01b815263aee4dc4360e01b6004820152602081602481855afa9081156118ec575f91612792575b50611fbd5763a5fe861560e01b5f5260045260245ffd5b90506020813d6020116127c5575b816127ad6020938361123c565b8101031261021957518015158103610219575f61277b565b3d91506127a0565b905015155f61273f565b60010154149050825f61272f565b63fda6c18760e01b5f5260045260245ffd5b6322a4ec7b60e11b5f5260045ffd5b61280e611566565b906001820191825490612821824361127c565b9081156129595760018301809311611289575f94936004600583019201955b825481101561294c5761285381846112ee565b905460039190911b1c6001600160a01b03169081156129435760018060a01b0382165f52876020528460405f205480612894575b5050600191505b01612840565b9061289e91611632565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692833b15610219576040516340c10f1960e01b81526001600160a01b038216600482015260248101839052935f908590604490829084905af19081156118ec576001948992612933575b506040519283525f516020612b005f395f51905f5260204394a4845f612887565b5f61293d9161123c565b5f612912565b6001915061288e565b5094505050504390554390565b5090925050565b6001810190825f528160205260405f2054155f14611556578054600160401b81101561064b576129b061299a8260018794018555846112ee565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b906001820191815f528260205260405f20548015155f14612a6c575f1981018181116112895782545f1981019190821161128957818103612a37575b50505080548015611c73575f190190612a1882826112ee565b8154905f199060031b1b19169055555f526020525f6040812055600190565b612a57612a4761299a93866112ee565b90549060031b1c928392866112ee565b90555f528360205260405f20555f80806129ff565b505050505f90565b60ff5f516020612be05f395f51905f525460401c1615612a9057565b631afcd79f60e31b5f5260045ffdfebd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200075e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8030c56d855d8df534c916b78eac3522e5fafd59f48799c4a97d42e80f6e08989607935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f001bd3f0d2f1001a856d81215ceb86c548bdbc3bf52480a08978f8c3ea6e2bd421f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212209457a5e4c6d84f224585e79d573325e167fe728fa434f45fca45fc71e3868f7264736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x1009 JUMPI POP DUP1 PUSH4 0x1156BDC1 EQ PUSH2 0xFDA JUMPI DUP1 PUSH4 0x13A7855D EQ PUSH2 0xFA0 JUMPI DUP1 PUSH4 0x15D3B5D8 EQ PUSH2 0xF27 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0xF09 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0xED8 JUMPI DUP1 PUSH4 0x3067CB4C EQ PUSH2 0xE30 JUMPI DUP1 PUSH4 0x32BC934C EQ PUSH2 0xE13 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0xDCF JUMPI DUP1 PUSH4 0x389ED267 EQ PUSH2 0xDA8 JUMPI DUP1 PUSH4 0x3AF5B073 EQ PUSH2 0xD7D JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0xCFF JUMPI DUP1 PUSH4 0x443990FA EQ PUSH2 0xCBD JUMPI DUP1 PUSH4 0x4887693C EQ PUSH2 0xC8A JUMPI DUP1 PUSH4 0x48C3C62E EQ PUSH2 0xC04 JUMPI DUP1 PUSH4 0x49BDFCB0 EQ PUSH2 0xBC7 JUMPI DUP1 PUSH4 0x4A1293B7 EQ PUSH2 0xBA1 JUMPI DUP1 PUSH4 0x52C0E18C EQ PUSH2 0xB5B JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0xB2D JUMPI DUP1 PUSH4 0x63FE3B56 EQ PUSH2 0xAC4 JUMPI DUP1 PUSH4 0x647B3682 EQ PUSH2 0xA7E JUMPI DUP1 PUSH4 0x697CF322 EQ PUSH2 0xA49 JUMPI DUP1 PUSH4 0x79D5FC54 EQ PUSH2 0xA26 JUMPI DUP1 PUSH4 0x7C92330B EQ PUSH2 0x9D6 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x955 JUMPI DUP1 PUSH4 0x84C48422 EQ PUSH2 0x8F5 JUMPI DUP1 PUSH4 0x87EE921C EQ PUSH2 0x8CC JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x87B JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0x93C911A8 EQ PUSH2 0x7F8 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x7DE JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH2 0x75E JUMPI DUP1 PUSH4 0xC2CB3544 EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0xC627B7A4 EQ PUSH2 0x373 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xCCC57490 EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0xD012A15B EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0xEE56977E EQ PUSH2 0x21D JUMPI PUSH4 0xF5B541A6 EQ PUSH2 0x1DF JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x97667070C54EF182B0F5858B034BEAC1B6F3089AA2D3188BB1E8929F4FA9B929 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x235 PUSH2 0x125E JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x240 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD SWAP1 PUSH1 0x3 PUSH1 0x2 DUP3 ADD SLOAD SWAP2 ADD SLOAD SWAP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x25E DUP5 PUSH2 0x1220 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x28B PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x2C3 PUSH1 0x4 CALLDATALOAD PUSH2 0x2AC PUSH2 0x10F2 JUMP JUMPDEST SWAP1 PUSH2 0x2BE PUSH2 0x2B9 DUP3 PUSH2 0x129D JUMP JUMPDEST PUSH2 0x13F1 JUMP JUMPDEST PUSH2 0x15F0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0x2E3 PUSH2 0x1108 JUMP JUMPDEST PUSH2 0x2EB PUSH2 0x134C JUMP JUMPDEST PUSH2 0x2F3 PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x2024 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x38C PUSH2 0x134C JUMP JUMPDEST PUSH2 0x394 PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2FC PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x146C JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x3BD PUSH2 0x1108 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x40 SHR AND ISZERO SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 ISZERO SWAP1 DUP2 PUSH2 0x70E JUMPI JUMPDEST PUSH1 0x1 EQ SWAP1 DUP2 PUSH2 0x704 JUMPI JUMPDEST ISZERO SWAP1 DUP2 PUSH2 0x6FB JUMPI JUMPDEST POP PUSH2 0x6EC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x6C0 JUMPI JUMPDEST POP PUSH2 0x42E PUSH2 0x2A74 JUMP JUMPDEST PUSH2 0x436 PUSH2 0x2A74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x6B1 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE804 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH2 0x59C SWAP4 SWAP3 SWAP2 DUP3 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B80 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF134 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH32 0x97667070C54EF182B0F5858B034BEAC1B6F3089AA2D3188BB1E8929F4FA9B929 PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB457 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH2 0x219A JUMP JUMPDEST PUSH2 0x65F JUMPI JUMPDEST POP PUSH2 0x5AA PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0x64B JUMPI PUSH2 0x5CB SWAP2 PUSH1 0x1 DUP3 ADD DUP2 SSTORE PUSH2 0x12EE JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE PUSH1 0x7 DUP2 ADD PUSH1 0x2 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x1 NUMBER SWAP2 ADD SSTORE PUSH2 0x5F9 JUMPI STOP JUMPDEST PUSH1 0xFF PUSH1 0x40 SHL NOT PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x6AA SWAP1 PUSH32 0x955AF8CAAF1BB5FCA493CBB01CEFEB9E610A81071C268CD8B40C82100CBB956E PUSH2 0x2960 JUMP JUMPDEST POP DUP2 PUSH2 0x5A1 JUMP JUMPDEST PUSH4 0x395D0535 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFFFF NOT AND PUSH9 0x10000000000000001 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x425 JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP ISZERO DUP5 PUSH2 0x3FC JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP PUSH2 0x3F4 JUMP JUMPDEST DUP5 SWAP2 POP PUSH2 0x3EA JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x80 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0x734 PUSH2 0x1108 JUMP JUMPDEST PUSH2 0x73C PUSH2 0x134C JUMP JUMPDEST PUSH2 0x744 PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CC8 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x7C8 JUMPI PUSH2 0x7C4 DUP6 PUSH2 0x7B8 DUP2 DUP8 SUB DUP3 PUSH2 0x123C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x111E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP3 SLOAD DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x7A1 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x7 PUSH2 0x816 PUSH2 0x1566 JUMP JUMPDEST ADD SLOAD AND PUSH2 0x28B PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH2 0x1160 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x83F PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x8B3 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x3 SWAP3 SWAP1 SWAP3 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x8B3 PUSH1 0x4 CALLDATALOAD PUSH1 0x5 PUSH2 0x8EF PUSH2 0x1566 JUMP JUMPDEST ADD PUSH2 0x12EE JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x90E PUSH2 0x1108 JUMP JUMPDEST PUSH2 0x916 PUSH2 0x125E JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0x921 PUSH2 0x1566 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x60 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 DUP2 SLOAD SWAP2 ADD SLOAD PUSH2 0x947 DUP2 DUP4 PUSH2 0x12BB JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x25E DUP5 PUSH2 0x1220 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x96D PUSH2 0x1395 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND PUSH2 0x9C7 JUMPI PUSH1 0x1 SWAP1 PUSH1 0xFF NOT AND OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0xD93C0665 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x9F1 PUSH2 0x1108 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x9FD PUSH2 0x134C JUMP JUMPDEST PUSH1 0x4 PUSH2 0xA07 PUSH2 0x1566 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE DUP3 MSTORE DUP1 PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0xA40 PUSH2 0x1566 JUMP JUMPDEST SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0xA67 PUSH2 0x1108 JUMP JUMPDEST PUSH2 0xA6F PUSH2 0x134C JUMP JUMPDEST PUSH2 0xA77 PUSH2 0x1437 JUMP JUMPDEST NUMBER SWAP1 PUSH2 0x2024 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0xA9C PUSH2 0x1108 JUMP JUMPDEST PUSH2 0xAA4 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xAAC PUSH2 0x1437 JUMP JUMPDEST NUMBER SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CC8 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x5 PUSH2 0xADE PUSH2 0x1566 JUMP JUMPDEST ADD PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xB0E JUMPI PUSH2 0x7C4 DUP6 PUSH2 0x7B8 DUP2 DUP8 SUB DUP3 PUSH2 0x123C JUMP JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0xAF7 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xB74 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xB7C PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xB89 PUSH1 0x4 CALLDATALOAD PUSH2 0x1645 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x5 PUSH2 0xBBD PUSH2 0x1566 JUMP JUMPDEST ADD SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x1 PUSH2 0xBE1 PUSH2 0x1566 JUMP JUMPDEST ADD SLOAD NUMBER SUB PUSH2 0xBF5 JUMPI PUSH1 0x20 NUMBER JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 PUSH2 0xBFF PUSH2 0x1FDA JUMP JUMPDEST PUSH2 0xBED JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xC1D PUSH2 0x1108 JUMP JUMPDEST PUSH2 0xC25 PUSH2 0x125E JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0xC30 PUSH2 0x1566 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x60 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP2 PUSH2 0xC54 DUP4 PUSH2 0x1220 JUMP JUMPDEST DUP1 SLOAD DUP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP5 ADD MSTORE ADD SLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x28B PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0xCA8 PUSH2 0x1108 JUMP JUMPDEST PUSH2 0xCB0 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xCB8 PUSH2 0x1437 JUMP JUMPDEST PUSH2 0x1F60 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0x2FC PUSH2 0xCDB PUSH2 0x1108 JUMP JUMPDEST PUSH2 0xCE3 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xCEB PUSH2 0x1437 JUMP JUMPDEST NUMBER SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A18 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xD17 PUSH2 0x1395 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND ISZERO PUSH2 0xD6E JUMPI PUSH1 0xFF NOT AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x8DFC202B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xD95 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xD9D PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xB89 NUMBER PUSH2 0x1645 JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B80 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xDE8 PUSH2 0x10F2 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SUB PUSH2 0xE04 JUMPI PUSH2 0x2C3 SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0x15F0 JUMP JUMPDEST PUSH4 0x334BD919 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x80 PUSH2 0xE4B PUSH2 0x1108 JUMP JUMPDEST PUSH0 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH2 0xE5A DUP2 PUSH2 0x1204 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE PUSH2 0xE73 PUSH2 0x1566 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP2 PUSH1 0x2 PUSH1 0x1 DUP1 DUP4 ADD SLOAD SWAP4 ADD SLOAD SWAP2 ADD SLOAD SWAP2 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH2 0xEA9 DUP2 PUSH2 0x1204 JUMP JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 DUP4 MSTORE PUSH1 0x40 DUP2 ADD SWAP4 DUP5 MSTORE ADD SWAP3 DUP4 MSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 MSTORE MLOAD PUSH1 0x20 DUP5 ADD MSTORE MLOAD PUSH1 0x40 DUP4 ADD MSTORE MLOAD PUSH1 0x60 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0x2C3 PUSH1 0x4 CALLDATALOAD PUSH2 0xEF7 PUSH2 0x10F2 JUMP JUMPDEST SWAP1 PUSH2 0xF04 PUSH2 0x2B9 DUP3 PUSH2 0x129D JUMP JUMPDEST PUSH2 0x15AA JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x20 PUSH2 0xBED PUSH1 0x4 CALLDATALOAD PUSH2 0x129D JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x60 PUSH2 0xF41 PUSH2 0x125E JUMP JUMPDEST PUSH2 0xF7A PUSH2 0xF4C PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x6 PUSH2 0xF68 DUP3 SLOAD PUSH0 DUP1 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x127C JUMP JUMPDEST SWAP2 DUP3 DUP6 MSTORE ADD SLOAD SWAP1 DUP2 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x127C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x28B PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x219 JUMPI PUSH2 0xFD0 PUSH1 0x20 SWAP2 PUSH2 0xFCB PUSH2 0x134C JUMP JUMPDEST PUSH2 0x1181 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH2 0xFF3 PUSH2 0x134C JUMP JUMPDEST PUSH2 0xFFB PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2FC NUMBER PUSH1 0x4 CALLDATALOAD PUSH2 0x146C JUMP JUMPDEST CALLVALUE PUSH2 0x219 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x219 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0x219 JUMPI PUSH1 0x20 SWAP2 PUSH4 0x1E768DFF PUSH1 0xE2 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x10E1 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x10D0 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x10BF JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x1060 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1CF1473B PUSH1 0xE3 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x107A JUMPI JUMPDEST POP DUP4 PUSH2 0x1059 JUMP JUMPDEST PUSH4 0x5A05180F PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x1094 JUMPI JUMPDEST POP DUP4 PUSH2 0x1073 JUMP JUMPDEST PUSH4 0x7965DB0B PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x10AE JUMPI JUMPDEST POP DUP4 PUSH2 0x108D JUMP JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0x10A7 JUMP JUMPDEST PUSH4 0x2461E317 PUSH1 0xE1 SHL DUP2 EQ SWAP2 POP PUSH2 0x1052 JUMP JUMPDEST PUSH4 0xA896602D PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x104B JUMP JUMPDEST PUSH4 0x50D8541D PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x1044 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x219 JUMPI JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x219 JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1141 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1134 JUMP JUMPDEST SWAP1 PUSH1 0x3 DUP3 LT ISZERO PUSH2 0x116D JUMPI MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x7 PUSH2 0x118B PUSH2 0x1566 JUMP JUMPDEST ADD SWAP1 PUSH1 0xFF DUP3 SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x116D JUMPI PUSH1 0x3 DUP3 LT ISZERO PUSH2 0x116D JUMPI DUP1 DUP3 EQ PUSH2 0x11FC JUMPI PUSH2 0x11F6 PUSH1 0x40 SWAP3 PUSH32 0x3F59746E46BFB9AF931035055D53B82D1B70968466065162B7DBF8E998AEE629 SWAP5 PUSH1 0xFF NOT DUP2 SLOAD AND PUSH1 0xFF DUP4 AND OR SWAP1 SSTORE PUSH2 0x11EC DUP5 MLOAD DUP1 SWAP5 PUSH2 0x1160 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1160 JUMP JUMPDEST LOG1 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x64B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x64B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x64B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x126B DUP3 PUSH2 0x1220 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1289 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1289 JUMPI JUMP JUMPDEST DUP1 SLOAD ISZERO PUSH2 0x12DA JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x12DA JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x40 SHL DUP4 LT ISZERO PUSH2 0x64B JUMPI DUP3 PUSH2 0x1326 SWAP2 PUSH1 0x1 PUSH2 0x134A SWAP6 ADD DUP2 SSTORE PUSH2 0x12EE JUMP JUMPDEST SWAP1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x3 SWAP4 SWAP1 SWAP4 SHL DUP4 DUP2 SHL NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP1 SWAP3 SHL OR SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1371 JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF133 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x13CD JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B80 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1421 JUMPI POP JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TLOAD PUSH2 0x145D JUMPI PUSH1 0x1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BA0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE JUMP JUMPDEST PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1474 PUSH2 0x1566 JUMP JUMPDEST DUP1 SLOAD SWAP3 DUP4 DUP4 EQ PUSH2 0x155D JUMPI PUSH2 0x1486 PUSH2 0x1FDA JUMP JUMPDEST LT PUSH2 0x1556 JUMPI PUSH2 0x14BB PUSH1 0x5 DUP3 ADD PUSH2 0x14B5 PUSH2 0x149E DUP3 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F60 JUMP JUMPDEST POP PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x14E8 DUP2 DUP6 PUSH2 0x12BB JUMP JUMPDEST DUP6 GT PUSH2 0x153C JUMPI SWAP3 DUP5 SWAP3 DUP2 SWAP3 PUSH2 0x1529 PUSH32 0x2925BE3E6D4B2CBCEC6C06D5060FB3B53F160410555E45EE0A1F6DC7AE9B24C0 SWAP8 PUSH2 0x1524 DUP6 PUSH1 0x40 SWAP10 PUSH2 0x12BB JUMP JUMPDEST PUSH2 0x127C JUMP JUMPDEST SWAP1 SSTORE SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 PUSH1 0x1 SWAP1 JUMP JUMPDEST DUP4 DUP6 PUSH4 0x2C421F2B PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH32 0x109CDEB08B6FCB52A0F8A35AF1BF023AFDACDC6E602B08424B2171D0F4FA3CD4 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x159F PUSH1 0x40 DUP4 PUSH2 0x123C JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x15B4 DUP3 DUP3 PUSH2 0x2232 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x15BF JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x15EC SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2960 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x15FA DUP3 DUP3 PUSH2 0x22D0 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x1605 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x15EC SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x29C3 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1289 JUMPI JUMP JUMPDEST PUSH2 0x164D PUSH2 0x236C JUMP JUMPDEST PUSH2 0x1655 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP2 SLOAD DUP4 DUP2 GT ISZERO DUP1 PUSH2 0x1A0E JUMPI JUMPDEST ISZERO PUSH2 0x19F4 JUMPI PUSH2 0x1675 SWAP1 DUP5 PUSH2 0x127C JUMP JUMPDEST SWAP2 DUP3 ISZERO PUSH2 0x19EE JUMPI DUP4 DUP3 SLOAD SWAP2 PUSH2 0x168A DUP6 DUP5 PUSH2 0x1632 JUMP JUMPDEST SWAP3 PUSH1 0x3 DUP6 ADD SLOAD SWAP5 DUP5 DUP7 LT PUSH0 EQ PUSH2 0x19E7 JUMPI PUSH2 0x16A4 DUP7 DUP7 PUSH2 0x127C JUMP JUMPDEST SWAP2 JUMPDEST DUP3 PUSH2 0x174A JUMPI JUMPDEST POP POP POP SSTORE PUSH2 0x16B8 PUSH2 0x1566 JUMP JUMPDEST SWAP1 NUMBER DUP6 SUB PUSH2 0x172C JUMPI PUSH0 SWAP4 JUMPDEST DUP5 DUP5 SUB PUSH2 0x16D6 JUMPI JUMPDEST POP POP PUSH1 0x3 SWAP2 POP ADD SSTORE SWAP1 JUMP JUMPDEST PUSH2 0x16E0 SWAP1 DUP7 PUSH2 0x127C JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1289 JUMPI PUSH32 0x1A45018BDAB6039C806FAC73D617B3BC5C6A2A0F22F6F90D2CA202B083087F99 PUSH1 0x60 PUSH1 0x3 SWAP6 DUP9 SWAP5 PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE DUP9 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE LOG3 PUSH0 DUP1 PUSH2 0x16CB JUMP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1744 JUMPI PUSH2 0x173E DUP2 DUP5 PUSH2 0x127C JUMP JUMPDEST SWAP4 PUSH2 0x16C3 JUMP JUMPDEST PUSH0 PUSH2 0x173E JUMP JUMPDEST PUSH2 0x1796 SWAP3 SWAP4 SWAP5 POP PUSH2 0x178E SWAP1 PUSH2 0x1761 PUSH1 0x5 DUP5 ADD PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x6 SWAP1 SWAP4 ADD SLOAD SWAP1 PUSH2 0x127C JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH2 0x127C JUMP JUMPDEST SWAP1 PUSH2 0x17A1 DUP7 DUP4 PUSH2 0x1632 JUMP JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x17BF JUMPI POP DUP7 DUP1 SWAP4 SWAP3 PUSH2 0x17B7 SWAP3 PUSH2 0x2553 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x16AC JUMP JUMPDEST SWAP7 SWAP6 SWAP4 SWAP3 SWAP5 SWAP1 SWAP8 SWAP2 POP PUSH2 0x17D0 PUSH2 0x1566 JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP5 ADD SLOAD SWAP6 PUSH1 0x1 DUP8 ADD DUP1 SWAP8 GT PUSH2 0x1289 JUMPI PUSH1 0x1 SWAP10 SWAP9 PUSH1 0x4 PUSH1 0x5 DUP8 ADD SWAP7 ADD SWAP11 JUMPDEST DUP7 SLOAD DUP2 LT ISZERO PUSH2 0x18F7 JUMPI PUSH2 0x1803 DUP2 DUP9 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP15 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP10 SWAP1 DUP1 PUSH2 0x183A JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP ADD PUSH2 0x17F0 JUMP JUMPDEST SWAP1 PUSH2 0x1844 SWAP2 PUSH2 0x1632 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP1 DUP4 EXTCODESIZE ISZERO PUSH2 0x219 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x18EC JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 DUP16 SWAP5 SWAP4 DUP16 SWAP5 SWAP8 PUSH1 0x1 SWAP9 PUSH2 0x18DC JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 DUP9 PUSH0 PUSH2 0x182E JUMP JUMPDEST PUSH0 PUSH2 0x18E6 SWAP2 PUSH2 0x123C JUMP JUMPDEST PUSH0 PUSH2 0x18CD JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP PUSH2 0x190E SWAP2 SWAP5 SWAP11 POP DUP9 SWAP10 SWAP9 SWAP6 SWAP3 SWAP7 SWAP9 SWAP8 SWAP4 SWAP8 PUSH2 0x127C JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x191D JUMPI JUMPDEST POP POP POP PUSH2 0x17B7 JUMP JUMPDEST PUSH2 0x1926 SWAP1 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x1915 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 POP SWAP1 SWAP2 DUP5 EXTCODESIZE ISZERO PUSH2 0x219 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP5 PUSH0 SWAP1 DUP7 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x18EC JUMPI PUSH1 0x20 DUP11 SWAP7 SWAP5 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP3 DUP9 SWAP7 PUSH2 0x19D7 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 PUSH0 DUP1 DUP1 PUSH2 0x1915 JUMP JUMPDEST PUSH0 PUSH2 0x19E1 SWAP2 PUSH2 0x123C JUMP JUMPDEST PUSH0 PUSH2 0x19C7 JUMP JUMPDEST PUSH0 SWAP2 PUSH2 0x16A6 JUMP JUMPDEST POP POP POP SWAP1 JUMP JUMPDEST DUP4 PUSH4 0xA0D2B9DB PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE NUMBER PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST POP NUMBER DUP5 GT ISZERO PUSH2 0x1666 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1A25 PUSH0 DUP5 DUP5 PUSH2 0x26BA JUMP JUMPDEST ISZERO PUSH2 0x11FC JUMPI PUSH2 0x1A32 PUSH2 0x1FDA JUMP JUMPDEST LT PUSH2 0x1CC2 JUMPI PUSH2 0x1A40 DUP2 PUSH2 0x1F60 JUMP JUMPDEST POP PUSH2 0x1A57 PUSH2 0x149E PUSH1 0x5 PUSH2 0x1A51 PUSH2 0x1566 JUMP JUMPDEST ADD PUSH2 0x12C8 JUMP JUMPDEST POP PUSH2 0x1A60 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH2 0x1A85 PUSH1 0x5 DUP4 ADD PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SLOAD PUSH2 0x1AC4 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x1AB9 SWAP2 PUSH2 0x12BB JUMP JUMPDEST SWAP5 ADD SWAP4 DUP5 SLOAD SWAP1 PUSH2 0x12BB JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x1CAC JUMPI SWAP2 PUSH1 0x6 SWAP2 PUSH2 0x1ADC DUP8 PUSH2 0x1AEA SWAP6 PUSH2 0x127C JUMP JUMPDEST SWAP1 SSTORE ADD SWAP2 DUP3 SLOAD SWAP1 SLOAD SWAP1 PUSH2 0x127C JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x1AF4 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1CA5 JUMPI JUMPDEST ISZERO PUSH2 0x1B83 JUMPI SWAP2 PUSH0 PUSH1 0x1 DUP4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP6 DUP5 PUSH1 0x40 SWAP7 SLOAD ISZERO DUP1 PUSH2 0x1B78 JUMPI JUMPDEST PUSH2 0x1B65 JUMPI JUMPDEST POP POP DUP7 DUP2 SSTORE ADD SSTORE JUMPDEST DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH0 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 LOG2 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1B71 SWAP3 ADD PUSH2 0x1303 JUMP JUMPDEST PUSH0 DUP5 PUSH2 0x1B42 JUMP JUMPDEST POP DUP4 DUP4 ADD SLOAD ISZERO PUSH2 0x1B3D JUMP JUMPDEST POP POP SWAP1 PUSH2 0x1B8E PUSH2 0x1566 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x5 DUP5 ADD SWAP1 PUSH1 0x1 JUMPDEST DUP3 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0x1C87 JUMPI DUP5 PUSH2 0x1BB7 DUP4 DUP7 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1BD7 JUMPI POP PUSH1 0x1 ADD PUSH2 0x1BA2 JUMP JUMPDEST SWAP1 PUSH0 SWAP7 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x1289 JUMPI PUSH2 0x1326 PUSH2 0x1BF9 PUSH2 0x1C12 SWAP4 DUP8 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP7 PUSH2 0x12EE JUMP JUMPDEST DUP3 SLOAD SWAP1 DUP2 ISZERO PUSH2 0x1C73 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP5 PUSH1 0x40 SWAP5 PUSH1 0x4 SWAP4 PUSH0 NOT ADD SWAP1 PUSH2 0x1C56 PUSH2 0x1C41 DUP4 DUP4 PUSH2 0x12EE JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST SSTORE PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 DUP4 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE PUSH2 0x1B4A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP SWAP1 POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP3 SWAP4 POP PUSH1 0x40 SWAP2 POP PUSH2 0x1B4A JUMP JUMPDEST POP PUSH0 PUSH2 0x1B18 JUMP JUMPDEST DUP6 PUSH4 0x162930E3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x1CD7 DUP3 DUP5 DUP7 PUSH2 0x26BA JUMP JUMPDEST ISZERO PUSH2 0x155D JUMPI PUSH2 0x1CE4 PUSH2 0x1FDA JUMP JUMPDEST LT PUSH2 0x1556 JUMPI PUSH2 0x1CF2 DUP4 PUSH2 0x1F60 JUMP JUMPDEST POP PUSH2 0x1D03 PUSH2 0x149E PUSH1 0x5 PUSH2 0x1A51 PUSH2 0x1566 JUMP JUMPDEST POP PUSH2 0x1D0C PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH2 0x1D31 PUSH1 0x5 DUP4 ADD PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SLOAD PUSH2 0x1D65 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x1AB9 SWAP2 PUSH2 0x12BB JUMP JUMPDEST DUP1 PUSH2 0x1D70 DUP7 DUP9 PUSH2 0x12BB JUMP JUMPDEST GT PUSH2 0x1D7B DUP7 DUP9 PUSH2 0x12BB JUMP JUMPDEST SWAP1 PUSH2 0x1F4B JUMPI POP PUSH1 0x6 PUSH2 0x1DAD SWAP4 DUP7 SWAP4 PUSH2 0x1D9A DUP6 PUSH2 0x1524 DUP12 PUSH2 0x1DA8 SWAP8 PUSH2 0x127C JUMP JUMPDEST SWAP1 SSTORE ADD SWAP4 DUP5 SLOAD SWAP1 SLOAD SWAP1 PUSH2 0x127C JUMP JUMPDEST PUSH2 0x12BB JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x1DB7 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F42 JUMPI JUMPDEST ISZERO PUSH2 0x1E47 JUMPI SWAP2 DUP1 PUSH1 0x1 DUP4 PUSH1 0x40 SWAP6 DUP9 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP9 SWAP10 SWAP7 SLOAD ISZERO DUP1 PUSH2 0x1E3C JUMPI JUMPDEST PUSH2 0x1E29 JUMPI JUMPDEST POP POP DUP8 DUP2 SSTORE ADD SSTORE JUMPDEST DUP3 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 LOG2 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1E35 SWAP3 ADD PUSH2 0x1303 JUMP JUMPDEST PUSH0 DUP6 PUSH2 0x1E07 JUMP JUMPDEST POP DUP4 DUP4 ADD SLOAD ISZERO PUSH2 0x1E02 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x1E52 PUSH2 0x1566 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 PUSH1 0x5 DUP6 ADD SWAP2 PUSH1 0x1 JUMPDEST DUP4 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0x1F23 JUMPI DUP6 PUSH2 0x1E7B DUP4 DUP8 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E9B JUMPI POP PUSH1 0x1 ADD PUSH2 0x1E66 JUMP JUMPDEST SWAP1 PUSH0 SWAP8 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x1289 JUMPI PUSH2 0x1326 PUSH2 0x1EBE PUSH2 0x1ED7 SWAP4 DUP9 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP8 PUSH2 0x12EE JUMP JUMPDEST DUP4 SLOAD SWAP1 DUP2 ISZERO PUSH2 0x1C73 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP6 PUSH1 0x40 SWAP6 PUSH1 0x4 SWAP4 PUSH0 NOT ADD SWAP1 PUSH2 0x1F06 PUSH2 0x1C41 DUP4 DUP4 PUSH2 0x12EE JUMP JUMPDEST SSTORE PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 DUP5 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE PUSH2 0x1E0F JUMP JUMPDEST POP POP SWAP1 SWAP2 POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BC0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP4 SWAP5 POP PUSH1 0x40 SWAP3 POP PUSH2 0x1E0F JUMP JUMPDEST POP DUP3 ISZERO ISZERO PUSH2 0x1DDB JUMP JUMPDEST PUSH4 0x162930E3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1FBD JUMPI PUSH1 0x4 PUSH2 0x1F79 PUSH2 0x1566 JUMP JUMPDEST ADD DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD DUP1 SLOAD NUMBER GT ISZERO PUSH2 0x1FD3 JUMPI NUMBER SWAP1 SSTORE DUP1 EXTCODESIZE ISZERO PUSH2 0x219 JUMPI PUSH0 DUP1 SWAP2 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH4 0x1EFC6B41 PUSH1 0xE1 SHL DUP4 MSTORE GAS CALL DUP1 ISZERO PUSH2 0x18EC JUMPI PUSH2 0x1FC3 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1FCD SWAP2 PUSH2 0x123C JUMP JUMPDEST PUSH0 PUSH2 0x1FBD JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x1FE2 PUSH2 0x1566 JUMP JUMPDEST PUSH2 0x1FEA PUSH2 0x236C JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH2 0x201D JUMPI PUSH1 0x3 ADD SLOAD ISZERO PUSH2 0x2015 JUMPI PUSH2 0x2012 NUMBER PUSH2 0x1645 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2012 PUSH2 0x2806 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x202C PUSH2 0x1566 JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 ADD SWAP1 PUSH2 0x203B DUP3 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP7 PUSH1 0x3 SWAP4 SWAP1 SWAP4 SHL SWAP2 SWAP1 SWAP2 SHR AND SWAP4 SWAP1 DUP6 DUP6 EQ PUSH2 0x218F JUMPI DUP4 SLOAD PUSH1 0x1 JUMPDEST DUP2 DUP2 LT PUSH2 0x2152 JUMPI POP POP PUSH2 0x2073 PUSH2 0x1FDA JUMP JUMPDEST LT PUSH2 0x2149 JUMPI PUSH1 0x4 PUSH2 0x20AC SWAP2 PUSH2 0x2087 DUP7 PUSH2 0x1F60 JUMP JUMPDEST POP PUSH2 0x2091 DUP5 PUSH2 0x1F60 JUMP JUMPDEST POP ADD SWAP2 DUP6 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH2 0x1326 PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP5 PUSH2 0x12C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP4 MSTORE SWAP2 KECCAK256 SWAP1 DUP1 DUP3 SUB PUSH2 0x212B JUMPI JUMPDEST POP POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE DUP4 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SSTORE PUSH31 0xF06471E88E0BC1DB6B6126EFDB09F80B597E6DDC145FF0DCABD12AFAB4EC57 PUSH0 DUP1 LOG3 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SWAP3 SLOAD DUP5 SSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 DUP6 ADD SSTORE ADD SLOAD SWAP2 ADD SSTORE PUSH0 DUP1 PUSH2 0x20D2 JUMP JUMPDEST POP POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST DUP8 PUSH2 0x215D DUP3 DUP9 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x217C JUMPI PUSH1 0x1 ADD PUSH2 0x2062 JUMP JUMPDEST DUP8 PUSH4 0xF158185D PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x222D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP2 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1CC2 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1CC2 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x2374 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SWAP1 DUP2 SLOAD NUMBER DUP2 EQ PUSH2 0x254E JUMPI PUSH2 0x238C DUP2 NUMBER PUSH2 0x127C JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1289 JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD SWAP1 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B60 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND DUP1 ISZERO PUSH2 0x2545 JUMPI JUMPDEST PUSH2 0x24EA JUMPI JUMPDEST POP POP NUMBER SWAP1 SSTORE PUSH1 0x6 DUP3 ADD SLOAD DUP1 PUSH2 0x23D3 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0xFF PUSH1 0x7 DUP5 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x116D JUMPI PUSH1 0x2 DUP2 SUB PUSH2 0x2496 JUMPI POP POP PUSH1 0x5 DUP3 ADD DUP1 SLOAD SWAP4 PUSH1 0x4 SWAP1 SWAP4 ADD SWAP3 SWAP1 PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x2415 JUMPI POP POP POP POP POP POP JUMPDEST PUSH0 DUP1 DUP1 DUP1 PUSH2 0x23CD JUMP JUMPDEST DUP1 PUSH2 0x2422 PUSH1 0x1 SWAP3 DUP5 PUSH2 0x12EE JUMP JUMPDEST DUP4 DUP1 PUSH1 0xA0 SHL SUB SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SHR AND DUP3 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE DUP7 PUSH1 0x20 MSTORE DUP6 DUP4 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD DUP7 DUP2 PUSH2 0x2457 JUMPI JUMPDEST POP POP POP POP ADD PUSH2 0x23FE JUMP JUMPDEST PUSH2 0x2460 SWAP2 PUSH2 0x1632 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH32 0xA34DB09D4126DD8DCD1D29F3DF65C01DCAC405127546E380ADD77FEDCA459BA7 PUSH1 0x20 NUMBER SWAP5 LOG4 PUSH0 DUP6 DUP2 DUP7 PUSH2 0x244D JUMP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 EQ PUSH2 0x24AC JUMPI JUMPDEST POP POP POP PUSH2 0x240C JUMP JUMPDEST PUSH2 0x24B5 SWAP2 PUSH2 0x1632 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0xCEF44CE1A1FC7CA1F3078DAF79D3B60646D0E751BC72A69BFF12F66C4AEF3B8D PUSH1 0x20 NUMBER SWAP4 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x24A4 JUMP JUMPDEST PUSH2 0x2501 PUSH2 0x24FB DUP8 PUSH1 0x6 DUP9 ADD SLOAD PUSH2 0x1632 JUMP JUMPDEST DUP4 PUSH2 0x12BB JUMP JUMPDEST DUP1 SWAP2 SSTORE DUP1 DUP3 SUB ISZERO PUSH2 0x23BD JUMPI PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH32 0x539CE444A515B8AA8769802297761FBEC80B5B543C617714BF5E0611CF669DB PUSH1 0x40 NUMBER SWAP4 LOG3 PUSH0 DUP1 PUSH2 0x23BD JUMP JUMPDEST POP DUP2 ISZERO ISZERO PUSH2 0x23B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x255E PUSH2 0x1566 JUMP JUMPDEST SWAP3 DUP1 ISZERO DUP1 DUP1 ISZERO PUSH2 0x26B2 JUMPI JUMPDEST PUSH2 0x26AB JUMPI PUSH1 0x1 DUP6 ADD SLOAD SWAP3 PUSH1 0x1 DUP5 ADD DUP1 SWAP5 GT PUSH2 0x1289 JUMPI PUSH1 0x4 DUP7 ADD SWAP7 SWAP6 PUSH1 0x5 ADD PUSH1 0x1 JUMPDEST DUP2 SLOAD DUP2 LT ISZERO PUSH2 0x26A0 JUMPI PUSH2 0x259D DUP2 DUP4 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP6 SWAP1 DUP1 PUSH2 0x25D4 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP ADD PUSH2 0x258A JUMP JUMPDEST PUSH2 0x25DE SWAP1 DUP7 PUSH2 0x1632 JUMP JUMPDEST SWAP1 PUSH2 0x268C JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP1 DUP8 SWAP1 DIV DUP4 EXTCODESIZE ISZERO PUSH2 0x219 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x18EC JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 DUP12 SWAP4 PUSH1 0x1 SWAP8 DUP15 SWAP7 PUSH2 0x267C JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 DUP5 PUSH0 PUSH2 0x25C8 JUMP JUMPDEST PUSH0 PUSH2 0x2686 SWAP2 PUSH2 0x123C JUMP JUMPDEST PUSH0 PUSH2 0x266D JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP1 POP JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x2569 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 DUP3 ISZERO PUSH2 0x27F7 JUMPI PUSH2 0x26D3 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD PUSH2 0x26FD PUSH2 0x26E3 DUP3 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 EQ SWAP2 PUSH2 0x12C8 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x27E5 JUMPI POP PUSH1 0x4 SWAP1 DUP5 PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 DUP3 SLOAD EQ SWAP2 DUP3 PUSH2 0x27D7 JUMPI JUMPDEST POP POP PUSH2 0x1556 JUMPI ISZERO SWAP1 DUP2 ISZERO SWAP2 PUSH2 0x27CD JUMPI JUMPDEST POP PUSH2 0x274A JUMPI POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 DUP6 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x18EC JUMPI PUSH0 SWAP2 PUSH2 0x2792 JUMPI JUMPDEST POP PUSH2 0x1FBD JUMPI PUSH4 0xA5FE8615 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x27C5 JUMPI JUMPDEST DUP2 PUSH2 0x27AD PUSH1 0x20 SWAP4 DUP4 PUSH2 0x123C JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x219 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x219 JUMPI PUSH0 PUSH2 0x277B JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x27A0 JUMP JUMPDEST SWAP1 POP ISZERO ISZERO PUSH0 PUSH2 0x273F JUMP JUMPDEST PUSH1 0x1 ADD SLOAD EQ SWAP1 POP DUP3 PUSH0 PUSH2 0x272F JUMP JUMPDEST PUSH4 0xFDA6C187 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x22A4EC7B PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x280E PUSH2 0x1566 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP3 SLOAD SWAP1 PUSH2 0x2821 DUP3 NUMBER PUSH2 0x127C JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x2959 JUMPI PUSH1 0x1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x1289 JUMPI PUSH0 SWAP5 SWAP4 PUSH1 0x4 PUSH1 0x5 DUP4 ADD SWAP3 ADD SWAP6 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x294C JUMPI PUSH2 0x2853 DUP2 DUP5 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x2943 JUMPI PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE DUP8 PUSH1 0x20 MSTORE DUP5 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 PUSH2 0x2894 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP JUMPDEST ADD PUSH2 0x2840 JUMP JUMPDEST SWAP1 PUSH2 0x289E SWAP2 PUSH2 0x1632 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x219 JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x18EC JUMPI PUSH1 0x1 SWAP5 DUP10 SWAP3 PUSH2 0x2933 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 NUMBER SWAP5 LOG4 DUP5 PUSH0 PUSH2 0x2887 JUMP JUMPDEST PUSH0 PUSH2 0x293D SWAP2 PUSH2 0x123C JUMP JUMPDEST PUSH0 PUSH2 0x2912 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x288E JUMP JUMPDEST POP SWAP5 POP POP POP POP NUMBER SWAP1 SSTORE NUMBER SWAP1 JUMP JUMPDEST POP SWAP1 SWAP3 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH0 EQ PUSH2 0x1556 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0x64B JUMPI PUSH2 0x29B0 PUSH2 0x299A DUP3 PUSH1 0x1 DUP8 SWAP5 ADD DUP6 SSTORE DUP5 PUSH2 0x12EE JUMP JUMPDEST DUP2 SWAP4 SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP2 DUP3 SHL SWAP2 PUSH0 NOT SWAP1 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE SLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP2 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0x2A6C JUMPI PUSH0 NOT DUP2 ADD DUP2 DUP2 GT PUSH2 0x1289 JUMPI DUP3 SLOAD PUSH0 NOT DUP2 ADD SWAP2 SWAP1 DUP3 GT PUSH2 0x1289 JUMPI DUP2 DUP2 SUB PUSH2 0x2A37 JUMPI JUMPDEST POP POP POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x1C73 JUMPI PUSH0 NOT ADD SWAP1 PUSH2 0x2A18 DUP3 DUP3 PUSH2 0x12EE JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE SSTORE PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x2A57 PUSH2 0x2A47 PUSH2 0x299A SWAP4 DUP7 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR SWAP3 DUP4 SWAP3 DUP7 PUSH2 0x12EE JUMP JUMPDEST SWAP1 SSTORE PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x29FF JUMP JUMPDEST POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BE0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 SHR AND ISZERO PUSH2 0x2A90 JUMPI JUMP JUMPDEST PUSH4 0x1AFCD79F PUSH1 0xE3 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID 0xBD PUSH26 0xB86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E12 SWAP16 SIGNEXTEND STOP SELFDESTRUCT 0xC1 0xF6 INVALID 0x24 PUSH3 0x1CE81E 0xC5 DUP3 PUSH29 0xAF0253CADB74709B061630E6B55E8237170593200075E09417C5070057 0xDF RETURNDATACOPY 0xAF JUMPF 0x54D MSTORE STATICCALL SIGNEXTEND 0x2A DUP8 0xD6 BLOBBASEFEE 0x23 MCOPY NOT PUSH26 0x63B615AEDEE8030C56D855D8DF534C916B78EAC3522E5FAFD59F BASEFEE PUSH26 0x9C4A97D42E80F6E08989607935BD0AE54BC31F548C14DBA4D37C TLOAD PUSH5 0xB3F8CA900C 0xB4 PUSH9 0xFB8ABD54D5894F5502 0xDD PUSH28 0xC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B6268 STOP 0xCD MCOPY DATALOADN 0x5C6E XOR PUSH31 0x77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300139C2898040E CALL PUSH10 0x10DC9F44DC697DF79363 0xDA PUSH23 0x7D8BC92F2E310312B816E46D9B779B17422D0DF9222301 DUP12 ORIGIN 0xB4 DATALOADN 0xFA46 RJUMP 0x7172 RETURNDATASIZE PUSH9 0x17E2486D003BECC55F STOP SHL 0xD3 CREATE 0xD2 CALL STOP BYTE DUP6 PUSH14 0x81215CEB86C548BDBC3BF52480A0 DUP10 PUSH25 0xF8C3EA6E2BD421F0C57E16840DF040F15088DC2F81FE391C39 0x23 0xBE 0xC7 RETURNDATACOPY 0x23 0xA9 PUSH7 0x2EFC9C229C6A00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP5 JUMPI 0xA5 RETF 0xC6 0xD8 0x4F 0x22 GASLIMIT DUP6 SWAPN 0x9D JUMPI CALLER 0x25 RJUMPI 0x67FE PUSH19 0x8FA434F45FCA45FC71E3868F7264736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"9256:54785:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;3245:26:36;9256:54785:35;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;:::i;:::-;;;11931:35;;:::i;:::-;59736:23;;;9256:54785;59799:22;59858:19;59799:22;;;9256:54785;59858:19;;9256:54785;;;;;;;;:::i;:::-;;;59677:215;;;9256:54785;;59677:215;;9256:54785;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;5815:26:13;9256:54785:35;;;;:::i;:::-;5785:18:13;3283:4;5785:18;;;:::i;:::-;3283:4;:::i;:::-;5815:26;:::i;:::-;9256:54785:35;;;;;;;-1:-1:-1;;9256:54785:35;;;;;47910:50;9256:54785;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;9256:54785:35;;47910:50;;:::i;:::-;9256:54785;-1:-1:-1;;;;;;;;;;;3556:68:28;9256:54785:35;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;9256:54785:35;39944:62;9256:54785;;;;39944:62;:::i;9256:54785::-;;;;;;-1:-1:-1;;9256:54785:35;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;4301:16:15;9256:54785:35;;;;4724:16:15;;:34;;;;9256:54785:35;4803:1:15;4788:16;:50;;;;9256:54785:35;4853:13:15;:30;;;;9256:54785:35;4849:91:15;;;-1:-1:-1;;9256:54785:35;;4803:1:15;9256:54785:35;-1:-1:-1;;;;;;;;;;;9256:54785:35;;4977:67:15;;9256:54785:35;6891:76:15;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;9256:54785:35;;;5377:22:36;;9256:54785:35;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;4967:24:13;9256:54785:35;;;;;;4241:31:14;;6946:18:13;2399:26:36;;;-1:-1:-1;;;;;;;;;;;7025:52:13;9256:54785:35;7025:52:13;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;4967:24:13;9256:54785:35;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;2399:26:36;;9256:54785:35;;-1:-1:-1;;;;;;;;;;;7025:52:13;9256:54785:35;7025:52:13;3245:26:36;9256:54785:35;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;4967:24:13;9256:54785:35;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;2399:26:36;;9256:54785:35;;-1:-1:-1;;;;;;;;;;;7025:52:13;9256:54785:35;7025:52:13;4241:31:14;:::i;:::-;4282:71;;9256:54785:35;11931:35;;;:::i;:::-;20921:17;;;9256:54785;;-1:-1:-1;;;9256:54785:35;;;;;;;4803:1:15;9256:54785:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;20966:22;;;20991:30;9256:54785;;;;;;;;4803:1:15;21312:12:35;21286:23;;9256:54785;5064:101:15;;9256:54785:35;5064:101:15;9256:54785:35;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;-1:-1:-1;;;;;;;;;;;9256:54785:35;5140:14:15;9256:54785:35;;;4803:1:15;9256:54785:35;;5140:14:15;9256:54785:35;;;;;;;;;;;;;4282:71:14;-1:-1:-1;;;;;;;;;;;9256:54785:35;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;11511:50:33;;9256:54785:35;11511:50:33;:::i;:::-;;4282:71:14;;;9256:54785:35;;;;;;;;;4977:67:15;-1:-1:-1;;9256:54785:35;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;4977:67:15;;;4849:91;4906:23;;;9256:54785:35;4906:23:15;9256:54785:35;;4906:23:15;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:15;;4724:34;;;-1:-1:-1;4724:34:15;;9256:54785:35;;;;;;-1:-1:-1;;9256:54785:35;;;;;47275:97;9256:54785;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;9256:54785:35;;;;;;;;;-1:-1:-1;;;;;9256:54785:35;47275:97;:::i;9256:54785::-;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;42084:51;11931:35;;:::i;:::-;42084:51;9256:54785;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;9256:54785:35;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;3949:31:13;9256:54785:35;;;;;;-1:-1:-1;9256:54785:35;;;;;;-1:-1:-1;9256:54785:35;;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;5853:18:33;9256:54785:35;;;;;5853:18:33;:::i;:::-;9256:54785:35;;;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;60480:53;9256:54785;;60480:46;11931:35;;:::i;:::-;60480:46;:53;:::i;9256:54785::-;;;;;;-1:-1:-1;;9256:54785:35;;;;;;:::i;:::-;;;:::i;:::-;;;11931:35;;:::i;:::-;61286:48;:56;9256:54785;;;;;;-1:-1:-1;9256:54785:35;;;;;-1:-1:-1;9256:54785:35;61455:26;9256:54785;;61455:26;;9256:54785;61421:60;;;;:::i;:::-;9256:54785;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;9256:54785:35;;;;3283:4:13;;:::i;:::-;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;2770:61:17;;3300:4;9256:54785:35;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;3319:20:17;9256:54785:35;;;966:10:16;9256:54785:35;;3319:20:17;9256:54785:35;2770:61:17;2805:15;;;9256:54785:35;2805:15:17;9256:54785:35;;2805:15:17;9256:54785:35;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;:::i;:::-;;;3283:4:13;;;:::i;:::-;9256:54785:35;11931:35;;:::i;:::-;44758:19;:27;9256:54785;;;;;;-1:-1:-1;9256:54785:35;;;;45075:34;9256:54785;-1:-1:-1;9256:54785:35;45075:34;9256:54785;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;11931:35;;:::i;:::-;9256:54785;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;47601:43;9256:54785;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;47631:12:35;47601:43;;:::i;9256:54785::-;;;;;;-1:-1:-1;;9256:54785:35;;;;;45808:90;9256:54785;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;45885:12:35;;9256:54785;;;;;;-1:-1:-1;;;;;9256:54785:35;45808:90;:::i;9256:54785::-;;;;;;-1:-1:-1;;9256:54785:35;;;;60266:46;11931:35;;:::i;:::-;60266:46;9256:54785;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;9256:54785:35;29711:41;9256:54785;;29711:41;:::i;:::-;9256:54785;-1:-1:-1;;;;;;;;;;;3556:68:28;9256:54785:35;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;60050:46;11931:35;;:::i;:::-;60050:46;9256:54785;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;24060:23;11931:35;;:::i;:::-;24060:23;9256:54785;24087:12;24060:39;24087:12;;9256:54785;24087:12;24060:78;9256:54785;;;;;;24060:78;9256:54785;24117:21;;:::i;:::-;24060:78;;9256:54785;;;;;;-1:-1:-1;;9256:54785:35;;;;;;:::i;:::-;;;:::i;:::-;;;11931:35;;:::i;:::-;60718:48;:56;9256:54785;;;;;;-1:-1:-1;9256:54785:35;;;;;-1:-1:-1;9256:54785:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;44047:21;9256:54785;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;44047:21:35;:::i;9256:54785::-;;;;;;-1:-1:-1;;9256:54785:35;;;;;45425:76;9256:54785;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;45488:12:35;;9256:54785;;;-1:-1:-1;;;;;9256:54785:35;45425:76;:::i;9256:54785::-;;;;;;-1:-1:-1;;9256:54785:35;;;;3283:4:13;;:::i;:::-;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;2971:9:17;2967:62;;9256:54785:35;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;3627:22:17;9256:54785:35;;;966:10:16;9256:54785:35;;3627:22:17;9256:54785:35;2967:62:17;3003:15;;;9256:54785:35;3003:15:17;9256:54785:35;;3003:15:17;9256:54785:35;;;;;;-1:-1:-1;;9256:54785:35;;;;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;9256:54785:35;29427:40;29454:12;29427:40;:::i;9256:54785::-;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;:::i;:::-;966:10:16;-1:-1:-1;;;;;9256:54785:35;;6489:34:13;6485:102;;6597:37;9256:54785:35;;;6597:37:13;:::i;6485:102::-;6546:30;;;9256:54785:35;6546:30:13;9256:54785:35;;6546:30:13;9256:54785:35;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;1936:9:36;9256:54785:35;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11931:35;;:::i;:::-;62361:27;9256:54785;;;;;;-1:-1:-1;9256:54785:35;;62361:19;;9256:54785;;;-1:-1:-1;9256:54785:35;;;62564:23;62695:22;62564:23;;;;9256:54785;62623:26;;9256:54785;62695:22;;9256:54785;;;;;;;;:::i;:::-;;;;;62418:314;;9256:54785;;;;62418:314;;9256:54785;;;62418:314;9256:54785;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;5398:25:13;9256:54785:35;;;;:::i;:::-;5368:18:13;3283:4;5368:18;;;:::i;3283:4::-;5398:25;:::i;9256:54785:35:-;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;:::i;:::-;63973:59;11931:35;;:::i;:::-;63907:22;63795:73;9256:54785;;;;;;63816:19;;9256:54785;;;;;;63795:73;;:::i;:::-;9256:54785;;;;63907:22;9256:54785;63878:26;;9256:54785;63878:26;;9256:54785;63973:59;:::i;:::-;9256:54785;63939:31;;9256:54785;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;;;;;;41477:426;9256:54785;3283:4:13;;;:::i;:::-;41477:426:35;:::i;:::-;9256:54785;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;9256:54785:35;38689:55;38731:12;9256:54785;;38689:55;:::i;9256:54785::-;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21606:64:35;;;:146;;;;9256:54785;21606:220;;;;9256:54785;21606:292;;;;9256:54785;21606:344;;;;9256:54785;;;;;;;21606:344;-1:-1:-1;;;6687:49:36;;;-1:-1:-1;6687:89:36;;;;21606:344:35;;;;;6687:89:36;-1:-1:-1;;;1851:57:14;;;-1:-1:-1;1851:97:14;;;;6687:89:36;;;;;1851:97:14;-1:-1:-1;;;3599:47:13;;;-1:-1:-1;3599:87:13;;;;1851:97:14;;;;;3599:87:13;-1:-1:-1;;;1101:40:18;;-1:-1:-1;3599:87:13;;;21606:292:35;-1:-1:-1;;;21842:56:35;;;-1:-1:-1;21606:292:35;;:220;-1:-1:-1;;;21768:58:35;;;-1:-1:-1;21606:220:35;;:146;-1:-1:-1;;;21686:66:35;;;-1:-1:-1;21606:146:35;;9256:54785;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;9256:54785:35;;;;;-1:-1:-1;9256:54785:35;41477:426;41703:22;11931:35;;:::i;:::-;41703:22;9256:54785;;;;;;;;;;;;;;;;;41740:18;;;41736:35;;9256:54785;;;41829:45;9256:54785;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;41829:45;41892:4;41477:426;:::o;41736:35::-;41760:11;;;41767:4;41760:11;:::o;9256:54785::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;9256:54785:35;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;4807:191:13;-1:-1:-1;9256:54785:35;-1:-1:-1;;;;;;;;;;;9256:54785:35;;4967:24:13;9256:54785:35;-1:-1:-1;9256:54785:35;4967:24:13;9256:54785:35;4807:191:13;:::o;9256:54785:35:-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9256:54785:35;;-1:-1:-1;9256:54785:35;;;-1:-1:-1;9256:54785:35;:::o;:::-;;;;;-1:-1:-1;;;9256:54785:35;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;;;;;;;;;;;;;;;:::o;4196:103:13:-;966:10:16;-1:-1:-1;9256:54785:35;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;4516:23:13;4512:108;;4196:103::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;9256:54785:35;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;-1:-1:-1;4562:47:13;4196:103;966:10:16;-1:-1:-1;9256:54785:35;;;;;;;;;;;;4516:23:13;4512:108;;4196:103::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;9256:54785:35;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;-1:-1:-1;4562:47:13;4196:103;-1:-1:-1;9256:54785:35;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;966:10:16;9256:54785:35;;;;;;;;;;4516:23:13;4512:108;;4196:103;:::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;9256:54785:35;;;;-1:-1:-1;4562:47:13;1290:377:25;-1:-1:-1;;;;;;;;;;;3327:69:28;1444:93:25;;1655:4;-1:-1:-1;;;;;;;;;;;3556:68:28;1290:377:25:o;1444:93::-;1496:30;;;-1:-1:-1;1496:30:25;;-1:-1:-1;1496:30:25;40297:1105:35;11931:35;;:::i;:::-;9256:54785;;40554:42;;;;40550:59;;40624:21;;:::i;:::-;:43;40620:61;;40799:20;40706:17;;;40692:35;40706:20;;;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;40692:35;:::i;:::-;;40799:20;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;-1:-1:-1;9256:54785:35;;;40779:19;;;9256:54785;;;;;;;40941:33;9256:54785;40941:33;;:::i;:::-;40918:56;;9256:54785;;41187:33;;;;;:55;41308:65;41187:33;;;9256:54785;41187:33;;:::i;:::-;:55;:::i;:::-;9256:54785;;;;;;;;;;;;41308:65;41391:4;40297:1105;:::o;9256:54785::-;;;;;;;;40779:19;9256:54785;;;;;;;;40620:61;40669:12;;;9256:54785;40669:12;:::o;40550:59::-;40598:11;;;;40605:4;40598:11;:::o;9575:252::-;9256:54785;;9711:77;;;9256:54785;;;9711:77;;;;9256:54785;9711:77;;:::i;:::-;9256:54785;;9701:88;;-1:-1:-1;;9701:126:35;;9575:252::o;4035:348:14:-;4241:31;;;;:::i;:::-;4282:71;;;;4362:14;;4035:348;:::o;4282:71::-;-1:-1:-1;9256:54785:35;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;11511:50:33;;-1:-1:-1;;;;;9256:54785:35;;11511:50:33;:::i;:::-;;4035:348:14;:::o;4486:353::-;4693:32;;;;:::i;:::-;4735:74;;;;4818:14;;4486:353;:::o;4735:74::-;-1:-1:-1;9256:54785:35;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;11832:53:33;;-1:-1:-1;;;;;9256:54785:35;;11832:53:33;:::i;9256:54785:35:-;;;;;;;;;;;;;;;;:::o;30668:2269::-;30744:7;;:::i;:::-;11931:35;;:::i;:::-;30895:23;;;9256:54785;;;30895:40;;;;:73;;;30668:2269;9256:54785;;;31139:39;;;;:::i;:::-;31192:11;;;31188:37;;9256:54785;;;31618:27;;;;;:::i;:::-;31683:19;;;;9256:54785;31733:75;:34;;;:75;:34;;;31770;;;;:::i;:::-;31733:75;;31823:13;31819:937;;31733:75;9256:54785;;;;11931:35;;:::i;:::-;33824:137;31088:12;33824:29;;31088:12;;9256:54785;33824:137;;34065:30;;;34061:276;;33824:137;34347:19;;31683;34347;;;9256:54785;30668:2269;:::o;34061:276::-;34255:22;;;;:::i;:::-;30895:23;9256:54785;;;;;;;34116:210;9256:54785;31683:19;9256:54785;;;;;34116:210;9256:54785;;;;;;;;;;;34116:210;34061:276;;;;33824:137;33885:34;;;;;;33922;;;;:::i;:::-;33824:137;;;33885:75;9256:54785;33885:75;;31819:937;32384:80;32236:17;;;;32384:43;32236:17;:20;:17;;;:20;:::i;:::-;9256:54785;;31683:19;9256:54785;;;;;-1:-1:-1;;;;;9256:54785:35;-1:-1:-1;9256:54785:35;;;32311:19;;;9256:54785;;;;;32405:22;;;;9256:54785;;32384:43;:::i;:::-;9256:54785;;32384:80;;:::i;:::-;32504:22;;;;;:::i;:::-;32545:26;;;;;;32632:13;;;;;;;;:::i;:::-;31819:937;;;;;32541:204;11931:35;;;;;;;;;;;:::i;:::-;35143:23;30895;35143;;9256:54785;;30895:23;9256:54785;;;;;;;30895:23;35239:13;;32311:19;32236:17;35258;;35392:19;;35234:475;35284:3;9256:54785;;35254:28;;;;;35320:20;;;;:::i;:::-;9256:54785;;31683:19;9256:54785;;;;;-1:-1:-1;;;;;9256:54785:35;-1:-1:-1;9256:54785:35;;;;;;;;;;;;;35392:27;9256:54785;;;35434:265;;35284:3;;;30895:23;35284:3;;9256:54785;35239:13;;35434:265;35510:40;;;;:::i;:::-;35568:11;-1:-1:-1;;;;;9256:54785:35;;;35568:32;;;;;9256:54785;;-1:-1:-1;;;35568:32:35;;-1:-1:-1;;;;;9256:54785:35;;32311:19;35568:32;;9256:54785;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;-1:-1:-1;;35568:32:35;;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;35568:32;;;;;;30895:23;35568:32;;;35434:265;9256:54785;;;;;;35623:61;35434:265;;;;35568:32;9256:54785;35568:32;;;:::i;:::-;;;;;9256:54785;;;;;;;;;35254:28;;35820:26;35254:28;;;;;;;;;;;;;;35820:26;:::i;:::-;35860:23;;35856:337;;35234:475;32541:204;;;;;35856:337;35924:20;;;:::i;:::-;9256:54785;;31683:19;9256:54785;;;;;-1:-1:-1;;;;;9256:54785:35;;35958:225;;35856:337;35958:225;36010:11;-1:-1:-1;;;;;9256:54785:35;;-1:-1:-1;9256:54785:35;;36010:53;;;;;9256:54785;;-1:-1:-1;;;36010:53:35;;-1:-1:-1;;;;;9256:54785:35;;32311:19;36010:53;;9256:54785;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;-1:-1:-1;;36010:53:35;;;;;;;9256:54785;36010:53;;;-1:-1:-1;;;;;;;;;;;36010:53:35;;;;;35958:225;9256:54785;;;;;;36086:82;35958:225;;;35856:337;;36010:53;9256:54785;36010:53;;;:::i;:::-;;;;31733:75;9256:54785;31733:75;;;31188:37;31205:20;;;;:::o;9256:54785::-;;;;;;;;;;;31088:12;9256:54785;;;;;30895:73;30956:12;;30939:29;;;30895:73;;51219:1370;;;51426:72;9256:54785;51426:72;;;:::i;:::-;51425:73;51421:90;;51526:21;;:::i;:::-;:43;51522:61;;51594:21;;;:::i;:::-;;51625:64;51639:49;:46;11931:35;;:::i;:::-;51639:46;:49;:::i;51625:64::-;;11931:35;;:::i;:::-;54960:19;;;:27;9256:54785;;;;;;;;;;;;;;;55058:17;:20;51639:46;55058:17;;:20;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;;;;;;;;55566:121;;9256:54785;;55566:80;;;:::i;:::-;55661:26;;9256:54785;;;55566:121;;:::i;:::-;55718:55;;;9256:54785;;55979:36;56068:22;55979:36;;;56068:51;55979:36;;:::i;:::-;:54;9256:54785;56068:22;9256:54785;;;;;56068:51;;:::i;:::-;:69;9256:54785;11931:35;;:::i;:::-;-1:-1:-1;;;;;9256:54785:35;;-1:-1:-1;9256:54785:35;;;54960:19;56866;;9256:54785;;;;;;57901:25;;;;;:49;;51219:1370;57897:489;;;9256:54785;-1:-1:-1;55661:26:35;9256:54785;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;58029:36;:71;;;57897:489;58025:107;;57897:489;9256:54785;;;;;58215:26;9256:54785;57897:489;9256:54785;;;;;-1:-1:-1;9256:54785:35;;;;-1:-1:-1;;;;;9256:54785:35;;52491:70;55661:26;51219:1370;:::o;58025:107::-;51639:46;58102:30;:17;;:30;:::i;:::-;58025:107;;;;58029:71;58069:26;;;;9256:54785;58069:31;58029:71;;57897:489;11931:35;;;;;:::i;:::-;58843:13;-1:-1:-1;;;;;9256:54785:35;;;51639:46;58862:17;;;55661:26;58888:3;9256:54785;;58858:28;;;;;;58911:20;;;;;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;58911:30;58907:255;;58888:3;55661:26;9256:54785;58843:13;;58907:255;9256:54785;;;;;;;;;;;;;;;;58961:20;58984:47;58961:70;58984:47;;;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;58961:20;;:::i;:70::-;9256:54785;;;;;;;-1:-1:-1;;;;;;;;;;;52491:70:35;9256:54785;;54960:19;;-1:-1:-1;;9256:54785:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9256:54785:35;59097:19;9256:54785;;-1:-1:-1;9256:54785:35;;;;;;;;;;;;;;57897:489;;9256:54785;;;;-1:-1:-1;9256:54785:35;;54960:19;9256:54785;;-1:-1:-1;9256:54785:35;58858:28;;;;;-1:-1:-1;;;;;;;;;;;58858:28:35;;;9256:54785;58858:28;;57897:489;;57901:49;;-1:-1:-1;57901:49:35;;9256:54785;;;;;-1:-1:-1;9256:54785:35;54960:19;9256:54785;;;;-1:-1:-1;9256:54785:35;51522:61;51571:12;;9256:54785;51571:12;:::o;51219:1370::-;;;;;51426:72;;;;;:::i;:::-;51425:73;51421:90;;51526:21;;:::i;:::-;:43;51522:61;;51594:21;;;:::i;:::-;;51625:64;51639:49;:46;11931:35;;:::i;51625:64::-;;11931:35;;:::i;:::-;54960:19;;;:27;9256:54785;;;;;;;-1:-1:-1;9256:54785:35;;;;;-1:-1:-1;9256:54785:35;55058:17;:20;51639:46;55058:17;;:20;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;-1:-1:-1;9256:54785:35;;;;;;;;;;;;;;;55566:121;;9256:54785;;55566:80;;;:::i;:121::-;55718:38;;;;;:::i;:::-;:55;55867:38;;;;:::i;:::-;9256:54785;;;55979:36;56068:22;:69;55979:36;;;:54;:36;;;56068:51;55979:36;;:::i;:54::-;9256:54785;;56068:22;9256:54785;;;;;56068:51;;:::i;:::-;:69;:::i;:::-;9256:54785;;11931:35;;:::i;:::-;-1:-1:-1;;;;;9256:54785:35;;-1:-1:-1;9256:54785:35;;;54960:19;56866;;9256:54785;;;;;;57901:25;;;;;:49;;51219:1370;57897:489;;;9256:54785;;55661:26;9256:54785;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;58029:36;:71;;;57897:489;58025:107;;57897:489;9256:54785;;;;;58215:26;9256:54785;57897:489;9256:54785;;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;52491:70;55661:26;51219:1370;:::o;58025:107::-;51639:46;58102:30;:17;;:30;:::i;:::-;58025:107;;;;58029:71;58069:26;;;;9256:54785;58069:31;58029:71;;57897:489;11931:35;;;;;:::i;:::-;58843:13;-1:-1:-1;;;;;9256:54785:35;;;51639:46;58862:17;;;55661:26;58888:3;9256:54785;;58858:28;;;;;;58911:20;;;;;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;58911:30;58907:255;;58888:3;55661:26;9256:54785;58843:13;;58907:255;9256:54785;;;;;;;;;;;;;;;;;58961:20;58984:47;58961:70;58984:47;;;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;58961:20;;:::i;:70::-;9256:54785;;;;;;;-1:-1:-1;;;;;;;;;;;52491:70:35;9256:54785;;54960:19;;-1:-1:-1;;9256:54785:35;;;;;;;:::i;:::-;;-1:-1:-1;9256:54785:35;59097:19;9256:54785;;-1:-1:-1;9256:54785:35;;;;;;;;;;;;;;57897:489;;58858:28;;;;;;-1:-1:-1;;;;;;;;;;;58858:28:35;;;9256:54785;58858:28;;57897:489;;57901:49;57930:20;;;;57901:49;;9256:54785;;;;;;54960:19;9256:54785;;;;;;42760:909;-1:-1:-1;;;;;9256:54785:35;42910:20;;42906:37;;43066:19;11931:35;;:::i;:::-;43066:19;9256:54785;;;;;43269:34;9256:54785;;;43269:34;9256:54785;;43253:12;:50;;43249:67;;43253:12;9256:54785;;43585:56;;;;;9256:54785;;;43066:19;9256:54785;;;;;;;;;43585:56;;;;;;;;;;42760:909;43651:11;43658:4;42760:909;:::o;43585:56::-;9256:54785;43585:56;;;:::i;:::-;9256:54785;43585:56;;43249:67;43305:11;;43312:4;43305:11;:::o;27633:344::-;11931:35;;:::i;:::-;27700:64;;:::i;:::-;9256:54785;-1:-1:-1;;;;;;;;;;;9256:54785:35;;27811:44;;27877:19;;9256:54785;27873:23;:97;;27899:40;27926:12;27899:40;:::i;:::-;27633:344;:::o;27873:97::-;27942:28;;:::i;27811:44::-;27832:23;;9256:54785;27825:30;:::o;48797:1895::-;11931:35;;:::i;:::-;49003:17;;;;:20;;;;:::i;:::-;9256:54785;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;;;;;;;49037:24;;;49033:41;;9256:54785;;49524:1;49527:28;;;;;;49691:21;;;;:::i;:::-;:43;49687:61;;50027:19;50248:33;49829:25;;;;:::i;:::-;;49864;;;:::i;:::-;;50027:19;:31;9256:54785;-1:-1:-1;9256:54785:35;;;;50248:20;50027:55;9256:54785;-1:-1:-1;9256:54785:35;50027:55;9256:54785;50248:20;;:::i;:33::-;-1:-1:-1;;;;;9256:54785:35;;-1:-1:-1;9256:54785:35;;;;;;;;;;;;;;;;;;;;;;49507:170;50373:31;;9256:54785;;;;;;;-1:-1:-1;9256:54785:35;;;;-1:-1:-1;9256:54785:35;;;;;;;;;;;;;;;-1:-1:-1;9256:54785:35;;;50027:55;9256:54785;-1:-1:-1;9256:54785:35;50519:55;9256:54785;50620:44;9256:54785;50620:44;;49524:1;48797:1895;:::o;9256:54785::-;50027:55;9256:54785;;;;;;49524:1;9256:54785;;;49524:1;9256:54785;;;;;;;;;;;;49687:61;49736:12;;;;;9256:54785;49736:12;:::o;49557:3::-;49584:20;;;;;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;49584:34;9256:54785;;49524:1;9256:54785;49512:13;;9256:54785;;;;;;;;;;;;49033:41;49063:11;;;;;;49070:4;49063:11;:::o;7318:387:13:-;-1:-1:-1;;;;;9256:54785:35;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;-1:-1:-1;;9256:54785:35;;;;;966:10:16;;9256:54785:35;-1:-1:-1;;;;;;;;;;;2399:26:36;7580:40:13;;9256:54785:35;7580:40:13;7557:4;7634:11;:::o;7480:219::-;7676:12;9256:54785:35;7676:12:13;:::o;7318:387::-;9256:54785:35;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;966:10:16;;9256:54785:35;;7580:40:13;;9256:54785:35;7580:40:13;7557:4;7634:11;:::o;7942:388::-;9256:54785:35;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;;;;;;;;;;;;;;-1:-1:-1;;9256:54785:35;;;966:10:16;;9256:54785:35;;8205:40:13;;9256:54785:35;8205:40:13;9256:54785:35;8259:11:13;:::o;24659:2295:35:-;11931:35;;:::i;:::-;24812:22;;;9256:54785;;;24865:12;24848:29;;24844:42;;24913:28;24865:12;;24913:28;:::i;:::-;9256:54785;24987:1;9256:54785;;;;;;;25371:19;;;9256:54785;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;;25404:28;;;;24659:2295;25400:357;;24659:2295;24865:12;;;9256:54785;;25882:22;;;9256:54785;25878:26;25874:1074;;24659:2295;;;;;:::o;25874:1074::-;9256:54785;25924:22;;;9256:54785;;25371:19;9256:54785;;;;;24812:22;25924:56;;24812:22;;-1:-1:-1;;26085:17:35;;;9256:54785;;;26235:19;;;;;26066:13;-1:-1:-1;26081:28:35;;;;;;25920:945;;;;;;;25874:1074;;;;;;26111:3;26155:20;;24987:1;26155:20;;;:::i;:::-;9256:54785;;;;;;;;25371:19;9256:54785;;;;;;;;;;-1:-1:-1;9256:54785:35;;;;;;;-1:-1:-1;9256:54785:35;26293:26;9256:54785;26289:30;;26285:234;;26111:3;;;;;9256:54785;26066:13;;26285:234;26364:35;;;:::i;:::-;9256:54785;;;;;;26430:66;9256:54785;24865:12;26430:66;;26285:234;;;;;;25920:945;9256:54785;;;;-1:-1:-1;9256:54785:35;24987:1;26561:56;26557:308;;25920:945;;;;;;26557:308;26724:31;;;:::i;:::-;9256:54785;;;;;;26778:72;9256:54785;24865:12;26778:72;;26557:308;;;;;25400:357;25448:54;25471:31;:22;;;;9256:54785;25471:31;:::i;:::-;25448:54;;:::i;:::-;9256:54785;;;25584:35;;;25580:167;25400:357;25580:167;9256:54785;;;;;;;;;24865:12;25644:88;9256:54785;24865:12;25644:88;;25580:167;;25400:357;;25404:28;25416:16;;;;25404:28;;24844:42;24879:7;;;:::o;36704:1751::-;;;;11931:35;;:::i;:::-;37148:18;;;;:36;;;;36704:1751;37144:49;;37223:23;;;9256:54785;;37223:23;9256:54785;;;;;;;37539:19;;;;37386:13;37405:17;;37223:23;37431:3;9256:54785;;37401:28;;;;;37467:20;;;;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;-1:-1:-1;9256:54785:35;;;;;;;;;;;;;37539:27;9256:54785;;;37581:858;;37431:3;;;37223:23;37431:3;;9256:54785;37386:13;;37581:858;38230:43;;;;:::i;:::-;9256:54785;;;38308:11;-1:-1:-1;;;;;9256:54785:35;;;;;;38308:32;;;;;9256:54785;;-1:-1:-1;;;38308:32:35;;-1:-1:-1;;;;;9256:54785:35;;37539:19;38308:32;;9256:54785;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;-1:-1:-1;;38308:32:35;;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;38308:32;;37223:23;38308:32;;;;;37581:858;9256:54785;;;;;;38363:61;37581:858;;;;38308:32;37165:1;38308:32;;;:::i;:::-;;;;9256:54785;;;;37165:1;9256:54785;;37539:19;9256:54785;;37165:1;9256:54785;37401:28;;;;;;;;;;36704:1751::o;37144:49::-;37186:7;;;;;:::o;37148:36::-;37170:14;;;37148:36;;53138:932;-1:-1:-1;;;;;9256:54785:35;;53138:932;53320:20;;9256:54785;;11931:35;;:::i;:::-;53474:17;;;53532:20;53474;;;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;53464:30;;;53532:20;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;;;53603:27;:19;:27;9256:54785;-1:-1:-1;9256:54785:35;53603:19;9256:54785;;;-1:-1:-1;9256:54785:35;;;;;53645:55;:104;;;;53138:932;53641:134;;;;53810:25;;;;:49;;;53138:932;53806:235;;;54052:11;54059:4;53138:932;:::o;53806:235::-;9256:54785;;-1:-1:-1;;;53898:68:35;;-1:-1:-1;;;53603:19:35;53898:68;;9256:54785;;;53898:68;9256:54785;53898:68;;;;;;;;9256:54785;53898:68;;;53806:235;9256:54785;53806:235;9256:54785;;;;;;53603:19;9256:54785;53898:68;9256:54785;;53898:68;;;9256:54785;53898:68;;9256:54785;53898:68;;;;;;9256:54785;53898:68;;;:::i;:::-;;;9256:54785;;;;;;;;;;;;53898:68;;;;;;-1:-1:-1;53898:68:35;;53810:49;53839:20;;;;53810:49;;;53645:104;53704:26;;9256:54785;53704:45;;-1:-1:-1;53645:104:35;;;;9256:54785;;;;;;;;;;;;;;;;;;;;28289:936;11931:35;;:::i;:::-;28470:23;;;;9256:54785;;;28455:12;:38;:12;;:38;:::i;:::-;28507:11;;;28503:47;;28470:23;9256:54785;;;;;;;;28624:13;;28826:19;28643:17;;;28826:19;;28619:522;28669:3;9256:54785;;28639:28;;;;;28705:20;;;;:::i;:::-;9256:54785;;;;;;;;-1:-1:-1;;;;;9256:54785:35;;28743:20;;28739:34;;9256:54785;;;;;;;-1:-1:-1;9256:54785:35;;;;;;-1:-1:-1;9256:54785:35;;28871:35;28867:264;;28669:3;;;28470:23;28669:3;;28624:13;9256:54785;28624:13;;28867:264;28943:40;;;;:::i;:::-;29001:11;-1:-1:-1;;;;;9256:54785:35;;29001:32;;;;;9256:54785;;-1:-1:-1;;;29001:32:35;;-1:-1:-1;;;;;9256:54785:35;;28826:19;29001:32;;9256:54785;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;-1:-1:-1;;29001:32:35;;;;;;;28470:23;29001:32;;;;;28867:264;9256:54785;;;;;;-1:-1:-1;;;;;;;;;;;9256:54785:35;28455:12;29056:60;;28867:264;;;;29001:32;9256:54785;29001:32;;;:::i;:::-;;;;28739:34;28470:23;28765:8;;;;28639:28;;;;;;;28455:12;9256:54785;;28455:12;28289:936;:::o;28503:47::-;-1:-1:-1;28520:30:35;;-1:-1:-1;;28520:30:35:o;2497:406:33:-;5197:14;;;9256:54785:35;;;;;;;;;;;5197:26:33;2576:321;9256:54785:35;;;;;-1:-1:-1;;;9256:54785:35;;;;;;;;5197:14:33;9256:54785:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5197:14:33;2832:11;:::o;3071:1368::-;;3266:14;;;9256:54785:35;;;;;;;;;;;3302:13:33;;;3298:1135;3302:13;;;-1:-1:-1;;9256:54785:35;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;;;3777:23:33;;;3773:378;;3298:1135;9256:54785:35;;;;;;;;;-1:-1:-1;;9256:54785:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3266:14:33;4368:11;:::o;3773:378::-;9256:54785:35;3840:22:33;3961:23;3840:22;;;:::i;:::-;9256:54785:35;;;;;;3961:23:33;;;;;:::i;9256:54785:35:-;;;;;;;;;;;;3773:378:33;;;;;3298:1135;4410:12;;;;9256:54785:35;4410:12:33;:::o;7082:141:15:-;9256:54785:35;-1:-1:-1;;;;;;;;;;;9256:54785:35;;;;7148:18:15;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:15;;-1:-1:-1;7189:17:15"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","GOVERNOR_ROLE()":"ccc57490","MILLION()":"32bc934c","OPERATOR_ROLE()":"f5b541a6","PAUSE_ROLE()":"389ed267","distributeIssuance()":"49bdfcb0","distributePendingIssuance()":"3af5b073","distributePendingIssuance(uint256)":"52c0e18c","forceTargetNoChangeNotificationBlock(address,uint256)":"7c92330b","getDistributionState()":"ee56977e","getIssuancePerBlock()":"79d5fc54","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","getRoleMembers(bytes32)":"a3246ad3","getSelfMintingEventMode()":"93c911a8","getTargetAllocation(address)":"84c48422","getTargetAt(uint256)":"87ee921c","getTargetCount()":"4a1293b7","getTargetData(address)":"48c3c62e","getTargetIssuancePerBlock(address)":"3067cb4c","getTargets()":"63fe3b56","getTotalAllocation()":"15d3b5d8","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address)":"c4d66de8","notifyTarget(address)":"4887693c","pause()":"8456cb59","paused()":"5c975abb","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setDefaultTarget(address)":"697cf322","setDefaultTarget(address,uint256)":"d012a15b","setIssuancePerBlock(uint256)":"1156bdc1","setIssuancePerBlock(uint256,uint256)":"c627b7a4","setSelfMintingEventMode(uint8)":"13a7855d","setTargetAllocation(address,uint256)":"443990fa","setTargetAllocation(address,uint256,uint256)":"647b3682","setTargetAllocation(address,uint256,uint256,uint256)":"c2cb3544","supportsInterface(bytes4)":"01ffc9a7","unpause()":"3f4ba83a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_graphToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultTarget\",\"type\":\"address\"}],\"name\":\"CannotSetAllocationForDefaultTarget\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"CannotSetDefaultToAllocatedTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GovernorCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GraphTokenCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllocationAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"oldRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unallocated\",\"type\":\"uint256\"}],\"name\":\"InsufficientUnallocatedForRateDecrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"TargetDoesNotSupportIIssuanceTarget\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxBlock\",\"type\":\"uint256\"}],\"name\":\"ToBlockOutOfRange\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"DefaultTargetUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"}],\"name\":\"IssuanceDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldIssuancePerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newIssuancePerBlock\",\"type\":\"uint256\"}],\"name\":\"IssuancePerBlockUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"}],\"name\":\"IssuanceSelfMintAllowance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"}],\"name\":\"IssuanceSelfMintAllowanceAggregate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum SelfMintingEventMode\",\"name\":\"oldMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum SelfMintingEventMode\",\"name\":\"newMode\",\"type\":\"uint8\"}],\"name\":\"SelfMintingEventModeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offsetBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offsetAfter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"}],\"name\":\"SelfMintingOffsetAccumulated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offsetBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offsetAfter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalForPeriod\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"}],\"name\":\"SelfMintingOffsetReconciled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAllocatorMintingRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSelfMintingRate\",\"type\":\"uint256\"}],\"name\":\"TargetAllocationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOVERNOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MILLION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributeIssuance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributePendingIssuance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toBlockNumber\",\"type\":\"uint256\"}],\"name\":\"distributePendingIssuance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"forceTargetNoChangeNotificationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDistributionState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastDistributionBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastSelfMintingBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingOffset\",\"type\":\"uint256\"}],\"internalType\":\"struct DistributionState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getIssuancePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelfMintingEventMode\",\"outputs\":[{\"internalType\":\"enum SelfMintingEventMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetAllocation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalAllocationRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Allocation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getTargetAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTargetCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeNotifiedBlock\",\"type\":\"uint256\"}],\"internalType\":\"struct AllocationTarget\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetIssuancePerBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allocatorIssuanceRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatorIssuanceBlockAppliedTo\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfIssuanceRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfIssuanceBlockAppliedTo\",\"type\":\"uint256\"}],\"internalType\":\"struct TargetIssuancePerBlock\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTargets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalAllocation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalAllocationRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Allocation\",\"name\":\"allocation\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governor\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"notifyTarget\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setDefaultTarget\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minDistributedBlock\",\"type\":\"uint256\"}],\"name\":\"setDefaultTarget\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newIssuancePerBlock\",\"type\":\"uint256\"}],\"name\":\"setIssuancePerBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newIssuancePerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDistributedBlock\",\"type\":\"uint256\"}],\"name\":\"setIssuancePerBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum SelfMintingEventMode\",\"name\":\"newMode\",\"type\":\"uint8\"}],\"name\":\"setSelfMintingEventMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIssuanceTarget\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"}],\"name\":\"setTargetAllocation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIssuanceTarget\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"}],\"name\":\"setTargetAllocation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIssuanceTarget\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDistributedBlock\",\"type\":\"uint256\"}],\"name\":\"setTargetAllocation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"custom:security-contact\":\"Please email security+contracts@thegraph.com if you find any bugs. We might have an active bug bounty program.\",\"details\":\"The contract maintains a 100% allocation invariant through a default target mechanism: - A default target exists at targetAddresses[0] (initialized to address(0)) - The default target automatically receives any unallocated portion of issuance - Total allocation across all targets always equals issuancePerBlock (tracked as absolute rates) - The default target address can be changed via setDefaultTarget() - When the default address is address(0), this 'unallocated' portion is not minted - Regular targets cannot be set as the default target addressThe contract supports two types of allocation for each target: 1. Allocator-minting allocation: The IssuanceAllocator calculates and mints tokens directly to targets    for this portion of their allocation. 2. Self-minting allocation: The IssuanceAllocator calculates issuance but does not mint tokens directly.    Instead, targets are expected to call `getTargetIssuancePerBlock` to determine their self-minting    issuance amount and mint tokens themselves. This feature is primarily intended for backwards    compatibility with existing contracts like the RewardsManager. Each target can have both allocator-minting and self-minting allocations. New targets are expected to use allocator-minting allocation to provide more robust control over token issuance through the IssuanceAllocator. The self-minting allocation is intended only for backwards compatibility with existing contracts.Pause Behavior: - Allocator-minting: Completely suspended during pause. No tokens minted, lastDistributionBlock frozen.   When unpaused, distributes retroactively using current rates for entire undistributed period. (Distribution will be triggered by calling distributeIssuance() when not paused.) - Self-minting: Continues tracking via events and accumulation during pause. Accumulated self-minting   reduces allocator-minting budget when distribution resumes, ensuring total issuance conservation. - Ongoing accumulation: Once accumulation starts (during pause), continues through any unpaused   periods until distribution clears it, preventing loss of self-minting allowances across pause cycles. - Tracking divergence: lastSelfMintingBlock advances during pause (for allowance tracking) while   lastDistributionBlock stays frozen (no allocator-minting). This is intentional and correct.Issuance Accounting Invariants: The contract maintains strict accounting to ensure total token issuance never exceeds the configured issuancePerBlock rate over any time period. This section provides the mathematical foundation for understanding the relationship between self-minting and allocator-minting. Key Invariants: 1. Allocation Completeness: For all blocks b, totalAllocatorRate_b + totalSelfMintingRate_b = issuancePerBlock_b    This ensures 100% of issuance is always allocated across all targets. 2. Self-Minting Accumulation: For any undistributed block range [fromBlock, toBlock]:    selfMintingOffset = \\u03a3(totalSelfMintingRate_b) for all b in range    where totalSelfMintingRate_b is the end-state rate for block b. 3. Rate Constraint: For all blocks b, totalSelfMintingRate_b \\u2264 issuancePerBlock_b    This follows from invariant (1) since 0 \\u2264 totalAllocatorRate_b. 4. Issuance Upper Bound: For any distribution period with blocks = toBlock - fromBlock + 1:    Let issuancePerBlock_final = current issuancePerBlock at distribution time    From invariants (2) and (3):      selfMintingOffset \\u2264 \\u03a3(issuancePerBlock_b)    Allocator-minting budget for period:      available = max(0, issuancePerBlock_final * blocks - selfMintingOffset)    Total minted (self + allocator) for period:      \\u2264 max(selfMintingOffset, issuancePerBlock_final * blocks)      \\u2264 \\u03a3(issuancePerBlock_b)    Therefore, total issuance never exceeds the sum of configured rates during the period. 5. Offset Reconciliation: During pending distribution, selfMintingOffset is adjusted to account for    the period's issuance budget. When distribution catches up to current block, the offset is cleared.    Any remaining offset when cleared represents self-minting that occurred beyond what the final    issuancePerBlock rate would allow for the period. This is acceptable because:    a) Self-minting targets were operating under rates that were valid at the time    b) The total minted still respects the \\u03a3(issuancePerBlock_b) bound (invariant 4)    c) Clearing the offset prevents it from affecting future distributions    d) The SelfMintingOffsetReconciled event provides visibility into all offset adjustments This design ensures that even when issuancePerBlock or allocation rates change over time, and even when self-minting targets mint independently, the total tokens minted never exceeds the sum of configured issuance rates during the period.There are a number of scenarios where the IssuanceAllocator could run into issues, including: 1. The targetAddresses array could grow large enough that it exceeds the gas limit when calling distributeIssuance. 2. When notifying targets of allocation changes the calls to `beforeIssuanceAllocationChange` could exceed the gas limit. 3. Target contracts could revert when notifying them of changes via `beforeIssuanceAllocationChange`. While in practice the IssuanceAllocator is expected to have a relatively small number of trusted targets, and the gas limit is expected to be high enough to handle the above scenarios, the following would allow recovery: 1. The contract can be paused, which can help make the recovery process easier to manage. 2. The GOVERNOR_ROLE can directly trigger change notification to individual targets. As there is per target    tracking of the lastChangeNotifiedBlock, this can reduce the gas cost of other operations and allow    for graceful recovery. 3. If a target reverts when notifying it of changes or notifying it is too expensive, the GOVERNOR_ROLE can use `forceTargetNoChangeNotificationBlock()`    to skip notifying that particular target of changes. In combination these should allow recovery from gas limit issues or malfunctioning targets, with fine-grained control over which targets are notified of changes and when.Reentrancy Protection: The contract code is designed to be reentrant-safe and should be carefully reviewed and maintained to preserve this property. However, reentrancy guards (using transient storage per EIP-1153) are applied to governance functions that modify configuration or state as an additional layer of defense. This provides protection against potential issues if the multi-sig governor role were to have known signatures that could be exploited by malicious actors to trigger reentrant calls. The `distributeIssuance()` function intentionally does NOT have a reentrancy guard to allow legitimate use cases where targets call it during notifications (e.g., to claim pending issuance before allocation changes). This is safe because distributeIssuance() has built-in block-tracking protection (preventing double-distribution in the same block), makes no external calls that could expose inconsistent state, and does not modify allocations.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CannotSetAllocationForDefaultTarget(address)\":[{\"params\":{\"defaultTarget\":\"The address of the default target\"}}],\"CannotSetDefaultToAllocatedTarget(address)\":[{\"params\":{\"target\":\"The target address that already has an allocation\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InsufficientAllocationAvailable(uint256,uint256)\":[{\"params\":{\"available\":\"The available budget for this target\",\"requested\":\"The total requested allocation (allocator + self minting)\"}}],\"InsufficientUnallocatedForRateDecrease(uint256,uint256,uint256)\":[{\"params\":{\"newRate\":\"The proposed new issuance rate\",\"oldRate\":\"The current issuance rate\",\"unallocated\":\"The unallocated budget available to absorb the decrease\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"TargetDoesNotSupportIIssuanceTarget(address)\":[{\"params\":{\"target\":\"The target address that doesn't support the interface\"}}],\"ToBlockOutOfRange(uint256,uint256,uint256)\":[{\"params\":{\"maxBlock\":\"The maximum valid block number (current block)\",\"minBlock\":\"The minimum valid block number (lastDistributionBlock)\",\"toBlock\":\"The invalid block number provided\"}}]},\"events\":{\"DefaultTargetUpdated(address,address)\":{\"params\":{\"newAddress\":\"The new default target address\",\"oldAddress\":\"The previous default target address\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"IssuanceDistributed(address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of tokens distributed\",\"fromBlock\":\"First block included in this distribution (inclusive)\",\"target\":\"The address of the target that received issuance\",\"toBlock\":\"Last block included in this distribution (inclusive). Range is [fromBlock, toBlock]\"}},\"IssuancePerBlockUpdated(uint256,uint256)\":{\"params\":{\"newIssuancePerBlock\":\"The new issuance per block amount\",\"oldIssuancePerBlock\":\"The previous issuance per block amount\"}},\"IssuanceSelfMintAllowance(address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of tokens available for self-minting\",\"fromBlock\":\"First block included in this allowance period (inclusive)\",\"target\":\"The address of the target with self-minting allocation\",\"toBlock\":\"Last block included in this allowance period (inclusive). Range is [fromBlock, toBlock]\"}},\"IssuanceSelfMintAllowanceAggregate(uint256,uint256,uint256)\":{\"details\":\"This event is emitted when selfMintingEventMode is Aggregate, providing a single event instead of per-target events to reduce gas costs\",\"params\":{\"fromBlock\":\"First block included in this allowance period (inclusive)\",\"toBlock\":\"Last block included in this allowance period (inclusive)\",\"totalAmount\":\"The total amount of tokens available for self-minting across all targets\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SelfMintingEventModeUpdated(uint8,uint8)\":{\"params\":{\"newMode\":\"The new event emission mode\",\"oldMode\":\"The previous event emission mode\"}},\"SelfMintingOffsetAccumulated(uint256,uint256,uint256,uint256)\":{\"details\":\"This event provides visibility into offset growth during pause periods or while catching up after unpause. Together with SelfMintingOffsetReconciled, provides complete accounting of all offset changes.\",\"params\":{\"fromBlock\":\"First block in the accumulation period (inclusive)\",\"offsetAfter\":\"The self-minting offset after accumulation\",\"offsetBefore\":\"The self-minting offset before accumulation\",\"toBlock\":\"Last block in the accumulation period (inclusive)\"}},\"SelfMintingOffsetReconciled(uint256,uint256,uint256,uint256,uint256)\":{\"details\":\"This event provides visibility into the accounting reconciliation between self-minting and allocator-minting budgets during pending distribution. When offsetAfter is 0, the contract has fully caught up with distribution. When offsetAfter > 0, there remains accumulated offset that will be applied to future distributions.\",\"params\":{\"fromBlock\":\"First block in the distribution period (inclusive)\",\"offsetAfter\":\"The self-minting offset after reconciliation (0 when caught up to current block)\",\"offsetBefore\":\"The self-minting offset before reconciliation\",\"toBlock\":\"Last block in the distribution period (inclusive)\",\"totalForPeriod\":\"The total issuance budget for the distributed period\"}},\"TargetAllocationUpdated(address,uint256,uint256)\":{\"params\":{\"newAllocatorMintingRate\":\"The new allocator-minting rate (tokens per block) for the target\",\"newSelfMintingRate\":\"The new self-minting rate (tokens per block) for the target\",\"target\":\"The address of the target whose allocation was updated\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"This contract is upgradeable, but we use the constructor to pass the Graph Token address to the base contract.\",\"params\":{\"_graphToken\":\"Address of the Graph Token contract\"}},\"distributeIssuance()\":{\"details\":\"Implementation details: - For allocator-minting targets, tokens are minted and transferred directly to targets based on their allocation rate - For self-minting targets (like the legacy RewardsManager), it does not mint tokens directly. Instead, these contracts are expected to handle minting themselves - The self-minting allocation is intended only for backwards compatibility with existing contracts and should not be used for new targets. New targets should use allocator-minting allocation to ensure robust control of token issuance by the IssuanceAllocatorPause behavior: - When paused: Self-minting allowances tracked via events/accumulation, but no allocator-minting tokens distributed.   Returns lastDistributionBlock (frozen at pause point). lastSelfMintingBlock advances to current block. - When unpaused: Normal distribution if no accumulated self-minting, otherwise retroactive distribution   using current rates for entire undistributed period, with accumulated self-minting reducing allocator budget. - Unless paused, always advances lastDistributionBlock to block.number, even if no issuance to distribute.Reentrancy: This function intentionally does NOT have a reentrancy guard to allow targets to legitimately call it during notifications (e.g., to claim pending issuance before their allocation changes). This is safe because the function has built-in block-tracking protection that prevents double-distribution within the same block, makes no external calls that could expose inconsistent state, and does not modify allocations.\",\"returns\":{\"_0\":\"Block number that issuance has been distributed to. That will normally be the current block number, unless the contract is paused.\"}},\"distributePendingIssuance()\":{\"details\":\"Distributes accumulated allocator-minting issuance using current rates (retroactively applied to the period from lastDistributionBlock to current block). Prioritizes non-default targets getting full rates; default gets remainder.Finalizes self-minting accumulation for the period being distributed.\",\"returns\":{\"_0\":\"Block number that issuance was distributed up to\"}},\"distributePendingIssuance(uint256)\":{\"details\":\"Distributes accumulated allocator-minting issuance using current rates (retroactively applied to the period from lastDistributionBlock to toBlockNumber). Prioritizes non-default targets getting full rates; default gets remainder.Finalizes self-minting accumulation for the period being distributed.\",\"params\":{\"toBlockNumber\":\"Block number to distribute up to (must be <= block.number and >= lastDistributionBlock)\"},\"returns\":{\"_0\":\"Block number that issuance was distributed up to\"}},\"forceTargetNoChangeNotificationBlock(address,uint256)\":{\"details\":\"Implementation details: - This can be used to enable notification to be sent again (by setting to a past block) or to prevent notification until a future block (by setting to current or future block) - Returns the block number that was set, always equal to blockNumber in current implementation\",\"params\":{\"blockNumber\":\"Block number to set as the lastChangeNotifiedBlock\",\"target\":\"Address of the target to update\"},\"returns\":{\"_0\":\"The block number that was set\"}},\"getDistributionState()\":{\"returns\":{\"_0\":\"DistributionState struct containing block tracking and accumulation info\"}},\"getIssuancePerBlock()\":{\"returns\":{\"_0\":\"The current issuance per block\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"getSelfMintingEventMode()\":{\"returns\":{\"_0\":\"The current emission mode\"}},\"getTargetAllocation(address)\":{\"details\":\"Returns assigned allocation regardless of whether target is address(0) or the default.For address(0), no minting occurs but the allocation represents the unallocated portion.For effective allocations excluding unmintable portion, use getTotalAllocation().\",\"params\":{\"target\":\"Address of the target\"},\"returns\":{\"_0\":\"Allocation struct containing total, allocator-minting, and self-minting allocations\"}},\"getTargetAt(uint256)\":{\"params\":{\"index\":\"The index of the target address to retrieve\"},\"returns\":{\"_0\":\"The target address at the specified index\"}},\"getTargetCount()\":{\"returns\":{\"_0\":\"The total number of allocated targets\"}},\"getTargetData(address)\":{\"params\":{\"target\":\"Address of the target\"},\"returns\":{\"_0\":\"AllocationTarget struct containing target information including lastChangeNotifiedBlock\"}},\"getTargetIssuancePerBlock(address)\":{\"details\":\"Returns assigned issuance rates regardless of whether target is address(0) or the default.For address(0), no minting occurs but rates reflect what would be issued if mintable.selfIssuanceBlockAppliedTo reflects the last block for which self-minting allowances have been calculated and emitted (lastSelfMintingBlock). This advances continuously, unaffected by pause state.\",\"params\":{\"target\":\"Address of the target\"},\"returns\":{\"_0\":\"TargetIssuancePerBlock struct containing allocatorIssuanceBlockAppliedTo, selfIssuanceBlockAppliedTo, allocatorIssuanceRate, and selfIssuanceRate\"}},\"getTargets()\":{\"returns\":{\"_0\":\"Array of target addresses\"}},\"getTotalAllocation()\":{\"details\":\"For reporting purposes, if the default target is address(0), its allocationis treated as \\\"unallocated\\\" since address(0) cannot receive minting.When default is address(0): returns actual allocated amounts (may be less than issuancePerBlock)When default is a real address: returns issuancePerBlockNote: Internally, the contract always maintains 100% allocation invariant, even when default is address(0)\",\"returns\":{\"allocation\":\"Allocation struct containing total, allocator-minting, and self-minting allocations across all targets\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address)\":{\"details\":\"Initializes with a default target at index 0 set to address(0)Default target will receive all unallocated issuance (initially 0 until rate is set)lastDistributionBlock is set to block.number as a safety guard against pausing before configuration. lastSelfMintingBlock defaults to 0. issuancePerBlock is 0. Once setIssuancePerBlock() is called, it triggers _distributeIssuance() which updates lastDistributionBlock to current block, establishing the starting point for issuance tracking.selfMintingEventMode is initialized to PerTarget\",\"params\":{\"_governor\":\"Address that will have the GOVERNOR_ROLE\"}},\"notifyTarget(address)\":{\"details\":\"Implementation details: - The target will be notified at most once per block to prevent reentrancy looping - Will revert if target notification reverts\",\"params\":{\"target\":\"Address of the target to notify\"},\"returns\":{\"_0\":\"True if notification was sent or already sent this block, false otherwise\"}},\"pause()\":{\"details\":\"Pauses contract operations. Only functions using whenNotPaused modifier will be affected.\"},\"paused()\":{\"returns\":{\"_0\":\"True if the contract is paused, false otherwise\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setDefaultTarget(address)\":{\"params\":{\"newAddress\":\"The new default target address (can be address(0))\"},\"returns\":{\"_0\":\"True if applied\"}},\"setDefaultTarget(address,uint256)\":{\"details\":\"Governance should explicitly call distributePendingIssuance(blockNumber) first if paused and distribution is not up to minDistributedBlock block. then call this function with the same or lower blockNumber.\",\"params\":{\"minDistributedBlock\":\"Minimum block number that distribution must have reached\",\"newAddress\":\"The new default target address (can be address(0))\"},\"returns\":{\"_0\":\"True if applied, false if distribution has not reached minDistributedBlock and therefore the change was not applied\"}},\"setIssuancePerBlock(uint256)\":{\"details\":\"Requires distribution to have reached block.number\",\"params\":{\"newIssuancePerBlock\":\"New issuance per block\"},\"returns\":{\"_0\":\"True if the value is applied (including if already the case)\"}},\"setIssuancePerBlock(uint256,uint256)\":{\"details\":\"Implementation details: - Requires distribution to have reached at least minDistributedBlock - This allows configuration changes after calling distributePendingIssuance(blockNumber) while paused - Only the default target is notified (target rates don't change, only default target changes) - Target rates stay fixed; default target absorbs the change - Whenever the rate is changed, the updateL2MintAllowance function _must_ be called on the L1GraphTokenGateway in L1, to ensure the bridge can mint the right amount of tokensRate changes while paused: The new rate applies retroactively to the entire undistributed period when distribution resumes. Governance must exercise caution to ensure rates are applied to the correct block range. Use distributePendingIssuance(blockNumber) to control precisely which block the new rate applies from.\",\"params\":{\"minDistributedBlock\":\"Minimum block number that distribution must have reached\",\"newIssuancePerBlock\":\"New issuance per block\"},\"returns\":{\"_0\":\"True if the value is applied (including if already the case), false if distribution hasn't reached minDistributedBlock\"}},\"setSelfMintingEventMode(uint8)\":{\"details\":\"None: Skip event emission entirely (lowest gas)Aggregate: Emit single aggregated event for all self-minting (medium gas)PerTarget: Emit events for each target with self-minting (highest gas)Self-minting targets should call getTargetIssuancePerBlock() rather than relying on events\",\"params\":{\"newMode\":\"The new emission mode (None, Aggregate, or PerTarget)\"},\"returns\":{\"_0\":\"True if the mode was set (including if already set to that mode)\"}},\"setTargetAllocation(address,uint256)\":{\"details\":\"This variant sets selfMintingRate to 0 and evenIfDistributionPending to false\",\"params\":{\"allocatorMintingRate\":\"Allocator-minting rate for the target (tokens per block)\",\"target\":\"The target contract to update\"},\"returns\":{\"_0\":\"True if the value is applied (including if already the case), false if not applied\"}},\"setTargetAllocation(address,uint256,uint256)\":{\"details\":\"This variant sets evenIfDistributionPending to false\",\"params\":{\"allocatorMintingRate\":\"Allocator-minting rate for the target (tokens per block)\",\"selfMintingRate\":\"Self-minting rate for the target (tokens per block)\",\"target\":\"The target contract to update\"},\"returns\":{\"_0\":\"True if the value is applied (including if already the case), false if not applied\"}},\"setTargetAllocation(address,uint256,uint256,uint256)\":{\"details\":\"Implementation details: - Requires distribution has reached at least minDistributedBlock issuance to change allocation - This allows configuration changes while paused by being deliberate about which block to distribute to - If the new allocations are the same as the current allocations, this function is a no-op - If both allocations are 0 and the target doesn't exist, this function is a no-op - If both allocations are 0 and the target exists, the target will be removed - If any allocation is non-zero and the target doesn't exist, the target will be added - Will revert if the total allocation would exceed available capacity (default target + current target allocation) - Will revert if attempting to add a target that doesn't support IIssuanceTargetSelf-minting targets must call getTargetIssuancePerBlock to determine their issuance and mint accordingly. See contract header for details on self-minting vs allocator-minting allocation.\",\"params\":{\"allocatorMintingRate\":\"Allocator-minting rate for the target (tokens per block)\",\"minDistributedBlock\":\"Minimum block number that distribution must have reached\",\"selfMintingRate\":\"Self-minting rate for the target (tokens per block)\",\"target\":\"The target contract to update\"},\"returns\":{\"_0\":\"True if the value is applied (including if already the case), false if distribution hasn't reached minDistributedBlock and therefore the change was not applied\"}},\"supportsInterface(bytes4)\":{\"details\":\"Supports the four IssuanceAllocator sub-interfaces\"},\"unpause()\":{\"details\":\"Resumes contract operations. Only functions using whenPaused modifier will be affected.\"}},\"title\":\"IssuanceAllocator\",\"version\":1},\"userdoc\":{\"errors\":{\"CannotSetAllocationForDefaultTarget(address)\":[{\"notice\":\"Thrown when attempting to set allocation for the default target\"}],\"CannotSetDefaultToAllocatedTarget(address)\":[{\"notice\":\"Thrown when attempting to set default target address to a normally allocated target\"}],\"GovernorCannotBeZeroAddress()\":[{\"notice\":\"Thrown when attempting to set the governor to the zero address\"}],\"GraphTokenCannotBeZeroAddress()\":[{\"notice\":\"Thrown when attempting to set the Graph Token to the zero address\"}],\"InsufficientAllocationAvailable(uint256,uint256)\":[{\"notice\":\"Thrown when the total allocation would exceed available budget\"}],\"InsufficientUnallocatedForRateDecrease(uint256,uint256,uint256)\":[{\"notice\":\"Thrown when attempting to decrease issuance rate without sufficient unallocated budget\"}],\"TargetAddressCannotBeZero()\":[{\"notice\":\"Thrown when attempting to add a target with zero address\"}],\"TargetDoesNotSupportIIssuanceTarget(address)\":[{\"notice\":\"Thrown when a target does not support the IIssuanceTarget interface\"}],\"ToBlockOutOfRange(uint256,uint256,uint256)\":[{\"notice\":\"Thrown when toBlockNumber is out of valid range for accumulation\"}]},\"events\":{\"DefaultTargetUpdated(address,address)\":{\"notice\":\"Emitted when the default target is updated\"},\"IssuanceDistributed(address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when issuance is distributed to a target\"},\"IssuancePerBlockUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the issuance per block is updated\"},\"IssuanceSelfMintAllowance(address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when self-minting allowance is calculated for a target\"},\"IssuanceSelfMintAllowanceAggregate(uint256,uint256,uint256)\":{\"notice\":\"Emitted when self-minting allowance is calculated in aggregate mode\"},\"SelfMintingEventModeUpdated(uint8,uint8)\":{\"notice\":\"Emitted when self-minting event mode is changed\"},\"SelfMintingOffsetAccumulated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when self-minting offset accumulates during pause or catch-up\"},\"SelfMintingOffsetReconciled(uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when self-minting offset is reconciled during pending distribution\"},\"TargetAllocationUpdated(address,uint256,uint256)\":{\"notice\":\"Emitted when a target's allocation is updated\"}},\"kind\":\"user\",\"methods\":{\"GOVERNOR_ROLE()\":{\"notice\":\"Role identifier for governor accounts\"},\"MILLION()\":{\"notice\":\"One million - used as the denominator for values provided as Parts Per Million (PPM)\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role identifier for operator accounts\"},\"PAUSE_ROLE()\":{\"notice\":\"Role identifier for pause accounts\"},\"constructor\":{\"notice\":\"Constructor for the IssuanceAllocator contract\"},\"distributeIssuance()\":{\"notice\":\"Distribute issuance to allocated non-self-minting targets.\"},\"distributePendingIssuance()\":{\"notice\":\"Distribute pending accumulated allocator-minting issuance\"},\"distributePendingIssuance(uint256)\":{\"notice\":\"Distribute pending accumulated allocator-minting issuance up to specified block\"},\"forceTargetNoChangeNotificationBlock(address,uint256)\":{\"notice\":\"Force set the lastChangeNotifiedBlock for a target to a specific block number\"},\"getDistributionState()\":{\"notice\":\"Get pending issuance distribution state\"},\"getIssuancePerBlock()\":{\"notice\":\"Get the current issuance per block\"},\"getSelfMintingEventMode()\":{\"notice\":\"Get the current self-minting event emission mode\"},\"getTargetAllocation(address)\":{\"notice\":\"Get the current allocation for a target\"},\"getTargetAt(uint256)\":{\"notice\":\"Get a specific allocated target address by index\"},\"getTargetCount()\":{\"notice\":\"Get the number of allocated targets\"},\"getTargetData(address)\":{\"notice\":\"Get target data for a specific target\"},\"getTargetIssuancePerBlock(address)\":{\"notice\":\"Target issuance per block information\"},\"getTargets()\":{\"notice\":\"Get all allocated target addresses\"},\"getTotalAllocation()\":{\"notice\":\"Get the current global allocation totals\"},\"initialize(address)\":{\"notice\":\"Initialize the IssuanceAllocator contract\"},\"notifyTarget(address)\":{\"notice\":\"Notify a specific target about an upcoming allocation change\"},\"pause()\":{\"notice\":\"Pause the contract\"},\"paused()\":{\"notice\":\"Check if the contract is currently paused\"},\"setDefaultTarget(address)\":{\"notice\":\"Set the address that receives the default portion of issuance not allocated to other targets\"},\"setDefaultTarget(address,uint256)\":{\"notice\":\"Set the address that receives the default portion of issuance not allocated to other targets\"},\"setIssuancePerBlock(uint256)\":{\"notice\":\"Set the issuance per block.\"},\"setIssuancePerBlock(uint256,uint256)\":{\"notice\":\"Set the issuance per block, requiring distribution has reached at least the specified block\"},\"setSelfMintingEventMode(uint8)\":{\"notice\":\"Set the self-minting event emission mode\"},\"setTargetAllocation(address,uint256)\":{\"notice\":\"Set the allocation for a target with only allocator minting\"},\"setTargetAllocation(address,uint256,uint256)\":{\"notice\":\"Set the allocation for a target with both allocator and self minting\"},\"setTargetAllocation(address,uint256,uint256,uint256)\":{\"notice\":\"Set the allocation for a target, provided distribution has reached at least the specified block\"},\"unpause()\":{\"notice\":\"Unpause the contract\"}},\"notice\":\"This contract is responsible for allocating token issuance to different components of the protocol. It calculates issuance for all targets based on their configured rates (tokens per block) and handles minting for allocator-minting targets.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/allocate/IssuanceAllocator.sol\":\"IssuanceAllocator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol\":{\"keccak256\":\"0xb4d95a9c0ce489cd8df7f047dcbfc19c4a4ec9d05878b2bef4f3abd5fa4e91ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7923e80806cfbf8cf9d78c4de574b7e0a6c9f87b81702303b7170adf935ffb5c\",\"dweb:/ipfs/QmVVLV3jzxjS3HoRyg1C9hHcnWqV8ux1QaEwZgFKXrDu1X\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationData.sol\":{\"keccak256\":\"0x4c01f32e6a019dd5f8c3946b652c947a6cf05f9a4542328b3329a49f06b47181\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e0db23b187a7b8b7263a9781f97bef15616df4d66fea2dc72541e6592bc18d73\",\"dweb:/ipfs/QmdJZhN1o8yc2yQjPKZrgySCdMUF6UeoprEbyvKtYTmnyw\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol\":{\"keccak256\":\"0x6927a5d307ac841444e03af363c41c7ba032693074614f0e3ee1e25c6f8789e1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://906d824aa38a6e6daa83f34cdfc1d9b0a9ff5f895b4a2083b9a7b7d5d8285397\",\"dweb:/ipfs/QmZCCSW7Nxtf3tLPnHazMhsyDPBBiAHqfzceGdb6CFNNEJ\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationStatus.sol\":{\"keccak256\":\"0xdeeda74ab0868b7dc38bb7719c09394fe4d652532978dfdbb72320486190bb29\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7bffd43fb18d81fea035b60f11a450806bef79221c22b92be72e9d23d9920f89\",\"dweb:/ipfs/QmbSBpkAhYb5Zm3ZPDPaHrqupTXu1sP2SY99NUGgvYeGXt\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol\":{\"keccak256\":\"0x5054506b182f49cece8bd7bab5f1d06a7b9d8def75b6c02aecd623aa3bf728cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://48a35b7e89144bc7e9e3d94269d661109775777bd8bcfb013ebd794f6629798a\",\"dweb:/ipfs/Qmbnzo8kVX42WfwkpL8nTZAEB7LTtSCR5xBf97SZbte9XJ\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol\":{\"keccak256\":\"0x4072d8fb200c3f5f1c7dd296c8e3b816d372c7f02ccde3c1e7efe0828a379dab\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e455b77e7a53046d94720f6fd0229b47e0bbf8d6bb43c291af39a8a8dccb34b5\",\"dweb:/ipfs/QmXVP248rUtadhed7BrNpUXQXjh99B9U73JcWF8LBdZLQV\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol\":{\"keccak256\":\"0xb60ae62d0ab5cb8a9d06b922f036500e2fc5f0a491ea3322df6db8124ffd1a6a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://25404feafd215b17a25d71661d308ad19c6604f2f32b2447b1337e60974934cb\",\"dweb:/ipfs/QmYyQVQaU5fdfqgbQ1CQXVkBZhW53FiZBC79E42cWEEjnJ\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0x52d72be5f7529846ba76aacf0c49de92bde89a5203b6fbc3919e7384c0df0905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d5e789d39c6623db24d427ca8380978f44cc736070e2ac3ee19f88095c43b17\",\"dweb:/ipfs/QmSzyMMTnZrUWY2e4B2U3VE2fjz8AFawhk7jex8SPW1eT2\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xbc97d8c0d67d4d7eba1e662f0a8671712ace9e060ab03af547c4bb321aec1d8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://890d156f50630d52c7be57d7e0499132d6fd92b2e1365b81531f4463b3304377\",\"dweb:/ipfs/QmUHe9uL1ciePH2pQg7wdrgTAFRZWjcpBEAg8V1UNtXutd\"]},\"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0xe56ff5015046505f81f9d62671a784e933dd099db4c3a8fa8de598f20af2c5a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://355863359b4a250f7016836ef9a9672578e898503896f70a0d42b80141586f3e\",\"dweb:/ipfs/QmXXzvoMSFNQf8nRbcyRap5qzcbekWuzbXDY5C8f68JiG3\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"project/contracts/allocate/IssuanceAllocator.sol\":{\"keccak256\":\"0x92a7c7222c0fb46810379bad60580c696211a503eaeb9493f959cfc8bd15c0bb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://777fc3a30931a34863ec9eccb5d0e1b4f501776a7d123924a541085d63142cc7\",\"dweb:/ipfs/QmcGV8gbi6L46PrN85crur8BBnu8eo44qiUTXYVbXBEqeP\"]},\"project/contracts/common/BaseUpgradeable.sol\":{\"keccak256\":\"0x78604bc34c8f141aeae60c342c88d3665ceb74787f9becfcb4847247cff4e79e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://28bd9105960c7c3769d5c27d8ba2d78afe8d55bd4baaccc9dcc0c26468e719ae\",\"dweb:/ipfs/QmSojY3oUAxUieyr67ggKdP2jdbfBQDsexkTdWt4t7jTM6\"]},\"project/contracts/common/IGraphToken.sol\":{\"keccak256\":\"0xfdc400179050b90ce5170c12bcadb22de1b0a7b22add8c5d72a9e3dfa1ccaad1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a0e3d4d02da94e103036a64a4d549efaa04289997cfbc039e415917615050f44\",\"dweb:/ipfs/QmYq7oDWg33TBmJa9FcXNdovANgP1X2dnidcCaDFrgzX4J\"]}},\"version\":1}"}},"project/contracts/common/BaseUpgradeable.sol":{"BaseUpgradeable":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"GovernorCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"GraphTokenCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MILLION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMembers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","GOVERNOR_ROLE()":"ccc57490","MILLION()":"32bc934c","OPERATOR_ROLE()":"f5b541a6","PAUSE_ROLE()":"389ed267","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","getRoleMembers(bytes32)":"a3246ad3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","pause()":"8456cb59","paused()":"5c975abb","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","unpause()":"3f4ba83a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GovernorCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GraphTokenCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOVERNOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MILLION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"custom:security-contact\":\"Please email security+contracts@thegraph.com if you find any bugs. We might have an active bug bounty program.\",\"details\":\"This contract combines OpenZeppelin's AccessControlEnumerable and Pausable to provide a standardized way to manage access control and pausing functionality. Using AccessControlEnumerable (rather than base AccessControl) enables on-chain enumeration of role members via getRoleMemberCount() and getRoleMember(), which is useful for deployment verification and auditing. It uses ERC-7201 namespaced storage pattern for better storage isolation. This contract is abstract and meant to be inherited by other contracts.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"This contract is upgradeable, but we use the constructor to set immutable variables and disable initializers to prevent the implementation contract from being initialized.\",\"params\":{\"graphToken\":\"Address of the Graph Token contract\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"pause()\":{\"details\":\"Pauses contract operations. Only functions using whenNotPaused modifier will be affected.\"},\"paused()\":{\"returns\":{\"_0\":\"True if the contract is paused, false otherwise\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Adds support for IPausableControl interface\",\"params\":{\"interfaceId\":\"The interface identifier to check\"},\"returns\":{\"_0\":\"True if the contract supports the interface, false otherwise\"}},\"unpause()\":{\"details\":\"Resumes contract operations. Only functions using whenPaused modifier will be affected.\"}},\"stateVariables\":{\"GOVERNOR_ROLE\":{\"details\":\"Governors have the highest level of access and can: - Grant and revoke roles within the established hierarchy - Perform administrative functions and system configuration - Set critical parameters and upgrade contracts Admin of: GOVERNOR_ROLE, PAUSE_ROLE, OPERATOR_ROLE\"},\"GRAPH_TOKEN\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"MILLION\":{\"details\":\"This constant represents 1,000,000 and serves as the denominator when working with PPM values. For example, 50% would be represented as 500,000 PPM, calculated as (500,000 / MILLION) = 0.5 = 50%\"},\"OPERATOR_ROLE\":{\"details\":\"Operators can: - Perform operational tasks as defined by inheriting contracts - Manage roles that are designated as operator-administered Admin: GOVERNOR_ROLE\"},\"PAUSE_ROLE\":{\"details\":\"Pause role holders can: - Pause and unpause contract operations for emergency situations Typically granted to automated monitoring systems or emergency responders. Pausing is intended for quick response to potential threats, and giving time for investigation and resolution (potentially with governance intervention). Admin: GOVERNOR_ROLE\"}},\"title\":\"BaseUpgradeable\",\"version\":1},\"userdoc\":{\"errors\":{\"GovernorCannotBeZeroAddress()\":[{\"notice\":\"Thrown when attempting to set the governor to the zero address\"}],\"GraphTokenCannotBeZeroAddress()\":[{\"notice\":\"Thrown when attempting to set the Graph Token to the zero address\"}]},\"kind\":\"user\",\"methods\":{\"GOVERNOR_ROLE()\":{\"notice\":\"Role identifier for governor accounts\"},\"MILLION()\":{\"notice\":\"One million - used as the denominator for values provided as Parts Per Million (PPM)\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role identifier for operator accounts\"},\"PAUSE_ROLE()\":{\"notice\":\"Role identifier for pause accounts\"},\"constructor\":{\"notice\":\"Constructor for the BaseUpgradeable contract\"},\"pause()\":{\"notice\":\"Pause the contract\"},\"paused()\":{\"notice\":\"Check if the contract is currently paused\"},\"supportsInterface(bytes4)\":{\"notice\":\"Check if this contract supports a given interface\"},\"unpause()\":{\"notice\":\"Unpause the contract\"}},\"notice\":\"A base contract that provides role-based access control and pausability.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/common/BaseUpgradeable.sol\":\"BaseUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol\":{\"keccak256\":\"0xb60ae62d0ab5cb8a9d06b922f036500e2fc5f0a491ea3322df6db8124ffd1a6a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://25404feafd215b17a25d71661d308ad19c6604f2f32b2447b1337e60974934cb\",\"dweb:/ipfs/QmYyQVQaU5fdfqgbQ1CQXVkBZhW53FiZBC79E42cWEEjnJ\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0x52d72be5f7529846ba76aacf0c49de92bde89a5203b6fbc3919e7384c0df0905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d5e789d39c6623db24d427ca8380978f44cc736070e2ac3ee19f88095c43b17\",\"dweb:/ipfs/QmSzyMMTnZrUWY2e4B2U3VE2fjz8AFawhk7jex8SPW1eT2\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xbc97d8c0d67d4d7eba1e662f0a8671712ace9e060ab03af547c4bb321aec1d8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://890d156f50630d52c7be57d7e0499132d6fd92b2e1365b81531f4463b3304377\",\"dweb:/ipfs/QmUHe9uL1ciePH2pQg7wdrgTAFRZWjcpBEAg8V1UNtXutd\"]},\"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"project/contracts/common/BaseUpgradeable.sol\":{\"keccak256\":\"0x78604bc34c8f141aeae60c342c88d3665ceb74787f9becfcb4847247cff4e79e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://28bd9105960c7c3769d5c27d8ba2d78afe8d55bd4baaccc9dcc0c26468e719ae\",\"dweb:/ipfs/QmSojY3oUAxUieyr67ggKdP2jdbfBQDsexkTdWt4t7jTM6\"]},\"project/contracts/common/IGraphToken.sol\":{\"keccak256\":\"0xfdc400179050b90ce5170c12bcadb22de1b0a7b22add8c5d72a9e3dfa1ccaad1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a0e3d4d02da94e103036a64a4d549efaa04289997cfbc039e415917615050f44\",\"dweb:/ipfs/QmYq7oDWg33TBmJa9FcXNdovANgP1X2dnidcCaDFrgzX4J\"]}},\"version\":1}"}},"project/contracts/common/IGraphToken.sol":{"IGraphToken":{"abi":[{"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":[{"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":[{"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":"value","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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","mint(address,uint256)":"40c10f19","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":[{\"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\":\"value\",\"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\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"Extends IERC20 with mint capability. This interface is compatible with OZ 5.x.\",\"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.\"},\"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\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"mint(address,uint256)\":{\"details\":\"Only callable by accounts with minter role\",\"params\":{\"amount\":\"The amount of tokens to mint\",\"to\":\"The account to mint tokens to\"}},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"title\":\"IGraphToken\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"mint(address,uint256)\":{\"notice\":\"Mints new tokens to a specified account\"}},\"notice\":\"Minimal interface for the Graph Token contract used by issuance contracts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/common/IGraphToken.sol\":\"IGraphToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"project/contracts/common/IGraphToken.sol\":{\"keccak256\":\"0xfdc400179050b90ce5170c12bcadb22de1b0a7b22add8c5d72a9e3dfa1ccaad1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a0e3d4d02da94e103036a64a4d549efaa04289997cfbc039e415917615050f44\",\"dweb:/ipfs/QmYq7oDWg33TBmJa9FcXNdovANgP1X2dnidcCaDFrgzX4J\"]}},\"version\":1}"}},"project/contracts/eligibility/RewardsEligibilityOracle.sol":{"RewardsEligibilityOracle":{"abi":[{"inputs":[{"internalType":"address","name":"graphToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"GovernorCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"GraphTokenCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldPeriod","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"EligibilityPeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"EligibilityValidationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oracle","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"IndexerEligibilityData","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"indexer","type":"address"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"}],"name":"IndexerEligibilityRenewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldTimeout","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newTimeout","type":"uint256"}],"name":"OracleUpdateTimeoutUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MILLION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORACLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEligibilityPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"indexer","type":"address"}],"name":"getEligibilityRenewalTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEligibilityValidation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastOracleUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleUpdateTimeout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMembers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"governor","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"indexer","type":"address"}],"name":"isEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"indexers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"renewIndexerEligibility","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"eligibilityPeriod","type":"uint256"}],"name":"setEligibilityPeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setEligibilityValidation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"oracleUpdateTimeout","type":"uint256"}],"name":"setOracleUpdateTimeout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a03461011657601f61176f38819003918201601f19168301916001600160401b0383118484101761011a5780849260209460405283398101031261011657516001600160a01b03811690819003610116578015610107576080525f51602061174f5f395f51905f525460ff8160401c166100f8576002600160401b03196001600160401b038216016100a2575b604051611620908161012f8239608051815050f35b6001600160401b0319166001600160401b039081175f51602061174f5f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f61008d565b63f92ee8a960e01b5f5260045ffd5b6369e4eeb360e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610dad5750806307e2cea514610d8657806320ea350914610d6a578063248a9ca314610d445780632f2ff15d14610d1357806332bc934c14610cf657806336568abe14610cb2578063389ed26714610c8b57806338b7c07714610a7f5780633f4ba83a14610a0157806357f44afc146109805780635c975abb146109525780635fd772d5146108e757806366e305fd146108ba5780638456cb59146108395780639010d07c146107e857806391d1485414610793578063924ace8314610727578063a217fddf1461070d578063a3246ad314610652578063be626dd214610636578063c4d66de8146102aa578063ca15c87314610274578063ccc574901461024d578063ce0a207114610222578063d0a5379e146101fc578063d353402d146101be578063d547741f146101865763f5b541a61461015b575f80fd5b34610182575f3660031901126101825760206040515f51602061154b5f395f51905f528152f35b5f80fd5b34610182576040366003190112610182576101bc6004356101a5610e96565b906101b76101b282610ec2565b61107b565b611107565b005b34610182576020366003190112610182576101d7610eac565b6101df610f7f565b9060018060a01b03165f52602052602060405f2054604051908152f35b34610182575f3660031901126101825760206001610218610f7f565b0154604051908152f35b34610182575f36600319011261018257602060ff6002610240610f7f565b0154166040519015158152f35b34610182575f3660031901126101825760206040515f51602061150b5f395f51905f528152f35b34610182576020366003190112610182576004355f525f5160206114eb5f395f51905f52602052602060405f2054604051908152f35b34610182576020366003190112610182576102c3610eac565b5f5160206115cb5f395f51905f52549060ff8260401c16159167ffffffffffffffff81168015908161062e575b6001149081610624575b15908161061b575b5061060c5767ffffffffffffffff1981166001175f5160206115cb5f395f51905f5255826105e0575b5061033461149f565b61033c61149f565b6001600160a01b0381169081156105d1575f51602061150b5f395f51905f525f8181525f51602061156b5f395f51905f526020527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee80480549083905561048f93929182905f5160206114cb5f395f51905f529080a45f5160206115ab5f395f51905f525f8181525f51602061156b5f395f51905f526020527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff13480545f51602061150b5f395f51905f5291829055909290915f5160206114cb5f395f51905f529080a45f51602061154b5f395f51905f525f8181525f51602061156b5f395f51905f526020527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45780545f51602061150b5f395f51905f5291829055909290915f5160206114cb5f395f51905f529080a4611149565b61057f575b505f51602061152b5f395f51905f525f8181525f51602061156b5f395f51905f526020527f0b45fb0a7d123af421db170fce034e3ce3a70e5f1150428004face1400c458f380545f51602061154b5f395f51905f5291829055909290915f5160206114cb5f395f51905f529080a4600261050c610f7f565b62127500600182015562093a80600382015501805460ff1916905561052d57005b60ff60401b195f5160206115cb5f395f51905f5254165f5160206115cb5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b5f51602061150b5f395f51905f525f525f5160206114eb5f395f51905f526020526105ca907f955af8caaf1bb5fca493cbb01cefeb9e610a81071c268cd8b40c82100cbb956e611370565b5081610494565b63395d053560e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f5160206115cb5f395f51905f52558261032b565b63f92ee8a960e01b5f5260045ffd5b90501584610302565b303b1591506102fa565b8491506102f0565b34610182575f3660031901126101825760206004610218610f7f565b34610182576020366003190112610182576004355f525f5160206114eb5f395f51905f5260205260405f20604051806020835491828152019081935f5260205f20905f5b8181106106f757505050816106ac910382610f49565b604051918291602083019060208452518091526040830191905f5b8181106106d5575050500390f35b82516001600160a01b03168452859450602093840193909201916001016106c7565b8254845260209093019260019283019201610696565b34610182575f3660031901126101825760206040515f8152f35b346101825760203660031901126101825760043561074361101f565b600361074d610f7f565b01805490818303610764575b602060405160018152f35b8290557f3694101f93660bb31e580cd216af03495bd117038731c99e3580ba935d2e198f5f80a3808080610759565b34610182576040366003190112610182576107ac610e96565b6004355f525f51602061156b5f395f51905f5260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610182576040366003190112610182576004355f525f5160206114eb5f395f51905f52602052602061082060243560405f20611347565b905460405160039290921b1c6001600160a01b03168152f35b34610182575f36600319011261018257610851610fc3565b5f51602061158b5f395f51905f525460ff81166108ab5760019060ff1916175f51602061158b5f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b63d93c066560e01b5f5260045ffd5b346101825760203660031901126101825760206108dd6108d8610eac565b610eed565b6040519015158152f35b346101825760203660031901126101825760043561090361101f565b600161090d610f7f565b0180549081830361092357602060405160018152f35b8290557f0ffeabd3681741e8a569030189b0d178e1ab32a0514b46f2ddce28e2ef09f8ca5f80a3808080610759565b34610182575f36600319011261018257602060ff5f51602061158b5f395f51905f5254166040519015158152f35b3461018257602036600319011261018257600435801515809103610182576109a661101f565b60026109b0610f7f565b018160ff8254161515036109c957602060405160018152f35b60ff1981541660ff83161790557f99f730a7ae95f5ede5ab68fa2974744abf69191ec2ccbe09a6d90b02366e41565f80a28080610759565b34610182575f36600319011261018257610a19610fc3565b5f51602061158b5f395f51905f525460ff811615610a705760ff19165f51602061158b5f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b346101825760403660031901126101825760043567ffffffffffffffff8111610182573660238201121561018257806004013567ffffffffffffffff8111610182573660248260051b840101116101825760243567ffffffffffffffff811161018257366023820112156101825780600401359067ffffffffffffffff821161018257366024838301011161018257335f9081527f0b45fb0a7d123af421db170fce034e3ce3a70e5f1150428004face1400c458f2602052604090205460ff1615610c67577fe603483c2281239f0a282ac8ac9324bc4b9283e6340483eadd9b4cca81a957e59082602460405192602084528260208501520160408301375f604084830101526040813394601f80199101168101030190a25f91610ba1610f7f565b904260048301555f5b83811015610c5c576024600582901b830101356001600160a01b038116908190036101825780151580610c47575b610be6575b50600101610baa565b5f95919550805f528360205260405f2042905533907fbaf783ed4f4280852e5630223d966efd3c385bebebc564d77dcc52bb37f482eb5f80a35f198114610c335760018091019490610bdd565b634e487b7160e01b5f52601160045260245ffd5b50805f528360205260405f2042905410610bd8565b602085604051908152f35b63e2517d3f60e01b5f52336004525f51602061152b5f395f51905f5260245260445ffd5b34610182575f3660031901126101825760206040515f5160206115ab5f395f51905f528152f35b3461018257604036600319011261018257610ccb610e96565b336001600160a01b03821603610ce7576101bc90600435611107565b63334bd91960e11b5f5260045ffd5b34610182575f366003190112610182576020604051620f42408152f35b34610182576040366003190112610182576101bc600435610d32610e96565b90610d3f6101b282610ec2565b6110c1565b34610182576020366003190112610182576020610d62600435610ec2565b604051908152f35b34610182575f3660031901126101825760206003610218610f7f565b34610182575f3660031901126101825760206040515f51602061152b5f395f51905f528152f35b34610182576020366003190112610182576004359063ffffffff60e01b8216809203610182576020916366e305fd60e01b8114908115610e85575b8115610e74575b8115610e63575b8115610e04575b5015158152f35b631cf1473b60e31b811491508115610e1e575b5083610dfd565b635a05180f60e01b811491508115610e38575b5083610e17565b637965db0b60e01b811491508115610e52575b5083610e31565b6301ffc9a760e01b14905083610e4b565b6353740f1960e01b81149150610df6565b6338b7c07760e01b81149150610def565b634d34fb5560e11b81149150610de8565b602435906001600160a01b038216820361018257565b600435906001600160a01b038216820361018257565b5f525f51602061156b5f395f51905f52602052600160405f20015490565b91908201809211610c3357565b610ef5610f7f565b60ff60028201541615610f4257610f156004820154600383015490610ee0565b4211610f4257610f3d9160018060a01b03165f5280602052600160405f205491015490610ee0565b421090565b5050600190565b90601f8019910116810190811067ffffffffffffffff821117610f6b57604052565b634e487b7160e01b5f52604160045260245ffd5b604051602081017f184a2e1f5ac858f350c972782613691e99e2ecf211fb412a0fc1d0f7f16e0641815260208252610fb8604083610f49565b9051902060ff191690565b335f9081527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff133602052604090205460ff1615610ffb57565b63e2517d3f60e01b5f52336004525f5160206115ab5f395f51905f5260245260445ffd5b335f9081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff161561105757565b63e2517d3f60e01b5f52336004525f51602061154b5f395f51905f5260245260445ffd5b5f8181525f51602061156b5f395f51905f526020908152604080832033845290915290205460ff16156110ab5750565b63e2517d3f60e01b5f523360045260245260445ffd5b6110cb8282611207565b91826110d657505090565b5f9182525f5160206114eb5f395f51905f526020526040909120611103916001600160a01b031690611370565b5090565b61111182826112ab565b918261111c57505090565b5f9182525f5160206114eb5f395f51905f526020526040909120611103916001600160a01b0316906113da565b6001600160a01b0381165f9081527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee803602052604090205460ff16611202576001600160a01b03165f8181527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee80360205260408120805460ff191660011790553391905f51602061150b5f395f51905f52907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b505f90565b5f8181525f51602061156b5f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff166112a5575f8181525f51602061156b5f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f8181525f51602061156b5f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16156112a5575f8181525f51602061156b5f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b805482101561135c575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6001810190825f528160205260405f2054155f146113d3578054600160401b811015610f6b576113c06113aa826001879401855584611347565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b906001820191815f528260205260405f20548015155f14611497575f198101818111610c335782545f19810191908211610c3357818103611462575b5050508054801561144e575f19019061142f8282611347565b8154905f199060031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b6114826114726113aa9386611347565b90549060031b1c92839286611347565b90555f528360205260405f20555f8080611416565b505050505f90565b60ff5f5160206115cb5f395f51905f525460401c16156114bb57565b631afcd79f60e31b5f5260045ffdfebd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320007935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5568e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef197667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46df0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220212db79fd37f98a409da2449ceb312b2687814149acb61e031a51fface30c58564736f6c63430008210033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","opcodes":"PUSH1 0xA0 CALLVALUE PUSH2 0x116 JUMPI PUSH1 0x1F PUSH2 0x176F CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x11A JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x116 JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0x116 JUMPI DUP1 ISZERO PUSH2 0x107 JUMPI PUSH1 0x80 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x174F PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 PUSH1 0x40 SHR AND PUSH2 0xF8 JUMPI PUSH1 0x2 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND ADD PUSH2 0xA2 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1620 SWAP1 DUP2 PUSH2 0x12F DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 POP POP RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x174F PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 SWAP1 LOG1 PUSH0 PUSH2 0x8D JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x69E4EEB3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0xDAD JUMPI POP DUP1 PUSH4 0x7E2CEA5 EQ PUSH2 0xD86 JUMPI DUP1 PUSH4 0x20EA3509 EQ PUSH2 0xD6A JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0xD44 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0xD13 JUMPI DUP1 PUSH4 0x32BC934C EQ PUSH2 0xCF6 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0xCB2 JUMPI DUP1 PUSH4 0x389ED267 EQ PUSH2 0xC8B JUMPI DUP1 PUSH4 0x38B7C077 EQ PUSH2 0xA7F JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0xA01 JUMPI DUP1 PUSH4 0x57F44AFC EQ PUSH2 0x980 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x952 JUMPI DUP1 PUSH4 0x5FD772D5 EQ PUSH2 0x8E7 JUMPI DUP1 PUSH4 0x66E305FD EQ PUSH2 0x8BA JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x839 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x7E8 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x793 JUMPI DUP1 PUSH4 0x924ACE83 EQ PUSH2 0x727 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x70D JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xBE626DD2 EQ PUSH2 0x636 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0xCCC57490 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0xCE0A2071 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0xD0A5379E EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xD353402D EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x186 JUMPI PUSH4 0xF5B541A6 EQ PUSH2 0x15B JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x154B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x1BC PUSH1 0x4 CALLDATALOAD PUSH2 0x1A5 PUSH2 0xE96 JUMP JUMPDEST SWAP1 PUSH2 0x1B7 PUSH2 0x1B2 DUP3 PUSH2 0xEC2 JUMP JUMPDEST PUSH2 0x107B JUMP JUMPDEST PUSH2 0x1107 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x1D7 PUSH2 0xEAC JUMP JUMPDEST PUSH2 0x1DF PUSH2 0xF7F JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x1 PUSH2 0x218 PUSH2 0xF7F JUMP JUMPDEST ADD SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x2 PUSH2 0x240 PUSH2 0xF7F JUMP JUMPDEST ADD SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x2C3 PUSH2 0xEAC JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x40 SHR AND ISZERO SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 ISZERO SWAP1 DUP2 PUSH2 0x62E JUMPI JUMPDEST PUSH1 0x1 EQ SWAP1 DUP2 PUSH2 0x624 JUMPI JUMPDEST ISZERO SWAP1 DUP2 PUSH2 0x61B JUMPI JUMPDEST POP PUSH2 0x60C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x5E0 JUMPI JUMPDEST POP PUSH2 0x334 PUSH2 0x149F JUMP JUMPDEST PUSH2 0x33C PUSH2 0x149F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x5D1 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE804 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH2 0x48F SWAP4 SWAP3 SWAP2 DUP3 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15AB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF134 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x154B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB457 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH2 0x1149 JUMP JUMPDEST PUSH2 0x57F JUMPI JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x152B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0xB45FB0A7D123AF421DB170FCE034E3CE3A70E5F1150428004FACE1400C458F3 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x154B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH1 0x2 PUSH2 0x50C PUSH2 0xF7F JUMP JUMPDEST PUSH3 0x127500 PUSH1 0x1 DUP3 ADD SSTORE PUSH3 0x93A80 PUSH1 0x3 DUP3 ADD SSTORE ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x52D JUMPI STOP JUMPDEST PUSH1 0xFF PUSH1 0x40 SHL NOT PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x5CA SWAP1 PUSH32 0x955AF8CAAF1BB5FCA493CBB01CEFEB9E610A81071C268CD8B40C82100CBB956E PUSH2 0x1370 JUMP JUMPDEST POP DUP2 PUSH2 0x494 JUMP JUMPDEST PUSH4 0x395D0535 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFFFF NOT AND PUSH9 0x10000000000000001 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x32B JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP ISZERO DUP5 PUSH2 0x302 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP PUSH2 0x2FA JUMP JUMPDEST DUP5 SWAP2 POP PUSH2 0x2F0 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x4 PUSH2 0x218 PUSH2 0xF7F JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 DUP4 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP1 DUP2 SWAP4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x6F7 JUMPI POP POP POP DUP2 PUSH2 0x6AC SWAP2 SUB DUP3 PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x6D5 JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST DUP3 SLOAD DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x696 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x743 PUSH2 0x101F JUMP JUMPDEST PUSH1 0x3 PUSH2 0x74D PUSH2 0xF7F JUMP JUMPDEST ADD DUP1 SLOAD SWAP1 DUP2 DUP4 SUB PUSH2 0x764 JUMPI JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP3 SWAP1 SSTORE PUSH32 0x3694101F93660BB31E580CD216AF03495BD117038731C99E3580BA935D2E198F PUSH0 DUP1 LOG3 DUP1 DUP1 DUP1 PUSH2 0x759 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x7AC PUSH2 0xE96 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x820 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x1347 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x3 SWAP3 SWAP1 SWAP3 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x851 PUSH2 0xFC3 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x158B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND PUSH2 0x8AB JUMPI PUSH1 0x1 SWAP1 PUSH1 0xFF NOT AND OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x158B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0xD93C0665 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH2 0x8DD PUSH2 0x8D8 PUSH2 0xEAC JUMP JUMPDEST PUSH2 0xEED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x903 PUSH2 0x101F JUMP JUMPDEST PUSH1 0x1 PUSH2 0x90D PUSH2 0xF7F JUMP JUMPDEST ADD DUP1 SLOAD SWAP1 DUP2 DUP4 SUB PUSH2 0x923 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP3 SWAP1 SSTORE PUSH32 0xFFEABD3681741E8A569030189B0D178E1AB32A0514B46F2DDCE28E2EF09F8CA PUSH0 DUP1 LOG3 DUP1 DUP1 DUP1 PUSH2 0x759 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x158B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x182 JUMPI PUSH2 0x9A6 PUSH2 0x101F JUMP JUMPDEST PUSH1 0x2 PUSH2 0x9B0 PUSH2 0xF7F JUMP JUMPDEST ADD DUP2 PUSH1 0xFF DUP3 SLOAD AND ISZERO ISZERO SUB PUSH2 0x9C9 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0xFF NOT DUP2 SLOAD AND PUSH1 0xFF DUP4 AND OR SWAP1 SSTORE PUSH32 0x99F730A7AE95F5EDE5AB68FA2974744ABF69191EC2CCBE09A6D90B02366E4156 PUSH0 DUP1 LOG2 DUP1 DUP1 PUSH2 0x759 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0xA19 PUSH2 0xFC3 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x158B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND ISZERO PUSH2 0xA70 JUMPI PUSH1 0xFF NOT AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x158B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x8DFC202B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x182 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x182 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x182 JUMPI CALLDATASIZE PUSH1 0x24 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD GT PUSH2 0x182 JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x182 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x182 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x182 JUMPI CALLDATASIZE PUSH1 0x24 DUP4 DUP4 ADD ADD GT PUSH2 0x182 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0xB45FB0A7D123AF421DB170FCE034E3CE3A70E5F1150428004FACE1400C458F2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xC67 JUMPI PUSH32 0xE603483C2281239F0A282AC8AC9324BC4B9283E6340483EADD9B4CCA81A957E5 SWAP1 DUP3 PUSH1 0x24 PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 DUP5 MSTORE DUP3 PUSH1 0x20 DUP6 ADD MSTORE ADD PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x40 DUP5 DUP4 ADD ADD MSTORE PUSH1 0x40 DUP2 CALLER SWAP5 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SUB ADD SWAP1 LOG2 PUSH0 SWAP2 PUSH2 0xBA1 PUSH2 0xF7F JUMP JUMPDEST SWAP1 TIMESTAMP PUSH1 0x4 DUP4 ADD SSTORE PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC5C JUMPI PUSH1 0x24 PUSH1 0x5 DUP3 SWAP1 SHL DUP4 ADD ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0x182 JUMPI DUP1 ISZERO ISZERO DUP1 PUSH2 0xC47 JUMPI JUMPDEST PUSH2 0xBE6 JUMPI JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xBAA JUMP JUMPDEST PUSH0 SWAP6 SWAP2 SWAP6 POP DUP1 PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TIMESTAMP SWAP1 SSTORE CALLER SWAP1 PUSH32 0xBAF783ED4F4280852E5630223D966EFD3C385BEBEBC564D77DCC52BB37F482EB PUSH0 DUP1 LOG3 PUSH0 NOT DUP2 EQ PUSH2 0xC33 JUMPI PUSH1 0x1 DUP1 SWAP2 ADD SWAP5 SWAP1 PUSH2 0xBDD JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TIMESTAMP SWAP1 SLOAD LT PUSH2 0xBD8 JUMP JUMPDEST PUSH1 0x20 DUP6 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x152B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15AB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0xCCB PUSH2 0xE96 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SUB PUSH2 0xCE7 JUMPI PUSH2 0x1BC SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0x1107 JUMP JUMPDEST PUSH4 0x334BD919 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x1BC PUSH1 0x4 CALLDATALOAD PUSH2 0xD32 PUSH2 0xE96 JUMP JUMPDEST SWAP1 PUSH2 0xD3F PUSH2 0x1B2 DUP3 PUSH2 0xEC2 JUMP JUMPDEST PUSH2 0x10C1 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH2 0xD62 PUSH1 0x4 CALLDATALOAD PUSH2 0xEC2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x3 PUSH2 0x218 PUSH2 0xF7F JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x152B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0x182 JUMPI PUSH1 0x20 SWAP2 PUSH4 0x66E305FD PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0xE85 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0xE74 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0xE63 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0xE04 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1CF1473B PUSH1 0xE3 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xE1E JUMPI JUMPDEST POP DUP4 PUSH2 0xDFD JUMP JUMPDEST PUSH4 0x5A05180F PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xE38 JUMPI JUMPDEST POP DUP4 PUSH2 0xE17 JUMP JUMPDEST PUSH4 0x7965DB0B PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xE52 JUMPI JUMPDEST POP DUP4 PUSH2 0xE31 JUMP JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0xE4B JUMP JUMPDEST PUSH4 0x53740F19 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0xDF6 JUMP JUMPDEST PUSH4 0x38B7C077 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0xDEF JUMP JUMPDEST PUSH4 0x4D34FB55 PUSH1 0xE1 SHL DUP2 EQ SWAP2 POP PUSH2 0xDE8 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x182 JUMPI JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x182 JUMPI JUMP JUMPDEST PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xC33 JUMPI JUMP JUMPDEST PUSH2 0xEF5 PUSH2 0xF7F JUMP JUMPDEST PUSH1 0xFF PUSH1 0x2 DUP3 ADD SLOAD AND ISZERO PUSH2 0xF42 JUMPI PUSH2 0xF15 PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD SWAP1 PUSH2 0xEE0 JUMP JUMPDEST TIMESTAMP GT PUSH2 0xF42 JUMPI PUSH2 0xF3D SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP2 ADD SLOAD SWAP1 PUSH2 0xEE0 JUMP JUMPDEST TIMESTAMP LT SWAP1 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF6B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH32 0x184A2E1F5AC858F350C972782613691E99E2ECF211FB412A0FC1D0F7F16E0641 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0xFB8 PUSH1 0x40 DUP4 PUSH2 0xF49 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF133 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xFFB JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15AB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB456 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1057 JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x154B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x10AB JUMPI POP JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x10CB DUP3 DUP3 PUSH2 0x1207 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x10D6 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x1103 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x1370 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1111 DUP3 DUP3 PUSH2 0x12AB JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x111C JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x1103 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x13DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE803 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1202 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE803 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP2 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x12A5 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x12A5 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x135C JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH0 EQ PUSH2 0x13D3 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0xF6B JUMPI PUSH2 0x13C0 PUSH2 0x13AA DUP3 PUSH1 0x1 DUP8 SWAP5 ADD DUP6 SSTORE DUP5 PUSH2 0x1347 JUMP JUMPDEST DUP2 SWAP4 SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP2 DUP3 SHL SWAP2 PUSH0 NOT SWAP1 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE SLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP2 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0x1497 JUMPI PUSH0 NOT DUP2 ADD DUP2 DUP2 GT PUSH2 0xC33 JUMPI DUP3 SLOAD PUSH0 NOT DUP2 ADD SWAP2 SWAP1 DUP3 GT PUSH2 0xC33 JUMPI DUP2 DUP2 SUB PUSH2 0x1462 JUMPI JUMPDEST POP POP POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x144E JUMPI PUSH0 NOT ADD SWAP1 PUSH2 0x142F DUP3 DUP3 PUSH2 0x1347 JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE SSTORE PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1482 PUSH2 0x1472 PUSH2 0x13AA SWAP4 DUP7 PUSH2 0x1347 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR SWAP3 DUP4 SWAP3 DUP7 PUSH2 0x1347 JUMP JUMPDEST SWAP1 SSTORE PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x1416 JUMP JUMPDEST POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 SHR AND ISZERO PUSH2 0x14BB JUMPI JUMP JUMPDEST PUSH4 0x1AFCD79F PUSH1 0xE3 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID 0xBD PUSH26 0xB86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E12 SWAP16 SIGNEXTEND STOP SELFDESTRUCT 0xC1 0xF6 INVALID 0x24 PUSH3 0x1CE81E 0xC5 DUP3 PUSH29 0xAF0253CADB74709B061630E6B55E823717059320007935BD0AE54BC31F SLOAD DUP13 EQ 0xDB LOG4 0xD3 PUSH29 0x5C64B3F8CA900CB468FB8ABD54D5894F5568E79A7BF1E0BC45D0A330C5 PUSH20 0xBC367F9CF464FD326078812F301165FBDA4EF197 PUSH7 0x7070C54EF182B0 CREATE2 DUP6 DUP12 SUB 0x4B 0xEA 0xC1 0xB6 RETURN ADDMOD SWAP11 LOG2 0xD3 XOR DUP12 0xB1 0xE8 SWAP3 SWAP16 0x4F 0xA9 0xB9 0x29 MUL 0xDD PUSH28 0xC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B6268 STOP 0xCD MCOPY DATALOADN 0x5C6E XOR PUSH31 0x77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300139C2898040E CALL PUSH10 0x10DC9F44DC697DF79363 0xDA PUSH23 0x7D8BC92F2E310312B816E46DF0C57E16840DF040F15088 0xDC 0x2F DUP2 INVALID CODECOPY SHR CODECOPY 0x23 0xBE 0xC7 RETURNDATACOPY 0x23 0xA9 PUSH7 0x2EFC9C229C6A00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 0x2D 0xB7 SWAP16 0xD3 PUSH32 0x98A409DA2449CEB312B2687814149ACB61E031A51FFACE30C58564736F6C6343 STOP ADDMOD 0x21 STOP CALLER CREATE 0xC5 PUSH31 0x16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A000000 ","sourceMap":"2008:12130:38:-:0;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;;;4199:24:36;;2008:12130:38;;4267:37:36;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;7894:76:15;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;7983:34:15;7979:146;;-1:-1:-1;2008:12130:38;;;;;;;;4267:37:36;2008:12130:38;;;;;7979:146:15;-1:-1:-1;;;;;;2008:12130:38;-1:-1:-1;;;;;2008:12130:38;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;8085:29:15;;2008:12130:38;;8085:29:15;7979:146;;;7894:76;7936:23;;;-1:-1:-1;7936:23:15;;-1:-1:-1;7936:23:15;2008:12130:38;;;;-1:-1:-1;2008:12130:38;;-1:-1:-1;2008:12130:38;;-1:-1:-1;2008:12130:38;;;;;;-1:-1:-1;2008:12130:38;;;;;-1:-1:-1;2008:12130:38"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":3734,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_t_address":{"entryPoint":3756,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint256":{"entryPoint":3808,"id":null,"parameterSlots":2,"returnSlots":1},"constant_REWARDS_ELIGIBILITY_ORACLE_STORAGE_LOCATION":{"entryPoint":3967,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":3913,"id":null,"parameterSlots":2,"returnSlots":0},"fun__checkRole":{"entryPoint":4127,"id":587,"parameterSlots":0,"returnSlots":0},"fun__grantRole":{"entryPoint":4615,"id":773,"parameterSlots":2,"returnSlots":1},"fun__revokeRole":{"entryPoint":4359,"id":1045,"parameterSlots":2,"returnSlots":1},"fun_add":{"entryPoint":4976,"id":6810,"parameterSlots":2,"returnSlots":1},"fun_checkInitializing":{"entryPoint":5279,"id":1222,"parameterSlots":0,"returnSlots":0},"fun_checkRole":{"entryPoint":4219,"id":587,"parameterSlots":1,"returnSlots":0},"fun_checkRole_10889":{"entryPoint":4035,"id":587,"parameterSlots":0,"returnSlots":0},"fun_getRoleAdmin":{"entryPoint":3778,"id":629,"parameterSlots":1,"returnSlots":1},"fun_grantRole":{"entryPoint":4425,"id":773,"parameterSlots":1,"returnSlots":1},"fun_grantRole_1005":{"entryPoint":4289,"id":1005,"parameterSlots":2,"returnSlots":1},"fun_isEligible":{"entryPoint":3821,"id":11325,"parameterSlots":1,"returnSlots":1},"fun_remove":{"entryPoint":5082,"id":6894,"parameterSlots":2,"returnSlots":1},"fun_revokeRole":{"entryPoint":4779,"id":819,"parameterSlots":2,"returnSlots":1},"storage_array_index_access_bytes32_dyn":{"entryPoint":4935,"id":null,"parameterSlots":2,"returnSlots":2},"update_byte_slice_dynamic32":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610dad5750806307e2cea514610d8657806320ea350914610d6a578063248a9ca314610d445780632f2ff15d14610d1357806332bc934c14610cf657806336568abe14610cb2578063389ed26714610c8b57806338b7c07714610a7f5780633f4ba83a14610a0157806357f44afc146109805780635c975abb146109525780635fd772d5146108e757806366e305fd146108ba5780638456cb59146108395780639010d07c146107e857806391d1485414610793578063924ace8314610727578063a217fddf1461070d578063a3246ad314610652578063be626dd214610636578063c4d66de8146102aa578063ca15c87314610274578063ccc574901461024d578063ce0a207114610222578063d0a5379e146101fc578063d353402d146101be578063d547741f146101865763f5b541a61461015b575f80fd5b34610182575f3660031901126101825760206040515f51602061154b5f395f51905f528152f35b5f80fd5b34610182576040366003190112610182576101bc6004356101a5610e96565b906101b76101b282610ec2565b61107b565b611107565b005b34610182576020366003190112610182576101d7610eac565b6101df610f7f565b9060018060a01b03165f52602052602060405f2054604051908152f35b34610182575f3660031901126101825760206001610218610f7f565b0154604051908152f35b34610182575f36600319011261018257602060ff6002610240610f7f565b0154166040519015158152f35b34610182575f3660031901126101825760206040515f51602061150b5f395f51905f528152f35b34610182576020366003190112610182576004355f525f5160206114eb5f395f51905f52602052602060405f2054604051908152f35b34610182576020366003190112610182576102c3610eac565b5f5160206115cb5f395f51905f52549060ff8260401c16159167ffffffffffffffff81168015908161062e575b6001149081610624575b15908161061b575b5061060c5767ffffffffffffffff1981166001175f5160206115cb5f395f51905f5255826105e0575b5061033461149f565b61033c61149f565b6001600160a01b0381169081156105d1575f51602061150b5f395f51905f525f8181525f51602061156b5f395f51905f526020527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee80480549083905561048f93929182905f5160206114cb5f395f51905f529080a45f5160206115ab5f395f51905f525f8181525f51602061156b5f395f51905f526020527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff13480545f51602061150b5f395f51905f5291829055909290915f5160206114cb5f395f51905f529080a45f51602061154b5f395f51905f525f8181525f51602061156b5f395f51905f526020527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45780545f51602061150b5f395f51905f5291829055909290915f5160206114cb5f395f51905f529080a4611149565b61057f575b505f51602061152b5f395f51905f525f8181525f51602061156b5f395f51905f526020527f0b45fb0a7d123af421db170fce034e3ce3a70e5f1150428004face1400c458f380545f51602061154b5f395f51905f5291829055909290915f5160206114cb5f395f51905f529080a4600261050c610f7f565b62127500600182015562093a80600382015501805460ff1916905561052d57005b60ff60401b195f5160206115cb5f395f51905f5254165f5160206115cb5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b5f51602061150b5f395f51905f525f525f5160206114eb5f395f51905f526020526105ca907f955af8caaf1bb5fca493cbb01cefeb9e610a81071c268cd8b40c82100cbb956e611370565b5081610494565b63395d053560e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f5160206115cb5f395f51905f52558261032b565b63f92ee8a960e01b5f5260045ffd5b90501584610302565b303b1591506102fa565b8491506102f0565b34610182575f3660031901126101825760206004610218610f7f565b34610182576020366003190112610182576004355f525f5160206114eb5f395f51905f5260205260405f20604051806020835491828152019081935f5260205f20905f5b8181106106f757505050816106ac910382610f49565b604051918291602083019060208452518091526040830191905f5b8181106106d5575050500390f35b82516001600160a01b03168452859450602093840193909201916001016106c7565b8254845260209093019260019283019201610696565b34610182575f3660031901126101825760206040515f8152f35b346101825760203660031901126101825760043561074361101f565b600361074d610f7f565b01805490818303610764575b602060405160018152f35b8290557f3694101f93660bb31e580cd216af03495bd117038731c99e3580ba935d2e198f5f80a3808080610759565b34610182576040366003190112610182576107ac610e96565b6004355f525f51602061156b5f395f51905f5260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610182576040366003190112610182576004355f525f5160206114eb5f395f51905f52602052602061082060243560405f20611347565b905460405160039290921b1c6001600160a01b03168152f35b34610182575f36600319011261018257610851610fc3565b5f51602061158b5f395f51905f525460ff81166108ab5760019060ff1916175f51602061158b5f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b63d93c066560e01b5f5260045ffd5b346101825760203660031901126101825760206108dd6108d8610eac565b610eed565b6040519015158152f35b346101825760203660031901126101825760043561090361101f565b600161090d610f7f565b0180549081830361092357602060405160018152f35b8290557f0ffeabd3681741e8a569030189b0d178e1ab32a0514b46f2ddce28e2ef09f8ca5f80a3808080610759565b34610182575f36600319011261018257602060ff5f51602061158b5f395f51905f5254166040519015158152f35b3461018257602036600319011261018257600435801515809103610182576109a661101f565b60026109b0610f7f565b018160ff8254161515036109c957602060405160018152f35b60ff1981541660ff83161790557f99f730a7ae95f5ede5ab68fa2974744abf69191ec2ccbe09a6d90b02366e41565f80a28080610759565b34610182575f36600319011261018257610a19610fc3565b5f51602061158b5f395f51905f525460ff811615610a705760ff19165f51602061158b5f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b346101825760403660031901126101825760043567ffffffffffffffff8111610182573660238201121561018257806004013567ffffffffffffffff8111610182573660248260051b840101116101825760243567ffffffffffffffff811161018257366023820112156101825780600401359067ffffffffffffffff821161018257366024838301011161018257335f9081527f0b45fb0a7d123af421db170fce034e3ce3a70e5f1150428004face1400c458f2602052604090205460ff1615610c67577fe603483c2281239f0a282ac8ac9324bc4b9283e6340483eadd9b4cca81a957e59082602460405192602084528260208501520160408301375f604084830101526040813394601f80199101168101030190a25f91610ba1610f7f565b904260048301555f5b83811015610c5c576024600582901b830101356001600160a01b038116908190036101825780151580610c47575b610be6575b50600101610baa565b5f95919550805f528360205260405f2042905533907fbaf783ed4f4280852e5630223d966efd3c385bebebc564d77dcc52bb37f482eb5f80a35f198114610c335760018091019490610bdd565b634e487b7160e01b5f52601160045260245ffd5b50805f528360205260405f2042905410610bd8565b602085604051908152f35b63e2517d3f60e01b5f52336004525f51602061152b5f395f51905f5260245260445ffd5b34610182575f3660031901126101825760206040515f5160206115ab5f395f51905f528152f35b3461018257604036600319011261018257610ccb610e96565b336001600160a01b03821603610ce7576101bc90600435611107565b63334bd91960e11b5f5260045ffd5b34610182575f366003190112610182576020604051620f42408152f35b34610182576040366003190112610182576101bc600435610d32610e96565b90610d3f6101b282610ec2565b6110c1565b34610182576020366003190112610182576020610d62600435610ec2565b604051908152f35b34610182575f3660031901126101825760206003610218610f7f565b34610182575f3660031901126101825760206040515f51602061152b5f395f51905f528152f35b34610182576020366003190112610182576004359063ffffffff60e01b8216809203610182576020916366e305fd60e01b8114908115610e85575b8115610e74575b8115610e63575b8115610e04575b5015158152f35b631cf1473b60e31b811491508115610e1e575b5083610dfd565b635a05180f60e01b811491508115610e38575b5083610e17565b637965db0b60e01b811491508115610e52575b5083610e31565b6301ffc9a760e01b14905083610e4b565b6353740f1960e01b81149150610df6565b6338b7c07760e01b81149150610def565b634d34fb5560e11b81149150610de8565b602435906001600160a01b038216820361018257565b600435906001600160a01b038216820361018257565b5f525f51602061156b5f395f51905f52602052600160405f20015490565b91908201809211610c3357565b610ef5610f7f565b60ff60028201541615610f4257610f156004820154600383015490610ee0565b4211610f4257610f3d9160018060a01b03165f5280602052600160405f205491015490610ee0565b421090565b5050600190565b90601f8019910116810190811067ffffffffffffffff821117610f6b57604052565b634e487b7160e01b5f52604160045260245ffd5b604051602081017f184a2e1f5ac858f350c972782613691e99e2ecf211fb412a0fc1d0f7f16e0641815260208252610fb8604083610f49565b9051902060ff191690565b335f9081527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff133602052604090205460ff1615610ffb57565b63e2517d3f60e01b5f52336004525f5160206115ab5f395f51905f5260245260445ffd5b335f9081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff161561105757565b63e2517d3f60e01b5f52336004525f51602061154b5f395f51905f5260245260445ffd5b5f8181525f51602061156b5f395f51905f526020908152604080832033845290915290205460ff16156110ab5750565b63e2517d3f60e01b5f523360045260245260445ffd5b6110cb8282611207565b91826110d657505090565b5f9182525f5160206114eb5f395f51905f526020526040909120611103916001600160a01b031690611370565b5090565b61111182826112ab565b918261111c57505090565b5f9182525f5160206114eb5f395f51905f526020526040909120611103916001600160a01b0316906113da565b6001600160a01b0381165f9081527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee803602052604090205460ff16611202576001600160a01b03165f8181527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee80360205260408120805460ff191660011790553391905f51602061150b5f395f51905f52907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b505f90565b5f8181525f51602061156b5f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff166112a5575f8181525f51602061156b5f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f8181525f51602061156b5f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16156112a5575f8181525f51602061156b5f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b805482101561135c575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6001810190825f528160205260405f2054155f146113d3578054600160401b811015610f6b576113c06113aa826001879401855584611347565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b906001820191815f528260205260405f20548015155f14611497575f198101818111610c335782545f19810191908211610c3357818103611462575b5050508054801561144e575f19019061142f8282611347565b8154905f199060031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b6114826114726113aa9386611347565b90549060031b1c92839286611347565b90555f528360205260405f20555f8080611416565b505050505f90565b60ff5f5160206115cb5f395f51905f525460401c16156114bb57565b631afcd79f60e31b5f5260045ffdfebd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320007935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5568e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef197667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46df0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220212db79fd37f98a409da2449ceb312b2687814149acb61e031a51fface30c58564736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0xDAD JUMPI POP DUP1 PUSH4 0x7E2CEA5 EQ PUSH2 0xD86 JUMPI DUP1 PUSH4 0x20EA3509 EQ PUSH2 0xD6A JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0xD44 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0xD13 JUMPI DUP1 PUSH4 0x32BC934C EQ PUSH2 0xCF6 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0xCB2 JUMPI DUP1 PUSH4 0x389ED267 EQ PUSH2 0xC8B JUMPI DUP1 PUSH4 0x38B7C077 EQ PUSH2 0xA7F JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0xA01 JUMPI DUP1 PUSH4 0x57F44AFC EQ PUSH2 0x980 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x952 JUMPI DUP1 PUSH4 0x5FD772D5 EQ PUSH2 0x8E7 JUMPI DUP1 PUSH4 0x66E305FD EQ PUSH2 0x8BA JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x839 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x7E8 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x793 JUMPI DUP1 PUSH4 0x924ACE83 EQ PUSH2 0x727 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x70D JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xBE626DD2 EQ PUSH2 0x636 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0xCCC57490 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0xCE0A2071 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0xD0A5379E EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xD353402D EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x186 JUMPI PUSH4 0xF5B541A6 EQ PUSH2 0x15B JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x154B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x1BC PUSH1 0x4 CALLDATALOAD PUSH2 0x1A5 PUSH2 0xE96 JUMP JUMPDEST SWAP1 PUSH2 0x1B7 PUSH2 0x1B2 DUP3 PUSH2 0xEC2 JUMP JUMPDEST PUSH2 0x107B JUMP JUMPDEST PUSH2 0x1107 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x1D7 PUSH2 0xEAC JUMP JUMPDEST PUSH2 0x1DF PUSH2 0xF7F JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x1 PUSH2 0x218 PUSH2 0xF7F JUMP JUMPDEST ADD SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x2 PUSH2 0x240 PUSH2 0xF7F JUMP JUMPDEST ADD SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x2C3 PUSH2 0xEAC JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x40 SHR AND ISZERO SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 ISZERO SWAP1 DUP2 PUSH2 0x62E JUMPI JUMPDEST PUSH1 0x1 EQ SWAP1 DUP2 PUSH2 0x624 JUMPI JUMPDEST ISZERO SWAP1 DUP2 PUSH2 0x61B JUMPI JUMPDEST POP PUSH2 0x60C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x5E0 JUMPI JUMPDEST POP PUSH2 0x334 PUSH2 0x149F JUMP JUMPDEST PUSH2 0x33C PUSH2 0x149F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x5D1 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE804 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH2 0x48F SWAP4 SWAP3 SWAP2 DUP3 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15AB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF134 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x154B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB457 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH2 0x1149 JUMP JUMPDEST PUSH2 0x57F JUMPI JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x152B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0xB45FB0A7D123AF421DB170FCE034E3CE3A70E5F1150428004FACE1400C458F3 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x154B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH1 0x2 PUSH2 0x50C PUSH2 0xF7F JUMP JUMPDEST PUSH3 0x127500 PUSH1 0x1 DUP3 ADD SSTORE PUSH3 0x93A80 PUSH1 0x3 DUP3 ADD SSTORE ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x52D JUMPI STOP JUMPDEST PUSH1 0xFF PUSH1 0x40 SHL NOT PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x5CA SWAP1 PUSH32 0x955AF8CAAF1BB5FCA493CBB01CEFEB9E610A81071C268CD8B40C82100CBB956E PUSH2 0x1370 JUMP JUMPDEST POP DUP2 PUSH2 0x494 JUMP JUMPDEST PUSH4 0x395D0535 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFFFF NOT AND PUSH9 0x10000000000000001 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x32B JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP ISZERO DUP5 PUSH2 0x302 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP PUSH2 0x2FA JUMP JUMPDEST DUP5 SWAP2 POP PUSH2 0x2F0 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x4 PUSH2 0x218 PUSH2 0xF7F JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 DUP4 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP1 DUP2 SWAP4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x6F7 JUMPI POP POP POP DUP2 PUSH2 0x6AC SWAP2 SUB DUP3 PUSH2 0xF49 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 PUSH1 0x20 DUP5 MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x6D5 JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST DUP3 SLOAD DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x696 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x743 PUSH2 0x101F JUMP JUMPDEST PUSH1 0x3 PUSH2 0x74D PUSH2 0xF7F JUMP JUMPDEST ADD DUP1 SLOAD SWAP1 DUP2 DUP4 SUB PUSH2 0x764 JUMPI JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP3 SWAP1 SSTORE PUSH32 0x3694101F93660BB31E580CD216AF03495BD117038731C99E3580BA935D2E198F PUSH0 DUP1 LOG3 DUP1 DUP1 DUP1 PUSH2 0x759 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x7AC PUSH2 0xE96 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x820 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x1347 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x3 SWAP3 SWAP1 SWAP3 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x851 PUSH2 0xFC3 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x158B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND PUSH2 0x8AB JUMPI PUSH1 0x1 SWAP1 PUSH1 0xFF NOT AND OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x158B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0xD93C0665 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH2 0x8DD PUSH2 0x8D8 PUSH2 0xEAC JUMP JUMPDEST PUSH2 0xEED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x903 PUSH2 0x101F JUMP JUMPDEST PUSH1 0x1 PUSH2 0x90D PUSH2 0xF7F JUMP JUMPDEST ADD DUP1 SLOAD SWAP1 DUP2 DUP4 SUB PUSH2 0x923 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP3 SWAP1 SSTORE PUSH32 0xFFEABD3681741E8A569030189B0D178E1AB32A0514B46F2DDCE28E2EF09F8CA PUSH0 DUP1 LOG3 DUP1 DUP1 DUP1 PUSH2 0x759 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x158B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x182 JUMPI PUSH2 0x9A6 PUSH2 0x101F JUMP JUMPDEST PUSH1 0x2 PUSH2 0x9B0 PUSH2 0xF7F JUMP JUMPDEST ADD DUP2 PUSH1 0xFF DUP3 SLOAD AND ISZERO ISZERO SUB PUSH2 0x9C9 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0xFF NOT DUP2 SLOAD AND PUSH1 0xFF DUP4 AND OR SWAP1 SSTORE PUSH32 0x99F730A7AE95F5EDE5AB68FA2974744ABF69191EC2CCBE09A6D90B02366E4156 PUSH0 DUP1 LOG2 DUP1 DUP1 PUSH2 0x759 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0xA19 PUSH2 0xFC3 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x158B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND ISZERO PUSH2 0xA70 JUMPI PUSH1 0xFF NOT AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x158B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x8DFC202B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x182 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x182 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x182 JUMPI CALLDATASIZE PUSH1 0x24 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD GT PUSH2 0x182 JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x182 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x182 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x182 JUMPI CALLDATASIZE PUSH1 0x24 DUP4 DUP4 ADD ADD GT PUSH2 0x182 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0xB45FB0A7D123AF421DB170FCE034E3CE3A70E5F1150428004FACE1400C458F2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xC67 JUMPI PUSH32 0xE603483C2281239F0A282AC8AC9324BC4B9283E6340483EADD9B4CCA81A957E5 SWAP1 DUP3 PUSH1 0x24 PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 DUP5 MSTORE DUP3 PUSH1 0x20 DUP6 ADD MSTORE ADD PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x40 DUP5 DUP4 ADD ADD MSTORE PUSH1 0x40 DUP2 CALLER SWAP5 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SUB ADD SWAP1 LOG2 PUSH0 SWAP2 PUSH2 0xBA1 PUSH2 0xF7F JUMP JUMPDEST SWAP1 TIMESTAMP PUSH1 0x4 DUP4 ADD SSTORE PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC5C JUMPI PUSH1 0x24 PUSH1 0x5 DUP3 SWAP1 SHL DUP4 ADD ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0x182 JUMPI DUP1 ISZERO ISZERO DUP1 PUSH2 0xC47 JUMPI JUMPDEST PUSH2 0xBE6 JUMPI JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xBAA JUMP JUMPDEST PUSH0 SWAP6 SWAP2 SWAP6 POP DUP1 PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TIMESTAMP SWAP1 SSTORE CALLER SWAP1 PUSH32 0xBAF783ED4F4280852E5630223D966EFD3C385BEBEBC564D77DCC52BB37F482EB PUSH0 DUP1 LOG3 PUSH0 NOT DUP2 EQ PUSH2 0xC33 JUMPI PUSH1 0x1 DUP1 SWAP2 ADD SWAP5 SWAP1 PUSH2 0xBDD JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TIMESTAMP SWAP1 SLOAD LT PUSH2 0xBD8 JUMP JUMPDEST PUSH1 0x20 DUP6 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x152B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15AB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0xCCB PUSH2 0xE96 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SUB PUSH2 0xCE7 JUMPI PUSH2 0x1BC SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0x1107 JUMP JUMPDEST PUSH4 0x334BD919 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH2 0x1BC PUSH1 0x4 CALLDATALOAD PUSH2 0xD32 PUSH2 0xE96 JUMP JUMPDEST SWAP1 PUSH2 0xD3F PUSH2 0x1B2 DUP3 PUSH2 0xEC2 JUMP JUMPDEST PUSH2 0x10C1 JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH2 0xD62 PUSH1 0x4 CALLDATALOAD PUSH2 0xEC2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x3 PUSH2 0x218 PUSH2 0xF7F JUMP JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x152B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x182 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x182 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0x182 JUMPI PUSH1 0x20 SWAP2 PUSH4 0x66E305FD PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0xE85 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0xE74 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0xE63 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0xE04 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1CF1473B PUSH1 0xE3 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xE1E JUMPI JUMPDEST POP DUP4 PUSH2 0xDFD JUMP JUMPDEST PUSH4 0x5A05180F PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xE38 JUMPI JUMPDEST POP DUP4 PUSH2 0xE17 JUMP JUMPDEST PUSH4 0x7965DB0B PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0xE52 JUMPI JUMPDEST POP DUP4 PUSH2 0xE31 JUMP JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0xE4B JUMP JUMPDEST PUSH4 0x53740F19 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0xDF6 JUMP JUMPDEST PUSH4 0x38B7C077 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0xDEF JUMP JUMPDEST PUSH4 0x4D34FB55 PUSH1 0xE1 SHL DUP2 EQ SWAP2 POP PUSH2 0xDE8 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x182 JUMPI JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x182 JUMPI JUMP JUMPDEST PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xC33 JUMPI JUMP JUMPDEST PUSH2 0xEF5 PUSH2 0xF7F JUMP JUMPDEST PUSH1 0xFF PUSH1 0x2 DUP3 ADD SLOAD AND ISZERO PUSH2 0xF42 JUMPI PUSH2 0xF15 PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD SWAP1 PUSH2 0xEE0 JUMP JUMPDEST TIMESTAMP GT PUSH2 0xF42 JUMPI PUSH2 0xF3D SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP2 ADD SLOAD SWAP1 PUSH2 0xEE0 JUMP JUMPDEST TIMESTAMP LT SWAP1 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF6B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH32 0x184A2E1F5AC858F350C972782613691E99E2ECF211FB412A0FC1D0F7F16E0641 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0xFB8 PUSH1 0x40 DUP4 PUSH2 0xF49 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF133 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xFFB JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15AB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB456 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1057 JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x154B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x10AB JUMPI POP JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x10CB DUP3 DUP3 PUSH2 0x1207 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x10D6 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x1103 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x1370 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1111 DUP3 DUP3 PUSH2 0x12AB JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x111C JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x14EB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x1103 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x13DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE803 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1202 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE803 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP2 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x150B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x12A5 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x12A5 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x156B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x135C JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH0 EQ PUSH2 0x13D3 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0xF6B JUMPI PUSH2 0x13C0 PUSH2 0x13AA DUP3 PUSH1 0x1 DUP8 SWAP5 ADD DUP6 SSTORE DUP5 PUSH2 0x1347 JUMP JUMPDEST DUP2 SWAP4 SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP2 DUP3 SHL SWAP2 PUSH0 NOT SWAP1 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE SLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP2 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0x1497 JUMPI PUSH0 NOT DUP2 ADD DUP2 DUP2 GT PUSH2 0xC33 JUMPI DUP3 SLOAD PUSH0 NOT DUP2 ADD SWAP2 SWAP1 DUP3 GT PUSH2 0xC33 JUMPI DUP2 DUP2 SUB PUSH2 0x1462 JUMPI JUMPDEST POP POP POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x144E JUMPI PUSH0 NOT ADD SWAP1 PUSH2 0x142F DUP3 DUP3 PUSH2 0x1347 JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE SSTORE PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1482 PUSH2 0x1472 PUSH2 0x13AA SWAP4 DUP7 PUSH2 0x1347 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR SWAP3 DUP4 SWAP3 DUP7 PUSH2 0x1347 JUMP JUMPDEST SWAP1 SSTORE PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x1416 JUMP JUMPDEST POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x15CB PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 SHR AND ISZERO PUSH2 0x14BB JUMPI JUMP JUMPDEST PUSH4 0x1AFCD79F PUSH1 0xE3 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID 0xBD PUSH26 0xB86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E12 SWAP16 SIGNEXTEND STOP SELFDESTRUCT 0xC1 0xF6 INVALID 0x24 PUSH3 0x1CE81E 0xC5 DUP3 PUSH29 0xAF0253CADB74709B061630E6B55E823717059320007935BD0AE54BC31F SLOAD DUP13 EQ 0xDB LOG4 0xD3 PUSH29 0x5C64B3F8CA900CB468FB8ABD54D5894F5568E79A7BF1E0BC45D0A330C5 PUSH20 0xBC367F9CF464FD326078812F301165FBDA4EF197 PUSH7 0x7070C54EF182B0 CREATE2 DUP6 DUP12 SUB 0x4B 0xEA 0xC1 0xB6 RETURN ADDMOD SWAP11 LOG2 0xD3 XOR DUP12 0xB1 0xE8 SWAP3 SWAP16 0x4F 0xA9 0xB9 0x29 MUL 0xDD PUSH28 0xC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B6268 STOP 0xCD MCOPY DATALOADN 0x5C6E XOR PUSH31 0x77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300139C2898040E CALL PUSH10 0x10DC9F44DC697DF79363 0xDA PUSH23 0x7D8BC92F2E310312B816E46DF0C57E16840DF040F15088 0xDC 0x2F DUP2 INVALID CODECOPY SHR CODECOPY 0x23 0xBE 0xC7 RETURNDATACOPY 0x23 0xA9 PUSH7 0x2EFC9C229C6A00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 0x2D 0xB7 SWAP16 0xD3 PUSH32 0x98A409DA2449CEB312B2687814149ACB61E031A51FFACE30C58564736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"2008:12130:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;5815:26:13;2008:12130:38;;;;:::i;:::-;5785:18:13;3283:4;5785:18;;;:::i;:::-;3283:4;:::i;:::-;5815:26;:::i;:::-;2008:12130:38;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;:::i;:::-;4733:43;;:::i;:::-;12908:75;2008:12130;;;;;;-1:-1:-1;2008:12130:38;;;;;-1:-1:-1;2008:12130:38;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;13201:55;4733:43;;:::i;:::-;13201:55;2008:12130;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;14063:66;4733:43;;:::i;:::-;14063:66;2008:12130;;;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;4301:16:15;2008:12130:38;;;;4724:16:15;;:34;;;;2008:12130:38;4803:1:15;4788:16;:50;;;;2008:12130:38;4853:13:15;:30;;;;2008:12130:38;4849:91:15;;;-1:-1:-1;;2008:12130:38;;4803:1:15;2008:12130:38;-1:-1:-1;;;;;;;;;;;2008:12130:38;;4977:67:15;;2008:12130:38;6891:76:15;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;2008:12130:38;;;5377:22:36;;2008:12130:38;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;4967:24:13;2008:12130:38;;;;;;4241:31:14;;6946:18:13;2399:26:36;;;-1:-1:-1;;;;;;;;;;;7025:52:13;2008:12130:38;7025:52:13;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;4967:24:13;2008:12130:38;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;2399:26:36;;2008:12130:38;;-1:-1:-1;;;;;;;;;;;7025:52:13;2008:12130:38;7025:52:13;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;4967:24:13;2008:12130:38;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;2399:26:36;;2008:12130:38;;-1:-1:-1;;;;;;;;;;;7025:52:13;2008:12130:38;7025:52:13;4241:31:14;:::i;:::-;4282:71;;2008:12130:38;-1:-1:-1;;;;;;;;;;;;2008:12130:38;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;4967:24:13;2008:12130:38;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;3245:26:36;;2008:12130:38;;-1:-1:-1;;;;;;;;;;;7025:52:13;2008:12130:38;7025:52:13;5964:30:38;4733:43;;:::i;:::-;5907:7;4803:1:15;5885:19:38;;2008:12130;5948:6;5924:21;;;2008:12130;5964:30;2008:12130;;-1:-1:-1;;2008:12130:38;;;5064:101:15;;2008:12130:38;5064:101:15;2008:12130:38;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;-1:-1:-1;;;;;;;;;;;2008:12130:38;5140:14:15;2008:12130:38;;;4803:1:15;2008:12130:38;;5140:14:15;2008:12130:38;4282:71:14;-1:-1:-1;;;;;;;;;;;2008:12130:38;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;11511:50:33;;2008:12130:38;11511:50:33;:::i;:::-;;4282:71:14;;;2008:12130:38;;;;;;;;;4977:67:15;-1:-1:-1;;2008:12130:38;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;4977:67:15;;;4849:91;4906:23;;;2008:12130:38;4906:23:15;2008:12130:38;;4906:23:15;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:15;;4724:34;;;-1:-1:-1;4724:34:15;;2008:12130:38;;;;;;-1:-1:-1;;2008:12130:38;;;;;;4733:43;;:::i;2008:12130::-;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2008:12130:38;;;;;-1:-1:-1;2008:12130:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;3283:4:13;;:::i;:::-;8654:21:38;4733:43;;:::i;:::-;8654:21;2008:12130;;8690:33;;;;8686:185;;2008:12130;;;;;;;;8686:185;2008:12130;;;8801:59;2008:12130;8801:59;;8686:185;;;;;2008:12130;;;;;;-1:-1:-1;;2008:12130:38;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;3949:31:13;2008:12130:38;;;;;;-1:-1:-1;2008:12130:38;;;;;;-1:-1:-1;2008:12130:38;;;;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;5853:18:33;2008:12130:38;;;;;5853:18:33;:::i;:::-;2008:12130:38;;;;;;;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;3283:4:13;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;2770:61:17;;3300:4;2008:12130:38;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;3319:20:17;2008:12130:38;;;966:10:16;2008:12130:38;;3319:20:17;2008:12130:38;2770:61:17;2805:15;;;2008:12130:38;2805:15:17;2008:12130:38;;2805:15:17;2008:12130:38;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;3283:4:13;;:::i;:::-;2008:12130:38;4733:43;;:::i;:::-;7869:19;2008:12130;;7903:41;;;;7899:195;;2008:12130;;;;;;;7899:195;2008:12130;;;8018:65;2008:12130;8018:65;;7899:195;;;;;2008:12130;;;;;;-1:-1:-1;;2008:12130:38;;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;;;;;;;;3283:4:13;;:::i;:::-;9796:30:38;4733:43;;:::i;:::-;9796:30;2008:12130;;;;;;;9796:41;9792:168;;2008:12130;;;9977:4;2008:12130;;;9792:168;2008:12130;;;;;;;;;;;9912:37;2008:12130;9912:37;;9792:168;;;;2008:12130;;;;;;-1:-1:-1;;2008:12130:38;;;;3283:4:13;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;2971:9:17;2967:62;;2008:12130:38;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;3627:22:17;2008:12130:38;;;966:10:16;2008:12130:38;;3627:22:17;2008:12130:38;2967:62:17;3003:15;;;2008:12130:38;3003:15:17;2008:12130:38;;3003:15:17;2008:12130:38;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;966:10:16;2008:12130:38;;;;;;;;;;;;;4516:23:13;4512:108;;10483:40:38;2008:12130;;;;;;;;;;;;;;;;;;;;;;;;;;;966:10:16;;2008:12130:38;;;;;;;;;10483:40;;;;2008:12130;4733:43;;;:::i;:::-;10593:15;;2008:12130;10707:22;;2008:12130;;10850:3;10829:19;;;;;;2008:12130;;;;;;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;;;10917:21;;;:81;;;10850:3;10913:277;;10850:3;;2008:12130;;10814:13;;10913:277;2008:12130;11018:39;;;2008:12130;;;;;;;;;;10593:15;2008:12130;;966:10:16;11097:46:38;;2008:12130;11097:46;;-1:-1:-1;;2008:12130:38;;;;;;;;10913:277;;;;2008:12130;;;;;;;;;;;;10917:81;10942:39;2008:12130;;;;;;;;;10593:15;2008:12130;;10942:56;10917:81;;10829:19;2008:12130;10829:19;2008:12130;;;;;;4512:108:13;4562:47;;;2008:12130:38;4562:47:13;966:10:16;2008:12130:38;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;4562:47:13;2008:12130:38;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;:::i;:::-;966:10:16;-1:-1:-1;;;;;2008:12130:38;;6489:34:13;6485:102;;6597:37;2008:12130:38;;;6597:37:13;:::i;6485:102::-;6546:30;;;2008:12130:38;6546:30:13;2008:12130:38;;6546:30:13;2008:12130:38;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;1936:9:36;2008:12130:38;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;5398:25:13;2008:12130:38;;;;:::i;:::-;5368:18:13;3283:4;5368:18;;;:::i;3283:4::-;5398:25;:::i;2008:12130:38:-;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;13482:57;4733:43;;:::i;2008:12130::-;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6520:52:38;;;:134;;;;2008:12130;6520:211;;;;2008:12130;6520:285;;;;2008:12130;6520:337;;;;2008:12130;;;;;;;6520:337;-1:-1:-1;;;6687:49:36;;;-1:-1:-1;6687:89:36;;;;6520:337:38;;;;;6687:89:36;-1:-1:-1;;;1851:57:14;;;-1:-1:-1;1851:97:14;;;;6687:89:36;;;;;1851:97:14;-1:-1:-1;;;3599:47:13;;;-1:-1:-1;3599:87:13;;;;1851:97:14;;;;;3599:87:13;-1:-1:-1;;;1101:40:18;;-1:-1:-1;3599:87:13;;;6520:285:38;-1:-1:-1;;;6747:58:38;;;-1:-1:-1;6520:285:38;;:211;-1:-1:-1;;;6670:61:38;;;-1:-1:-1;6520:211:38;;:134;-1:-1:-1;;;6588:66:38;;;-1:-1:-1;6520:134:38;;2008:12130;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;:::o;4807:191:13:-;-1:-1:-1;2008:12130:38;-1:-1:-1;;;;;;;;;;;2008:12130:38;;4967:24:13;2008:12130:38;-1:-1:-1;2008:12130:38;4967:24:13;2008:12130:38;4807:191:13;:::o;2008:12130:38:-;;;;;;;;;;:::o;11944:602::-;4733:43;;:::i;:::-;2008:12130;12204:30;;;2008:12130;;12203:31;12199:48;;12365:46;:22;;;2008:12130;12390:21;;;2008:12130;12365:46;;:::i;:::-;12414:15;-1:-1:-1;12361:81:38;;12478:61;:39;2008:12130;;;;;;-1:-1:-1;2008:12130:38;;;;12520:19;2008:12130;-1:-1:-1;2008:12130:38;;12520:19;;2008:12130;12478:61;;:::i;:::-;12414:15;12460:79;11944:602;:::o;12361:81::-;12431:11;;12438:4;12431:11;:::o;2008:12130::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;2008:12130:38;;;;;-1:-1:-1;2008:12130:38;2728:318;2008:12130;;2923:84;;;2008:12130;;;2923:84;;;;2008:12130;2923:84;;:::i;:::-;2008:12130;;2913:95;;-1:-1:-1;;2913:133:38;;2728:318::o;4196:103:13:-;966:10:16;-1:-1:-1;2008:12130:38;;;;;;;;;;;;4516:23:13;4512:108;;4196:103::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;2008:12130:38;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;-1:-1:-1;4562:47:13;4196:103;966:10:16;-1:-1:-1;2008:12130:38;;;;;;;;;;;;4516:23:13;4512:108;;4196:103::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;2008:12130:38;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;-1:-1:-1;4562:47:13;4196:103;-1:-1:-1;2008:12130:38;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;966:10:16;2008:12130:38;;;;;;;;;;4516:23:13;4512:108;;4196:103;:::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;2008:12130:38;;;;-1:-1:-1;4562:47:13;4035:348:14;4241:31;;;;:::i;:::-;4282:71;;;;4362:14;;4035:348;:::o;4282:71::-;-1:-1:-1;2008:12130:38;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;11511:50:33;;-1:-1:-1;;;;;2008:12130:38;;11511:50:33;:::i;:::-;;4035:348:14;:::o;4486:353::-;4693:32;;;;:::i;:::-;4735:74;;;;4818:14;;4486:353;:::o;4735:74::-;-1:-1:-1;2008:12130:38;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;11832:53:33;;-1:-1:-1;;;;;2008:12130:38;;11832:53:33;:::i;7318:387:13:-;-1:-1:-1;;;;;2008:12130:38;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;966:10:16;;2008:12130:38;-1:-1:-1;;;;;;;;;;;2399:26:36;7580:40:13;;2008:12130:38;7580:40:13;7557:4;7634:11;:::o;7480:219::-;7676:12;2008:12130:38;7676:12:13;:::o;7318:387::-;2008:12130:38;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;966:10:16;;2008:12130:38;;7580:40:13;;2008:12130:38;7580:40:13;7557:4;7634:11;:::o;7480:219::-;7676:12;;2008:12130:38;7676:12:13;:::o;7942:388::-;2008:12130:38;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;;;;;-1:-1:-1;;;;;2008:12130:38;;;;;;;;;;;;;;;-1:-1:-1;;2008:12130:38;;;966:10:16;;2008:12130:38;;8205:40:13;;2008:12130:38;8205:40:13;2008:12130:38;8259:11:13;:::o;2008:12130:38:-;;;;;;;;-1:-1:-1;2008:12130:38;;-1:-1:-1;2008:12130:38;;;-1:-1:-1;2008:12130:38;:::o;:::-;;;;;;;;;;;;2497:406:33;5197:14;;;2008:12130:38;;;;;;;;;;;5197:26:33;2576:321;2008:12130:38;;;;;-1:-1:-1;;;2008:12130:38;;;;;;;;5197:14:33;2008:12130:38;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5197:14:33;2832:11;:::o;2576:321::-;2874:12;;;2008:12130:38;2874:12:33;:::o;3071:1368::-;;3266:14;;;2008:12130:38;;;;;;;;;;;3302:13:33;;;3298:1135;3302:13;;;-1:-1:-1;;2008:12130:38;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;;;3777:23:33;;;3773:378;;3298:1135;2008:12130:38;;;;;;;;;-1:-1:-1;;2008:12130:38;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3266:14:33;4368:11;:::o;2008:12130:38:-;;;;;;;;;;;;3773:378:33;2008:12130:38;3840:22:33;3961:23;3840:22;;;:::i;:::-;2008:12130:38;;;;;;3961:23:33;;;;;:::i;2008:12130:38:-;;;;;;;;;;;;3773:378:33;;;;;3298:1135;4410:12;;;;2008:12130:38;4410:12:33;:::o;7082:141:15:-;2008:12130:38;-1:-1:-1;;;;;;;;;;;2008:12130:38;;;;7148:18:15;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:15;;-1:-1:-1;7189:17:15"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","GOVERNOR_ROLE()":"ccc57490","MILLION()":"32bc934c","OPERATOR_ROLE()":"f5b541a6","ORACLE_ROLE()":"07e2cea5","PAUSE_ROLE()":"389ed267","getEligibilityPeriod()":"d0a5379e","getEligibilityRenewalTime(address)":"d353402d","getEligibilityValidation()":"ce0a2071","getLastOracleUpdateTime()":"be626dd2","getOracleUpdateTimeout()":"20ea3509","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","getRoleMembers(bytes32)":"a3246ad3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address)":"c4d66de8","isEligible(address)":"66e305fd","pause()":"8456cb59","paused()":"5c975abb","renewIndexerEligibility(address[],bytes)":"38b7c077","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setEligibilityPeriod(uint256)":"5fd772d5","setEligibilityValidation(bool)":"57f44afc","setOracleUpdateTimeout(uint256)":"924ace83","supportsInterface(bytes4)":"01ffc9a7","unpause()":"3f4ba83a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"graphToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GovernorCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GraphTokenCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldPeriod\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newPeriod\",\"type\":\"uint256\"}],\"name\":\"EligibilityPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"EligibilityValidationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"IndexerEligibilityData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"indexer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"IndexerEligibilityRenewed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldTimeout\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newTimeout\",\"type\":\"uint256\"}],\"name\":\"OracleUpdateTimeoutUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOVERNOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MILLION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ORACLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEligibilityPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"indexer\",\"type\":\"address\"}],\"name\":\"getEligibilityRenewalTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEligibilityValidation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastOracleUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOracleUpdateTimeout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"governor\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"indexer\",\"type\":\"address\"}],\"name\":\"isEligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"indexers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"renewIndexerEligibility\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eligibilityPeriod\",\"type\":\"uint256\"}],\"name\":\"setEligibilityPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setEligibilityValidation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"oracleUpdateTimeout\",\"type\":\"uint256\"}],\"name\":\"setOracleUpdateTimeout\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"custom:security-contact\":\"Please email security+contracts@thegraph.com if you find any bugs. We might have an active bug bounty program.\",\"custom:security-warning\":\"Configuration changes (eligibility period, validation toggle) can create race conditions with in-flight reward claim transactions. When configuration changes make an indexer ineligible between transaction submission and execution, the indexer permanently loses those rewards. Operators should announce configuration changes in advance and consider implementing a two-step process (announce delay, then execute) for changes that reduce eligibility.\",\"details\":\"Note: If the eligibility period is set to an extremely large value that exceeds the current block timestamp, all indexers (including those never registered) will be eligible.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"EligibilityPeriodUpdated(uint256,uint256)\":{\"params\":{\"newPeriod\":\"The new eligibility period in seconds\",\"oldPeriod\":\"The previous eligibility period in seconds\"}},\"EligibilityValidationUpdated(bool)\":{\"params\":{\"enabled\":\"True if eligibility validation is enabled, false if disabled\"}},\"IndexerEligibilityData(address,bytes)\":{\"params\":{\"data\":\"The eligibility data submitted by the oracle\",\"oracle\":\"The address of the oracle that submitted the data\"}},\"IndexerEligibilityRenewed(address,address)\":{\"params\":{\"indexer\":\"The address of the indexer whose eligibility was renewed\",\"oracle\":\"The address of the oracle that renewed the indexer's eligibility\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"OracleUpdateTimeoutUpdated(uint256,uint256)\":{\"params\":{\"newTimeout\":\"The new timeout period in seconds\",\"oldTimeout\":\"The previous timeout period in seconds\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"This contract is upgradeable, but we use the constructor to pass the Graph Token address to the base contract.\",\"params\":{\"graphToken\":\"Address of the Graph Token contract\"}},\"getEligibilityPeriod()\":{\"returns\":{\"_0\":\"The current eligibility period in seconds\"}},\"getEligibilityRenewalTime(address)\":{\"params\":{\"indexer\":\"Address of the indexer\"},\"returns\":{\"_0\":\"The last eligibility renewal timestamp, or 0 if the indexer's eligibility has never been renewed\"}},\"getEligibilityValidation()\":{\"returns\":{\"_0\":\"True if eligibility validation is enabled, false otherwise\"}},\"getLastOracleUpdateTime()\":{\"returns\":{\"_0\":\"The timestamp of the last oracle update\"}},\"getOracleUpdateTimeout()\":{\"returns\":{\"_0\":\"The current oracle update timeout in seconds\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address)\":{\"details\":\"Also sets OPERATOR as admin of ORACLE role\",\"params\":{\"governor\":\"Address that will have the GOVERNOR_ROLE\"}},\"isEligible(address)\":{\"details\":\"Returns true if any of the following conditions are met: 1. Eligibility validation is disabled globally 2. Oracle timeout has been exceeded (fail-safe to allow all indexers) 3. block.timestamp < indexerEligibilityTimestamps[indexer] + eligibilityPeriod Note on condition 3: For indexers who have never been registered, indexerEligibilityTimestamps[indexer] is 0. If eligibilityPeriod is set to an extremely large value exceeding block.timestamp, the check becomes (block.timestamp < 0 + eligibilityPeriod), which will be true, making all indexers eligible.\",\"params\":{\"indexer\":\"Address of the indexer\"},\"returns\":{\"_0\":\"True if the indexer is eligible to receive rewards, false otherwise\"}},\"pause()\":{\"details\":\"Pauses contract operations. Only functions using whenNotPaused modifier will be affected.\"},\"paused()\":{\"returns\":{\"_0\":\"True if the contract is paused, false otherwise\"}},\"renewIndexerEligibility(address[],bytes)\":{\"params\":{\"data\":\"Arbitrary calldata for future extensions\",\"indexers\":\"Array of indexer addresses. Zero addresses are ignored.\"},\"returns\":{\"_0\":\"Number of indexers whose eligibility renewal timestamp was updated\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setEligibilityPeriod(uint256)\":{\"custom:warning\":\"Configuration changes can affect in-flight reward claim transactions. Reducing the eligibility period may cause indexers to lose rewards if their claim transactions execute after they become ineligible due to the configuration change. Consider announcing configuration changes in advance and using a two-step process (announce, then execute) for changes that reduce eligibility.\",\"details\":\"Only callable by accounts with the OPERATOR_ROLE\",\"params\":{\"eligibilityPeriod\":\"New eligibility period in seconds\"},\"returns\":{\"_0\":\"True if the state is as requested (eligibility period is set to the specified value)\"}},\"setEligibilityValidation(bool)\":{\"custom:warning\":\"Enabling eligibility validation can affect in-flight reward claim transactions. Indexers who submitted claim transactions while validation was disabled may lose rewards if validation is enabled before their transactions execute and they are not marked as eligible. Consider announcing this change in advance to allow indexers to adjust their claiming behavior.\",\"details\":\"Only callable by accounts with the OPERATOR_ROLE\",\"params\":{\"enabled\":\"True to enable eligibility validation, false to disable\"},\"returns\":{\"_0\":\"True if successfully set (always the case for current code)\"}},\"setOracleUpdateTimeout(uint256)\":{\"details\":\"Only callable by accounts with the OPERATOR_ROLE\",\"params\":{\"oracleUpdateTimeout\":\"New timeout period in seconds\"},\"returns\":{\"_0\":\"True if the state is as requested (timeout is set to the specified value)\"}},\"supportsInterface(bytes4)\":{\"details\":\"Overrides the supportsInterface function from ERC165Upgradeable\",\"params\":{\"interfaceId\":\"The interface identifier to check\"},\"returns\":{\"_0\":\"True if the contract supports the interface, false otherwise\"}},\"unpause()\":{\"details\":\"Resumes contract operations. Only functions using whenPaused modifier will be affected.\"}},\"stateVariables\":{\"ORACLE_ROLE\":{\"details\":\"Oracle role holders can: - Mark indexers as eligible to receive rewards (based on off-chain quality assessment) This role is typically granted to automated quality assessment systems Admin: OPERATOR_ROLE (operators can manage oracle roles)\"}},\"title\":\"RewardsEligibilityOracle\",\"version\":1},\"userdoc\":{\"errors\":{\"GovernorCannotBeZeroAddress()\":[{\"notice\":\"Thrown when attempting to set the governor to the zero address\"}],\"GraphTokenCannotBeZeroAddress()\":[{\"notice\":\"Thrown when attempting to set the Graph Token to the zero address\"}]},\"events\":{\"EligibilityPeriodUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the eligibility period is updated\"},\"EligibilityValidationUpdated(bool)\":{\"notice\":\"Emitted when eligibility validation is enabled or disabled\"},\"IndexerEligibilityData(address,bytes)\":{\"notice\":\"Emitted when an oracle submits eligibility data\"},\"IndexerEligibilityRenewed(address,address)\":{\"notice\":\"Emitted when an indexer's eligibility is renewed by an oracle\"},\"OracleUpdateTimeoutUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the oracle update timeout is updated\"}},\"kind\":\"user\",\"methods\":{\"GOVERNOR_ROLE()\":{\"notice\":\"Role identifier for governor accounts\"},\"MILLION()\":{\"notice\":\"One million - used as the denominator for values provided as Parts Per Million (PPM)\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role identifier for operator accounts\"},\"ORACLE_ROLE()\":{\"notice\":\"Oracle role identifier\"},\"PAUSE_ROLE()\":{\"notice\":\"Role identifier for pause accounts\"},\"constructor\":{\"notice\":\"Constructor for the RewardsEligibilityOracle contract\"},\"getEligibilityPeriod()\":{\"notice\":\"Get the eligibility period\"},\"getEligibilityRenewalTime(address)\":{\"notice\":\"Get the last eligibility renewal timestamp for an indexer\"},\"getEligibilityValidation()\":{\"notice\":\"Get eligibility validation state\"},\"getLastOracleUpdateTime()\":{\"notice\":\"Get the last oracle update time\"},\"getOracleUpdateTimeout()\":{\"notice\":\"Get the oracle update timeout\"},\"initialize(address)\":{\"notice\":\"Initialize the RewardsEligibilityOracle contract\"},\"isEligible(address)\":{\"notice\":\"Check if an indexer is eligible to receive rewards\"},\"pause()\":{\"notice\":\"Pause the contract\"},\"paused()\":{\"notice\":\"Check if the contract is currently paused\"},\"renewIndexerEligibility(address[],bytes)\":{\"notice\":\"Renew eligibility for provided indexers to receive rewards\"},\"setEligibilityPeriod(uint256)\":{\"notice\":\"Set the eligibility period for indexers\"},\"setEligibilityValidation(bool)\":{\"notice\":\"Set eligibility validation state\"},\"setOracleUpdateTimeout(uint256)\":{\"notice\":\"Set the oracle update timeout\"},\"supportsInterface(bytes4)\":{\"notice\":\"Check if this contract supports a given interface\"},\"unpause()\":{\"notice\":\"Unpause the contract\"}},\"notice\":\"This contract allows authorized oracles to mark indexers as eligible to receive rewards with an expiration mechanism. Under normal configuration with reasonable eligibility periods, indexers are denied by default until they are explicitly marked as eligible, and their eligibility expires after a configurable eligibility period. The contract also includes a global eligibility check toggle and an oracle update timeout mechanism.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/eligibility/RewardsEligibilityOracle.sol\":\"RewardsEligibilityOracle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol\":{\"keccak256\":\"0xb60ae62d0ab5cb8a9d06b922f036500e2fc5f0a491ea3322df6db8124ffd1a6a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://25404feafd215b17a25d71661d308ad19c6604f2f32b2447b1337e60974934cb\",\"dweb:/ipfs/QmYyQVQaU5fdfqgbQ1CQXVkBZhW53FiZBC79E42cWEEjnJ\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibility.sol\":{\"keccak256\":\"0x9f04d4f78937e63aba2b269323bbe037a32cb7570d7e07e40684ea9c40a38525\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3ffe02a7238802e9ca2e04f8caba1bff61745d8b0f55fa75f697ce48685e22af\",\"dweb:/ipfs/Qme8aje3vkFnL8aQQHcMd9tbzEp4hbv6oKgpbyAY7HiMv2\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityAdministration.sol\":{\"keccak256\":\"0xed77f9b474cf5c8ede8706721b092c48dfddee08732dcd802532e7b1af764815\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7a8b3ec60d958caf3a4d40defe93a38233ef87a6f662d81490e5163d4b8fb505\",\"dweb:/ipfs/QmWqPu9rXdy5Bo7iU2SogAiSveKnwpfcA5cKQ9gAwtPiB4\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityEvents.sol\":{\"keccak256\":\"0xe482621df496359d77180b4a02b485135a7b87de66136897b2e63cd92b99ea90\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://43544818c324aebef65bda208e247bf5ae6b27cdc60fd2385dba550787bdf875\",\"dweb:/ipfs/QmPv3gpSRgWXiHVpZMAaxhHbuhatHvDGRcx19hz8RRrQw6\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityReporting.sol\":{\"keccak256\":\"0x86d8cade4fe79aadd959ecb59e51cf9635d4f11468abafdaa9e7a6521a8cf215\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0667f05a62ba7277164934a725916eb16f001d2ce1b6be780074d3e4e3ad2441\",\"dweb:/ipfs/QmbnAs7oYbhYmLHyRkYataL8rSg7QK8mzGYz8zwK6qGc3T\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityStatus.sol\":{\"keccak256\":\"0x30197018a7f9bd3e6a4228c8f06cc8109d6a6a0ab27a84cd2473b0385e2b8b43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a9229ae68ba6da43a532f558349337e6502b38fd071888bef3c3872e86923afc\",\"dweb:/ipfs/QmUtjEEJTbuqUs3wJ4tMnZwakjmGikYEKDs1xmgLyJAJqF\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0x52d72be5f7529846ba76aacf0c49de92bde89a5203b6fbc3919e7384c0df0905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d5e789d39c6623db24d427ca8380978f44cc736070e2ac3ee19f88095c43b17\",\"dweb:/ipfs/QmSzyMMTnZrUWY2e4B2U3VE2fjz8AFawhk7jex8SPW1eT2\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xbc97d8c0d67d4d7eba1e662f0a8671712ace9e060ab03af547c4bb321aec1d8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://890d156f50630d52c7be57d7e0499132d6fd92b2e1365b81531f4463b3304377\",\"dweb:/ipfs/QmUHe9uL1ciePH2pQg7wdrgTAFRZWjcpBEAg8V1UNtXutd\"]},\"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"project/contracts/common/BaseUpgradeable.sol\":{\"keccak256\":\"0x78604bc34c8f141aeae60c342c88d3665ceb74787f9becfcb4847247cff4e79e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://28bd9105960c7c3769d5c27d8ba2d78afe8d55bd4baaccc9dcc0c26468e719ae\",\"dweb:/ipfs/QmSojY3oUAxUieyr67ggKdP2jdbfBQDsexkTdWt4t7jTM6\"]},\"project/contracts/common/IGraphToken.sol\":{\"keccak256\":\"0xfdc400179050b90ce5170c12bcadb22de1b0a7b22add8c5d72a9e3dfa1ccaad1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a0e3d4d02da94e103036a64a4d549efaa04289997cfbc039e415917615050f44\",\"dweb:/ipfs/QmYq7oDWg33TBmJa9FcXNdovANgP1X2dnidcCaDFrgzX4J\"]},\"project/contracts/eligibility/RewardsEligibilityOracle.sol\":{\"keccak256\":\"0xfdb31dbacd892a85152fce2dea08f355a231d3a4032e9e905e478b85b8a2e124\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2172f8aa4cce681e92cecc5181271257c13c302e45882b8c9280c3b21881edf6\",\"dweb:/ipfs/QmYcZ84QaYTeTEzyhSPNniqsfzPSAA8ABg6iDYpdT4XXhU\"]}},\"version\":1}"}},"project/contracts/test/allocate/IssuanceAllocatorTestHarness.sol":{"IssuanceAllocatorTestHarness":{"abi":[{"inputs":[{"internalType":"address","name":"_graphToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"defaultTarget","type":"address"}],"name":"CannotSetAllocationForDefaultTarget","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"CannotSetDefaultToAllocatedTarget","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"GovernorCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"GraphTokenCannotBeZeroAddress","type":"error"},{"inputs":[{"internalType":"uint256","name":"requested","type":"uint256"},{"internalType":"uint256","name":"available","type":"uint256"}],"name":"InsufficientAllocationAvailable","type":"error"},{"inputs":[{"internalType":"uint256","name":"oldRate","type":"uint256"},{"internalType":"uint256","name":"newRate","type":"uint256"},{"internalType":"uint256","name":"unallocated","type":"uint256"}],"name":"InsufficientUnallocatedForRateDecrease","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"TargetAddressCannotBeZero","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"TargetDoesNotSupportIIssuanceTarget","type":"error"},{"inputs":[{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"uint256","name":"minBlock","type":"uint256"},{"internalType":"uint256","name":"maxBlock","type":"uint256"}],"name":"ToBlockOutOfRange","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"DefaultTargetUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"fromBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"toBlock","type":"uint256"}],"name":"IssuanceDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldIssuancePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newIssuancePerBlock","type":"uint256"}],"name":"IssuancePerBlockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"fromBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"toBlock","type":"uint256"}],"name":"IssuanceSelfMintAllowance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"fromBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"toBlock","type":"uint256"}],"name":"IssuanceSelfMintAllowanceAggregate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum SelfMintingEventMode","name":"oldMode","type":"uint8"},{"indexed":false,"internalType":"enum SelfMintingEventMode","name":"newMode","type":"uint8"}],"name":"SelfMintingEventModeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"offsetBefore","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"offsetAfter","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"fromBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"toBlock","type":"uint256"}],"name":"SelfMintingOffsetAccumulated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"offsetBefore","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"offsetAfter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalForPeriod","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"fromBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"toBlock","type":"uint256"}],"name":"SelfMintingOffsetReconciled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"newAllocatorMintingRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSelfMintingRate","type":"uint256"}],"name":"TargetAllocationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MILLION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeIssuance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributePendingIssuance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"toBlockNumber","type":"uint256"}],"name":"distributePendingIssuance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"allocatedRate","type":"uint256"},{"internalType":"uint256","name":"toBlockNumber","type":"uint256"}],"name":"exposedDistributePendingProportionally","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"},{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"allocatedTotal","type":"uint256"},{"internalType":"uint256","name":"toBlockNumber","type":"uint256"}],"name":"exposedDistributePendingWithFullRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"forceTargetNoChangeNotificationBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDistributionState","outputs":[{"components":[{"internalType":"uint256","name":"lastDistributionBlock","type":"uint256"},{"internalType":"uint256","name":"lastSelfMintingBlock","type":"uint256"},{"internalType":"uint256","name":"selfMintingOffset","type":"uint256"}],"internalType":"struct DistributionState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIssuancePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMembers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSelfMintingEventMode","outputs":[{"internalType":"enum SelfMintingEventMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetAllocation","outputs":[{"components":[{"internalType":"uint256","name":"totalAllocationRate","type":"uint256"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"}],"internalType":"struct Allocation","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTargetAt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTargetCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetData","outputs":[{"components":[{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"},{"internalType":"uint256","name":"lastChangeNotifiedBlock","type":"uint256"}],"internalType":"struct AllocationTarget","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getTargetIssuancePerBlock","outputs":[{"components":[{"internalType":"uint256","name":"allocatorIssuanceRate","type":"uint256"},{"internalType":"uint256","name":"allocatorIssuanceBlockAppliedTo","type":"uint256"},{"internalType":"uint256","name":"selfIssuanceRate","type":"uint256"},{"internalType":"uint256","name":"selfIssuanceBlockAppliedTo","type":"uint256"}],"internalType":"struct TargetIssuancePerBlock","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTargets","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAllocation","outputs":[{"components":[{"internalType":"uint256","name":"totalAllocationRate","type":"uint256"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"}],"internalType":"struct Allocation","name":"allocation","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_governor","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"notifyTarget","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDefaultTarget","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"uint256","name":"minDistributedBlock","type":"uint256"}],"name":"setDefaultTarget","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newIssuancePerBlock","type":"uint256"}],"name":"setIssuancePerBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newIssuancePerBlock","type":"uint256"},{"internalType":"uint256","name":"minDistributedBlock","type":"uint256"}],"name":"setIssuancePerBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum SelfMintingEventMode","name":"newMode","type":"uint8"}],"name":"setSelfMintingEventMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IIssuanceTarget","name":"target","type":"address"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"}],"name":"setTargetAllocation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IIssuanceTarget","name":"target","type":"address"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"}],"name":"setTargetAllocation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IIssuanceTarget","name":"target","type":"address"},{"internalType":"uint256","name":"allocatorMintingRate","type":"uint256"},{"internalType":"uint256","name":"selfMintingRate","type":"uint256"},{"internalType":"uint256","name":"minDistributedBlock","type":"uint256"}],"name":"setTargetAllocation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a03461012e57601f612def38819003918201601f19168301916001600160401b038311848410176101325780849260209460405283398101031261012e57516001600160a01b0381169081900361012e57801561011f576080525f516020612dcf5f395f51905f525460ff8160401c16610110576002600160401b03196001600160401b038216016100ba575b604051612c88908161014782396080518181816120670152818161214e0152818161228001526128f30152f35b6001600160401b0319166001600160401b039081175f516020612dcf5f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f61008d565b63f92ee8a960e01b5f5260045ffd5b6369e4eeb360e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611066575080631156bdc11461103757806313a7855d14610ffd57806315d3b5d814610f84578063248a9ca314610f665780632f2ff15d14610f355780633067cb4c14610e8d57806332bc934c14610e7057806336568abe14610e2c578063389ed26714610e055780633af5b07314610dda5780633f4ba83a14610d5c578063443990fa14610d1a5780634887693c14610ce757806348c3c62e14610c6157806349bdfcb014610c245780634a1293b714610bfe57806352c0e18c14610bb85780635c975abb14610b8a57806363fe3b5614610b21578063647b368214610adb578063697cf32214610aa657806379d5fc5414610a835780637c92330b14610a335780638456cb59146109b257806384c484221461095257806387ee921c146109295780639010d07c146108d857806391d148541461088357806393c911a814610855578063a217fddf1461083b578063a3246ad3146107bb578063c2cb354414610773578063c4d66de814610401578063c627b7a4146103d0578063ca15c8731461039a578063ccc5749014610373578063d012a15b14610322578063d48beb1b146102fd578063d547741f146102c7578063e038978e146102a3578063ee56977e146102335763f5b541a6146101f5575f80fd5b3461022f575f36600319011261022f5760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b5f80fd5b3461022f575f36600319011261022f5761024b6112bb565b5060606102566115c3565b6001810154906003600282015491015490604051926102748461127d565b8352602083015260408201526102a160405180926040809180518452602081015160208501520151910152565bf35b3461022f57606036600319011261022f576102c56044356024356004356121ee565b005b3461022f57604036600319011261022f576102c56004356102e661114f565b906102f86102f3826112fa565b61144e565b61164d565b3461022f57608036600319011261022f576102c5606435604435602435600435611fe4565b3461022f57604036600319011261022f576020610359610340611165565b6103486113a9565b610350611494565b60243590611e6e565b5f5f516020612bf35f395f51905f525d6040519015158152f35b3461022f575f36600319011261022f5760206040515f516020612b735f395f51905f528152f35b3461022f57602036600319011261022f576004355f525f516020612b135f395f51905f52602052602060405f2054604051908152f35b3461022f57604036600319011261022f576103e96113a9565b6103f1611494565b60206103596024356004356114c9565b3461022f57602036600319011261022f5761041a611165565b5f516020612c335f395f51905f52549060ff8260401c16159167ffffffffffffffff81168015908161076b575b6001149081610761575b159081610758575b506107495767ffffffffffffffff1981166001175f516020612c335f395f51905f52558261071d575b5061048b612ac7565b610493612ac7565b6001600160a01b03811690811561070e575f516020612b735f395f51905f525f8181525f516020612b935f395f51905f526020527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8048054908390556105f993929182905f516020612af35f395f51905f529080a45f516020612bd35f395f51905f525f8181525f516020612b935f395f51905f526020527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff13480545f516020612b735f395f51905f5291829055909290915f516020612af35f395f51905f529080a47f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9295f8181525f516020612b935f395f51905f526020527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45780545f516020612b735f395f51905f5291829055909290915f516020612af35f395f51905f529080a4612355565b6106bc575b506106076115c3565b600581018054600160401b8110156106a8576106289160018201815561134b565b81549060018060a01b039060031b1b1916905560078101600260ff1982541617905560014391015561065657005b60ff60401b195f516020612c335f395f51905f5254165f516020612c335f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b634e487b7160e01b5f52604160045260245ffd5b5f516020612b735f395f51905f525f525f516020612b135f395f51905f52602052610707907f955af8caaf1bb5fca493cbb01cefeb9e610a81071c268cd8b40c82100cbb956e6129b3565b50816105fe565b63395d053560e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f516020612c335f395f51905f525582610482565b63f92ee8a960e01b5f5260045ffd5b90501584610459565b303b159150610451565b849150610447565b3461022f57608036600319011261022f576020610359610791611165565b6107996113a9565b6107a1611494565b6064359060443590602435906001600160a01b0316611b07565b3461022f57602036600319011261022f576004355f525f516020612b135f395f51905f5260205260405f206040519081602082549182815201915f5260205f20905f5b818110610825576108218561081581870382611299565b6040519182918261117b565b0390f35b82548452602090930192600192830192016107fe565b3461022f575f36600319011261022f5760206040515f8152f35b3461022f575f36600319011261022f57602060ff60076108736115c3565b0154166102a160405180926111bd565b3461022f57604036600319011261022f5761089c61114f565b6004355f525f516020612b935f395f51905f5260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461022f57604036600319011261022f576004355f525f516020612b135f395f51905f52602052602061091060243560405f2061134b565b905460405160039290921b1c6001600160a01b03168152f35b3461022f57602036600319011261022f576020610910600435600561094c6115c3565b0161134b565b3461022f57602036600319011261022f5761096b611165565b6109736112bb565b50600461097e6115c3565b019060018060a01b03165f52602052606060405f20600181549101546109a48183611318565b91604051926102748461127d565b3461022f575f36600319011261022f576109ca6113f2565b5f516020612bb35f395f51905f525460ff8116610a245760019060ff1916175f516020612bb35f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b63d93c066560e01b5f5260045ffd5b3461022f57604036600319011261022f576020610a4e611165565b60243590610a5a6113a9565b6004610a646115c3565b019060018060a01b03165f52825280600260405f200155604051908152f35b3461022f575f36600319011261022f576020610a9d6115c3565b54604051908152f35b3461022f57602036600319011261022f576020610359610ac4611165565b610acc6113a9565b610ad4611494565b4390611e6e565b3461022f57606036600319011261022f576020610359610af9611165565b610b016113a9565b610b09611494565b439060443590602435906001600160a01b0316611b07565b3461022f575f36600319011261022f576005610b3b6115c3565b016040519081602082549182815201915f5260205f20905f5b818110610b6b576108218561081581870382611299565b82546001600160a01b0316845260209093019260019283019201610b54565b3461022f575f36600319011261022f57602060ff5f516020612bb35f395f51905f5254166040519015158152f35b3461022f57602036600319011261022f57610bd16113a9565b610bd9611494565b6020610be66004356116a2565b5f5f516020612bf35f395f51905f525d604051908152f35b3461022f575f36600319011261022f5760206005610c1a6115c3565b0154604051908152f35b3461022f575f36600319011261022f576001610c3e6115c3565b01544303610c52576020435b604051908152f35b6020610c5c611e24565b610c4a565b3461022f57602036600319011261022f57610c7a611165565b610c826112bb565b506004610c8d6115c3565b019060018060a01b03165f52602052606060405f20600260405191610cb18361127d565b8054835260018101546020840152015460408201526102a160405180926040809180518452602081015160208501520151910152565b3461022f57602036600319011261022f576020610359610d05611165565b610d0d6113a9565b610d15611494565b611d9f565b3461022f57604036600319011261022f576020610359610d38611165565b610d406113a9565b610d48611494565b4390602435906001600160a01b0316611857565b3461022f575f36600319011261022f57610d746113f2565b5f516020612bb35f395f51905f525460ff811615610dcb5760ff19165f516020612bb35f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461022f575f36600319011261022f57610df26113a9565b610dfa611494565b6020610be6436116a2565b3461022f575f36600319011261022f5760206040515f516020612bd35f395f51905f528152f35b3461022f57604036600319011261022f57610e4561114f565b336001600160a01b03821603610e61576102c59060043561164d565b63334bd91960e11b5f5260045ffd5b3461022f575f36600319011261022f576020604051620f42408152f35b3461022f57602036600319011261022f576080610ea8611165565b5f6060604051610eb781611261565b8281528260208201528260408201520152610ed06115c3565b9060018060a01b03165f526004810160205260405f208054916002600180830154930154910154916060604051610f0681611261565b858152602081019283526040810193845201928352604051938452516020840152516040830152516060820152f35b3461022f57604036600319011261022f576102c5600435610f5461114f565b90610f616102f3826112fa565b611607565b3461022f57602036600319011261022f576020610c4a6004356112fa565b3461022f575f36600319011261022f576060610f9e6112bb565b610fd7610fa96115c3565b6006610fc582545f80526004840160205260405f2054906112d9565b918285520154908160408501526112d9565b60208201526102a160405180926040809180518452602081015160208501520151910152565b3461022f57602036600319011261022f57600435600381101561022f5761102d6020916110286113a9565b6111de565b6040519015158152f35b3461022f57602036600319011261022f576110506113a9565b611058611494565b6020610359436004356114c9565b3461022f57602036600319011261022f576004359063ffffffff60e01b821680920361022f57602091631e768dff60e21b811490811561113e575b811561112d575b811561111c575b81156110bd575b5015158152f35b631cf1473b60e31b8114915081156110d7575b50836110b6565b635a05180f60e01b8114915081156110f1575b50836110d0565b637965db0b60e01b81149150811561110b575b50836110ea565b6301ffc9a760e01b14905083611104565b632461e31760e11b811491506110af565b63a896602d60e01b811491506110a8565b6350d8541d60e01b811491506110a1565b602435906001600160a01b038216820361022f57565b600435906001600160a01b038216820361022f57565b60206040818301928281528451809452019201905f5b81811061119e5750505090565b82516001600160a01b0316845260209384019390920191600101611191565b9060038210156111ca5752565b634e487b7160e01b5f52602160045260245ffd5b60076111e86115c3565b019060ff82541660038110156111ca5760038210156111ca57808214611259576112536040927f3f59746e46bfb9af931035055d53b82d1b70968466065162b7dbf8e998aee6299460ff1981541660ff8316179055611249845180946111bd565b60208301906111bd565ba1600190565b505050600190565b6080810190811067ffffffffffffffff8211176106a857604052565b6060810190811067ffffffffffffffff8211176106a857604052565b90601f8019910116810190811067ffffffffffffffff8211176106a857604052565b604051906112c88261127d565b5f6040838281528260208201520152565b919082039182116112e657565b634e487b7160e01b5f52601160045260245ffd5b5f525f516020612b935f395f51905f52602052600160405f20015490565b919082018092116112e657565b805415611337575f5260205f20905f90565b634e487b7160e01b5f52603260045260245ffd5b8054821015611337575f5260205f2001905f90565b80549190600160401b8310156106a857826113839160016113a79501815561134b565b9080546001600160a01b0360039390931b83811b199091169290931690921b179055565b565b335f9081525f516020612b335f395f51905f52602052604090205460ff16156113ce57565b63e2517d3f60e01b5f52336004525f516020612b735f395f51905f5260245260445ffd5b335f9081527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff133602052604090205460ff161561142a57565b63e2517d3f60e01b5f52336004525f516020612bd35f395f51905f5260245260445ffd5b5f8181525f516020612b935f395f51905f526020908152604080832033845290915290205460ff161561147e5750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f516020612bf35f395f51905f525c6114ba5760015f516020612bf35f395f51905f525d565b633ee5aeb560e01b5f5260045ffd5b6114d16115c3565b8054928383146115ba576114e3611e24565b106115b357611518600582016115126114fb82611325565b905460039190911b1c6001600160a01b0316611d9f565b50611325565b905460039190911b1c6001600160a01b03165f908152600482016020526040902080546115458185611318565b85116115995792849281926115867f2925be3e6d4b2cbcec6c06d5060fb3b53f160410555e45ee0a1f6dc7ae9b24c09761158185604099611318565b6112d9565b90555582519182526020820152a1600190565b8385632c421f2b60e21b5f5260045260245260445260645ffd5b5050505f90565b50505050600190565b604051602081017f109cdeb08b6fcb52a0f8a35af1bf023afdacdc6e602b08424b2171d0f4fa3cd48152602082526115fc604083611299565b9051902060ff191690565b61161182826123ed565b918261161c57505090565b5f9182525f516020612b135f395f51905f526020526040909120611649916001600160a01b0316906129b3565b5090565b611657828261248b565b918261166257505090565b5f9182525f516020612b135f395f51905f526020526040909120611649916001600160a01b031690612a16565b818102929181159184041417156112e657565b6116aa612527565b6116b26115c3565b600181018054838111158061184d575b15611833576116d190846112d9565b91821561182d57838154926116e6858561168f565b92826003820154958587105f146118265761170187876112d9565b925b836117a8575b50505050556117166115c3565b9043850361178a575f935b848403611734575b505060039150015590565b61173e90866112d9565b600181018091116112e6577f1a45018bdab6039c806fac73d617b3bc5c6a2a0f22f6f90d2ca202b083087f99606060039588946040519182528860208301526040820152a35f80611729565b828110156117a25761179c81846112d9565b93611721565b5f61179c565b6117e86117f0926117bb60058401611325565b905460039190911b1c6001600160a01b03165f9081526004840160205260409020600690930154906112d9565b9054906112d9565b6117fa888261168f565b80841015611815575061180c926121ee565b5f828180611709565b90506118219288611fe4565b61180c565b5f92611703565b50505090565b8363a0d2b9db60e01b5f526004526024524360445260645ffd5b50438411156116c2565b90916118645f848461270d565b1561125957611871611e24565b10611b015761187f81611d9f565b506118966114fb60056118906115c3565b01611325565b5061189f6115c3565b600481019060018060a01b0383165f528160205260405f20916118c460058301611325565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611903916001916118f891611318565b940193845490611318565b808611611aeb579160069161191b87611929956112d9565b9055019182549054906112d9565b90556119336115c3565b6001600160a01b0382165f9081526004820160205260409020908315801590611ae4575b156119c257915f6001835f516020612c135f395f51905f5295846040965415806119b7575b6119a4575b505086815501555b81519384525f60208501526001600160a01b031692a2600190565b60056119b09201611360565b5f84611981565b50838301541561197c565b5050906119cd6115c3565b916001600160a01b03811690600584019060015b825480821015611ac657846119f6838661134b565b905460039190911b1c6001600160a01b031614611a1657506001016119e1565b905f9692939495961982019182116112e657611383611a38611a51938761134b565b905460039190911b1c6001600160a01b0316918661134b565b8254908115611ab2575f516020612c135f395f51905f52946040946004935f190190611a95611a80838361134b565b81549060018060a01b039060031b1b19169055565b555f52016020525f60028382208281558260018201550155611989565b634e487b7160e01b5f52603160045260245ffd5b505090505f516020612c135f395f51905f5292935060409150611989565b505f611957565b8563162930e360e11b5f5260045260245260445ffd5b50505f90565b92919091611b1682848661270d565b156115ba57611b23611e24565b106115b357611b3183611d9f565b50611b426114fb60056118906115c3565b50611b4b6115c3565b600481019060018060a01b0385165f528160205260405f2091611b7060058301611325565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611ba4916001916118f891611318565b80611baf8688611318565b11611bba8688611318565b90611d8a57506006611bec938693611bd9856115818b611be7976112d9565b9055019384549054906112d9565b611318565b9055611bf66115c3565b6001600160a01b0384165f9081526004820160205260409020908315801590611d81575b15611c86579180600183604095885f516020612c135f395f51905f52989996541580611c7b575b611c68575b505087815501555b825194855260208501526001600160a01b031692a2600190565b6005611c749201611360565b5f85611c46565b508383015415611c41565b505091611c916115c3565b926001600160a01b03821691600585019160015b835480821015611d625785611cba838761134b565b905460039190911b1c6001600160a01b031614611cda5750600101611ca5565b905f979293949596971982019182116112e657611383611cfd611d16938861134b565b905460039190911b1c6001600160a01b0316918761134b565b8354908115611ab2575f516020612c135f395f51905f52956040956004935f190190611d45611a80838361134b565b555f52016020525f60028482208281558260018201550155611c4e565b50509091505f516020612c135f395f51905f5293945060409250611c4e565b50821515611c1a565b63162930e360e11b5f5260045260245260445ffd5b6001600160a01b03168015611dfc576004611db86115c3565b01815f52602052600260405f20018054431115611e1d57439055803b1561022f575f8091600460405180948193631efc6b4160e11b83525af18015611e1257611e02575b50600190565b5f611e0c91611299565b5f611dfc565b6040513d5f823e3d90fd5b5050600190565b611e2c6115c3565b611e34612527565b60ff5f516020612bb35f395f51905f525416611e67576003015415611e5f57611e5c436116a2565b90565b611e5c612859565b6001015490565b611e766115c3565b906005820190611e8582611325565b90546001600160a01b038381169660039390931b9190911c169390858514611fd957835460015b818110611f9c575050611ebd611e24565b10611f93576004611ef691611ed186611d9f565b50611edb84611d9f565b500191855f5282602052611383600260405f20015494611325565b6001600160a01b0383165f90815260208290526040808220868352912090808203611f75575b505060018060a01b0383165f52806020525f6002604082208281558260018201550155835f52602052600260405f2001557ef06471e88e0bc1db6b6126efdb09f80b597e6ddc145ff0dcabd12afab4ec575f80a3600190565b60028181925484556001810154600185015501549101555f80611f1c565b50505050505f90565b87611fa7828861134b565b905460039190911b1c6001600160a01b031614611fc657600101611eac565b8763f158185d60e01b5f5260045260245ffd5b505050505050600190565b939093929192611ff26115c3565b600181015492600184018094116112e657600196956004600584019301975b835481101561210b57612024818561134b565b905460039190911b1c6001600160a01b03165f81815260208b9052604090205490919086908061205b575b50506001915001612011565b906120659161168f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290833b1561022f576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af1918215611e12575f516020612b535f395f51905f5260208b936001978e966120fb575b50604051908152a4855f61204f565b5f61210591611299565b5f6120ec565b509193949590965061211d92506112d9565b908161212a575b50505050565b61213390611325565b905460039190911b1c6001600160a01b0316908115612124577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561022f576040516340c10f1960e01b81526001600160a01b038416600482015260248101829052915f908390604490829084905af1908115611e12575f516020612b535f395f51905f52926020926121de575b50604051908152a45f808080612124565b5f6121e891611299565b5f6121cd565b9190916121f96115c3565b92801580801561234d575b61234657600185015492600184018094116112e65760048601969560050160015b815481101561233b57612238818361134b565b905460039190911b1c6001600160a01b03165f81815260208b9052604090205490919085908061226f575b50506001915001612225565b612279908661168f565b90612327577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290879004833b1561022f576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af1918215611e12575f516020612b535f395f51905f5260208b936001978e96612317575b50604051908152a4845f612263565b5f61232191611299565b5f612308565b634e487b7160e01b5f52601260045260245ffd5b505050505050509050565b5050505050565b508215612204565b6001600160a01b0381165f9081525f516020612b335f395f51905f52602052604090205460ff166123e8576001600160a01b03165f8181525f516020612b335f395f51905f5260205260408120805460ff191660011790553391905f516020612b735f395f51905f52907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b505f90565b5f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16611b01575f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615611b01575f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b61252f6115c3565b600281019081544381146127085761254781436112d9565b92600182018092116112e6576003830180549060ff5f516020612bb35f395f51905f52541680156126ff575b6126a4575b505043905560068201548061258d5750505050565b60ff60078401541660038110156111ca576002810361265057505060058201805493600490930192905f5b8581106125cf575050505050505b5f808080612124565b806125dc6001928461134b565b838060a01b0391549060031b1c16828060a01b0381165f5286602052858360405f2001548681612611575b50505050016125b8565b61261a9161168f565b916040519283527fa34db09d4126dd8dcd1d29f3df65c01dcac405127546e380add77fedca459ba760204394a45f858186612607565b919390925090600114612666575b5050506125c6565b61266f9161168f565b906040519182527fcef44ce1a1fc7ca1f3078daf79d3b60646d0e751bc72a69bff12f66c4aef3b8d60204393a35f808061265e565b6126bb6126b587600688015461168f565b83611318565b80915580820315612578576040519182526020820152827f0539ce444a515b8aa8769802297761fbec80b5b543c617714bf5e0611cf669db60404393a35f80612578565b50811515612573565b505050565b6001600160a01b03169190821561284a576127266115c3565b6005810161275061273682611325565b905460039190911b1c6001600160a01b0316861491611325565b905460039190911b1c6001600160a01b0316906128385750600490845f520160205260405f208282825414918261282a575b50506115b3571590811591612820575b5061279d5750600190565b6040516301ffc9a760e01b815263aee4dc4360e01b6004820152602081602481855afa908115611e12575f916127e5575b50611dfc5763a5fe861560e01b5f5260045260245ffd5b90506020813d602011612818575b8161280060209383611299565b8101031261022f5751801515810361022f575f6127ce565b3d91506127f3565b905015155f612792565b60010154149050825f612782565b63fda6c18760e01b5f5260045260245ffd5b6322a4ec7b60e11b5f5260045ffd5b6128616115c3565b90600182019182549061287482436112d9565b9081156129ac57600183018093116112e6575f94936004600583019201955b825481101561299f576128a6818461134b565b905460039190911b1c6001600160a01b03169081156129965760018060a01b0382165f52876020528460405f2054806128e7575b5050600191505b01612893565b906128f19161168f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692833b1561022f576040516340c10f1960e01b81526001600160a01b038216600482015260248101839052935f908590604490829084905af1908115611e12576001948992612986575b506040519283525f516020612b535f395f51905f5260204394a4845f6128da565b5f61299091611299565b5f612965565b600191506128e1565b5094505050504390554390565b5090925050565b6001810190825f528160205260405f2054155f146115b3578054600160401b8110156106a857612a036129ed82600187940185558461134b565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b906001820191815f528260205260405f20548015155f14612abf575f1981018181116112e65782545f198101919082116112e657818103612a8a575b50505080548015611ab2575f190190612a6b828261134b565b8154905f199060031b1b19169055555f526020525f6040812055600190565b612aaa612a9a6129ed938661134b565b90549060031b1c9283928661134b565b90555f528360205260405f20555f8080612a52565b505050505f90565b60ff5f516020612c335f395f51905f525460401c1615612ae357565b631afcd79f60e31b5f5260045ffdfebd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200075e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8030c56d855d8df534c916b78eac3522e5fafd59f48799c4a97d42e80f6e08989607935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f001bd3f0d2f1001a856d81215ceb86c548bdbc3bf52480a08978f8c3ea6e2bd421f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a0ae2eb9597922e6b519237f96c918712d1bba6e715b72ffcb6b316f8ca4c76164736f6c63430008210033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","opcodes":"PUSH1 0xA0 CALLVALUE PUSH2 0x12E JUMPI PUSH1 0x1F PUSH2 0x2DEF CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x132 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x12E JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0x12E JUMPI DUP1 ISZERO PUSH2 0x11F JUMPI PUSH1 0x80 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2DCF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 PUSH1 0x40 SHR AND PUSH2 0x110 JUMPI PUSH1 0x2 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND ADD PUSH2 0xBA JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C88 SWAP1 DUP2 PUSH2 0x147 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2067 ADD MSTORE DUP2 DUP2 PUSH2 0x214E ADD MSTORE DUP2 DUP2 PUSH2 0x2280 ADD MSTORE PUSH2 0x28F3 ADD MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2DCF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 SWAP1 LOG1 PUSH0 PUSH2 0x8D JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x69E4EEB3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x1066 JUMPI POP DUP1 PUSH4 0x1156BDC1 EQ PUSH2 0x1037 JUMPI DUP1 PUSH4 0x13A7855D EQ PUSH2 0xFFD JUMPI DUP1 PUSH4 0x15D3B5D8 EQ PUSH2 0xF84 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0xF66 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0xF35 JUMPI DUP1 PUSH4 0x3067CB4C EQ PUSH2 0xE8D JUMPI DUP1 PUSH4 0x32BC934C EQ PUSH2 0xE70 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0xE2C JUMPI DUP1 PUSH4 0x389ED267 EQ PUSH2 0xE05 JUMPI DUP1 PUSH4 0x3AF5B073 EQ PUSH2 0xDDA JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0xD5C JUMPI DUP1 PUSH4 0x443990FA EQ PUSH2 0xD1A JUMPI DUP1 PUSH4 0x4887693C EQ PUSH2 0xCE7 JUMPI DUP1 PUSH4 0x48C3C62E EQ PUSH2 0xC61 JUMPI DUP1 PUSH4 0x49BDFCB0 EQ PUSH2 0xC24 JUMPI DUP1 PUSH4 0x4A1293B7 EQ PUSH2 0xBFE JUMPI DUP1 PUSH4 0x52C0E18C EQ PUSH2 0xBB8 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0xB8A JUMPI DUP1 PUSH4 0x63FE3B56 EQ PUSH2 0xB21 JUMPI DUP1 PUSH4 0x647B3682 EQ PUSH2 0xADB JUMPI DUP1 PUSH4 0x697CF322 EQ PUSH2 0xAA6 JUMPI DUP1 PUSH4 0x79D5FC54 EQ PUSH2 0xA83 JUMPI DUP1 PUSH4 0x7C92330B EQ PUSH2 0xA33 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x9B2 JUMPI DUP1 PUSH4 0x84C48422 EQ PUSH2 0x952 JUMPI DUP1 PUSH4 0x87EE921C EQ PUSH2 0x929 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x8D8 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x883 JUMPI DUP1 PUSH4 0x93C911A8 EQ PUSH2 0x855 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH2 0x7BB JUMPI DUP1 PUSH4 0xC2CB3544 EQ PUSH2 0x773 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x401 JUMPI DUP1 PUSH4 0xC627B7A4 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0xCCC57490 EQ PUSH2 0x373 JUMPI DUP1 PUSH4 0xD012A15B EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0xD48BEB1B EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xE038978E EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0xEE56977E EQ PUSH2 0x233 JUMPI PUSH4 0xF5B541A6 EQ PUSH2 0x1F5 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x97667070C54EF182B0F5858B034BEAC1B6F3089AA2D3188BB1E8929F4FA9B929 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x24B PUSH2 0x12BB JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x256 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD SWAP1 PUSH1 0x3 PUSH1 0x2 DUP3 ADD SLOAD SWAP2 ADD SLOAD SWAP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x274 DUP5 PUSH2 0x127D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2A1 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x2C5 PUSH1 0x44 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x21EE JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x2C5 PUSH1 0x4 CALLDATALOAD PUSH2 0x2E6 PUSH2 0x114F JUMP JUMPDEST SWAP1 PUSH2 0x2F8 PUSH2 0x2F3 DUP3 PUSH2 0x12FA JUMP JUMPDEST PUSH2 0x144E JUMP JUMPDEST PUSH2 0x164D JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x80 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x2C5 PUSH1 0x64 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x1FE4 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0x340 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x348 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1E6E JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x3E9 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0x3F1 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x359 PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x14C9 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x41A PUSH2 0x1165 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x40 SHR AND ISZERO SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 ISZERO SWAP1 DUP2 PUSH2 0x76B JUMPI JUMPDEST PUSH1 0x1 EQ SWAP1 DUP2 PUSH2 0x761 JUMPI JUMPDEST ISZERO SWAP1 DUP2 PUSH2 0x758 JUMPI JUMPDEST POP PUSH2 0x749 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x71D JUMPI JUMPDEST POP PUSH2 0x48B PUSH2 0x2AC7 JUMP JUMPDEST PUSH2 0x493 PUSH2 0x2AC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x70E JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE804 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH2 0x5F9 SWAP4 SWAP3 SWAP2 DUP3 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BD3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF134 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH32 0x97667070C54EF182B0F5858B034BEAC1B6F3089AA2D3188BB1E8929F4FA9B929 PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB457 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH2 0x2355 JUMP JUMPDEST PUSH2 0x6BC JUMPI JUMPDEST POP PUSH2 0x607 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0x6A8 JUMPI PUSH2 0x628 SWAP2 PUSH1 0x1 DUP3 ADD DUP2 SSTORE PUSH2 0x134B JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE PUSH1 0x7 DUP2 ADD PUSH1 0x2 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x1 NUMBER SWAP2 ADD SSTORE PUSH2 0x656 JUMPI STOP JUMPDEST PUSH1 0xFF PUSH1 0x40 SHL NOT PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x707 SWAP1 PUSH32 0x955AF8CAAF1BB5FCA493CBB01CEFEB9E610A81071C268CD8B40C82100CBB956E PUSH2 0x29B3 JUMP JUMPDEST POP DUP2 PUSH2 0x5FE JUMP JUMPDEST PUSH4 0x395D0535 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFFFF NOT AND PUSH9 0x10000000000000001 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x482 JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP ISZERO DUP5 PUSH2 0x459 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP PUSH2 0x451 JUMP JUMPDEST DUP5 SWAP2 POP PUSH2 0x447 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x80 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0x791 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x799 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0x7A1 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B07 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x825 JUMPI PUSH2 0x821 DUP6 PUSH2 0x815 DUP2 DUP8 SUB DUP3 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x117B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP3 SLOAD DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x7FE JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x7 PUSH2 0x873 PUSH2 0x15C3 JUMP JUMPDEST ADD SLOAD AND PUSH2 0x2A1 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH2 0x11BD JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x89C PUSH2 0x114F JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x910 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x3 SWAP3 SWAP1 SWAP3 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x910 PUSH1 0x4 CALLDATALOAD PUSH1 0x5 PUSH2 0x94C PUSH2 0x15C3 JUMP JUMPDEST ADD PUSH2 0x134B JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x96B PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x973 PUSH2 0x12BB JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0x97E PUSH2 0x15C3 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x60 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 DUP2 SLOAD SWAP2 ADD SLOAD PUSH2 0x9A4 DUP2 DUP4 PUSH2 0x1318 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x274 DUP5 PUSH2 0x127D JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x9CA PUSH2 0x13F2 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND PUSH2 0xA24 JUMPI PUSH1 0x1 SWAP1 PUSH1 0xFF NOT AND OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0xD93C0665 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0xA4E PUSH2 0x1165 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xA5A PUSH2 0x13A9 JUMP JUMPDEST PUSH1 0x4 PUSH2 0xA64 PUSH2 0x15C3 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE DUP3 MSTORE DUP1 PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0xA9D PUSH2 0x15C3 JUMP JUMPDEST SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0xAC4 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0xACC PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xAD4 PUSH2 0x1494 JUMP JUMPDEST NUMBER SWAP1 PUSH2 0x1E6E JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0xAF9 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0xB01 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xB09 PUSH2 0x1494 JUMP JUMPDEST NUMBER SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B07 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x5 PUSH2 0xB3B PUSH2 0x15C3 JUMP JUMPDEST ADD PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xB6B JUMPI PUSH2 0x821 DUP6 PUSH2 0x815 DUP2 DUP8 SUB DUP3 PUSH2 0x1299 JUMP JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0xB54 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0xBD1 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xBD9 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xBE6 PUSH1 0x4 CALLDATALOAD PUSH2 0x16A2 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x5 PUSH2 0xC1A PUSH2 0x15C3 JUMP JUMPDEST ADD SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x1 PUSH2 0xC3E PUSH2 0x15C3 JUMP JUMPDEST ADD SLOAD NUMBER SUB PUSH2 0xC52 JUMPI PUSH1 0x20 NUMBER JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 PUSH2 0xC5C PUSH2 0x1E24 JUMP JUMPDEST PUSH2 0xC4A JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0xC7A PUSH2 0x1165 JUMP JUMPDEST PUSH2 0xC82 PUSH2 0x12BB JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0xC8D PUSH2 0x15C3 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x60 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP2 PUSH2 0xCB1 DUP4 PUSH2 0x127D JUMP JUMPDEST DUP1 SLOAD DUP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP5 ADD MSTORE ADD SLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2A1 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0xD05 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0xD0D PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xD15 PUSH2 0x1494 JUMP JUMPDEST PUSH2 0x1D9F JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0xD38 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0xD40 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xD48 PUSH2 0x1494 JUMP JUMPDEST NUMBER SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1857 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0xD74 PUSH2 0x13F2 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND ISZERO PUSH2 0xDCB JUMPI PUSH1 0xFF NOT AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x8DFC202B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0xDF2 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xDFA PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xBE6 NUMBER PUSH2 0x16A2 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BD3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0xE45 PUSH2 0x114F JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SUB PUSH2 0xE61 JUMPI PUSH2 0x2C5 SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0x164D JUMP JUMPDEST PUSH4 0x334BD919 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x80 PUSH2 0xEA8 PUSH2 0x1165 JUMP JUMPDEST PUSH0 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH2 0xEB7 DUP2 PUSH2 0x1261 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE PUSH2 0xED0 PUSH2 0x15C3 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP2 PUSH1 0x2 PUSH1 0x1 DUP1 DUP4 ADD SLOAD SWAP4 ADD SLOAD SWAP2 ADD SLOAD SWAP2 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH2 0xF06 DUP2 PUSH2 0x1261 JUMP JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 DUP4 MSTORE PUSH1 0x40 DUP2 ADD SWAP4 DUP5 MSTORE ADD SWAP3 DUP4 MSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 MSTORE MLOAD PUSH1 0x20 DUP5 ADD MSTORE MLOAD PUSH1 0x40 DUP4 ADD MSTORE MLOAD PUSH1 0x60 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x2C5 PUSH1 0x4 CALLDATALOAD PUSH2 0xF54 PUSH2 0x114F JUMP JUMPDEST SWAP1 PUSH2 0xF61 PUSH2 0x2F3 DUP3 PUSH2 0x12FA JUMP JUMPDEST PUSH2 0x1607 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0xC4A PUSH1 0x4 CALLDATALOAD PUSH2 0x12FA JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x60 PUSH2 0xF9E PUSH2 0x12BB JUMP JUMPDEST PUSH2 0xFD7 PUSH2 0xFA9 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x6 PUSH2 0xFC5 DUP3 SLOAD PUSH0 DUP1 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x12D9 JUMP JUMPDEST SWAP2 DUP3 DUP6 MSTORE ADD SLOAD SWAP1 DUP2 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2A1 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH2 0x102D PUSH1 0x20 SWAP2 PUSH2 0x1028 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x1050 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0x1058 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x359 NUMBER PUSH1 0x4 CALLDATALOAD PUSH2 0x14C9 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0x22F JUMPI PUSH1 0x20 SWAP2 PUSH4 0x1E768DFF PUSH1 0xE2 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x113E JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x112D JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x111C JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x10BD JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1CF1473B PUSH1 0xE3 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x10D7 JUMPI JUMPDEST POP DUP4 PUSH2 0x10B6 JUMP JUMPDEST PUSH4 0x5A05180F PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x10F1 JUMPI JUMPDEST POP DUP4 PUSH2 0x10D0 JUMP JUMPDEST PUSH4 0x7965DB0B PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x110B JUMPI JUMPDEST POP DUP4 PUSH2 0x10EA JUMP JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0x1104 JUMP JUMPDEST PUSH4 0x2461E317 PUSH1 0xE1 SHL DUP2 EQ SWAP2 POP PUSH2 0x10AF JUMP JUMPDEST PUSH4 0xA896602D PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x10A8 JUMP JUMPDEST PUSH4 0x50D8541D PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x10A1 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x22F JUMPI JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x22F JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x119E JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1191 JUMP JUMPDEST SWAP1 PUSH1 0x3 DUP3 LT ISZERO PUSH2 0x11CA JUMPI MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x7 PUSH2 0x11E8 PUSH2 0x15C3 JUMP JUMPDEST ADD SWAP1 PUSH1 0xFF DUP3 SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x11CA JUMPI PUSH1 0x3 DUP3 LT ISZERO PUSH2 0x11CA JUMPI DUP1 DUP3 EQ PUSH2 0x1259 JUMPI PUSH2 0x1253 PUSH1 0x40 SWAP3 PUSH32 0x3F59746E46BFB9AF931035055D53B82D1B70968466065162B7DBF8E998AEE629 SWAP5 PUSH1 0xFF NOT DUP2 SLOAD AND PUSH1 0xFF DUP4 AND OR SWAP1 SSTORE PUSH2 0x1249 DUP5 MLOAD DUP1 SWAP5 PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x11BD JUMP JUMPDEST LOG1 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6A8 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6A8 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6A8 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x12C8 DUP3 PUSH2 0x127D JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x12E6 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x12E6 JUMPI JUMP JUMPDEST DUP1 SLOAD ISZERO PUSH2 0x1337 JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x1337 JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x40 SHL DUP4 LT ISZERO PUSH2 0x6A8 JUMPI DUP3 PUSH2 0x1383 SWAP2 PUSH1 0x1 PUSH2 0x13A7 SWAP6 ADD DUP2 SSTORE PUSH2 0x134B JUMP JUMPDEST SWAP1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x3 SWAP4 SWAP1 SWAP4 SHL DUP4 DUP2 SHL NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP1 SWAP3 SHL OR SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x13CE JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF133 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x142A JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BD3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x147E JUMPI POP JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TLOAD PUSH2 0x14BA JUMPI PUSH1 0x1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE JUMP JUMPDEST PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x14D1 PUSH2 0x15C3 JUMP JUMPDEST DUP1 SLOAD SWAP3 DUP4 DUP4 EQ PUSH2 0x15BA JUMPI PUSH2 0x14E3 PUSH2 0x1E24 JUMP JUMPDEST LT PUSH2 0x15B3 JUMPI PUSH2 0x1518 PUSH1 0x5 DUP3 ADD PUSH2 0x1512 PUSH2 0x14FB DUP3 PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D9F JUMP JUMPDEST POP PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1545 DUP2 DUP6 PUSH2 0x1318 JUMP JUMPDEST DUP6 GT PUSH2 0x1599 JUMPI SWAP3 DUP5 SWAP3 DUP2 SWAP3 PUSH2 0x1586 PUSH32 0x2925BE3E6D4B2CBCEC6C06D5060FB3B53F160410555E45EE0A1F6DC7AE9B24C0 SWAP8 PUSH2 0x1581 DUP6 PUSH1 0x40 SWAP10 PUSH2 0x1318 JUMP JUMPDEST PUSH2 0x12D9 JUMP JUMPDEST SWAP1 SSTORE SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 PUSH1 0x1 SWAP1 JUMP JUMPDEST DUP4 DUP6 PUSH4 0x2C421F2B PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH32 0x109CDEB08B6FCB52A0F8A35AF1BF023AFDACDC6E602B08424B2171D0F4FA3CD4 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x15FC PUSH1 0x40 DUP4 PUSH2 0x1299 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x1611 DUP3 DUP3 PUSH2 0x23ED JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x161C JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x1649 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x29B3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1657 DUP3 DUP3 PUSH2 0x248B JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x1662 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x1649 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2A16 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x12E6 JUMPI JUMP JUMPDEST PUSH2 0x16AA PUSH2 0x2527 JUMP JUMPDEST PUSH2 0x16B2 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD DUP4 DUP2 GT ISZERO DUP1 PUSH2 0x184D JUMPI JUMPDEST ISZERO PUSH2 0x1833 JUMPI PUSH2 0x16D1 SWAP1 DUP5 PUSH2 0x12D9 JUMP JUMPDEST SWAP2 DUP3 ISZERO PUSH2 0x182D JUMPI DUP4 DUP2 SLOAD SWAP3 PUSH2 0x16E6 DUP6 DUP6 PUSH2 0x168F JUMP JUMPDEST SWAP3 DUP3 PUSH1 0x3 DUP3 ADD SLOAD SWAP6 DUP6 DUP8 LT PUSH0 EQ PUSH2 0x1826 JUMPI PUSH2 0x1701 DUP8 DUP8 PUSH2 0x12D9 JUMP JUMPDEST SWAP3 JUMPDEST DUP4 PUSH2 0x17A8 JUMPI JUMPDEST POP POP POP POP SSTORE PUSH2 0x1716 PUSH2 0x15C3 JUMP JUMPDEST SWAP1 NUMBER DUP6 SUB PUSH2 0x178A JUMPI PUSH0 SWAP4 JUMPDEST DUP5 DUP5 SUB PUSH2 0x1734 JUMPI JUMPDEST POP POP PUSH1 0x3 SWAP2 POP ADD SSTORE SWAP1 JUMP JUMPDEST PUSH2 0x173E SWAP1 DUP7 PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x12E6 JUMPI PUSH32 0x1A45018BDAB6039C806FAC73D617B3BC5C6A2A0F22F6F90D2CA202B083087F99 PUSH1 0x60 PUSH1 0x3 SWAP6 DUP9 SWAP5 PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE DUP9 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE LOG3 PUSH0 DUP1 PUSH2 0x1729 JUMP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x17A2 JUMPI PUSH2 0x179C DUP2 DUP5 PUSH2 0x12D9 JUMP JUMPDEST SWAP4 PUSH2 0x1721 JUMP JUMPDEST PUSH0 PUSH2 0x179C JUMP JUMPDEST PUSH2 0x17E8 PUSH2 0x17F0 SWAP3 PUSH2 0x17BB PUSH1 0x5 DUP5 ADD PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x6 SWAP1 SWAP4 ADD SLOAD SWAP1 PUSH2 0x12D9 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x17FA DUP9 DUP3 PUSH2 0x168F JUMP JUMPDEST DUP1 DUP5 LT ISZERO PUSH2 0x1815 JUMPI POP PUSH2 0x180C SWAP3 PUSH2 0x21EE JUMP JUMPDEST PUSH0 DUP3 DUP2 DUP1 PUSH2 0x1709 JUMP JUMPDEST SWAP1 POP PUSH2 0x1821 SWAP3 DUP9 PUSH2 0x1FE4 JUMP JUMPDEST PUSH2 0x180C JUMP JUMPDEST PUSH0 SWAP3 PUSH2 0x1703 JUMP JUMPDEST POP POP POP SWAP1 JUMP JUMPDEST DUP4 PUSH4 0xA0D2B9DB PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE NUMBER PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST POP NUMBER DUP5 GT ISZERO PUSH2 0x16C2 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1864 PUSH0 DUP5 DUP5 PUSH2 0x270D JUMP JUMPDEST ISZERO PUSH2 0x1259 JUMPI PUSH2 0x1871 PUSH2 0x1E24 JUMP JUMPDEST LT PUSH2 0x1B01 JUMPI PUSH2 0x187F DUP2 PUSH2 0x1D9F JUMP JUMPDEST POP PUSH2 0x1896 PUSH2 0x14FB PUSH1 0x5 PUSH2 0x1890 PUSH2 0x15C3 JUMP JUMPDEST ADD PUSH2 0x1325 JUMP JUMPDEST POP PUSH2 0x189F PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH2 0x18C4 PUSH1 0x5 DUP4 ADD PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SLOAD PUSH2 0x1903 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x18F8 SWAP2 PUSH2 0x1318 JUMP JUMPDEST SWAP5 ADD SWAP4 DUP5 SLOAD SWAP1 PUSH2 0x1318 JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x1AEB JUMPI SWAP2 PUSH1 0x6 SWAP2 PUSH2 0x191B DUP8 PUSH2 0x1929 SWAP6 PUSH2 0x12D9 JUMP JUMPDEST SWAP1 SSTORE ADD SWAP2 DUP3 SLOAD SWAP1 SLOAD SWAP1 PUSH2 0x12D9 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x1933 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1AE4 JUMPI JUMPDEST ISZERO PUSH2 0x19C2 JUMPI SWAP2 PUSH0 PUSH1 0x1 DUP4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP6 DUP5 PUSH1 0x40 SWAP7 SLOAD ISZERO DUP1 PUSH2 0x19B7 JUMPI JUMPDEST PUSH2 0x19A4 JUMPI JUMPDEST POP POP DUP7 DUP2 SSTORE ADD SSTORE JUMPDEST DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH0 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 LOG2 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x19B0 SWAP3 ADD PUSH2 0x1360 JUMP JUMPDEST PUSH0 DUP5 PUSH2 0x1981 JUMP JUMPDEST POP DUP4 DUP4 ADD SLOAD ISZERO PUSH2 0x197C JUMP JUMPDEST POP POP SWAP1 PUSH2 0x19CD PUSH2 0x15C3 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x5 DUP5 ADD SWAP1 PUSH1 0x1 JUMPDEST DUP3 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0x1AC6 JUMPI DUP5 PUSH2 0x19F6 DUP4 DUP7 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1A16 JUMPI POP PUSH1 0x1 ADD PUSH2 0x19E1 JUMP JUMPDEST SWAP1 PUSH0 SWAP7 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x12E6 JUMPI PUSH2 0x1383 PUSH2 0x1A38 PUSH2 0x1A51 SWAP4 DUP8 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP7 PUSH2 0x134B JUMP JUMPDEST DUP3 SLOAD SWAP1 DUP2 ISZERO PUSH2 0x1AB2 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP5 PUSH1 0x40 SWAP5 PUSH1 0x4 SWAP4 PUSH0 NOT ADD SWAP1 PUSH2 0x1A95 PUSH2 0x1A80 DUP4 DUP4 PUSH2 0x134B JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST SSTORE PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 DUP4 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE PUSH2 0x1989 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP SWAP1 POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP3 SWAP4 POP PUSH1 0x40 SWAP2 POP PUSH2 0x1989 JUMP JUMPDEST POP PUSH0 PUSH2 0x1957 JUMP JUMPDEST DUP6 PUSH4 0x162930E3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x1B16 DUP3 DUP5 DUP7 PUSH2 0x270D JUMP JUMPDEST ISZERO PUSH2 0x15BA JUMPI PUSH2 0x1B23 PUSH2 0x1E24 JUMP JUMPDEST LT PUSH2 0x15B3 JUMPI PUSH2 0x1B31 DUP4 PUSH2 0x1D9F JUMP JUMPDEST POP PUSH2 0x1B42 PUSH2 0x14FB PUSH1 0x5 PUSH2 0x1890 PUSH2 0x15C3 JUMP JUMPDEST POP PUSH2 0x1B4B PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH2 0x1B70 PUSH1 0x5 DUP4 ADD PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SLOAD PUSH2 0x1BA4 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x18F8 SWAP2 PUSH2 0x1318 JUMP JUMPDEST DUP1 PUSH2 0x1BAF DUP7 DUP9 PUSH2 0x1318 JUMP JUMPDEST GT PUSH2 0x1BBA DUP7 DUP9 PUSH2 0x1318 JUMP JUMPDEST SWAP1 PUSH2 0x1D8A JUMPI POP PUSH1 0x6 PUSH2 0x1BEC SWAP4 DUP7 SWAP4 PUSH2 0x1BD9 DUP6 PUSH2 0x1581 DUP12 PUSH2 0x1BE7 SWAP8 PUSH2 0x12D9 JUMP JUMPDEST SWAP1 SSTORE ADD SWAP4 DUP5 SLOAD SWAP1 SLOAD SWAP1 PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x1318 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x1BF6 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1D81 JUMPI JUMPDEST ISZERO PUSH2 0x1C86 JUMPI SWAP2 DUP1 PUSH1 0x1 DUP4 PUSH1 0x40 SWAP6 DUP9 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP9 SWAP10 SWAP7 SLOAD ISZERO DUP1 PUSH2 0x1C7B JUMPI JUMPDEST PUSH2 0x1C68 JUMPI JUMPDEST POP POP DUP8 DUP2 SSTORE ADD SSTORE JUMPDEST DUP3 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 LOG2 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1C74 SWAP3 ADD PUSH2 0x1360 JUMP JUMPDEST PUSH0 DUP6 PUSH2 0x1C46 JUMP JUMPDEST POP DUP4 DUP4 ADD SLOAD ISZERO PUSH2 0x1C41 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x1C91 PUSH2 0x15C3 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 PUSH1 0x5 DUP6 ADD SWAP2 PUSH1 0x1 JUMPDEST DUP4 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0x1D62 JUMPI DUP6 PUSH2 0x1CBA DUP4 DUP8 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1CDA JUMPI POP PUSH1 0x1 ADD PUSH2 0x1CA5 JUMP JUMPDEST SWAP1 PUSH0 SWAP8 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x12E6 JUMPI PUSH2 0x1383 PUSH2 0x1CFD PUSH2 0x1D16 SWAP4 DUP9 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP8 PUSH2 0x134B JUMP JUMPDEST DUP4 SLOAD SWAP1 DUP2 ISZERO PUSH2 0x1AB2 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP6 PUSH1 0x40 SWAP6 PUSH1 0x4 SWAP4 PUSH0 NOT ADD SWAP1 PUSH2 0x1D45 PUSH2 0x1A80 DUP4 DUP4 PUSH2 0x134B JUMP JUMPDEST SSTORE PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 DUP5 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE PUSH2 0x1C4E JUMP JUMPDEST POP POP SWAP1 SWAP2 POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP4 SWAP5 POP PUSH1 0x40 SWAP3 POP PUSH2 0x1C4E JUMP JUMPDEST POP DUP3 ISZERO ISZERO PUSH2 0x1C1A JUMP JUMPDEST PUSH4 0x162930E3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1DFC JUMPI PUSH1 0x4 PUSH2 0x1DB8 PUSH2 0x15C3 JUMP JUMPDEST ADD DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD DUP1 SLOAD NUMBER GT ISZERO PUSH2 0x1E1D JUMPI NUMBER SWAP1 SSTORE DUP1 EXTCODESIZE ISZERO PUSH2 0x22F JUMPI PUSH0 DUP1 SWAP2 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH4 0x1EFC6B41 PUSH1 0xE1 SHL DUP4 MSTORE GAS CALL DUP1 ISZERO PUSH2 0x1E12 JUMPI PUSH2 0x1E02 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1E0C SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH0 PUSH2 0x1DFC JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x1E2C PUSH2 0x15C3 JUMP JUMPDEST PUSH2 0x1E34 PUSH2 0x2527 JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH2 0x1E67 JUMPI PUSH1 0x3 ADD SLOAD ISZERO PUSH2 0x1E5F JUMPI PUSH2 0x1E5C NUMBER PUSH2 0x16A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E5C PUSH2 0x2859 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1E76 PUSH2 0x15C3 JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 ADD SWAP1 PUSH2 0x1E85 DUP3 PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP7 PUSH1 0x3 SWAP4 SWAP1 SWAP4 SHL SWAP2 SWAP1 SWAP2 SHR AND SWAP4 SWAP1 DUP6 DUP6 EQ PUSH2 0x1FD9 JUMPI DUP4 SLOAD PUSH1 0x1 JUMPDEST DUP2 DUP2 LT PUSH2 0x1F9C JUMPI POP POP PUSH2 0x1EBD PUSH2 0x1E24 JUMP JUMPDEST LT PUSH2 0x1F93 JUMPI PUSH1 0x4 PUSH2 0x1EF6 SWAP2 PUSH2 0x1ED1 DUP7 PUSH2 0x1D9F JUMP JUMPDEST POP PUSH2 0x1EDB DUP5 PUSH2 0x1D9F JUMP JUMPDEST POP ADD SWAP2 DUP6 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH2 0x1383 PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP5 PUSH2 0x1325 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP4 MSTORE SWAP2 KECCAK256 SWAP1 DUP1 DUP3 SUB PUSH2 0x1F75 JUMPI JUMPDEST POP POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE DUP4 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SSTORE PUSH31 0xF06471E88E0BC1DB6B6126EFDB09F80B597E6DDC145FF0DCABD12AFAB4EC57 PUSH0 DUP1 LOG3 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SWAP3 SLOAD DUP5 SSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 DUP6 ADD SSTORE ADD SLOAD SWAP2 ADD SSTORE PUSH0 DUP1 PUSH2 0x1F1C JUMP JUMPDEST POP POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST DUP8 PUSH2 0x1FA7 DUP3 DUP9 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1FC6 JUMPI PUSH1 0x1 ADD PUSH2 0x1EAC JUMP JUMPDEST DUP8 PUSH4 0xF158185D PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x1FF2 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD SWAP3 PUSH1 0x1 DUP5 ADD DUP1 SWAP5 GT PUSH2 0x12E6 JUMPI PUSH1 0x1 SWAP7 SWAP6 PUSH1 0x4 PUSH1 0x5 DUP5 ADD SWAP4 ADD SWAP8 JUMPDEST DUP4 SLOAD DUP2 LT ISZERO PUSH2 0x210B JUMPI PUSH2 0x2024 DUP2 DUP6 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP7 SWAP1 DUP1 PUSH2 0x205B JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP ADD PUSH2 0x2011 JUMP JUMPDEST SWAP1 PUSH2 0x2065 SWAP2 PUSH2 0x168F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP1 DUP4 EXTCODESIZE ISZERO PUSH2 0x22F JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1E12 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B53 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 DUP12 SWAP4 PUSH1 0x1 SWAP8 DUP15 SWAP7 PUSH2 0x20FB JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 DUP6 PUSH0 PUSH2 0x204F JUMP JUMPDEST PUSH0 PUSH2 0x2105 SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH0 PUSH2 0x20EC JUMP JUMPDEST POP SWAP2 SWAP4 SWAP5 SWAP6 SWAP1 SWAP7 POP PUSH2 0x211D SWAP3 POP PUSH2 0x12D9 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x212A JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2133 SWAP1 PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x2124 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x22F JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1E12 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B53 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x21DE JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 PUSH0 DUP1 DUP1 DUP1 PUSH2 0x2124 JUMP JUMPDEST PUSH0 PUSH2 0x21E8 SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH0 PUSH2 0x21CD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x21F9 PUSH2 0x15C3 JUMP JUMPDEST SWAP3 DUP1 ISZERO DUP1 DUP1 ISZERO PUSH2 0x234D JUMPI JUMPDEST PUSH2 0x2346 JUMPI PUSH1 0x1 DUP6 ADD SLOAD SWAP3 PUSH1 0x1 DUP5 ADD DUP1 SWAP5 GT PUSH2 0x12E6 JUMPI PUSH1 0x4 DUP7 ADD SWAP7 SWAP6 PUSH1 0x5 ADD PUSH1 0x1 JUMPDEST DUP2 SLOAD DUP2 LT ISZERO PUSH2 0x233B JUMPI PUSH2 0x2238 DUP2 DUP4 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP6 SWAP1 DUP1 PUSH2 0x226F JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP ADD PUSH2 0x2225 JUMP JUMPDEST PUSH2 0x2279 SWAP1 DUP7 PUSH2 0x168F JUMP JUMPDEST SWAP1 PUSH2 0x2327 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP1 DUP8 SWAP1 DIV DUP4 EXTCODESIZE ISZERO PUSH2 0x22F JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1E12 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B53 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 DUP12 SWAP4 PUSH1 0x1 SWAP8 DUP15 SWAP7 PUSH2 0x2317 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 DUP5 PUSH0 PUSH2 0x2263 JUMP JUMPDEST PUSH0 PUSH2 0x2321 SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH0 PUSH2 0x2308 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP1 POP JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x2204 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x23E8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP2 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1B01 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1B01 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x252F PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SWAP1 DUP2 SLOAD NUMBER DUP2 EQ PUSH2 0x2708 JUMPI PUSH2 0x2547 DUP2 NUMBER PUSH2 0x12D9 JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x12E6 JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD SWAP1 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND DUP1 ISZERO PUSH2 0x26FF JUMPI JUMPDEST PUSH2 0x26A4 JUMPI JUMPDEST POP POP NUMBER SWAP1 SSTORE PUSH1 0x6 DUP3 ADD SLOAD DUP1 PUSH2 0x258D JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0xFF PUSH1 0x7 DUP5 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x11CA JUMPI PUSH1 0x2 DUP2 SUB PUSH2 0x2650 JUMPI POP POP PUSH1 0x5 DUP3 ADD DUP1 SLOAD SWAP4 PUSH1 0x4 SWAP1 SWAP4 ADD SWAP3 SWAP1 PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x25CF JUMPI POP POP POP POP POP POP JUMPDEST PUSH0 DUP1 DUP1 DUP1 PUSH2 0x2124 JUMP JUMPDEST DUP1 PUSH2 0x25DC PUSH1 0x1 SWAP3 DUP5 PUSH2 0x134B JUMP JUMPDEST DUP4 DUP1 PUSH1 0xA0 SHL SUB SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SHR AND DUP3 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE DUP7 PUSH1 0x20 MSTORE DUP6 DUP4 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD DUP7 DUP2 PUSH2 0x2611 JUMPI JUMPDEST POP POP POP POP ADD PUSH2 0x25B8 JUMP JUMPDEST PUSH2 0x261A SWAP2 PUSH2 0x168F JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH32 0xA34DB09D4126DD8DCD1D29F3DF65C01DCAC405127546E380ADD77FEDCA459BA7 PUSH1 0x20 NUMBER SWAP5 LOG4 PUSH0 DUP6 DUP2 DUP7 PUSH2 0x2607 JUMP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 EQ PUSH2 0x2666 JUMPI JUMPDEST POP POP POP PUSH2 0x25C6 JUMP JUMPDEST PUSH2 0x266F SWAP2 PUSH2 0x168F JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0xCEF44CE1A1FC7CA1F3078DAF79D3B60646D0E751BC72A69BFF12F66C4AEF3B8D PUSH1 0x20 NUMBER SWAP4 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x265E JUMP JUMPDEST PUSH2 0x26BB PUSH2 0x26B5 DUP8 PUSH1 0x6 DUP9 ADD SLOAD PUSH2 0x168F JUMP JUMPDEST DUP4 PUSH2 0x1318 JUMP JUMPDEST DUP1 SWAP2 SSTORE DUP1 DUP3 SUB ISZERO PUSH2 0x2578 JUMPI PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH32 0x539CE444A515B8AA8769802297761FBEC80B5B543C617714BF5E0611CF669DB PUSH1 0x40 NUMBER SWAP4 LOG3 PUSH0 DUP1 PUSH2 0x2578 JUMP JUMPDEST POP DUP2 ISZERO ISZERO PUSH2 0x2573 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 DUP3 ISZERO PUSH2 0x284A JUMPI PUSH2 0x2726 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD PUSH2 0x2750 PUSH2 0x2736 DUP3 PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 EQ SWAP2 PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2838 JUMPI POP PUSH1 0x4 SWAP1 DUP5 PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 DUP3 SLOAD EQ SWAP2 DUP3 PUSH2 0x282A JUMPI JUMPDEST POP POP PUSH2 0x15B3 JUMPI ISZERO SWAP1 DUP2 ISZERO SWAP2 PUSH2 0x2820 JUMPI JUMPDEST POP PUSH2 0x279D JUMPI POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 DUP6 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E12 JUMPI PUSH0 SWAP2 PUSH2 0x27E5 JUMPI JUMPDEST POP PUSH2 0x1DFC JUMPI PUSH4 0xA5FE8615 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2818 JUMPI JUMPDEST DUP2 PUSH2 0x2800 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x22F JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x22F JUMPI PUSH0 PUSH2 0x27CE JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x27F3 JUMP JUMPDEST SWAP1 POP ISZERO ISZERO PUSH0 PUSH2 0x2792 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD EQ SWAP1 POP DUP3 PUSH0 PUSH2 0x2782 JUMP JUMPDEST PUSH4 0xFDA6C187 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x22A4EC7B PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2861 PUSH2 0x15C3 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP3 SLOAD SWAP1 PUSH2 0x2874 DUP3 NUMBER PUSH2 0x12D9 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x29AC JUMPI PUSH1 0x1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x12E6 JUMPI PUSH0 SWAP5 SWAP4 PUSH1 0x4 PUSH1 0x5 DUP4 ADD SWAP3 ADD SWAP6 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x299F JUMPI PUSH2 0x28A6 DUP2 DUP5 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x2996 JUMPI PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE DUP8 PUSH1 0x20 MSTORE DUP5 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 PUSH2 0x28E7 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP JUMPDEST ADD PUSH2 0x2893 JUMP JUMPDEST SWAP1 PUSH2 0x28F1 SWAP2 PUSH2 0x168F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x22F JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1E12 JUMPI PUSH1 0x1 SWAP5 DUP10 SWAP3 PUSH2 0x2986 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B53 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 NUMBER SWAP5 LOG4 DUP5 PUSH0 PUSH2 0x28DA JUMP JUMPDEST PUSH0 PUSH2 0x2990 SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH0 PUSH2 0x2965 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x28E1 JUMP JUMPDEST POP SWAP5 POP POP POP POP NUMBER SWAP1 SSTORE NUMBER SWAP1 JUMP JUMPDEST POP SWAP1 SWAP3 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH0 EQ PUSH2 0x15B3 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0x6A8 JUMPI PUSH2 0x2A03 PUSH2 0x29ED DUP3 PUSH1 0x1 DUP8 SWAP5 ADD DUP6 SSTORE DUP5 PUSH2 0x134B JUMP JUMPDEST DUP2 SWAP4 SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP2 DUP3 SHL SWAP2 PUSH0 NOT SWAP1 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE SLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP2 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0x2ABF JUMPI PUSH0 NOT DUP2 ADD DUP2 DUP2 GT PUSH2 0x12E6 JUMPI DUP3 SLOAD PUSH0 NOT DUP2 ADD SWAP2 SWAP1 DUP3 GT PUSH2 0x12E6 JUMPI DUP2 DUP2 SUB PUSH2 0x2A8A JUMPI JUMPDEST POP POP POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x1AB2 JUMPI PUSH0 NOT ADD SWAP1 PUSH2 0x2A6B DUP3 DUP3 PUSH2 0x134B JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE SSTORE PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x2AAA PUSH2 0x2A9A PUSH2 0x29ED SWAP4 DUP7 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR SWAP3 DUP4 SWAP3 DUP7 PUSH2 0x134B JUMP JUMPDEST SWAP1 SSTORE PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2A52 JUMP JUMPDEST POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 SHR AND ISZERO PUSH2 0x2AE3 JUMPI JUMP JUMPDEST PUSH4 0x1AFCD79F PUSH1 0xE3 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID 0xBD PUSH26 0xB86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E12 SWAP16 SIGNEXTEND STOP SELFDESTRUCT 0xC1 0xF6 INVALID 0x24 PUSH3 0x1CE81E 0xC5 DUP3 PUSH29 0xAF0253CADB74709B061630E6B55E8237170593200075E09417C5070057 0xDF RETURNDATACOPY 0xAF JUMPF 0x54D MSTORE STATICCALL SIGNEXTEND 0x2A DUP8 0xD6 BLOBBASEFEE 0x23 MCOPY NOT PUSH26 0x63B615AEDEE8030C56D855D8DF534C916B78EAC3522E5FAFD59F BASEFEE PUSH26 0x9C4A97D42E80F6E08989607935BD0AE54BC31F548C14DBA4D37C TLOAD PUSH5 0xB3F8CA900C 0xB4 PUSH9 0xFB8ABD54D5894F5502 0xDD PUSH28 0xC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B6268 STOP 0xCD MCOPY DATALOADN 0x5C6E XOR PUSH31 0x77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300139C2898040E CALL PUSH10 0x10DC9F44DC697DF79363 0xDA PUSH23 0x7D8BC92F2E310312B816E46D9B779B17422D0DF9222301 DUP12 ORIGIN 0xB4 DATALOADN 0xFA46 RJUMP 0x7172 RETURNDATASIZE PUSH9 0x17E2486D003BECC55F STOP SHL 0xD3 CREATE 0xD2 CALL STOP BYTE DUP6 PUSH14 0x81215CEB86C548BDBC3BF52480A0 DUP10 PUSH25 0xF8C3EA6E2BD421F0C57E16840DF040F15088DC2F81FE391C39 0x23 0xBE 0xC7 RETURNDATACOPY 0x23 0xA9 PUSH7 0x2EFC9C229C6A00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 0xAE 0x2E 0xB9 MSIZE PUSH26 0x22E6B519237F96C918712D1BBA6E715B72FFCB6B316F8CA4C761 PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER CREATE 0xC5 PUSH31 0x16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A000000 ","sourceMap":"395:1631:39:-:0;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;4199:24:36;;395:1631:39;;4267:37:36;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;7894:76:15;;-1:-1:-1;;;;;;;;;;;395:1631:39;;7983:34:15;7979:146;;-1:-1:-1;395:1631:39;;;;;;;;4267:37:36;395:1631:39;;;;;;;;;;;;;;;;;;;;;7979:146:15;-1:-1:-1;;;;;;395:1631:39;-1:-1:-1;;;;;395:1631:39;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;8085:29:15;;395:1631:39;;8085:29:15;7979:146;;;7894:76;7936:23;;;-1:-1:-1;7936:23:15;;-1:-1:-1;7936:23:15;395:1631:39;;;;-1:-1:-1;395:1631:39;;-1:-1:-1;395:1631:39;;-1:-1:-1;395:1631:39;;;;;;-1:-1:-1;395:1631:39;;;;;-1:-1:-1;395:1631:39"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":4431,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_t_address":{"entryPoint":4453,"id":null,"parameterSlots":0,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_address_dyn":{"entryPoint":4475,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_enum_SelfMintingEventMode":{"entryPoint":4541,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_Allocation":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_struct_struct_Allocation":{"entryPoint":4795,"id":null,"parameterSlots":0,"returnSlots":1},"array_push_from_address_to_array_address_dyn_storage_ptr":{"entryPoint":4960,"id":null,"parameterSlots":2,"returnSlots":0},"checked_add_uint256":{"entryPoint":4888,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":5775,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":4825,"id":null,"parameterSlots":2,"returnSlots":1},"constant_ISSUANCE_ALLOCATOR_STORAGE_LOCATION":{"entryPoint":5571,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":4761,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_18464":{"entryPoint":4705,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_18475":{"entryPoint":4733,"id":null,"parameterSlots":1,"returnSlots":0},"fun__checkRole":{"entryPoint":5106,"id":587,"parameterSlots":0,"returnSlots":0},"fun__grantRole":{"entryPoint":5639,"id":1005,"parameterSlots":2,"returnSlots":1},"fun__revokeRole":{"entryPoint":5709,"id":1045,"parameterSlots":2,"returnSlots":1},"fun__setTargetAllocation":{"entryPoint":6919,"id":10153,"parameterSlots":4,"returnSlots":1},"fun_add":{"entryPoint":10675,"id":6810,"parameterSlots":2,"returnSlots":1},"fun_advanceSelfMintingBlock":{"entryPoint":9511,"id":8933,"parameterSlots":0,"returnSlots":0},"fun_checkInitializing":{"entryPoint":10951,"id":1222,"parameterSlots":0,"returnSlots":0},"fun_checkRole":{"entryPoint":5198,"id":587,"parameterSlots":1,"returnSlots":0},"fun_checkRole_18459":{"entryPoint":5033,"id":587,"parameterSlots":0,"returnSlots":0},"fun_distributeIssuance":{"entryPoint":7716,"id":8967,"parameterSlots":0,"returnSlots":1},"fun_distributePendingIssuance":{"entryPoint":5794,"id":9256,"parameterSlots":1,"returnSlots":1},"fun_distributePendingProportionally":{"entryPoint":8686,"id":9530,"parameterSlots":3,"returnSlots":0},"fun_distributePendingWithFullRate":{"entryPoint":8164,"id":9438,"parameterSlots":4,"returnSlots":0},"fun_getRoleAdmin":{"entryPoint":4858,"id":629,"parameterSlots":1,"returnSlots":1},"fun_grantRole":{"entryPoint":9197,"id":773,"parameterSlots":2,"returnSlots":1},"fun_grantRole_18493":{"entryPoint":9045,"id":773,"parameterSlots":1,"returnSlots":1},"fun_nonReentrantBefore":{"entryPoint":5268,"id":2852,"parameterSlots":0,"returnSlots":0},"fun_notifyTarget":{"entryPoint":7583,"id":9779,"parameterSlots":1,"returnSlots":1},"fun_performNormalDistribution":{"entryPoint":10329,"id":9077,"parameterSlots":0,"returnSlots":1},"fun_remove":{"entryPoint":10774,"id":6894,"parameterSlots":2,"returnSlots":1},"fun_revokeRole":{"entryPoint":9355,"id":819,"parameterSlots":2,"returnSlots":1},"fun_setDefaultTarget":{"entryPoint":7790,"id":10090,"parameterSlots":2,"returnSlots":1},"fun_setIssuancePerBlock":{"entryPoint":5321,"id":9667,"parameterSlots":2,"returnSlots":1},"fun_setSelfMintingEventMode_inner":{"entryPoint":4574,"id":null,"parameterSlots":1,"returnSlots":1},"fun_setTargetAllocation":{"entryPoint":6231,"id":10153,"parameterSlots":3,"returnSlots":1},"fun_validateAllocationChange":{"entryPoint":9997,"id":10243,"parameterSlots":3,"returnSlots":1},"storage_array_index_access_address_dyn":{"entryPoint":4939,"id":null,"parameterSlots":2,"returnSlots":2},"storage_array_index_access_address_dyn_":{"entryPoint":4901,"id":null,"parameterSlots":1,"returnSlots":2},"update_byte_slice_dynamic32":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_address_to_address":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":0},"update_storage_value_address_to_address_18602":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"10718":[{"length":32,"start":8295},{"length":32,"start":8526},{"length":32,"start":8832},{"length":32,"start":10483}]},"linkReferences":{},"object":"6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611066575080631156bdc11461103757806313a7855d14610ffd57806315d3b5d814610f84578063248a9ca314610f665780632f2ff15d14610f355780633067cb4c14610e8d57806332bc934c14610e7057806336568abe14610e2c578063389ed26714610e055780633af5b07314610dda5780633f4ba83a14610d5c578063443990fa14610d1a5780634887693c14610ce757806348c3c62e14610c6157806349bdfcb014610c245780634a1293b714610bfe57806352c0e18c14610bb85780635c975abb14610b8a57806363fe3b5614610b21578063647b368214610adb578063697cf32214610aa657806379d5fc5414610a835780637c92330b14610a335780638456cb59146109b257806384c484221461095257806387ee921c146109295780639010d07c146108d857806391d148541461088357806393c911a814610855578063a217fddf1461083b578063a3246ad3146107bb578063c2cb354414610773578063c4d66de814610401578063c627b7a4146103d0578063ca15c8731461039a578063ccc5749014610373578063d012a15b14610322578063d48beb1b146102fd578063d547741f146102c7578063e038978e146102a3578063ee56977e146102335763f5b541a6146101f5575f80fd5b3461022f575f36600319011261022f5760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b5f80fd5b3461022f575f36600319011261022f5761024b6112bb565b5060606102566115c3565b6001810154906003600282015491015490604051926102748461127d565b8352602083015260408201526102a160405180926040809180518452602081015160208501520151910152565bf35b3461022f57606036600319011261022f576102c56044356024356004356121ee565b005b3461022f57604036600319011261022f576102c56004356102e661114f565b906102f86102f3826112fa565b61144e565b61164d565b3461022f57608036600319011261022f576102c5606435604435602435600435611fe4565b3461022f57604036600319011261022f576020610359610340611165565b6103486113a9565b610350611494565b60243590611e6e565b5f5f516020612bf35f395f51905f525d6040519015158152f35b3461022f575f36600319011261022f5760206040515f516020612b735f395f51905f528152f35b3461022f57602036600319011261022f576004355f525f516020612b135f395f51905f52602052602060405f2054604051908152f35b3461022f57604036600319011261022f576103e96113a9565b6103f1611494565b60206103596024356004356114c9565b3461022f57602036600319011261022f5761041a611165565b5f516020612c335f395f51905f52549060ff8260401c16159167ffffffffffffffff81168015908161076b575b6001149081610761575b159081610758575b506107495767ffffffffffffffff1981166001175f516020612c335f395f51905f52558261071d575b5061048b612ac7565b610493612ac7565b6001600160a01b03811690811561070e575f516020612b735f395f51905f525f8181525f516020612b935f395f51905f526020527f75e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8048054908390556105f993929182905f516020612af35f395f51905f529080a45f516020612bd35f395f51905f525f8181525f516020612b935f395f51905f526020527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff13480545f516020612b735f395f51905f5291829055909290915f516020612af35f395f51905f529080a47f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9295f8181525f516020612b935f395f51905f526020527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45780545f516020612b735f395f51905f5291829055909290915f516020612af35f395f51905f529080a4612355565b6106bc575b506106076115c3565b600581018054600160401b8110156106a8576106289160018201815561134b565b81549060018060a01b039060031b1b1916905560078101600260ff1982541617905560014391015561065657005b60ff60401b195f516020612c335f395f51905f5254165f516020612c335f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b634e487b7160e01b5f52604160045260245ffd5b5f516020612b735f395f51905f525f525f516020612b135f395f51905f52602052610707907f955af8caaf1bb5fca493cbb01cefeb9e610a81071c268cd8b40c82100cbb956e6129b3565b50816105fe565b63395d053560e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f516020612c335f395f51905f525582610482565b63f92ee8a960e01b5f5260045ffd5b90501584610459565b303b159150610451565b849150610447565b3461022f57608036600319011261022f576020610359610791611165565b6107996113a9565b6107a1611494565b6064359060443590602435906001600160a01b0316611b07565b3461022f57602036600319011261022f576004355f525f516020612b135f395f51905f5260205260405f206040519081602082549182815201915f5260205f20905f5b818110610825576108218561081581870382611299565b6040519182918261117b565b0390f35b82548452602090930192600192830192016107fe565b3461022f575f36600319011261022f5760206040515f8152f35b3461022f575f36600319011261022f57602060ff60076108736115c3565b0154166102a160405180926111bd565b3461022f57604036600319011261022f5761089c61114f565b6004355f525f516020612b935f395f51905f5260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461022f57604036600319011261022f576004355f525f516020612b135f395f51905f52602052602061091060243560405f2061134b565b905460405160039290921b1c6001600160a01b03168152f35b3461022f57602036600319011261022f576020610910600435600561094c6115c3565b0161134b565b3461022f57602036600319011261022f5761096b611165565b6109736112bb565b50600461097e6115c3565b019060018060a01b03165f52602052606060405f20600181549101546109a48183611318565b91604051926102748461127d565b3461022f575f36600319011261022f576109ca6113f2565b5f516020612bb35f395f51905f525460ff8116610a245760019060ff1916175f516020612bb35f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b63d93c066560e01b5f5260045ffd5b3461022f57604036600319011261022f576020610a4e611165565b60243590610a5a6113a9565b6004610a646115c3565b019060018060a01b03165f52825280600260405f200155604051908152f35b3461022f575f36600319011261022f576020610a9d6115c3565b54604051908152f35b3461022f57602036600319011261022f576020610359610ac4611165565b610acc6113a9565b610ad4611494565b4390611e6e565b3461022f57606036600319011261022f576020610359610af9611165565b610b016113a9565b610b09611494565b439060443590602435906001600160a01b0316611b07565b3461022f575f36600319011261022f576005610b3b6115c3565b016040519081602082549182815201915f5260205f20905f5b818110610b6b576108218561081581870382611299565b82546001600160a01b0316845260209093019260019283019201610b54565b3461022f575f36600319011261022f57602060ff5f516020612bb35f395f51905f5254166040519015158152f35b3461022f57602036600319011261022f57610bd16113a9565b610bd9611494565b6020610be66004356116a2565b5f5f516020612bf35f395f51905f525d604051908152f35b3461022f575f36600319011261022f5760206005610c1a6115c3565b0154604051908152f35b3461022f575f36600319011261022f576001610c3e6115c3565b01544303610c52576020435b604051908152f35b6020610c5c611e24565b610c4a565b3461022f57602036600319011261022f57610c7a611165565b610c826112bb565b506004610c8d6115c3565b019060018060a01b03165f52602052606060405f20600260405191610cb18361127d565b8054835260018101546020840152015460408201526102a160405180926040809180518452602081015160208501520151910152565b3461022f57602036600319011261022f576020610359610d05611165565b610d0d6113a9565b610d15611494565b611d9f565b3461022f57604036600319011261022f576020610359610d38611165565b610d406113a9565b610d48611494565b4390602435906001600160a01b0316611857565b3461022f575f36600319011261022f57610d746113f2565b5f516020612bb35f395f51905f525460ff811615610dcb5760ff19165f516020612bb35f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461022f575f36600319011261022f57610df26113a9565b610dfa611494565b6020610be6436116a2565b3461022f575f36600319011261022f5760206040515f516020612bd35f395f51905f528152f35b3461022f57604036600319011261022f57610e4561114f565b336001600160a01b03821603610e61576102c59060043561164d565b63334bd91960e11b5f5260045ffd5b3461022f575f36600319011261022f576020604051620f42408152f35b3461022f57602036600319011261022f576080610ea8611165565b5f6060604051610eb781611261565b8281528260208201528260408201520152610ed06115c3565b9060018060a01b03165f526004810160205260405f208054916002600180830154930154910154916060604051610f0681611261565b858152602081019283526040810193845201928352604051938452516020840152516040830152516060820152f35b3461022f57604036600319011261022f576102c5600435610f5461114f565b90610f616102f3826112fa565b611607565b3461022f57602036600319011261022f576020610c4a6004356112fa565b3461022f575f36600319011261022f576060610f9e6112bb565b610fd7610fa96115c3565b6006610fc582545f80526004840160205260405f2054906112d9565b918285520154908160408501526112d9565b60208201526102a160405180926040809180518452602081015160208501520151910152565b3461022f57602036600319011261022f57600435600381101561022f5761102d6020916110286113a9565b6111de565b6040519015158152f35b3461022f57602036600319011261022f576110506113a9565b611058611494565b6020610359436004356114c9565b3461022f57602036600319011261022f576004359063ffffffff60e01b821680920361022f57602091631e768dff60e21b811490811561113e575b811561112d575b811561111c575b81156110bd575b5015158152f35b631cf1473b60e31b8114915081156110d7575b50836110b6565b635a05180f60e01b8114915081156110f1575b50836110d0565b637965db0b60e01b81149150811561110b575b50836110ea565b6301ffc9a760e01b14905083611104565b632461e31760e11b811491506110af565b63a896602d60e01b811491506110a8565b6350d8541d60e01b811491506110a1565b602435906001600160a01b038216820361022f57565b600435906001600160a01b038216820361022f57565b60206040818301928281528451809452019201905f5b81811061119e5750505090565b82516001600160a01b0316845260209384019390920191600101611191565b9060038210156111ca5752565b634e487b7160e01b5f52602160045260245ffd5b60076111e86115c3565b019060ff82541660038110156111ca5760038210156111ca57808214611259576112536040927f3f59746e46bfb9af931035055d53b82d1b70968466065162b7dbf8e998aee6299460ff1981541660ff8316179055611249845180946111bd565b60208301906111bd565ba1600190565b505050600190565b6080810190811067ffffffffffffffff8211176106a857604052565b6060810190811067ffffffffffffffff8211176106a857604052565b90601f8019910116810190811067ffffffffffffffff8211176106a857604052565b604051906112c88261127d565b5f6040838281528260208201520152565b919082039182116112e657565b634e487b7160e01b5f52601160045260245ffd5b5f525f516020612b935f395f51905f52602052600160405f20015490565b919082018092116112e657565b805415611337575f5260205f20905f90565b634e487b7160e01b5f52603260045260245ffd5b8054821015611337575f5260205f2001905f90565b80549190600160401b8310156106a857826113839160016113a79501815561134b565b9080546001600160a01b0360039390931b83811b199091169290931690921b179055565b565b335f9081525f516020612b335f395f51905f52602052604090205460ff16156113ce57565b63e2517d3f60e01b5f52336004525f516020612b735f395f51905f5260245260445ffd5b335f9081527f85aa68ae9688c2bba3dc27a57a38bf2786c03751927fe89ecfd8b396d55ff133602052604090205460ff161561142a57565b63e2517d3f60e01b5f52336004525f516020612bd35f395f51905f5260245260445ffd5b5f8181525f516020612b935f395f51905f526020908152604080832033845290915290205460ff161561147e5750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f516020612bf35f395f51905f525c6114ba5760015f516020612bf35f395f51905f525d565b633ee5aeb560e01b5f5260045ffd5b6114d16115c3565b8054928383146115ba576114e3611e24565b106115b357611518600582016115126114fb82611325565b905460039190911b1c6001600160a01b0316611d9f565b50611325565b905460039190911b1c6001600160a01b03165f908152600482016020526040902080546115458185611318565b85116115995792849281926115867f2925be3e6d4b2cbcec6c06d5060fb3b53f160410555e45ee0a1f6dc7ae9b24c09761158185604099611318565b6112d9565b90555582519182526020820152a1600190565b8385632c421f2b60e21b5f5260045260245260445260645ffd5b5050505f90565b50505050600190565b604051602081017f109cdeb08b6fcb52a0f8a35af1bf023afdacdc6e602b08424b2171d0f4fa3cd48152602082526115fc604083611299565b9051902060ff191690565b61161182826123ed565b918261161c57505090565b5f9182525f516020612b135f395f51905f526020526040909120611649916001600160a01b0316906129b3565b5090565b611657828261248b565b918261166257505090565b5f9182525f516020612b135f395f51905f526020526040909120611649916001600160a01b031690612a16565b818102929181159184041417156112e657565b6116aa612527565b6116b26115c3565b600181018054838111158061184d575b15611833576116d190846112d9565b91821561182d57838154926116e6858561168f565b92826003820154958587105f146118265761170187876112d9565b925b836117a8575b50505050556117166115c3565b9043850361178a575f935b848403611734575b505060039150015590565b61173e90866112d9565b600181018091116112e6577f1a45018bdab6039c806fac73d617b3bc5c6a2a0f22f6f90d2ca202b083087f99606060039588946040519182528860208301526040820152a35f80611729565b828110156117a25761179c81846112d9565b93611721565b5f61179c565b6117e86117f0926117bb60058401611325565b905460039190911b1c6001600160a01b03165f9081526004840160205260409020600690930154906112d9565b9054906112d9565b6117fa888261168f565b80841015611815575061180c926121ee565b5f828180611709565b90506118219288611fe4565b61180c565b5f92611703565b50505090565b8363a0d2b9db60e01b5f526004526024524360445260645ffd5b50438411156116c2565b90916118645f848461270d565b1561125957611871611e24565b10611b015761187f81611d9f565b506118966114fb60056118906115c3565b01611325565b5061189f6115c3565b600481019060018060a01b0383165f528160205260405f20916118c460058301611325565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611903916001916118f891611318565b940193845490611318565b808611611aeb579160069161191b87611929956112d9565b9055019182549054906112d9565b90556119336115c3565b6001600160a01b0382165f9081526004820160205260409020908315801590611ae4575b156119c257915f6001835f516020612c135f395f51905f5295846040965415806119b7575b6119a4575b505086815501555b81519384525f60208501526001600160a01b031692a2600190565b60056119b09201611360565b5f84611981565b50838301541561197c565b5050906119cd6115c3565b916001600160a01b03811690600584019060015b825480821015611ac657846119f6838661134b565b905460039190911b1c6001600160a01b031614611a1657506001016119e1565b905f9692939495961982019182116112e657611383611a38611a51938761134b565b905460039190911b1c6001600160a01b0316918661134b565b8254908115611ab2575f516020612c135f395f51905f52946040946004935f190190611a95611a80838361134b565b81549060018060a01b039060031b1b19169055565b555f52016020525f60028382208281558260018201550155611989565b634e487b7160e01b5f52603160045260245ffd5b505090505f516020612c135f395f51905f5292935060409150611989565b505f611957565b8563162930e360e11b5f5260045260245260445ffd5b50505f90565b92919091611b1682848661270d565b156115ba57611b23611e24565b106115b357611b3183611d9f565b50611b426114fb60056118906115c3565b50611b4b6115c3565b600481019060018060a01b0385165f528160205260405f2091611b7060058301611325565b905460039190911b1c6001600160a01b03165f9081526020919091526040902080548354611ba4916001916118f891611318565b80611baf8688611318565b11611bba8688611318565b90611d8a57506006611bec938693611bd9856115818b611be7976112d9565b9055019384549054906112d9565b611318565b9055611bf66115c3565b6001600160a01b0384165f9081526004820160205260409020908315801590611d81575b15611c86579180600183604095885f516020612c135f395f51905f52989996541580611c7b575b611c68575b505087815501555b825194855260208501526001600160a01b031692a2600190565b6005611c749201611360565b5f85611c46565b508383015415611c41565b505091611c916115c3565b926001600160a01b03821691600585019160015b835480821015611d625785611cba838761134b565b905460039190911b1c6001600160a01b031614611cda5750600101611ca5565b905f979293949596971982019182116112e657611383611cfd611d16938861134b565b905460039190911b1c6001600160a01b0316918761134b565b8354908115611ab2575f516020612c135f395f51905f52956040956004935f190190611d45611a80838361134b565b555f52016020525f60028482208281558260018201550155611c4e565b50509091505f516020612c135f395f51905f5293945060409250611c4e565b50821515611c1a565b63162930e360e11b5f5260045260245260445ffd5b6001600160a01b03168015611dfc576004611db86115c3565b01815f52602052600260405f20018054431115611e1d57439055803b1561022f575f8091600460405180948193631efc6b4160e11b83525af18015611e1257611e02575b50600190565b5f611e0c91611299565b5f611dfc565b6040513d5f823e3d90fd5b5050600190565b611e2c6115c3565b611e34612527565b60ff5f516020612bb35f395f51905f525416611e67576003015415611e5f57611e5c436116a2565b90565b611e5c612859565b6001015490565b611e766115c3565b906005820190611e8582611325565b90546001600160a01b038381169660039390931b9190911c169390858514611fd957835460015b818110611f9c575050611ebd611e24565b10611f93576004611ef691611ed186611d9f565b50611edb84611d9f565b500191855f5282602052611383600260405f20015494611325565b6001600160a01b0383165f90815260208290526040808220868352912090808203611f75575b505060018060a01b0383165f52806020525f6002604082208281558260018201550155835f52602052600260405f2001557ef06471e88e0bc1db6b6126efdb09f80b597e6ddc145ff0dcabd12afab4ec575f80a3600190565b60028181925484556001810154600185015501549101555f80611f1c565b50505050505f90565b87611fa7828861134b565b905460039190911b1c6001600160a01b031614611fc657600101611eac565b8763f158185d60e01b5f5260045260245ffd5b505050505050600190565b939093929192611ff26115c3565b600181015492600184018094116112e657600196956004600584019301975b835481101561210b57612024818561134b565b905460039190911b1c6001600160a01b03165f81815260208b9052604090205490919086908061205b575b50506001915001612011565b906120659161168f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290833b1561022f576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af1918215611e12575f516020612b535f395f51905f5260208b936001978e966120fb575b50604051908152a4855f61204f565b5f61210591611299565b5f6120ec565b509193949590965061211d92506112d9565b908161212a575b50505050565b61213390611325565b905460039190911b1c6001600160a01b0316908115612124577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561022f576040516340c10f1960e01b81526001600160a01b038416600482015260248101829052915f908390604490829084905af1908115611e12575f516020612b535f395f51905f52926020926121de575b50604051908152a45f808080612124565b5f6121e891611299565b5f6121cd565b9190916121f96115c3565b92801580801561234d575b61234657600185015492600184018094116112e65760048601969560050160015b815481101561233b57612238818361134b565b905460039190911b1c6001600160a01b03165f81815260208b9052604090205490919085908061226f575b50506001915001612225565b612279908661168f565b90612327577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290879004833b1561022f576040516340c10f1960e01b81526001600160a01b038316600482015260248101829052935f908590604490829084905af1918215611e12575f516020612b535f395f51905f5260208b936001978e96612317575b50604051908152a4845f612263565b5f61232191611299565b5f612308565b634e487b7160e01b5f52601260045260245ffd5b505050505050509050565b5050505050565b508215612204565b6001600160a01b0381165f9081525f516020612b335f395f51905f52602052604090205460ff166123e8576001600160a01b03165f8181525f516020612b335f395f51905f5260205260408120805460ff191660011790553391905f516020612b735f395f51905f52907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b505f90565b5f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16611b01575f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff1615611b01575f8181525f516020612b935f395f51905f52602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b61252f6115c3565b600281019081544381146127085761254781436112d9565b92600182018092116112e6576003830180549060ff5f516020612bb35f395f51905f52541680156126ff575b6126a4575b505043905560068201548061258d5750505050565b60ff60078401541660038110156111ca576002810361265057505060058201805493600490930192905f5b8581106125cf575050505050505b5f808080612124565b806125dc6001928461134b565b838060a01b0391549060031b1c16828060a01b0381165f5286602052858360405f2001548681612611575b50505050016125b8565b61261a9161168f565b916040519283527fa34db09d4126dd8dcd1d29f3df65c01dcac405127546e380add77fedca459ba760204394a45f858186612607565b919390925090600114612666575b5050506125c6565b61266f9161168f565b906040519182527fcef44ce1a1fc7ca1f3078daf79d3b60646d0e751bc72a69bff12f66c4aef3b8d60204393a35f808061265e565b6126bb6126b587600688015461168f565b83611318565b80915580820315612578576040519182526020820152827f0539ce444a515b8aa8769802297761fbec80b5b543c617714bf5e0611cf669db60404393a35f80612578565b50811515612573565b505050565b6001600160a01b03169190821561284a576127266115c3565b6005810161275061273682611325565b905460039190911b1c6001600160a01b0316861491611325565b905460039190911b1c6001600160a01b0316906128385750600490845f520160205260405f208282825414918261282a575b50506115b3571590811591612820575b5061279d5750600190565b6040516301ffc9a760e01b815263aee4dc4360e01b6004820152602081602481855afa908115611e12575f916127e5575b50611dfc5763a5fe861560e01b5f5260045260245ffd5b90506020813d602011612818575b8161280060209383611299565b8101031261022f5751801515810361022f575f6127ce565b3d91506127f3565b905015155f612792565b60010154149050825f612782565b63fda6c18760e01b5f5260045260245ffd5b6322a4ec7b60e11b5f5260045ffd5b6128616115c3565b90600182019182549061287482436112d9565b9081156129ac57600183018093116112e6575f94936004600583019201955b825481101561299f576128a6818461134b565b905460039190911b1c6001600160a01b03169081156129965760018060a01b0382165f52876020528460405f2054806128e7575b5050600191505b01612893565b906128f19161168f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692833b1561022f576040516340c10f1960e01b81526001600160a01b038216600482015260248101839052935f908590604490829084905af1908115611e12576001948992612986575b506040519283525f516020612b535f395f51905f5260204394a4845f6128da565b5f61299091611299565b5f612965565b600191506128e1565b5094505050504390554390565b5090925050565b6001810190825f528160205260405f2054155f146115b3578054600160401b8110156106a857612a036129ed82600187940185558461134b565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b906001820191815f528260205260405f20548015155f14612abf575f1981018181116112e65782545f198101919082116112e657818103612a8a575b50505080548015611ab2575f190190612a6b828261134b565b8154905f199060031b1b19169055555f526020525f6040812055600190565b612aaa612a9a6129ed938661134b565b90549060031b1c9283928661134b565b90555f528360205260405f20555f8080612a52565b505050505f90565b60ff5f516020612c335f395f51905f525460401c1615612ae357565b631afcd79f60e31b5f5260045ffdfebd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200075e09417c5070057df3eafe5054d52fa0b2a87d64a235e197963b615aedee8030c56d855d8df534c916b78eac3522e5fafd59f48799c4a97d42e80f6e08989607935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f001bd3f0d2f1001a856d81215ceb86c548bdbc3bf52480a08978f8c3ea6e2bd421f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a0ae2eb9597922e6b519237f96c918712d1bba6e715b72ffcb6b316f8ca4c76164736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x1066 JUMPI POP DUP1 PUSH4 0x1156BDC1 EQ PUSH2 0x1037 JUMPI DUP1 PUSH4 0x13A7855D EQ PUSH2 0xFFD JUMPI DUP1 PUSH4 0x15D3B5D8 EQ PUSH2 0xF84 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0xF66 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0xF35 JUMPI DUP1 PUSH4 0x3067CB4C EQ PUSH2 0xE8D JUMPI DUP1 PUSH4 0x32BC934C EQ PUSH2 0xE70 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0xE2C JUMPI DUP1 PUSH4 0x389ED267 EQ PUSH2 0xE05 JUMPI DUP1 PUSH4 0x3AF5B073 EQ PUSH2 0xDDA JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0xD5C JUMPI DUP1 PUSH4 0x443990FA EQ PUSH2 0xD1A JUMPI DUP1 PUSH4 0x4887693C EQ PUSH2 0xCE7 JUMPI DUP1 PUSH4 0x48C3C62E EQ PUSH2 0xC61 JUMPI DUP1 PUSH4 0x49BDFCB0 EQ PUSH2 0xC24 JUMPI DUP1 PUSH4 0x4A1293B7 EQ PUSH2 0xBFE JUMPI DUP1 PUSH4 0x52C0E18C EQ PUSH2 0xBB8 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0xB8A JUMPI DUP1 PUSH4 0x63FE3B56 EQ PUSH2 0xB21 JUMPI DUP1 PUSH4 0x647B3682 EQ PUSH2 0xADB JUMPI DUP1 PUSH4 0x697CF322 EQ PUSH2 0xAA6 JUMPI DUP1 PUSH4 0x79D5FC54 EQ PUSH2 0xA83 JUMPI DUP1 PUSH4 0x7C92330B EQ PUSH2 0xA33 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x9B2 JUMPI DUP1 PUSH4 0x84C48422 EQ PUSH2 0x952 JUMPI DUP1 PUSH4 0x87EE921C EQ PUSH2 0x929 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x8D8 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x883 JUMPI DUP1 PUSH4 0x93C911A8 EQ PUSH2 0x855 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x83B JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH2 0x7BB JUMPI DUP1 PUSH4 0xC2CB3544 EQ PUSH2 0x773 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x401 JUMPI DUP1 PUSH4 0xC627B7A4 EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0xCCC57490 EQ PUSH2 0x373 JUMPI DUP1 PUSH4 0xD012A15B EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0xD48BEB1B EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xE038978E EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0xEE56977E EQ PUSH2 0x233 JUMPI PUSH4 0xF5B541A6 EQ PUSH2 0x1F5 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x97667070C54EF182B0F5858B034BEAC1B6F3089AA2D3188BB1E8929F4FA9B929 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x24B PUSH2 0x12BB JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x256 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD SWAP1 PUSH1 0x3 PUSH1 0x2 DUP3 ADD SLOAD SWAP2 ADD SLOAD SWAP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x274 DUP5 PUSH2 0x127D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2A1 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x2C5 PUSH1 0x44 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x21EE JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x2C5 PUSH1 0x4 CALLDATALOAD PUSH2 0x2E6 PUSH2 0x114F JUMP JUMPDEST SWAP1 PUSH2 0x2F8 PUSH2 0x2F3 DUP3 PUSH2 0x12FA JUMP JUMPDEST PUSH2 0x144E JUMP JUMPDEST PUSH2 0x164D JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x80 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x2C5 PUSH1 0x64 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x1FE4 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0x340 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x348 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1E6E JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x3E9 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0x3F1 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x359 PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x14C9 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x41A PUSH2 0x1165 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD SWAP1 PUSH1 0xFF DUP3 PUSH1 0x40 SHR AND ISZERO SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 ISZERO SWAP1 DUP2 PUSH2 0x76B JUMPI JUMPDEST PUSH1 0x1 EQ SWAP1 DUP2 PUSH2 0x761 JUMPI JUMPDEST ISZERO SWAP1 DUP2 PUSH2 0x758 JUMPI JUMPDEST POP PUSH2 0x749 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF NOT DUP2 AND PUSH1 0x1 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x71D JUMPI JUMPDEST POP PUSH2 0x48B PUSH2 0x2AC7 JUMP JUMPDEST PUSH2 0x493 PUSH2 0x2AC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x70E JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x75E09417C5070057DF3EAFE5054D52FA0B2A87D64A235E197963B615AEDEE804 DUP1 SLOAD SWAP1 DUP4 SWAP1 SSTORE PUSH2 0x5F9 SWAP4 SWAP3 SWAP2 DUP3 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BD3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF134 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH32 0x97667070C54EF182B0F5858B034BEAC1B6F3089AA2D3188BB1E8929F4FA9B929 PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH32 0x448256DB8F8FB95EE3EAAF89C1051414494E85CEBB6057FCF996CC3D0CCFB457 DUP1 SLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 DUP3 SWAP1 SSTORE SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2AF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 DUP1 LOG4 PUSH2 0x2355 JUMP JUMPDEST PUSH2 0x6BC JUMPI JUMPDEST POP PUSH2 0x607 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0x6A8 JUMPI PUSH2 0x628 SWAP2 PUSH1 0x1 DUP3 ADD DUP2 SSTORE PUSH2 0x134B JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE PUSH1 0x7 DUP2 ADD PUSH1 0x2 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x1 NUMBER SWAP2 ADD SSTORE PUSH2 0x656 JUMPI STOP JUMPDEST PUSH1 0xFF PUSH1 0x40 SHL NOT PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x707 SWAP1 PUSH32 0x955AF8CAAF1BB5FCA493CBB01CEFEB9E610A81071C268CD8B40C82100CBB956E PUSH2 0x29B3 JUMP JUMPDEST POP DUP2 PUSH2 0x5FE JUMP JUMPDEST PUSH4 0x395D0535 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFFFF NOT AND PUSH9 0x10000000000000001 OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE DUP3 PUSH2 0x482 JUMP JUMPDEST PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP ISZERO DUP5 PUSH2 0x459 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP2 POP PUSH2 0x451 JUMP JUMPDEST DUP5 SWAP2 POP PUSH2 0x447 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x80 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0x791 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x799 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0x7A1 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B07 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x825 JUMPI PUSH2 0x821 DUP6 PUSH2 0x815 DUP2 DUP8 SUB DUP3 PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x117B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP3 SLOAD DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x7FE JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x7 PUSH2 0x873 PUSH2 0x15C3 JUMP JUMPDEST ADD SLOAD AND PUSH2 0x2A1 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH2 0x11BD JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x89C PUSH2 0x114F JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x910 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x3 SWAP3 SWAP1 SWAP3 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x910 PUSH1 0x4 CALLDATALOAD PUSH1 0x5 PUSH2 0x94C PUSH2 0x15C3 JUMP JUMPDEST ADD PUSH2 0x134B JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x96B PUSH2 0x1165 JUMP JUMPDEST PUSH2 0x973 PUSH2 0x12BB JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0x97E PUSH2 0x15C3 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x60 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 DUP2 SLOAD SWAP2 ADD SLOAD PUSH2 0x9A4 DUP2 DUP4 PUSH2 0x1318 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x274 DUP5 PUSH2 0x127D JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x9CA PUSH2 0x13F2 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND PUSH2 0xA24 JUMPI PUSH1 0x1 SWAP1 PUSH1 0xFF NOT AND OR PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0xD93C0665 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0xA4E PUSH2 0x1165 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xA5A PUSH2 0x13A9 JUMP JUMPDEST PUSH1 0x4 PUSH2 0xA64 PUSH2 0x15C3 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE DUP3 MSTORE DUP1 PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0xA9D PUSH2 0x15C3 JUMP JUMPDEST SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0xAC4 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0xACC PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xAD4 PUSH2 0x1494 JUMP JUMPDEST NUMBER SWAP1 PUSH2 0x1E6E JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0xAF9 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0xB01 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xB09 PUSH2 0x1494 JUMP JUMPDEST NUMBER SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B07 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x5 PUSH2 0xB3B PUSH2 0x15C3 JUMP JUMPDEST ADD PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xB6B JUMPI PUSH2 0x821 DUP6 PUSH2 0x815 DUP2 DUP8 SUB DUP3 PUSH2 0x1299 JUMP JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x1 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0xB54 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0xBD1 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xBD9 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xBE6 PUSH1 0x4 CALLDATALOAD PUSH2 0x16A2 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x5 PUSH2 0xC1A PUSH2 0x15C3 JUMP JUMPDEST ADD SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x1 PUSH2 0xC3E PUSH2 0x15C3 JUMP JUMPDEST ADD SLOAD NUMBER SUB PUSH2 0xC52 JUMPI PUSH1 0x20 NUMBER JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 PUSH2 0xC5C PUSH2 0x1E24 JUMP JUMPDEST PUSH2 0xC4A JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0xC7A PUSH2 0x1165 JUMP JUMPDEST PUSH2 0xC82 PUSH2 0x12BB JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0xC8D PUSH2 0x15C3 JUMP JUMPDEST ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x60 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP2 PUSH2 0xCB1 DUP4 PUSH2 0x127D JUMP JUMPDEST DUP1 SLOAD DUP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP5 ADD MSTORE ADD SLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2A1 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0xD05 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0xD0D PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xD15 PUSH2 0x1494 JUMP JUMPDEST PUSH2 0x1D9F JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0x359 PUSH2 0xD38 PUSH2 0x1165 JUMP JUMPDEST PUSH2 0xD40 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xD48 PUSH2 0x1494 JUMP JUMPDEST NUMBER SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1857 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0xD74 PUSH2 0x13F2 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0xFF DUP2 AND ISZERO PUSH2 0xDCB JUMPI PUSH1 0xFF NOT AND PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH1 0x20 PUSH1 0x40 MLOAD CALLER DUP2 MSTORE LOG1 STOP JUMPDEST PUSH4 0x8DFC202B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0xDF2 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0xDFA PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xBE6 NUMBER PUSH2 0x16A2 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BD3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0xE45 PUSH2 0x114F JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SUB PUSH2 0xE61 JUMPI PUSH2 0x2C5 SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0x164D JUMP JUMPDEST PUSH4 0x334BD919 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x80 PUSH2 0xEA8 PUSH2 0x1165 JUMP JUMPDEST PUSH0 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH2 0xEB7 DUP2 PUSH2 0x1261 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE PUSH2 0xED0 PUSH2 0x15C3 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP2 PUSH1 0x2 PUSH1 0x1 DUP1 DUP4 ADD SLOAD SWAP4 ADD SLOAD SWAP2 ADD SLOAD SWAP2 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH2 0xF06 DUP2 PUSH2 0x1261 JUMP JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 DUP4 MSTORE PUSH1 0x40 DUP2 ADD SWAP4 DUP5 MSTORE ADD SWAP3 DUP4 MSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 MSTORE MLOAD PUSH1 0x20 DUP5 ADD MSTORE MLOAD PUSH1 0x40 DUP4 ADD MSTORE MLOAD PUSH1 0x60 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x2C5 PUSH1 0x4 CALLDATALOAD PUSH2 0xF54 PUSH2 0x114F JUMP JUMPDEST SWAP1 PUSH2 0xF61 PUSH2 0x2F3 DUP3 PUSH2 0x12FA JUMP JUMPDEST PUSH2 0x1607 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x20 PUSH2 0xC4A PUSH1 0x4 CALLDATALOAD PUSH2 0x12FA JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x60 PUSH2 0xF9E PUSH2 0x12BB JUMP JUMPDEST PUSH2 0xFD7 PUSH2 0xFA9 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x6 PUSH2 0xFC5 DUP3 SLOAD PUSH0 DUP1 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x12D9 JUMP JUMPDEST SWAP2 DUP3 DUP6 MSTORE ADD SLOAD SWAP1 DUP2 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2A1 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x40 DUP1 SWAP2 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH2 0x102D PUSH1 0x20 SWAP2 PUSH2 0x1028 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH2 0x1050 PUSH2 0x13A9 JUMP JUMPDEST PUSH2 0x1058 PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x359 NUMBER PUSH1 0x4 CALLDATALOAD PUSH2 0x14C9 JUMP JUMPDEST CALLVALUE PUSH2 0x22F JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x22F JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0x22F JUMPI PUSH1 0x20 SWAP2 PUSH4 0x1E768DFF PUSH1 0xE2 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x113E JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x112D JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x111C JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x10BD JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1CF1473B PUSH1 0xE3 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x10D7 JUMPI JUMPDEST POP DUP4 PUSH2 0x10B6 JUMP JUMPDEST PUSH4 0x5A05180F PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x10F1 JUMPI JUMPDEST POP DUP4 PUSH2 0x10D0 JUMP JUMPDEST PUSH4 0x7965DB0B PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP DUP2 ISZERO PUSH2 0x110B JUMPI JUMPDEST POP DUP4 PUSH2 0x10EA JUMP JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0x1104 JUMP JUMPDEST PUSH4 0x2461E317 PUSH1 0xE1 SHL DUP2 EQ SWAP2 POP PUSH2 0x10AF JUMP JUMPDEST PUSH4 0xA896602D PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x10A8 JUMP JUMPDEST PUSH4 0x50D8541D PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x10A1 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x22F JUMPI JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x22F JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x119E JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1191 JUMP JUMPDEST SWAP1 PUSH1 0x3 DUP3 LT ISZERO PUSH2 0x11CA JUMPI MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x7 PUSH2 0x11E8 PUSH2 0x15C3 JUMP JUMPDEST ADD SWAP1 PUSH1 0xFF DUP3 SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x11CA JUMPI PUSH1 0x3 DUP3 LT ISZERO PUSH2 0x11CA JUMPI DUP1 DUP3 EQ PUSH2 0x1259 JUMPI PUSH2 0x1253 PUSH1 0x40 SWAP3 PUSH32 0x3F59746E46BFB9AF931035055D53B82D1B70968466065162B7DBF8E998AEE629 SWAP5 PUSH1 0xFF NOT DUP2 SLOAD AND PUSH1 0xFF DUP4 AND OR SWAP1 SSTORE PUSH2 0x1249 DUP5 MLOAD DUP1 SWAP5 PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x11BD JUMP JUMPDEST LOG1 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6A8 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6A8 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6A8 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x12C8 DUP3 PUSH2 0x127D JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x12E6 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x12E6 JUMPI JUMP JUMPDEST DUP1 SLOAD ISZERO PUSH2 0x1337 JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 SLOAD DUP3 LT ISZERO PUSH2 0x1337 JUMPI PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x40 SHL DUP4 LT ISZERO PUSH2 0x6A8 JUMPI DUP3 PUSH2 0x1383 SWAP2 PUSH1 0x1 PUSH2 0x13A7 SWAP6 ADD DUP2 SSTORE PUSH2 0x134B JUMP JUMPDEST SWAP1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x3 SWAP4 SWAP1 SWAP4 SHL DUP4 DUP2 SHL NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP1 SWAP3 SHL OR SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x13CE JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x85AA68AE9688C2BBA3DC27A57A38BF2786C03751927FE89ECFD8B396D55FF133 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x142A JUMPI JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BD3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x147E JUMPI POP JUMP JUMPDEST PUSH4 0xE2517D3F PUSH1 0xE0 SHL PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TLOAD PUSH2 0x14BA JUMPI PUSH1 0x1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BF3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE TSTORE JUMP JUMPDEST PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x14D1 PUSH2 0x15C3 JUMP JUMPDEST DUP1 SLOAD SWAP3 DUP4 DUP4 EQ PUSH2 0x15BA JUMPI PUSH2 0x14E3 PUSH2 0x1E24 JUMP JUMPDEST LT PUSH2 0x15B3 JUMPI PUSH2 0x1518 PUSH1 0x5 DUP3 ADD PUSH2 0x1512 PUSH2 0x14FB DUP3 PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D9F JUMP JUMPDEST POP PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1545 DUP2 DUP6 PUSH2 0x1318 JUMP JUMPDEST DUP6 GT PUSH2 0x1599 JUMPI SWAP3 DUP5 SWAP3 DUP2 SWAP3 PUSH2 0x1586 PUSH32 0x2925BE3E6D4B2CBCEC6C06D5060FB3B53F160410555E45EE0A1F6DC7AE9B24C0 SWAP8 PUSH2 0x1581 DUP6 PUSH1 0x40 SWAP10 PUSH2 0x1318 JUMP JUMPDEST PUSH2 0x12D9 JUMP JUMPDEST SWAP1 SSTORE SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 PUSH1 0x1 SWAP1 JUMP JUMPDEST DUP4 DUP6 PUSH4 0x2C421F2B PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH32 0x109CDEB08B6FCB52A0F8A35AF1BF023AFDACDC6E602B08424B2171D0F4FA3CD4 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x15FC PUSH1 0x40 DUP4 PUSH2 0x1299 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH2 0x1611 DUP3 DUP3 PUSH2 0x23ED JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x161C JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x1649 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x29B3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x1657 DUP3 DUP3 PUSH2 0x248B JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x1662 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH2 0x1649 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2A16 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x12E6 JUMPI JUMP JUMPDEST PUSH2 0x16AA PUSH2 0x2527 JUMP JUMPDEST PUSH2 0x16B2 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD DUP4 DUP2 GT ISZERO DUP1 PUSH2 0x184D JUMPI JUMPDEST ISZERO PUSH2 0x1833 JUMPI PUSH2 0x16D1 SWAP1 DUP5 PUSH2 0x12D9 JUMP JUMPDEST SWAP2 DUP3 ISZERO PUSH2 0x182D JUMPI DUP4 DUP2 SLOAD SWAP3 PUSH2 0x16E6 DUP6 DUP6 PUSH2 0x168F JUMP JUMPDEST SWAP3 DUP3 PUSH1 0x3 DUP3 ADD SLOAD SWAP6 DUP6 DUP8 LT PUSH0 EQ PUSH2 0x1826 JUMPI PUSH2 0x1701 DUP8 DUP8 PUSH2 0x12D9 JUMP JUMPDEST SWAP3 JUMPDEST DUP4 PUSH2 0x17A8 JUMPI JUMPDEST POP POP POP POP SSTORE PUSH2 0x1716 PUSH2 0x15C3 JUMP JUMPDEST SWAP1 NUMBER DUP6 SUB PUSH2 0x178A JUMPI PUSH0 SWAP4 JUMPDEST DUP5 DUP5 SUB PUSH2 0x1734 JUMPI JUMPDEST POP POP PUSH1 0x3 SWAP2 POP ADD SSTORE SWAP1 JUMP JUMPDEST PUSH2 0x173E SWAP1 DUP7 PUSH2 0x12D9 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x12E6 JUMPI PUSH32 0x1A45018BDAB6039C806FAC73D617B3BC5C6A2A0F22F6F90D2CA202B083087F99 PUSH1 0x60 PUSH1 0x3 SWAP6 DUP9 SWAP5 PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE DUP9 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE LOG3 PUSH0 DUP1 PUSH2 0x1729 JUMP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x17A2 JUMPI PUSH2 0x179C DUP2 DUP5 PUSH2 0x12D9 JUMP JUMPDEST SWAP4 PUSH2 0x1721 JUMP JUMPDEST PUSH0 PUSH2 0x179C JUMP JUMPDEST PUSH2 0x17E8 PUSH2 0x17F0 SWAP3 PUSH2 0x17BB PUSH1 0x5 DUP5 ADD PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x6 SWAP1 SWAP4 ADD SLOAD SWAP1 PUSH2 0x12D9 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x17FA DUP9 DUP3 PUSH2 0x168F JUMP JUMPDEST DUP1 DUP5 LT ISZERO PUSH2 0x1815 JUMPI POP PUSH2 0x180C SWAP3 PUSH2 0x21EE JUMP JUMPDEST PUSH0 DUP3 DUP2 DUP1 PUSH2 0x1709 JUMP JUMPDEST SWAP1 POP PUSH2 0x1821 SWAP3 DUP9 PUSH2 0x1FE4 JUMP JUMPDEST PUSH2 0x180C JUMP JUMPDEST PUSH0 SWAP3 PUSH2 0x1703 JUMP JUMPDEST POP POP POP SWAP1 JUMP JUMPDEST DUP4 PUSH4 0xA0D2B9DB PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE NUMBER PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST POP NUMBER DUP5 GT ISZERO PUSH2 0x16C2 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x1864 PUSH0 DUP5 DUP5 PUSH2 0x270D JUMP JUMPDEST ISZERO PUSH2 0x1259 JUMPI PUSH2 0x1871 PUSH2 0x1E24 JUMP JUMPDEST LT PUSH2 0x1B01 JUMPI PUSH2 0x187F DUP2 PUSH2 0x1D9F JUMP JUMPDEST POP PUSH2 0x1896 PUSH2 0x14FB PUSH1 0x5 PUSH2 0x1890 PUSH2 0x15C3 JUMP JUMPDEST ADD PUSH2 0x1325 JUMP JUMPDEST POP PUSH2 0x189F PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH2 0x18C4 PUSH1 0x5 DUP4 ADD PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SLOAD PUSH2 0x1903 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x18F8 SWAP2 PUSH2 0x1318 JUMP JUMPDEST SWAP5 ADD SWAP4 DUP5 SLOAD SWAP1 PUSH2 0x1318 JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x1AEB JUMPI SWAP2 PUSH1 0x6 SWAP2 PUSH2 0x191B DUP8 PUSH2 0x1929 SWAP6 PUSH2 0x12D9 JUMP JUMPDEST SWAP1 SSTORE ADD SWAP2 DUP3 SLOAD SWAP1 SLOAD SWAP1 PUSH2 0x12D9 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x1933 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1AE4 JUMPI JUMPDEST ISZERO PUSH2 0x19C2 JUMPI SWAP2 PUSH0 PUSH1 0x1 DUP4 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP6 DUP5 PUSH1 0x40 SWAP7 SLOAD ISZERO DUP1 PUSH2 0x19B7 JUMPI JUMPDEST PUSH2 0x19A4 JUMPI JUMPDEST POP POP DUP7 DUP2 SSTORE ADD SSTORE JUMPDEST DUP2 MLOAD SWAP4 DUP5 MSTORE PUSH0 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 LOG2 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x19B0 SWAP3 ADD PUSH2 0x1360 JUMP JUMPDEST PUSH0 DUP5 PUSH2 0x1981 JUMP JUMPDEST POP DUP4 DUP4 ADD SLOAD ISZERO PUSH2 0x197C JUMP JUMPDEST POP POP SWAP1 PUSH2 0x19CD PUSH2 0x15C3 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x5 DUP5 ADD SWAP1 PUSH1 0x1 JUMPDEST DUP3 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0x1AC6 JUMPI DUP5 PUSH2 0x19F6 DUP4 DUP7 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1A16 JUMPI POP PUSH1 0x1 ADD PUSH2 0x19E1 JUMP JUMPDEST SWAP1 PUSH0 SWAP7 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x12E6 JUMPI PUSH2 0x1383 PUSH2 0x1A38 PUSH2 0x1A51 SWAP4 DUP8 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP7 PUSH2 0x134B JUMP JUMPDEST DUP3 SLOAD SWAP1 DUP2 ISZERO PUSH2 0x1AB2 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP5 PUSH1 0x40 SWAP5 PUSH1 0x4 SWAP4 PUSH0 NOT ADD SWAP1 PUSH2 0x1A95 PUSH2 0x1A80 DUP4 DUP4 PUSH2 0x134B JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE JUMP JUMPDEST SSTORE PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 DUP4 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE PUSH2 0x1989 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP SWAP1 POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP3 SWAP4 POP PUSH1 0x40 SWAP2 POP PUSH2 0x1989 JUMP JUMPDEST POP PUSH0 PUSH2 0x1957 JUMP JUMPDEST DUP6 PUSH4 0x162930E3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x1B16 DUP3 DUP5 DUP7 PUSH2 0x270D JUMP JUMPDEST ISZERO PUSH2 0x15BA JUMPI PUSH2 0x1B23 PUSH2 0x1E24 JUMP JUMPDEST LT PUSH2 0x15B3 JUMPI PUSH2 0x1B31 DUP4 PUSH2 0x1D9F JUMP JUMPDEST POP PUSH2 0x1B42 PUSH2 0x14FB PUSH1 0x5 PUSH2 0x1890 PUSH2 0x15C3 JUMP JUMPDEST POP PUSH2 0x1B4B PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH2 0x1B70 PUSH1 0x5 DUP4 ADD PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SLOAD PUSH2 0x1BA4 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x18F8 SWAP2 PUSH2 0x1318 JUMP JUMPDEST DUP1 PUSH2 0x1BAF DUP7 DUP9 PUSH2 0x1318 JUMP JUMPDEST GT PUSH2 0x1BBA DUP7 DUP9 PUSH2 0x1318 JUMP JUMPDEST SWAP1 PUSH2 0x1D8A JUMPI POP PUSH1 0x6 PUSH2 0x1BEC SWAP4 DUP7 SWAP4 PUSH2 0x1BD9 DUP6 PUSH2 0x1581 DUP12 PUSH2 0x1BE7 SWAP8 PUSH2 0x12D9 JUMP JUMPDEST SWAP1 SSTORE ADD SWAP4 DUP5 SLOAD SWAP1 SLOAD SWAP1 PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x1318 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x1BF6 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1D81 JUMPI JUMPDEST ISZERO PUSH2 0x1C86 JUMPI SWAP2 DUP1 PUSH1 0x1 DUP4 PUSH1 0x40 SWAP6 DUP9 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP9 SWAP10 SWAP7 SLOAD ISZERO DUP1 PUSH2 0x1C7B JUMPI JUMPDEST PUSH2 0x1C68 JUMPI JUMPDEST POP POP DUP8 DUP2 SSTORE ADD SSTORE JUMPDEST DUP3 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 LOG2 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x5 PUSH2 0x1C74 SWAP3 ADD PUSH2 0x1360 JUMP JUMPDEST PUSH0 DUP6 PUSH2 0x1C46 JUMP JUMPDEST POP DUP4 DUP4 ADD SLOAD ISZERO PUSH2 0x1C41 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x1C91 PUSH2 0x15C3 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 PUSH1 0x5 DUP6 ADD SWAP2 PUSH1 0x1 JUMPDEST DUP4 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0x1D62 JUMPI DUP6 PUSH2 0x1CBA DUP4 DUP8 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1CDA JUMPI POP PUSH1 0x1 ADD PUSH2 0x1CA5 JUMP JUMPDEST SWAP1 PUSH0 SWAP8 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x12E6 JUMPI PUSH2 0x1383 PUSH2 0x1CFD PUSH2 0x1D16 SWAP4 DUP9 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP8 PUSH2 0x134B JUMP JUMPDEST DUP4 SLOAD SWAP1 DUP2 ISZERO PUSH2 0x1AB2 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP6 PUSH1 0x40 SWAP6 PUSH1 0x4 SWAP4 PUSH0 NOT ADD SWAP1 PUSH2 0x1D45 PUSH2 0x1A80 DUP4 DUP4 PUSH2 0x134B JUMP JUMPDEST SSTORE PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 DUP5 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE PUSH2 0x1C4E JUMP JUMPDEST POP POP SWAP1 SWAP2 POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C13 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP4 SWAP5 POP PUSH1 0x40 SWAP3 POP PUSH2 0x1C4E JUMP JUMPDEST POP DUP3 ISZERO ISZERO PUSH2 0x1C1A JUMP JUMPDEST PUSH4 0x162930E3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1DFC JUMPI PUSH1 0x4 PUSH2 0x1DB8 PUSH2 0x15C3 JUMP JUMPDEST ADD DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD DUP1 SLOAD NUMBER GT ISZERO PUSH2 0x1E1D JUMPI NUMBER SWAP1 SSTORE DUP1 EXTCODESIZE ISZERO PUSH2 0x22F JUMPI PUSH0 DUP1 SWAP2 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH4 0x1EFC6B41 PUSH1 0xE1 SHL DUP4 MSTORE GAS CALL DUP1 ISZERO PUSH2 0x1E12 JUMPI PUSH2 0x1E02 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1E0C SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH0 PUSH2 0x1DFC JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x1E2C PUSH2 0x15C3 JUMP JUMPDEST PUSH2 0x1E34 PUSH2 0x2527 JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND PUSH2 0x1E67 JUMPI PUSH1 0x3 ADD SLOAD ISZERO PUSH2 0x1E5F JUMPI PUSH2 0x1E5C NUMBER PUSH2 0x16A2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E5C PUSH2 0x2859 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1E76 PUSH2 0x15C3 JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 ADD SWAP1 PUSH2 0x1E85 DUP3 PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP7 PUSH1 0x3 SWAP4 SWAP1 SWAP4 SHL SWAP2 SWAP1 SWAP2 SHR AND SWAP4 SWAP1 DUP6 DUP6 EQ PUSH2 0x1FD9 JUMPI DUP4 SLOAD PUSH1 0x1 JUMPDEST DUP2 DUP2 LT PUSH2 0x1F9C JUMPI POP POP PUSH2 0x1EBD PUSH2 0x1E24 JUMP JUMPDEST LT PUSH2 0x1F93 JUMPI PUSH1 0x4 PUSH2 0x1EF6 SWAP2 PUSH2 0x1ED1 DUP7 PUSH2 0x1D9F JUMP JUMPDEST POP PUSH2 0x1EDB DUP5 PUSH2 0x1D9F JUMP JUMPDEST POP ADD SWAP2 DUP6 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH2 0x1383 PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD SWAP5 PUSH2 0x1325 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP4 MSTORE SWAP2 KECCAK256 SWAP1 DUP1 DUP3 SUB PUSH2 0x1F75 JUMPI JUMPDEST POP POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x2 PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE DUP3 PUSH1 0x1 DUP3 ADD SSTORE ADD SSTORE DUP4 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SSTORE PUSH31 0xF06471E88E0BC1DB6B6126EFDB09F80B597E6DDC145FF0DCABD12AFAB4EC57 PUSH0 DUP1 LOG3 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SWAP3 SLOAD DUP5 SSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 DUP6 ADD SSTORE ADD SLOAD SWAP2 ADD SSTORE PUSH0 DUP1 PUSH2 0x1F1C JUMP JUMPDEST POP POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST DUP8 PUSH2 0x1FA7 DUP3 DUP9 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1FC6 JUMPI PUSH1 0x1 ADD PUSH2 0x1EAC JUMP JUMPDEST DUP8 PUSH4 0xF158185D PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP POP POP POP POP PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP4 SWAP1 SWAP4 SWAP3 SWAP2 SWAP3 PUSH2 0x1FF2 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD SWAP3 PUSH1 0x1 DUP5 ADD DUP1 SWAP5 GT PUSH2 0x12E6 JUMPI PUSH1 0x1 SWAP7 SWAP6 PUSH1 0x4 PUSH1 0x5 DUP5 ADD SWAP4 ADD SWAP8 JUMPDEST DUP4 SLOAD DUP2 LT ISZERO PUSH2 0x210B JUMPI PUSH2 0x2024 DUP2 DUP6 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP7 SWAP1 DUP1 PUSH2 0x205B JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP ADD PUSH2 0x2011 JUMP JUMPDEST SWAP1 PUSH2 0x2065 SWAP2 PUSH2 0x168F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP1 DUP4 EXTCODESIZE ISZERO PUSH2 0x22F JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1E12 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B53 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 DUP12 SWAP4 PUSH1 0x1 SWAP8 DUP15 SWAP7 PUSH2 0x20FB JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 DUP6 PUSH0 PUSH2 0x204F JUMP JUMPDEST PUSH0 PUSH2 0x2105 SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH0 PUSH2 0x20EC JUMP JUMPDEST POP SWAP2 SWAP4 SWAP5 SWAP6 SWAP1 SWAP7 POP PUSH2 0x211D SWAP3 POP PUSH2 0x12D9 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x212A JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2133 SWAP1 PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x2124 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x22F JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1E12 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B53 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x21DE JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 PUSH0 DUP1 DUP1 DUP1 PUSH2 0x2124 JUMP JUMPDEST PUSH0 PUSH2 0x21E8 SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH0 PUSH2 0x21CD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x21F9 PUSH2 0x15C3 JUMP JUMPDEST SWAP3 DUP1 ISZERO DUP1 DUP1 ISZERO PUSH2 0x234D JUMPI JUMPDEST PUSH2 0x2346 JUMPI PUSH1 0x1 DUP6 ADD SLOAD SWAP3 PUSH1 0x1 DUP5 ADD DUP1 SWAP5 GT PUSH2 0x12E6 JUMPI PUSH1 0x4 DUP7 ADD SWAP7 SWAP6 PUSH1 0x5 ADD PUSH1 0x1 JUMPDEST DUP2 SLOAD DUP2 LT ISZERO PUSH2 0x233B JUMPI PUSH2 0x2238 DUP2 DUP4 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP6 SWAP1 DUP1 PUSH2 0x226F JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP ADD PUSH2 0x2225 JUMP JUMPDEST PUSH2 0x2279 SWAP1 DUP7 PUSH2 0x168F JUMP JUMPDEST SWAP1 PUSH2 0x2327 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP1 DUP8 SWAP1 DIV DUP4 EXTCODESIZE ISZERO PUSH2 0x22F JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x1E12 JUMPI PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B53 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 DUP12 SWAP4 PUSH1 0x1 SWAP8 DUP15 SWAP7 PUSH2 0x2317 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 DUP5 PUSH0 PUSH2 0x2263 JUMP JUMPDEST PUSH0 PUSH2 0x2321 SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH0 PUSH2 0x2308 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP SWAP1 POP JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x2204 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x23E8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP2 SWAP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B73 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1B01 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1B01 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B93 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE CALLER SWAP3 SWAP2 SWAP1 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP1 DUP1 LOG4 PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x252F PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SWAP1 DUP2 SLOAD NUMBER DUP2 EQ PUSH2 0x2708 JUMPI PUSH2 0x2547 DUP2 NUMBER PUSH2 0x12D9 JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x12E6 JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD SWAP1 PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2BB3 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD AND DUP1 ISZERO PUSH2 0x26FF JUMPI JUMPDEST PUSH2 0x26A4 JUMPI JUMPDEST POP POP NUMBER SWAP1 SSTORE PUSH1 0x6 DUP3 ADD SLOAD DUP1 PUSH2 0x258D JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0xFF PUSH1 0x7 DUP5 ADD SLOAD AND PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x11CA JUMPI PUSH1 0x2 DUP2 SUB PUSH2 0x2650 JUMPI POP POP PUSH1 0x5 DUP3 ADD DUP1 SLOAD SWAP4 PUSH1 0x4 SWAP1 SWAP4 ADD SWAP3 SWAP1 PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x25CF JUMPI POP POP POP POP POP POP JUMPDEST PUSH0 DUP1 DUP1 DUP1 PUSH2 0x2124 JUMP JUMPDEST DUP1 PUSH2 0x25DC PUSH1 0x1 SWAP3 DUP5 PUSH2 0x134B JUMP JUMPDEST DUP4 DUP1 PUSH1 0xA0 SHL SUB SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SHR AND DUP3 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE DUP7 PUSH1 0x20 MSTORE DUP6 DUP4 PUSH1 0x40 PUSH0 KECCAK256 ADD SLOAD DUP7 DUP2 PUSH2 0x2611 JUMPI JUMPDEST POP POP POP POP ADD PUSH2 0x25B8 JUMP JUMPDEST PUSH2 0x261A SWAP2 PUSH2 0x168F JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH32 0xA34DB09D4126DD8DCD1D29F3DF65C01DCAC405127546E380ADD77FEDCA459BA7 PUSH1 0x20 NUMBER SWAP5 LOG4 PUSH0 DUP6 DUP2 DUP7 PUSH2 0x2607 JUMP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 EQ PUSH2 0x2666 JUMPI JUMPDEST POP POP POP PUSH2 0x25C6 JUMP JUMPDEST PUSH2 0x266F SWAP2 PUSH2 0x168F JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0xCEF44CE1A1FC7CA1F3078DAF79D3B60646D0E751BC72A69BFF12F66C4AEF3B8D PUSH1 0x20 NUMBER SWAP4 LOG3 PUSH0 DUP1 DUP1 PUSH2 0x265E JUMP JUMPDEST PUSH2 0x26BB PUSH2 0x26B5 DUP8 PUSH1 0x6 DUP9 ADD SLOAD PUSH2 0x168F JUMP JUMPDEST DUP4 PUSH2 0x1318 JUMP JUMPDEST DUP1 SWAP2 SSTORE DUP1 DUP3 SUB ISZERO PUSH2 0x2578 JUMPI PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH32 0x539CE444A515B8AA8769802297761FBEC80B5B543C617714BF5E0611CF669DB PUSH1 0x40 NUMBER SWAP4 LOG3 PUSH0 DUP1 PUSH2 0x2578 JUMP JUMPDEST POP DUP2 ISZERO ISZERO PUSH2 0x2573 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 DUP3 ISZERO PUSH2 0x284A JUMPI PUSH2 0x2726 PUSH2 0x15C3 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD PUSH2 0x2750 PUSH2 0x2736 DUP3 PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 EQ SWAP2 PUSH2 0x1325 JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2838 JUMPI POP PUSH1 0x4 SWAP1 DUP5 PUSH0 MSTORE ADD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 DUP3 SLOAD EQ SWAP2 DUP3 PUSH2 0x282A JUMPI JUMPDEST POP POP PUSH2 0x15B3 JUMPI ISZERO SWAP1 DUP2 ISZERO SWAP2 PUSH2 0x2820 JUMPI JUMPDEST POP PUSH2 0x279D JUMPI POP PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 DUP6 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E12 JUMPI PUSH0 SWAP2 PUSH2 0x27E5 JUMPI JUMPDEST POP PUSH2 0x1DFC JUMPI PUSH4 0xA5FE8615 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2818 JUMPI JUMPDEST DUP2 PUSH2 0x2800 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x22F JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x22F JUMPI PUSH0 PUSH2 0x27CE JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x27F3 JUMP JUMPDEST SWAP1 POP ISZERO ISZERO PUSH0 PUSH2 0x2792 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD EQ SWAP1 POP DUP3 PUSH0 PUSH2 0x2782 JUMP JUMPDEST PUSH4 0xFDA6C187 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x22A4EC7B PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2861 PUSH2 0x15C3 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP3 SLOAD SWAP1 PUSH2 0x2874 DUP3 NUMBER PUSH2 0x12D9 JUMP JUMPDEST SWAP1 DUP2 ISZERO PUSH2 0x29AC JUMPI PUSH1 0x1 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x12E6 JUMPI PUSH0 SWAP5 SWAP4 PUSH1 0x4 PUSH1 0x5 DUP4 ADD SWAP3 ADD SWAP6 JUMPDEST DUP3 SLOAD DUP2 LT ISZERO PUSH2 0x299F JUMPI PUSH2 0x28A6 DUP2 DUP5 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 SHL SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x2996 JUMPI PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE DUP8 PUSH1 0x20 MSTORE DUP5 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 PUSH2 0x28E7 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP2 POP JUMPDEST ADD PUSH2 0x2893 JUMP JUMPDEST SWAP1 PUSH2 0x28F1 SWAP2 PUSH2 0x168F JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x22F JUMPI PUSH1 0x40 MLOAD PUSH4 0x40C10F19 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP4 PUSH0 SWAP1 DUP6 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1E12 JUMPI PUSH1 0x1 SWAP5 DUP10 SWAP3 PUSH2 0x2986 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2B53 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 NUMBER SWAP5 LOG4 DUP5 PUSH0 PUSH2 0x28DA JUMP JUMPDEST PUSH0 PUSH2 0x2990 SWAP2 PUSH2 0x1299 JUMP JUMPDEST PUSH0 PUSH2 0x2965 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x28E1 JUMP JUMPDEST POP SWAP5 POP POP POP POP NUMBER SWAP1 SSTORE NUMBER SWAP1 JUMP JUMPDEST POP SWAP1 SWAP3 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH0 EQ PUSH2 0x15B3 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 LT ISZERO PUSH2 0x6A8 JUMPI PUSH2 0x2A03 PUSH2 0x29ED DUP3 PUSH1 0x1 DUP8 SWAP5 ADD DUP6 SSTORE DUP5 PUSH2 0x134B JUMP JUMPDEST DUP2 SWAP4 SWAP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP2 DUP3 SHL SWAP2 PUSH0 NOT SWAP1 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE SLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD SWAP2 DUP2 PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0x2ABF JUMPI PUSH0 NOT DUP2 ADD DUP2 DUP2 GT PUSH2 0x12E6 JUMPI DUP3 SLOAD PUSH0 NOT DUP2 ADD SWAP2 SWAP1 DUP3 GT PUSH2 0x12E6 JUMPI DUP2 DUP2 SUB PUSH2 0x2A8A JUMPI JUMPDEST POP POP POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x1AB2 JUMPI PUSH0 NOT ADD SWAP1 PUSH2 0x2A6B DUP3 DUP3 PUSH2 0x134B JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHL NOT AND SWAP1 SSTORE SSTORE PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x2AAA PUSH2 0x2A9A PUSH2 0x29ED SWAP4 DUP7 PUSH2 0x134B JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR SWAP3 DUP4 SWAP3 DUP7 PUSH2 0x134B JUMP JUMPDEST SWAP1 SSTORE PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2A52 JUMP JUMPDEST POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2C33 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 SHR AND ISZERO PUSH2 0x2AE3 JUMPI JUMP JUMPDEST PUSH4 0x1AFCD79F PUSH1 0xE3 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID 0xBD PUSH26 0xB86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E12 SWAP16 SIGNEXTEND STOP SELFDESTRUCT 0xC1 0xF6 INVALID 0x24 PUSH3 0x1CE81E 0xC5 DUP3 PUSH29 0xAF0253CADB74709B061630E6B55E8237170593200075E09417C5070057 0xDF RETURNDATACOPY 0xAF JUMPF 0x54D MSTORE STATICCALL SIGNEXTEND 0x2A DUP8 0xD6 BLOBBASEFEE 0x23 MCOPY NOT PUSH26 0x63B615AEDEE8030C56D855D8DF534C916B78EAC3522E5FAFD59F BASEFEE PUSH26 0x9C4A97D42E80F6E08989607935BD0AE54BC31F548C14DBA4D37C TLOAD PUSH5 0xB3F8CA900C 0xB4 PUSH9 0xFB8ABD54D5894F5502 0xDD PUSH28 0xC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B6268 STOP 0xCD MCOPY DATALOADN 0x5C6E XOR PUSH31 0x77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300139C2898040E CALL PUSH10 0x10DC9F44DC697DF79363 0xDA PUSH23 0x7D8BC92F2E310312B816E46D9B779B17422D0DF9222301 DUP12 ORIGIN 0xB4 DATALOADN 0xFA46 RJUMP 0x7172 RETURNDATASIZE PUSH9 0x17E2486D003BECC55F STOP SHL 0xD3 CREATE 0xD2 CALL STOP BYTE DUP6 PUSH14 0x81215CEB86C548BDBC3BF52480A0 DUP10 PUSH25 0xF8C3EA6E2BD421F0C57E16840DF040F15088DC2F81FE391C39 0x23 0xBE 0xC7 RETURNDATACOPY 0x23 0xA9 PUSH7 0x2EFC9C229C6A00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 0xAE 0x2E 0xB9 MSIZE PUSH26 0x22E6B519237F96C918712D1BBA6E715B72FFCB6B316F8CA4C761 PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"395:1631:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;;3245:26:36;395:1631:39;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;:::i;:::-;;;11931:35:35;;:::i;:::-;59736:23;;;395:1631:39;59799:22:35;59858:19;59799:22;;;395:1631:39;59858:19:35;;395:1631:39;;;;;;;;:::i;:::-;;;59677:215:35;;;395:1631:39;;59677:215:35;;395:1631:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;1286:13;395:1631;;;;;;1286:13;:::i;:::-;395:1631;;;;;;;-1:-1:-1;;395:1631:39;;;;5815:26:13;395:1631:39;;;;:::i;:::-;5785:18:13;3283:4;5785:18;;;:::i;:::-;3283:4;:::i;:::-;5815:26;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;2003:13;395:1631;;;;;;;;2003:13;:::i;395:1631::-;;;;;;-1:-1:-1;;395:1631:39;;;;;47910:50:35;395:1631:39;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;395:1631:39;;47910:50:35;;:::i;:::-;395:1631:39;-1:-1:-1;;;;;;;;;;;3556:68:28;395:1631:39;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;395:1631:39;39944:62:35;395:1631:39;;;;39944:62:35;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;4301:16:15;395:1631:39;;;;4724:16:15;;:34;;;;395:1631:39;4803:1:15;4788:16;:50;;;;395:1631:39;4853:13:15;:30;;;;395:1631:39;4849:91:15;;;-1:-1:-1;;395:1631:39;;4803:1:15;395:1631:39;-1:-1:-1;;;;;;;;;;;395:1631:39;;4977:67:15;;395:1631:39;6891:76:15;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;395:1631:39;;;5377:22:36;;395:1631:39;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;4967:24:13;395:1631:39;;;;;;4241:31:14;;6946:18:13;2399:26:36;;;-1:-1:-1;;;;;;;;;;;7025:52:13;395:1631:39;7025:52:13;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;4967:24:13;395:1631:39;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;2399:26:36;;395:1631:39;;-1:-1:-1;;;;;;;;;;;7025:52:13;395:1631:39;7025:52:13;3245:26:36;395:1631:39;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;4967:24:13;395:1631:39;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;2399:26:36;;395:1631:39;;-1:-1:-1;;;;;;;;;;;7025:52:13;395:1631:39;7025:52:13;4241:31:14;:::i;:::-;4282:71;;395:1631:39;11931:35:35;;;:::i;:::-;20921:17;;;395:1631:39;;-1:-1:-1;;;395:1631:39;;;;;;;4803:1:15;395:1631:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;20966:22:35;;;20991:30;395:1631:39;;;;;;;;4803:1:15;21312:12:35;21286:23;;395:1631:39;5064:101:15;;395:1631:39;5064:101:15;395:1631:39;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;-1:-1:-1;;;;;;;;;;;395:1631:39;5140:14:15;395:1631:39;;;4803:1:15;395:1631:39;;5140:14:15;395:1631:39;;;;;;;;;;;;;4282:71:14;-1:-1:-1;;;;;;;;;;;395:1631:39;;-1:-1:-1;;;;;;;;;;;395:1631:39;;11511:50:33;;395:1631:39;11511:50:33;:::i;:::-;;4282:71:14;;;395:1631:39;;;;;;;;;4977:67:15;-1:-1:-1;;395:1631:39;;;-1:-1:-1;;;;;;;;;;;395:1631:39;4977:67:15;;;4849:91;4906:23;;;395:1631:39;4906:23:15;395:1631:39;;4906:23:15;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:15;;4724:34;;;-1:-1:-1;4724:34:15;;395:1631:39;;;;;;-1:-1:-1;;395:1631:39;;;;;47275:97:35;395:1631:39;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;395:1631:39;;;;;;;;;-1:-1:-1;;;;;395:1631:39;47275:97:35;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;42084:51:35;11931:35;;:::i;:::-;42084:51;395:1631:39;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;395:1631:39;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;3949:31:13;395:1631:39;;;;;;-1:-1:-1;395:1631:39;;;;;;-1:-1:-1;395:1631:39;;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;5853:18:33;395:1631:39;;;;;5853:18:33;:::i;:::-;395:1631:39;;;;;;;;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;60480:53:35;395:1631:39;;60480:46:35;11931:35;;:::i;:::-;60480:46;:53;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;;;:::i;:::-;;;:::i;:::-;;;11931:35:35;;:::i;:::-;61286:48;:56;395:1631:39;;;;;;-1:-1:-1;395:1631:39;;;;;-1:-1:-1;395:1631:39;61455:26:35;395:1631:39;;61455:26:35;;395:1631:39;61421:60:35;;;;:::i;:::-;395:1631:39;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;395:1631:39;;;;3283:4:13;;:::i;:::-;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;2770:61:17;;3300:4;395:1631:39;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;3319:20:17;395:1631:39;;;966:10:16;395:1631:39;;3319:20:17;395:1631:39;2770:61:17;2805:15;;;395:1631:39;2805:15:17;395:1631:39;;2805:15:17;395:1631:39;;;;;;-1:-1:-1;;395:1631:39;;;;;;;:::i;:::-;;;3283:4:13;;;:::i;:::-;395:1631:39;11931:35:35;;:::i;:::-;44758:19;:27;395:1631:39;;;;;;-1:-1:-1;395:1631:39;;;;45075:34:35;395:1631:39;-1:-1:-1;395:1631:39;45075:34:35;395:1631:39;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;11931:35:35;;:::i;:::-;395:1631:39;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;47601:43:35;395:1631:39;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;47631:12:35;47601:43;;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;;45808:90:35;395:1631:39;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;45885:12:35;;395:1631:39;;;;;;-1:-1:-1;;;;;395:1631:39;45808:90:35;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;60266:46:35;11931:35;;:::i;:::-;60266:46;395:1631:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;395:1631:39;29711:41:35;395:1631:39;;29711:41:35;:::i;:::-;395:1631:39;-1:-1:-1;;;;;;;;;;;3556:68:28;395:1631:39;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;60050:46:35;11931:35;;:::i;:::-;60050:46;395:1631:39;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;24060:23:35;11931:35;;:::i;:::-;24060:23;395:1631:39;24087:12:35;24060:39;24087:12;;395:1631:39;24087:12:35;24060:78;395:1631:39;;;;;;24060:78:35;395:1631:39;24117:21:35;;:::i;:::-;24060:78;;395:1631:39;;;;;;-1:-1:-1;;395:1631:39;;;;;;:::i;:::-;;;:::i;:::-;;;11931:35:35;;:::i;:::-;60718:48;:56;395:1631:39;;;;;;-1:-1:-1;395:1631:39;;;;;-1:-1:-1;395:1631:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;44047:21:35;395:1631:39;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;44047:21:35;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;;45425:76:35;395:1631:39;;:::i;:::-;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;45488:12:35;;395:1631:39;;;-1:-1:-1;;;;;395:1631:39;45425:76:35;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;3283:4:13;;:::i;:::-;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;2971:9:17;2967:62;;395:1631:39;;;-1:-1:-1;;;;;;;;;;;395:1631:39;3627:22:17;395:1631:39;;;966:10:16;395:1631:39;;3627:22:17;395:1631:39;2967:62:17;3003:15;;;395:1631:39;3003:15:17;395:1631:39;;3003:15:17;395:1631:39;;;;;;-1:-1:-1;;395:1631:39;;;;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;395:1631:39;29427:40:35;29454:12;29427:40;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;:::i;:::-;966:10:16;-1:-1:-1;;;;;395:1631:39;;6489:34:13;6485:102;;6597:37;395:1631:39;;;6597:37:13;:::i;6485:102::-;6546:30;;;395:1631:39;6546:30:13;395:1631:39;;6546:30:13;395:1631:39;;;;;;-1:-1:-1;;395:1631:39;;;;;;;1936:9:36;395:1631:39;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11931:35:35;;:::i;:::-;62361:27;395:1631:39;;;;;;-1:-1:-1;395:1631:39;;62361:19:35;;395:1631:39;;;-1:-1:-1;395:1631:39;;;62564:23:35;62695:22;62564:23;;;;395:1631:39;62623:26:35;;395:1631:39;62695:22:35;;395:1631:39;;;;;;;;:::i;:::-;;;;;62418:314:35;;395:1631:39;;;;62418:314:35;;395:1631:39;;;62418:314:35;395:1631:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;5398:25:13;395:1631:39;;;;:::i;:::-;5368:18:13;3283:4;5368:18;;;:::i;3283:4::-;5398:25;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;395:1631:39;;;;;;;:::i;:::-;63973:59:35;11931:35;;:::i;:::-;63907:22;63795:73;395:1631:39;;;;;;63816:19:35;;395:1631:39;;;;;;63795:73:35;;:::i;:::-;395:1631:39;;;;63907:22:35;395:1631:39;63878:26:35;;395:1631:39;63878:26:35;;395:1631:39;63973:59:35;:::i;:::-;395:1631:39;63939:31:35;;395:1631:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;;;;;;;41477:426:35;395:1631:39;3283:4:13;;;:::i;:::-;41477:426:35;:::i;:::-;395:1631:39;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;3283:4:13;;:::i;:::-;1181:103:25;;:::i;:::-;395:1631:39;38689:55:35;38731:12;395:1631:39;;38689:55:35;:::i;395:1631:39:-;;;;;;-1:-1:-1;;395:1631:39;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21606:64:35;;;:146;;;;395:1631:39;21606:220:35;;;;395:1631:39;21606:292:35;;;;395:1631:39;21606:344:35;;;;395:1631:39;;;;;;;21606:344:35;-1:-1:-1;;;6687:49:36;;;-1:-1:-1;6687:89:36;;;;21606:344:35;;;;;6687:89:36;-1:-1:-1;;;1851:57:14;;;-1:-1:-1;1851:97:14;;;;6687:89:36;;;;;1851:97:14;-1:-1:-1;;;3599:47:13;;;-1:-1:-1;3599:87:13;;;;1851:97:14;;;;;3599:87:13;-1:-1:-1;;;1101:40:18;;-1:-1:-1;3599:87:13;;;21606:292:35;-1:-1:-1;;;21842:56:35;;;-1:-1:-1;21606:292:35;;:220;-1:-1:-1;;;21768:58:35;;;-1:-1:-1;21606:220:35;;:146;-1:-1:-1;;;21686:66:35;;;-1:-1:-1;21606:146:35;;395:1631:39;;;;-1:-1:-1;;;;;395:1631:39;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;395:1631:39;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;395:1631:39;;;;;-1:-1:-1;395:1631:39;41477:426:35;41703:22;11931:35;;:::i;:::-;41703:22;395:1631:39;;;;;;;;;;;;;;;;;41740:18:35;;;41736:35;;395:1631:39;;;41829:45:35;395:1631:39;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;41829:45:35;41892:4;41477:426;:::o;41736:35::-;41760:11;;;41767:4;41760:11;:::o;395:1631:39:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;395:1631:39;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;4807:191:13;-1:-1:-1;395:1631:39;-1:-1:-1;;;;;;;;;;;395:1631:39;;4967:24:13;395:1631:39;-1:-1:-1;395:1631:39;4967:24:13;395:1631:39;4807:191:13;:::o;395:1631:39:-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;395:1631:39;;-1:-1:-1;395:1631:39;;;-1:-1:-1;395:1631:39;:::o;:::-;;;;;-1:-1:-1;;;395:1631:39;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;;;;;;;;;;;;;;;:::o;4196:103:13:-;966:10:16;-1:-1:-1;395:1631:39;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;4516:23:13;4512:108;;4196:103::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;395:1631:39;-1:-1:-1;;;;;;;;;;;395:1631:39;;;-1:-1:-1;4562:47:13;4196:103;966:10:16;-1:-1:-1;395:1631:39;;;;;;;;;;;;4516:23:13;4512:108;;4196:103::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;395:1631:39;-1:-1:-1;;;;;;;;;;;395:1631:39;;;-1:-1:-1;4562:47:13;4196:103;-1:-1:-1;395:1631:39;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;966:10:16;395:1631:39;;;;;;;;;;4516:23:13;4512:108;;4196:103;:::o;4512:108::-;4562:47;;;-1:-1:-1;4562:47:13;966:10:16;4562:47:13;395:1631:39;;;;-1:-1:-1;4562:47:13;1290:377:25;-1:-1:-1;;;;;;;;;;;3327:69:28;1444:93:25;;1655:4;-1:-1:-1;;;;;;;;;;;3556:68:28;1290:377:25:o;1444:93::-;1496:30;;;-1:-1:-1;1496:30:25;;-1:-1:-1;1496:30:25;40297:1105:35;11931:35;;:::i;:::-;395:1631:39;;40554:42:35;;;;40550:59;;40624:21;;:::i;:::-;:43;40620:61;;40799:20;40706:17;;;40692:35;40706:20;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;40692:35:35;:::i;:::-;;40799:20;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;-1:-1:-1;395:1631:39;;;40779:19:35;;;395:1631:39;;;;;;;40941:33:35;395:1631:39;40941:33:35;;:::i;:::-;40918:56;;395:1631:39;;41187:33:35;;;;;:55;41308:65;41187:33;;;395:1631:39;41187:33:35;;:::i;:::-;:55;:::i;:::-;395:1631:39;;;;;;;;;;;;41308:65:35;41391:4;40297:1105;:::o;395:1631:39:-;;;;;;;;40779:19:35;395:1631:39;;;;;;;;40620:61:35;40669:12;;;395:1631:39;40669:12:35;:::o;40550:59::-;40598:11;;;;40605:4;40598:11;:::o;9575:252::-;395:1631:39;;9711:77:35;;;395:1631:39;;;9711:77:35;;;;395:1631:39;9711:77:35;;:::i;:::-;395:1631:39;;9701:88:35;;-1:-1:-1;;9701:126:35;;9575:252::o;4035:348:14:-;4241:31;;;;:::i;:::-;4282:71;;;;4362:14;;4035:348;:::o;4282:71::-;-1:-1:-1;395:1631:39;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;11511:50:33;;-1:-1:-1;;;;;395:1631:39;;11511:50:33;:::i;:::-;;4035:348:14;:::o;4486:353::-;4693:32;;;;:::i;:::-;4735:74;;;;4818:14;;4486:353;:::o;4735:74::-;-1:-1:-1;395:1631:39;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;11832:53:33;;-1:-1:-1;;;;;395:1631:39;;11832:53:33;:::i;395:1631:39:-;;;;;;;;;;;;;;;;:::o;30668:2269:35:-;30744:7;;:::i;:::-;11931:35;;:::i;:::-;30895:23;;;395:1631:39;;30895:40:35;;;;:73;;;30668:2269;395:1631:39;;;31139:39:35;;;;:::i;:::-;31192:11;;;31188:37;;395:1631:39;;;31618:27:35;;;;;:::i;:::-;31683:19;;;;;395:1631:39;31733:75:35;:34;;;:75;:34;;;31770;;;;:::i;:::-;31733:75;;31823:13;31819:937;;31733:75;395:1631:39;;;;;11931:35:35;;:::i;:::-;33824:137;31088:12;33824:29;;31088:12;;395:1631:39;33824:137:35;;34065:30;;;34061:276;;33824:137;34347:19;;31683;34347;;;395:1631:39;30668:2269:35;:::o;34061:276::-;34255:22;;;;:::i;:::-;30895:23;395:1631:39;;;;;;;34116:210:35;395:1631:39;31683:19:35;395:1631:39;;;;;34116:210:35;395:1631:39;;;;;;;;;;;34116:210:35;34061:276;;;;33824:137;33885:34;;;;;;33922;;;;:::i;:::-;33824:137;;;33885:75;395:1631:39;33885:75:35;;31819:937;32384:43;:80;32236:17;:20;:17;;;:20;:::i;:::-;395:1631:39;;31683:19:35;395:1631:39;;;;;-1:-1:-1;;;;;395:1631:39;-1:-1:-1;395:1631:39;;;32311:19:35;;;395:1631:39;;;;;32405:22:35;;;;395:1631:39;;32384:43:35;:::i;:::-;395:1631:39;;32384:80:35;;:::i;:::-;32504:22;;;;:::i;:::-;32545:26;;;;;;32632:13;;;;:::i;:::-;31819:937;;;;;;32541:204;32731:13;;;;;;:::i;:::-;32541:204;;31733:75;395:1631:39;31733:75:35;;;31188:37;31205:20;;;;:::o;395:1631:39:-;;;;;;;;;;;31088:12:35;395:1631:39;;;;;30895:73:35;30956:12;;30939:29;;;30895:73;;51219:1370;;;51426:72;395:1631:39;51426:72:35;;;:::i;:::-;51425:73;51421:90;;51526:21;;:::i;:::-;:43;51522:61;;51594:21;;;:::i;:::-;;51625:64;51639:49;:46;11931:35;;:::i;:::-;51639:46;:49;:::i;51625:64::-;;11931:35;;:::i;:::-;54960:19;;;:27;395:1631:39;;;;;;;;;;;;;;;55058:17:35;:20;51639:46;55058:17;;:20;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;;;;;;;;55566:121:35;;395:1631:39;;55566:80:35;;;:::i;:::-;55661:26;;395:1631:39;;;55566:121:35;;:::i;:::-;55718:55;;;395:1631:39;;55979:36:35;56068:22;55979:36;;;56068:51;55979:36;;:::i;:::-;:54;395:1631:39;56068:22:35;395:1631:39;;;;;56068:51:35;;:::i;:::-;:69;395:1631:39;11931:35:35;;:::i;:::-;-1:-1:-1;;;;;395:1631:39;;-1:-1:-1;395:1631:39;;;54960:19:35;56866;;395:1631:39;;;;;;57901:25:35;;;;;:49;;51219:1370;57897:489;;;395:1631:39;-1:-1:-1;55661:26:35;395:1631:39;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;58029:36:35;:71;;;57897:489;58025:107;;57897:489;395:1631:39;;;;;58215:26:35;395:1631:39;57897:489:35;395:1631:39;;;;;-1:-1:-1;395:1631:39;;;;-1:-1:-1;;;;;395:1631:39;;52491:70:35;55661:26;51219:1370;:::o;58025:107::-;51639:46;58102:30;:17;;:30;:::i;:::-;58025:107;;;;58029:71;58069:26;;;;395:1631:39;58069:31:35;58029:71;;57897:489;11931:35;;;;;:::i;:::-;58843:13;-1:-1:-1;;;;;395:1631:39;;;51639:46:35;58862:17;;;55661:26;58888:3;395:1631:39;;58858:28:35;;;;;;58911:20;;;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;58911:30:35;58907:255;;58888:3;55661:26;395:1631:39;58843:13:35;;58907:255;395:1631:39;;;;;;;;;;;;;;;;58961:20:35;58984:47;58961:70;58984:47;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;;58961:20:35;;:::i;:70::-;395:1631:39;;;;;;;-1:-1:-1;;;;;;;;;;;52491:70:35;395:1631:39;;54960:19:35;;-1:-1:-1;;395:1631:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;395:1631:39;59097:19:35;395:1631:39;;-1:-1:-1;395:1631:39;;;;;;;;;;;;;;57897:489:35;;395:1631:39;;;;-1:-1:-1;395:1631:39;;54960:19:35;395:1631:39;;-1:-1:-1;395:1631:39;58858:28:35;;;;;-1:-1:-1;;;;;;;;;;;58858:28:35;;;395:1631:39;58858:28:35;;57897:489;;57901:49;;-1:-1:-1;57901:49:35;;395:1631:39;;;;;-1:-1:-1;395:1631:39;54960:19:35;395:1631:39;;;;-1:-1:-1;395:1631:39;51522:61:35;51571:12;;395:1631:39;51571:12:35;:::o;51219:1370::-;;;;;51426:72;;;;;:::i;:::-;51425:73;51421:90;;51526:21;;:::i;:::-;:43;51522:61;;51594:21;;;:::i;:::-;;51625:64;51639:49;:46;11931:35;;:::i;51625:64::-;;11931:35;;:::i;:::-;54960:19;;;:27;395:1631:39;;;;;;;-1:-1:-1;395:1631:39;;;;;-1:-1:-1;395:1631:39;55058:17:35;:20;51639:46;55058:17;;:20;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;-1:-1:-1;395:1631:39;;;;;;;;;;;;;;;55566:121:35;;395:1631:39;;55566:80:35;;;:::i;:121::-;55718:38;;;;;:::i;:::-;:55;55867:38;;;;:::i;:::-;395:1631:39;;;55979:36:35;56068:22;:69;55979:36;;;:54;:36;;;56068:51;55979:36;;:::i;:54::-;395:1631:39;;56068:22:35;395:1631:39;;;;;56068:51:35;;:::i;:::-;:69;:::i;:::-;395:1631:39;;11931:35:35;;:::i;:::-;-1:-1:-1;;;;;395:1631:39;;-1:-1:-1;395:1631:39;;;54960:19:35;56866;;395:1631:39;;;;;;57901:25:35;;;;;:49;;51219:1370;57897:489;;;395:1631:39;;55661:26:35;395:1631:39;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;58029:36:35;:71;;;57897:489;58025:107;;57897:489;395:1631:39;;;;;58215:26:35;395:1631:39;57897:489:35;395:1631:39;;;;;;;;;-1:-1:-1;;;;;395:1631:39;;52491:70:35;55661:26;51219:1370;:::o;58025:107::-;51639:46;58102:30;:17;;:30;:::i;:::-;58025:107;;;;58029:71;58069:26;;;;395:1631:39;58069:31:35;58029:71;;57897:489;11931:35;;;;;:::i;:::-;58843:13;-1:-1:-1;;;;;395:1631:39;;;51639:46:35;58862:17;;;55661:26;58888:3;395:1631:39;;58858:28:35;;;;;;58911:20;;;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;58911:30:35;58907:255;;58888:3;55661:26;395:1631:39;58843:13:35;;58907:255;395:1631:39;;;;;;;;;;;;;;;;;58961:20:35;58984:47;58961:70;58984:47;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;;58961:20:35;;:::i;:70::-;395:1631:39;;;;;;;-1:-1:-1;;;;;;;;;;;52491:70:35;395:1631:39;;54960:19:35;;-1:-1:-1;;395:1631:39;;;;;;;:::i;:::-;;-1:-1:-1;395:1631:39;59097:19:35;395:1631:39;;-1:-1:-1;395:1631:39;;;;;;;;;;;;;;57897:489:35;;58858:28;;;;;;-1:-1:-1;;;;;;;;;;;58858:28:35;;;395:1631:39;58858:28:35;;57897:489;;57901:49;57930:20;;;;57901:49;;395:1631:39;;;;;;54960:19:35;395:1631:39;;;;;;42760:909:35;-1:-1:-1;;;;;395:1631:39;42910:20:35;;42906:37;;43066:19;11931:35;;:::i;:::-;43066:19;395:1631:39;;;;;43269:34:35;395:1631:39;;;43269:34:35;395:1631:39;;43253:12:35;:50;;43249:67;;43253:12;395:1631:39;;43585:56:35;;;;;395:1631:39;;;43066:19:35;395:1631:39;;;;;;;;;43585:56:35;;;;;;;;;;42760:909;43651:11;43658:4;42760:909;:::o;43585:56::-;395:1631:39;43585:56:35;;;:::i;:::-;395:1631:39;43585:56:35;;;395:1631:39;;;;;;;;;43249:67:35;43305:11;;43312:4;43305:11;:::o;27633:344::-;11931:35;;:::i;:::-;27700:64;;:::i;:::-;395:1631:39;-1:-1:-1;;;;;;;;;;;395:1631:39;;27811:44:35;;27877:19;;395:1631:39;27873:23:35;:97;;27899:40;27926:12;27899:40;:::i;:::-;27633:344;:::o;27873:97::-;27942:28;;:::i;27811:44::-;27832:23;;395:1631:39;27825:30:35;:::o;48797:1895::-;11931:35;;:::i;:::-;49003:17;;;;:20;;;;:::i;:::-;395:1631:39;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;;;;;;;49037:24:35;;;49033:41;;395:1631:39;;49524:1:35;49527:28;;;;;;49691:21;;;;:::i;:::-;:43;49687:61;;50027:19;50248:33;49829:25;;;;:::i;:::-;;49864;;;:::i;:::-;;50027:19;:31;395:1631:39;-1:-1:-1;395:1631:39;;;;50248:20:35;50027:55;395:1631:39;-1:-1:-1;395:1631:39;50027:55:35;395:1631:39;50248:20:35;;:::i;:33::-;-1:-1:-1;;;;;395:1631:39;;-1:-1:-1;395:1631:39;;;;;;;;;;;;;;;;;;;;;;49507:170:35;50373:31;;395:1631:39;;;;;;;-1:-1:-1;395:1631:39;;;;-1:-1:-1;395:1631:39;;;;;;;;;;;;;;;-1:-1:-1;395:1631:39;;;50027:55:35;395:1631:39;-1:-1:-1;395:1631:39;50519:55:35;395:1631:39;50620:44:35;395:1631:39;50620:44:35;;49524:1;48797:1895;:::o;395:1631:39:-;50027:55:35;395:1631:39;;;;;;49524:1:35;395:1631:39;;;49524:1:35;395:1631:39;;;;;;;;;;;;49687:61:35;49736:12;;;;;395:1631:39;49736:12:35;:::o;49557:3::-;49584:20;;;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;49584:34:35;395:1631:39;;49524:1:35;395:1631:39;49512:13:35;;395:1631:39;;;;;;;;;;;;49033:41:35;49063:11;;;;;;49070:4;49063:11;:::o;34869:1330::-;;;;;;;11931:35;;:::i;:::-;35143:23;;;395:1631:39;;35143:23:35;395:1631:39;;;;;;;35143:23:35;35239:13;;35392:19;35258:17;;;35392:19;;35234:475;35284:3;395:1631:39;;35254:28:35;;;;;35320:20;;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;-1:-1:-1;395:1631:39;;;;;;;;;;;;;35392:27:35;395:1631:39;;;35434:265:35;;35284:3;;;35143:23;35284:3;;395:1631:39;35239:13:35;;35434:265;35510:40;;;;:::i;:::-;35568:11;-1:-1:-1;;;;;395:1631:39;;;35568:32:35;;;;;395:1631:39;;-1:-1:-1;;;35568:32:35;;-1:-1:-1;;;;;395:1631:39;;35392:19:35;35568:32;;395:1631:39;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;-1:-1:-1;;35568:32:35;;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;35568:32:35;;35143:23;35568:32;;;;;35434:265;395:1631:39;;;;;;35623:61:35;35434:265;;;;35568:32;-1:-1:-1;35568:32:35;;;:::i;:::-;;;;35254:28;;;;;;;;;35820:26;35254:28;;35820:26;:::i;:::-;35860:23;;35856:337;;35234:475;34869:1330;;;;:::o;35856:337::-;35924:20;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;;35958:225:35;;35856:337;35958:225;36010:11;-1:-1:-1;;;;;395:1631:39;;36010:53:35;;;;;395:1631:39;;-1:-1:-1;;;36010:53:35;;-1:-1:-1;;;;;395:1631:39;;35392:19:35;36010:53;;395:1631:39;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;-1:-1:-1;;36010:53:35;;;;;;;-1:-1:-1;;;;;;;;;;;36010:53:35;395:1631:39;36010:53:35;;;35958:225;395:1631:39;;;;;;36086:82:35;35958:225;;;;35856:337;;36010:53;-1:-1:-1;36010:53:35;;;:::i;:::-;;;;36704:1751;;;;11931:35;;:::i;:::-;37148:18;;;;:36;;;;36704:1751;37144:49;;37223:23;;;395:1631:39;;37223:23:35;395:1631:39;;;;;;;37539:19:35;;;;37386:13;37405:17;;37223:23;37431:3;395:1631:39;;37401:28:35;;;;;37467:20;;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;-1:-1:-1;395:1631:39;;;;;;;;;;;;;37539:27:35;395:1631:39;;;37581:858:35;;37431:3;;;37223:23;37431:3;;395:1631:39;37386:13:35;;37581:858;38230:43;;;;:::i;:::-;395:1631:39;;;38308:11:35;-1:-1:-1;;;;;395:1631:39;;;;;;38308:32:35;;;;;395:1631:39;;-1:-1:-1;;;38308:32:35;;-1:-1:-1;;;;;395:1631:39;;37539:19:35;38308:32;;395:1631:39;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;-1:-1:-1;;38308:32:35;;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;38308:32:35;;37223:23;38308:32;;;;;37581:858;395:1631:39;;;;;;38363:61:35;37581:858;;;;38308:32;37165:1;38308:32;;;:::i;:::-;;;;395:1631:39;;;;37165:1:35;395:1631:39;;37539:19:35;395:1631:39;;37165:1:35;395:1631:39;37401:28:35;;;;;;;;;;36704:1751::o;37144:49::-;37186:7;;;;;:::o;37148:36::-;37170:14;;;37148:36;;7318:387:13;-1:-1:-1;;;;;395:1631:39;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;;;-1:-1:-1;;;;;395:1631:39;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;-1:-1:-1;;395:1631:39;;;;;966:10:16;;395:1631:39;-1:-1:-1;;;;;;;;;;;2399:26:36;7580:40:13;;395:1631:39;7580:40:13;7557:4;7634:11;:::o;7480:219::-;7676:12;395:1631:39;7676:12:13;:::o;7318:387::-;395:1631:39;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;966:10:16;;395:1631:39;;7580:40:13;;395:1631:39;7580:40:13;7557:4;7634:11;:::o;7942:388::-;395:1631:39;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;;;;;;;;;;;;;;;-1:-1:-1;;395:1631:39;;;966:10:16;;395:1631:39;;8205:40:13;;395:1631:39;8205:40:13;395:1631:39;8259:11:13;:::o;24659:2295:35:-;11931:35;;:::i;:::-;24812:22;;;395:1631:39;;;24865:12:35;24848:29;;24844:42;;24913:28;24865:12;;24913:28;:::i;:::-;395:1631:39;24987:1:35;395:1631:39;;;;;;;25371:19:35;;;395:1631:39;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;;25404:28:35;;;;24659:2295;25400:357;;24659:2295;24865:12;;;395:1631:39;;25882:22:35;;;395:1631:39;25878:26:35;25874:1074;;24659:2295;;;;:::o;25874:1074::-;395:1631:39;25924:22:35;;;395:1631:39;;25371:19:35;395:1631:39;;;;;24812:22:35;25924:56;;24812:22;;-1:-1:-1;;26085:17:35;;;395:1631:39;;;26235:19:35;;;;;26066:13;-1:-1:-1;26081:28:35;;;;;;25920:945;;;;;;;25874:1074;;;;;;26111:3;26155:20;;24987:1;26155:20;;;:::i;:::-;395:1631:39;;;;;;;;25371:19:35;395:1631:39;;;;;;;;;;-1:-1:-1;395:1631:39;;;;;;;-1:-1:-1;395:1631:39;26293:26:35;395:1631:39;26289:30:35;;26285:234;;26111:3;;;;;395:1631:39;26066:13:35;;26285:234;26364:35;;;:::i;:::-;395:1631:39;;;;;;26430:66:35;395:1631:39;24865:12:35;26430:66;;26285:234;;;;;;25920:945;395:1631:39;;;;-1:-1:-1;395:1631:39;24987:1:35;26561:56;26557:308;;25920:945;;;;;;26557:308;26724:31;;;:::i;:::-;395:1631:39;;;;;;26778:72:35;395:1631:39;24865:12:35;26778:72;;26557:308;;;;;25400:357;25448:54;25471:31;:22;;;;395:1631:39;25471:31:35;:::i;:::-;25448:54;;:::i;:::-;395:1631:39;;;25584:35:35;;;25580:167;25400:357;25580:167;395:1631:39;;;;;;;;;24865:12:35;25644:88;395:1631:39;24865:12:35;25644:88;;25580:167;;25400:357;;25404:28;25416:16;;;;25404:28;;24844:42;24879:7;;;:::o;53138:932::-;-1:-1:-1;;;;;395:1631:39;;53138:932:35;53320:20;;395:1631:39;;11931:35:35;;:::i;:::-;53474:17;;;53532:20;53474;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;53464:30:35;;;53532:20;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;;;;53603:27:35;:19;:27;395:1631:39;-1:-1:-1;395:1631:39;53603:19:35;395:1631:39;;;-1:-1:-1;395:1631:39;;;;;53645:55:35;:104;;;;53138:932;53641:134;;;;53810:25;;;;:49;;;53138:932;53806:235;;;54052:11;54059:4;53138:932;:::o;53806:235::-;395:1631:39;;-1:-1:-1;;;53898:68:35;;-1:-1:-1;;;53603:19:35;53898:68;;395:1631:39;;;53898:68:35;395:1631:39;53898:68:35;;;;;;;;395:1631:39;53898:68:35;;;53806:235;395:1631:39;53806:235:35;395:1631:39;;;;;;53603:19:35;395:1631:39;53898:68:35;395:1631:39;;53898:68:35;;;395:1631:39;53898:68:35;;395:1631:39;53898:68:35;;;;;;395:1631:39;53898:68:35;;;:::i;:::-;;;395:1631:39;;;;;;;;;;;;53898:68:35;;;;;;-1:-1:-1;53898:68:35;;53810:49;53839:20;;;;53810:49;;;53645:104;53704:26;;395:1631:39;53704:45:35;;-1:-1:-1;53645:104:35;;;;395:1631:39;;;;;;;;;;;;;;;;;;;;28289:936:35;11931:35;;:::i;:::-;28470:23;;;;395:1631:39;;;28455:12:35;:38;:12;;:38;:::i;:::-;28507:11;;;28503:47;;28470:23;395:1631:39;;;;;;;;28624:13:35;;28826:19;28643:17;;;28826:19;;28619:522;28669:3;395:1631:39;;28639:28:35;;;;;28705:20;;;;:::i;:::-;395:1631:39;;;;;;;;-1:-1:-1;;;;;395:1631:39;;28743:20:35;;28739:34;;395:1631:39;;;;;;;-1:-1:-1;395:1631:39;;;;;;-1:-1:-1;395:1631:39;;28871:35:35;28867:264;;28669:3;;;28470:23;28669:3;;28624:13;395:1631:39;28624:13:35;;28867:264;28943:40;;;;:::i;:::-;29001:11;-1:-1:-1;;;;;395:1631:39;;29001:32:35;;;;;395:1631:39;;-1:-1:-1;;;29001:32:35;;-1:-1:-1;;;;;395:1631:39;;28826:19:35;29001:32;;395:1631:39;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;-1:-1:-1;;29001:32:35;;;;;;;28470:23;29001:32;;;;;28867:264;395:1631:39;;;;;;-1:-1:-1;;;;;;;;;;;395:1631:39;28455:12:35;29056:60;;28867:264;;;;29001:32;395:1631:39;29001:32:35;;;:::i;:::-;;;;28739:34;28470:23;28765:8;;;;28639:28;;;;;;;28455:12;395:1631:39;;28455:12:35;28289:936;:::o;28503:47::-;-1:-1:-1;28520:30:35;;-1:-1:-1;;28520:30:35:o;2497:406:33:-;5197:14;;;395:1631:39;;;;;;;;;;;5197:26:33;2576:321;395:1631:39;;;;;-1:-1:-1;;;395:1631:39;;;;;;;;5197:14:33;395:1631:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5197:14:33;2832:11;:::o;3071:1368::-;;3266:14;;;395:1631:39;;;;;;;;;;;3302:13:33;;;3298:1135;3302:13;;;-1:-1:-1;;395:1631:39;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;;;3777:23:33;;;3773:378;;3298:1135;395:1631:39;;;;;;;;;-1:-1:-1;;395:1631:39;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3266:14:33;4368:11;:::o;3773:378::-;395:1631:39;3840:22:33;3961:23;3840:22;;;:::i;:::-;395:1631:39;;;;;;3961:23:33;;;;;:::i;395:1631:39:-;;;;;;;;;;;;3773:378:33;;;;;3298:1135;4410:12;;;;395:1631:39;4410:12:33;:::o;7082:141:15:-;395:1631:39;-1:-1:-1;;;;;;;;;;;395:1631:39;;;;7148:18:15;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:15;;-1:-1:-1;7189:17:15"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","GOVERNOR_ROLE()":"ccc57490","MILLION()":"32bc934c","OPERATOR_ROLE()":"f5b541a6","PAUSE_ROLE()":"389ed267","distributeIssuance()":"49bdfcb0","distributePendingIssuance()":"3af5b073","distributePendingIssuance(uint256)":"52c0e18c","exposedDistributePendingProportionally(uint256,uint256,uint256)":"e038978e","exposedDistributePendingWithFullRate(uint256,uint256,uint256,uint256)":"d48beb1b","forceTargetNoChangeNotificationBlock(address,uint256)":"7c92330b","getDistributionState()":"ee56977e","getIssuancePerBlock()":"79d5fc54","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","getRoleMembers(bytes32)":"a3246ad3","getSelfMintingEventMode()":"93c911a8","getTargetAllocation(address)":"84c48422","getTargetAt(uint256)":"87ee921c","getTargetCount()":"4a1293b7","getTargetData(address)":"48c3c62e","getTargetIssuancePerBlock(address)":"3067cb4c","getTargets()":"63fe3b56","getTotalAllocation()":"15d3b5d8","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address)":"c4d66de8","notifyTarget(address)":"4887693c","pause()":"8456cb59","paused()":"5c975abb","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setDefaultTarget(address)":"697cf322","setDefaultTarget(address,uint256)":"d012a15b","setIssuancePerBlock(uint256)":"1156bdc1","setIssuancePerBlock(uint256,uint256)":"c627b7a4","setSelfMintingEventMode(uint8)":"13a7855d","setTargetAllocation(address,uint256)":"443990fa","setTargetAllocation(address,uint256,uint256)":"647b3682","setTargetAllocation(address,uint256,uint256,uint256)":"c2cb3544","supportsInterface(bytes4)":"01ffc9a7","unpause()":"3f4ba83a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_graphToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultTarget\",\"type\":\"address\"}],\"name\":\"CannotSetAllocationForDefaultTarget\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"CannotSetDefaultToAllocatedTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GovernorCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GraphTokenCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllocationAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"oldRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unallocated\",\"type\":\"uint256\"}],\"name\":\"InsufficientUnallocatedForRateDecrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"TargetDoesNotSupportIIssuanceTarget\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxBlock\",\"type\":\"uint256\"}],\"name\":\"ToBlockOutOfRange\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"DefaultTargetUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"}],\"name\":\"IssuanceDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldIssuancePerBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newIssuancePerBlock\",\"type\":\"uint256\"}],\"name\":\"IssuancePerBlockUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"}],\"name\":\"IssuanceSelfMintAllowance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"}],\"name\":\"IssuanceSelfMintAllowanceAggregate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum SelfMintingEventMode\",\"name\":\"oldMode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum SelfMintingEventMode\",\"name\":\"newMode\",\"type\":\"uint8\"}],\"name\":\"SelfMintingEventModeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offsetBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offsetAfter\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"}],\"name\":\"SelfMintingOffsetAccumulated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offsetBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offsetAfter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalForPeriod\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"}],\"name\":\"SelfMintingOffsetReconciled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAllocatorMintingRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSelfMintingRate\",\"type\":\"uint256\"}],\"name\":\"TargetAllocationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOVERNOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MILLION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributeIssuance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributePendingIssuance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"toBlockNumber\",\"type\":\"uint256\"}],\"name\":\"distributePendingIssuance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatedRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlockNumber\",\"type\":\"uint256\"}],\"name\":\"exposedDistributePendingProportionally\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatedTotal\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlockNumber\",\"type\":\"uint256\"}],\"name\":\"exposedDistributePendingWithFullRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"forceTargetNoChangeNotificationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDistributionState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastDistributionBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastSelfMintingBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingOffset\",\"type\":\"uint256\"}],\"internalType\":\"struct DistributionState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getIssuancePerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSelfMintingEventMode\",\"outputs\":[{\"internalType\":\"enum SelfMintingEventMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetAllocation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalAllocationRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Allocation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getTargetAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTargetCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeNotifiedBlock\",\"type\":\"uint256\"}],\"internalType\":\"struct AllocationTarget\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"getTargetIssuancePerBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"allocatorIssuanceRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatorIssuanceBlockAppliedTo\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfIssuanceRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfIssuanceBlockAppliedTo\",\"type\":\"uint256\"}],\"internalType\":\"struct TargetIssuancePerBlock\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTargets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalAllocation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalAllocationRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Allocation\",\"name\":\"allocation\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governor\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"notifyTarget\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setDefaultTarget\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minDistributedBlock\",\"type\":\"uint256\"}],\"name\":\"setDefaultTarget\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newIssuancePerBlock\",\"type\":\"uint256\"}],\"name\":\"setIssuancePerBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newIssuancePerBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDistributedBlock\",\"type\":\"uint256\"}],\"name\":\"setIssuancePerBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum SelfMintingEventMode\",\"name\":\"newMode\",\"type\":\"uint8\"}],\"name\":\"setSelfMintingEventMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIssuanceTarget\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"}],\"name\":\"setTargetAllocation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIssuanceTarget\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"}],\"name\":\"setTargetAllocation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIssuanceTarget\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allocatorMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"selfMintingRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDistributedBlock\",\"type\":\"uint256\"}],\"name\":\"setTargetAllocation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"This contract allows direct testing of internal distribution functions to achieve 100% coverage\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"CannotSetAllocationForDefaultTarget(address)\":[{\"params\":{\"defaultTarget\":\"The address of the default target\"}}],\"CannotSetDefaultToAllocatedTarget(address)\":[{\"params\":{\"target\":\"The target address that already has an allocation\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InsufficientAllocationAvailable(uint256,uint256)\":[{\"params\":{\"available\":\"The available budget for this target\",\"requested\":\"The total requested allocation (allocator + self minting)\"}}],\"InsufficientUnallocatedForRateDecrease(uint256,uint256,uint256)\":[{\"params\":{\"newRate\":\"The proposed new issuance rate\",\"oldRate\":\"The current issuance rate\",\"unallocated\":\"The unallocated budget available to absorb the decrease\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"TargetDoesNotSupportIIssuanceTarget(address)\":[{\"params\":{\"target\":\"The target address that doesn't support the interface\"}}],\"ToBlockOutOfRange(uint256,uint256,uint256)\":[{\"params\":{\"maxBlock\":\"The maximum valid block number (current block)\",\"minBlock\":\"The minimum valid block number (lastDistributionBlock)\",\"toBlock\":\"The invalid block number provided\"}}]},\"events\":{\"DefaultTargetUpdated(address,address)\":{\"params\":{\"newAddress\":\"The new default target address\",\"oldAddress\":\"The previous default target address\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"IssuanceDistributed(address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of tokens distributed\",\"fromBlock\":\"First block included in this distribution (inclusive)\",\"target\":\"The address of the target that received issuance\",\"toBlock\":\"Last block included in this distribution (inclusive). Range is [fromBlock, toBlock]\"}},\"IssuancePerBlockUpdated(uint256,uint256)\":{\"params\":{\"newIssuancePerBlock\":\"The new issuance per block amount\",\"oldIssuancePerBlock\":\"The previous issuance per block amount\"}},\"IssuanceSelfMintAllowance(address,uint256,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of tokens available for self-minting\",\"fromBlock\":\"First block included in this allowance period (inclusive)\",\"target\":\"The address of the target with self-minting allocation\",\"toBlock\":\"Last block included in this allowance period (inclusive). Range is [fromBlock, toBlock]\"}},\"IssuanceSelfMintAllowanceAggregate(uint256,uint256,uint256)\":{\"details\":\"This event is emitted when selfMintingEventMode is Aggregate, providing a single event instead of per-target events to reduce gas costs\",\"params\":{\"fromBlock\":\"First block included in this allowance period (inclusive)\",\"toBlock\":\"Last block included in this allowance period (inclusive)\",\"totalAmount\":\"The total amount of tokens available for self-minting across all targets\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SelfMintingEventModeUpdated(uint8,uint8)\":{\"params\":{\"newMode\":\"The new event emission mode\",\"oldMode\":\"The previous event emission mode\"}},\"SelfMintingOffsetAccumulated(uint256,uint256,uint256,uint256)\":{\"details\":\"This event provides visibility into offset growth during pause periods or while catching up after unpause. Together with SelfMintingOffsetReconciled, provides complete accounting of all offset changes.\",\"params\":{\"fromBlock\":\"First block in the accumulation period (inclusive)\",\"offsetAfter\":\"The self-minting offset after accumulation\",\"offsetBefore\":\"The self-minting offset before accumulation\",\"toBlock\":\"Last block in the accumulation period (inclusive)\"}},\"SelfMintingOffsetReconciled(uint256,uint256,uint256,uint256,uint256)\":{\"details\":\"This event provides visibility into the accounting reconciliation between self-minting and allocator-minting budgets during pending distribution. When offsetAfter is 0, the contract has fully caught up with distribution. When offsetAfter > 0, there remains accumulated offset that will be applied to future distributions.\",\"params\":{\"fromBlock\":\"First block in the distribution period (inclusive)\",\"offsetAfter\":\"The self-minting offset after reconciliation (0 when caught up to current block)\",\"offsetBefore\":\"The self-minting offset before reconciliation\",\"toBlock\":\"Last block in the distribution period (inclusive)\",\"totalForPeriod\":\"The total issuance budget for the distributed period\"}},\"TargetAllocationUpdated(address,uint256,uint256)\":{\"params\":{\"newAllocatorMintingRate\":\"The new allocator-minting rate (tokens per block) for the target\",\"newSelfMintingRate\":\"The new self-minting rate (tokens per block) for the target\",\"target\":\"The address of the target whose allocation was updated\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"params\":{\"_graphToken\":\"Address of the Graph Token contract\"}},\"distributeIssuance()\":{\"details\":\"Implementation details: - For allocator-minting targets, tokens are minted and transferred directly to targets based on their allocation rate - For self-minting targets (like the legacy RewardsManager), it does not mint tokens directly. Instead, these contracts are expected to handle minting themselves - The self-minting allocation is intended only for backwards compatibility with existing contracts and should not be used for new targets. New targets should use allocator-minting allocation to ensure robust control of token issuance by the IssuanceAllocatorPause behavior: - When paused: Self-minting allowances tracked via events/accumulation, but no allocator-minting tokens distributed.   Returns lastDistributionBlock (frozen at pause point). lastSelfMintingBlock advances to current block. - When unpaused: Normal distribution if no accumulated self-minting, otherwise retroactive distribution   using current rates for entire undistributed period, with accumulated self-minting reducing allocator budget. - Unless paused, always advances lastDistributionBlock to block.number, even if no issuance to distribute.Reentrancy: This function intentionally does NOT have a reentrancy guard to allow targets to legitimately call it during notifications (e.g., to claim pending issuance before their allocation changes). This is safe because the function has built-in block-tracking protection that prevents double-distribution within the same block, makes no external calls that could expose inconsistent state, and does not modify allocations.\",\"returns\":{\"_0\":\"Block number that issuance has been distributed to. That will normally be the current block number, unless the contract is paused.\"}},\"distributePendingIssuance()\":{\"details\":\"Distributes accumulated allocator-minting issuance using current rates (retroactively applied to the period from lastDistributionBlock to current block). Prioritizes non-default targets getting full rates; default gets remainder.Finalizes self-minting accumulation for the period being distributed.\",\"returns\":{\"_0\":\"Block number that issuance was distributed up to\"}},\"distributePendingIssuance(uint256)\":{\"details\":\"Distributes accumulated allocator-minting issuance using current rates (retroactively applied to the period from lastDistributionBlock to toBlockNumber). Prioritizes non-default targets getting full rates; default gets remainder.Finalizes self-minting accumulation for the period being distributed.\",\"params\":{\"toBlockNumber\":\"Block number to distribute up to (must be <= block.number and >= lastDistributionBlock)\"},\"returns\":{\"_0\":\"Block number that issuance was distributed up to\"}},\"exposedDistributePendingProportionally(uint256,uint256,uint256)\":{\"details\":\"Allows testing of defensive checks and edge cases\",\"params\":{\"allocatedRate\":\"Total rate allocated to non-default targets\",\"available\":\"Total available allocator-minting budget for the period\",\"toBlockNumber\":\"Block number distributing to\"}},\"exposedDistributePendingWithFullRate(uint256,uint256,uint256,uint256)\":{\"details\":\"Allows testing of edge cases in full rate distribution\",\"params\":{\"allocatedTotal\":\"Total amount allocated to non-default targets at full rate\",\"available\":\"Total available allocator-minting budget for the period\",\"blocks\":\"Number of blocks in the distribution period\",\"toBlockNumber\":\"Block number distributing to\"}},\"forceTargetNoChangeNotificationBlock(address,uint256)\":{\"details\":\"Implementation details: - This can be used to enable notification to be sent again (by setting to a past block) or to prevent notification until a future block (by setting to current or future block) - Returns the block number that was set, always equal to blockNumber in current implementation\",\"params\":{\"blockNumber\":\"Block number to set as the lastChangeNotifiedBlock\",\"target\":\"Address of the target to update\"},\"returns\":{\"_0\":\"The block number that was set\"}},\"getDistributionState()\":{\"returns\":{\"_0\":\"DistributionState struct containing block tracking and accumulation info\"}},\"getIssuancePerBlock()\":{\"returns\":{\"_0\":\"The current issuance per block\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"getSelfMintingEventMode()\":{\"returns\":{\"_0\":\"The current emission mode\"}},\"getTargetAllocation(address)\":{\"details\":\"Returns assigned allocation regardless of whether target is address(0) or the default.For address(0), no minting occurs but the allocation represents the unallocated portion.For effective allocations excluding unmintable portion, use getTotalAllocation().\",\"params\":{\"target\":\"Address of the target\"},\"returns\":{\"_0\":\"Allocation struct containing total, allocator-minting, and self-minting allocations\"}},\"getTargetAt(uint256)\":{\"params\":{\"index\":\"The index of the target address to retrieve\"},\"returns\":{\"_0\":\"The target address at the specified index\"}},\"getTargetCount()\":{\"returns\":{\"_0\":\"The total number of allocated targets\"}},\"getTargetData(address)\":{\"params\":{\"target\":\"Address of the target\"},\"returns\":{\"_0\":\"AllocationTarget struct containing target information including lastChangeNotifiedBlock\"}},\"getTargetIssuancePerBlock(address)\":{\"details\":\"Returns assigned issuance rates regardless of whether target is address(0) or the default.For address(0), no minting occurs but rates reflect what would be issued if mintable.selfIssuanceBlockAppliedTo reflects the last block for which self-minting allowances have been calculated and emitted (lastSelfMintingBlock). This advances continuously, unaffected by pause state.\",\"params\":{\"target\":\"Address of the target\"},\"returns\":{\"_0\":\"TargetIssuancePerBlock struct containing allocatorIssuanceBlockAppliedTo, selfIssuanceBlockAppliedTo, allocatorIssuanceRate, and selfIssuanceRate\"}},\"getTargets()\":{\"returns\":{\"_0\":\"Array of target addresses\"}},\"getTotalAllocation()\":{\"details\":\"For reporting purposes, if the default target is address(0), its allocationis treated as \\\"unallocated\\\" since address(0) cannot receive minting.When default is address(0): returns actual allocated amounts (may be less than issuancePerBlock)When default is a real address: returns issuancePerBlockNote: Internally, the contract always maintains 100% allocation invariant, even when default is address(0)\",\"returns\":{\"allocation\":\"Allocation struct containing total, allocator-minting, and self-minting allocations across all targets\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address)\":{\"details\":\"Initializes with a default target at index 0 set to address(0)Default target will receive all unallocated issuance (initially 0 until rate is set)lastDistributionBlock is set to block.number as a safety guard against pausing before configuration. lastSelfMintingBlock defaults to 0. issuancePerBlock is 0. Once setIssuancePerBlock() is called, it triggers _distributeIssuance() which updates lastDistributionBlock to current block, establishing the starting point for issuance tracking.selfMintingEventMode is initialized to PerTarget\",\"params\":{\"_governor\":\"Address that will have the GOVERNOR_ROLE\"}},\"notifyTarget(address)\":{\"details\":\"Implementation details: - The target will be notified at most once per block to prevent reentrancy looping - Will revert if target notification reverts\",\"params\":{\"target\":\"Address of the target to notify\"},\"returns\":{\"_0\":\"True if notification was sent or already sent this block, false otherwise\"}},\"pause()\":{\"details\":\"Pauses contract operations. Only functions using whenNotPaused modifier will be affected.\"},\"paused()\":{\"returns\":{\"_0\":\"True if the contract is paused, false otherwise\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setDefaultTarget(address)\":{\"params\":{\"newAddress\":\"The new default target address (can be address(0))\"},\"returns\":{\"_0\":\"True if applied\"}},\"setDefaultTarget(address,uint256)\":{\"details\":\"Governance should explicitly call distributePendingIssuance(blockNumber) first if paused and distribution is not up to minDistributedBlock block. then call this function with the same or lower blockNumber.\",\"params\":{\"minDistributedBlock\":\"Minimum block number that distribution must have reached\",\"newAddress\":\"The new default target address (can be address(0))\"},\"returns\":{\"_0\":\"True if applied, false if distribution has not reached minDistributedBlock and therefore the change was not applied\"}},\"setIssuancePerBlock(uint256)\":{\"details\":\"Requires distribution to have reached block.number\",\"params\":{\"newIssuancePerBlock\":\"New issuance per block\"},\"returns\":{\"_0\":\"True if the value is applied (including if already the case)\"}},\"setIssuancePerBlock(uint256,uint256)\":{\"details\":\"Implementation details: - Requires distribution to have reached at least minDistributedBlock - This allows configuration changes after calling distributePendingIssuance(blockNumber) while paused - Only the default target is notified (target rates don't change, only default target changes) - Target rates stay fixed; default target absorbs the change - Whenever the rate is changed, the updateL2MintAllowance function _must_ be called on the L1GraphTokenGateway in L1, to ensure the bridge can mint the right amount of tokensRate changes while paused: The new rate applies retroactively to the entire undistributed period when distribution resumes. Governance must exercise caution to ensure rates are applied to the correct block range. Use distributePendingIssuance(blockNumber) to control precisely which block the new rate applies from.\",\"params\":{\"minDistributedBlock\":\"Minimum block number that distribution must have reached\",\"newIssuancePerBlock\":\"New issuance per block\"},\"returns\":{\"_0\":\"True if the value is applied (including if already the case), false if distribution hasn't reached minDistributedBlock\"}},\"setSelfMintingEventMode(uint8)\":{\"details\":\"None: Skip event emission entirely (lowest gas)Aggregate: Emit single aggregated event for all self-minting (medium gas)PerTarget: Emit events for each target with self-minting (highest gas)Self-minting targets should call getTargetIssuancePerBlock() rather than relying on events\",\"params\":{\"newMode\":\"The new emission mode (None, Aggregate, or PerTarget)\"},\"returns\":{\"_0\":\"True if the mode was set (including if already set to that mode)\"}},\"setTargetAllocation(address,uint256)\":{\"details\":\"This variant sets selfMintingRate to 0 and evenIfDistributionPending to false\",\"params\":{\"allocatorMintingRate\":\"Allocator-minting rate for the target (tokens per block)\",\"target\":\"The target contract to update\"},\"returns\":{\"_0\":\"True if the value is applied (including if already the case), false if not applied\"}},\"setTargetAllocation(address,uint256,uint256)\":{\"details\":\"This variant sets evenIfDistributionPending to false\",\"params\":{\"allocatorMintingRate\":\"Allocator-minting rate for the target (tokens per block)\",\"selfMintingRate\":\"Self-minting rate for the target (tokens per block)\",\"target\":\"The target contract to update\"},\"returns\":{\"_0\":\"True if the value is applied (including if already the case), false if not applied\"}},\"setTargetAllocation(address,uint256,uint256,uint256)\":{\"details\":\"Implementation details: - Requires distribution has reached at least minDistributedBlock issuance to change allocation - This allows configuration changes while paused by being deliberate about which block to distribute to - If the new allocations are the same as the current allocations, this function is a no-op - If both allocations are 0 and the target doesn't exist, this function is a no-op - If both allocations are 0 and the target exists, the target will be removed - If any allocation is non-zero and the target doesn't exist, the target will be added - Will revert if the total allocation would exceed available capacity (default target + current target allocation) - Will revert if attempting to add a target that doesn't support IIssuanceTargetSelf-minting targets must call getTargetIssuancePerBlock to determine their issuance and mint accordingly. See contract header for details on self-minting vs allocator-minting allocation.\",\"params\":{\"allocatorMintingRate\":\"Allocator-minting rate for the target (tokens per block)\",\"minDistributedBlock\":\"Minimum block number that distribution must have reached\",\"selfMintingRate\":\"Self-minting rate for the target (tokens per block)\",\"target\":\"The target contract to update\"},\"returns\":{\"_0\":\"True if the value is applied (including if already the case), false if distribution hasn't reached minDistributedBlock and therefore the change was not applied\"}},\"supportsInterface(bytes4)\":{\"details\":\"Supports the four IssuanceAllocator sub-interfaces\"},\"unpause()\":{\"details\":\"Resumes contract operations. Only functions using whenPaused modifier will be affected.\"}},\"title\":\"IssuanceAllocatorTestHarness\",\"version\":1},\"userdoc\":{\"errors\":{\"CannotSetAllocationForDefaultTarget(address)\":[{\"notice\":\"Thrown when attempting to set allocation for the default target\"}],\"CannotSetDefaultToAllocatedTarget(address)\":[{\"notice\":\"Thrown when attempting to set default target address to a normally allocated target\"}],\"GovernorCannotBeZeroAddress()\":[{\"notice\":\"Thrown when attempting to set the governor to the zero address\"}],\"GraphTokenCannotBeZeroAddress()\":[{\"notice\":\"Thrown when attempting to set the Graph Token to the zero address\"}],\"InsufficientAllocationAvailable(uint256,uint256)\":[{\"notice\":\"Thrown when the total allocation would exceed available budget\"}],\"InsufficientUnallocatedForRateDecrease(uint256,uint256,uint256)\":[{\"notice\":\"Thrown when attempting to decrease issuance rate without sufficient unallocated budget\"}],\"TargetAddressCannotBeZero()\":[{\"notice\":\"Thrown when attempting to add a target with zero address\"}],\"TargetDoesNotSupportIIssuanceTarget(address)\":[{\"notice\":\"Thrown when a target does not support the IIssuanceTarget interface\"}],\"ToBlockOutOfRange(uint256,uint256,uint256)\":[{\"notice\":\"Thrown when toBlockNumber is out of valid range for accumulation\"}]},\"events\":{\"DefaultTargetUpdated(address,address)\":{\"notice\":\"Emitted when the default target is updated\"},\"IssuanceDistributed(address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when issuance is distributed to a target\"},\"IssuancePerBlockUpdated(uint256,uint256)\":{\"notice\":\"Emitted when the issuance per block is updated\"},\"IssuanceSelfMintAllowance(address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when self-minting allowance is calculated for a target\"},\"IssuanceSelfMintAllowanceAggregate(uint256,uint256,uint256)\":{\"notice\":\"Emitted when self-minting allowance is calculated in aggregate mode\"},\"SelfMintingEventModeUpdated(uint8,uint8)\":{\"notice\":\"Emitted when self-minting event mode is changed\"},\"SelfMintingOffsetAccumulated(uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when self-minting offset accumulates during pause or catch-up\"},\"SelfMintingOffsetReconciled(uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when self-minting offset is reconciled during pending distribution\"},\"TargetAllocationUpdated(address,uint256,uint256)\":{\"notice\":\"Emitted when a target's allocation is updated\"}},\"kind\":\"user\",\"methods\":{\"GOVERNOR_ROLE()\":{\"notice\":\"Role identifier for governor accounts\"},\"MILLION()\":{\"notice\":\"One million - used as the denominator for values provided as Parts Per Million (PPM)\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role identifier for operator accounts\"},\"PAUSE_ROLE()\":{\"notice\":\"Role identifier for pause accounts\"},\"constructor\":{\"notice\":\"Constructor for the test harness\"},\"distributeIssuance()\":{\"notice\":\"Distribute issuance to allocated non-self-minting targets.\"},\"distributePendingIssuance()\":{\"notice\":\"Distribute pending accumulated allocator-minting issuance\"},\"distributePendingIssuance(uint256)\":{\"notice\":\"Distribute pending accumulated allocator-minting issuance up to specified block\"},\"exposedDistributePendingProportionally(uint256,uint256,uint256)\":{\"notice\":\"Exposes _distributePendingProportionally for testing\"},\"exposedDistributePendingWithFullRate(uint256,uint256,uint256,uint256)\":{\"notice\":\"Exposes _distributePendingWithFullRate for testing\"},\"forceTargetNoChangeNotificationBlock(address,uint256)\":{\"notice\":\"Force set the lastChangeNotifiedBlock for a target to a specific block number\"},\"getDistributionState()\":{\"notice\":\"Get pending issuance distribution state\"},\"getIssuancePerBlock()\":{\"notice\":\"Get the current issuance per block\"},\"getSelfMintingEventMode()\":{\"notice\":\"Get the current self-minting event emission mode\"},\"getTargetAllocation(address)\":{\"notice\":\"Get the current allocation for a target\"},\"getTargetAt(uint256)\":{\"notice\":\"Get a specific allocated target address by index\"},\"getTargetCount()\":{\"notice\":\"Get the number of allocated targets\"},\"getTargetData(address)\":{\"notice\":\"Get target data for a specific target\"},\"getTargetIssuancePerBlock(address)\":{\"notice\":\"Target issuance per block information\"},\"getTargets()\":{\"notice\":\"Get all allocated target addresses\"},\"getTotalAllocation()\":{\"notice\":\"Get the current global allocation totals\"},\"initialize(address)\":{\"notice\":\"Initialize the IssuanceAllocator contract\"},\"notifyTarget(address)\":{\"notice\":\"Notify a specific target about an upcoming allocation change\"},\"pause()\":{\"notice\":\"Pause the contract\"},\"paused()\":{\"notice\":\"Check if the contract is currently paused\"},\"setDefaultTarget(address)\":{\"notice\":\"Set the address that receives the default portion of issuance not allocated to other targets\"},\"setDefaultTarget(address,uint256)\":{\"notice\":\"Set the address that receives the default portion of issuance not allocated to other targets\"},\"setIssuancePerBlock(uint256)\":{\"notice\":\"Set the issuance per block.\"},\"setIssuancePerBlock(uint256,uint256)\":{\"notice\":\"Set the issuance per block, requiring distribution has reached at least the specified block\"},\"setSelfMintingEventMode(uint8)\":{\"notice\":\"Set the self-minting event emission mode\"},\"setTargetAllocation(address,uint256)\":{\"notice\":\"Set the allocation for a target with only allocator minting\"},\"setTargetAllocation(address,uint256,uint256)\":{\"notice\":\"Set the allocation for a target with both allocator and self minting\"},\"setTargetAllocation(address,uint256,uint256,uint256)\":{\"notice\":\"Set the allocation for a target, provided distribution has reached at least the specified block\"},\"unpause()\":{\"notice\":\"Unpause the contract\"}},\"notice\":\"Test harness to expose internal functions for white-box testing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/test/allocate/IssuanceAllocatorTestHarness.sol\":\"IssuanceAllocatorTestHarness\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol\":{\"keccak256\":\"0xb4d95a9c0ce489cd8df7f047dcbfc19c4a4ec9d05878b2bef4f3abd5fa4e91ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7923e80806cfbf8cf9d78c4de574b7e0a6c9f87b81702303b7170adf935ffb5c\",\"dweb:/ipfs/QmVVLV3jzxjS3HoRyg1C9hHcnWqV8ux1QaEwZgFKXrDu1X\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationData.sol\":{\"keccak256\":\"0x4c01f32e6a019dd5f8c3946b652c947a6cf05f9a4542328b3329a49f06b47181\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e0db23b187a7b8b7263a9781f97bef15616df4d66fea2dc72541e6592bc18d73\",\"dweb:/ipfs/QmdJZhN1o8yc2yQjPKZrgySCdMUF6UeoprEbyvKtYTmnyw\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol\":{\"keccak256\":\"0x6927a5d307ac841444e03af363c41c7ba032693074614f0e3ee1e25c6f8789e1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://906d824aa38a6e6daa83f34cdfc1d9b0a9ff5f895b4a2083b9a7b7d5d8285397\",\"dweb:/ipfs/QmZCCSW7Nxtf3tLPnHazMhsyDPBBiAHqfzceGdb6CFNNEJ\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationStatus.sol\":{\"keccak256\":\"0xdeeda74ab0868b7dc38bb7719c09394fe4d652532978dfdbb72320486190bb29\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7bffd43fb18d81fea035b60f11a450806bef79221c22b92be72e9d23d9920f89\",\"dweb:/ipfs/QmbSBpkAhYb5Zm3ZPDPaHrqupTXu1sP2SY99NUGgvYeGXt\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol\":{\"keccak256\":\"0x5054506b182f49cece8bd7bab5f1d06a7b9d8def75b6c02aecd623aa3bf728cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://48a35b7e89144bc7e9e3d94269d661109775777bd8bcfb013ebd794f6629798a\",\"dweb:/ipfs/Qmbnzo8kVX42WfwkpL8nTZAEB7LTtSCR5xBf97SZbte9XJ\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol\":{\"keccak256\":\"0x4072d8fb200c3f5f1c7dd296c8e3b816d372c7f02ccde3c1e7efe0828a379dab\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e455b77e7a53046d94720f6fd0229b47e0bbf8d6bb43c291af39a8a8dccb34b5\",\"dweb:/ipfs/QmXVP248rUtadhed7BrNpUXQXjh99B9U73JcWF8LBdZLQV\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol\":{\"keccak256\":\"0xb60ae62d0ab5cb8a9d06b922f036500e2fc5f0a491ea3322df6db8124ffd1a6a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://25404feafd215b17a25d71661d308ad19c6604f2f32b2447b1337e60974934cb\",\"dweb:/ipfs/QmYyQVQaU5fdfqgbQ1CQXVkBZhW53FiZBC79E42cWEEjnJ\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0x52d72be5f7529846ba76aacf0c49de92bde89a5203b6fbc3919e7384c0df0905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d5e789d39c6623db24d427ca8380978f44cc736070e2ac3ee19f88095c43b17\",\"dweb:/ipfs/QmSzyMMTnZrUWY2e4B2U3VE2fjz8AFawhk7jex8SPW1eT2\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xbc97d8c0d67d4d7eba1e662f0a8671712ace9e060ab03af547c4bb321aec1d8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://890d156f50630d52c7be57d7e0499132d6fd92b2e1365b81531f4463b3304377\",\"dweb:/ipfs/QmUHe9uL1ciePH2pQg7wdrgTAFRZWjcpBEAg8V1UNtXutd\"]},\"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0xe56ff5015046505f81f9d62671a784e933dd099db4c3a8fa8de598f20af2c5a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://355863359b4a250f7016836ef9a9672578e898503896f70a0d42b80141586f3e\",\"dweb:/ipfs/QmXXzvoMSFNQf8nRbcyRap5qzcbekWuzbXDY5C8f68JiG3\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"project/contracts/allocate/IssuanceAllocator.sol\":{\"keccak256\":\"0x92a7c7222c0fb46810379bad60580c696211a503eaeb9493f959cfc8bd15c0bb\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://777fc3a30931a34863ec9eccb5d0e1b4f501776a7d123924a541085d63142cc7\",\"dweb:/ipfs/QmcGV8gbi6L46PrN85crur8BBnu8eo44qiUTXYVbXBEqeP\"]},\"project/contracts/common/BaseUpgradeable.sol\":{\"keccak256\":\"0x78604bc34c8f141aeae60c342c88d3665ceb74787f9becfcb4847247cff4e79e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://28bd9105960c7c3769d5c27d8ba2d78afe8d55bd4baaccc9dcc0c26468e719ae\",\"dweb:/ipfs/QmSojY3oUAxUieyr67ggKdP2jdbfBQDsexkTdWt4t7jTM6\"]},\"project/contracts/common/IGraphToken.sol\":{\"keccak256\":\"0xfdc400179050b90ce5170c12bcadb22de1b0a7b22add8c5d72a9e3dfa1ccaad1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a0e3d4d02da94e103036a64a4d549efaa04289997cfbc039e415917615050f44\",\"dweb:/ipfs/QmYq7oDWg33TBmJa9FcXNdovANgP1X2dnidcCaDFrgzX4J\"]},\"project/contracts/test/allocate/IssuanceAllocatorTestHarness.sol\":{\"keccak256\":\"0xd55ba1f85d59e9eda7abe24660cc84fe8e806fad82d46dcbdcb46881a3d03539\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d7879113b78b3602f6325a6658124232c491d2557d601b5365be613df35b3240\",\"dweb:/ipfs/QmSWFPG87SeDGhv2eS4UuNe5bnwecgbPvisM3QmvrqjjAg\"]}},\"version\":1}"}},"project/contracts/test/allocate/MockERC165.sol":{"MockERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608080604052346013576090908160188239f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c6301ffc9a7146023575f80fd5b3460565760203660031901126056576004359063ffffffff60e01b82168092036056576020916301ffc9a760e01b148152f35b5f80fdfea2646970667358221220a7b279ffc830bc81d63446d199a0dca1ec4355940d0ec73c06616d2fbfffac9264736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x13 JUMPI PUSH1 0x90 SWAP1 DUP2 PUSH1 0x18 DUP3 CODECOPY RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x1FFC9A7 EQ PUSH1 0x23 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x56 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x56 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH1 0x56 JUMPI PUSH1 0x20 SWAP2 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0xB2 PUSH26 0xFFC830BC81D63446D199A0DCA1EC4355940D0EC73C06616D2FBF SELFDESTRUCT 0xAC SWAP3 PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"355:229:40:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60808060405260043610156011575f80fd5b5f3560e01c6301ffc9a7146023575f80fd5b3460565760203660031901126056576004359063ffffffff60e01b82168092036056576020916301ffc9a760e01b148152f35b5f80fdfea2646970667358221220a7b279ffc830bc81d63446d199a0dca1ec4355940d0ec73c06616d2fbfffac9264736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x1FFC9A7 EQ PUSH1 0x23 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x56 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x56 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH1 0x56 JUMPI PUSH1 0x20 SWAP2 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0xB2 PUSH26 0xFFC830BC81D63446D199A0DCA1EC4355940D0EC73C06616D2FBF SELFDESTRUCT 0xAC SWAP3 PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"355:229:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;355:229:40;;;;;;;;;;;;;;;;;;550:25;355:229;550:25;;535:40;355:229;;;;;;"},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"Minimal implementation of IERC165 for testing\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"MockERC165\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Used to test interface validation - supports only ERC165, not specific interfaces\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/test/allocate/MockERC165.sol\":\"MockERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"project/contracts/test/allocate/MockERC165.sol\":{\"keccak256\":\"0x7c967328fe421291014269ba2e5136230a9879579574bd22b49809d062172819\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://085ef65324bccb9ff0e4fa596d9f11edb5fab4c0933ae777b42cca21b867d0d4\",\"dweb:/ipfs/QmXokZf8it8RBE68Vae3fUZveWVpSk8vBowwgmyHLjQpCc\"]}},\"version\":1}"}},"project/contracts/test/allocate/MockNotificationTracker.sol":{"MockNotificationTracker":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldIssuanceAllocator","type":"address"},{"indexed":true,"internalType":"address","name":"newIssuanceAllocator","type":"address"}],"name":"IssuanceAllocatorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"count","type":"uint256"}],"name":"NotificationReceived","type":"event"},{"inputs":[],"name":"beforeIssuanceAllocationChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastNotificationBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notificationCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resetNotificationCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_issuanceAllocator","type":"address"}],"name":"setIssuanceAllocator","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608080604052346015576101c1908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610138575080633df8d682146100d95780636251b205146100bc57806371342f0c146100a0578063931c0ac11461007b5763cbe3fe621461005e575f80fd5b34610077575f366003190112610077575f808055600155005b5f80fd5b34610077576020366003190112610077576004356001600160a01b0381160361007757005b34610077575f3660031901126100775760205f54604051908152f35b34610077575f366003190112610077576020600154604051908152f35b34610077575f366003190112610077575f545f19811461012457600101805f5543600155437fd30d8d39ed9738fcbc30cabdfaaed97ab3319ec0f3ae4488a9b3e408a507b1c65f80a3005b634e487b7160e01b5f52601160045260245ffd5b34610077576020366003190112610077576004359063ffffffff60e01b82168092036100775760209163aee4dc4360e01b811490811561017a575b5015158152f35b6301ffc9a760e01b1490508361017356fea264697066735822122047233f1cf79ff177997d2485f293e8ad8f74a81484c5e358af2e0a6760a37ac364736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x1C1 SWAP1 DUP2 PUSH2 0x1A DUP3 CODECOPY RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x138 JUMPI POP DUP1 PUSH4 0x3DF8D682 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x6251B205 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x71342F0C EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x931C0AC1 EQ PUSH2 0x7B JUMPI PUSH4 0xCBE3FE62 EQ PUSH2 0x5E JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH0 DUP1 DUP1 SSTORE PUSH1 0x1 SSTORE STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x77 JUMPI STOP JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH1 0x20 PUSH0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH1 0x20 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH0 SLOAD PUSH0 NOT DUP2 EQ PUSH2 0x124 JUMPI PUSH1 0x1 ADD DUP1 PUSH0 SSTORE NUMBER PUSH1 0x1 SSTORE NUMBER PUSH32 0xD30D8D39ED9738FCBC30CABDFAAED97AB3319EC0F3AE4488A9B3E408A507B1C6 PUSH0 DUP1 LOG3 STOP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0x77 JUMPI PUSH1 0x20 SWAP2 PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x17A JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0x173 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE 0x23 EXTCODEHASH SHR 0xF7 SWAP16 CALL PUSH24 0x997D2485F293E8AD8F74A81484C5E358AF2E0A6760A37AC3 PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"446:1409:41:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610138575080633df8d682146100d95780636251b205146100bc57806371342f0c146100a0578063931c0ac11461007b5763cbe3fe621461005e575f80fd5b34610077575f366003190112610077575f808055600155005b5f80fd5b34610077576020366003190112610077576004356001600160a01b0381160361007757005b34610077575f3660031901126100775760205f54604051908152f35b34610077575f366003190112610077576020600154604051908152f35b34610077575f366003190112610077575f545f19811461012457600101805f5543600155437fd30d8d39ed9738fcbc30cabdfaaed97ab3319ec0f3ae4488a9b3e408a507b1c65f80a3005b634e487b7160e01b5f52601160045260245ffd5b34610077576020366003190112610077576004359063ffffffff60e01b82168092036100775760209163aee4dc4360e01b811490811561017a575b5015158152f35b6301ffc9a760e01b1490508361017356fea264697066735822122047233f1cf79ff177997d2485f293e8ad8f74a81484c5e358af2e0a6760a37ac364736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x138 JUMPI POP DUP1 PUSH4 0x3DF8D682 EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x6251B205 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x71342F0C EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x931C0AC1 EQ PUSH2 0x7B JUMPI PUSH4 0xCBE3FE62 EQ PUSH2 0x5E JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH0 DUP1 DUP1 SSTORE PUSH1 0x1 SSTORE STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x77 JUMPI STOP JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH1 0x20 PUSH0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH1 0x20 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH0 SLOAD PUSH0 NOT DUP2 EQ PUSH2 0x124 JUMPI PUSH1 0x1 ADD DUP1 PUSH0 SSTORE NUMBER PUSH1 0x1 SSTORE NUMBER PUSH32 0xD30D8D39ED9738FCBC30CABDFAAED97AB3319EC0F3AE4488A9B3E408A507B1C6 PUSH0 DUP1 LOG3 STOP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x77 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x77 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0x77 JUMPI PUSH1 0x20 SWAP2 PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x17A JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0x173 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE 0x23 EXTCODEHASH SHR 0xF7 SWAP16 CALL PUSH24 0x997D2485F293E8AD8F74A81484C5E358AF2E0A6760A37AC3 PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"446:1409:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;446:1409:41;;;;;;;;1821:25;446:1409;;;;;;;;;;;;-1:-1:-1;;446:1409:41;;;;;;-1:-1:-1;;;;;446:1409:41;;;;;;;;;;;;-1:-1:-1;;446:1409:41;;;;;;;;;;;;;;;;;;;-1:-1:-1;;446:1409:41;;;;;677:36;446:1409;;;;;;;;;;;;;-1:-1:-1;;446:1409:41;;;;;;-1:-1:-1;;446:1409:41;;;;;;;;;1212:12;446:1409;;1212:12;1239:53;446:1409;1239:53;;446:1409;;;;;;;;;;;;;;;;;;;-1:-1:-1;;446:1409:41;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1565:48:41;;;:88;;;;446:1409;;;;;;;1565:88;-1:-1:-1;;;829:40:29;;-1:-1:-1;1565:88:41;;"},"methodIdentifiers":{"beforeIssuanceAllocationChange()":"3df8d682","lastNotificationBlock()":"6251b205","notificationCount()":"71342f0c","resetNotificationCount()":"cbe3fe62","setIssuanceAllocator(address)":"931c0ac1","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldIssuanceAllocator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newIssuanceAllocator\",\"type\":\"address\"}],\"name\":\"IssuanceAllocatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"NotificationReceived\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"beforeIssuanceAllocationChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastNotificationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"notificationCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resetNotificationCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_issuanceAllocator\",\"type\":\"address\"}],\"name\":\"setIssuanceAllocator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"Records when beforeIssuanceAllocationChange is called\",\"events\":{\"IssuanceAllocatorSet(address,address)\":{\"params\":{\"newIssuanceAllocator\":\"New issuance allocator address\",\"oldIssuanceAllocator\":\"Old issuance allocator address\"}},\"NotificationReceived(uint256,uint256)\":{\"params\":{\"blockNumber\":\"The block number when notification was received\",\"count\":\"The total notification count after this notification\"}}},\"kind\":\"dev\",\"methods\":{\"beforeIssuanceAllocationChange()\":{\"details\":\"The target should ensure that all issuance related calculations are up-to-date with the current block so that an allocation change can be applied correctly. Note that the allocation could change multiple times in the same block after this function has been called, only the final allocation is relevant.\"},\"setIssuanceAllocator(address)\":{\"details\":\"This function facilitates upgrades by providing a standard way for targets to change their allocator. Implementations can define their own access control.\",\"params\":{\"newIssuanceAllocator\":\"Address of the issuance allocator\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"MockNotificationTracker\",\"version\":1},\"userdoc\":{\"events\":{\"IssuanceAllocatorSet(address,address)\":{\"notice\":\"New issuance allocator set\"},\"NotificationReceived(uint256,uint256)\":{\"notice\":\"Emitted when a notification is received\"}},\"kind\":\"user\",\"methods\":{\"beforeIssuanceAllocationChange()\":{\"notice\":\"Called by the issuance allocator before the target's issuance allocation changes\"},\"lastNotificationBlock()\":{\"notice\":\"Block number of the last notification received\"},\"notificationCount()\":{\"notice\":\"Number of times the contract has been notified\"},\"resetNotificationCount()\":{\"notice\":\"Resets the notification counter and last block to zero\"},\"setIssuanceAllocator(address)\":{\"notice\":\"Sets the issuance allocator for this target\"}},\"notice\":\"A mock contract that tracks notification calls for testing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/test/allocate/MockNotificationTracker.sol\":\"MockNotificationTracker\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol\":{\"keccak256\":\"0x4072d8fb200c3f5f1c7dd296c8e3b816d372c7f02ccde3c1e7efe0828a379dab\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e455b77e7a53046d94720f6fd0229b47e0bbf8d6bb43c291af39a8a8dccb34b5\",\"dweb:/ipfs/QmXVP248rUtadhed7BrNpUXQXjh99B9U73JcWF8LBdZLQV\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"project/contracts/test/allocate/MockNotificationTracker.sol\":{\"keccak256\":\"0xab6e154dc42a1fc327e354e9c9f71ad44295d22683dc46a469dc8bb6de0223ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c96dda4a8d401ca1f2bc88b7021921077821fcaae117a6c5ca50c4b7ba0eb2\",\"dweb:/ipfs/QmYfNMKmyGYc8vE1GRt6bwWGppSM4S6UMnjm3D8bkiCELN\"]}},\"version\":1}"}},"project/contracts/test/allocate/MockReentrantTarget.sol":{"MockReentrantTarget":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldIssuanceAllocator","type":"address"},{"indexed":true,"internalType":"address","name":"newIssuanceAllocator","type":"address"}],"name":"IssuanceAllocatorSet","type":"event"},{"inputs":[],"name":"actionToPerform","outputs":[{"internalType":"enum MockReentrantTarget.ReentrantAction","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beforeIssuanceAllocationChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"issuanceAllocator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_issuanceAllocator","type":"address"}],"name":"setIssuanceAllocator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum MockReentrantTarget.ReentrantAction","name":"_action","type":"uint8"}],"name":"setReentrantAction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldAttemptReentrancy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601557610624908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a71461019457508063368b381f1461014c5780633df8d68214610132578063931c0ac1146100f7578063c3e15de1146100d0578063e4679dd2146100ac5763feeeda7914610069575f80fd5b346100a8575f3660031901126100a85760ff5f5460a01c16604051600c821015610094576020918152f35b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b346100a8575f3660031901126100a857602060ff5f5460a81c166040519015158152f35b346100a8575f3660031901126100a8575f546040516001600160a01b039091168152602090f35b346100a85760203660031901126100a8576004356001600160a01b038116908190036100a8575f80546001600160a01b031916919091179055005b346100a8575f3660031901126100a85761014a610244565b005b346100a85760203660031901126100a857600435600c8110156100a8575f805461ffff60a01b191660a083901b60ff60a01b161791151560a81b60ff60a81b16919091179055005b346100a85760203660031901126100a8576004359063ffffffff60e01b82168092036100a85760209163aee4dc4360e01b81149081156101d6575b5015158152f35b6301ffc9a760e01b149050836101cf565b90601f8019910116810190811067ffffffffffffffff82111761020957604052565b634e487b7160e01b5f52604160045260245ffd5b908160209103126100a8575190565b908160209103126100a8575180151581036100a85790565b5f5460ff8160a81c161561029e5760ff8160a01c16600c81101561009457600181036102d45750505f805460405163049bdfcb60e41b81529160209183916004918391906001600160a01b03165af180156102c9576102a1575b50565b61029e9060203d6020116102c2575b6102ba81836101e7565b81019061021d565b503d6102b0565b6040513d5f823e3d90fd5b600281036103485750505f805460405163221cc87d60e11b81523060048201526103e860248201529160209183916044918391906001600160a01b03165af180156102c9576103205750565b61029e9060203d602011610341575b61033981836101e7565b81019061022c565b503d61032f565b6003810361039b5750505f805460405163323d9b4160e11b81523060048201526103e86024820152604481018390529160209183916064918391906001600160a01b03165af180156102c9576103205750565b600481036103f45750505f80546040516330b2cd5160e21b81523060048201526103e86024820152604481018390524360648201529160209183916084918391906001600160a01b03165af180156102c9576103205750565b6005810361043a5750505f8054604051631156bdc160e01b81526103e860048201529160209183916024918391906001600160a01b03165af180156102c9576103205750565b600681036104865750505f8054604051633189ede960e21b81526103e860048201524360248201529160209183916044918391906001600160a01b03165af180156102c9576103205750565b600781036104ca5750505f8054604051631221da4f60e21b81523060048201529160209183916024918391906001600160a01b03165af180156102c9576103205750565b6008810361050e5750505f80546040516334be799160e11b81523060048201529160209183916024918391906001600160a01b03165af180156102c9576103205750565b600981036105585750505f805460405163d012a15b60e01b81523060048201524360248201529160209183916044918391906001600160a01b03165af180156102c9576103205750565b600a81036105965750505f8054604051633af5b07360e01b81529160209183916004918391906001600160a01b03165af180156102c9576102a15750565b600b146105a05750565b6040516314b0386360e21b815243600482015290602090829060249082905f906001600160a01b03165af180156102c9571561029e5761029e9060203d6020116102c2576102ba81836101e756fea2646970667358221220b7ec61e5c1993f8c23ffe3a3fbc85284bac59569f4b048ee3da23ff167b40c0364736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x624 SWAP1 DUP2 PUSH2 0x1A DUP3 CODECOPY RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x194 JUMPI POP DUP1 PUSH4 0x368B381F EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x3DF8D682 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0x931C0AC1 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xC3E15DE1 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xE4679DD2 EQ PUSH2 0xAC JUMPI PUSH4 0xFEEEDA79 EQ PUSH2 0x69 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH1 0xFF PUSH0 SLOAD PUSH1 0xA0 SHR AND PUSH1 0x40 MLOAD PUSH1 0xC DUP3 LT ISZERO PUSH2 0x94 JUMPI PUSH1 0x20 SWAP2 DUP2 MSTORE RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH0 SLOAD PUSH1 0xA8 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0xA8 JUMPI PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH2 0x14A PUSH2 0x244 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0xC DUP2 LT ISZERO PUSH2 0xA8 JUMPI PUSH0 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0xA0 DUP4 SWAP1 SHL PUSH1 0xFF PUSH1 0xA0 SHL AND OR SWAP2 ISZERO ISZERO PUSH1 0xA8 SHL PUSH1 0xFF PUSH1 0xA8 SHL AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0xA8 JUMPI PUSH1 0x20 SWAP2 PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x1D6 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0x1CF JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x209 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xA8 JUMPI MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xA8 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0xA8 JUMPI SWAP1 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0xFF DUP2 PUSH1 0xA8 SHR AND ISZERO PUSH2 0x29E JUMPI PUSH1 0xFF DUP2 PUSH1 0xA0 SHR AND PUSH1 0xC DUP2 LT ISZERO PUSH2 0x94 JUMPI PUSH1 0x1 DUP2 SUB PUSH2 0x2D4 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x49BDFCB PUSH1 0xE4 SHL DUP2 MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x4 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x2A1 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x29E SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2C2 JUMPI JUMPDEST PUSH2 0x2BA DUP2 DUP4 PUSH2 0x1E7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x21D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x348 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x221CC87D PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x3E8 PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x44 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH2 0x29E SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x341 JUMPI JUMPDEST PUSH2 0x339 DUP2 DUP4 PUSH2 0x1E7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x22C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x32F JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x39B JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x323D9B41 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x3E8 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x64 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x3F4 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x30B2CD51 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x3E8 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE NUMBER PUSH1 0x64 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x84 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x43A JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1156BDC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x3E8 PUSH1 0x4 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x24 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x486 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3189EDE9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH2 0x3E8 PUSH1 0x4 DUP3 ADD MSTORE NUMBER PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x44 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x7 DUP2 SUB PUSH2 0x4CA JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1221DA4F PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x24 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x8 DUP2 SUB PUSH2 0x50E JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x34BE7991 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x24 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x9 DUP2 SUB PUSH2 0x558 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD012A15B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE NUMBER PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x44 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0xA DUP2 SUB PUSH2 0x596 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3AF5B073 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x4 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x2A1 JUMPI POP JUMP JUMPDEST PUSH1 0xB EQ PUSH2 0x5A0 JUMPI POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x14B03863 PUSH1 0xE2 SHL DUP2 MSTORE NUMBER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 PUSH1 0x20 SWAP1 DUP3 SWAP1 PUSH1 0x24 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI ISZERO PUSH2 0x29E JUMPI PUSH2 0x29E SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2C2 JUMPI PUSH2 0x2BA DUP2 DUP4 PUSH2 0x1E7 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 EOFCREATE 0x61 JUMPF 0xC199 EXTCODEHASH DUP13 0x23 SELFDESTRUCT CALLF 0xA3FB 0xC8 MSTORE DUP5 0xBA 0xC5 SWAP6 PUSH10 0xF4B048EE3DA23FF167B4 0xC SUB PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"746:3968:42:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_bool_fromMemory":{"entryPoint":556,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":541,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":487,"id":null,"parameterSlots":2,"returnSlots":0},"fun_beforeIssuanceAllocationChange":{"entryPoint":580,"id":11802,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a71461019457508063368b381f1461014c5780633df8d68214610132578063931c0ac1146100f7578063c3e15de1146100d0578063e4679dd2146100ac5763feeeda7914610069575f80fd5b346100a8575f3660031901126100a85760ff5f5460a01c16604051600c821015610094576020918152f35b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b346100a8575f3660031901126100a857602060ff5f5460a81c166040519015158152f35b346100a8575f3660031901126100a8575f546040516001600160a01b039091168152602090f35b346100a85760203660031901126100a8576004356001600160a01b038116908190036100a8575f80546001600160a01b031916919091179055005b346100a8575f3660031901126100a85761014a610244565b005b346100a85760203660031901126100a857600435600c8110156100a8575f805461ffff60a01b191660a083901b60ff60a01b161791151560a81b60ff60a81b16919091179055005b346100a85760203660031901126100a8576004359063ffffffff60e01b82168092036100a85760209163aee4dc4360e01b81149081156101d6575b5015158152f35b6301ffc9a760e01b149050836101cf565b90601f8019910116810190811067ffffffffffffffff82111761020957604052565b634e487b7160e01b5f52604160045260245ffd5b908160209103126100a8575190565b908160209103126100a8575180151581036100a85790565b5f5460ff8160a81c161561029e5760ff8160a01c16600c81101561009457600181036102d45750505f805460405163049bdfcb60e41b81529160209183916004918391906001600160a01b03165af180156102c9576102a1575b50565b61029e9060203d6020116102c2575b6102ba81836101e7565b81019061021d565b503d6102b0565b6040513d5f823e3d90fd5b600281036103485750505f805460405163221cc87d60e11b81523060048201526103e860248201529160209183916044918391906001600160a01b03165af180156102c9576103205750565b61029e9060203d602011610341575b61033981836101e7565b81019061022c565b503d61032f565b6003810361039b5750505f805460405163323d9b4160e11b81523060048201526103e86024820152604481018390529160209183916064918391906001600160a01b03165af180156102c9576103205750565b600481036103f45750505f80546040516330b2cd5160e21b81523060048201526103e86024820152604481018390524360648201529160209183916084918391906001600160a01b03165af180156102c9576103205750565b6005810361043a5750505f8054604051631156bdc160e01b81526103e860048201529160209183916024918391906001600160a01b03165af180156102c9576103205750565b600681036104865750505f8054604051633189ede960e21b81526103e860048201524360248201529160209183916044918391906001600160a01b03165af180156102c9576103205750565b600781036104ca5750505f8054604051631221da4f60e21b81523060048201529160209183916024918391906001600160a01b03165af180156102c9576103205750565b6008810361050e5750505f80546040516334be799160e11b81523060048201529160209183916024918391906001600160a01b03165af180156102c9576103205750565b600981036105585750505f805460405163d012a15b60e01b81523060048201524360248201529160209183916044918391906001600160a01b03165af180156102c9576103205750565b600a81036105965750505f8054604051633af5b07360e01b81529160209183916004918391906001600160a01b03165af180156102c9576102a15750565b600b146105a05750565b6040516314b0386360e21b815243600482015290602090829060249082905f906001600160a01b03165af180156102c9571561029e5761029e9060203d6020116102c2576102ba81836101e756fea2646970667358221220b7ec61e5c1993f8c23ffe3a3fbc85284bac59569f4b048ee3da23ff167b40c0364736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0x194 JUMPI POP DUP1 PUSH4 0x368B381F EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x3DF8D682 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0x931C0AC1 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xC3E15DE1 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0xE4679DD2 EQ PUSH2 0xAC JUMPI PUSH4 0xFEEEDA79 EQ PUSH2 0x69 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH1 0xFF PUSH0 SLOAD PUSH1 0xA0 SHR AND PUSH1 0x40 MLOAD PUSH1 0xC DUP3 LT ISZERO PUSH2 0x94 JUMPI PUSH1 0x20 SWAP2 DUP2 MSTORE RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH0 SLOAD PUSH1 0xA8 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0xA8 JUMPI PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH2 0x14A PUSH2 0x244 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0xC DUP2 LT ISZERO PUSH2 0xA8 JUMPI PUSH0 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0xA0 DUP4 SWAP1 SHL PUSH1 0xFF PUSH1 0xA0 SHL AND OR SWAP2 ISZERO ISZERO PUSH1 0xA8 SHL PUSH1 0xFF PUSH1 0xA8 SHL AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0xA8 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xA8 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH2 0xA8 JUMPI PUSH1 0x20 SWAP2 PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x1D6 JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH2 0x1CF JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x209 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xA8 JUMPI MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xA8 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0xA8 JUMPI SWAP1 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0xFF DUP2 PUSH1 0xA8 SHR AND ISZERO PUSH2 0x29E JUMPI PUSH1 0xFF DUP2 PUSH1 0xA0 SHR AND PUSH1 0xC DUP2 LT ISZERO PUSH2 0x94 JUMPI PUSH1 0x1 DUP2 SUB PUSH2 0x2D4 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x49BDFCB PUSH1 0xE4 SHL DUP2 MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x4 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x2A1 JUMPI JUMPDEST POP JUMP JUMPDEST PUSH2 0x29E SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2C2 JUMPI JUMPDEST PUSH2 0x2BA DUP2 DUP4 PUSH2 0x1E7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x21D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x348 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x221CC87D PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x3E8 PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x44 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH2 0x29E SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x341 JUMPI JUMPDEST PUSH2 0x339 DUP2 DUP4 PUSH2 0x1E7 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x22C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x32F JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x39B JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x323D9B41 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x3E8 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x64 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x3F4 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x30B2CD51 PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x3E8 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE NUMBER PUSH1 0x64 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x84 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x43A JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1156BDC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x3E8 PUSH1 0x4 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x24 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x486 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3189EDE9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH2 0x3E8 PUSH1 0x4 DUP3 ADD MSTORE NUMBER PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x44 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x7 DUP2 SUB PUSH2 0x4CA JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1221DA4F PUSH1 0xE2 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x24 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x8 DUP2 SUB PUSH2 0x50E JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x34BE7991 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x24 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0x9 DUP2 SUB PUSH2 0x558 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD012A15B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE NUMBER PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x44 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x320 JUMPI POP JUMP JUMPDEST PUSH1 0xA DUP2 SUB PUSH2 0x596 JUMPI POP POP PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x3AF5B073 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 PUSH1 0x20 SWAP2 DUP4 SWAP2 PUSH1 0x4 SWAP2 DUP4 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH2 0x2A1 JUMPI POP JUMP JUMPDEST PUSH1 0xB EQ PUSH2 0x5A0 JUMPI POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x14B03863 PUSH1 0xE2 SHL DUP2 MSTORE NUMBER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 PUSH1 0x20 SWAP1 DUP3 SWAP1 PUSH1 0x24 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS CALL DUP1 ISZERO PUSH2 0x2C9 JUMPI ISZERO PUSH2 0x29E JUMPI PUSH2 0x29E SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2C2 JUMPI PUSH2 0x2BA DUP2 DUP4 PUSH2 0x1E7 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 EOFCREATE 0x61 JUMPF 0xC199 EXTCODEHASH DUP13 0x23 SELFDESTRUCT CALLF 0xA3FB 0xC8 MSTORE DUP5 0xBA 0xC5 SWAP6 PUSH10 0xF4B048EE3DA23FF167B4 0xC SUB PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"746:3968:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;746:3968:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;746:3968:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;746:3968:42;;;;;;;;-1:-1:-1;;;;;746:3968:42;;;;;;;;;;;;;;-1:-1:-1;;746:3968:42;;;;;;-1:-1:-1;;;;;746:3968:42;;;;;;;;;;;-1:-1:-1;;;;;;746:3968:42;;;;;;;;;;;;;;-1:-1:-1;;746:3968:42;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;746:3968:42;;;;;;;;;;;;;;;-1:-1:-1;;;;746:3968:42;;;;;-1:-1:-1;;;746:3968:42;;1791:31;;;746:3968;;-1:-1:-1;;;746:3968:42;;;;;;;;;;;;;;-1:-1:-1;;746:3968:42;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4617:48:42;;;:88;;;;746:3968;;;;;;;4617:88;-1:-1:-1;;;829:40:29;;-1:-1:-1;4617:88:42;;;746:3968;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;746:3968:42;;;;;-1:-1:-1;746:3968:42;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;1871:2432::-;1946:23;746:3968;;;;;;1945:24;1941:37;;746:3968;;;;;;;;;;;2068:34;2049:53;;2068:34;;-1:-1:-1;;1946:23:42;746:3968;;;;-1:-1:-1;;;2118:71:42;;746:3968;2118:71;;746:3968;;2118:71;;746:3968;;1946:23;-1:-1:-1;;;;;746:3968:42;2118:71;;;;;;;;2045:2252;;1871:2432::o;2118:71::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;746:3968;;;1946:23;746:3968;;;;;2045:2252;2229:41;2210:60;;2229:41;;-1:-1:-1;;1946:23:42;746:3968;;;;-1:-1:-1;;;2286:156:42;;2400:4;2286:156;;;746:3968;2424:4;746:3968;;;;;;;;;2286:156;;746:3968;;1946:23;-1:-1:-1;;;;;746:3968:42;2286:156;;;;;;;;2206:2091;1871:2432::o;2286:156::-;;;746:3968;2286:156;746:3968;2286:156;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;2206:2091;2482:41;2463:60;;2482:41;;-1:-1:-1;;1946:23:42;746:3968;;;;-1:-1:-1;;;2539:175:42;;2653:4;2539:175;;;746:3968;2677:4;746:3968;;;;;;;;;;;;;;;2539:175;;746:3968;;1946:23;-1:-1:-1;;;;;746:3968:42;2539:175;;;;;;;;2459:1838;1871:2432::o;2459:1838::-;2754:41;2735:60;;2754:41;;-1:-1:-1;;1946:23:42;746:3968;;;;-1:-1:-1;;;2811:205:42;;2925:4;2754:41;2811:205;;746:3968;2949:4;746:3968;;;;;;;;;;2990:12;746:3968;;;;;;;;;2811:205;;746:3968;;1946:23;-1:-1:-1;;;;;746:3968:42;2811:205;;;;;;;;2731:1566;1871:2432::o;2731:1566::-;3056:35;3037:54;;3056:35;;-1:-1:-1;;1946:23:42;746:3968;;;;-1:-1:-1;;;3107:78:42;;3180:4;2754:41;3107:78;;746:3968;;;;;;3107:78;;746:3968;;1946:23;-1:-1:-1;;;;;746:3968:42;3107:78;;;;;;;;3033:1264;1871:2432::o;3033:1264::-;3225:41;3206:60;;3225:41;;-1:-1:-1;;1946:23:42;746:3968;;;;-1:-1:-1;;;3282:92:42;;3355:4;2754:41;3282:92;;746:3968;3361:12;746:3968;;;;;;;;;3282:92;;746:3968;;1946:23;-1:-1:-1;;;;;746:3968:42;3282:92;;;;;;;;3202:1095;1871:2432::o;3202:1095::-;3414:28;3395:47;;3414:28;;-1:-1:-1;;1946:23:42;746:3968;;;;-1:-1:-1;;;3458:80:42;;3532:4;2754:41;3458:80;;746:3968;;;;;;3458:80;;746:3968;;1946:23;-1:-1:-1;;;;;746:3968:42;3458:80;;;;;;;;3391:906;1871:2432::o;3391:906::-;3578:38;3559:57;;3578:38;;-1:-1:-1;;1946:23:42;746:3968;;;;-1:-1:-1;;;3632:84:42;;3710:4;2754:41;3632:84;;746:3968;;;;;;3632:84;;746:3968;;1946:23;-1:-1:-1;;;;;746:3968:42;3632:84;;;;;;;;3555:742;1871:2432::o;3555:742::-;3756:38;3737:57;;3756:38;;-1:-1:-1;;1946:23:42;746:3968;;;;-1:-1:-1;;;3810:98:42;;3888:4;2754:41;3810:98;;746:3968;3895:12;746:3968;;;;;;;;;3810:98;;746:3968;;1946:23;-1:-1:-1;;;;;746:3968:42;3810:98;;;;;;;;3733:564;1871:2432::o;3733:564::-;3948:47;3929:66;;3948:47;;-1:-1:-1;;1946:23:42;746:3968;;;;-1:-1:-1;;;4011:80:42;;746:3968;4011:80;;746:3968;;2754:41;;746:3968;;1946:23;-1:-1:-1;;;;;746:3968:42;4011:80;;;;;;;;3925:372;1871:2432::o;3925:372::-;4131:47;4112:66;4108:189;;3925:372;1871:2432::o;4108:189::-;746:3968;;-1:-1:-1;;;4194:92:42;;4273:12;2754:41;4194:92;;746:3968;;;;;;4194:92;;746:3968;;1946:23;;-1:-1:-1;;;;;746:3968:42;4194:92;;;;;;;4108:189;4194:92;;;746:3968;4194:92;746:3968;4194:92;;;;;;;:::i"},"methodIdentifiers":{"actionToPerform()":"feeeda79","beforeIssuanceAllocationChange()":"3df8d682","issuanceAllocator()":"c3e15de1","setIssuanceAllocator(address)":"931c0ac1","setReentrantAction(uint8)":"368b381f","shouldAttemptReentrancy()":"e4679dd2","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldIssuanceAllocator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newIssuanceAllocator\",\"type\":\"address\"}],\"name\":\"IssuanceAllocatorSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"actionToPerform\",\"outputs\":[{\"internalType\":\"enum MockReentrantTarget.ReentrantAction\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beforeIssuanceAllocationChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"issuanceAllocator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_issuanceAllocator\",\"type\":\"address\"}],\"name\":\"setIssuanceAllocator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum MockReentrantTarget.ReentrantAction\",\"name\":\"_action\",\"type\":\"uint8\"}],\"name\":\"setReentrantAction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shouldAttemptReentrancy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"Used for testing reentrancy protection in IssuanceAllocator\",\"events\":{\"IssuanceAllocatorSet(address,address)\":{\"params\":{\"newIssuanceAllocator\":\"New issuance allocator address\",\"oldIssuanceAllocator\":\"Old issuance allocator address\"}}},\"kind\":\"dev\",\"methods\":{\"beforeIssuanceAllocationChange()\":{\"details\":\"The target should ensure that all issuance related calculations are up-to-date with the current block so that an allocation change can be applied correctly. Note that the allocation could change multiple times in the same block after this function has been called, only the final allocation is relevant.\"},\"setIssuanceAllocator(address)\":{\"details\":\"This function facilitates upgrades by providing a standard way for targets to change their allocator. Implementations can define their own access control.\",\"params\":{\"newIssuanceAllocator\":\"Address of the issuance allocator\"}},\"setReentrantAction(uint8)\":{\"params\":{\"_action\":\"The reentrancy action to configure\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"MockReentrantTarget\",\"version\":1},\"userdoc\":{\"events\":{\"IssuanceAllocatorSet(address,address)\":{\"notice\":\"New issuance allocator set\"}},\"kind\":\"user\",\"methods\":{\"actionToPerform()\":{\"notice\":\"The configured reentrancy action to perform\"},\"beforeIssuanceAllocationChange()\":{\"notice\":\"Called by the issuance allocator before the target's issuance allocation changes\"},\"issuanceAllocator()\":{\"notice\":\"The issuance allocator to target for reentrancy attacks\"},\"setIssuanceAllocator(address)\":{\"notice\":\"Sets the issuance allocator for this target\"},\"setReentrantAction(uint8)\":{\"notice\":\"Sets the action to perform during reentrancy attempt\"},\"shouldAttemptReentrancy()\":{\"notice\":\"Whether reentrancy should be attempted\"}},\"notice\":\"A malicious mock contract that attempts reentrancy attacks for testing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/test/allocate/MockReentrantTarget.sol\":\"MockReentrantTarget\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol\":{\"keccak256\":\"0xb4d95a9c0ce489cd8df7f047dcbfc19c4a4ec9d05878b2bef4f3abd5fa4e91ef\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7923e80806cfbf8cf9d78c4de574b7e0a6c9f87b81702303b7170adf935ffb5c\",\"dweb:/ipfs/QmVVLV3jzxjS3HoRyg1C9hHcnWqV8ux1QaEwZgFKXrDu1X\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol\":{\"keccak256\":\"0x6927a5d307ac841444e03af363c41c7ba032693074614f0e3ee1e25c6f8789e1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://906d824aa38a6e6daa83f34cdfc1d9b0a9ff5f895b4a2083b9a7b7d5d8285397\",\"dweb:/ipfs/QmZCCSW7Nxtf3tLPnHazMhsyDPBBiAHqfzceGdb6CFNNEJ\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol\":{\"keccak256\":\"0x5054506b182f49cece8bd7bab5f1d06a7b9d8def75b6c02aecd623aa3bf728cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://48a35b7e89144bc7e9e3d94269d661109775777bd8bcfb013ebd794f6629798a\",\"dweb:/ipfs/Qmbnzo8kVX42WfwkpL8nTZAEB7LTtSCR5xBf97SZbte9XJ\"]},\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol\":{\"keccak256\":\"0x4072d8fb200c3f5f1c7dd296c8e3b816d372c7f02ccde3c1e7efe0828a379dab\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e455b77e7a53046d94720f6fd0229b47e0bbf8d6bb43c291af39a8a8dccb34b5\",\"dweb:/ipfs/QmXVP248rUtadhed7BrNpUXQXjh99B9U73JcWF8LBdZLQV\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"project/contracts/test/allocate/MockReentrantTarget.sol\":{\"keccak256\":\"0x40962c3c58f86a4ae55ae7381832528be0dc771610f03d6f9e3ea8aad7ec9380\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba94ce1f5f10f03d2df735757a409e2860996ecf873ed4367a50d51a154d7317\",\"dweb:/ipfs/QmX725gsmFMemtqF62FugdQSLwZzwSq9eT4pqxtmjQfBBX\"]}},\"version\":1}"}},"project/contracts/test/allocate/MockRevertingTarget.sol":{"MockRevertingTarget":{"abi":[{"inputs":[],"name":"TargetRevertsIntentionally","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldIssuanceAllocator","type":"address"},{"indexed":true,"internalType":"address","name":"newIssuanceAllocator","type":"address"}],"name":"IssuanceAllocatorSet","type":"event"},{"inputs":[],"name":"beforeIssuanceAllocationChange","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_issuanceAllocator","type":"address"}],"name":"setIssuanceAllocator","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601557610100908161001a8239f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c90816301ffc9a714607c575080633df8d68214605f5763931c0ac1146039575f80fd5b34605b576020366003190112605b576004356001600160a01b03811603605b57005b5f80fd5b34605b575f366003190112605b57631abd904160e21b5f5260045ffd5b34605b576020366003190112605b576004359063ffffffff60e01b8216809203605b5760209163aee4dc4360e01b811490811560ba575b5015158152f35b6301ffc9a760e01b1490508360b356fea26469706673582212208593d1ba32921bb3f0773517a18b13ec4e7927636643624dcbc19bc664501a5a64736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x100 SWAP1 DUP2 PUSH2 0x1A DUP3 CODECOPY RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH1 0x7C JUMPI POP DUP1 PUSH4 0x3DF8D682 EQ PUSH1 0x5F JUMPI PUSH4 0x931C0AC1 EQ PUSH1 0x39 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH1 0x5B JUMPI STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI PUSH4 0x1ABD9041 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH1 0x5B JUMPI PUSH1 0x20 SWAP2 PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH1 0xBA JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH1 0xB3 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 SWAP4 DATALOADN 0xBA32 SWAP3 SHL 0xB3 CREATE PUSH24 0x3517A18B13EC4E7927636643624DCBC19BC664501A5A6473 PUSH16 0x6C634300082100330000000000000000 ","sourceMap":"457:737:43:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60808060405260043610156011575f80fd5b5f3560e01c90816301ffc9a714607c575080633df8d68214605f5763931c0ac1146039575f80fd5b34605b576020366003190112605b576004356001600160a01b03811603605b57005b5f80fd5b34605b575f366003190112605b57631abd904160e21b5f5260045ffd5b34605b576020366003190112605b576004359063ffffffff60e01b8216809203605b5760209163aee4dc4360e01b811490811560ba575b5015158152f35b6301ffc9a760e01b1490508360b356fea26469706673582212208593d1ba32921bb3f0773517a18b13ec4e7927636643624dcbc19bc664501a5a64736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH1 0x7C JUMPI POP DUP1 PUSH4 0x3DF8D682 EQ PUSH1 0x5F JUMPI PUSH4 0x931C0AC1 EQ PUSH1 0x39 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH1 0x5B JUMPI STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI PUSH4 0x1ABD9041 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH1 0x5B JUMPI PUSH1 0x20 SWAP2 PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH1 0xBA JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH1 0xB3 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 SWAP4 DATALOADN 0xBA32 SWAP3 SHL 0xB3 CREATE PUSH24 0x3517A18B13EC4E7927636643624DCBC19BC664501A5A6473 PUSH16 0x6C634300082100330000000000000000 ","sourceMap":"457:737:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;457:737:43;;;;;;-1:-1:-1;;;;;457:737:43;;;;;;;;;;;;;;;;-1:-1:-1;;457:737:43;;;;759:28;;;457:737;759:28;457:737;;759:28;457:737;;;;;;-1:-1:-1;;457:737:43;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1097:48:43;;;:88;;;;457:737;;;;;;;1097:88;-1:-1:-1;;;829:40:29;;-1:-1:-1;1097:88:43;;"},"methodIdentifiers":{"beforeIssuanceAllocationChange()":"3df8d682","setIssuanceAllocator(address)":"931c0ac1","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"TargetRevertsIntentionally\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldIssuanceAllocator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newIssuanceAllocator\",\"type\":\"address\"}],\"name\":\"IssuanceAllocatorSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"beforeIssuanceAllocationChange\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_issuanceAllocator\",\"type\":\"address\"}],\"name\":\"setIssuanceAllocator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"Used for testing error handling in IssuanceAllocator\",\"events\":{\"IssuanceAllocatorSet(address,address)\":{\"params\":{\"newIssuanceAllocator\":\"New issuance allocator address\",\"oldIssuanceAllocator\":\"Old issuance allocator address\"}}},\"kind\":\"dev\",\"methods\":{\"beforeIssuanceAllocationChange()\":{\"details\":\"The target should ensure that all issuance related calculations are up-to-date with the current block so that an allocation change can be applied correctly. Note that the allocation could change multiple times in the same block after this function has been called, only the final allocation is relevant.\"},\"setIssuanceAllocator(address)\":{\"details\":\"This function facilitates upgrades by providing a standard way for targets to change their allocator. Implementations can define their own access control.\",\"params\":{\"newIssuanceAllocator\":\"Address of the issuance allocator\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"MockRevertingTarget\",\"version\":1},\"userdoc\":{\"errors\":{\"TargetRevertsIntentionally()\":[{\"notice\":\"Error thrown when the target reverts intentionally\"}]},\"events\":{\"IssuanceAllocatorSet(address,address)\":{\"notice\":\"New issuance allocator set\"}},\"kind\":\"user\",\"methods\":{\"beforeIssuanceAllocationChange()\":{\"notice\":\"Called by the issuance allocator before the target's issuance allocation changes\"},\"setIssuanceAllocator(address)\":{\"notice\":\"Sets the issuance allocator for this target\"}},\"notice\":\"A mock contract that reverts when beforeIssuanceAllocationChange is called\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/test/allocate/MockRevertingTarget.sol\":\"MockRevertingTarget\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol\":{\"keccak256\":\"0x4072d8fb200c3f5f1c7dd296c8e3b816d372c7f02ccde3c1e7efe0828a379dab\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e455b77e7a53046d94720f6fd0229b47e0bbf8d6bb43c291af39a8a8dccb34b5\",\"dweb:/ipfs/QmXVP248rUtadhed7BrNpUXQXjh99B9U73JcWF8LBdZLQV\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"project/contracts/test/allocate/MockRevertingTarget.sol\":{\"keccak256\":\"0x3856591e74636a5e91fedb903f89cc0248b3db109f736e7f5fc0295a6b13bb2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0d55c6350aa96645bee7162104a78093d7c784cb065ea89c155c21c6b5415ed\",\"dweb:/ipfs/QmNzP8qBp6r5NoZMG18bK7xKuJyoc22cjne8Fn8sNWadZA\"]}},\"version\":1}"}},"project/contracts/test/allocate/MockSimpleTarget.sol":{"MockSimpleTarget":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldIssuanceAllocator","type":"address"},{"indexed":true,"internalType":"address","name":"newIssuanceAllocator","type":"address"}],"name":"IssuanceAllocatorSet","type":"event"},{"inputs":[],"name":"beforeIssuanceAllocationChange","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_issuanceAllocator","type":"address"}],"name":"setIssuanceAllocator","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460145760f390816100198239f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c90816301ffc9a714606f575080633df8d68214605f5763931c0ac1146039575f80fd5b34605b576020366003190112605b576004356001600160a01b03811603605b57005b5f80fd5b34605b575f366003190112605b57005b34605b576020366003190112605b576004359063ffffffff60e01b8216809203605b5760209163aee4dc4360e01b811490811560ad575b5015158152f35b6301ffc9a760e01b1490508360a656fea26469706673582212200cf6e09017cb88f7a2e35f5f709c9b79ad91001b7bff674777ddbebf07d6951f64736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x14 JUMPI PUSH1 0xF3 SWAP1 DUP2 PUSH2 0x19 DUP3 CODECOPY RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH1 0x6F JUMPI POP DUP1 PUSH4 0x3DF8D682 EQ PUSH1 0x5F JUMPI PUSH4 0x931C0AC1 EQ PUSH1 0x39 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH1 0x5B JUMPI STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI STOP JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH1 0x5B JUMPI PUSH1 0x20 SWAP2 PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH1 0xAD JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH1 0xA6 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC 0xF6 RJUMP 0x9017 0xCB DUP9 0xF7 LOG2 CALLF 0x5F5F PUSH17 0x9C9B79AD91001B7BFF674777DDBEBF07D6 SWAP6 0x1F PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"451:525:44:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60808060405260043610156011575f80fd5b5f3560e01c90816301ffc9a714606f575080633df8d68214605f5763931c0ac1146039575f80fd5b34605b576020366003190112605b576004356001600160a01b03811603605b57005b5f80fd5b34605b575f366003190112605b57005b34605b576020366003190112605b576004359063ffffffff60e01b8216809203605b5760209163aee4dc4360e01b811490811560ad575b5015158152f35b6301ffc9a760e01b1490508360a656fea26469706673582212200cf6e09017cb88f7a2e35f5f709c9b79ad91001b7bff674777ddbebf07d6951f64736f6c63430008210033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH1 0x6F JUMPI POP DUP1 PUSH4 0x3DF8D682 EQ PUSH1 0x5F JUMPI PUSH4 0x931C0AC1 EQ PUSH1 0x39 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH1 0x5B JUMPI STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI STOP JUMPDEST CALLVALUE PUSH1 0x5B JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x5B JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP3 AND DUP1 SWAP3 SUB PUSH1 0x5B JUMPI PUSH1 0x20 SWAP2 PUSH4 0xAEE4DC43 PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH1 0xAD JUMPI JUMPDEST POP ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ SWAP1 POP DUP4 PUSH1 0xA6 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC 0xF6 RJUMP 0x9017 0xCB DUP9 0xF7 LOG2 CALLF 0x5F5F PUSH17 0x9C9B79AD91001B7BFF674777DDBEBF07D6 SWAP6 0x1F PUSH5 0x736F6C6343 STOP ADDMOD 0x21 STOP CALLER ","sourceMap":"451:525:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;451:525:44;;;;;;-1:-1:-1;;;;;451:525:44;;;;;;;;;;;;;;;;-1:-1:-1;;451:525:44;;;;;;;;;;;-1:-1:-1;;451:525:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;879:48:44;;;:88;;;;451:525;;;;;;;879:88;-1:-1:-1;;;829:40:29;;-1:-1:-1;879:88:44;;"},"methodIdentifiers":{"beforeIssuanceAllocationChange()":"3df8d682","setIssuanceAllocator(address)":"931c0ac1","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldIssuanceAllocator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newIssuanceAllocator\",\"type\":\"address\"}],\"name\":\"IssuanceAllocatorSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"beforeIssuanceAllocationChange\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_issuanceAllocator\",\"type\":\"address\"}],\"name\":\"setIssuanceAllocator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Edge & Node\",\"details\":\"Used for testing basic functionality in IssuanceAllocator\",\"events\":{\"IssuanceAllocatorSet(address,address)\":{\"params\":{\"newIssuanceAllocator\":\"New issuance allocator address\",\"oldIssuanceAllocator\":\"Old issuance allocator address\"}}},\"kind\":\"dev\",\"methods\":{\"beforeIssuanceAllocationChange()\":{\"details\":\"The target should ensure that all issuance related calculations are up-to-date with the current block so that an allocation change can be applied correctly. Note that the allocation could change multiple times in the same block after this function has been called, only the final allocation is relevant.\"},\"setIssuanceAllocator(address)\":{\"details\":\"This function facilitates upgrades by providing a standard way for targets to change their allocator. Implementations can define their own access control.\",\"params\":{\"newIssuanceAllocator\":\"Address of the issuance allocator\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"MockSimpleTarget\",\"version\":1},\"userdoc\":{\"events\":{\"IssuanceAllocatorSet(address,address)\":{\"notice\":\"New issuance allocator set\"}},\"kind\":\"user\",\"methods\":{\"beforeIssuanceAllocationChange()\":{\"notice\":\"Called by the issuance allocator before the target's issuance allocation changes\"},\"setIssuanceAllocator(address)\":{\"notice\":\"Sets the issuance allocator for this target\"}},\"notice\":\"A simple mock contract that implements IIssuanceTarget for testing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project/contracts/test/allocate/MockSimpleTarget.sol\":\"MockSimpleTarget\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\"npm/@openzeppelin/contracts-upgradeable@5.4.0/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\",\"project/:@graphprotocol/interfaces/=npm/@graphprotocol/interfaces@local/\",\"project/:@openzeppelin/contracts-upgradeable/=npm/@openzeppelin/contracts-upgradeable@5.4.0/\",\"project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/\"],\"viaIR\":true},\"sources\":{\"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol\":{\"keccak256\":\"0x4072d8fb200c3f5f1c7dd296c8e3b816d372c7f02ccde3c1e7efe0828a379dab\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e455b77e7a53046d94720f6fd0229b47e0bbf8d6bb43c291af39a8a8dccb34b5\",\"dweb:/ipfs/QmXVP248rUtadhed7BrNpUXQXjh99B9U73JcWF8LBdZLQV\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"project/contracts/test/allocate/MockSimpleTarget.sol\":{\"keccak256\":\"0x220bdc812bb31d3428c6b94fd2a826f92faa585a8f979f08f37330cbff1ecada\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1642ac6f7cf5f9ae3efabd2f5772251d7d2711039c3e9a341af6e09a8bf653ed\",\"dweb:/ipfs/Qmb5hC4YHF4gcvcm83ckw441KTEXBbfVUXEFNjrKkk4STw\"]}},\"version\":1}"}}},"errors":[{"component":"general","errorCode":"2394","formattedMessage":"Warning: Transient storage as defined by EIP-1153 can break the composability of smart contracts: Since transient storage is cleared only at the end of the transaction and not at the end of the outermost call frame to the contract within a transaction, your contract may unintentionally misbehave when invoked multiple times in a complex transaction. To avoid this, be sure to clear all transient storage at the end of any call to your contract. The use of transient storage for reentrancy guards that are cleared at the end of the call is safe.\n   --> npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol:108:13:\n    |\n108 |             tstore(slot, value)\n    |             ^^^^^^\n\n","message":"Transient storage as defined by EIP-1153 can break the composability of smart contracts: Since transient storage is cleared only at the end of the transaction and not at the end of the outermost call frame to the contract within a transaction, your contract may unintentionally misbehave when invoked multiple times in a complex transaction. To avoid this, be sure to clear all transient storage at the end of any call to your contract. The use of transient storage for reentrancy guards that are cleared at the end of the call is safe.","severity":"warning","sourceLocation":{"end":3125,"file":"npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol","start":3119},"type":"Warning"}],"sources":{"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol","exportedSymbols":{"IIssuanceAllocationAdministration":[130],"IIssuanceTarget":[289],"SelfMintingEventMode":[234]},"id":131,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:0"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol","file":"./IIssuanceTarget.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":131,"sourceUnit":290,"src":"81:56:0","symbolAliases":[{"foreign":{"id":2,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"90:15:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol","file":"./IIssuanceAllocatorTypes.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":131,"sourceUnit":269,"src":"138:69:0","symbolAliases":[{"foreign":{"id":4,"name":"SelfMintingEventMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"147:20:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IIssuanceAllocationAdministration","contractDependencies":[],"contractKind":"interface","documentation":{"id":6,"nodeType":"StructuredDocumentation","src":"209:218:0","text":" @title IIssuanceAllocationAdministration\n @author Edge & Node\n @notice Interface for administrative operations on the issuance allocator.\n These functions are typically restricted to the governor role."},"fullyImplemented":false,"id":130,"linearizedBaseContracts":[130],"name":"IIssuanceAllocationAdministration","nameLocation":"438:33:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7,"nodeType":"StructuredDocumentation","src":"478:258:0","text":" @notice Set the issuance per block.\n @param newIssuancePerBlock New issuance per block\n @return applied True if the value is applied (including if already the case)\n @dev Requires distribution to have reached block.number"},"functionSelector":"1156bdc1","id":14,"implemented":false,"kind":"function","modifiers":[],"name":"setIssuancePerBlock","nameLocation":"750:19:0","nodeType":"FunctionDefinition","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"mutability":"mutable","name":"newIssuancePerBlock","nameLocation":"778:19:0","nodeType":"VariableDeclaration","scope":14,"src":"770:27:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"769:29:0"},"returnParameters":{"id":13,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"mutability":"mutable","name":"applied","nameLocation":"822:7:0","nodeType":"VariableDeclaration","scope":14,"src":"817:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11,"name":"bool","nodeType":"ElementaryTypeName","src":"817:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"816:14:0"},"scope":130,"src":"741:90:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":15,"nodeType":"StructuredDocumentation","src":"837:731:0","text":" @notice Set the issuance per block, requiring distribution has reached at least the specified block\n @param newIssuancePerBlock New issuance per block\n @param minDistributedBlock Minimum block number that distribution must have reached\n @return applied True if the value is applied (including if already the case), false if distribution hasn't reached minDistributedBlock\n @dev Governance should explicitly call\n distributePendingIssuance(blockNumber) first if distribution is behind minDistributedBlock.\n @dev This allows configuration changes while paused: first call distributePendingIssuance(blockNumber),\n then call this function with the same or lower blockNumber."},"functionSelector":"c627b7a4","id":24,"implemented":false,"kind":"function","modifiers":[],"name":"setIssuancePerBlock","nameLocation":"1582:19:0","nodeType":"FunctionDefinition","parameters":{"id":20,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17,"mutability":"mutable","name":"newIssuancePerBlock","nameLocation":"1619:19:0","nodeType":"VariableDeclaration","scope":24,"src":"1611:27:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16,"name":"uint256","nodeType":"ElementaryTypeName","src":"1611:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19,"mutability":"mutable","name":"minDistributedBlock","nameLocation":"1656:19:0","nodeType":"VariableDeclaration","scope":24,"src":"1648:27:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1601:80:0"},"returnParameters":{"id":23,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22,"mutability":"mutable","name":"applied","nameLocation":"1705:7:0","nodeType":"VariableDeclaration","scope":24,"src":"1700:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21,"name":"bool","nodeType":"ElementaryTypeName","src":"1700:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1699:14:0"},"scope":130,"src":"1573:141:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":25,"nodeType":"StructuredDocumentation","src":"1720:425:0","text":" @notice Set the allocation for a target with only allocator minting\n @param target The target contract to update\n @param allocatorMintingRate Allocator-minting rate for the target (tokens per block)\n @return applied True if the value is applied (including if already the case), false if not applied\n @dev This variant sets selfMintingRate to 0 and evenIfDistributionPending to false"},"functionSelector":"443990fa","id":35,"implemented":false,"kind":"function","modifiers":[],"name":"setTargetAllocation","nameLocation":"2159:19:0","nodeType":"FunctionDefinition","parameters":{"id":31,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28,"mutability":"mutable","name":"target","nameLocation":"2195:6:0","nodeType":"VariableDeclaration","scope":35,"src":"2179:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"},"typeName":{"id":27,"nodeType":"UserDefinedTypeName","pathNode":{"id":26,"name":"IIssuanceTarget","nameLocations":["2179:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"2179:15:0"},"referencedDeclaration":289,"src":"2179:15:0","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}},"visibility":"internal"},{"constant":false,"id":30,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"2211:20:0","nodeType":"VariableDeclaration","scope":35,"src":"2203:28:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29,"name":"uint256","nodeType":"ElementaryTypeName","src":"2203:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2178:54:0"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"applied","nameLocation":"2256:7:0","nodeType":"VariableDeclaration","scope":35,"src":"2251:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32,"name":"bool","nodeType":"ElementaryTypeName","src":"2251:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2250:14:0"},"scope":130,"src":"2150:115:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"2271:491:0","text":" @notice Set the allocation for a target with both allocator and self minting\n @param target The target contract to update\n @param allocatorMintingRate Allocator-minting rate for the target (tokens per block)\n @param selfMintingRate Self-minting rate for the target (tokens per block)\n @return applied True if the value is applied (including if already the case), false if not applied\n @dev This variant sets evenIfDistributionPending to false"},"functionSelector":"647b3682","id":48,"implemented":false,"kind":"function","modifiers":[],"name":"setTargetAllocation","nameLocation":"2776:19:0","nodeType":"FunctionDefinition","parameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39,"mutability":"mutable","name":"target","nameLocation":"2821:6:0","nodeType":"VariableDeclaration","scope":48,"src":"2805:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"},"typeName":{"id":38,"nodeType":"UserDefinedTypeName","pathNode":{"id":37,"name":"IIssuanceTarget","nameLocations":["2805:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"2805:15:0"},"referencedDeclaration":289,"src":"2805:15:0","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}},"visibility":"internal"},{"constant":false,"id":41,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"2845:20:0","nodeType":"VariableDeclaration","scope":48,"src":"2837:28:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40,"name":"uint256","nodeType":"ElementaryTypeName","src":"2837:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":43,"mutability":"mutable","name":"selfMintingRate","nameLocation":"2883:15:0","nodeType":"VariableDeclaration","scope":48,"src":"2875:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42,"name":"uint256","nodeType":"ElementaryTypeName","src":"2875:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2795:109:0"},"returnParameters":{"id":47,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46,"mutability":"mutable","name":"applied","nameLocation":"2928:7:0","nodeType":"VariableDeclaration","scope":48,"src":"2923:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":45,"name":"bool","nodeType":"ElementaryTypeName","src":"2923:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2922:14:0"},"scope":130,"src":"2767:170:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":49,"nodeType":"StructuredDocumentation","src":"2943:960:0","text":" @notice Set the allocation for a target, provided distribution has reached at least the specified block\n @param target The target contract to update\n @param allocatorMintingRate Allocator-minting rate for the target (tokens per block)\n @param selfMintingRate Self-minting rate for the target (tokens per block)\n @param minDistributedBlock Minimum block number that distribution must have reached\n @return applied True if the value is applied (including if already the case), false if distribution hasn't reached minDistributedBlock and therefore the change was not applied\n @dev Governance should explicitly call\n distributePendingIssuance(blockNumber) first if paused and not distributed up to minDistributedBlock block.\n @dev This allows configuration changes while paused: first call distributePendingIssuance(blockNumber),\n then call this function with the same or lower blockNumber."},"functionSelector":"c2cb3544","id":63,"implemented":false,"kind":"function","modifiers":[],"name":"setTargetAllocation","nameLocation":"3917:19:0","nodeType":"FunctionDefinition","parameters":{"id":59,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52,"mutability":"mutable","name":"target","nameLocation":"3962:6:0","nodeType":"VariableDeclaration","scope":63,"src":"3946:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"},"typeName":{"id":51,"nodeType":"UserDefinedTypeName","pathNode":{"id":50,"name":"IIssuanceTarget","nameLocations":["3946:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"3946:15:0"},"referencedDeclaration":289,"src":"3946:15:0","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}},"visibility":"internal"},{"constant":false,"id":54,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"3986:20:0","nodeType":"VariableDeclaration","scope":63,"src":"3978:28:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53,"name":"uint256","nodeType":"ElementaryTypeName","src":"3978:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":56,"mutability":"mutable","name":"selfMintingRate","nameLocation":"4024:15:0","nodeType":"VariableDeclaration","scope":63,"src":"4016:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55,"name":"uint256","nodeType":"ElementaryTypeName","src":"4016:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":58,"mutability":"mutable","name":"minDistributedBlock","nameLocation":"4057:19:0","nodeType":"VariableDeclaration","scope":63,"src":"4049:27:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":57,"name":"uint256","nodeType":"ElementaryTypeName","src":"4049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3936:146:0"},"returnParameters":{"id":62,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61,"mutability":"mutable","name":"applied","nameLocation":"4106:7:0","nodeType":"VariableDeclaration","scope":63,"src":"4101:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":60,"name":"bool","nodeType":"ElementaryTypeName","src":"4101:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4100:14:0"},"scope":130,"src":"3908:207:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":64,"nodeType":"StructuredDocumentation","src":"4121:238:0","text":" @notice Notify a specific target about an upcoming allocation change\n @param target Address of the target to notify\n @return notified True if notification was sent or already sent this block, false otherwise"},"functionSelector":"4887693c","id":71,"implemented":false,"kind":"function","modifiers":[],"name":"notifyTarget","nameLocation":"4373:12:0","nodeType":"FunctionDefinition","parameters":{"id":67,"nodeType":"ParameterList","parameters":[{"constant":false,"id":66,"mutability":"mutable","name":"target","nameLocation":"4394:6:0","nodeType":"VariableDeclaration","scope":71,"src":"4386:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":65,"name":"address","nodeType":"ElementaryTypeName","src":"4386:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4385:16:0"},"returnParameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"notified","nameLocation":"4425:8:0","nodeType":"VariableDeclaration","scope":71,"src":"4420:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":68,"name":"bool","nodeType":"ElementaryTypeName","src":"4420:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4419:15:0"},"scope":130,"src":"4364:71:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"4441:496:0","text":" @notice Force set the lastChangeNotifiedBlock for a target to a specific block number\n @param target Address of the target to update\n @param blockNumber Block number to set as the lastChangeNotifiedBlock\n @return notificationBlock The block number that was set\n @dev This can be used to enable notification to be sent again (by setting to a past block)\n @dev or to prevent notification until a future block (by setting to current or future block)."},"functionSelector":"7c92330b","id":81,"implemented":false,"kind":"function","modifiers":[],"name":"forceTargetNoChangeNotificationBlock","nameLocation":"4951:36:0","nodeType":"FunctionDefinition","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"target","nameLocation":"5005:6:0","nodeType":"VariableDeclaration","scope":81,"src":"4997:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"4997:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"mutability":"mutable","name":"blockNumber","nameLocation":"5029:11:0","nodeType":"VariableDeclaration","scope":81,"src":"5021:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75,"name":"uint256","nodeType":"ElementaryTypeName","src":"5021:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4987:59:0"},"returnParameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"mutability":"mutable","name":"notificationBlock","nameLocation":"5073:17:0","nodeType":"VariableDeclaration","scope":81,"src":"5065:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78,"name":"uint256","nodeType":"ElementaryTypeName","src":"5065:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5064:27:0"},"scope":130,"src":"4942:150:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":82,"nodeType":"StructuredDocumentation","src":"5098:234:0","text":" @notice Set the address that receives the default portion of issuance not allocated to other targets\n @param newAddress The new default target address (can be address(0))\n @return applied True if applied"},"functionSelector":"697cf322","id":89,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultTarget","nameLocation":"5346:16:0","nodeType":"FunctionDefinition","parameters":{"id":85,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84,"mutability":"mutable","name":"newAddress","nameLocation":"5371:10:0","nodeType":"VariableDeclaration","scope":89,"src":"5363:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83,"name":"address","nodeType":"ElementaryTypeName","src":"5363:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5362:20:0"},"returnParameters":{"id":88,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87,"mutability":"mutable","name":"applied","nameLocation":"5406:7:0","nodeType":"VariableDeclaration","scope":89,"src":"5401:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":86,"name":"bool","nodeType":"ElementaryTypeName","src":"5401:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5400:14:0"},"scope":130,"src":"5337:78:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"5421:657:0","text":" @notice Set the address that receives the default portion of issuance not allocated to other targets\n @param newAddress The new default target address (can be address(0))\n @param minDistributedBlock Minimum block number that distribution must have reached\n @return applied True if applied, false if distribution has not reached minDistributedBlock and therefore the change was not applied\n @dev Governance should explicitly call\n distributePendingIssuance(blockNumber) first if paused and distribution is not up to minDistributedBlock block.\n then call this function with the same or lower blockNumber."},"functionSelector":"d012a15b","id":99,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultTarget","nameLocation":"6092:16:0","nodeType":"FunctionDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":92,"mutability":"mutable","name":"newAddress","nameLocation":"6117:10:0","nodeType":"VariableDeclaration","scope":99,"src":"6109:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91,"name":"address","nodeType":"ElementaryTypeName","src":"6109:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":94,"mutability":"mutable","name":"minDistributedBlock","nameLocation":"6137:19:0","nodeType":"VariableDeclaration","scope":99,"src":"6129:27:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":93,"name":"uint256","nodeType":"ElementaryTypeName","src":"6129:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6108:49:0"},"returnParameters":{"id":98,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97,"mutability":"mutable","name":"applied","nameLocation":"6181:7:0","nodeType":"VariableDeclaration","scope":99,"src":"6176:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":96,"name":"bool","nodeType":"ElementaryTypeName","src":"6176:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6175:14:0"},"scope":130,"src":"6083:107:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":100,"nodeType":"StructuredDocumentation","src":"6196:503:0","text":" @notice Distribute pending accumulated allocator-minting issuance\n @dev Distributes accumulated allocator-minting issuance using current rates\n (retroactively applied to the period from lastDistributionBlock to current block).\n Prioritizes non-default targets getting full rates; default gets remainder.\n @dev Finalizes self-minting accumulation for the period being distributed.\n @return distributedBlock Block number that issuance was distributed up to"},"functionSelector":"3af5b073","id":105,"implemented":false,"kind":"function","modifiers":[],"name":"distributePendingIssuance","nameLocation":"6713:25:0","nodeType":"FunctionDefinition","parameters":{"id":101,"nodeType":"ParameterList","parameters":[],"src":"6738:2:0"},"returnParameters":{"id":104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":103,"mutability":"mutable","name":"distributedBlock","nameLocation":"6767:16:0","nodeType":"VariableDeclaration","scope":105,"src":"6759:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":102,"name":"uint256","nodeType":"ElementaryTypeName","src":"6759:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6758:26:0"},"scope":130,"src":"6704:81:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":106,"nodeType":"StructuredDocumentation","src":"6791:641:0","text":" @notice Distribute pending accumulated allocator-minting issuance up to specified block\n @param toBlockNumber Block number to distribute up to (must be <= block.number and >= lastDistributionBlock)\n @dev Distributes accumulated allocator-minting issuance using current rates\n (retroactively applied to the period from lastDistributionBlock to toBlockNumber).\n Prioritizes non-default targets getting full rates; default gets remainder.\n @dev Finalizes self-minting accumulation for the period being distributed.\n @return distributedBlock Block number that issuance was distributed up to"},"functionSelector":"52c0e18c","id":113,"implemented":false,"kind":"function","modifiers":[],"name":"distributePendingIssuance","nameLocation":"7446:25:0","nodeType":"FunctionDefinition","parameters":{"id":109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":108,"mutability":"mutable","name":"toBlockNumber","nameLocation":"7480:13:0","nodeType":"VariableDeclaration","scope":113,"src":"7472:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":107,"name":"uint256","nodeType":"ElementaryTypeName","src":"7472:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7471:23:0"},"returnParameters":{"id":112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":111,"mutability":"mutable","name":"distributedBlock","nameLocation":"7521:16:0","nodeType":"VariableDeclaration","scope":113,"src":"7513:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":110,"name":"uint256","nodeType":"ElementaryTypeName","src":"7513:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7512:26:0"},"scope":130,"src":"7437:102:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":114,"nodeType":"StructuredDocumentation","src":"7545:563:0","text":" @notice Set the self-minting event emission mode\n @param newMode The new emission mode (None, Aggregate, or PerTarget)\n @return applied True if the mode was set (including if already set to that mode)\n @dev None: Skip event emission entirely (lowest gas)\n @dev Aggregate: Emit single aggregated event for all self-minting (medium gas)\n @dev PerTarget: Emit events for each target with self-minting (highest gas)\n @dev Self-minting targets should call getTargetIssuancePerBlock() rather than relying on events"},"functionSelector":"13a7855d","id":122,"implemented":false,"kind":"function","modifiers":[],"name":"setSelfMintingEventMode","nameLocation":"8122:23:0","nodeType":"FunctionDefinition","parameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"newMode","nameLocation":"8167:7:0","nodeType":"VariableDeclaration","scope":122,"src":"8146:28:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"typeName":{"id":116,"nodeType":"UserDefinedTypeName","pathNode":{"id":115,"name":"SelfMintingEventMode","nameLocations":["8146:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":234,"src":"8146:20:0"},"referencedDeclaration":234,"src":"8146:20:0","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"visibility":"internal"}],"src":"8145:30:0"},"returnParameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120,"mutability":"mutable","name":"applied","nameLocation":"8199:7:0","nodeType":"VariableDeclaration","scope":122,"src":"8194:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":119,"name":"bool","nodeType":"ElementaryTypeName","src":"8194:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8193:14:0"},"scope":130,"src":"8113:95:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":123,"nodeType":"StructuredDocumentation","src":"8214:121:0","text":" @notice Get the current self-minting event emission mode\n @return mode The current emission mode"},"functionSelector":"93c911a8","id":129,"implemented":false,"kind":"function","modifiers":[],"name":"getSelfMintingEventMode","nameLocation":"8349:23:0","nodeType":"FunctionDefinition","parameters":{"id":124,"nodeType":"ParameterList","parameters":[],"src":"8372:2:0"},"returnParameters":{"id":128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":127,"mutability":"mutable","name":"mode","nameLocation":"8419:4:0","nodeType":"VariableDeclaration","scope":129,"src":"8398:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"typeName":{"id":126,"nodeType":"UserDefinedTypeName","pathNode":{"id":125,"name":"SelfMintingEventMode","nameLocations":["8398:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":234,"src":"8398:20:0"},"referencedDeclaration":234,"src":"8398:20:0","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"visibility":"internal"}],"src":"8397:27:0"},"scope":130,"src":"8340:85:0","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":131,"src":"428:7999:0","usedErrors":[],"usedEvents":[]}],"src":"46:8382:0"},"id":0},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationData.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationData.sol","exportedSymbols":{"AllocationTarget":[260],"IIssuanceAllocationData":[146]},"id":147,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":132,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:1"},{"id":133,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"80:19:1"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol","file":"./IIssuanceAllocatorTypes.sol","id":135,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":147,"sourceUnit":269,"src":"101:65:1","symbolAliases":[{"foreign":{"id":134,"name":"AllocationTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"110:16:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IIssuanceAllocationData","contractDependencies":[],"contractKind":"interface","documentation":{"id":136,"nodeType":"StructuredDocumentation","src":"168:280:1","text":" @title IIssuanceAllocationData\n @author Edge & Node\n @notice Interface for querying issuance allocation target data\n @dev This interface provides access to internal allocation target information,\n primarily useful for operators and off-chain monitoring systems."},"fullyImplemented":false,"id":146,"linearizedBaseContracts":[146],"name":"IIssuanceAllocationData","nameLocation":"459:23:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":137,"nodeType":"StructuredDocumentation","src":"489:210:1","text":" @notice Get target data for a specific target\n @param target Address of the target\n @return AllocationTarget struct containing target information including lastChangeNotifiedBlock"},"functionSelector":"48c3c62e","id":145,"implemented":false,"kind":"function","modifiers":[],"name":"getTargetData","nameLocation":"713:13:1","nodeType":"FunctionDefinition","parameters":{"id":140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":139,"mutability":"mutable","name":"target","nameLocation":"735:6:1","nodeType":"VariableDeclaration","scope":145,"src":"727:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"727:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"726:16:1"},"returnParameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":145,"src":"766:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_memory_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":142,"nodeType":"UserDefinedTypeName","pathNode":{"id":141,"name":"AllocationTarget","nameLocations":["766:16:1"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"766:16:1"},"referencedDeclaration":260,"src":"766:16:1","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"src":"765:25:1"},"scope":146,"src":"704:87:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":147,"src":"449:344:1","usedErrors":[],"usedEvents":[]}],"src":"46:748:1"},"id":1},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol","exportedSymbols":{"IIssuanceAllocationDistribution":[168],"TargetIssuancePerBlock":[244]},"id":169,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":148,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:2"},{"id":149,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"80:19:2"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol","file":"./IIssuanceAllocatorTypes.sol","id":151,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":169,"sourceUnit":269,"src":"101:71:2","symbolAliases":[{"foreign":{"id":150,"name":"TargetIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"110:22:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IIssuanceAllocationDistribution","contractDependencies":[],"contractKind":"interface","documentation":{"id":152,"nodeType":"StructuredDocumentation","src":"174:245:2","text":" @title IIssuanceAllocationDistribution\n @author Edge & Node\n @notice Interface for distribution and target interaction with the issuance allocator.\n This is the minimal interface that targets need to interact with the allocator."},"fullyImplemented":false,"id":168,"linearizedBaseContracts":[168],"name":"IIssuanceAllocationDistribution","nameLocation":"430:31:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":153,"nodeType":"StructuredDocumentation","src":"468:465:2","text":" @notice Distribute issuance to allocated non-self-minting targets.\n @return Block number that issuance has been distributed to. That will normally be the current block number, unless the contract is paused.\n @dev When the contract is paused, no issuance is distributed and lastIssuanceBlock is not updated.\n @dev This function is permissionless and can be called by anyone, including targets as part of their normal flow."},"functionSelector":"49bdfcb0","id":158,"implemented":false,"kind":"function","modifiers":[],"name":"distributeIssuance","nameLocation":"947:18:2","nodeType":"FunctionDefinition","parameters":{"id":154,"nodeType":"ParameterList","parameters":[],"src":"965:2:2"},"returnParameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":158,"src":"986:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":155,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"985:9:2"},"scope":168,"src":"938:57:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":159,"nodeType":"StructuredDocumentation","src":"1001:755:2","text":" @notice Target issuance per block information\n @param target Address of the target\n @return targetIssuance TargetIssuancePerBlock struct containing allocatorIssuanceBlockAppliedTo, selfIssuanceBlockAppliedTo, allocatorIssuanceRate, and selfIssuanceRate\n @dev This function does not revert when paused, instead the caller is expected to correctly read and apply the information provided.\n @dev Targets should check allocatorIssuanceBlockAppliedTo and selfIssuanceBlockAppliedTo - if either is not the current block, that type of issuance is paused for that target.\n @dev Targets should not check the allocator's pause state directly, but rely on the blockAppliedTo fields to determine if issuance is paused."},"functionSelector":"3067cb4c","id":167,"implemented":false,"kind":"function","modifiers":[],"name":"getTargetIssuancePerBlock","nameLocation":"1770:25:2","nodeType":"FunctionDefinition","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161,"mutability":"mutable","name":"target","nameLocation":"1813:6:2","nodeType":"VariableDeclaration","scope":167,"src":"1805:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":160,"name":"address","nodeType":"ElementaryTypeName","src":"1805:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1795:30:2"},"returnParameters":{"id":166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":165,"mutability":"mutable","name":"targetIssuance","nameLocation":"1879:14:2","nodeType":"VariableDeclaration","scope":167,"src":"1849:44:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TargetIssuancePerBlock_$244_memory_ptr","typeString":"struct TargetIssuancePerBlock"},"typeName":{"id":164,"nodeType":"UserDefinedTypeName","pathNode":{"id":163,"name":"TargetIssuancePerBlock","nameLocations":["1849:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":244,"src":"1849:22:2"},"referencedDeclaration":244,"src":"1849:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_TargetIssuancePerBlock_$244_storage_ptr","typeString":"struct TargetIssuancePerBlock"}},"visibility":"internal"}],"src":"1848:46:2"},"scope":168,"src":"1761:134:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":169,"src":"420:1477:2","usedErrors":[],"usedEvents":[]}],"src":"46:1852:2"},"id":2},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationStatus.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationStatus.sol","exportedSymbols":{"Allocation":[252],"DistributionState":[268],"IIssuanceAllocationStatus":[226]},"id":227,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":170,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:3"},{"id":171,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"80:19:3"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol","file":"./IIssuanceAllocatorTypes.sol","id":174,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":227,"sourceUnit":269,"src":"101:78:3","symbolAliases":[{"foreign":{"id":172,"name":"Allocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"110:10:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":173,"name":"DistributionState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"122:17:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IIssuanceAllocationStatus","contractDependencies":[],"contractKind":"interface","documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"181:321:3","text":" @title IIssuanceAllocationStatus\n @author Edge & Node\n @notice Interface for read-only status and query operations on the issuance allocator.\n All functions in this interface are view functions that provide information about\n the current state of the allocator, including allocations and system status."},"fullyImplemented":false,"id":226,"linearizedBaseContracts":[226],"name":"IIssuanceAllocationStatus","nameLocation":"513:25:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":176,"nodeType":"StructuredDocumentation","src":"545:219:3","text":" @notice Get the current allocation for a target\n @param target Address of the target\n @return allocation Allocation struct containing total, allocator-minting, and self-minting allocations"},"functionSelector":"84c48422","id":184,"implemented":false,"kind":"function","modifiers":[],"name":"getTargetAllocation","nameLocation":"778:19:3","nodeType":"FunctionDefinition","parameters":{"id":179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":178,"mutability":"mutable","name":"target","nameLocation":"806:6:3","nodeType":"VariableDeclaration","scope":184,"src":"798:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":177,"name":"address","nodeType":"ElementaryTypeName","src":"798:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"797:16:3"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"allocation","nameLocation":"855:10:3","nodeType":"VariableDeclaration","scope":184,"src":"837:28:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_memory_ptr","typeString":"struct Allocation"},"typeName":{"id":181,"nodeType":"UserDefinedTypeName","pathNode":{"id":180,"name":"Allocation","nameLocations":["837:10:3"],"nodeType":"IdentifierPath","referencedDeclaration":252,"src":"837:10:3"},"referencedDeclaration":252,"src":"837:10:3","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_storage_ptr","typeString":"struct Allocation"}},"visibility":"internal"}],"src":"836:30:3"},"scope":226,"src":"769:98:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":185,"nodeType":"StructuredDocumentation","src":"873:196:3","text":" @notice Get the current global allocation totals\n @return allocation Allocation struct containing total, allocator-minting, and self-minting allocations across all targets"},"functionSelector":"15d3b5d8","id":191,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalAllocation","nameLocation":"1083:18:3","nodeType":"FunctionDefinition","parameters":{"id":186,"nodeType":"ParameterList","parameters":[],"src":"1101:2:3"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":189,"mutability":"mutable","name":"allocation","nameLocation":"1145:10:3","nodeType":"VariableDeclaration","scope":191,"src":"1127:28:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_memory_ptr","typeString":"struct Allocation"},"typeName":{"id":188,"nodeType":"UserDefinedTypeName","pathNode":{"id":187,"name":"Allocation","nameLocations":["1127:10:3"],"nodeType":"IdentifierPath","referencedDeclaration":252,"src":"1127:10:3"},"referencedDeclaration":252,"src":"1127:10:3","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_storage_ptr","typeString":"struct Allocation"}},"visibility":"internal"}],"src":"1126:30:3"},"scope":226,"src":"1074:83:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":192,"nodeType":"StructuredDocumentation","src":"1163:110:3","text":" @notice Get all allocated target addresses\n @return targets Array of target addresses"},"functionSelector":"63fe3b56","id":198,"implemented":false,"kind":"function","modifiers":[],"name":"getTargets","nameLocation":"1287:10:3","nodeType":"FunctionDefinition","parameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"1297:2:3"},"returnParameters":{"id":197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"targets","nameLocation":"1340:7:3","nodeType":"VariableDeclaration","scope":198,"src":"1323:24:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":194,"name":"address","nodeType":"ElementaryTypeName","src":"1323:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":195,"nodeType":"ArrayTypeName","src":"1323:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1322:26:3"},"scope":226,"src":"1278:71:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":199,"nodeType":"StructuredDocumentation","src":"1355:203:3","text":" @notice Get a specific allocated target address by index\n @param index The index of the target address to retrieve\n @return target The target address at the specified index"},"functionSelector":"87ee921c","id":206,"implemented":false,"kind":"function","modifiers":[],"name":"getTargetAt","nameLocation":"1572:11:3","nodeType":"FunctionDefinition","parameters":{"id":202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":201,"mutability":"mutable","name":"index","nameLocation":"1592:5:3","nodeType":"VariableDeclaration","scope":206,"src":"1584:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":200,"name":"uint256","nodeType":"ElementaryTypeName","src":"1584:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1583:15:3"},"returnParameters":{"id":205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"mutability":"mutable","name":"target","nameLocation":"1630:6:3","nodeType":"VariableDeclaration","scope":206,"src":"1622:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"1622:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1621:16:3"},"scope":226,"src":"1563:75:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":207,"nodeType":"StructuredDocumentation","src":"1644:121:3","text":" @notice Get the number of allocated targets\n @return count The total number of allocated targets"},"functionSelector":"4a1293b7","id":212,"implemented":false,"kind":"function","modifiers":[],"name":"getTargetCount","nameLocation":"1779:14:3","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"1793:2:3"},"returnParameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":210,"mutability":"mutable","name":"count","nameLocation":"1827:5:3","nodeType":"VariableDeclaration","scope":212,"src":"1819:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":209,"name":"uint256","nodeType":"ElementaryTypeName","src":"1819:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1818:15:3"},"scope":226,"src":"1770:64:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":213,"nodeType":"StructuredDocumentation","src":"1840:124:3","text":" @notice Get the current issuance per block\n @return issuancePerBlock The current issuance per block"},"functionSelector":"79d5fc54","id":218,"implemented":false,"kind":"function","modifiers":[],"name":"getIssuancePerBlock","nameLocation":"1978:19:3","nodeType":"FunctionDefinition","parameters":{"id":214,"nodeType":"ParameterList","parameters":[],"src":"1997:2:3"},"returnParameters":{"id":217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":216,"mutability":"mutable","name":"issuancePerBlock","nameLocation":"2031:16:3","nodeType":"VariableDeclaration","scope":218,"src":"2023:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":215,"name":"uint256","nodeType":"ElementaryTypeName","src":"2023:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2022:26:3"},"scope":226,"src":"1969:80:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"2055:172:3","text":" @notice Get pending issuance distribution state\n @return distributionState DistributionState struct containing block tracking and accumulation info"},"functionSelector":"ee56977e","id":225,"implemented":false,"kind":"function","modifiers":[],"name":"getDistributionState","nameLocation":"2241:20:3","nodeType":"FunctionDefinition","parameters":{"id":220,"nodeType":"ParameterList","parameters":[],"src":"2261:2:3"},"returnParameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":223,"mutability":"mutable","name":"distributionState","nameLocation":"2312:17:3","nodeType":"VariableDeclaration","scope":225,"src":"2287:42:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DistributionState_$268_memory_ptr","typeString":"struct DistributionState"},"typeName":{"id":222,"nodeType":"UserDefinedTypeName","pathNode":{"id":221,"name":"DistributionState","nameLocations":["2287:17:3"],"nodeType":"IdentifierPath","referencedDeclaration":268,"src":"2287:17:3"},"referencedDeclaration":268,"src":"2287:17:3","typeDescriptions":{"typeIdentifier":"t_struct$_DistributionState_$268_storage_ptr","typeString":"struct DistributionState"}},"visibility":"internal"}],"src":"2286:44:3"},"scope":226,"src":"2232:99:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":227,"src":"503:1830:3","usedErrors":[],"usedEvents":[]}],"src":"46:2288:3"},"id":3},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol","exportedSymbols":{"Allocation":[252],"AllocationTarget":[260],"DistributionState":[268],"SelfMintingEventMode":[234],"TargetIssuancePerBlock":[244]},"id":269,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":228,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:4"},{"id":229,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"80:19:4"},{"canonicalName":"SelfMintingEventMode","documentation":{"id":230,"nodeType":"StructuredDocumentation","src":"101:290:4","text":" @notice Controls self-minting event emission behavior to manage gas costs\n @dev None skips event emission entirely (lowest gas)\n @dev Aggregate emits a single aggregated event for all self-minting\n @dev PerTarget emits events for each target with self-minting (highest gas)"},"id":234,"members":[{"id":231,"name":"None","nameLocation":"424:4:4","nodeType":"EnumValue","src":"424:4:4"},{"id":232,"name":"Aggregate","nameLocation":"434:9:4","nodeType":"EnumValue","src":"434:9:4"},{"id":233,"name":"PerTarget","nameLocation":"449:9:4","nodeType":"EnumValue","src":"449:9:4"}],"name":"SelfMintingEventMode","nameLocation":"397:20:4","nodeType":"EnumDefinition","src":"392:68:4"},{"canonicalName":"TargetIssuancePerBlock","documentation":{"id":235,"nodeType":"StructuredDocumentation","src":"462:410:4","text":" @notice Target issuance per block information\n @param allocatorIssuanceRate Issuance rate for allocator-minting (tokens per block)\n @param allocatorIssuanceBlockAppliedTo The block up to which allocator issuance has been applied\n @param selfIssuanceRate Issuance rate for self-minting (tokens per block)\n @param selfIssuanceBlockAppliedTo The block up to which self issuance has been applied"},"id":244,"members":[{"constant":false,"id":237,"mutability":"mutable","name":"allocatorIssuanceRate","nameLocation":"917:21:4","nodeType":"VariableDeclaration","scope":244,"src":"909:29:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":236,"name":"uint256","nodeType":"ElementaryTypeName","src":"909:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":239,"mutability":"mutable","name":"allocatorIssuanceBlockAppliedTo","nameLocation":"952:31:4","nodeType":"VariableDeclaration","scope":244,"src":"944:39:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":238,"name":"uint256","nodeType":"ElementaryTypeName","src":"944:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":241,"mutability":"mutable","name":"selfIssuanceRate","nameLocation":"997:16:4","nodeType":"VariableDeclaration","scope":244,"src":"989:24:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":240,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":243,"mutability":"mutable","name":"selfIssuanceBlockAppliedTo","nameLocation":"1027:26:4","nodeType":"VariableDeclaration","scope":244,"src":"1019:34:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":242,"name":"uint256","nodeType":"ElementaryTypeName","src":"1019:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"TargetIssuancePerBlock","nameLocation":"880:22:4","nodeType":"StructDefinition","scope":269,"src":"873:183:4","visibility":"public"},{"canonicalName":"Allocation","documentation":{"id":245,"nodeType":"StructuredDocumentation","src":"1058:310:4","text":" @notice Allocation information\n @param totalAllocationRate Total allocation rate (tokens per block: allocatorMintingRate + selfMintingRate)\n @param allocatorMintingRate Allocator-minting allocation rate (tokens per block)\n @param selfMintingRate Self-minting allocation rate (tokens per block)"},"id":252,"members":[{"constant":false,"id":247,"mutability":"mutable","name":"totalAllocationRate","nameLocation":"1401:19:4","nodeType":"VariableDeclaration","scope":252,"src":"1393:27:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":246,"name":"uint256","nodeType":"ElementaryTypeName","src":"1393:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":249,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"1434:20:4","nodeType":"VariableDeclaration","scope":252,"src":"1426:28:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":248,"name":"uint256","nodeType":"ElementaryTypeName","src":"1426:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":251,"mutability":"mutable","name":"selfMintingRate","nameLocation":"1468:15:4","nodeType":"VariableDeclaration","scope":252,"src":"1460:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":250,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Allocation","nameLocation":"1376:10:4","nodeType":"StructDefinition","scope":269,"src":"1369:117:4","visibility":"public"},{"canonicalName":"AllocationTarget","documentation":{"id":253,"nodeType":"StructuredDocumentation","src":"1488:300:4","text":" @notice Allocation target information\n @param allocatorMintingRate The allocator-minting allocation rate (tokens per block)\n @param selfMintingRate The self-minting allocation rate (tokens per block)\n @param lastChangeNotifiedBlock Last block when this target was notified of changes"},"id":260,"members":[{"constant":false,"id":255,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"1827:20:4","nodeType":"VariableDeclaration","scope":260,"src":"1819:28:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"1819:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":257,"mutability":"mutable","name":"selfMintingRate","nameLocation":"1861:15:4","nodeType":"VariableDeclaration","scope":260,"src":"1853:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":256,"name":"uint256","nodeType":"ElementaryTypeName","src":"1853:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":259,"mutability":"mutable","name":"lastChangeNotifiedBlock","nameLocation":"1890:23:4","nodeType":"VariableDeclaration","scope":260,"src":"1882:31:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":258,"name":"uint256","nodeType":"ElementaryTypeName","src":"1882:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AllocationTarget","nameLocation":"1796:16:4","nodeType":"StructDefinition","scope":269,"src":"1789:127:4","visibility":"public"},{"canonicalName":"DistributionState","documentation":{"id":261,"nodeType":"StructuredDocumentation","src":"1918:348:4","text":" @notice Distribution state information\n @param lastDistributionBlock Last block where allocator-minting issuance was distributed\n @param lastSelfMintingBlock Last block where self-minting issuance was applied\n @param selfMintingOffset Self-minting that offsets allocator-minting budget (starts during pause, clears on distribution)"},"id":268,"members":[{"constant":false,"id":263,"mutability":"mutable","name":"lastDistributionBlock","nameLocation":"2306:21:4","nodeType":"VariableDeclaration","scope":268,"src":"2298:29:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"2298:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":265,"mutability":"mutable","name":"lastSelfMintingBlock","nameLocation":"2341:20:4","nodeType":"VariableDeclaration","scope":268,"src":"2333:28:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":264,"name":"uint256","nodeType":"ElementaryTypeName","src":"2333:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":267,"mutability":"mutable","name":"selfMintingOffset","nameLocation":"2375:17:4","nodeType":"VariableDeclaration","scope":268,"src":"2367:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":266,"name":"uint256","nodeType":"ElementaryTypeName","src":"2367:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"DistributionState","nameLocation":"2274:17:4","nodeType":"StructDefinition","scope":269,"src":"2267:128:4","visibility":"public"}],"src":"46:2350:4"},"id":4},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol","exportedSymbols":{"IIssuanceTarget":[289]},"id":290,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":270,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IIssuanceTarget","contractDependencies":[],"contractKind":"interface","documentation":{"id":271,"nodeType":"StructuredDocumentation","src":"81:140:5","text":" @title IIssuanceTarget\n @author Edge & Node\n @notice Interface for contracts that receive issuance from an issuance allocator"},"fullyImplemented":false,"id":289,"linearizedBaseContracts":[289],"name":"IIssuanceTarget","nameLocation":"232:15:5","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":272,"nodeType":"StructuredDocumentation","src":"254:185:5","text":" @notice New issuance allocator set\n @param oldIssuanceAllocator Old issuance allocator address\n @param newIssuanceAllocator New issuance allocator address"},"eventSelector":"01674b69434be290e7c6acef73422bc6cf74884b5228c9e6cab93117eae2cdcb","id":278,"name":"IssuanceAllocatorSet","nameLocation":"450:20:5","nodeType":"EventDefinition","parameters":{"id":277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":274,"indexed":true,"mutability":"mutable","name":"oldIssuanceAllocator","nameLocation":"487:20:5","nodeType":"VariableDeclaration","scope":278,"src":"471:36:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":273,"name":"address","nodeType":"ElementaryTypeName","src":"471:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":276,"indexed":true,"mutability":"mutable","name":"newIssuanceAllocator","nameLocation":"525:20:5","nodeType":"VariableDeclaration","scope":278,"src":"509:36:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":275,"name":"address","nodeType":"ElementaryTypeName","src":"509:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"470:76:5"},"src":"444:103:5"},{"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"553:444:5","text":" @notice Called by the issuance allocator before the target's issuance allocation changes\n @dev The target should ensure that all issuance related calculations are up-to-date\n with the current block so that an allocation change can be applied correctly.\n Note that the allocation could change multiple times in the same block after\n this function has been called, only the final allocation is relevant."},"functionSelector":"3df8d682","id":282,"implemented":false,"kind":"function","modifiers":[],"name":"beforeIssuanceAllocationChange","nameLocation":"1011:30:5","nodeType":"FunctionDefinition","parameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"1041:2:5"},"returnParameters":{"id":281,"nodeType":"ParameterList","parameters":[],"src":"1052:0:5"},"scope":289,"src":"1002:51:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":283,"nodeType":"StructuredDocumentation","src":"1059:313:5","text":" @notice Sets the issuance allocator for this target\n @dev This function facilitates upgrades by providing a standard way for targets\n to change their allocator. Implementations can define their own access control.\n @param newIssuanceAllocator Address of the issuance allocator"},"functionSelector":"931c0ac1","id":288,"implemented":false,"kind":"function","modifiers":[],"name":"setIssuanceAllocator","nameLocation":"1386:20:5","nodeType":"FunctionDefinition","parameters":{"id":286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"newIssuanceAllocator","nameLocation":"1415:20:5","nodeType":"VariableDeclaration","scope":288,"src":"1407:28:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":284,"name":"address","nodeType":"ElementaryTypeName","src":"1407:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1406:30:5"},"returnParameters":{"id":287,"nodeType":"ParameterList","parameters":[],"src":"1445:0:5"},"scope":289,"src":"1377:69:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":290,"src":"222:1226:5","usedErrors":[],"usedEvents":[278]}],"src":"46:1403:5"},"id":5},"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/ISendTokens.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/ISendTokens.sol","exportedSymbols":{"ISendTokens":[301]},"id":302,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":291,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:6"},{"abstract":false,"baseContracts":[],"canonicalName":"ISendTokens","contractDependencies":[],"contractKind":"interface","documentation":{"id":292,"nodeType":"StructuredDocumentation","src":"81:272:6","text":" @title ISendTokens\n @author Edge & Node\n @notice Interface for contracts that can send tokens to arbitrary addresses\n @dev This interface provides a simple token transfer capability for contracts\n that need to distribute or send tokens programmatically."},"fullyImplemented":false,"id":301,"linearizedBaseContracts":[301],"name":"ISendTokens","nameLocation":"364:11:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":293,"nodeType":"StructuredDocumentation","src":"382:158:6","text":" @notice Send tokens to a specified address\n @param to The address to send tokens to\n @param amount The amount of tokens to send"},"functionSelector":"05ab421d","id":300,"implemented":false,"kind":"function","modifiers":[],"name":"sendTokens","nameLocation":"554:10:6","nodeType":"FunctionDefinition","parameters":{"id":298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":295,"mutability":"mutable","name":"to","nameLocation":"573:2:6","nodeType":"VariableDeclaration","scope":300,"src":"565:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":294,"name":"address","nodeType":"ElementaryTypeName","src":"565:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":297,"mutability":"mutable","name":"amount","nameLocation":"585:6:6","nodeType":"VariableDeclaration","scope":300,"src":"577:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":296,"name":"uint256","nodeType":"ElementaryTypeName","src":"577:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"564:28:6"},"returnParameters":{"id":299,"nodeType":"ParameterList","parameters":[],"src":"601:0:6"},"scope":301,"src":"545:57:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":302,"src":"354:250:6","usedErrors":[],"usedEvents":[]}],"src":"46:559:6"},"id":6},"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol","exportedSymbols":{"IPausableControl":[319]},"id":320,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":303,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IPausableControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":304,"nodeType":"StructuredDocumentation","src":"81:435:7","text":" @title IPausableControl\n @author Edge & Node\n @notice Interface for contracts that support pause/unpause functionality\n @dev This interface extends standard pausable functionality with explicit\n pause and unpause functions. Contracts implementing this interface allow\n authorized accounts to pause and unpause contract operations.\n Events (Paused, Unpaused) are inherited from OpenZeppelin's PausableUpgradeable."},"fullyImplemented":false,"id":319,"linearizedBaseContracts":[319],"name":"IPausableControl","nameLocation":"527:16:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":305,"nodeType":"StructuredDocumentation","src":"550:154:7","text":" @notice Pause the contract\n @dev Pauses contract operations. Only functions using whenNotPaused\n modifier will be affected."},"functionSelector":"8456cb59","id":308,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"718:5:7","nodeType":"FunctionDefinition","parameters":{"id":306,"nodeType":"ParameterList","parameters":[],"src":"723:2:7"},"returnParameters":{"id":307,"nodeType":"ParameterList","parameters":[],"src":"734:0:7"},"scope":319,"src":"709:26:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":309,"nodeType":"StructuredDocumentation","src":"741:154:7","text":" @notice Unpause the contract\n @dev Resumes contract operations. Only functions using whenPaused\n modifier will be affected."},"functionSelector":"3f4ba83a","id":312,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"909:7:7","nodeType":"FunctionDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[],"src":"916:2:7"},"returnParameters":{"id":311,"nodeType":"ParameterList","parameters":[],"src":"927:0:7"},"scope":319,"src":"900:28:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":313,"nodeType":"StructuredDocumentation","src":"934:131:7","text":" @notice Check if the contract is currently paused\n @return True if the contract is paused, false otherwise"},"functionSelector":"5c975abb","id":318,"implemented":false,"kind":"function","modifiers":[],"name":"paused","nameLocation":"1079:6:7","nodeType":"FunctionDefinition","parameters":{"id":314,"nodeType":"ParameterList","parameters":[],"src":"1085:2:7"},"returnParameters":{"id":317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":316,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":318,"src":"1111:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":315,"name":"bool","nodeType":"ElementaryTypeName","src":"1111:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1110:6:7"},"scope":319,"src":"1070:47:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":320,"src":"517:602:7","usedErrors":[],"usedEvents":[]}],"src":"46:1074:7"},"id":7},"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibility.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibility.sol","exportedSymbols":{"IRewardsEligibility":[331]},"id":332,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":321,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IRewardsEligibility","contractDependencies":[],"contractKind":"interface","documentation":{"id":322,"nodeType":"StructuredDocumentation","src":"81:260:8","text":" @title IRewardsEligibility\n @author Edge & Node\n @notice Minimal interface for checking indexer rewards eligibility\n @dev This is the interface that consumers (e.g., RewardsManager) need to check\n if an indexer is eligible to receive rewards"},"fullyImplemented":false,"id":331,"linearizedBaseContracts":[331],"name":"IRewardsEligibility","nameLocation":"352:19:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":323,"nodeType":"StructuredDocumentation","src":"378:205:8","text":" @notice Check if an indexer is eligible to receive rewards\n @param indexer Address of the indexer\n @return True if the indexer is eligible to receive rewards, false otherwise"},"functionSelector":"66e305fd","id":330,"implemented":false,"kind":"function","modifiers":[],"name":"isEligible","nameLocation":"597:10:8","nodeType":"FunctionDefinition","parameters":{"id":326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"indexer","nameLocation":"616:7:8","nodeType":"VariableDeclaration","scope":330,"src":"608:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":324,"name":"address","nodeType":"ElementaryTypeName","src":"608:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"607:17:8"},"returnParameters":{"id":329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":328,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":330,"src":"648:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":327,"name":"bool","nodeType":"ElementaryTypeName","src":"648:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"647:6:8"},"scope":331,"src":"588:66:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":332,"src":"342:314:8","usedErrors":[],"usedEvents":[]}],"src":"46:611:8"},"id":8},"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityAdministration.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityAdministration.sol","exportedSymbols":{"IRewardsEligibilityAdministration":[363],"IRewardsEligibilityEvents":[400]},"id":364,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":333,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:9"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityEvents.sol","file":"./IRewardsEligibilityEvents.sol","id":335,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":364,"sourceUnit":401,"src":"81:76:9","symbolAliases":[{"foreign":{"id":334,"name":"IRewardsEligibilityEvents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"90:25:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":337,"name":"IRewardsEligibilityEvents","nameLocations":["437:25:9"],"nodeType":"IdentifierPath","referencedDeclaration":400,"src":"437:25:9"},"id":338,"nodeType":"InheritanceSpecifier","src":"437:25:9"}],"canonicalName":"IRewardsEligibilityAdministration","contractDependencies":[],"contractKind":"interface","documentation":{"id":336,"nodeType":"StructuredDocumentation","src":"159:230:9","text":" @title IRewardsEligibilityAdministration\n @author Edge & Node\n @notice Interface for administrative operations on rewards eligibility\n @dev Functions in this interface are restricted to accounts with OPERATOR_ROLE"},"fullyImplemented":false,"id":363,"linearizedBaseContracts":[363,400],"name":"IRewardsEligibilityAdministration","nameLocation":"400:33:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":339,"nodeType":"StructuredDocumentation","src":"469:293:9","text":" @notice Set the eligibility period for indexers\n @dev Only callable by accounts with the OPERATOR_ROLE\n @param eligibilityPeriod New eligibility period in seconds\n @return True if the state is as requested (eligibility period is set to the specified value)"},"functionSelector":"5fd772d5","id":346,"implemented":false,"kind":"function","modifiers":[],"name":"setEligibilityPeriod","nameLocation":"776:20:9","nodeType":"FunctionDefinition","parameters":{"id":342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":341,"mutability":"mutable","name":"eligibilityPeriod","nameLocation":"805:17:9","nodeType":"VariableDeclaration","scope":346,"src":"797:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":340,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"796:27:9"},"returnParameters":{"id":345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":346,"src":"842:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":343,"name":"bool","nodeType":"ElementaryTypeName","src":"842:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"841:6:9"},"scope":363,"src":"767:81:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":347,"nodeType":"StructuredDocumentation","src":"854:270:9","text":" @notice Set the oracle update timeout\n @dev Only callable by accounts with the OPERATOR_ROLE\n @param oracleUpdateTimeout New timeout period in seconds\n @return True if the state is as requested (timeout is set to the specified value)"},"functionSelector":"924ace83","id":354,"implemented":false,"kind":"function","modifiers":[],"name":"setOracleUpdateTimeout","nameLocation":"1138:22:9","nodeType":"FunctionDefinition","parameters":{"id":350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"mutability":"mutable","name":"oracleUpdateTimeout","nameLocation":"1169:19:9","nodeType":"VariableDeclaration","scope":354,"src":"1161:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":348,"name":"uint256","nodeType":"ElementaryTypeName","src":"1161:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1160:29:9"},"returnParameters":{"id":353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":352,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":354,"src":"1208:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":351,"name":"bool","nodeType":"ElementaryTypeName","src":"1208:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1207:6:9"},"scope":363,"src":"1129:85:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":355,"nodeType":"StructuredDocumentation","src":"1220:273:9","text":" @notice Set eligibility validation state\n @dev Only callable by accounts with the OPERATOR_ROLE\n @param enabled True to enable eligibility validation, false to disable\n @return True if successfully set (always the case for current code)"},"functionSelector":"57f44afc","id":362,"implemented":false,"kind":"function","modifiers":[],"name":"setEligibilityValidation","nameLocation":"1507:24:9","nodeType":"FunctionDefinition","parameters":{"id":358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":357,"mutability":"mutable","name":"enabled","nameLocation":"1537:7:9","nodeType":"VariableDeclaration","scope":362,"src":"1532:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":356,"name":"bool","nodeType":"ElementaryTypeName","src":"1532:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1531:14:9"},"returnParameters":{"id":361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":362,"src":"1564:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":359,"name":"bool","nodeType":"ElementaryTypeName","src":"1564:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1563:6:9"},"scope":363,"src":"1498:72:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":364,"src":"390:1182:9","usedErrors":[],"usedEvents":[373,380,387,392,399]}],"src":"46:1527:9"},"id":9},"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityEvents.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityEvents.sol","exportedSymbols":{"IRewardsEligibilityEvents":[400]},"id":401,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":365,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:10"},{"abstract":false,"baseContracts":[],"canonicalName":"IRewardsEligibilityEvents","contractDependencies":[],"contractKind":"interface","documentation":{"id":366,"nodeType":"StructuredDocumentation","src":"81:126:10","text":" @title IRewardsEligibilityEvents\n @author Edge & Node\n @notice Shared events for rewards eligibility interfaces"},"fullyImplemented":true,"id":400,"linearizedBaseContracts":[400],"name":"IRewardsEligibilityEvents","nameLocation":"218:25:10","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":367,"nodeType":"StructuredDocumentation","src":"250:196:10","text":"@notice Emitted when an oracle submits eligibility data\n @param oracle The address of the oracle that submitted the data\n @param data The eligibility data submitted by the oracle"},"eventSelector":"e603483c2281239f0a282ac8ac9324bc4b9283e6340483eadd9b4cca81a957e5","id":373,"name":"IndexerEligibilityData","nameLocation":"457:22:10","nodeType":"EventDefinition","parameters":{"id":372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":369,"indexed":true,"mutability":"mutable","name":"oracle","nameLocation":"496:6:10","nodeType":"VariableDeclaration","scope":373,"src":"480:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":368,"name":"address","nodeType":"ElementaryTypeName","src":"480:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":371,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"510:4:10","nodeType":"VariableDeclaration","scope":373,"src":"504:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":370,"name":"bytes","nodeType":"ElementaryTypeName","src":"504:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"479:36:10"},"src":"451:65:10"},{"anonymous":false,"documentation":{"id":374,"nodeType":"StructuredDocumentation","src":"522:240:10","text":"@notice Emitted when an indexer's eligibility is renewed by an oracle\n @param indexer The address of the indexer whose eligibility was renewed\n @param oracle The address of the oracle that renewed the indexer's eligibility"},"eventSelector":"baf783ed4f4280852e5630223d966efd3c385bebebc564d77dcc52bb37f482eb","id":380,"name":"IndexerEligibilityRenewed","nameLocation":"773:25:10","nodeType":"EventDefinition","parameters":{"id":379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":376,"indexed":true,"mutability":"mutable","name":"indexer","nameLocation":"815:7:10","nodeType":"VariableDeclaration","scope":380,"src":"799:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":375,"name":"address","nodeType":"ElementaryTypeName","src":"799:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":378,"indexed":true,"mutability":"mutable","name":"oracle","nameLocation":"840:6:10","nodeType":"VariableDeclaration","scope":380,"src":"824:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":377,"name":"address","nodeType":"ElementaryTypeName","src":"824:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"798:49:10"},"src":"767:81:10"},{"anonymous":false,"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"854:189:10","text":"@notice Emitted when the eligibility period is updated\n @param oldPeriod The previous eligibility period in seconds\n @param newPeriod The new eligibility period in seconds"},"eventSelector":"0ffeabd3681741e8a569030189b0d178e1ab32a0514b46f2ddce28e2ef09f8ca","id":387,"name":"EligibilityPeriodUpdated","nameLocation":"1054:24:10","nodeType":"EventDefinition","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":383,"indexed":true,"mutability":"mutable","name":"oldPeriod","nameLocation":"1095:9:10","nodeType":"VariableDeclaration","scope":387,"src":"1079:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":382,"name":"uint256","nodeType":"ElementaryTypeName","src":"1079:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":385,"indexed":true,"mutability":"mutable","name":"newPeriod","nameLocation":"1122:9:10","nodeType":"VariableDeclaration","scope":387,"src":"1106:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"1106:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1078:54:10"},"src":"1048:85:10"},{"anonymous":false,"documentation":{"id":388,"nodeType":"StructuredDocumentation","src":"1139:154:10","text":"@notice Emitted when eligibility validation is enabled or disabled\n @param enabled True if eligibility validation is enabled, false if disabled"},"eventSelector":"99f730a7ae95f5ede5ab68fa2974744abf69191ec2ccbe09a6d90b02366e4156","id":392,"name":"EligibilityValidationUpdated","nameLocation":"1304:28:10","nodeType":"EventDefinition","parameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":390,"indexed":true,"mutability":"mutable","name":"enabled","nameLocation":"1346:7:10","nodeType":"VariableDeclaration","scope":392,"src":"1333:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":389,"name":"bool","nodeType":"ElementaryTypeName","src":"1333:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1332:22:10"},"src":"1298:57:10"},{"anonymous":false,"documentation":{"id":393,"nodeType":"StructuredDocumentation","src":"1361:186:10","text":"@notice Emitted when the oracle update timeout is updated\n @param oldTimeout The previous timeout period in seconds\n @param newTimeout The new timeout period in seconds"},"eventSelector":"3694101f93660bb31e580cd216af03495bd117038731c99e3580ba935d2e198f","id":399,"name":"OracleUpdateTimeoutUpdated","nameLocation":"1558:26:10","nodeType":"EventDefinition","parameters":{"id":398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"indexed":true,"mutability":"mutable","name":"oldTimeout","nameLocation":"1601:10:10","nodeType":"VariableDeclaration","scope":399,"src":"1585:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1585:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":397,"indexed":true,"mutability":"mutable","name":"newTimeout","nameLocation":"1629:10:10","nodeType":"VariableDeclaration","scope":399,"src":"1613:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1613:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1584:56:10"},"src":"1552:89:10"}],"scope":401,"src":"208:1435:10","usedErrors":[],"usedEvents":[373,380,387,392,399]}],"src":"46:1598:10"},"id":10},"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityReporting.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityReporting.sol","exportedSymbols":{"IRewardsEligibilityEvents":[400],"IRewardsEligibilityReporting":[419]},"id":420,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":402,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:11"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityEvents.sol","file":"./IRewardsEligibilityEvents.sol","id":404,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":420,"sourceUnit":401,"src":"81:76:11","symbolAliases":[{"foreign":{"id":403,"name":"IRewardsEligibilityEvents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"90:25:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":406,"name":"IRewardsEligibilityEvents","nameLocations":["416:25:11"],"nodeType":"IdentifierPath","referencedDeclaration":400,"src":"416:25:11"},"id":407,"nodeType":"InheritanceSpecifier","src":"416:25:11"}],"canonicalName":"IRewardsEligibilityReporting","contractDependencies":[],"contractKind":"interface","documentation":{"id":405,"nodeType":"StructuredDocumentation","src":"159:214:11","text":" @title IRewardsEligibilityReporting\n @author Edge & Node\n @notice Interface for oracle reporting of indexer eligibility\n @dev Functions in this interface are restricted to accounts with ORACLE_ROLE"},"fullyImplemented":false,"id":419,"linearizedBaseContracts":[419,400],"name":"IRewardsEligibilityReporting","nameLocation":"384:28:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":408,"nodeType":"StructuredDocumentation","src":"448:306:11","text":" @notice Renew eligibility for provided indexers to receive rewards\n @param indexers Array of indexer addresses. Zero addresses are ignored.\n @param data Arbitrary calldata for future extensions\n @return Number of indexers whose eligibility renewal timestamp was updated"},"functionSelector":"38b7c077","id":418,"implemented":false,"kind":"function","modifiers":[],"name":"renewIndexerEligibility","nameLocation":"768:23:11","nodeType":"FunctionDefinition","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"indexers","nameLocation":"811:8:11","nodeType":"VariableDeclaration","scope":418,"src":"792:27:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":409,"name":"address","nodeType":"ElementaryTypeName","src":"792:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":410,"nodeType":"ArrayTypeName","src":"792:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"data","nameLocation":"836:4:11","nodeType":"VariableDeclaration","scope":418,"src":"821:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":412,"name":"bytes","nodeType":"ElementaryTypeName","src":"821:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"791:50:11"},"returnParameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":418,"src":"860:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":415,"name":"uint256","nodeType":"ElementaryTypeName","src":"860:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"859:9:11"},"scope":419,"src":"759:110:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":420,"src":"374:497:11","usedErrors":[],"usedEvents":[373,380,387,392,399]}],"src":"46:826:11"},"id":11},"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityStatus.sol":{"ast":{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityStatus.sol","exportedSymbols":{"IRewardsEligibilityStatus":[455]},"id":456,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":421,"literals":["solidity","^","0.7",".6","||","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:33:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IRewardsEligibilityStatus","contractDependencies":[],"contractKind":"interface","documentation":{"id":422,"nodeType":"StructuredDocumentation","src":"81:209:12","text":" @title IRewardsEligibilityStatus\n @author Edge & Node\n @notice Interface for querying rewards eligibility status and configuration\n @dev All functions are view-only and can be called by anyone"},"fullyImplemented":false,"id":455,"linearizedBaseContracts":[455],"name":"IRewardsEligibilityStatus","nameLocation":"301:25:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":423,"nodeType":"StructuredDocumentation","src":"333:241:12","text":" @notice Get the last eligibility renewal timestamp for an indexer\n @param indexer Address of the indexer\n @return The last eligibility renewal timestamp, or 0 if the indexer's eligibility has never been renewed"},"functionSelector":"d353402d","id":430,"implemented":false,"kind":"function","modifiers":[],"name":"getEligibilityRenewalTime","nameLocation":"588:25:12","nodeType":"FunctionDefinition","parameters":{"id":426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":425,"mutability":"mutable","name":"indexer","nameLocation":"622:7:12","nodeType":"VariableDeclaration","scope":430,"src":"614:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":424,"name":"address","nodeType":"ElementaryTypeName","src":"614:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"613:17:12"},"returnParameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"654:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":427,"name":"uint256","nodeType":"ElementaryTypeName","src":"654:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"653:9:12"},"scope":455,"src":"579:84:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":431,"nodeType":"StructuredDocumentation","src":"669:110:12","text":" @notice Get the eligibility period\n @return The current eligibility period in seconds"},"functionSelector":"d0a5379e","id":436,"implemented":false,"kind":"function","modifiers":[],"name":"getEligibilityPeriod","nameLocation":"793:20:12","nodeType":"FunctionDefinition","parameters":{"id":432,"nodeType":"ParameterList","parameters":[],"src":"813:2:12"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":436,"src":"839:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"839:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"838:9:12"},"scope":455,"src":"784:64:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":437,"nodeType":"StructuredDocumentation","src":"854:116:12","text":" @notice Get the oracle update timeout\n @return The current oracle update timeout in seconds"},"functionSelector":"20ea3509","id":442,"implemented":false,"kind":"function","modifiers":[],"name":"getOracleUpdateTimeout","nameLocation":"984:22:12","nodeType":"FunctionDefinition","parameters":{"id":438,"nodeType":"ParameterList","parameters":[],"src":"1006:2:12"},"returnParameters":{"id":441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":440,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":442,"src":"1032:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":439,"name":"uint256","nodeType":"ElementaryTypeName","src":"1032:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1031:9:12"},"scope":455,"src":"975:66:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":443,"nodeType":"StructuredDocumentation","src":"1047:113:12","text":" @notice Get the last oracle update time\n @return The timestamp of the last oracle update"},"functionSelector":"be626dd2","id":448,"implemented":false,"kind":"function","modifiers":[],"name":"getLastOracleUpdateTime","nameLocation":"1174:23:12","nodeType":"FunctionDefinition","parameters":{"id":444,"nodeType":"ParameterList","parameters":[],"src":"1197:2:12"},"returnParameters":{"id":447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":446,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":448,"src":"1223:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":445,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:9:12"},"scope":455,"src":"1165:67:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":449,"nodeType":"StructuredDocumentation","src":"1238:133:12","text":" @notice Get eligibility validation state\n @return True if eligibility validation is enabled, false otherwise"},"functionSelector":"ce0a2071","id":454,"implemented":false,"kind":"function","modifiers":[],"name":"getEligibilityValidation","nameLocation":"1385:24:12","nodeType":"FunctionDefinition","parameters":{"id":450,"nodeType":"ParameterList","parameters":[],"src":"1409:2:12"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":454,"src":"1435:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":451,"name":"bool","nodeType":"ElementaryTypeName","src":"1435:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1434:6:12"},"scope":455,"src":"1376:65:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":456,"src":"291:1152:12","usedErrors":[],"usedEvents":[]}],"src":"46:1398:12"},"id":12},"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol","exportedSymbols":{"AccessControlUpgradeable":[820],"ContextUpgradeable":[1360],"ERC165Upgradeable":[1560],"IAccessControl":[1643],"IERC165":[3367],"Initializable":[1314]},"id":821,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":457,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:13"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","id":459,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":821,"sourceUnit":1644,"src":"134:81:13","symbolAliases":[{"foreign":{"id":458,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"142:14:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":461,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":821,"sourceUnit":1361,"src":"216:67:13","symbolAliases":[{"foreign":{"id":460,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1360,"src":"224:18:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":463,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":821,"sourceUnit":3368,"src":"284:80:13","symbolAliases":[{"foreign":{"id":462,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"292:7:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol","file":"../utils/introspection/ERC165Upgradeable.sol","id":465,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":821,"sourceUnit":1561,"src":"365:79:13","symbolAliases":[{"foreign":{"id":464,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"373:17:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":467,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":821,"sourceUnit":1315,"src":"445:63:13","symbolAliases":[{"foreign":{"id":466,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"453:13:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":469,"name":"Initializable","nameLocations":["2217:13:13"],"nodeType":"IdentifierPath","referencedDeclaration":1314,"src":"2217:13:13"},"id":470,"nodeType":"InheritanceSpecifier","src":"2217:13:13"},{"baseName":{"id":471,"name":"ContextUpgradeable","nameLocations":["2232:18:13"],"nodeType":"IdentifierPath","referencedDeclaration":1360,"src":"2232:18:13"},"id":472,"nodeType":"InheritanceSpecifier","src":"2232:18:13"},{"baseName":{"id":473,"name":"IAccessControl","nameLocations":["2252:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":1643,"src":"2252:14:13"},"id":474,"nodeType":"InheritanceSpecifier","src":"2252:14:13"},{"baseName":{"id":475,"name":"ERC165Upgradeable","nameLocations":["2268:17:13"],"nodeType":"IdentifierPath","referencedDeclaration":1560,"src":"2268:17:13"},"id":476,"nodeType":"InheritanceSpecifier","src":"2268:17:13"}],"canonicalName":"AccessControlUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":468,"nodeType":"StructuredDocumentation","src":"510:1660:13","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n     require(hasRole(MY_ROLE, msg.sender));\n     ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role."},"fullyImplemented":true,"id":820,"linearizedBaseContracts":[820,1560,3367,1643,1360,1314],"name":"AccessControlUpgradeable","nameLocation":"2189:24:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"AccessControlUpgradeable.RoleData","id":483,"members":[{"constant":false,"id":480,"mutability":"mutable","name":"hasRole","nameLocation":"2351:7:13","nodeType":"VariableDeclaration","scope":483,"src":"2318:40:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":479,"keyName":"account","keyNameLocation":"2334:7:13","keyType":{"id":477,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2318:32:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":478,"name":"bool","nodeType":"ElementaryTypeName","src":"2345:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":482,"mutability":"mutable","name":"adminRole","nameLocation":"2376:9:13","nodeType":"VariableDeclaration","scope":483,"src":"2368:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":481,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2368:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"2299:8:13","nodeType":"StructDefinition","scope":820,"src":"2292:100:13","visibility":"public"},{"constant":true,"functionSelector":"a217fddf","id":486,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2422:18:13","nodeType":"VariableDeclaration","scope":820,"src":"2398:49:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":484,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2398:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2443:4:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"canonicalName":"AccessControlUpgradeable.AccessControlStorage","documentation":{"id":487,"nodeType":"StructuredDocumentation","src":"2455:71:13","text":"@custom:storage-location erc7201:openzeppelin.storage.AccessControl"},"id":493,"members":[{"constant":false,"id":492,"mutability":"mutable","name":"_roles","nameLocation":"2603:6:13","nodeType":"VariableDeclaration","scope":493,"src":"2569:40:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$483_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"typeName":{"id":491,"keyName":"role","keyNameLocation":"2585:4:13","keyType":{"id":488,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2577:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2569:33:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$483_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":490,"nodeType":"UserDefinedTypeName","pathNode":{"id":489,"name":"RoleData","nameLocations":["2593:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":483,"src":"2593:8:13"},"referencedDeclaration":483,"src":"2593:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$483_storage_ptr","typeString":"struct AccessControlUpgradeable.RoleData"}}},"visibility":"internal"}],"name":"AccessControlStorage","nameLocation":"2538:20:13","nodeType":"StructDefinition","scope":820,"src":"2531:85:13","visibility":"public"},{"constant":true,"id":496,"mutability":"constant","name":"AccessControlStorageLocation","nameLocation":"2764:28:13","nodeType":"VariableDeclaration","scope":820,"src":"2739:122:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":494,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2739:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830326464376263376465633464636565646461373735653538646435343165303861313136633663353338313563306264303238313932663762363236383030","id":495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2795:66:13","typeDescriptions":{"typeIdentifier":"t_rational_1295953201772911215391058989745868821651057887752387839782086074958115661824_by_1","typeString":"int_const 1295...(68 digits omitted)...1824"},"value":"0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800"},"visibility":"private"},{"body":{"id":503,"nodeType":"Block","src":"2958:87:13","statements":[{"AST":{"nativeSrc":"2977:62:13","nodeType":"YulBlock","src":"2977:62:13","statements":[{"nativeSrc":"2991:38:13","nodeType":"YulAssignment","src":"2991:38:13","value":{"name":"AccessControlStorageLocation","nativeSrc":"3001:28:13","nodeType":"YulIdentifier","src":"3001:28:13"},"variableNames":[{"name":"$.slot","nativeSrc":"2991:6:13","nodeType":"YulIdentifier","src":"2991:6:13"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":500,"isOffset":false,"isSlot":true,"src":"2991:6:13","suffix":"slot","valueSize":1},{"declaration":496,"isOffset":false,"isSlot":false,"src":"3001:28:13","valueSize":1}],"id":502,"nodeType":"InlineAssembly","src":"2968:71:13"}]},"id":504,"implemented":true,"kind":"function","modifiers":[],"name":"_getAccessControlStorage","nameLocation":"2877:24:13","nodeType":"FunctionDefinition","parameters":{"id":497,"nodeType":"ParameterList","parameters":[],"src":"2901:2:13"},"returnParameters":{"id":501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":500,"mutability":"mutable","name":"$","nameLocation":"2955:1:13","nodeType":"VariableDeclaration","scope":504,"src":"2926:30:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":499,"nodeType":"UserDefinedTypeName","pathNode":{"id":498,"name":"AccessControlStorage","nameLocations":["2926:20:13"],"nodeType":"IdentifierPath","referencedDeclaration":493,"src":"2926:20:13"},"referencedDeclaration":493,"src":"2926:20:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"src":"2925:32:13"},"scope":820,"src":"2868:177:13","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":514,"nodeType":"Block","src":"3262:44:13","statements":[{"expression":{"arguments":[{"id":510,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"3283:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":509,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[587,608],"referencedDeclaration":587,"src":"3272:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3272:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":512,"nodeType":"ExpressionStatement","src":"3272:16:13"},{"id":513,"nodeType":"PlaceholderStatement","src":"3298:1:13"}]},"documentation":{"id":505,"nodeType":"StructuredDocumentation","src":"3051:174:13","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role."},"id":515,"name":"onlyRole","nameLocation":"3239:8:13","nodeType":"ModifierDefinition","parameters":{"id":508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":507,"mutability":"mutable","name":"role","nameLocation":"3256:4:13","nodeType":"VariableDeclaration","scope":515,"src":"3248:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":506,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3248:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3247:14:13"},"src":"3230:76:13","virtual":false,"visibility":"internal"},{"body":{"id":520,"nodeType":"Block","src":"3370:7:13","statements":[]},"id":521,"implemented":true,"kind":"function","modifiers":[{"id":518,"kind":"modifierInvocation","modifierName":{"id":517,"name":"onlyInitializing","nameLocations":["3353:16:13"],"nodeType":"IdentifierPath","referencedDeclaration":1209,"src":"3353:16:13"},"nodeType":"ModifierInvocation","src":"3353:16:13"}],"name":"__AccessControl_init","nameLocation":"3321:20:13","nodeType":"FunctionDefinition","parameters":{"id":516,"nodeType":"ParameterList","parameters":[],"src":"3341:2:13"},"returnParameters":{"id":519,"nodeType":"ParameterList","parameters":[],"src":"3370:0:13"},"scope":820,"src":"3312:65:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":526,"nodeType":"Block","src":"3451:7:13","statements":[]},"id":527,"implemented":true,"kind":"function","modifiers":[{"id":524,"kind":"modifierInvocation","modifierName":{"id":523,"name":"onlyInitializing","nameLocations":["3434:16:13"],"nodeType":"IdentifierPath","referencedDeclaration":1209,"src":"3434:16:13"},"nodeType":"ModifierInvocation","src":"3434:16:13"}],"name":"__AccessControl_init_unchained","nameLocation":"3392:30:13","nodeType":"FunctionDefinition","parameters":{"id":522,"nodeType":"ParameterList","parameters":[],"src":"3422:2:13"},"returnParameters":{"id":525,"nodeType":"ParameterList","parameters":[],"src":"3451:0:13"},"scope":820,"src":"3383:75:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1559],"body":{"id":548,"nodeType":"Block","src":"3582:111:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":536,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"3599:11:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":538,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"3619:14:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1643_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1643_$","typeString":"type(contract IAccessControl)"}],"id":537,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3614:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3614:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$1643","typeString":"type(contract IAccessControl)"}},"id":540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3635:11:13","memberName":"interfaceId","nodeType":"MemberAccess","src":"3614:32:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3599:47:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":544,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"3674:11:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":542,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3650:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlUpgradeable_$820_$","typeString":"type(contract super AccessControlUpgradeable)"}},"id":543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3656:17:13","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1559,"src":"3650:23:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3650:36:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3599:87:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":535,"id":547,"nodeType":"Return","src":"3592:94:13"}]},"documentation":{"id":528,"nodeType":"StructuredDocumentation","src":"3463:23:13","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":549,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"3500:17:13","nodeType":"FunctionDefinition","overrides":{"id":532,"nodeType":"OverrideSpecifier","overrides":[],"src":"3558:8:13"},"parameters":{"id":531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":530,"mutability":"mutable","name":"interfaceId","nameLocation":"3525:11:13","nodeType":"VariableDeclaration","scope":549,"src":"3518:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":529,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3518:6:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3517:20:13"},"returnParameters":{"id":535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":534,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":549,"src":"3576:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":533,"name":"bool","nodeType":"ElementaryTypeName","src":"3576:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3575:6:13"},"scope":820,"src":"3491:202:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1610],"body":{"id":573,"nodeType":"Block","src":"3863:124:13","statements":[{"assignments":[561],"declarations":[{"constant":false,"id":561,"mutability":"mutable","name":"$","nameLocation":"3902:1:13","nodeType":"VariableDeclaration","scope":573,"src":"3873:30:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":560,"nodeType":"UserDefinedTypeName","pathNode":{"id":559,"name":"AccessControlStorage","nameLocations":["3873:20:13"],"nodeType":"IdentifierPath","referencedDeclaration":493,"src":"3873:20:13"},"referencedDeclaration":493,"src":"3873:20:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":564,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":562,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3906:24:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$493_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3906:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3873:59:13"},{"expression":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":565,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"3949:1:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":566,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3951:6:13","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":492,"src":"3949:8:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$483_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":568,"indexExpression":{"id":567,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":552,"src":"3958:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3949:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$483_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3964:7:13","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":480,"src":"3949:22:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":571,"indexExpression":{"id":570,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"3972:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3949:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":558,"id":572,"nodeType":"Return","src":"3942:38:13"}]},"documentation":{"id":550,"nodeType":"StructuredDocumentation","src":"3699:76:13","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":574,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"3789:7:13","nodeType":"FunctionDefinition","parameters":{"id":555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":552,"mutability":"mutable","name":"role","nameLocation":"3805:4:13","nodeType":"VariableDeclaration","scope":574,"src":"3797:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":551,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3797:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":554,"mutability":"mutable","name":"account","nameLocation":"3819:7:13","nodeType":"VariableDeclaration","scope":574,"src":"3811:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":553,"name":"address","nodeType":"ElementaryTypeName","src":"3811:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3796:31:13"},"returnParameters":{"id":558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":574,"src":"3857:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":556,"name":"bool","nodeType":"ElementaryTypeName","src":"3857:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3856:6:13"},"scope":820,"src":"3780:207:13","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":586,"nodeType":"Block","src":"4252:47:13","statements":[{"expression":{"arguments":[{"id":581,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":577,"src":"4273:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":582,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1342,"src":"4279:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4279:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":580,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[587,608],"referencedDeclaration":608,"src":"4262:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:30:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":585,"nodeType":"ExpressionStatement","src":"4262:30:13"}]},"documentation":{"id":575,"nodeType":"StructuredDocumentation","src":"3993:198:13","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier."},"id":587,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4205:10:13","nodeType":"FunctionDefinition","parameters":{"id":578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"mutability":"mutable","name":"role","nameLocation":"4224:4:13","nodeType":"VariableDeclaration","scope":587,"src":"4216:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":576,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4216:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4215:14:13"},"returnParameters":{"id":579,"nodeType":"ParameterList","parameters":[],"src":"4252:0:13"},"scope":820,"src":"4196:103:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":607,"nodeType":"Block","src":"4502:124:13","statements":[{"condition":{"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4516:23:13","subExpression":{"arguments":[{"id":596,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"4525:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":597,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"4531:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":595,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"4517:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4517:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":606,"nodeType":"IfStatement","src":"4512:108:13","trueBody":{"id":605,"nodeType":"Block","src":"4541:79:13","statements":[{"errorCall":{"arguments":[{"id":601,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"4595:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":602,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"4604:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":600,"name":"AccessControlUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1570,"src":"4562:32:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$_t_error_$","typeString":"function (address,bytes32) pure returns (error)"}},"id":603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4562:47:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":604,"nodeType":"RevertStatement","src":"4555:54:13"}]}}]},"documentation":{"id":588,"nodeType":"StructuredDocumentation","src":"4305:119:13","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`."},"id":608,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4438:10:13","nodeType":"FunctionDefinition","parameters":{"id":593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":590,"mutability":"mutable","name":"role","nameLocation":"4457:4:13","nodeType":"VariableDeclaration","scope":608,"src":"4449:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":589,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4449:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":592,"mutability":"mutable","name":"account","nameLocation":"4471:7:13","nodeType":"VariableDeclaration","scope":608,"src":"4463:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":591,"name":"address","nodeType":"ElementaryTypeName","src":"4463:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4448:31:13"},"returnParameters":{"id":594,"nodeType":"ParameterList","parameters":[],"src":"4502:0:13"},"scope":820,"src":"4429:197:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1618],"body":{"id":628,"nodeType":"Block","src":"4881:117:13","statements":[{"assignments":[618],"declarations":[{"constant":false,"id":618,"mutability":"mutable","name":"$","nameLocation":"4920:1:13","nodeType":"VariableDeclaration","scope":628,"src":"4891:30:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":617,"nodeType":"UserDefinedTypeName","pathNode":{"id":616,"name":"AccessControlStorage","nameLocations":["4891:20:13"],"nodeType":"IdentifierPath","referencedDeclaration":493,"src":"4891:20:13"},"referencedDeclaration":493,"src":"4891:20:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":621,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":619,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"4924:24:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$493_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4924:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4891:59:13"},{"expression":{"expression":{"baseExpression":{"expression":{"id":622,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"4967:1:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":623,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4969:6:13","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":492,"src":"4967:8:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$483_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":625,"indexExpression":{"id":624,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"4976:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4967:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$483_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":626,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4982:9:13","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":482,"src":"4967:24:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":615,"id":627,"nodeType":"Return","src":"4960:31:13"}]},"documentation":{"id":609,"nodeType":"StructuredDocumentation","src":"4632:170:13","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":629,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"4816:12:13","nodeType":"FunctionDefinition","parameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"role","nameLocation":"4837:4:13","nodeType":"VariableDeclaration","scope":629,"src":"4829:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4829:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4828:14:13"},"returnParameters":{"id":615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":629,"src":"4872:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":613,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4872:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4871:9:13"},"scope":820,"src":"4807:191:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1626],"body":{"id":647,"nodeType":"Block","src":"5388:42:13","statements":[{"expression":{"arguments":[{"id":643,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"5409:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":644,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"5415:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":642,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":773,"src":"5398:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5398:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":646,"nodeType":"ExpressionStatement","src":"5398:25:13"}]},"documentation":{"id":630,"nodeType":"StructuredDocumentation","src":"5004:285:13","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","id":648,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":638,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"5381:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":637,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"5368:12:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5368:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":640,"kind":"modifierInvocation","modifierName":{"id":636,"name":"onlyRole","nameLocations":["5359:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"5359:8:13"},"nodeType":"ModifierInvocation","src":"5359:28:13"}],"name":"grantRole","nameLocation":"5303:9:13","nodeType":"FunctionDefinition","parameters":{"id":635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":632,"mutability":"mutable","name":"role","nameLocation":"5321:4:13","nodeType":"VariableDeclaration","scope":648,"src":"5313:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":631,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5313:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"account","nameLocation":"5335:7:13","nodeType":"VariableDeclaration","scope":648,"src":"5327:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":633,"name":"address","nodeType":"ElementaryTypeName","src":"5327:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5312:31:13"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[],"src":"5388:0:13"},"scope":820,"src":"5294:136:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1634],"body":{"id":666,"nodeType":"Block","src":"5805:43:13","statements":[{"expression":{"arguments":[{"id":662,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"5827:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":663,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"5833:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":661,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"5815:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5815:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":665,"nodeType":"ExpressionStatement","src":"5815:26:13"}]},"documentation":{"id":649,"nodeType":"StructuredDocumentation","src":"5436:269:13","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","id":667,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":657,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"5798:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":656,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"5785:12:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5785:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":659,"kind":"modifierInvocation","modifierName":{"id":655,"name":"onlyRole","nameLocations":["5776:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"5776:8:13"},"nodeType":"ModifierInvocation","src":"5776:28:13"}],"name":"revokeRole","nameLocation":"5719:10:13","nodeType":"FunctionDefinition","parameters":{"id":654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"mutability":"mutable","name":"role","nameLocation":"5738:4:13","nodeType":"VariableDeclaration","scope":667,"src":"5730:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":650,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5730:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":653,"mutability":"mutable","name":"account","nameLocation":"5752:7:13","nodeType":"VariableDeclaration","scope":667,"src":"5744:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":652,"name":"address","nodeType":"ElementaryTypeName","src":"5744:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5729:31:13"},"returnParameters":{"id":660,"nodeType":"ParameterList","parameters":[],"src":"5805:0:13"},"scope":820,"src":"5710:138:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1642],"body":{"id":689,"nodeType":"Block","src":"6475:166:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":675,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"6489:18:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":676,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1342,"src":"6511:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6511:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6489:34:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":683,"nodeType":"IfStatement","src":"6485:102:13","trueBody":{"id":682,"nodeType":"Block","src":"6525:62:13","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":679,"name":"AccessControlBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1573,"src":"6546:28:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6546:30:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":681,"nodeType":"RevertStatement","src":"6539:37:13"}]}},{"expression":{"arguments":[{"id":685,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"6609:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":686,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"6615:18:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":684,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"6597:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6597:37:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":688,"nodeType":"ExpressionStatement","src":"6597:37:13"}]},"documentation":{"id":668,"nodeType":"StructuredDocumentation","src":"5854:537:13","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","id":690,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"6405:12:13","nodeType":"FunctionDefinition","parameters":{"id":673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":670,"mutability":"mutable","name":"role","nameLocation":"6426:4:13","nodeType":"VariableDeclaration","scope":690,"src":"6418:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":669,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6418:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":672,"mutability":"mutable","name":"callerConfirmation","nameLocation":"6440:18:13","nodeType":"VariableDeclaration","scope":690,"src":"6432:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":671,"name":"address","nodeType":"ElementaryTypeName","src":"6432:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6417:42:13"},"returnParameters":{"id":674,"nodeType":"ParameterList","parameters":[],"src":"6475:0:13"},"scope":820,"src":"6396:245:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":725,"nodeType":"Block","src":"6839:245:13","statements":[{"assignments":[700],"declarations":[{"constant":false,"id":700,"mutability":"mutable","name":"$","nameLocation":"6878:1:13","nodeType":"VariableDeclaration","scope":725,"src":"6849:30:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":699,"nodeType":"UserDefinedTypeName","pathNode":{"id":698,"name":"AccessControlStorage","nameLocations":["6849:20:13"],"nodeType":"IdentifierPath","referencedDeclaration":493,"src":"6849:20:13"},"referencedDeclaration":493,"src":"6849:20:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":703,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":701,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"6882:24:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$493_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6882:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6849:59:13"},{"assignments":[705],"declarations":[{"constant":false,"id":705,"mutability":"mutable","name":"previousAdminRole","nameLocation":"6926:17:13","nodeType":"VariableDeclaration","scope":725,"src":"6918:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":704,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6918:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":709,"initialValue":{"arguments":[{"id":707,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"6959:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":706,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":629,"src":"6946:12:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6946:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6918:46:13"},{"expression":{"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":710,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":700,"src":"6974:1:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6976:6:13","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":492,"src":"6974:8:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$483_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":714,"indexExpression":{"id":712,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"6983:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6974:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$483_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6989:9:13","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":482,"src":"6974:24:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":716,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"7001:9:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6974:36:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":718,"nodeType":"ExpressionStatement","src":"6974:36:13"},{"eventCall":{"arguments":[{"id":720,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"7042:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":721,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"7048:17:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":722,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"7067:9:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":719,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"7025:16:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7025:52:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":724,"nodeType":"EmitStatement","src":"7020:57:13"}]},"documentation":{"id":691,"nodeType":"StructuredDocumentation","src":"6647:114:13","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":726,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"6775:13:13","nodeType":"FunctionDefinition","parameters":{"id":696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":693,"mutability":"mutable","name":"role","nameLocation":"6797:4:13","nodeType":"VariableDeclaration","scope":726,"src":"6789:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":692,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6789:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":695,"mutability":"mutable","name":"adminRole","nameLocation":"6811:9:13","nodeType":"VariableDeclaration","scope":726,"src":"6803:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6803:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6788:33:13"},"returnParameters":{"id":697,"nodeType":"ParameterList","parameters":[],"src":"6839:0:13"},"scope":820,"src":"6766:318:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":772,"nodeType":"Block","src":"7401:304:13","statements":[{"assignments":[738],"declarations":[{"constant":false,"id":738,"mutability":"mutable","name":"$","nameLocation":"7440:1:13","nodeType":"VariableDeclaration","scope":772,"src":"7411:30:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":737,"nodeType":"UserDefinedTypeName","pathNode":{"id":736,"name":"AccessControlStorage","nameLocations":["7411:20:13"],"nodeType":"IdentifierPath","referencedDeclaration":493,"src":"7411:20:13"},"referencedDeclaration":493,"src":"7411:20:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":741,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":739,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"7444:24:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$493_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7444:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7411:59:13"},{"condition":{"id":746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7484:23:13","subExpression":{"arguments":[{"id":743,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":729,"src":"7493:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":744,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":731,"src":"7499:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":742,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"7485:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7485:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":770,"nodeType":"Block","src":"7662:37:13","statements":[{"expression":{"hexValue":"66616c7365","id":768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7683:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":735,"id":769,"nodeType":"Return","src":"7676:12:13"}]},"id":771,"nodeType":"IfStatement","src":"7480:219:13","trueBody":{"id":767,"nodeType":"Block","src":"7509:147:13","statements":[{"expression":{"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":747,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"7523:1:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7525:6:13","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":492,"src":"7523:8:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$483_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":751,"indexExpression":{"id":749,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":729,"src":"7532:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7523:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$483_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7538:7:13","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":480,"src":"7523:22:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":754,"indexExpression":{"id":753,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":731,"src":"7546:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7523:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7557:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7523:38:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":757,"nodeType":"ExpressionStatement","src":"7523:38:13"},{"eventCall":{"arguments":[{"id":759,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":729,"src":"7592:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":760,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":731,"src":"7598:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":761,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1342,"src":"7607:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7607:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":758,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"7580:11:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7580:40:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":764,"nodeType":"EmitStatement","src":"7575:45:13"},{"expression":{"hexValue":"74727565","id":765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7641:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":735,"id":766,"nodeType":"Return","src":"7634:11:13"}]}}]},"documentation":{"id":727,"nodeType":"StructuredDocumentation","src":"7090:223:13","text":" @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"id":773,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"7327:10:13","nodeType":"FunctionDefinition","parameters":{"id":732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":729,"mutability":"mutable","name":"role","nameLocation":"7346:4:13","nodeType":"VariableDeclaration","scope":773,"src":"7338:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":728,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7338:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":731,"mutability":"mutable","name":"account","nameLocation":"7360:7:13","nodeType":"VariableDeclaration","scope":773,"src":"7352:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":730,"name":"address","nodeType":"ElementaryTypeName","src":"7352:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7337:31:13"},"returnParameters":{"id":735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":773,"src":"7395:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":733,"name":"bool","nodeType":"ElementaryTypeName","src":"7395:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7394:6:13"},"scope":820,"src":"7318:387:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":818,"nodeType":"Block","src":"8026:304:13","statements":[{"assignments":[785],"declarations":[{"constant":false,"id":785,"mutability":"mutable","name":"$","nameLocation":"8065:1:13","nodeType":"VariableDeclaration","scope":818,"src":"8036:30:13","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":784,"nodeType":"UserDefinedTypeName","pathNode":{"id":783,"name":"AccessControlStorage","nameLocations":["8036:20:13"],"nodeType":"IdentifierPath","referencedDeclaration":493,"src":"8036:20:13"},"referencedDeclaration":493,"src":"8036:20:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":788,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":786,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"8069:24:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$493_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8069:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8036:59:13"},{"condition":{"arguments":[{"id":790,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"8117:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":791,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"8123:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":789,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"8109:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8109:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":816,"nodeType":"Block","src":"8287:37:13","statements":[{"expression":{"hexValue":"66616c7365","id":814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8308:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":782,"id":815,"nodeType":"Return","src":"8301:12:13"}]},"id":817,"nodeType":"IfStatement","src":"8105:219:13","trueBody":{"id":813,"nodeType":"Block","src":"8133:148:13","statements":[{"expression":{"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":793,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"8147:1:13","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$493_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8149:6:13","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":492,"src":"8147:8:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$483_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":797,"indexExpression":{"id":795,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"8156:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8147:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$483_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8162:7:13","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":480,"src":"8147:22:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":800,"indexExpression":{"id":799,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"8170:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8147:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8181:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"8147:39:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":803,"nodeType":"ExpressionStatement","src":"8147:39:13"},{"eventCall":{"arguments":[{"id":805,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"8217:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":806,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"8223:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":807,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1342,"src":"8232:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8232:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":804,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"8205:11:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8205:40:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":810,"nodeType":"EmitStatement","src":"8200:45:13"},{"expression":{"hexValue":"74727565","id":811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8266:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":782,"id":812,"nodeType":"Return","src":"8259:11:13"}]}}]},"documentation":{"id":774,"nodeType":"StructuredDocumentation","src":"7711:226:13","text":" @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"id":819,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"7951:11:13","nodeType":"FunctionDefinition","parameters":{"id":779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":776,"mutability":"mutable","name":"role","nameLocation":"7971:4:13","nodeType":"VariableDeclaration","scope":819,"src":"7963:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":775,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7963:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":778,"mutability":"mutable","name":"account","nameLocation":"7985:7:13","nodeType":"VariableDeclaration","scope":819,"src":"7977:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":777,"name":"address","nodeType":"ElementaryTypeName","src":"7977:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7962:31:13"},"returnParameters":{"id":782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":819,"src":"8020:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":780,"name":"bool","nodeType":"ElementaryTypeName","src":"8020:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8019:6:13"},"scope":820,"src":"7942:388:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":821,"src":"2171:6161:13","usedErrors":[1063,1066,1570,1573],"usedEvents":[1071,1582,1591,1600]}],"src":"108:8225:13"},"id":13},"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol","exportedSymbols":{"AccessControlEnumerableUpgradeable":[1046],"AccessControlUpgradeable":[820],"EnumerableSet":[8279],"IAccessControlEnumerable":[1669],"IERC165":[3367],"Initializable":[1314]},"id":1047,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":822,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"129:24:14"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol","file":"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol","id":824,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1047,"sourceUnit":1670,"src":"155:112:14","symbolAliases":[{"foreign":{"id":823,"name":"IAccessControlEnumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"163:24:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/AccessControlUpgradeable.sol","file":"../AccessControlUpgradeable.sol","id":826,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1047,"sourceUnit":821,"src":"268:73:14","symbolAliases":[{"foreign":{"id":825,"name":"AccessControlUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"276:24:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol","file":"@openzeppelin/contracts/utils/structs/EnumerableSet.sol","id":828,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1047,"sourceUnit":8280,"src":"342:86:14","symbolAliases":[{"foreign":{"id":827,"name":"EnumerableSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8279,"src":"350:13:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":830,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1047,"sourceUnit":3368,"src":"429:80:14","symbolAliases":[{"foreign":{"id":829,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"437:7:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":832,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1047,"sourceUnit":1315,"src":"510:66:14","symbolAliases":[{"foreign":{"id":831,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"518:13:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":834,"name":"Initializable","nameLocations":["729:13:14"],"nodeType":"IdentifierPath","referencedDeclaration":1314,"src":"729:13:14"},"id":835,"nodeType":"InheritanceSpecifier","src":"729:13:14"},{"baseName":{"id":836,"name":"IAccessControlEnumerable","nameLocations":["744:24:14"],"nodeType":"IdentifierPath","referencedDeclaration":1669,"src":"744:24:14"},"id":837,"nodeType":"InheritanceSpecifier","src":"744:24:14"},{"baseName":{"id":838,"name":"AccessControlUpgradeable","nameLocations":["770:24:14"],"nodeType":"IdentifierPath","referencedDeclaration":820,"src":"770:24:14"},"id":839,"nodeType":"InheritanceSpecifier","src":"770:24:14"}],"canonicalName":"AccessControlEnumerableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":833,"nodeType":"StructuredDocumentation","src":"578:94:14","text":" @dev Extension of {AccessControl} that allows enumerating the members of each role."},"fullyImplemented":true,"id":1046,"linearizedBaseContracts":[1046,820,1560,3367,1669,1643,1360,1314],"name":"AccessControlEnumerableUpgradeable","nameLocation":"691:34:14","nodeType":"ContractDefinition","nodes":[{"global":false,"id":843,"libraryName":{"id":840,"name":"EnumerableSet","nameLocations":["807:13:14"],"nodeType":"IdentifierPath","referencedDeclaration":8279,"src":"807:13:14"},"nodeType":"UsingForDirective","src":"801:49:14","typeName":{"id":842,"nodeType":"UserDefinedTypeName","pathNode":{"id":841,"name":"EnumerableSet.AddressSet","nameLocations":["825:13:14","839:10:14"],"nodeType":"IdentifierPath","referencedDeclaration":7254,"src":"825:24:14"},"referencedDeclaration":7254,"src":"825:24:14","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"canonicalName":"AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage","documentation":{"id":844,"nodeType":"StructuredDocumentation","src":"856:81:14","text":"@custom:storage-location erc7201:openzeppelin.storage.AccessControlEnumerable"},"id":850,"members":[{"constant":false,"id":849,"mutability":"mutable","name":"_roleMembers","nameLocation":"1040:12:14","nodeType":"VariableDeclaration","scope":850,"src":"990:62:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7254_storage_$","typeString":"mapping(bytes32 => struct EnumerableSet.AddressSet)"},"typeName":{"id":848,"keyName":"role","keyNameLocation":"1006:4:14","keyType":{"id":845,"name":"bytes32","nodeType":"ElementaryTypeName","src":"998:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"990:49:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7254_storage_$","typeString":"mapping(bytes32 => struct EnumerableSet.AddressSet)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":847,"nodeType":"UserDefinedTypeName","pathNode":{"id":846,"name":"EnumerableSet.AddressSet","nameLocations":["1014:13:14","1028:10:14"],"nodeType":"IdentifierPath","referencedDeclaration":7254,"src":"1014:24:14"},"referencedDeclaration":7254,"src":"1014:24:14","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},"visibility":"internal"}],"name":"AccessControlEnumerableStorage","nameLocation":"949:30:14","nodeType":"StructDefinition","scope":1046,"src":"942:117:14","visibility":"public"},{"constant":true,"id":853,"mutability":"constant","name":"AccessControlEnumerableStorageLocation","nameLocation":"1217:38:14","nodeType":"VariableDeclaration","scope":1046,"src":"1192:132:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":851,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1192:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307863316636666532343632316365383165633538323763616630323533636164623734373039623036313633306536623535653832333731373035393332303030","id":852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1258:66:14","typeDescriptions":{"typeIdentifier":"t_rational_87732778178968556439956192144688703237987636878447527990685272173340959907840_by_1","typeString":"int_const 8773...(69 digits omitted)...7840"},"value":"0xc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000"},"visibility":"private"},{"body":{"id":860,"nodeType":"Block","src":"1441:97:14","statements":[{"AST":{"nativeSrc":"1460:72:14","nodeType":"YulBlock","src":"1460:72:14","statements":[{"nativeSrc":"1474:48:14","nodeType":"YulAssignment","src":"1474:48:14","value":{"name":"AccessControlEnumerableStorageLocation","nativeSrc":"1484:38:14","nodeType":"YulIdentifier","src":"1484:38:14"},"variableNames":[{"name":"$.slot","nativeSrc":"1474:6:14","nodeType":"YulIdentifier","src":"1474:6:14"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":857,"isOffset":false,"isSlot":true,"src":"1474:6:14","suffix":"slot","valueSize":1},{"declaration":853,"isOffset":false,"isSlot":false,"src":"1484:38:14","valueSize":1}],"id":859,"nodeType":"InlineAssembly","src":"1451:81:14"}]},"id":861,"implemented":true,"kind":"function","modifiers":[],"name":"_getAccessControlEnumerableStorage","nameLocation":"1340:34:14","nodeType":"FunctionDefinition","parameters":{"id":854,"nodeType":"ParameterList","parameters":[],"src":"1374:2:14"},"returnParameters":{"id":858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":857,"mutability":"mutable","name":"$","nameLocation":"1438:1:14","nodeType":"VariableDeclaration","scope":861,"src":"1399:40:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"},"typeName":{"id":856,"nodeType":"UserDefinedTypeName","pathNode":{"id":855,"name":"AccessControlEnumerableStorage","nameLocations":["1399:30:14"],"nodeType":"IdentifierPath","referencedDeclaration":850,"src":"1399:30:14"},"referencedDeclaration":850,"src":"1399:30:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"}},"visibility":"internal"}],"src":"1398:42:14"},"scope":1046,"src":"1331:207:14","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":866,"nodeType":"Block","src":"1612:7:14","statements":[]},"id":867,"implemented":true,"kind":"function","modifiers":[{"id":864,"kind":"modifierInvocation","modifierName":{"id":863,"name":"onlyInitializing","nameLocations":["1595:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":1209,"src":"1595:16:14"},"nodeType":"ModifierInvocation","src":"1595:16:14"}],"name":"__AccessControlEnumerable_init","nameLocation":"1553:30:14","nodeType":"FunctionDefinition","parameters":{"id":862,"nodeType":"ParameterList","parameters":[],"src":"1583:2:14"},"returnParameters":{"id":865,"nodeType":"ParameterList","parameters":[],"src":"1612:0:14"},"scope":1046,"src":"1544:75:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":872,"nodeType":"Block","src":"1703:7:14","statements":[]},"id":873,"implemented":true,"kind":"function","modifiers":[{"id":870,"kind":"modifierInvocation","modifierName":{"id":869,"name":"onlyInitializing","nameLocations":["1686:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":1209,"src":"1686:16:14"},"nodeType":"ModifierInvocation","src":"1686:16:14"}],"name":"__AccessControlEnumerable_init_unchained","nameLocation":"1634:40:14","nodeType":"FunctionDefinition","parameters":{"id":868,"nodeType":"ParameterList","parameters":[],"src":"1674:2:14"},"returnParameters":{"id":871,"nodeType":"ParameterList","parameters":[],"src":"1703:0:14"},"scope":1046,"src":"1625:85:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[549],"body":{"id":894,"nodeType":"Block","src":"1834:121:14","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":882,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":876,"src":"1851:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":884,"name":"IAccessControlEnumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"1871:24:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControlEnumerable_$1669_$","typeString":"type(contract IAccessControlEnumerable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControlEnumerable_$1669_$","typeString":"type(contract IAccessControlEnumerable)"}],"id":883,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1866:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:30:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControlEnumerable_$1669","typeString":"type(contract IAccessControlEnumerable)"}},"id":886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1897:11:14","memberName":"interfaceId","nodeType":"MemberAccess","src":"1866:42:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1851:57:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":890,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":876,"src":"1936:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":888,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1912:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlEnumerableUpgradeable_$1046_$","typeString":"type(contract super AccessControlEnumerableUpgradeable)"}},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1918:17:14","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":549,"src":"1912:23:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1912:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1851:97:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":881,"id":893,"nodeType":"Return","src":"1844:104:14"}]},"documentation":{"id":874,"nodeType":"StructuredDocumentation","src":"1715:23:14","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":895,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1752:17:14","nodeType":"FunctionDefinition","overrides":{"id":878,"nodeType":"OverrideSpecifier","overrides":[],"src":"1810:8:14"},"parameters":{"id":877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":876,"mutability":"mutable","name":"interfaceId","nameLocation":"1777:11:14","nodeType":"VariableDeclaration","scope":895,"src":"1770:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":875,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1770:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1769:20:14"},"returnParameters":{"id":881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":895,"src":"1828:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":879,"name":"bool","nodeType":"ElementaryTypeName","src":"1828:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1827:6:14"},"scope":1046,"src":"1743:212:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1660],"body":{"id":919,"nodeType":"Block","src":"2630:143:14","statements":[{"assignments":[907],"declarations":[{"constant":false,"id":907,"mutability":"mutable","name":"$","nameLocation":"2679:1:14","nodeType":"VariableDeclaration","scope":919,"src":"2640:40:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"},"typeName":{"id":906,"nodeType":"UserDefinedTypeName","pathNode":{"id":905,"name":"AccessControlEnumerableStorage","nameLocations":["2640:30:14"],"nodeType":"IdentifierPath","referencedDeclaration":850,"src":"2640:30:14"},"referencedDeclaration":850,"src":"2640:30:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"}},"visibility":"internal"}],"id":910,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":908,"name":"_getAccessControlEnumerableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"2683:34:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$850_storage_ptr_$","typeString":"function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)"}},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2683:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2640:79:14"},{"expression":{"arguments":[{"id":916,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"2760:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"expression":{"id":911,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"2736:1:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer"}},"id":912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2738:12:14","memberName":"_roleMembers","nodeType":"MemberAccess","referencedDeclaration":849,"src":"2736:14:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7254_storage_$","typeString":"mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)"}},"id":914,"indexExpression":{"id":913,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":898,"src":"2751:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2736:20:14","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2757:2:14","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":7390,"src":"2736:23:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7254_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$7254_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:30:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":904,"id":918,"nodeType":"Return","src":"2729:37:14"}]},"documentation":{"id":896,"nodeType":"StructuredDocumentation","src":"1961:574:14","text":" @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information."},"functionSelector":"9010d07c","id":920,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleMember","nameLocation":"2549:13:14","nodeType":"FunctionDefinition","parameters":{"id":901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"role","nameLocation":"2571:4:14","nodeType":"VariableDeclaration","scope":920,"src":"2563:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":897,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2563:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":900,"mutability":"mutable","name":"index","nameLocation":"2585:5:14","nodeType":"VariableDeclaration","scope":920,"src":"2577:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":899,"name":"uint256","nodeType":"ElementaryTypeName","src":"2577:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2562:29:14"},"returnParameters":{"id":904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":920,"src":"2621:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":902,"name":"address","nodeType":"ElementaryTypeName","src":"2621:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2620:9:14"},"scope":1046,"src":"2540:233:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1668],"body":{"id":941,"nodeType":"Block","src":"3021:142:14","statements":[{"assignments":[930],"declarations":[{"constant":false,"id":930,"mutability":"mutable","name":"$","nameLocation":"3070:1:14","nodeType":"VariableDeclaration","scope":941,"src":"3031:40:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"},"typeName":{"id":929,"nodeType":"UserDefinedTypeName","pathNode":{"id":928,"name":"AccessControlEnumerableStorage","nameLocations":["3031:30:14"],"nodeType":"IdentifierPath","referencedDeclaration":850,"src":"3031:30:14"},"referencedDeclaration":850,"src":"3031:30:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"}},"visibility":"internal"}],"id":933,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":931,"name":"_getAccessControlEnumerableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"3074:34:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$850_storage_ptr_$","typeString":"function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3074:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3031:79:14"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"expression":{"id":934,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"3127:1:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer"}},"id":935,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3129:12:14","memberName":"_roleMembers","nodeType":"MemberAccess","referencedDeclaration":849,"src":"3127:14:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7254_storage_$","typeString":"mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)"}},"id":937,"indexExpression":{"id":936,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"3142:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3127:20:14","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":938,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3148:6:14","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":7363,"src":"3127:27:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7254_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$7254_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3127:29:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":927,"id":940,"nodeType":"Return","src":"3120:36:14"}]},"documentation":{"id":921,"nodeType":"StructuredDocumentation","src":"2779:157:14","text":" @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role."},"functionSelector":"ca15c873","id":942,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleMemberCount","nameLocation":"2950:18:14","nodeType":"FunctionDefinition","parameters":{"id":924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":923,"mutability":"mutable","name":"role","nameLocation":"2977:4:14","nodeType":"VariableDeclaration","scope":942,"src":"2969:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":922,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2969:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2968:14:14"},"returnParameters":{"id":927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":926,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":942,"src":"3012:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":925,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3011:9:14"},"scope":1046,"src":"2941:222:14","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":964,"nodeType":"Block","src":"3791:142:14","statements":[{"assignments":[953],"declarations":[{"constant":false,"id":953,"mutability":"mutable","name":"$","nameLocation":"3840:1:14","nodeType":"VariableDeclaration","scope":964,"src":"3801:40:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"},"typeName":{"id":952,"nodeType":"UserDefinedTypeName","pathNode":{"id":951,"name":"AccessControlEnumerableStorage","nameLocations":["3801:30:14"],"nodeType":"IdentifierPath","referencedDeclaration":850,"src":"3801:30:14"},"referencedDeclaration":850,"src":"3801:30:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"}},"visibility":"internal"}],"id":956,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":954,"name":"_getAccessControlEnumerableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"3844:34:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$850_storage_ptr_$","typeString":"function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)"}},"id":955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3844:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3801:79:14"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"expression":{"id":957,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"3897:1:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer"}},"id":958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3899:12:14","memberName":"_roleMembers","nodeType":"MemberAccess","referencedDeclaration":849,"src":"3897:14:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7254_storage_$","typeString":"mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)"}},"id":960,"indexExpression":{"id":959,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":945,"src":"3912:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3897:20:14","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":961,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3918:6:14","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":7420,"src":"3897:27:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7254_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$7254_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)"}},"id":962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3897:29:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":950,"id":963,"nodeType":"Return","src":"3890:36:14"}]},"documentation":{"id":943,"nodeType":"StructuredDocumentation","src":"3169:532:14","text":" @dev Return all accounts that have `role`\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"functionSelector":"a3246ad3","id":965,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleMembers","nameLocation":"3715:14:14","nodeType":"FunctionDefinition","parameters":{"id":946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":945,"mutability":"mutable","name":"role","nameLocation":"3738:4:14","nodeType":"VariableDeclaration","scope":965,"src":"3730:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":944,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3730:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3729:14:14"},"returnParameters":{"id":950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":949,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":965,"src":"3773:16:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":947,"name":"address","nodeType":"ElementaryTypeName","src":"3773:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":948,"nodeType":"ArrayTypeName","src":"3773:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3772:18:14"},"scope":1046,"src":"3706:227:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[773],"body":{"id":1004,"nodeType":"Block","src":"4127:256:14","statements":[{"assignments":[978],"declarations":[{"constant":false,"id":978,"mutability":"mutable","name":"$","nameLocation":"4176:1:14","nodeType":"VariableDeclaration","scope":1004,"src":"4137:40:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"},"typeName":{"id":977,"nodeType":"UserDefinedTypeName","pathNode":{"id":976,"name":"AccessControlEnumerableStorage","nameLocations":["4137:30:14"],"nodeType":"IdentifierPath","referencedDeclaration":850,"src":"4137:30:14"},"referencedDeclaration":850,"src":"4137:30:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"}},"visibility":"internal"}],"id":981,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":979,"name":"_getAccessControlEnumerableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"4180:34:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$850_storage_ptr_$","typeString":"function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4180:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4137:79:14"},{"assignments":[983],"declarations":[{"constant":false,"id":983,"mutability":"mutable","name":"granted","nameLocation":"4231:7:14","nodeType":"VariableDeclaration","scope":1004,"src":"4226:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":982,"name":"bool","nodeType":"ElementaryTypeName","src":"4226:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":989,"initialValue":{"arguments":[{"id":986,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"4258:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":987,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":970,"src":"4264:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":984,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4241:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlEnumerableUpgradeable_$1046_$","typeString":"type(contract super AccessControlEnumerableUpgradeable)"}},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4247:10:14","memberName":"_grantRole","nodeType":"MemberAccess","referencedDeclaration":773,"src":"4241:16:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4241:31:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4226:46:14"},{"condition":{"id":990,"name":"granted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":983,"src":"4286:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1001,"nodeType":"IfStatement","src":"4282:71:14","trueBody":{"id":1000,"nodeType":"Block","src":"4295:58:14","statements":[{"expression":{"arguments":[{"id":997,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":970,"src":"4334:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"expression":{"id":991,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":978,"src":"4309:1:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer"}},"id":994,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4311:12:14","memberName":"_roleMembers","nodeType":"MemberAccess","referencedDeclaration":849,"src":"4309:14:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7254_storage_$","typeString":"mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)"}},"id":995,"indexExpression":{"id":993,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"4324:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4309:20:14","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4330:3:14","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7281,"src":"4309:24:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$7254_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$7254_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4309:33:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":999,"nodeType":"ExpressionStatement","src":"4309:33:14"}]}},{"expression":{"id":1002,"name":"granted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":983,"src":"4369:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":975,"id":1003,"nodeType":"Return","src":"4362:14:14"}]},"documentation":{"id":966,"nodeType":"StructuredDocumentation","src":"3939:91:14","text":" @dev Overload {AccessControl-_grantRole} to track enumerable memberships"},"id":1005,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"4044:10:14","nodeType":"FunctionDefinition","overrides":{"id":972,"nodeType":"OverrideSpecifier","overrides":[],"src":"4103:8:14"},"parameters":{"id":971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":968,"mutability":"mutable","name":"role","nameLocation":"4063:4:14","nodeType":"VariableDeclaration","scope":1005,"src":"4055:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":967,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4055:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":970,"mutability":"mutable","name":"account","nameLocation":"4077:7:14","nodeType":"VariableDeclaration","scope":1005,"src":"4069:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":969,"name":"address","nodeType":"ElementaryTypeName","src":"4069:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4054:31:14"},"returnParameters":{"id":975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":974,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1005,"src":"4121:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":973,"name":"bool","nodeType":"ElementaryTypeName","src":"4121:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4120:6:14"},"scope":1046,"src":"4035:348:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[819],"body":{"id":1044,"nodeType":"Block","src":"4579:260:14","statements":[{"assignments":[1018],"declarations":[{"constant":false,"id":1018,"mutability":"mutable","name":"$","nameLocation":"4628:1:14","nodeType":"VariableDeclaration","scope":1044,"src":"4589:40:14","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"},"typeName":{"id":1017,"nodeType":"UserDefinedTypeName","pathNode":{"id":1016,"name":"AccessControlEnumerableStorage","nameLocations":["4589:30:14"],"nodeType":"IdentifierPath","referencedDeclaration":850,"src":"4589:30:14"},"referencedDeclaration":850,"src":"4589:30:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage"}},"visibility":"internal"}],"id":1021,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1019,"name":"_getAccessControlEnumerableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"4632:34:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$850_storage_ptr_$","typeString":"function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)"}},"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4632:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4589:79:14"},{"assignments":[1023],"declarations":[{"constant":false,"id":1023,"mutability":"mutable","name":"revoked","nameLocation":"4683:7:14","nodeType":"VariableDeclaration","scope":1044,"src":"4678:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1022,"name":"bool","nodeType":"ElementaryTypeName","src":"4678:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1029,"initialValue":{"arguments":[{"id":1026,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1008,"src":"4711:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1027,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"4717:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1024,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4693:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlEnumerableUpgradeable_$1046_$","typeString":"type(contract super AccessControlEnumerableUpgradeable)"}},"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4699:11:14","memberName":"_revokeRole","nodeType":"MemberAccess","referencedDeclaration":819,"src":"4693:17:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":1028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4693:32:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4678:47:14"},{"condition":{"id":1030,"name":"revoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1023,"src":"4739:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1041,"nodeType":"IfStatement","src":"4735:74:14","trueBody":{"id":1040,"nodeType":"Block","src":"4748:61:14","statements":[{"expression":{"arguments":[{"id":1037,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"4790:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"expression":{"id":1031,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1018,"src":"4762:1:14","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlEnumerableStorage_$850_storage_ptr","typeString":"struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer"}},"id":1034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4764:12:14","memberName":"_roleMembers","nodeType":"MemberAccess","referencedDeclaration":849,"src":"4762:14:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_AddressSet_$7254_storage_$","typeString":"mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)"}},"id":1035,"indexExpression":{"id":1033,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1008,"src":"4777:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4762:20:14","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":1036,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4783:6:14","memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":7308,"src":"4762:27:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$7254_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$7254_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4762:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1039,"nodeType":"ExpressionStatement","src":"4762:36:14"}]}},{"expression":{"id":1042,"name":"revoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1023,"src":"4825:7:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1015,"id":1043,"nodeType":"Return","src":"4818:14:14"}]},"documentation":{"id":1006,"nodeType":"StructuredDocumentation","src":"4389:92:14","text":" @dev Overload {AccessControl-_revokeRole} to track enumerable memberships"},"id":1045,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"4495:11:14","nodeType":"FunctionDefinition","overrides":{"id":1012,"nodeType":"OverrideSpecifier","overrides":[],"src":"4555:8:14"},"parameters":{"id":1011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1008,"mutability":"mutable","name":"role","nameLocation":"4515:4:14","nodeType":"VariableDeclaration","scope":1045,"src":"4507:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1007,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4507:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1010,"mutability":"mutable","name":"account","nameLocation":"4529:7:14","nodeType":"VariableDeclaration","scope":1045,"src":"4521:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1009,"name":"address","nodeType":"ElementaryTypeName","src":"4521:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4506:31:14"},"returnParameters":{"id":1015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1014,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1045,"src":"4573:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1013,"name":"bool","nodeType":"ElementaryTypeName","src":"4573:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4572:6:14"},"scope":1046,"src":"4486:353:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1047,"src":"673:4168:14","usedErrors":[1063,1066,1570,1573],"usedEvents":[1071,1582,1591,1600]}],"src":"129:4713:14"},"id":14},"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol","exportedSymbols":{"Initializable":[1314]},"id":1315,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1048,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:15"},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1049,"nodeType":"StructuredDocumentation","src":"139:2209:15","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n     function initialize() initializer public {\n         __ERC20_init(\"MyToken\", \"MTK\");\n     }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n     function initializeV2() reinitializer(2) public {\n         __ERC20Permit_init(\"MyToken\");\n     }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n     _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":1314,"linearizedBaseContracts":[1314],"name":"Initializable","nameLocation":"2367:13:15","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Initializable.InitializableStorage","documentation":{"id":1050,"nodeType":"StructuredDocumentation","src":"2387:293:15","text":" @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable"},"id":1057,"members":[{"constant":false,"id":1053,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:15","nodeType":"VariableDeclaration","scope":1057,"src":"2813:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1052,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1056,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:15","nodeType":"VariableDeclaration","scope":1057,"src":"2950:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1055,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:15","nodeType":"StructDefinition","scope":1314,"src":"2685:290:15","visibility":"public"},{"constant":true,"id":1060,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:15","nodeType":"VariableDeclaration","scope":1314,"src":"3098:115:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1058,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:15","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"documentation":{"id":1061,"nodeType":"StructuredDocumentation","src":"3220:60:15","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","id":1063,"name":"InvalidInitialization","nameLocation":"3291:21:15","nodeType":"ErrorDefinition","parameters":{"id":1062,"nodeType":"ParameterList","parameters":[],"src":"3312:2:15"},"src":"3285:30:15"},{"documentation":{"id":1064,"nodeType":"StructuredDocumentation","src":"3321:57:15","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","id":1066,"name":"NotInitializing","nameLocation":"3389:15:15","nodeType":"ErrorDefinition","parameters":{"id":1065,"nodeType":"ParameterList","parameters":[],"src":"3404:2:15"},"src":"3383:24:15"},{"anonymous":false,"documentation":{"id":1067,"nodeType":"StructuredDocumentation","src":"3413:90:15","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":1071,"name":"Initialized","nameLocation":"3514:11:15","nodeType":"EventDefinition","parameters":{"id":1070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1069,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:15","nodeType":"VariableDeclaration","scope":1071,"src":"3526:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1068,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:15"},"src":"3508:34:15"},{"body":{"id":1153,"nodeType":"Block","src":"4092:1079:15","statements":[{"assignments":[1076],"declarations":[{"constant":false,"id":1076,"mutability":"mutable","name":"$","nameLocation":"4187:1:15","nodeType":"VariableDeclaration","scope":1153,"src":"4158:30:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":1075,"nodeType":"UserDefinedTypeName","pathNode":{"id":1074,"name":"InitializableStorage","nameLocations":["4158:20:15"],"nodeType":"IdentifierPath","referencedDeclaration":1057,"src":"4158:20:15"},"referencedDeclaration":1057,"src":"4158:20:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":1079,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1077,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1313,"src":"4191:24:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$1057_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:15"},{"assignments":[1081],"declarations":[{"constant":false,"id":1081,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:15","nodeType":"VariableDeclaration","scope":1153,"src":"4279:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1080,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1085,"initialValue":{"id":1084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:15","subExpression":{"expression":{"id":1082,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"4302:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:15","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1056,"src":"4302:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:15"},{"assignments":[1087],"declarations":[{"constant":false,"id":1087,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:15","nodeType":"VariableDeclaration","scope":1153,"src":"4327:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1086,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":1090,"initialValue":{"expression":{"id":1088,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"4348:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:15","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1053,"src":"4348:14:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:15"},{"assignments":[1092],"declarations":[{"constant":false,"id":1092,"mutability":"mutable","name":"initialSetup","nameLocation":"4709:12:15","nodeType":"VariableDeclaration","scope":1153,"src":"4704:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1091,"name":"bool","nodeType":"ElementaryTypeName","src":"4704:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1098,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1093,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"4724:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4739:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4724:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":1096,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1081,"src":"4744:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4724:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4704:54:15"},{"assignments":[1100],"declarations":[{"constant":false,"id":1100,"mutability":"mutable","name":"construction","nameLocation":"4773:12:15","nodeType":"VariableDeclaration","scope":1153,"src":"4768:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1099,"name":"bool","nodeType":"ElementaryTypeName","src":"4768:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1113,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":1103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1101,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"4788:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4803:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4788:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":1106,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4816:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$1314","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$1314","typeString":"contract Initializable"}],"id":1105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4808:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1104,"name":"address","nodeType":"ElementaryTypeName","src":"4808:7:15","typeDescriptions":{}}},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4808:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4822:4:15","memberName":"code","nodeType":"MemberAccess","src":"4808:18:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4827:6:15","memberName":"length","nodeType":"MemberAccess","src":"4808:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4837:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4808:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4788:50:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4768:70:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4853:13:15","subExpression":{"id":1114,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1092,"src":"4854:12:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4870:13:15","subExpression":{"id":1116,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"4871:12:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4853:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1123,"nodeType":"IfStatement","src":"4849:91:15","trueBody":{"id":1122,"nodeType":"Block","src":"4885:55:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1119,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1063,"src":"4906:21:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4906:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1121,"nodeType":"RevertStatement","src":"4899:30:15"}]}},{"expression":{"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1124,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"4949:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4951:12:15","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1053,"src":"4949:14:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":1127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4949:18:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":1129,"nodeType":"ExpressionStatement","src":"4949:18:15"},{"condition":{"id":1130,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1081,"src":"4981:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1138,"nodeType":"IfStatement","src":"4977:67:15","trueBody":{"id":1137,"nodeType":"Block","src":"4997:47:15","statements":[{"expression":{"id":1135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1131,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"5011:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5013:13:15","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1056,"src":"5011:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5029:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5011:22:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1136,"nodeType":"ExpressionStatement","src":"5011:22:15"}]}},{"id":1139,"nodeType":"PlaceholderStatement","src":"5053:1:15"},{"condition":{"id":1140,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1081,"src":"5068:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1152,"nodeType":"IfStatement","src":"5064:101:15","trueBody":{"id":1151,"nodeType":"Block","src":"5084:81:15","statements":[{"expression":{"id":1145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1141,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"5098:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5100:13:15","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1056,"src":"5098:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5116:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5098:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1146,"nodeType":"ExpressionStatement","src":"5098:23:15"},{"eventCall":{"arguments":[{"hexValue":"31","id":1148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5152:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1147,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1071,"src":"5140:11:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5140:14:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1150,"nodeType":"EmitStatement","src":"5135:19:15"}]}}]},"documentation":{"id":1072,"nodeType":"StructuredDocumentation","src":"3548:516:15","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event."},"id":1154,"name":"initializer","nameLocation":"4078:11:15","nodeType":"ModifierDefinition","parameters":{"id":1073,"nodeType":"ParameterList","parameters":[],"src":"4089:2:15"},"src":"4069:1102:15","virtual":false,"visibility":"internal"},{"body":{"id":1200,"nodeType":"Block","src":"6289:392:15","statements":[{"assignments":[1161],"declarations":[{"constant":false,"id":1161,"mutability":"mutable","name":"$","nameLocation":"6384:1:15","nodeType":"VariableDeclaration","scope":1200,"src":"6355:30:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":1160,"nodeType":"UserDefinedTypeName","pathNode":{"id":1159,"name":"InitializableStorage","nameLocations":["6355:20:15"],"nodeType":"IdentifierPath","referencedDeclaration":1057,"src":"6355:20:15"},"referencedDeclaration":1057,"src":"6355:20:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":1164,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1162,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1313,"src":"6388:24:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$1057_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":1163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6388:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6355:59:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1165,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1161,"src":"6429:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6431:13:15","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1056,"src":"6429:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1167,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1161,"src":"6448:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6450:12:15","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1053,"src":"6448:14:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1169,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"6466:7:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6448:25:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6429:44:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1176,"nodeType":"IfStatement","src":"6425:105:15","trueBody":{"id":1175,"nodeType":"Block","src":"6475:55:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1172,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1063,"src":"6496:21:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6496:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1174,"nodeType":"RevertStatement","src":"6489:30:15"}]}},{"expression":{"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1177,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1161,"src":"6539:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6541:12:15","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1053,"src":"6539:14:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1180,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"6556:7:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6539:24:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":1182,"nodeType":"ExpressionStatement","src":"6539:24:15"},{"expression":{"id":1187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1183,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1161,"src":"6573:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1185,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6575:13:15","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1056,"src":"6573:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6591:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6573:22:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1188,"nodeType":"ExpressionStatement","src":"6573:22:15"},{"id":1189,"nodeType":"PlaceholderStatement","src":"6605:1:15"},{"expression":{"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1190,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1161,"src":"6616:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6618:13:15","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1056,"src":"6616:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6634:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6616:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1195,"nodeType":"ExpressionStatement","src":"6616:23:15"},{"eventCall":{"arguments":[{"id":1197,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"6666:7:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":1196,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1071,"src":"6654:11:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":1198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6654:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1199,"nodeType":"EmitStatement","src":"6649:25:15"}]},"documentation":{"id":1155,"nodeType":"StructuredDocumentation","src":"5177:1068:15","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":1201,"name":"reinitializer","nameLocation":"6259:13:15","nodeType":"ModifierDefinition","parameters":{"id":1158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1157,"mutability":"mutable","name":"version","nameLocation":"6280:7:15","nodeType":"VariableDeclaration","scope":1201,"src":"6273:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1156,"name":"uint64","nodeType":"ElementaryTypeName","src":"6273:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6272:16:15"},"src":"6250:431:15","virtual":false,"visibility":"internal"},{"body":{"id":1208,"nodeType":"Block","src":"6919:48:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1204,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"6929:18:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6929:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1206,"nodeType":"ExpressionStatement","src":"6929:20:15"},{"id":1207,"nodeType":"PlaceholderStatement","src":"6959:1:15"}]},"documentation":{"id":1202,"nodeType":"StructuredDocumentation","src":"6687:199:15","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":1209,"name":"onlyInitializing","nameLocation":"6900:16:15","nodeType":"ModifierDefinition","parameters":{"id":1203,"nodeType":"ParameterList","parameters":[],"src":"6916:2:15"},"src":"6891:76:15","virtual":false,"visibility":"internal"},{"body":{"id":1221,"nodeType":"Block","src":"7134:89:15","statements":[{"condition":{"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7148:18:15","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1213,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1290,"src":"7149:15:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7149:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1220,"nodeType":"IfStatement","src":"7144:73:15","trueBody":{"id":1219,"nodeType":"Block","src":"7168:49:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1216,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1066,"src":"7189:15:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7189:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1218,"nodeType":"RevertStatement","src":"7182:24:15"}]}}]},"documentation":{"id":1210,"nodeType":"StructuredDocumentation","src":"6973:104:15","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"id":1222,"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7091:18:15","nodeType":"FunctionDefinition","parameters":{"id":1211,"nodeType":"ParameterList","parameters":[],"src":"7109:2:15"},"returnParameters":{"id":1212,"nodeType":"ParameterList","parameters":[],"src":"7134:0:15"},"scope":1314,"src":"7082:141:15","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1267,"nodeType":"Block","src":"7758:373:15","statements":[{"assignments":[1228],"declarations":[{"constant":false,"id":1228,"mutability":"mutable","name":"$","nameLocation":"7853:1:15","nodeType":"VariableDeclaration","scope":1267,"src":"7824:30:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":1227,"nodeType":"UserDefinedTypeName","pathNode":{"id":1226,"name":"InitializableStorage","nameLocations":["7824:20:15"],"nodeType":"IdentifierPath","referencedDeclaration":1057,"src":"7824:20:15"},"referencedDeclaration":1057,"src":"7824:20:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":1231,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1229,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1313,"src":"7857:24:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$1057_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7857:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7824:59:15"},{"condition":{"expression":{"id":1232,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"7898:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1233,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7900:13:15","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1056,"src":"7898:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1238,"nodeType":"IfStatement","src":"7894:76:15","trueBody":{"id":1237,"nodeType":"Block","src":"7915:55:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1234,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1063,"src":"7936:21:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7936:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1236,"nodeType":"RevertStatement","src":"7929:30:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1239,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"7983:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7985:12:15","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1053,"src":"7983:14:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":1243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8006:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1242,"name":"uint64","nodeType":"ElementaryTypeName","src":"8006:6:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":1241,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8001:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8001:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":1245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8014:3:15","memberName":"max","nodeType":"MemberAccess","src":"8001:16:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7983:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1266,"nodeType":"IfStatement","src":"7979:146:15","trueBody":{"id":1265,"nodeType":"Block","src":"8019:106:15","statements":[{"expression":{"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1247,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"8033:1:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8035:12:15","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1053,"src":"8033:14:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":1252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8055:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1251,"name":"uint64","nodeType":"ElementaryTypeName","src":"8055:6:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":1250,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8050:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8050:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":1254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8063:3:15","memberName":"max","nodeType":"MemberAccess","src":"8050:16:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8033:33:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":1256,"nodeType":"ExpressionStatement","src":"8033:33:15"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":1260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8102:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1259,"name":"uint64","nodeType":"ElementaryTypeName","src":"8102:6:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":1258,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8097:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8097:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8110:3:15","memberName":"max","nodeType":"MemberAccess","src":"8097:16:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":1257,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1071,"src":"8085:11:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8085:29:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1264,"nodeType":"EmitStatement","src":"8080:34:15"}]}}]},"documentation":{"id":1223,"nodeType":"StructuredDocumentation","src":"7229:475:15","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":1268,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7718:20:15","nodeType":"FunctionDefinition","parameters":{"id":1224,"nodeType":"ParameterList","parameters":[],"src":"7738:2:15"},"returnParameters":{"id":1225,"nodeType":"ParameterList","parameters":[],"src":"7758:0:15"},"scope":1314,"src":"7709:422:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1278,"nodeType":"Block","src":"8306:63:15","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1274,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1313,"src":"8323:24:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$1057_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8323:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8350:12:15","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1053,"src":"8323:39:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":1273,"id":1277,"nodeType":"Return","src":"8316:46:15"}]},"documentation":{"id":1269,"nodeType":"StructuredDocumentation","src":"8137:99:15","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":1279,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8250:22:15","nodeType":"FunctionDefinition","parameters":{"id":1270,"nodeType":"ParameterList","parameters":[],"src":"8272:2:15"},"returnParameters":{"id":1273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1272,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1279,"src":"8298:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1271,"name":"uint64","nodeType":"ElementaryTypeName","src":"8298:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8297:8:15"},"scope":1314,"src":"8241:128:15","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1289,"nodeType":"Block","src":"8541:64:15","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1285,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1313,"src":"8558:24:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$1057_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8558:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8585:13:15","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1056,"src":"8558:40:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1284,"id":1288,"nodeType":"Return","src":"8551:47:15"}]},"documentation":{"id":1280,"nodeType":"StructuredDocumentation","src":"8375:105:15","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":1290,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8494:15:15","nodeType":"FunctionDefinition","parameters":{"id":1281,"nodeType":"ParameterList","parameters":[],"src":"8509:2:15"},"returnParameters":{"id":1284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1283,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1290,"src":"8535:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1282,"name":"bool","nodeType":"ElementaryTypeName","src":"8535:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8534:6:15"},"scope":1314,"src":"8485:120:15","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1298,"nodeType":"Block","src":"8896:45:15","statements":[{"expression":{"id":1296,"name":"INITIALIZABLE_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"8913:21:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1295,"id":1297,"nodeType":"Return","src":"8906:28:15"}]},"documentation":{"id":1291,"nodeType":"StructuredDocumentation","src":"8611:203:15","text":" @dev Pointer to storage slot. Allows integrators to override it with a custom storage location.\n NOTE: Consider following the ERC-7201 formula to derive storage locations."},"id":1299,"implemented":true,"kind":"function","modifiers":[],"name":"_initializableStorageSlot","nameLocation":"8828:25:15","nodeType":"FunctionDefinition","parameters":{"id":1292,"nodeType":"ParameterList","parameters":[],"src":"8853:2:15"},"returnParameters":{"id":1295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1299,"src":"8887:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1293,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8887:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8886:9:15"},"scope":1314,"src":"8819:122:15","stateMutability":"pure","virtual":true,"visibility":"internal"},{"body":{"id":1312,"nodeType":"Block","src":"9161:115:15","statements":[{"assignments":[1307],"declarations":[{"constant":false,"id":1307,"mutability":"mutable","name":"slot","nameLocation":"9179:4:15","nodeType":"VariableDeclaration","scope":1312,"src":"9171:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1306,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9171:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1310,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1308,"name":"_initializableStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9186:25:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":1309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9186:27:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9171:42:15"},{"AST":{"nativeSrc":"9232:38:15","nodeType":"YulBlock","src":"9232:38:15","statements":[{"nativeSrc":"9246:14:15","nodeType":"YulAssignment","src":"9246:14:15","value":{"name":"slot","nativeSrc":"9256:4:15","nodeType":"YulIdentifier","src":"9256:4:15"},"variableNames":[{"name":"$.slot","nativeSrc":"9246:6:15","nodeType":"YulIdentifier","src":"9246:6:15"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1304,"isOffset":false,"isSlot":true,"src":"9246:6:15","suffix":"slot","valueSize":1},{"declaration":1307,"isOffset":false,"isSlot":false,"src":"9256:4:15","valueSize":1}],"id":1311,"nodeType":"InlineAssembly","src":"9223:47:15"}]},"documentation":{"id":1300,"nodeType":"StructuredDocumentation","src":"8947:67:15","text":" @dev Returns a pointer to the storage namespace."},"id":1313,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"9080:24:15","nodeType":"FunctionDefinition","parameters":{"id":1301,"nodeType":"ParameterList","parameters":[],"src":"9104:2:15"},"returnParameters":{"id":1305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"mutability":"mutable","name":"$","nameLocation":"9158:1:15","nodeType":"VariableDeclaration","scope":1313,"src":"9129:30:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":1303,"nodeType":"UserDefinedTypeName","pathNode":{"id":1302,"name":"InitializableStorage","nameLocations":["9129:20:15"],"nodeType":"IdentifierPath","referencedDeclaration":1057,"src":"9129:20:15"},"referencedDeclaration":1057,"src":"9129:20:15","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1057_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"9128:32:15"},"scope":1314,"src":"9071:205:15","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1315,"src":"2349:6929:15","usedErrors":[1063,1066],"usedEvents":[1071]}],"src":"113:9166:15"},"id":15},"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1360],"Initializable":[1314]},"id":1361,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1316,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:16"},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1318,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1361,"sourceUnit":1315,"src":"126:63:16","symbolAliases":[{"foreign":{"id":1317,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"134:13:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1320,"name":"Initializable","nameLocations":["728:13:16"],"nodeType":"IdentifierPath","referencedDeclaration":1314,"src":"728:13:16"},"id":1321,"nodeType":"InheritanceSpecifier","src":"728:13:16"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1319,"nodeType":"StructuredDocumentation","src":"191:496:16","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1360,"linearizedBaseContracts":[1360,1314],"name":"ContextUpgradeable","nameLocation":"706:18:16","nodeType":"ContractDefinition","nodes":[{"body":{"id":1326,"nodeType":"Block","src":"800:7:16","statements":[]},"id":1327,"implemented":true,"kind":"function","modifiers":[{"id":1324,"kind":"modifierInvocation","modifierName":{"id":1323,"name":"onlyInitializing","nameLocations":["783:16:16"],"nodeType":"IdentifierPath","referencedDeclaration":1209,"src":"783:16:16"},"nodeType":"ModifierInvocation","src":"783:16:16"}],"name":"__Context_init","nameLocation":"757:14:16","nodeType":"FunctionDefinition","parameters":{"id":1322,"nodeType":"ParameterList","parameters":[],"src":"771:2:16"},"returnParameters":{"id":1325,"nodeType":"ParameterList","parameters":[],"src":"800:0:16"},"scope":1360,"src":"748:59:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1332,"nodeType":"Block","src":"875:7:16","statements":[]},"id":1333,"implemented":true,"kind":"function","modifiers":[{"id":1330,"kind":"modifierInvocation","modifierName":{"id":1329,"name":"onlyInitializing","nameLocations":["858:16:16"],"nodeType":"IdentifierPath","referencedDeclaration":1209,"src":"858:16:16"},"nodeType":"ModifierInvocation","src":"858:16:16"}],"name":"__Context_init_unchained","nameLocation":"822:24:16","nodeType":"FunctionDefinition","parameters":{"id":1328,"nodeType":"ParameterList","parameters":[],"src":"846:2:16"},"returnParameters":{"id":1331,"nodeType":"ParameterList","parameters":[],"src":"875:0:16"},"scope":1360,"src":"813:69:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1341,"nodeType":"Block","src":"949:34:16","statements":[{"expression":{"expression":{"id":1338,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"966:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"970:6:16","memberName":"sender","nodeType":"MemberAccess","src":"966:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1337,"id":1340,"nodeType":"Return","src":"959:17:16"}]},"id":1342,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"896:10:16","nodeType":"FunctionDefinition","parameters":{"id":1334,"nodeType":"ParameterList","parameters":[],"src":"906:2:16"},"returnParameters":{"id":1337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1342,"src":"940:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1335,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"939:9:16"},"scope":1360,"src":"887:96:16","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1350,"nodeType":"Block","src":"1056:32:16","statements":[{"expression":{"expression":{"id":1347,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1073:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:4:16","memberName":"data","nodeType":"MemberAccess","src":"1073:8:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1346,"id":1349,"nodeType":"Return","src":"1066:15:16"}]},"id":1351,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"998:8:16","nodeType":"FunctionDefinition","parameters":{"id":1343,"nodeType":"ParameterList","parameters":[],"src":"1006:2:16"},"returnParameters":{"id":1346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1345,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1351,"src":"1040:14:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1344,"name":"bytes","nodeType":"ElementaryTypeName","src":"1040:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1039:16:16"},"scope":1360,"src":"989:99:16","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1358,"nodeType":"Block","src":"1166:25:16","statements":[{"expression":{"hexValue":"30","id":1356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1183:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1355,"id":1357,"nodeType":"Return","src":"1176:8:16"}]},"id":1359,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1103:20:16","nodeType":"FunctionDefinition","parameters":{"id":1352,"nodeType":"ParameterList","parameters":[],"src":"1123:2:16"},"returnParameters":{"id":1355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1354,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1359,"src":"1157:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1353,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:9:16"},"scope":1360,"src":"1094:97:16","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1361,"src":"688:505:16","usedErrors":[1063,1066],"usedEvents":[1071]}],"src":"101:1093:16"},"id":16},"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1360],"Initializable":[1314],"PausableUpgradeable":[1520]},"id":1521,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1362,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:17"},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":1364,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1521,"sourceUnit":1361,"src":"128:67:17","symbolAliases":[{"foreign":{"id":1363,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1360,"src":"136:18:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1366,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1521,"sourceUnit":1315,"src":"196:63:17","symbolAliases":[{"foreign":{"id":1365,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"204:13:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1368,"name":"Initializable","nameLocations":["742:13:17"],"nodeType":"IdentifierPath","referencedDeclaration":1314,"src":"742:13:17"},"id":1369,"nodeType":"InheritanceSpecifier","src":"742:13:17"},{"baseName":{"id":1370,"name":"ContextUpgradeable","nameLocations":["757:18:17"],"nodeType":"IdentifierPath","referencedDeclaration":1360,"src":"757:18:17"},"id":1371,"nodeType":"InheritanceSpecifier","src":"757:18:17"}],"canonicalName":"PausableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1367,"nodeType":"StructuredDocumentation","src":"261:439:17","text":" @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place."},"fullyImplemented":true,"id":1520,"linearizedBaseContracts":[1520,1360,1314],"name":"PausableUpgradeable","nameLocation":"719:19:17","nodeType":"ContractDefinition","nodes":[{"canonicalName":"PausableUpgradeable.PausableStorage","documentation":{"id":1372,"nodeType":"StructuredDocumentation","src":"782:66:17","text":"@custom:storage-location erc7201:openzeppelin.storage.Pausable"},"id":1375,"members":[{"constant":false,"id":1374,"mutability":"mutable","name":"_paused","nameLocation":"891:7:17","nodeType":"VariableDeclaration","scope":1375,"src":"886:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1373,"name":"bool","nodeType":"ElementaryTypeName","src":"886:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"PausableStorage","nameLocation":"860:15:17","nodeType":"StructDefinition","scope":1520,"src":"853:52:17","visibility":"public"},{"constant":true,"id":1378,"mutability":"constant","name":"PausableStorageLocation","nameLocation":"1048:23:17","nodeType":"VariableDeclaration","scope":1520,"src":"1023:117:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1376,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1023:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307863643565643135633665313837653737653961656538383138346332316634663231383261623538323763623362376530376662656463643633663033333030","id":1377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1074:66:17","typeDescriptions":{"typeIdentifier":"t_rational_92891662540554778686986514950364265630913525426840345632122912437671245656832_by_1","typeString":"int_const 9289...(69 digits omitted)...6832"},"value":"0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300"},"visibility":"private"},{"body":{"id":1385,"nodeType":"Block","src":"1227:82:17","statements":[{"AST":{"nativeSrc":"1246:57:17","nodeType":"YulBlock","src":"1246:57:17","statements":[{"nativeSrc":"1260:33:17","nodeType":"YulAssignment","src":"1260:33:17","value":{"name":"PausableStorageLocation","nativeSrc":"1270:23:17","nodeType":"YulIdentifier","src":"1270:23:17"},"variableNames":[{"name":"$.slot","nativeSrc":"1260:6:17","nodeType":"YulIdentifier","src":"1260:6:17"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1382,"isOffset":false,"isSlot":true,"src":"1260:6:17","suffix":"slot","valueSize":1},{"declaration":1378,"isOffset":false,"isSlot":false,"src":"1270:23:17","valueSize":1}],"id":1384,"nodeType":"InlineAssembly","src":"1237:66:17"}]},"id":1386,"implemented":true,"kind":"function","modifiers":[],"name":"_getPausableStorage","nameLocation":"1156:19:17","nodeType":"FunctionDefinition","parameters":{"id":1379,"nodeType":"ParameterList","parameters":[],"src":"1175:2:17"},"returnParameters":{"id":1383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1382,"mutability":"mutable","name":"$","nameLocation":"1224:1:17","nodeType":"VariableDeclaration","scope":1386,"src":"1200:25:17","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1381,"nodeType":"UserDefinedTypeName","pathNode":{"id":1380,"name":"PausableStorage","nameLocations":["1200:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"1200:15:17"},"referencedDeclaration":1375,"src":"1200:15:17","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"src":"1199:27:17"},"scope":1520,"src":"1147:162:17","stateMutability":"pure","virtual":false,"visibility":"private"},{"anonymous":false,"documentation":{"id":1387,"nodeType":"StructuredDocumentation","src":"1315:73:17","text":" @dev Emitted when the pause is triggered by `account`."},"eventSelector":"62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258","id":1391,"name":"Paused","nameLocation":"1399:6:17","nodeType":"EventDefinition","parameters":{"id":1390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1389,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"1414:7:17","nodeType":"VariableDeclaration","scope":1391,"src":"1406:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1388,"name":"address","nodeType":"ElementaryTypeName","src":"1406:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1405:17:17"},"src":"1393:30:17"},{"anonymous":false,"documentation":{"id":1392,"nodeType":"StructuredDocumentation","src":"1429:70:17","text":" @dev Emitted when the pause is lifted by `account`."},"eventSelector":"5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa","id":1396,"name":"Unpaused","nameLocation":"1510:8:17","nodeType":"EventDefinition","parameters":{"id":1395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1394,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"1527:7:17","nodeType":"VariableDeclaration","scope":1396,"src":"1519:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1393,"name":"address","nodeType":"ElementaryTypeName","src":"1519:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1518:17:17"},"src":"1504:32:17"},{"documentation":{"id":1397,"nodeType":"StructuredDocumentation","src":"1542:76:17","text":" @dev The operation failed because the contract is paused."},"errorSelector":"d93c0665","id":1399,"name":"EnforcedPause","nameLocation":"1629:13:17","nodeType":"ErrorDefinition","parameters":{"id":1398,"nodeType":"ParameterList","parameters":[],"src":"1642:2:17"},"src":"1623:22:17"},{"documentation":{"id":1400,"nodeType":"StructuredDocumentation","src":"1651:80:17","text":" @dev The operation failed because the contract is not paused."},"errorSelector":"8dfc202b","id":1402,"name":"ExpectedPause","nameLocation":"1742:13:17","nodeType":"ErrorDefinition","parameters":{"id":1401,"nodeType":"ParameterList","parameters":[],"src":"1755:2:17"},"src":"1736:22:17"},{"body":{"id":1409,"nodeType":"Block","src":"1969:47:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1405,"name":"_requireNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"1979:17:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1979:19:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1407,"nodeType":"ExpressionStatement","src":"1979:19:17"},{"id":1408,"nodeType":"PlaceholderStatement","src":"2008:1:17"}]},"documentation":{"id":1403,"nodeType":"StructuredDocumentation","src":"1764:175:17","text":" @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."},"id":1410,"name":"whenNotPaused","nameLocation":"1953:13:17","nodeType":"ModifierDefinition","parameters":{"id":1404,"nodeType":"ParameterList","parameters":[],"src":"1966:2:17"},"src":"1944:72:17","virtual":false,"visibility":"internal"},{"body":{"id":1417,"nodeType":"Block","src":"2216:44:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1413,"name":"_requirePaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1471,"src":"2226:14:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1415,"nodeType":"ExpressionStatement","src":"2226:16:17"},{"id":1416,"nodeType":"PlaceholderStatement","src":"2252:1:17"}]},"documentation":{"id":1411,"nodeType":"StructuredDocumentation","src":"2022:167:17","text":" @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."},"id":1418,"name":"whenPaused","nameLocation":"2203:10:17","nodeType":"ModifierDefinition","parameters":{"id":1412,"nodeType":"ParameterList","parameters":[],"src":"2213:2:17"},"src":"2194:66:17","virtual":false,"visibility":"internal"},{"body":{"id":1423,"nodeType":"Block","src":"2319:7:17","statements":[]},"id":1424,"implemented":true,"kind":"function","modifiers":[{"id":1421,"kind":"modifierInvocation","modifierName":{"id":1420,"name":"onlyInitializing","nameLocations":["2302:16:17"],"nodeType":"IdentifierPath","referencedDeclaration":1209,"src":"2302:16:17"},"nodeType":"ModifierInvocation","src":"2302:16:17"}],"name":"__Pausable_init","nameLocation":"2275:15:17","nodeType":"FunctionDefinition","parameters":{"id":1419,"nodeType":"ParameterList","parameters":[],"src":"2290:2:17"},"returnParameters":{"id":1422,"nodeType":"ParameterList","parameters":[],"src":"2319:0:17"},"scope":1520,"src":"2266:60:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1429,"nodeType":"Block","src":"2395:7:17","statements":[]},"id":1430,"implemented":true,"kind":"function","modifiers":[{"id":1427,"kind":"modifierInvocation","modifierName":{"id":1426,"name":"onlyInitializing","nameLocations":["2378:16:17"],"nodeType":"IdentifierPath","referencedDeclaration":1209,"src":"2378:16:17"},"nodeType":"ModifierInvocation","src":"2378:16:17"}],"name":"__Pausable_init_unchained","nameLocation":"2341:25:17","nodeType":"FunctionDefinition","parameters":{"id":1425,"nodeType":"ParameterList","parameters":[],"src":"2366:2:17"},"returnParameters":{"id":1428,"nodeType":"ParameterList","parameters":[],"src":"2395:0:17"},"scope":1520,"src":"2332:70:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1445,"nodeType":"Block","src":"2549:92:17","statements":[{"assignments":[1438],"declarations":[{"constant":false,"id":1438,"mutability":"mutable","name":"$","nameLocation":"2583:1:17","nodeType":"VariableDeclaration","scope":1445,"src":"2559:25:17","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1437,"nodeType":"UserDefinedTypeName","pathNode":{"id":1436,"name":"PausableStorage","nameLocations":["2559:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"2559:15:17"},"referencedDeclaration":1375,"src":"2559:15:17","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1441,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1439,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"2587:19:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1375_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2587:21:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2559:49:17"},{"expression":{"expression":{"id":1442,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"2625:1:17","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2627:7:17","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1374,"src":"2625:9:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1435,"id":1444,"nodeType":"Return","src":"2618:16:17"}]},"documentation":{"id":1431,"nodeType":"StructuredDocumentation","src":"2407:84:17","text":" @dev Returns true if the contract is paused, and false otherwise."},"functionSelector":"5c975abb","id":1446,"implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"2505:6:17","nodeType":"FunctionDefinition","parameters":{"id":1432,"nodeType":"ParameterList","parameters":[],"src":"2511:2:17"},"returnParameters":{"id":1435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1446,"src":"2543:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1433,"name":"bool","nodeType":"ElementaryTypeName","src":"2543:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2542:6:17"},"scope":1520,"src":"2496:145:17","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1457,"nodeType":"Block","src":"2760:77:17","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":1450,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1446,"src":"2774:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2774:8:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1456,"nodeType":"IfStatement","src":"2770:61:17","trueBody":{"id":1455,"nodeType":"Block","src":"2784:47:17","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1452,"name":"EnforcedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1399,"src":"2805:13:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2805:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1454,"nodeType":"RevertStatement","src":"2798:22:17"}]}}]},"documentation":{"id":1447,"nodeType":"StructuredDocumentation","src":"2647:57:17","text":" @dev Throws if the contract is paused."},"id":1458,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNotPaused","nameLocation":"2718:17:17","nodeType":"FunctionDefinition","parameters":{"id":1448,"nodeType":"ParameterList","parameters":[],"src":"2735:2:17"},"returnParameters":{"id":1449,"nodeType":"ParameterList","parameters":[],"src":"2760:0:17"},"scope":1520,"src":"2709:128:17","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1470,"nodeType":"Block","src":"2957:78:17","statements":[{"condition":{"id":1464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2971:9:17","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1462,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1446,"src":"2972:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2972:8:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1469,"nodeType":"IfStatement","src":"2967:62:17","trueBody":{"id":1468,"nodeType":"Block","src":"2982:47:17","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1465,"name":"ExpectedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1402,"src":"3003:13:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3003:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1467,"nodeType":"RevertStatement","src":"2996:22:17"}]}}]},"documentation":{"id":1459,"nodeType":"StructuredDocumentation","src":"2843:61:17","text":" @dev Throws if the contract is not paused."},"id":1471,"implemented":true,"kind":"function","modifiers":[],"name":"_requirePaused","nameLocation":"2918:14:17","nodeType":"FunctionDefinition","parameters":{"id":1460,"nodeType":"ParameterList","parameters":[],"src":"2932:2:17"},"returnParameters":{"id":1461,"nodeType":"ParameterList","parameters":[],"src":"2957:0:17"},"scope":1520,"src":"2909:126:17","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1494,"nodeType":"Block","src":"3219:127:17","statements":[{"assignments":[1479],"declarations":[{"constant":false,"id":1479,"mutability":"mutable","name":"$","nameLocation":"3253:1:17","nodeType":"VariableDeclaration","scope":1494,"src":"3229:25:17","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1478,"nodeType":"UserDefinedTypeName","pathNode":{"id":1477,"name":"PausableStorage","nameLocations":["3229:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"3229:15:17"},"referencedDeclaration":1375,"src":"3229:15:17","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1482,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1480,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"3257:19:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1375_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3257:21:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3229:49:17"},{"expression":{"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1483,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"3288:1:17","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3290:7:17","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1374,"src":"3288:9:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3300:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3288:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1488,"nodeType":"ExpressionStatement","src":"3288:16:17"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1490,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1342,"src":"3326:10:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3326:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1489,"name":"Paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1391,"src":"3319:6:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3319:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1493,"nodeType":"EmitStatement","src":"3314:25:17"}]},"documentation":{"id":1472,"nodeType":"StructuredDocumentation","src":"3041:124:17","text":" @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."},"id":1495,"implemented":true,"kind":"function","modifiers":[{"id":1475,"kind":"modifierInvocation","modifierName":{"id":1474,"name":"whenNotPaused","nameLocations":["3205:13:17"],"nodeType":"IdentifierPath","referencedDeclaration":1410,"src":"3205:13:17"},"nodeType":"ModifierInvocation","src":"3205:13:17"}],"name":"_pause","nameLocation":"3179:6:17","nodeType":"FunctionDefinition","parameters":{"id":1473,"nodeType":"ParameterList","parameters":[],"src":"3185:2:17"},"returnParameters":{"id":1476,"nodeType":"ParameterList","parameters":[],"src":"3219:0:17"},"scope":1520,"src":"3170:176:17","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1518,"nodeType":"Block","src":"3526:130:17","statements":[{"assignments":[1503],"declarations":[{"constant":false,"id":1503,"mutability":"mutable","name":"$","nameLocation":"3560:1:17","nodeType":"VariableDeclaration","scope":1518,"src":"3536:25:17","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":1502,"nodeType":"UserDefinedTypeName","pathNode":{"id":1501,"name":"PausableStorage","nameLocations":["3536:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"3536:15:17"},"referencedDeclaration":1375,"src":"3536:15:17","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":1506,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1504,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"3564:19:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$1375_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":1505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3564:21:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3536:49:17"},{"expression":{"id":1511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1507,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1503,"src":"3595:1:17","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$1375_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":1509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3597:7:17","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":1374,"src":"3595:9:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3607:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3595:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1512,"nodeType":"ExpressionStatement","src":"3595:17:17"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1514,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1342,"src":"3636:10:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3636:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1513,"name":"Unpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1396,"src":"3627:8:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3627:22:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1517,"nodeType":"EmitStatement","src":"3622:27:17"}]},"documentation":{"id":1496,"nodeType":"StructuredDocumentation","src":"3352:121:17","text":" @dev Returns to normal state.\n Requirements:\n - The contract must be paused."},"id":1519,"implemented":true,"kind":"function","modifiers":[{"id":1499,"kind":"modifierInvocation","modifierName":{"id":1498,"name":"whenPaused","nameLocations":["3515:10:17"],"nodeType":"IdentifierPath","referencedDeclaration":1418,"src":"3515:10:17"},"nodeType":"ModifierInvocation","src":"3515:10:17"}],"name":"_unpause","nameLocation":"3487:8:17","nodeType":"FunctionDefinition","parameters":{"id":1497,"nodeType":"ParameterList","parameters":[],"src":"3495:2:17"},"returnParameters":{"id":1500,"nodeType":"ParameterList","parameters":[],"src":"3526:0:17"},"scope":1520,"src":"3478:178:17","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1521,"src":"701:2957:17","usedErrors":[1063,1066,1399,1402],"usedEvents":[1071,1391,1396]}],"src":"102:3557:17"},"id":17},"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[1560],"IERC165":[3367],"Initializable":[1314]},"id":1561,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1522,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:18"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":1524,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1561,"sourceUnit":3368,"src":"140:80:18","symbolAliases":[{"foreign":{"id":1523,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"148:7:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":1526,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1561,"sourceUnit":1315,"src":"221:66:18","symbolAliases":[{"foreign":{"id":1525,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"229:13:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1528,"name":"Initializable","nameLocations":["808:13:18"],"nodeType":"IdentifierPath","referencedDeclaration":1314,"src":"808:13:18"},"id":1529,"nodeType":"InheritanceSpecifier","src":"808:13:18"},{"baseName":{"id":1530,"name":"IERC165","nameLocations":["823:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":3367,"src":"823:7:18"},"id":1531,"nodeType":"InheritanceSpecifier","src":"823:7:18"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1527,"nodeType":"StructuredDocumentation","src":"289:479:18","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"id":1560,"linearizedBaseContracts":[1560,3367,1314],"name":"ERC165Upgradeable","nameLocation":"787:17:18","nodeType":"ContractDefinition","nodes":[{"body":{"id":1536,"nodeType":"Block","src":"888:7:18","statements":[]},"id":1537,"implemented":true,"kind":"function","modifiers":[{"id":1534,"kind":"modifierInvocation","modifierName":{"id":1533,"name":"onlyInitializing","nameLocations":["871:16:18"],"nodeType":"IdentifierPath","referencedDeclaration":1209,"src":"871:16:18"},"nodeType":"ModifierInvocation","src":"871:16:18"}],"name":"__ERC165_init","nameLocation":"846:13:18","nodeType":"FunctionDefinition","parameters":{"id":1532,"nodeType":"ParameterList","parameters":[],"src":"859:2:18"},"returnParameters":{"id":1535,"nodeType":"ParameterList","parameters":[],"src":"888:0:18"},"scope":1560,"src":"837:58:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1542,"nodeType":"Block","src":"962:7:18","statements":[]},"id":1543,"implemented":true,"kind":"function","modifiers":[{"id":1540,"kind":"modifierInvocation","modifierName":{"id":1539,"name":"onlyInitializing","nameLocations":["945:16:18"],"nodeType":"IdentifierPath","referencedDeclaration":1209,"src":"945:16:18"},"nodeType":"ModifierInvocation","src":"945:16:18"}],"name":"__ERC165_init_unchained","nameLocation":"910:23:18","nodeType":"FunctionDefinition","parameters":{"id":1538,"nodeType":"ParameterList","parameters":[],"src":"933:2:18"},"returnParameters":{"id":1541,"nodeType":"ParameterList","parameters":[],"src":"962:0:18"},"scope":1560,"src":"901:68:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3366],"body":{"id":1558,"nodeType":"Block","src":"1084:64:18","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1551,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1546,"src":"1101:11:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1553,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"1121:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$3367_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$3367_$","typeString":"type(contract IERC165)"}],"id":1552,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1116:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1116:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$3367","typeString":"type(contract IERC165)"}},"id":1555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1130:11:18","memberName":"interfaceId","nodeType":"MemberAccess","src":"1116:25:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1101:40:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1550,"id":1557,"nodeType":"Return","src":"1094:47:18"}]},"documentation":{"id":1544,"nodeType":"StructuredDocumentation","src":"974:23:18","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":1559,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1011:17:18","nodeType":"FunctionDefinition","parameters":{"id":1547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1546,"mutability":"mutable","name":"interfaceId","nameLocation":"1036:11:18","nodeType":"VariableDeclaration","scope":1559,"src":"1029:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1545,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1029:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1028:20:18"},"returnParameters":{"id":1550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1549,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1559,"src":"1078:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1548,"name":"bool","nodeType":"ElementaryTypeName","src":"1078:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1077:6:18"},"scope":1560,"src":"1002:146:18","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":1561,"src":"769:381:18","usedErrors":[1063,1066],"usedEvents":[1071]}],"src":"114:1037:18"},"id":18},"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[1643]},"id":1644,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1562,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"109:24:19"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":1563,"nodeType":"StructuredDocumentation","src":"135:90:19","text":" @dev External interface of AccessControl declared to support ERC-165 detection."},"fullyImplemented":false,"id":1643,"linearizedBaseContracts":[1643],"name":"IAccessControl","nameLocation":"236:14:19","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1564,"nodeType":"StructuredDocumentation","src":"257:56:19","text":" @dev The `account` is missing a role."},"errorSelector":"e2517d3f","id":1570,"name":"AccessControlUnauthorizedAccount","nameLocation":"324:32:19","nodeType":"ErrorDefinition","parameters":{"id":1569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"account","nameLocation":"365:7:19","nodeType":"VariableDeclaration","scope":1570,"src":"357:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1565,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1568,"mutability":"mutable","name":"neededRole","nameLocation":"382:10:19","nodeType":"VariableDeclaration","scope":1570,"src":"374:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"374:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"356:37:19"},"src":"318:76:19"},{"documentation":{"id":1571,"nodeType":"StructuredDocumentation","src":"400:148:19","text":" @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."},"errorSelector":"6697b232","id":1573,"name":"AccessControlBadConfirmation","nameLocation":"559:28:19","nodeType":"ErrorDefinition","parameters":{"id":1572,"nodeType":"ParameterList","parameters":[],"src":"587:2:19"},"src":"553:37:19"},{"anonymous":false,"documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"596:254:19","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted to signal this."},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":1582,"name":"RoleAdminChanged","nameLocation":"861:16:19","nodeType":"EventDefinition","parameters":{"id":1581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1576,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"894:4:19","nodeType":"VariableDeclaration","scope":1582,"src":"878:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1575,"name":"bytes32","nodeType":"ElementaryTypeName","src":"878:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1578,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"916:17:19","nodeType":"VariableDeclaration","scope":1582,"src":"900:33:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1577,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1580,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"951:12:19","nodeType":"VariableDeclaration","scope":1582,"src":"935:28:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1579,"name":"bytes32","nodeType":"ElementaryTypeName","src":"935:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"877:87:19"},"src":"855:110:19"},{"anonymous":false,"documentation":{"id":1583,"nodeType":"StructuredDocumentation","src":"971:295:19","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).\n Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":1591,"name":"RoleGranted","nameLocation":"1277:11:19","nodeType":"EventDefinition","parameters":{"id":1590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1585,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1305:4:19","nodeType":"VariableDeclaration","scope":1591,"src":"1289:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1584,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1289:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1587,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1327:7:19","nodeType":"VariableDeclaration","scope":1591,"src":"1311:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1586,"name":"address","nodeType":"ElementaryTypeName","src":"1311:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1589,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1352:6:19","nodeType":"VariableDeclaration","scope":1591,"src":"1336:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1588,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1288:71:19"},"src":"1271:89:19"},{"anonymous":false,"documentation":{"id":1592,"nodeType":"StructuredDocumentation","src":"1366:275:19","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n   - if using `revokeRole`, it is the admin role bearer\n   - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":1600,"name":"RoleRevoked","nameLocation":"1652:11:19","nodeType":"EventDefinition","parameters":{"id":1599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1594,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1680:4:19","nodeType":"VariableDeclaration","scope":1600,"src":"1664:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1593,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1664:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1596,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1702:7:19","nodeType":"VariableDeclaration","scope":1600,"src":"1686:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1595,"name":"address","nodeType":"ElementaryTypeName","src":"1686:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1598,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1727:6:19","nodeType":"VariableDeclaration","scope":1600,"src":"1711:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1597,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1663:71:19"},"src":"1646:89:19"},{"documentation":{"id":1601,"nodeType":"StructuredDocumentation","src":"1741:76:19","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":1610,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1831:7:19","nodeType":"FunctionDefinition","parameters":{"id":1606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1603,"mutability":"mutable","name":"role","nameLocation":"1847:4:19","nodeType":"VariableDeclaration","scope":1610,"src":"1839:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1602,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1839:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1605,"mutability":"mutable","name":"account","nameLocation":"1861:7:19","nodeType":"VariableDeclaration","scope":1610,"src":"1853:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1604,"name":"address","nodeType":"ElementaryTypeName","src":"1853:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1838:31:19"},"returnParameters":{"id":1609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1608,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1610,"src":"1893:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1607,"name":"bool","nodeType":"ElementaryTypeName","src":"1893:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1892:6:19"},"scope":1643,"src":"1822:77:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"1905:184:19","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","id":1618,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"2103:12:19","nodeType":"FunctionDefinition","parameters":{"id":1614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1613,"mutability":"mutable","name":"role","nameLocation":"2124:4:19","nodeType":"VariableDeclaration","scope":1618,"src":"2116:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1612,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2116:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2115:14:19"},"returnParameters":{"id":1617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1616,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1618,"src":"2153:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2153:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2152:9:19"},"scope":1643,"src":"2094:68:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1619,"nodeType":"StructuredDocumentation","src":"2168:239:19","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":1626,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2421:9:19","nodeType":"FunctionDefinition","parameters":{"id":1624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1621,"mutability":"mutable","name":"role","nameLocation":"2439:4:19","nodeType":"VariableDeclaration","scope":1626,"src":"2431:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1620,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2431:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1623,"mutability":"mutable","name":"account","nameLocation":"2453:7:19","nodeType":"VariableDeclaration","scope":1626,"src":"2445:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1622,"name":"address","nodeType":"ElementaryTypeName","src":"2445:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2430:31:19"},"returnParameters":{"id":1625,"nodeType":"ParameterList","parameters":[],"src":"2470:0:19"},"scope":1643,"src":"2412:59:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1627,"nodeType":"StructuredDocumentation","src":"2477:223:19","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":1634,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2714:10:19","nodeType":"FunctionDefinition","parameters":{"id":1632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1629,"mutability":"mutable","name":"role","nameLocation":"2733:4:19","nodeType":"VariableDeclaration","scope":1634,"src":"2725:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1628,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2725:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1631,"mutability":"mutable","name":"account","nameLocation":"2747:7:19","nodeType":"VariableDeclaration","scope":1634,"src":"2739:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1630,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2724:31:19"},"returnParameters":{"id":1633,"nodeType":"ParameterList","parameters":[],"src":"2764:0:19"},"scope":1643,"src":"2705:60:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"2771:491:19","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`."},"functionSelector":"36568abe","id":1642,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"3276:12:19","nodeType":"FunctionDefinition","parameters":{"id":1640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"mutability":"mutable","name":"role","nameLocation":"3297:4:19","nodeType":"VariableDeclaration","scope":1642,"src":"3289:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1636,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3289:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1639,"mutability":"mutable","name":"callerConfirmation","nameLocation":"3311:18:19","nodeType":"VariableDeclaration","scope":1642,"src":"3303:26:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"3303:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3288:42:19"},"returnParameters":{"id":1641,"nodeType":"ParameterList","parameters":[],"src":"3339:0:19"},"scope":1643,"src":"3267:73:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1644,"src":"226:3116:19","usedErrors":[1570,1573],"usedEvents":[1582,1591,1600]}],"src":"109:3234:19"},"id":19},"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/access/extensions/IAccessControlEnumerable.sol","exportedSymbols":{"IAccessControl":[1643],"IAccessControlEnumerable":[1669]},"id":1670,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1645,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"130:24:20"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/access/IAccessControl.sol","file":"../IAccessControl.sol","id":1647,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1670,"sourceUnit":1644,"src":"156:53:20","symbolAliases":[{"foreign":{"id":1646,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"164:14:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1649,"name":"IAccessControl","nameLocations":["350:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":1643,"src":"350:14:20"},"id":1650,"nodeType":"InheritanceSpecifier","src":"350:14:20"}],"canonicalName":"IAccessControlEnumerable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1648,"nodeType":"StructuredDocumentation","src":"211:100:20","text":" @dev External interface of AccessControlEnumerable declared to support ERC-165 detection."},"fullyImplemented":false,"id":1669,"linearizedBaseContracts":[1669,1643],"name":"IAccessControlEnumerable","nameLocation":"322:24:20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1651,"nodeType":"StructuredDocumentation","src":"371:574:20","text":" @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information."},"functionSelector":"9010d07c","id":1660,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMember","nameLocation":"959:13:20","nodeType":"FunctionDefinition","parameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1653,"mutability":"mutable","name":"role","nameLocation":"981:4:20","nodeType":"VariableDeclaration","scope":1660,"src":"973:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1652,"name":"bytes32","nodeType":"ElementaryTypeName","src":"973:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1655,"mutability":"mutable","name":"index","nameLocation":"995:5:20","nodeType":"VariableDeclaration","scope":1660,"src":"987:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1654,"name":"uint256","nodeType":"ElementaryTypeName","src":"987:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"972:29:20"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1660,"src":"1025:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1657,"name":"address","nodeType":"ElementaryTypeName","src":"1025:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1024:9:20"},"scope":1669,"src":"950:84:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"1040:157:20","text":" @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role."},"functionSelector":"ca15c873","id":1668,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMemberCount","nameLocation":"1211:18:20","nodeType":"FunctionDefinition","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"role","nameLocation":"1238:4:20","nodeType":"VariableDeclaration","scope":1668,"src":"1230:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1230:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1229:14:20"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1668,"src":"1267:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"1267:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1266:9:20"},"scope":1669,"src":"1202:74:20","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1670,"src":"312:966:20","usedErrors":[1570,1573],"usedEvents":[1582,1591,1600]}],"src":"130:1149:20"},"id":20},"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[1747]},"id":1748,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1671,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"106:25:21"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":1672,"nodeType":"StructuredDocumentation","src":"133:71:21","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":1747,"linearizedBaseContracts":[1747],"name":"IERC20","nameLocation":"215:6:21","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1673,"nodeType":"StructuredDocumentation","src":"228:158:21","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1681,"name":"Transfer","nameLocation":"397:8:21","nodeType":"EventDefinition","parameters":{"id":1680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1675,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"422:4:21","nodeType":"VariableDeclaration","scope":1681,"src":"406:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1674,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1677,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"444:2:21","nodeType":"VariableDeclaration","scope":1681,"src":"428:18:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1676,"name":"address","nodeType":"ElementaryTypeName","src":"428:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1679,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"456:5:21","nodeType":"VariableDeclaration","scope":1681,"src":"448:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1678,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"405:57:21"},"src":"391:72:21"},{"anonymous":false,"documentation":{"id":1682,"nodeType":"StructuredDocumentation","src":"469:148:21","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1690,"name":"Approval","nameLocation":"628:8:21","nodeType":"EventDefinition","parameters":{"id":1689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1684,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"653:5:21","nodeType":"VariableDeclaration","scope":1690,"src":"637:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1683,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1686,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"676:7:21","nodeType":"VariableDeclaration","scope":1690,"src":"660:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1685,"name":"address","nodeType":"ElementaryTypeName","src":"660:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1688,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"693:5:21","nodeType":"VariableDeclaration","scope":1690,"src":"685:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1687,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"636:63:21"},"src":"622:78:21"},{"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"706:65:21","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":1696,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"785:11:21","nodeType":"FunctionDefinition","parameters":{"id":1692,"nodeType":"ParameterList","parameters":[],"src":"796:2:21"},"returnParameters":{"id":1695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1696,"src":"822:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1693,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:9:21"},"scope":1747,"src":"776:55:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1697,"nodeType":"StructuredDocumentation","src":"837:71:21","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":1704,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"922:9:21","nodeType":"FunctionDefinition","parameters":{"id":1700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1699,"mutability":"mutable","name":"account","nameLocation":"940:7:21","nodeType":"VariableDeclaration","scope":1704,"src":"932:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1698,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"931:17:21"},"returnParameters":{"id":1703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1702,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1704,"src":"972:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1701,"name":"uint256","nodeType":"ElementaryTypeName","src":"972:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"971:9:21"},"scope":1747,"src":"913:68:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1705,"nodeType":"StructuredDocumentation","src":"987:213:21","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":1714,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1214:8:21","nodeType":"FunctionDefinition","parameters":{"id":1710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1707,"mutability":"mutable","name":"to","nameLocation":"1231:2:21","nodeType":"VariableDeclaration","scope":1714,"src":"1223:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1706,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1709,"mutability":"mutable","name":"value","nameLocation":"1243:5:21","nodeType":"VariableDeclaration","scope":1714,"src":"1235:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1708,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:27:21"},"returnParameters":{"id":1713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1714,"src":"1268:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1711,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:21"},"scope":1747,"src":"1205:69:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1715,"nodeType":"StructuredDocumentation","src":"1280:264:21","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":1724,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:21","nodeType":"FunctionDefinition","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1717,"mutability":"mutable","name":"owner","nameLocation":"1576:5:21","nodeType":"VariableDeclaration","scope":1724,"src":"1568:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1716,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1719,"mutability":"mutable","name":"spender","nameLocation":"1591:7:21","nodeType":"VariableDeclaration","scope":1724,"src":"1583:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1718,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:21"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1724,"src":"1623:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1721,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:21"},"scope":1747,"src":"1549:83:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"1638:667:21","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":1734,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2319:7:21","nodeType":"FunctionDefinition","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"spender","nameLocation":"2335:7:21","nodeType":"VariableDeclaration","scope":1734,"src":"2327:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"2327:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"value","nameLocation":"2352:5:21","nodeType":"VariableDeclaration","scope":1734,"src":"2344:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1728,"name":"uint256","nodeType":"ElementaryTypeName","src":"2344:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2326:32:21"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1734,"src":"2377:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1731,"name":"bool","nodeType":"ElementaryTypeName","src":"2377:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2376:6:21"},"scope":1747,"src":"2310:73:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1735,"nodeType":"StructuredDocumentation","src":"2389:297:21","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":1746,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2700:12:21","nodeType":"FunctionDefinition","parameters":{"id":1742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1737,"mutability":"mutable","name":"from","nameLocation":"2721:4:21","nodeType":"VariableDeclaration","scope":1746,"src":"2713:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1736,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1739,"mutability":"mutable","name":"to","nameLocation":"2735:2:21","nodeType":"VariableDeclaration","scope":1746,"src":"2727:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1738,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1741,"mutability":"mutable","name":"value","nameLocation":"2747:5:21","nodeType":"VariableDeclaration","scope":1746,"src":"2739:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1740,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2712:41:21"},"returnParameters":{"id":1745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1744,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1746,"src":"2772:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1743,"name":"bool","nodeType":"ElementaryTypeName","src":"2772:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2771:6:21"},"scope":1747,"src":"2691:87:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1748,"src":"205:2575:21","usedErrors":[],"usedEvents":[1681,1690]}],"src":"106:2675:21"},"id":21},"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol","exportedSymbols":{"Arrays":[2725],"Comparators":[2757],"Math":[4988],"SlotDerivation":[3008],"StorageSlot":[3132]},"id":2726,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1749,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"183:24:22"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol","file":"./Comparators.sol","id":1751,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2726,"sourceUnit":2758,"src":"209:46:22","symbolAliases":[{"foreign":{"id":1750,"name":"Comparators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2757,"src":"217:11:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol","file":"./SlotDerivation.sol","id":1753,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2726,"sourceUnit":3009,"src":"256:52:22","symbolAliases":[{"foreign":{"id":1752,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3008,"src":"264:14:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol","file":"./StorageSlot.sol","id":1755,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2726,"sourceUnit":3133,"src":"309:46:22","symbolAliases":[{"foreign":{"id":1754,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3132,"src":"317:11:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol","file":"./math/Math.sol","id":1757,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2726,"sourceUnit":4989,"src":"356:37:22","symbolAliases":[{"foreign":{"id":1756,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"364:4:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Arrays","contractDependencies":[],"contractKind":"library","documentation":{"id":1758,"nodeType":"StructuredDocumentation","src":"395:63:22","text":" @dev Collection of functions related to array types."},"fullyImplemented":true,"id":2725,"linearizedBaseContracts":[2725],"name":"Arrays","nameLocation":"467:6:22","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1761,"libraryName":{"id":1759,"name":"SlotDerivation","nameLocations":["486:14:22"],"nodeType":"IdentifierPath","referencedDeclaration":3008,"src":"486:14:22"},"nodeType":"UsingForDirective","src":"480:33:22","typeName":{"id":1760,"name":"bytes32","nodeType":"ElementaryTypeName","src":"505:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":1764,"libraryName":{"id":1762,"name":"StorageSlot","nameLocations":["524:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":3132,"src":"524:11:22"},"nodeType":"UsingForDirective","src":"518:30:22","typeName":{"id":1763,"name":"bytes32","nodeType":"ElementaryTypeName","src":"540:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":1796,"nodeType":"Block","src":"1628:83:22","statements":[{"expression":{"arguments":[{"arguments":[{"id":1786,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1768,"src":"1656:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":1785,"name":"_begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2021,"src":"1649:6:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256)"}},"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1649:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":1789,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1768,"src":"1669:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":1788,"name":"_end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"1664:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256)"}},"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1664:11:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1791,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1778,"src":"1677:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}],"id":1784,"name":"_quickSort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2010,"src":"1638:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_$returns$__$","typeString":"function (uint256,uint256,function (uint256,uint256) pure returns (bool)) pure"}},"id":1792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1638:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1793,"nodeType":"ExpressionStatement","src":"1638:44:22"},{"expression":{"id":1794,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1768,"src":"1699:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":1783,"id":1795,"nodeType":"Return","src":"1692:12:22"}]},"documentation":{"id":1765,"nodeType":"StructuredDocumentation","src":"554:915:22","text":" @dev Sort an array of uint256 (in memory) following the provided comparator function.\n This function does the sorting \"in place\", meaning that it overrides the input. The object is returned for\n convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array.\n NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the\n array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful\n when executing this as part of a transaction. If the array being sorted is too large, the sort operation may\n consume more gas than is available in a block, leading to potential DoS.\n IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way."},"id":1797,"implemented":true,"kind":"function","modifiers":[],"name":"sort","nameLocation":"1483:4:22","nodeType":"FunctionDefinition","parameters":{"id":1779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1768,"mutability":"mutable","name":"array","nameLocation":"1514:5:22","nodeType":"VariableDeclaration","scope":1797,"src":"1497:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1766,"name":"uint256","nodeType":"ElementaryTypeName","src":"1497:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1767,"nodeType":"ArrayTypeName","src":"1497:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1778,"mutability":"mutable","name":"comp","nameLocation":"1576:4:22","nodeType":"VariableDeclaration","scope":1797,"src":"1529:51:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"},"typeName":{"id":1777,"nodeType":"FunctionTypeName","parameterTypes":{"id":1773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1777,"src":"1538:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1769,"name":"uint256","nodeType":"ElementaryTypeName","src":"1538:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1777,"src":"1547:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1771,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1537:18:22"},"returnParameterTypes":{"id":1776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1775,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1777,"src":"1570:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1774,"name":"bool","nodeType":"ElementaryTypeName","src":"1570:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1569:6:22"},"src":"1529:51:22","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"},"visibility":"internal"},"visibility":"internal"}],"src":"1487:99:22"},"returnParameters":{"id":1783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1782,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1797,"src":"1610:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1610:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1781,"nodeType":"ArrayTypeName","src":"1610:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1609:18:22"},"scope":2725,"src":"1474:237:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1815,"nodeType":"Block","src":"1894:66:22","statements":[{"expression":{"arguments":[{"id":1808,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"1909:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":1809,"name":"Comparators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2757,"src":"1916:11:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Comparators_$2757_$","typeString":"type(library Comparators)"}},"id":1810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1928:2:22","memberName":"lt","nodeType":"MemberAccess","referencedDeclaration":2742,"src":"1916:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}],"id":1807,"name":"sort","nodeType":"Identifier","overloadedDeclarations":[1797,1816,1848,1869,1901,1922],"referencedDeclaration":1797,"src":"1904:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,function (uint256,uint256) pure returns (bool)) pure returns (uint256[] memory)"}},"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1904:27:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1812,"nodeType":"ExpressionStatement","src":"1904:27:22"},{"expression":{"id":1813,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"1948:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":1806,"id":1814,"nodeType":"Return","src":"1941:12:22"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"1717:93:22","text":" @dev Variant of {sort} that sorts an array of uint256 in increasing order."},"id":1816,"implemented":true,"kind":"function","modifiers":[],"name":"sort","nameLocation":"1824:4:22","nodeType":"FunctionDefinition","parameters":{"id":1802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1801,"mutability":"mutable","name":"array","nameLocation":"1846:5:22","nodeType":"VariableDeclaration","scope":1816,"src":"1829:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1799,"name":"uint256","nodeType":"ElementaryTypeName","src":"1829:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1800,"nodeType":"ArrayTypeName","src":"1829:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1828:24:22"},"returnParameters":{"id":1806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1805,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1816,"src":"1876:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1803,"name":"uint256","nodeType":"ElementaryTypeName","src":"1876:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1804,"nodeType":"ArrayTypeName","src":"1876:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1875:18:22"},"scope":2725,"src":"1815:145:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1847,"nodeType":"Block","src":"3040:97:22","statements":[{"expression":{"arguments":[{"arguments":[{"id":1838,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"3075:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":1837,"name":"_castToUint256Array","nodeType":"Identifier","overloadedDeclarations":[2073,2085],"referencedDeclaration":2073,"src":"3055:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address[] memory) pure returns (uint256[] memory)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3055:26:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"id":1841,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"3102:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) pure returns (bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) pure returns (bool)"}],"id":1840,"name":"_castToUint256Comp","nodeType":"Identifier","overloadedDeclarations":[2111,2137],"referencedDeclaration":2111,"src":"3083:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_function_internal_pure$_t_address_$_t_address_$returns$_t_bool_$_$returns$_t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_$","typeString":"function (function (address,address) pure returns (bool)) pure returns (function (uint256,uint256) pure returns (bool))"}},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3083:24:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}],"id":1836,"name":"sort","nodeType":"Identifier","overloadedDeclarations":[1797,1816,1848,1869,1901,1922],"referencedDeclaration":1797,"src":"3050:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,function (uint256,uint256) pure returns (bool)) pure returns (uint256[] memory)"}},"id":1843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3050:58:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1844,"nodeType":"ExpressionStatement","src":"3050:58:22"},{"expression":{"id":1845,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"3125:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":1835,"id":1846,"nodeType":"Return","src":"3118:12:22"}]},"documentation":{"id":1817,"nodeType":"StructuredDocumentation","src":"1966:915:22","text":" @dev Sort an array of address (in memory) following the provided comparator function.\n This function does the sorting \"in place\", meaning that it overrides the input. The object is returned for\n convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array.\n NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the\n array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful\n when executing this as part of a transaction. If the array being sorted is too large, the sort operation may\n consume more gas than is available in a block, leading to potential DoS.\n IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way."},"id":1848,"implemented":true,"kind":"function","modifiers":[],"name":"sort","nameLocation":"2895:4:22","nodeType":"FunctionDefinition","parameters":{"id":1831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1820,"mutability":"mutable","name":"array","nameLocation":"2926:5:22","nodeType":"VariableDeclaration","scope":1848,"src":"2909:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1818,"name":"address","nodeType":"ElementaryTypeName","src":"2909:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1819,"nodeType":"ArrayTypeName","src":"2909:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1830,"mutability":"mutable","name":"comp","nameLocation":"2988:4:22","nodeType":"VariableDeclaration","scope":1848,"src":"2941:51:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) pure returns (bool)"},"typeName":{"id":1829,"nodeType":"FunctionTypeName","parameterTypes":{"id":1825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1822,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1829,"src":"2950:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1821,"name":"address","nodeType":"ElementaryTypeName","src":"2950:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1829,"src":"2959:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1823,"name":"address","nodeType":"ElementaryTypeName","src":"2959:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2949:18:22"},"returnParameterTypes":{"id":1828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1829,"src":"2982:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1826,"name":"bool","nodeType":"ElementaryTypeName","src":"2982:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2981:6:22"},"src":"2941:51:22","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) pure returns (bool)"},"visibility":"internal"},"visibility":"internal"}],"src":"2899:99:22"},"returnParameters":{"id":1835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1848,"src":"3022:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1832,"name":"address","nodeType":"ElementaryTypeName","src":"3022:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1833,"nodeType":"ArrayTypeName","src":"3022:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3021:18:22"},"scope":2725,"src":"2886:251:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1868,"nodeType":"Block","src":"3320:87:22","statements":[{"expression":{"arguments":[{"arguments":[{"id":1860,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1852,"src":"3355:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":1859,"name":"_castToUint256Array","nodeType":"Identifier","overloadedDeclarations":[2073,2085],"referencedDeclaration":2073,"src":"3335:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address[] memory) pure returns (uint256[] memory)"}},"id":1861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3335:26:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":1862,"name":"Comparators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2757,"src":"3363:11:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Comparators_$2757_$","typeString":"type(library Comparators)"}},"id":1863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3375:2:22","memberName":"lt","nodeType":"MemberAccess","referencedDeclaration":2742,"src":"3363:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}],"id":1858,"name":"sort","nodeType":"Identifier","overloadedDeclarations":[1797,1816,1848,1869,1901,1922],"referencedDeclaration":1797,"src":"3330:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,function (uint256,uint256) pure returns (bool)) pure returns (uint256[] memory)"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3330:48:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1865,"nodeType":"ExpressionStatement","src":"3330:48:22"},{"expression":{"id":1866,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1852,"src":"3395:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":1857,"id":1867,"nodeType":"Return","src":"3388:12:22"}]},"documentation":{"id":1849,"nodeType":"StructuredDocumentation","src":"3143:93:22","text":" @dev Variant of {sort} that sorts an array of address in increasing order."},"id":1869,"implemented":true,"kind":"function","modifiers":[],"name":"sort","nameLocation":"3250:4:22","nodeType":"FunctionDefinition","parameters":{"id":1853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1852,"mutability":"mutable","name":"array","nameLocation":"3272:5:22","nodeType":"VariableDeclaration","scope":1869,"src":"3255:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1850,"name":"address","nodeType":"ElementaryTypeName","src":"3255:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1851,"nodeType":"ArrayTypeName","src":"3255:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3254:24:22"},"returnParameters":{"id":1857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1869,"src":"3302:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"3302:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1855,"nodeType":"ArrayTypeName","src":"3302:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3301:18:22"},"scope":2725,"src":"3241:166:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1900,"nodeType":"Block","src":"4487:97:22","statements":[{"expression":{"arguments":[{"arguments":[{"id":1891,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"4522:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"id":1890,"name":"_castToUint256Array","nodeType":"Identifier","overloadedDeclarations":[2073,2085],"referencedDeclaration":2085,"src":"4502:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (bytes32[] memory) pure returns (uint256[] memory)"}},"id":1892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4502:26:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"id":1894,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1883,"src":"4549:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32,bytes32) pure returns (bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32,bytes32) pure returns (bool)"}],"id":1893,"name":"_castToUint256Comp","nodeType":"Identifier","overloadedDeclarations":[2111,2137],"referencedDeclaration":2137,"src":"4530:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_$returns$_t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_$","typeString":"function (function (bytes32,bytes32) pure returns (bool)) pure returns (function (uint256,uint256) pure returns (bool))"}},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4530:24:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}],"id":1889,"name":"sort","nodeType":"Identifier","overloadedDeclarations":[1797,1816,1848,1869,1901,1922],"referencedDeclaration":1797,"src":"4497:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,function (uint256,uint256) pure returns (bool)) pure returns (uint256[] memory)"}},"id":1896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4497:58:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1897,"nodeType":"ExpressionStatement","src":"4497:58:22"},{"expression":{"id":1898,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"4572:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":1888,"id":1899,"nodeType":"Return","src":"4565:12:22"}]},"documentation":{"id":1870,"nodeType":"StructuredDocumentation","src":"3413:915:22","text":" @dev Sort an array of bytes32 (in memory) following the provided comparator function.\n This function does the sorting \"in place\", meaning that it overrides the input. The object is returned for\n convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array.\n NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the\n array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful\n when executing this as part of a transaction. If the array being sorted is too large, the sort operation may\n consume more gas than is available in a block, leading to potential DoS.\n IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way."},"id":1901,"implemented":true,"kind":"function","modifiers":[],"name":"sort","nameLocation":"4342:4:22","nodeType":"FunctionDefinition","parameters":{"id":1884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1873,"mutability":"mutable","name":"array","nameLocation":"4373:5:22","nodeType":"VariableDeclaration","scope":1901,"src":"4356:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1871,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4356:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1872,"nodeType":"ArrayTypeName","src":"4356:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":1883,"mutability":"mutable","name":"comp","nameLocation":"4435:4:22","nodeType":"VariableDeclaration","scope":1901,"src":"4388:51:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32,bytes32) pure returns (bool)"},"typeName":{"id":1882,"nodeType":"FunctionTypeName","parameterTypes":{"id":1878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1882,"src":"4397:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1874,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4397:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1877,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1882,"src":"4406:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1876,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4406:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4396:18:22"},"returnParameterTypes":{"id":1881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1882,"src":"4429:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1879,"name":"bool","nodeType":"ElementaryTypeName","src":"4429:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4428:6:22"},"src":"4388:51:22","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32,bytes32) pure returns (bool)"},"visibility":"internal"},"visibility":"internal"}],"src":"4346:99:22"},"returnParameters":{"id":1888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1901,"src":"4469:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1885,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4469:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1886,"nodeType":"ArrayTypeName","src":"4469:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4468:18:22"},"scope":2725,"src":"4333:251:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1921,"nodeType":"Block","src":"4767:87:22","statements":[{"expression":{"arguments":[{"arguments":[{"id":1913,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"4802:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"id":1912,"name":"_castToUint256Array","nodeType":"Identifier","overloadedDeclarations":[2073,2085],"referencedDeclaration":2085,"src":"4782:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (bytes32[] memory) pure returns (uint256[] memory)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4782:26:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":1915,"name":"Comparators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2757,"src":"4810:11:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Comparators_$2757_$","typeString":"type(library Comparators)"}},"id":1916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4822:2:22","memberName":"lt","nodeType":"MemberAccess","referencedDeclaration":2742,"src":"4810:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}],"id":1911,"name":"sort","nodeType":"Identifier","overloadedDeclarations":[1797,1816,1848,1869,1901,1922],"referencedDeclaration":1797,"src":"4777:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,function (uint256,uint256) pure returns (bool)) pure returns (uint256[] memory)"}},"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4777:48:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1918,"nodeType":"ExpressionStatement","src":"4777:48:22"},{"expression":{"id":1919,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"4842:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":1910,"id":1920,"nodeType":"Return","src":"4835:12:22"}]},"documentation":{"id":1902,"nodeType":"StructuredDocumentation","src":"4590:93:22","text":" @dev Variant of {sort} that sorts an array of bytes32 in increasing order."},"id":1922,"implemented":true,"kind":"function","modifiers":[],"name":"sort","nameLocation":"4697:4:22","nodeType":"FunctionDefinition","parameters":{"id":1906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1905,"mutability":"mutable","name":"array","nameLocation":"4719:5:22","nodeType":"VariableDeclaration","scope":1922,"src":"4702:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4702:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1904,"nodeType":"ArrayTypeName","src":"4702:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4701:24:22"},"returnParameters":{"id":1910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1922,"src":"4749:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1907,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4749:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1908,"nodeType":"ArrayTypeName","src":"4749:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4748:18:22"},"scope":2725,"src":"4688:166:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2009,"nodeType":"Block","src":"5470:889:22","statements":[{"id":2008,"nodeType":"UncheckedBlock","src":"5480:873:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1940,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"5508:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1941,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"5514:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5508:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30783430","id":1943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5522:4:22","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"src":"5508:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1946,"nodeType":"IfStatement","src":"5504:31:22","trueBody":{"functionReturnParameters":1939,"id":1945,"nodeType":"Return","src":"5528:7:22"}},{"assignments":[1948],"declarations":[{"constant":false,"id":1948,"mutability":"mutable","name":"pivot","nameLocation":"5599:5:22","nodeType":"VariableDeclaration","scope":2008,"src":"5591:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1947,"name":"uint256","nodeType":"ElementaryTypeName","src":"5591:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1952,"initialValue":{"arguments":[{"id":1950,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"5614:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1949,"name":"_mload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"5607:6:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5607:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5591:29:22"},{"assignments":[1954],"declarations":[{"constant":false,"id":1954,"mutability":"mutable","name":"pos","nameLocation":"5715:3:22","nodeType":"VariableDeclaration","scope":2008,"src":"5707:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"5707:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1956,"initialValue":{"id":1955,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"5721:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5707:19:22"},{"body":{"id":1987,"nodeType":"Block","src":"5795:331:22","statements":[{"condition":{"arguments":[{"arguments":[{"id":1972,"name":"it","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"5829:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1971,"name":"_mload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"5822:6:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5822:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1974,"name":"pivot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1948,"src":"5834:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1970,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"5817:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5817:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1986,"nodeType":"IfStatement","src":"5813:299:22","trueBody":{"id":1985,"nodeType":"Block","src":"5842:270:22","statements":[{"expression":{"id":1978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1976,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"6046:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"30783230","id":1977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6053:4:22","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"6046:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1979,"nodeType":"ExpressionStatement","src":"6046:11:22"},{"expression":{"arguments":[{"id":1981,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"6085:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1982,"name":"it","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"6090:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1980,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"6079:5:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6079:14:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1984,"nodeType":"ExpressionStatement","src":"6079:14:22"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1963,"name":"it","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"5773:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1964,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"5778:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5773:8:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1988,"initializationExpression":{"assignments":[1958],"declarations":[{"constant":false,"id":1958,"mutability":"mutable","name":"it","nameLocation":"5754:2:22","nodeType":"VariableDeclaration","scope":1988,"src":"5746:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1957,"name":"uint256","nodeType":"ElementaryTypeName","src":"5746:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1962,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1959,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"5759:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30783230","id":1960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5767:4:22","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5759:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5746:25:22"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1966,"name":"it","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"5783:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"30783230","id":1967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5789:4:22","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5783:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1969,"nodeType":"ExpressionStatement","src":"5783:10:22"},"nodeType":"ForStatement","src":"5741:385:22"},{"expression":{"arguments":[{"id":1990,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"6146:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1991,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"6153:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1989,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"6140:5:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:17:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1993,"nodeType":"ExpressionStatement","src":"6140:17:22"},{"expression":{"arguments":[{"id":1995,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"6207:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1996,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"6214:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1997,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"6219:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}],"id":1994,"name":"_quickSort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2010,"src":"6196:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_$returns$__$","typeString":"function (uint256,uint256,function (uint256,uint256) pure returns (bool)) pure"}},"id":1998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6196:28:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1999,"nodeType":"ExpressionStatement","src":"6196:28:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2001,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"6284:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30783230","id":2002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6290:4:22","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"6284:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2004,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"6296:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2005,"name":"comp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"6301:4:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}],"id":2000,"name":"_quickSort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2010,"src":"6273:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_$returns$__$","typeString":"function (uint256,uint256,function (uint256,uint256) pure returns (bool)) pure"}},"id":2006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6273:33:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2007,"nodeType":"ExpressionStatement","src":"6273:33:22"}]}]},"documentation":{"id":1923,"nodeType":"StructuredDocumentation","src":"4860:491:22","text":" @dev Performs a quick sort of a segment of memory. The segment sorted starts at `begin` (inclusive), and stops\n at end (exclusive). Sorting follows the `comp` comparator.\n Invariant: `begin <= end`. This is the case when initially called by {sort} and is preserved in subcalls.\n IMPORTANT: Memory locations between `begin` and `end` are not validated/zeroed. This function should\n be used only if the limits are within a memory array."},"id":2010,"implemented":true,"kind":"function","modifiers":[],"name":"_quickSort","nameLocation":"5365:10:22","nodeType":"FunctionDefinition","parameters":{"id":1938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1925,"mutability":"mutable","name":"begin","nameLocation":"5384:5:22","nodeType":"VariableDeclaration","scope":2010,"src":"5376:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1924,"name":"uint256","nodeType":"ElementaryTypeName","src":"5376:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1927,"mutability":"mutable","name":"end","nameLocation":"5399:3:22","nodeType":"VariableDeclaration","scope":2010,"src":"5391:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1926,"name":"uint256","nodeType":"ElementaryTypeName","src":"5391:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1937,"mutability":"mutable","name":"comp","nameLocation":"5451:4:22","nodeType":"VariableDeclaration","scope":2010,"src":"5404:51:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"},"typeName":{"id":1936,"nodeType":"FunctionTypeName","parameterTypes":{"id":1932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1936,"src":"5413:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1928,"name":"uint256","nodeType":"ElementaryTypeName","src":"5413:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1936,"src":"5422:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1930,"name":"uint256","nodeType":"ElementaryTypeName","src":"5422:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5412:18:22"},"returnParameterTypes":{"id":1935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1936,"src":"5445:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1933,"name":"bool","nodeType":"ElementaryTypeName","src":"5445:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5444:6:22"},"src":"5404:51:22","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"},"visibility":"internal"},"visibility":"internal"}],"src":"5375:81:22"},"returnParameters":{"id":1939,"nodeType":"ParameterList","parameters":[],"src":"5470:0:22"},"scope":2725,"src":"5356:1003:22","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2020,"nodeType":"Block","src":"6532:88:22","statements":[{"AST":{"nativeSrc":"6567:47:22","nodeType":"YulBlock","src":"6567:47:22","statements":[{"nativeSrc":"6581:23:22","nodeType":"YulAssignment","src":"6581:23:22","value":{"arguments":[{"name":"array","nativeSrc":"6592:5:22","nodeType":"YulIdentifier","src":"6592:5:22"},{"kind":"number","nativeSrc":"6599:4:22","nodeType":"YulLiteral","src":"6599:4:22","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6588:3:22","nodeType":"YulIdentifier","src":"6588:3:22"},"nativeSrc":"6588:16:22","nodeType":"YulFunctionCall","src":"6588:16:22"},"variableNames":[{"name":"ptr","nativeSrc":"6581:3:22","nodeType":"YulIdentifier","src":"6581:3:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2014,"isOffset":false,"isSlot":false,"src":"6592:5:22","valueSize":1},{"declaration":2017,"isOffset":false,"isSlot":false,"src":"6581:3:22","valueSize":1}],"flags":["memory-safe"],"id":2019,"nodeType":"InlineAssembly","src":"6542:72:22"}]},"documentation":{"id":2011,"nodeType":"StructuredDocumentation","src":"6365:87:22","text":" @dev Pointer to the memory location of the first element of `array`."},"id":2021,"implemented":true,"kind":"function","modifiers":[],"name":"_begin","nameLocation":"6466:6:22","nodeType":"FunctionDefinition","parameters":{"id":2015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2014,"mutability":"mutable","name":"array","nameLocation":"6490:5:22","nodeType":"VariableDeclaration","scope":2021,"src":"6473:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2012,"name":"uint256","nodeType":"ElementaryTypeName","src":"6473:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2013,"nodeType":"ArrayTypeName","src":"6473:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6472:24:22"},"returnParameters":{"id":2018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2017,"mutability":"mutable","name":"ptr","nameLocation":"6527:3:22","nodeType":"VariableDeclaration","scope":2021,"src":"6519:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2016,"name":"uint256","nodeType":"ElementaryTypeName","src":"6519:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6518:13:22"},"scope":2725,"src":"6457:163:22","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2040,"nodeType":"Block","src":"6892:93:22","statements":[{"id":2039,"nodeType":"UncheckedBlock","src":"6902:77:22","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2031,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2025,"src":"6940:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":2030,"name":"_begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2021,"src":"6933:6:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256)"}},"id":2032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6933:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2033,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2025,"src":"6949:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6955:6:22","memberName":"length","nodeType":"MemberAccess","src":"6949:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783230","id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6964:4:22","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"6949:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6933:35:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2029,"id":2038,"nodeType":"Return","src":"6926:42:22"}]}]},"documentation":{"id":2022,"nodeType":"StructuredDocumentation","src":"6626:188:22","text":" @dev Pointer to the memory location of the first memory word (32bytes) after `array`. This is the memory word\n that comes just after the last element of the array."},"id":2041,"implemented":true,"kind":"function","modifiers":[],"name":"_end","nameLocation":"6828:4:22","nodeType":"FunctionDefinition","parameters":{"id":2026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2025,"mutability":"mutable","name":"array","nameLocation":"6850:5:22","nodeType":"VariableDeclaration","scope":2041,"src":"6833:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2023,"name":"uint256","nodeType":"ElementaryTypeName","src":"6833:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2024,"nodeType":"ArrayTypeName","src":"6833:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6832:24:22"},"returnParameters":{"id":2029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2028,"mutability":"mutable","name":"ptr","nameLocation":"6887:3:22","nodeType":"VariableDeclaration","scope":2041,"src":"6879:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2027,"name":"uint256","nodeType":"ElementaryTypeName","src":"6879:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6878:13:22"},"scope":2725,"src":"6819:166:22","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2050,"nodeType":"Block","src":"7136:68:22","statements":[{"AST":{"nativeSrc":"7155:43:22","nodeType":"YulBlock","src":"7155:43:22","statements":[{"nativeSrc":"7169:19:22","nodeType":"YulAssignment","src":"7169:19:22","value":{"arguments":[{"name":"ptr","nativeSrc":"7184:3:22","nodeType":"YulIdentifier","src":"7184:3:22"}],"functionName":{"name":"mload","nativeSrc":"7178:5:22","nodeType":"YulIdentifier","src":"7178:5:22"},"nativeSrc":"7178:10:22","nodeType":"YulFunctionCall","src":"7178:10:22"},"variableNames":[{"name":"value","nativeSrc":"7169:5:22","nodeType":"YulIdentifier","src":"7169:5:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2044,"isOffset":false,"isSlot":false,"src":"7184:3:22","valueSize":1},{"declaration":2047,"isOffset":false,"isSlot":false,"src":"7169:5:22","valueSize":1}],"id":2049,"nodeType":"InlineAssembly","src":"7146:52:22"}]},"documentation":{"id":2042,"nodeType":"StructuredDocumentation","src":"6991:74:22","text":" @dev Load memory word (as a uint256) at location `ptr`."},"id":2051,"implemented":true,"kind":"function","modifiers":[],"name":"_mload","nameLocation":"7079:6:22","nodeType":"FunctionDefinition","parameters":{"id":2045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2044,"mutability":"mutable","name":"ptr","nameLocation":"7094:3:22","nodeType":"VariableDeclaration","scope":2051,"src":"7086:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2043,"name":"uint256","nodeType":"ElementaryTypeName","src":"7086:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7085:13:22"},"returnParameters":{"id":2048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2047,"mutability":"mutable","name":"value","nameLocation":"7129:5:22","nodeType":"VariableDeclaration","scope":2051,"src":"7121:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2046,"name":"uint256","nodeType":"ElementaryTypeName","src":"7121:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7120:15:22"},"scope":2725,"src":"7070:134:22","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2060,"nodeType":"Block","src":"7348:178:22","statements":[{"AST":{"nativeSrc":"7367:153:22","nodeType":"YulBlock","src":"7367:153:22","statements":[{"nativeSrc":"7381:25:22","nodeType":"YulVariableDeclaration","src":"7381:25:22","value":{"arguments":[{"name":"ptr1","nativeSrc":"7401:4:22","nodeType":"YulIdentifier","src":"7401:4:22"}],"functionName":{"name":"mload","nativeSrc":"7395:5:22","nodeType":"YulIdentifier","src":"7395:5:22"},"nativeSrc":"7395:11:22","nodeType":"YulFunctionCall","src":"7395:11:22"},"variables":[{"name":"value1","nativeSrc":"7385:6:22","nodeType":"YulTypedName","src":"7385:6:22","type":""}]},{"nativeSrc":"7419:25:22","nodeType":"YulVariableDeclaration","src":"7419:25:22","value":{"arguments":[{"name":"ptr2","nativeSrc":"7439:4:22","nodeType":"YulIdentifier","src":"7439:4:22"}],"functionName":{"name":"mload","nativeSrc":"7433:5:22","nodeType":"YulIdentifier","src":"7433:5:22"},"nativeSrc":"7433:11:22","nodeType":"YulFunctionCall","src":"7433:11:22"},"variables":[{"name":"value2","nativeSrc":"7423:6:22","nodeType":"YulTypedName","src":"7423:6:22","type":""}]},{"expression":{"arguments":[{"name":"ptr1","nativeSrc":"7464:4:22","nodeType":"YulIdentifier","src":"7464:4:22"},{"name":"value2","nativeSrc":"7470:6:22","nodeType":"YulIdentifier","src":"7470:6:22"}],"functionName":{"name":"mstore","nativeSrc":"7457:6:22","nodeType":"YulIdentifier","src":"7457:6:22"},"nativeSrc":"7457:20:22","nodeType":"YulFunctionCall","src":"7457:20:22"},"nativeSrc":"7457:20:22","nodeType":"YulExpressionStatement","src":"7457:20:22"},{"expression":{"arguments":[{"name":"ptr2","nativeSrc":"7497:4:22","nodeType":"YulIdentifier","src":"7497:4:22"},{"name":"value1","nativeSrc":"7503:6:22","nodeType":"YulIdentifier","src":"7503:6:22"}],"functionName":{"name":"mstore","nativeSrc":"7490:6:22","nodeType":"YulIdentifier","src":"7490:6:22"},"nativeSrc":"7490:20:22","nodeType":"YulFunctionCall","src":"7490:20:22"},"nativeSrc":"7490:20:22","nodeType":"YulExpressionStatement","src":"7490:20:22"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2054,"isOffset":false,"isSlot":false,"src":"7401:4:22","valueSize":1},{"declaration":2054,"isOffset":false,"isSlot":false,"src":"7464:4:22","valueSize":1},{"declaration":2056,"isOffset":false,"isSlot":false,"src":"7439:4:22","valueSize":1},{"declaration":2056,"isOffset":false,"isSlot":false,"src":"7497:4:22","valueSize":1}],"id":2059,"nodeType":"InlineAssembly","src":"7358:162:22"}]},"documentation":{"id":2052,"nodeType":"StructuredDocumentation","src":"7210:77:22","text":" @dev Swaps the elements memory location `ptr1` and `ptr2`."},"id":2061,"implemented":true,"kind":"function","modifiers":[],"name":"_swap","nameLocation":"7301:5:22","nodeType":"FunctionDefinition","parameters":{"id":2057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2054,"mutability":"mutable","name":"ptr1","nameLocation":"7315:4:22","nodeType":"VariableDeclaration","scope":2061,"src":"7307:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2053,"name":"uint256","nodeType":"ElementaryTypeName","src":"7307:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2056,"mutability":"mutable","name":"ptr2","nameLocation":"7329:4:22","nodeType":"VariableDeclaration","scope":2061,"src":"7321:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2055,"name":"uint256","nodeType":"ElementaryTypeName","src":"7321:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7306:28:22"},"returnParameters":{"id":2058,"nodeType":"ParameterList","parameters":[],"src":"7348:0:22"},"scope":2725,"src":"7292:234:22","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2072,"nodeType":"Block","src":"7713:64:22","statements":[{"AST":{"nativeSrc":"7732:39:22","nodeType":"YulBlock","src":"7732:39:22","statements":[{"nativeSrc":"7746:15:22","nodeType":"YulAssignment","src":"7746:15:22","value":{"name":"input","nativeSrc":"7756:5:22","nodeType":"YulIdentifier","src":"7756:5:22"},"variableNames":[{"name":"output","nativeSrc":"7746:6:22","nodeType":"YulIdentifier","src":"7746:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2065,"isOffset":false,"isSlot":false,"src":"7756:5:22","valueSize":1},{"declaration":2069,"isOffset":false,"isSlot":false,"src":"7746:6:22","valueSize":1}],"id":2071,"nodeType":"InlineAssembly","src":"7723:48:22"}]},"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"7532:76:22","text":"@dev Helper: low level cast address memory array to uint256 memory array"},"id":2073,"implemented":true,"kind":"function","modifiers":[],"name":"_castToUint256Array","nameLocation":"7622:19:22","nodeType":"FunctionDefinition","parameters":{"id":2066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2065,"mutability":"mutable","name":"input","nameLocation":"7659:5:22","nodeType":"VariableDeclaration","scope":2073,"src":"7642:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"7642:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2064,"nodeType":"ArrayTypeName","src":"7642:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"7641:24:22"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2069,"mutability":"mutable","name":"output","nameLocation":"7705:6:22","nodeType":"VariableDeclaration","scope":2073,"src":"7688:23:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"7688:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2068,"nodeType":"ArrayTypeName","src":"7688:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7687:25:22"},"scope":2725,"src":"7613:164:22","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2084,"nodeType":"Block","src":"7964:64:22","statements":[{"AST":{"nativeSrc":"7983:39:22","nodeType":"YulBlock","src":"7983:39:22","statements":[{"nativeSrc":"7997:15:22","nodeType":"YulAssignment","src":"7997:15:22","value":{"name":"input","nativeSrc":"8007:5:22","nodeType":"YulIdentifier","src":"8007:5:22"},"variableNames":[{"name":"output","nativeSrc":"7997:6:22","nodeType":"YulIdentifier","src":"7997:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2077,"isOffset":false,"isSlot":false,"src":"8007:5:22","valueSize":1},{"declaration":2081,"isOffset":false,"isSlot":false,"src":"7997:6:22","valueSize":1}],"id":2083,"nodeType":"InlineAssembly","src":"7974:48:22"}]},"documentation":{"id":2074,"nodeType":"StructuredDocumentation","src":"7783:76:22","text":"@dev Helper: low level cast bytes32 memory array to uint256 memory array"},"id":2085,"implemented":true,"kind":"function","modifiers":[],"name":"_castToUint256Array","nameLocation":"7873:19:22","nodeType":"FunctionDefinition","parameters":{"id":2078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2077,"mutability":"mutable","name":"input","nameLocation":"7910:5:22","nodeType":"VariableDeclaration","scope":2085,"src":"7893:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":2075,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7893:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2076,"nodeType":"ArrayTypeName","src":"7893:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"7892:24:22"},"returnParameters":{"id":2082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2081,"mutability":"mutable","name":"output","nameLocation":"7956:6:22","nodeType":"VariableDeclaration","scope":2085,"src":"7939:23:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2079,"name":"uint256","nodeType":"ElementaryTypeName","src":"7939:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2080,"nodeType":"ArrayTypeName","src":"7939:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7938:25:22"},"scope":2725,"src":"7864:164:22","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2110,"nodeType":"Block","src":"8290:64:22","statements":[{"AST":{"nativeSrc":"8309:39:22","nodeType":"YulBlock","src":"8309:39:22","statements":[{"nativeSrc":"8323:15:22","nodeType":"YulAssignment","src":"8323:15:22","value":{"name":"input","nativeSrc":"8333:5:22","nodeType":"YulIdentifier","src":"8333:5:22"},"variableNames":[{"name":"output","nativeSrc":"8323:6:22","nodeType":"YulIdentifier","src":"8323:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2096,"isOffset":false,"isSlot":false,"src":"8333:5:22","valueSize":1},{"declaration":2107,"isOffset":false,"isSlot":false,"src":"8323:6:22","valueSize":1}],"id":2109,"nodeType":"InlineAssembly","src":"8300:48:22"}]},"documentation":{"id":2086,"nodeType":"StructuredDocumentation","src":"8034:78:22","text":"@dev Helper: low level cast address comp function to uint256 comp function"},"id":2111,"implemented":true,"kind":"function","modifiers":[],"name":"_castToUint256Comp","nameLocation":"8126:18:22","nodeType":"FunctionDefinition","parameters":{"id":2097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2096,"mutability":"mutable","name":"input","nameLocation":"8201:5:22","nodeType":"VariableDeclaration","scope":2111,"src":"8154:52:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) pure returns (bool)"},"typeName":{"id":2095,"nodeType":"FunctionTypeName","parameterTypes":{"id":2091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2088,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2095,"src":"8163:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2087,"name":"address","nodeType":"ElementaryTypeName","src":"8163:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2090,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2095,"src":"8172:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2089,"name":"address","nodeType":"ElementaryTypeName","src":"8172:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8162:18:22"},"returnParameterTypes":{"id":2094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2093,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2095,"src":"8195:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2092,"name":"bool","nodeType":"ElementaryTypeName","src":"8195:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8194:6:22"},"src":"8154:52:22","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) pure returns (bool)"},"visibility":"internal"},"visibility":"internal"}],"src":"8144:68:22"},"returnParameters":{"id":2108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2107,"mutability":"mutable","name":"output","nameLocation":"8282:6:22","nodeType":"VariableDeclaration","scope":2111,"src":"8235:53:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"},"typeName":{"id":2106,"nodeType":"FunctionTypeName","parameterTypes":{"id":2102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2106,"src":"8244:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2098,"name":"uint256","nodeType":"ElementaryTypeName","src":"8244:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2106,"src":"8253:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2100,"name":"uint256","nodeType":"ElementaryTypeName","src":"8253:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8243:18:22"},"returnParameterTypes":{"id":2105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2106,"src":"8276:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2103,"name":"bool","nodeType":"ElementaryTypeName","src":"8276:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8275:6:22"},"src":"8235:53:22","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"},"visibility":"internal"},"visibility":"internal"}],"src":"8234:55:22"},"scope":2725,"src":"8117:237:22","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2136,"nodeType":"Block","src":"8616:64:22","statements":[{"AST":{"nativeSrc":"8635:39:22","nodeType":"YulBlock","src":"8635:39:22","statements":[{"nativeSrc":"8649:15:22","nodeType":"YulAssignment","src":"8649:15:22","value":{"name":"input","nativeSrc":"8659:5:22","nodeType":"YulIdentifier","src":"8659:5:22"},"variableNames":[{"name":"output","nativeSrc":"8649:6:22","nodeType":"YulIdentifier","src":"8649:6:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2122,"isOffset":false,"isSlot":false,"src":"8659:5:22","valueSize":1},{"declaration":2133,"isOffset":false,"isSlot":false,"src":"8649:6:22","valueSize":1}],"id":2135,"nodeType":"InlineAssembly","src":"8626:48:22"}]},"documentation":{"id":2112,"nodeType":"StructuredDocumentation","src":"8360:78:22","text":"@dev Helper: low level cast bytes32 comp function to uint256 comp function"},"id":2137,"implemented":true,"kind":"function","modifiers":[],"name":"_castToUint256Comp","nameLocation":"8452:18:22","nodeType":"FunctionDefinition","parameters":{"id":2123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2122,"mutability":"mutable","name":"input","nameLocation":"8527:5:22","nodeType":"VariableDeclaration","scope":2137,"src":"8480:52:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32,bytes32) pure returns (bool)"},"typeName":{"id":2121,"nodeType":"FunctionTypeName","parameterTypes":{"id":2117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2114,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2121,"src":"8489:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2113,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8489:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2116,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2121,"src":"8498:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2115,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8498:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8488:18:22"},"returnParameterTypes":{"id":2120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2121,"src":"8521:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2118,"name":"bool","nodeType":"ElementaryTypeName","src":"8521:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8520:6:22"},"src":"8480:52:22","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32,bytes32) pure returns (bool)"},"visibility":"internal"},"visibility":"internal"}],"src":"8470:68:22"},"returnParameters":{"id":2134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2133,"mutability":"mutable","name":"output","nameLocation":"8608:6:22","nodeType":"VariableDeclaration","scope":2137,"src":"8561:53:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"},"typeName":{"id":2132,"nodeType":"FunctionTypeName","parameterTypes":{"id":2128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2132,"src":"8570:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2124,"name":"uint256","nodeType":"ElementaryTypeName","src":"8570:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2132,"src":"8579:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2126,"name":"uint256","nodeType":"ElementaryTypeName","src":"8579:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8569:18:22"},"returnParameterTypes":{"id":2131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2132,"src":"8602:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2129,"name":"bool","nodeType":"ElementaryTypeName","src":"8602:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8601:6:22"},"src":"8561:53:22","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"},"visibility":"internal"},"visibility":"internal"}],"src":"8560:55:22"},"scope":2725,"src":"8443:237:22","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2219,"nodeType":"Block","src":"9405:834:22","statements":[{"assignments":[2149],"declarations":[{"constant":false,"id":2149,"mutability":"mutable","name":"low","nameLocation":"9423:3:22","nodeType":"VariableDeclaration","scope":2219,"src":"9415:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2148,"name":"uint256","nodeType":"ElementaryTypeName","src":"9415:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2151,"initialValue":{"hexValue":"30","id":2150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9429:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9415:15:22"},{"assignments":[2153],"declarations":[{"constant":false,"id":2153,"mutability":"mutable","name":"high","nameLocation":"9448:4:22","nodeType":"VariableDeclaration","scope":2219,"src":"9440:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2152,"name":"uint256","nodeType":"ElementaryTypeName","src":"9440:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2156,"initialValue":{"expression":{"id":2154,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2141,"src":"9455:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9461:6:22","memberName":"length","nodeType":"MemberAccess","src":"9455:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9440:27:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2157,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"9482:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9490:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9482:9:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2163,"nodeType":"IfStatement","src":"9478:48:22","trueBody":{"id":2162,"nodeType":"Block","src":"9493:33:22","statements":[{"expression":{"hexValue":"30","id":2160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9514:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2147,"id":2161,"nodeType":"Return","src":"9507:8:22"}]}},{"body":{"id":2195,"nodeType":"Block","src":"9555:423:22","statements":[{"assignments":[2168],"declarations":[{"constant":false,"id":2168,"mutability":"mutable","name":"mid","nameLocation":"9577:3:22","nodeType":"VariableDeclaration","scope":2195,"src":"9569:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2167,"name":"uint256","nodeType":"ElementaryTypeName","src":"9569:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2174,"initialValue":{"arguments":[{"id":2171,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"9596:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2172,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"9601:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2169,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"9583:4:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":2170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9588:7:22","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":3717,"src":"9583:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9583:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9569:37:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2176,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2141,"src":"9844:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},{"id":2177,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2168,"src":"9851:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2175,"name":"unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[2500,2526,2552,2578,2604],"referencedDeclaration":2552,"src":"9831:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Uint256Slot_$3023_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":2178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9831:24:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3023_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":2179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9856:5:22","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3022,"src":"9831:30:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2180,"name":"element","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2143,"src":"9864:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9831:40:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2193,"nodeType":"Block","src":"9922:46:22","statements":[{"expression":{"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2187,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"9940:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2188,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2168,"src":"9946:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9952:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9946:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9940:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2192,"nodeType":"ExpressionStatement","src":"9940:13:22"}]},"id":2194,"nodeType":"IfStatement","src":"9827:141:22","trueBody":{"id":2186,"nodeType":"Block","src":"9873:43:22","statements":[{"expression":{"id":2184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2182,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"9891:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2183,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2168,"src":"9898:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9891:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2185,"nodeType":"ExpressionStatement","src":"9891:10:22"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2164,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"9543:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2165,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"9549:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9543:10:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2196,"nodeType":"WhileStatement","src":"9536:442:22"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2197,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"10095:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10101:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10095:7:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2201,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2141,"src":"10119:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2202,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"10126:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10132:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10126:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2200,"name":"unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[2500,2526,2552,2578,2604],"referencedDeclaration":2552,"src":"10106:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Uint256Slot_$3023_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":2205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10106:28:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3023_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":2206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10135:5:22","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3022,"src":"10106:34:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2207,"name":"element","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2143,"src":"10144:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10106:45:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10095:56:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2217,"nodeType":"Block","src":"10198:35:22","statements":[{"expression":{"id":2215,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"10219:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2147,"id":2216,"nodeType":"Return","src":"10212:10:22"}]},"id":2218,"nodeType":"IfStatement","src":"10091:142:22","trueBody":{"id":2214,"nodeType":"Block","src":"10153:39:22","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2210,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"10174:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10180:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10174:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2147,"id":2213,"nodeType":"Return","src":"10167:14:22"}]}}]},"documentation":{"id":2138,"nodeType":"StructuredDocumentation","src":"8686:616:22","text":" @dev Searches a sorted `array` and returns the first index that contains\n a value greater or equal to `element`. If no such index exists (i.e. all\n values in the array are strictly less than `element`), the array length is\n returned. Time complexity O(log n).\n NOTE: The `array` is expected to be sorted in ascending order, and to\n contain no repeated elements.\n IMPORTANT: Deprecated. This implementation behaves as {lowerBound} but lacks\n support for repeated elements in the array. The {lowerBound} function should\n be used instead."},"id":2220,"implemented":true,"kind":"function","modifiers":[],"name":"findUpperBound","nameLocation":"9316:14:22","nodeType":"FunctionDefinition","parameters":{"id":2144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"array","nameLocation":"9349:5:22","nodeType":"VariableDeclaration","scope":2220,"src":"9331:23:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2139,"name":"uint256","nodeType":"ElementaryTypeName","src":"9331:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2140,"nodeType":"ArrayTypeName","src":"9331:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2143,"mutability":"mutable","name":"element","nameLocation":"9364:7:22","nodeType":"VariableDeclaration","scope":2220,"src":"9356:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2142,"name":"uint256","nodeType":"ElementaryTypeName","src":"9356:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9330:42:22"},"returnParameters":{"id":2147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2220,"src":"9396:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2145,"name":"uint256","nodeType":"ElementaryTypeName","src":"9396:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9395:9:22"},"scope":2725,"src":"9307:932:22","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2283,"nodeType":"Block","src":"10756:709:22","statements":[{"assignments":[2232],"declarations":[{"constant":false,"id":2232,"mutability":"mutable","name":"low","nameLocation":"10774:3:22","nodeType":"VariableDeclaration","scope":2283,"src":"10766:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2231,"name":"uint256","nodeType":"ElementaryTypeName","src":"10766:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2234,"initialValue":{"hexValue":"30","id":2233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10780:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10766:15:22"},{"assignments":[2236],"declarations":[{"constant":false,"id":2236,"mutability":"mutable","name":"high","nameLocation":"10799:4:22","nodeType":"VariableDeclaration","scope":2283,"src":"10791:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2235,"name":"uint256","nodeType":"ElementaryTypeName","src":"10791:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2239,"initialValue":{"expression":{"id":2237,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2224,"src":"10806:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":2238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10812:6:22","memberName":"length","nodeType":"MemberAccess","src":"10806:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10791:27:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2240,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"10833:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10833:9:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2246,"nodeType":"IfStatement","src":"10829:48:22","trueBody":{"id":2245,"nodeType":"Block","src":"10844:33:22","statements":[{"expression":{"hexValue":"30","id":2243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10865:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2230,"id":2244,"nodeType":"Return","src":"10858:8:22"}]}},{"body":{"id":2279,"nodeType":"Block","src":"10906:532:22","statements":[{"assignments":[2251],"declarations":[{"constant":false,"id":2251,"mutability":"mutable","name":"mid","nameLocation":"10928:3:22","nodeType":"VariableDeclaration","scope":2279,"src":"10920:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2250,"name":"uint256","nodeType":"ElementaryTypeName","src":"10920:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2257,"initialValue":{"arguments":[{"id":2254,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"10947:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2255,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"10952:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2252,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"10934:4:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10939:7:22","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":3717,"src":"10934:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10934:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10920:37:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2259,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2224,"src":"11195:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},{"id":2260,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2251,"src":"11202:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2258,"name":"unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[2500,2526,2552,2578,2604],"referencedDeclaration":2552,"src":"11182:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Uint256Slot_$3023_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11182:24:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3023_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":2262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11207:5:22","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3022,"src":"11182:30:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2263,"name":"element","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2226,"src":"11215:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11182:40:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2277,"nodeType":"Block","src":"11385:43:22","statements":[{"expression":{"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2273,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"11403:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2274,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2251,"src":"11410:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11403:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2276,"nodeType":"ExpressionStatement","src":"11403:10:22"}]},"id":2278,"nodeType":"IfStatement","src":"11178:250:22","trueBody":{"id":2272,"nodeType":"Block","src":"11224:155:22","statements":[{"id":2271,"nodeType":"UncheckedBlock","src":"11301:64:22","statements":[{"expression":{"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2265,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"11333:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2266,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2251,"src":"11339:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11345:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11339:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11333:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2270,"nodeType":"ExpressionStatement","src":"11333:13:22"}]}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2247,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"10894:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2248,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"10900:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10894:10:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2280,"nodeType":"WhileStatement","src":"10887:551:22"},{"expression":{"id":2281,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"11455:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2230,"id":2282,"nodeType":"Return","src":"11448:10:22"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"10245:412:22","text":" @dev Searches an `array` sorted in ascending order and returns the first\n index that contains a value greater or equal than `element`. If no such index\n exists (i.e. all values in the array are strictly less than `element`), the array\n length is returned. Time complexity O(log n).\n See C++'s https://en.cppreference.com/w/cpp/algorithm/lower_bound[lower_bound]."},"id":2284,"implemented":true,"kind":"function","modifiers":[],"name":"lowerBound","nameLocation":"10671:10:22","nodeType":"FunctionDefinition","parameters":{"id":2227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2224,"mutability":"mutable","name":"array","nameLocation":"10700:5:22","nodeType":"VariableDeclaration","scope":2284,"src":"10682:23:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2222,"name":"uint256","nodeType":"ElementaryTypeName","src":"10682:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2223,"nodeType":"ArrayTypeName","src":"10682:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2226,"mutability":"mutable","name":"element","nameLocation":"10715:7:22","nodeType":"VariableDeclaration","scope":2284,"src":"10707:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2225,"name":"uint256","nodeType":"ElementaryTypeName","src":"10707:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10681:42:22"},"returnParameters":{"id":2230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2284,"src":"10747:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2228,"name":"uint256","nodeType":"ElementaryTypeName","src":"10747:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10746:9:22"},"scope":2725,"src":"10662:803:22","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2347,"nodeType":"Block","src":"11982:709:22","statements":[{"assignments":[2296],"declarations":[{"constant":false,"id":2296,"mutability":"mutable","name":"low","nameLocation":"12000:3:22","nodeType":"VariableDeclaration","scope":2347,"src":"11992:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2295,"name":"uint256","nodeType":"ElementaryTypeName","src":"11992:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2298,"initialValue":{"hexValue":"30","id":2297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12006:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11992:15:22"},{"assignments":[2300],"declarations":[{"constant":false,"id":2300,"mutability":"mutable","name":"high","nameLocation":"12025:4:22","nodeType":"VariableDeclaration","scope":2347,"src":"12017:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2299,"name":"uint256","nodeType":"ElementaryTypeName","src":"12017:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2303,"initialValue":{"expression":{"id":2301,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2288,"src":"12032:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},"id":2302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12038:6:22","memberName":"length","nodeType":"MemberAccess","src":"12032:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12017:27:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2304,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"12059:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12067:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12059:9:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2310,"nodeType":"IfStatement","src":"12055:48:22","trueBody":{"id":2309,"nodeType":"Block","src":"12070:33:22","statements":[{"expression":{"hexValue":"30","id":2307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12091:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2294,"id":2308,"nodeType":"Return","src":"12084:8:22"}]}},{"body":{"id":2343,"nodeType":"Block","src":"12132:532:22","statements":[{"assignments":[2315],"declarations":[{"constant":false,"id":2315,"mutability":"mutable","name":"mid","nameLocation":"12154:3:22","nodeType":"VariableDeclaration","scope":2343,"src":"12146:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2314,"name":"uint256","nodeType":"ElementaryTypeName","src":"12146:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2321,"initialValue":{"arguments":[{"id":2318,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2296,"src":"12173:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2319,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"12178:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2316,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"12160:4:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":2317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12165:7:22","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":3717,"src":"12160:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12160:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12146:37:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2323,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2288,"src":"12421:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"}},{"id":2324,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"12428:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2322,"name":"unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[2500,2526,2552,2578,2604],"referencedDeclaration":2552,"src":"12408:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Uint256Slot_$3023_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12408:24:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3023_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"id":2326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12433:5:22","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3022,"src":"12408:30:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2327,"name":"element","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2290,"src":"12441:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12408:40:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2341,"nodeType":"Block","src":"12499:155:22","statements":[{"id":2340,"nodeType":"UncheckedBlock","src":"12576:64:22","statements":[{"expression":{"id":2338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2334,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2296,"src":"12608:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2335,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"12614:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12620:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12614:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12608:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2339,"nodeType":"ExpressionStatement","src":"12608:13:22"}]}]},"id":2342,"nodeType":"IfStatement","src":"12404:250:22","trueBody":{"id":2333,"nodeType":"Block","src":"12450:43:22","statements":[{"expression":{"id":2331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2329,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"12468:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2330,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2315,"src":"12475:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12468:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2332,"nodeType":"ExpressionStatement","src":"12468:10:22"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2311,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2296,"src":"12120:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2312,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"12126:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12120:10:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2344,"nodeType":"WhileStatement","src":"12113:551:22"},{"expression":{"id":2345,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2296,"src":"12681:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2294,"id":2346,"nodeType":"Return","src":"12674:10:22"}]},"documentation":{"id":2285,"nodeType":"StructuredDocumentation","src":"11471:412:22","text":" @dev Searches an `array` sorted in ascending order and returns the first\n index that contains a value strictly greater than `element`. If no such index\n exists (i.e. all values in the array are strictly less than `element`), the array\n length is returned. Time complexity O(log n).\n See C++'s https://en.cppreference.com/w/cpp/algorithm/upper_bound[upper_bound]."},"id":2348,"implemented":true,"kind":"function","modifiers":[],"name":"upperBound","nameLocation":"11897:10:22","nodeType":"FunctionDefinition","parameters":{"id":2291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2288,"mutability":"mutable","name":"array","nameLocation":"11926:5:22","nodeType":"VariableDeclaration","scope":2348,"src":"11908:23:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2286,"name":"uint256","nodeType":"ElementaryTypeName","src":"11908:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2287,"nodeType":"ArrayTypeName","src":"11908:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2290,"mutability":"mutable","name":"element","nameLocation":"11941:7:22","nodeType":"VariableDeclaration","scope":2348,"src":"11933:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2289,"name":"uint256","nodeType":"ElementaryTypeName","src":"11933:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11907:42:22"},"returnParameters":{"id":2294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2293,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2348,"src":"11973:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2292,"name":"uint256","nodeType":"ElementaryTypeName","src":"11973:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11972:9:22"},"scope":2725,"src":"11888:803:22","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2410,"nodeType":"Block","src":"12875:709:22","statements":[{"assignments":[2360],"declarations":[{"constant":false,"id":2360,"mutability":"mutable","name":"low","nameLocation":"12893:3:22","nodeType":"VariableDeclaration","scope":2410,"src":"12885:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2359,"name":"uint256","nodeType":"ElementaryTypeName","src":"12885:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2362,"initialValue":{"hexValue":"30","id":2361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12899:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12885:15:22"},{"assignments":[2364],"declarations":[{"constant":false,"id":2364,"mutability":"mutable","name":"high","nameLocation":"12918:4:22","nodeType":"VariableDeclaration","scope":2410,"src":"12910:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2363,"name":"uint256","nodeType":"ElementaryTypeName","src":"12910:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2367,"initialValue":{"expression":{"id":2365,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2352,"src":"12925:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12931:6:22","memberName":"length","nodeType":"MemberAccess","src":"12925:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12910:27:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2368,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"12952:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12960:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12952:9:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2374,"nodeType":"IfStatement","src":"12948:48:22","trueBody":{"id":2373,"nodeType":"Block","src":"12963:33:22","statements":[{"expression":{"hexValue":"30","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12984:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2358,"id":2372,"nodeType":"Return","src":"12977:8:22"}]}},{"body":{"id":2406,"nodeType":"Block","src":"13025:532:22","statements":[{"assignments":[2379],"declarations":[{"constant":false,"id":2379,"mutability":"mutable","name":"mid","nameLocation":"13047:3:22","nodeType":"VariableDeclaration","scope":2406,"src":"13039:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2378,"name":"uint256","nodeType":"ElementaryTypeName","src":"13039:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2385,"initialValue":{"arguments":[{"id":2382,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"13066:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2383,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"13071:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2380,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"13053:4:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":2381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13058:7:22","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":3717,"src":"13053:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13053:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13039:37:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2387,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2352,"src":"13320:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2388,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"13327:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2386,"name":"unsafeMemoryAccess","nodeType":"Identifier","overloadedDeclarations":[2617,2630,2643,2656,2669],"referencedDeclaration":2643,"src":"13301:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256) pure returns (uint256)"}},"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13301:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2390,"name":"element","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"13334:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13301:40:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2404,"nodeType":"Block","src":"13504:43:22","statements":[{"expression":{"id":2402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2400,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"13522:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2401,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"13529:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13522:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2403,"nodeType":"ExpressionStatement","src":"13522:10:22"}]},"id":2405,"nodeType":"IfStatement","src":"13297:250:22","trueBody":{"id":2399,"nodeType":"Block","src":"13343:155:22","statements":[{"id":2398,"nodeType":"UncheckedBlock","src":"13420:64:22","statements":[{"expression":{"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2392,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"13452:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2393,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"13458:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13464:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13458:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13452:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2397,"nodeType":"ExpressionStatement","src":"13452:13:22"}]}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2375,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"13013:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2376,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"13019:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13013:10:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2407,"nodeType":"WhileStatement","src":"13006:551:22"},{"expression":{"id":2408,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"13574:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2358,"id":2409,"nodeType":"Return","src":"13567:10:22"}]},"documentation":{"id":2349,"nodeType":"StructuredDocumentation","src":"12697:74:22","text":" @dev Same as {lowerBound}, but with an array in memory."},"id":2411,"implemented":true,"kind":"function","modifiers":[],"name":"lowerBoundMemory","nameLocation":"12785:16:22","nodeType":"FunctionDefinition","parameters":{"id":2355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2352,"mutability":"mutable","name":"array","nameLocation":"12819:5:22","nodeType":"VariableDeclaration","scope":2411,"src":"12802:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2350,"name":"uint256","nodeType":"ElementaryTypeName","src":"12802:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2351,"nodeType":"ArrayTypeName","src":"12802:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2354,"mutability":"mutable","name":"element","nameLocation":"12834:7:22","nodeType":"VariableDeclaration","scope":2411,"src":"12826:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2353,"name":"uint256","nodeType":"ElementaryTypeName","src":"12826:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12801:41:22"},"returnParameters":{"id":2358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2357,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2411,"src":"12866:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2356,"name":"uint256","nodeType":"ElementaryTypeName","src":"12866:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12865:9:22"},"scope":2725,"src":"12776:808:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2473,"nodeType":"Block","src":"13768:709:22","statements":[{"assignments":[2423],"declarations":[{"constant":false,"id":2423,"mutability":"mutable","name":"low","nameLocation":"13786:3:22","nodeType":"VariableDeclaration","scope":2473,"src":"13778:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2422,"name":"uint256","nodeType":"ElementaryTypeName","src":"13778:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2425,"initialValue":{"hexValue":"30","id":2424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13792:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13778:15:22"},{"assignments":[2427],"declarations":[{"constant":false,"id":2427,"mutability":"mutable","name":"high","nameLocation":"13811:4:22","nodeType":"VariableDeclaration","scope":2473,"src":"13803:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2426,"name":"uint256","nodeType":"ElementaryTypeName","src":"13803:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2430,"initialValue":{"expression":{"id":2428,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"13818:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13824:6:22","memberName":"length","nodeType":"MemberAccess","src":"13818:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13803:27:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2431,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"13845:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13845:9:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2437,"nodeType":"IfStatement","src":"13841:48:22","trueBody":{"id":2436,"nodeType":"Block","src":"13856:33:22","statements":[{"expression":{"hexValue":"30","id":2434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13877:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2421,"id":2435,"nodeType":"Return","src":"13870:8:22"}]}},{"body":{"id":2469,"nodeType":"Block","src":"13918:532:22","statements":[{"assignments":[2442],"declarations":[{"constant":false,"id":2442,"mutability":"mutable","name":"mid","nameLocation":"13940:3:22","nodeType":"VariableDeclaration","scope":2469,"src":"13932:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2441,"name":"uint256","nodeType":"ElementaryTypeName","src":"13932:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2448,"initialValue":{"arguments":[{"id":2445,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2423,"src":"13959:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2446,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"13964:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2443,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"13946:4:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":2444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13951:7:22","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":3717,"src":"13946:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13946:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13932:37:22"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2450,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"14213:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":2451,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"14220:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2449,"name":"unsafeMemoryAccess","nodeType":"Identifier","overloadedDeclarations":[2617,2630,2643,2656,2669],"referencedDeclaration":2643,"src":"14194:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256) pure returns (uint256)"}},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14194:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2453,"name":"element","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2417,"src":"14227:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14194:40:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2467,"nodeType":"Block","src":"14285:155:22","statements":[{"id":2466,"nodeType":"UncheckedBlock","src":"14362:64:22","statements":[{"expression":{"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2460,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2423,"src":"14394:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2461,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"14400:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14406:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14400:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14394:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2465,"nodeType":"ExpressionStatement","src":"14394:13:22"}]}]},"id":2468,"nodeType":"IfStatement","src":"14190:250:22","trueBody":{"id":2459,"nodeType":"Block","src":"14236:43:22","statements":[{"expression":{"id":2457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2455,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"14254:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2456,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"14261:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14254:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2458,"nodeType":"ExpressionStatement","src":"14254:10:22"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2438,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2423,"src":"13906:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2439,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"13912:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13906:10:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2470,"nodeType":"WhileStatement","src":"13899:551:22"},{"expression":{"id":2471,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2423,"src":"14467:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2421,"id":2472,"nodeType":"Return","src":"14460:10:22"}]},"documentation":{"id":2412,"nodeType":"StructuredDocumentation","src":"13590:74:22","text":" @dev Same as {upperBound}, but with an array in memory."},"id":2474,"implemented":true,"kind":"function","modifiers":[],"name":"upperBoundMemory","nameLocation":"13678:16:22","nodeType":"FunctionDefinition","parameters":{"id":2418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2415,"mutability":"mutable","name":"array","nameLocation":"13712:5:22","nodeType":"VariableDeclaration","scope":2474,"src":"13695:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2413,"name":"uint256","nodeType":"ElementaryTypeName","src":"13695:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2414,"nodeType":"ArrayTypeName","src":"13695:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2417,"mutability":"mutable","name":"element","nameLocation":"13727:7:22","nodeType":"VariableDeclaration","scope":2474,"src":"13719:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2416,"name":"uint256","nodeType":"ElementaryTypeName","src":"13719:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13694:41:22"},"returnParameters":{"id":2421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2420,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2474,"src":"13759:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2419,"name":"uint256","nodeType":"ElementaryTypeName","src":"13759:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13758:9:22"},"scope":2725,"src":"13669:808:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2499,"nodeType":"Block","src":"14793:167:22","statements":[{"assignments":[2487],"declarations":[{"constant":false,"id":2487,"mutability":"mutable","name":"slot","nameLocation":"14811:4:22","nodeType":"VariableDeclaration","scope":2499,"src":"14803:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2486,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14803:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2488,"nodeType":"VariableDeclarationStatement","src":"14803:12:22"},{"AST":{"nativeSrc":"14850:40:22","nodeType":"YulBlock","src":"14850:40:22","statements":[{"nativeSrc":"14864:16:22","nodeType":"YulAssignment","src":"14864:16:22","value":{"name":"arr.slot","nativeSrc":"14872:8:22","nodeType":"YulIdentifier","src":"14872:8:22"},"variableNames":[{"name":"slot","nativeSrc":"14864:4:22","nodeType":"YulIdentifier","src":"14864:4:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2478,"isOffset":false,"isSlot":true,"src":"14872:8:22","suffix":"slot","valueSize":1},{"declaration":2487,"isOffset":false,"isSlot":false,"src":"14864:4:22","valueSize":1}],"flags":["memory-safe"],"id":2489,"nodeType":"InlineAssembly","src":"14825:65:22"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2494,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"14932:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2490,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"14906:4:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14911:11:22","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":2923,"src":"14906:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14906:18:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14925:6:22","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":2913,"src":"14906:25:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14906:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14937:14:22","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3043,"src":"14906:45:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3014_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14906:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3014_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"functionReturnParameters":2485,"id":2498,"nodeType":"Return","src":"14899:54:22"}]},"documentation":{"id":2475,"nodeType":"StructuredDocumentation","src":"14483:191:22","text":" @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n WARNING: Only use if you are certain `pos` is lower than the array length."},"id":2500,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeAccess","nameLocation":"14688:12:22","nodeType":"FunctionDefinition","parameters":{"id":2481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2478,"mutability":"mutable","name":"arr","nameLocation":"14719:3:22","nodeType":"VariableDeclaration","scope":2500,"src":"14701:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2476,"name":"address","nodeType":"ElementaryTypeName","src":"14701:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2477,"nodeType":"ArrayTypeName","src":"14701:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":2480,"mutability":"mutable","name":"pos","nameLocation":"14732:3:22","nodeType":"VariableDeclaration","scope":2500,"src":"14724:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2479,"name":"uint256","nodeType":"ElementaryTypeName","src":"14724:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14700:36:22"},"returnParameters":{"id":2485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2500,"src":"14760:31:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3014_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":2483,"nodeType":"UserDefinedTypeName","pathNode":{"id":2482,"name":"StorageSlot.AddressSlot","nameLocations":["14760:11:22","14772:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":3014,"src":"14760:23:22"},"referencedDeclaration":3014,"src":"14760:23:22","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3014_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"14759:33:22"},"scope":2725,"src":"14679:281:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2525,"nodeType":"Block","src":"15276:167:22","statements":[{"assignments":[2513],"declarations":[{"constant":false,"id":2513,"mutability":"mutable","name":"slot","nameLocation":"15294:4:22","nodeType":"VariableDeclaration","scope":2525,"src":"15286:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2512,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15286:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2514,"nodeType":"VariableDeclarationStatement","src":"15286:12:22"},{"AST":{"nativeSrc":"15333:40:22","nodeType":"YulBlock","src":"15333:40:22","statements":[{"nativeSrc":"15347:16:22","nodeType":"YulAssignment","src":"15347:16:22","value":{"name":"arr.slot","nativeSrc":"15355:8:22","nodeType":"YulIdentifier","src":"15355:8:22"},"variableNames":[{"name":"slot","nativeSrc":"15347:4:22","nodeType":"YulIdentifier","src":"15347:4:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2504,"isOffset":false,"isSlot":true,"src":"15355:8:22","suffix":"slot","valueSize":1},{"declaration":2513,"isOffset":false,"isSlot":false,"src":"15347:4:22","valueSize":1}],"flags":["memory-safe"],"id":2515,"nodeType":"InlineAssembly","src":"15308:65:22"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2520,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2506,"src":"15415:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2516,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"15389:4:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15394:11:22","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":2923,"src":"15389:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":2518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15389:18:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15408:6:22","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":2913,"src":"15389:25:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15389:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15420:14:22","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":3065,"src":"15389:45:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$3020_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":2523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15389:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$3020_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"functionReturnParameters":2511,"id":2524,"nodeType":"Return","src":"15382:54:22"}]},"documentation":{"id":2501,"nodeType":"StructuredDocumentation","src":"14966:191:22","text":" @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n WARNING: Only use if you are certain `pos` is lower than the array length."},"id":2526,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeAccess","nameLocation":"15171:12:22","nodeType":"FunctionDefinition","parameters":{"id":2507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2504,"mutability":"mutable","name":"arr","nameLocation":"15202:3:22","nodeType":"VariableDeclaration","scope":2526,"src":"15184:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":2502,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15184:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2503,"nodeType":"ArrayTypeName","src":"15184:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":2506,"mutability":"mutable","name":"pos","nameLocation":"15215:3:22","nodeType":"VariableDeclaration","scope":2526,"src":"15207:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2505,"name":"uint256","nodeType":"ElementaryTypeName","src":"15207:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15183:36:22"},"returnParameters":{"id":2511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2526,"src":"15243:31:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$3020_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":2509,"nodeType":"UserDefinedTypeName","pathNode":{"id":2508,"name":"StorageSlot.Bytes32Slot","nameLocations":["15243:11:22","15255:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":3020,"src":"15243:23:22"},"referencedDeclaration":3020,"src":"15243:23:22","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$3020_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"15242:33:22"},"scope":2725,"src":"15162:281:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2551,"nodeType":"Block","src":"15759:167:22","statements":[{"assignments":[2539],"declarations":[{"constant":false,"id":2539,"mutability":"mutable","name":"slot","nameLocation":"15777:4:22","nodeType":"VariableDeclaration","scope":2551,"src":"15769:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2538,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15769:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2540,"nodeType":"VariableDeclarationStatement","src":"15769:12:22"},{"AST":{"nativeSrc":"15816:40:22","nodeType":"YulBlock","src":"15816:40:22","statements":[{"nativeSrc":"15830:16:22","nodeType":"YulAssignment","src":"15830:16:22","value":{"name":"arr.slot","nativeSrc":"15838:8:22","nodeType":"YulIdentifier","src":"15838:8:22"},"variableNames":[{"name":"slot","nativeSrc":"15830:4:22","nodeType":"YulIdentifier","src":"15830:4:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2530,"isOffset":false,"isSlot":true,"src":"15838:8:22","suffix":"slot","valueSize":1},{"declaration":2539,"isOffset":false,"isSlot":false,"src":"15830:4:22","valueSize":1}],"flags":["memory-safe"],"id":2541,"nodeType":"InlineAssembly","src":"15791:65:22"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2546,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2532,"src":"15898:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2542,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2539,"src":"15872:4:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15877:11:22","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":2923,"src":"15872:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15872:18:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15891:6:22","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":2913,"src":"15872:25:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15872:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15903:14:22","memberName":"getUint256Slot","nodeType":"MemberAccess","referencedDeclaration":3076,"src":"15872:45:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Uint256Slot_$3023_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Uint256Slot storage pointer)"}},"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15872:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3023_storage_ptr","typeString":"struct StorageSlot.Uint256Slot storage pointer"}},"functionReturnParameters":2537,"id":2550,"nodeType":"Return","src":"15865:54:22"}]},"documentation":{"id":2527,"nodeType":"StructuredDocumentation","src":"15449:191:22","text":" @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n WARNING: Only use if you are certain `pos` is lower than the array length."},"id":2552,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeAccess","nameLocation":"15654:12:22","nodeType":"FunctionDefinition","parameters":{"id":2533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2530,"mutability":"mutable","name":"arr","nameLocation":"15685:3:22","nodeType":"VariableDeclaration","scope":2552,"src":"15667:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2528,"name":"uint256","nodeType":"ElementaryTypeName","src":"15667:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2529,"nodeType":"ArrayTypeName","src":"15667:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2532,"mutability":"mutable","name":"pos","nameLocation":"15698:3:22","nodeType":"VariableDeclaration","scope":2552,"src":"15690:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2531,"name":"uint256","nodeType":"ElementaryTypeName","src":"15690:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15666:36:22"},"returnParameters":{"id":2537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2536,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2552,"src":"15726:31:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3023_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":2535,"nodeType":"UserDefinedTypeName","pathNode":{"id":2534,"name":"StorageSlot.Uint256Slot","nameLocations":["15726:11:22","15738:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":3023,"src":"15726:23:22"},"referencedDeclaration":3023,"src":"15726:23:22","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3023_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"15725:33:22"},"scope":2725,"src":"15645:281:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2577,"nodeType":"Block","src":"16238:165:22","statements":[{"assignments":[2565],"declarations":[{"constant":false,"id":2565,"mutability":"mutable","name":"slot","nameLocation":"16256:4:22","nodeType":"VariableDeclaration","scope":2577,"src":"16248:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2564,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16248:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2566,"nodeType":"VariableDeclarationStatement","src":"16248:12:22"},{"AST":{"nativeSrc":"16295:40:22","nodeType":"YulBlock","src":"16295:40:22","statements":[{"nativeSrc":"16309:16:22","nodeType":"YulAssignment","src":"16309:16:22","value":{"name":"arr.slot","nativeSrc":"16317:8:22","nodeType":"YulIdentifier","src":"16317:8:22"},"variableNames":[{"name":"slot","nativeSrc":"16309:4:22","nodeType":"YulIdentifier","src":"16309:4:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2556,"isOffset":false,"isSlot":true,"src":"16317:8:22","suffix":"slot","valueSize":1},{"declaration":2565,"isOffset":false,"isSlot":false,"src":"16309:4:22","valueSize":1}],"flags":["memory-safe"],"id":2567,"nodeType":"InlineAssembly","src":"16270:65:22"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2572,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2558,"src":"16377:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2568,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"16351:4:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16356:11:22","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":2923,"src":"16351:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16351:18:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16370:6:22","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":2913,"src":"16351:25:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":2573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16351:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16382:12:22","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":3120,"src":"16351:43:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$3032_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16351:45:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3032_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"functionReturnParameters":2563,"id":2576,"nodeType":"Return","src":"16344:52:22"}]},"documentation":{"id":2553,"nodeType":"StructuredDocumentation","src":"15932:191:22","text":" @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n WARNING: Only use if you are certain `pos` is lower than the array length."},"id":2578,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeAccess","nameLocation":"16137:12:22","nodeType":"FunctionDefinition","parameters":{"id":2559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2556,"mutability":"mutable","name":"arr","nameLocation":"16166:3:22","nodeType":"VariableDeclaration","scope":2578,"src":"16150:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2554,"name":"bytes","nodeType":"ElementaryTypeName","src":"16150:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2555,"nodeType":"ArrayTypeName","src":"16150:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2558,"mutability":"mutable","name":"pos","nameLocation":"16179:3:22","nodeType":"VariableDeclaration","scope":2578,"src":"16171:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2557,"name":"uint256","nodeType":"ElementaryTypeName","src":"16171:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16149:34:22"},"returnParameters":{"id":2563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2578,"src":"16207:29:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3032_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2561,"nodeType":"UserDefinedTypeName","pathNode":{"id":2560,"name":"StorageSlot.BytesSlot","nameLocations":["16207:11:22","16219:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":3032,"src":"16207:21:22"},"referencedDeclaration":3032,"src":"16207:21:22","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3032_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"16206:31:22"},"scope":2725,"src":"16128:275:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2603,"nodeType":"Block","src":"16717:166:22","statements":[{"assignments":[2591],"declarations":[{"constant":false,"id":2591,"mutability":"mutable","name":"slot","nameLocation":"16735:4:22","nodeType":"VariableDeclaration","scope":2603,"src":"16727:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2590,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16727:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2592,"nodeType":"VariableDeclarationStatement","src":"16727:12:22"},{"AST":{"nativeSrc":"16774:40:22","nodeType":"YulBlock","src":"16774:40:22","statements":[{"nativeSrc":"16788:16:22","nodeType":"YulAssignment","src":"16788:16:22","value":{"name":"arr.slot","nativeSrc":"16796:8:22","nodeType":"YulIdentifier","src":"16796:8:22"},"variableNames":[{"name":"slot","nativeSrc":"16788:4:22","nodeType":"YulIdentifier","src":"16788:4:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2582,"isOffset":false,"isSlot":true,"src":"16796:8:22","suffix":"slot","valueSize":1},{"declaration":2591,"isOffset":false,"isSlot":false,"src":"16788:4:22","valueSize":1}],"flags":["memory-safe"],"id":2593,"nodeType":"InlineAssembly","src":"16749:65:22"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2598,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2584,"src":"16856:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2594,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"16830:4:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16835:11:22","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":2923,"src":"16830:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16830:18:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16849:6:22","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":2913,"src":"16830:25:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16830:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16861:13:22","memberName":"getStringSlot","nodeType":"MemberAccess","referencedDeclaration":3098,"src":"16830:44:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_StringSlot_$3029_storage_ptr_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (struct StorageSlot.StringSlot storage pointer)"}},"id":2601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16830:46:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3029_storage_ptr","typeString":"struct StorageSlot.StringSlot storage pointer"}},"functionReturnParameters":2589,"id":2602,"nodeType":"Return","src":"16823:53:22"}]},"documentation":{"id":2579,"nodeType":"StructuredDocumentation","src":"16409:191:22","text":" @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n WARNING: Only use if you are certain `pos` is lower than the array length."},"id":2604,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeAccess","nameLocation":"16614:12:22","nodeType":"FunctionDefinition","parameters":{"id":2585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2582,"mutability":"mutable","name":"arr","nameLocation":"16644:3:22","nodeType":"VariableDeclaration","scope":2604,"src":"16627:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":2580,"name":"string","nodeType":"ElementaryTypeName","src":"16627:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":2581,"nodeType":"ArrayTypeName","src":"16627:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":2584,"mutability":"mutable","name":"pos","nameLocation":"16657:3:22","nodeType":"VariableDeclaration","scope":2604,"src":"16649:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2583,"name":"uint256","nodeType":"ElementaryTypeName","src":"16649:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16626:35:22"},"returnParameters":{"id":2589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2604,"src":"16685:30:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3029_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2587,"nodeType":"UserDefinedTypeName","pathNode":{"id":2586,"name":"StorageSlot.StringSlot","nameLocations":["16685:11:22","16697:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":3029,"src":"16685:22:22"},"referencedDeclaration":3029,"src":"16685:22:22","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3029_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"16684:32:22"},"scope":2725,"src":"16605:278:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2616,"nodeType":"Block","src":"17184:98:22","statements":[{"AST":{"nativeSrc":"17203:73:22","nodeType":"YulBlock","src":"17203:73:22","statements":[{"nativeSrc":"17217:49:22","nodeType":"YulAssignment","src":"17217:49:22","value":{"arguments":[{"arguments":[{"arguments":[{"name":"arr","nativeSrc":"17238:3:22","nodeType":"YulIdentifier","src":"17238:3:22"},{"kind":"number","nativeSrc":"17243:4:22","nodeType":"YulLiteral","src":"17243:4:22","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17234:3:22","nodeType":"YulIdentifier","src":"17234:3:22"},"nativeSrc":"17234:14:22","nodeType":"YulFunctionCall","src":"17234:14:22"},{"arguments":[{"name":"pos","nativeSrc":"17254:3:22","nodeType":"YulIdentifier","src":"17254:3:22"},{"kind":"number","nativeSrc":"17259:4:22","nodeType":"YulLiteral","src":"17259:4:22","type":"","value":"0x20"}],"functionName":{"name":"mul","nativeSrc":"17250:3:22","nodeType":"YulIdentifier","src":"17250:3:22"},"nativeSrc":"17250:14:22","nodeType":"YulFunctionCall","src":"17250:14:22"}],"functionName":{"name":"add","nativeSrc":"17230:3:22","nodeType":"YulIdentifier","src":"17230:3:22"},"nativeSrc":"17230:35:22","nodeType":"YulFunctionCall","src":"17230:35:22"}],"functionName":{"name":"mload","nativeSrc":"17224:5:22","nodeType":"YulIdentifier","src":"17224:5:22"},"nativeSrc":"17224:42:22","nodeType":"YulFunctionCall","src":"17224:42:22"},"variableNames":[{"name":"res","nativeSrc":"17217:3:22","nodeType":"YulIdentifier","src":"17217:3:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2608,"isOffset":false,"isSlot":false,"src":"17238:3:22","valueSize":1},{"declaration":2610,"isOffset":false,"isSlot":false,"src":"17254:3:22","valueSize":1},{"declaration":2613,"isOffset":false,"isSlot":false,"src":"17217:3:22","valueSize":1}],"id":2615,"nodeType":"InlineAssembly","src":"17194:82:22"}]},"documentation":{"id":2605,"nodeType":"StructuredDocumentation","src":"16889:191:22","text":" @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n WARNING: Only use if you are certain `pos` is lower than the array length."},"id":2617,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeMemoryAccess","nameLocation":"17094:18:22","nodeType":"FunctionDefinition","parameters":{"id":2611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2608,"mutability":"mutable","name":"arr","nameLocation":"17130:3:22","nodeType":"VariableDeclaration","scope":2617,"src":"17113:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2606,"name":"address","nodeType":"ElementaryTypeName","src":"17113:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2607,"nodeType":"ArrayTypeName","src":"17113:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":2610,"mutability":"mutable","name":"pos","nameLocation":"17143:3:22","nodeType":"VariableDeclaration","scope":2617,"src":"17135:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2609,"name":"uint256","nodeType":"ElementaryTypeName","src":"17135:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17112:35:22"},"returnParameters":{"id":2614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2613,"mutability":"mutable","name":"res","nameLocation":"17179:3:22","nodeType":"VariableDeclaration","scope":2617,"src":"17171:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2612,"name":"address","nodeType":"ElementaryTypeName","src":"17171:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17170:13:22"},"scope":2725,"src":"17085:197:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2629,"nodeType":"Block","src":"17583:98:22","statements":[{"AST":{"nativeSrc":"17602:73:22","nodeType":"YulBlock","src":"17602:73:22","statements":[{"nativeSrc":"17616:49:22","nodeType":"YulAssignment","src":"17616:49:22","value":{"arguments":[{"arguments":[{"arguments":[{"name":"arr","nativeSrc":"17637:3:22","nodeType":"YulIdentifier","src":"17637:3:22"},{"kind":"number","nativeSrc":"17642:4:22","nodeType":"YulLiteral","src":"17642:4:22","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17633:3:22","nodeType":"YulIdentifier","src":"17633:3:22"},"nativeSrc":"17633:14:22","nodeType":"YulFunctionCall","src":"17633:14:22"},{"arguments":[{"name":"pos","nativeSrc":"17653:3:22","nodeType":"YulIdentifier","src":"17653:3:22"},{"kind":"number","nativeSrc":"17658:4:22","nodeType":"YulLiteral","src":"17658:4:22","type":"","value":"0x20"}],"functionName":{"name":"mul","nativeSrc":"17649:3:22","nodeType":"YulIdentifier","src":"17649:3:22"},"nativeSrc":"17649:14:22","nodeType":"YulFunctionCall","src":"17649:14:22"}],"functionName":{"name":"add","nativeSrc":"17629:3:22","nodeType":"YulIdentifier","src":"17629:3:22"},"nativeSrc":"17629:35:22","nodeType":"YulFunctionCall","src":"17629:35:22"}],"functionName":{"name":"mload","nativeSrc":"17623:5:22","nodeType":"YulIdentifier","src":"17623:5:22"},"nativeSrc":"17623:42:22","nodeType":"YulFunctionCall","src":"17623:42:22"},"variableNames":[{"name":"res","nativeSrc":"17616:3:22","nodeType":"YulIdentifier","src":"17616:3:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2621,"isOffset":false,"isSlot":false,"src":"17637:3:22","valueSize":1},{"declaration":2623,"isOffset":false,"isSlot":false,"src":"17653:3:22","valueSize":1},{"declaration":2626,"isOffset":false,"isSlot":false,"src":"17616:3:22","valueSize":1}],"id":2628,"nodeType":"InlineAssembly","src":"17593:82:22"}]},"documentation":{"id":2618,"nodeType":"StructuredDocumentation","src":"17288:191:22","text":" @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n WARNING: Only use if you are certain `pos` is lower than the array length."},"id":2630,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeMemoryAccess","nameLocation":"17493:18:22","nodeType":"FunctionDefinition","parameters":{"id":2624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2621,"mutability":"mutable","name":"arr","nameLocation":"17529:3:22","nodeType":"VariableDeclaration","scope":2630,"src":"17512:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":2619,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17512:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2620,"nodeType":"ArrayTypeName","src":"17512:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":2623,"mutability":"mutable","name":"pos","nameLocation":"17542:3:22","nodeType":"VariableDeclaration","scope":2630,"src":"17534:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2622,"name":"uint256","nodeType":"ElementaryTypeName","src":"17534:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17511:35:22"},"returnParameters":{"id":2627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2626,"mutability":"mutable","name":"res","nameLocation":"17578:3:22","nodeType":"VariableDeclaration","scope":2630,"src":"17570:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2625,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17570:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17569:13:22"},"scope":2725,"src":"17484:197:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2642,"nodeType":"Block","src":"17982:98:22","statements":[{"AST":{"nativeSrc":"18001:73:22","nodeType":"YulBlock","src":"18001:73:22","statements":[{"nativeSrc":"18015:49:22","nodeType":"YulAssignment","src":"18015:49:22","value":{"arguments":[{"arguments":[{"arguments":[{"name":"arr","nativeSrc":"18036:3:22","nodeType":"YulIdentifier","src":"18036:3:22"},{"kind":"number","nativeSrc":"18041:4:22","nodeType":"YulLiteral","src":"18041:4:22","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18032:3:22","nodeType":"YulIdentifier","src":"18032:3:22"},"nativeSrc":"18032:14:22","nodeType":"YulFunctionCall","src":"18032:14:22"},{"arguments":[{"name":"pos","nativeSrc":"18052:3:22","nodeType":"YulIdentifier","src":"18052:3:22"},{"kind":"number","nativeSrc":"18057:4:22","nodeType":"YulLiteral","src":"18057:4:22","type":"","value":"0x20"}],"functionName":{"name":"mul","nativeSrc":"18048:3:22","nodeType":"YulIdentifier","src":"18048:3:22"},"nativeSrc":"18048:14:22","nodeType":"YulFunctionCall","src":"18048:14:22"}],"functionName":{"name":"add","nativeSrc":"18028:3:22","nodeType":"YulIdentifier","src":"18028:3:22"},"nativeSrc":"18028:35:22","nodeType":"YulFunctionCall","src":"18028:35:22"}],"functionName":{"name":"mload","nativeSrc":"18022:5:22","nodeType":"YulIdentifier","src":"18022:5:22"},"nativeSrc":"18022:42:22","nodeType":"YulFunctionCall","src":"18022:42:22"},"variableNames":[{"name":"res","nativeSrc":"18015:3:22","nodeType":"YulIdentifier","src":"18015:3:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2634,"isOffset":false,"isSlot":false,"src":"18036:3:22","valueSize":1},{"declaration":2636,"isOffset":false,"isSlot":false,"src":"18052:3:22","valueSize":1},{"declaration":2639,"isOffset":false,"isSlot":false,"src":"18015:3:22","valueSize":1}],"id":2641,"nodeType":"InlineAssembly","src":"17992:82:22"}]},"documentation":{"id":2631,"nodeType":"StructuredDocumentation","src":"17687:191:22","text":" @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n WARNING: Only use if you are certain `pos` is lower than the array length."},"id":2643,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeMemoryAccess","nameLocation":"17892:18:22","nodeType":"FunctionDefinition","parameters":{"id":2637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"arr","nameLocation":"17928:3:22","nodeType":"VariableDeclaration","scope":2643,"src":"17911:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2632,"name":"uint256","nodeType":"ElementaryTypeName","src":"17911:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2633,"nodeType":"ArrayTypeName","src":"17911:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2636,"mutability":"mutable","name":"pos","nameLocation":"17941:3:22","nodeType":"VariableDeclaration","scope":2643,"src":"17933:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2635,"name":"uint256","nodeType":"ElementaryTypeName","src":"17933:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17910:35:22"},"returnParameters":{"id":2640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2639,"mutability":"mutable","name":"res","nameLocation":"17977:3:22","nodeType":"VariableDeclaration","scope":2643,"src":"17969:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2638,"name":"uint256","nodeType":"ElementaryTypeName","src":"17969:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17968:13:22"},"scope":2725,"src":"17883:197:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2655,"nodeType":"Block","src":"18384:98:22","statements":[{"AST":{"nativeSrc":"18403:73:22","nodeType":"YulBlock","src":"18403:73:22","statements":[{"nativeSrc":"18417:49:22","nodeType":"YulAssignment","src":"18417:49:22","value":{"arguments":[{"arguments":[{"arguments":[{"name":"arr","nativeSrc":"18438:3:22","nodeType":"YulIdentifier","src":"18438:3:22"},{"kind":"number","nativeSrc":"18443:4:22","nodeType":"YulLiteral","src":"18443:4:22","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18434:3:22","nodeType":"YulIdentifier","src":"18434:3:22"},"nativeSrc":"18434:14:22","nodeType":"YulFunctionCall","src":"18434:14:22"},{"arguments":[{"name":"pos","nativeSrc":"18454:3:22","nodeType":"YulIdentifier","src":"18454:3:22"},{"kind":"number","nativeSrc":"18459:4:22","nodeType":"YulLiteral","src":"18459:4:22","type":"","value":"0x20"}],"functionName":{"name":"mul","nativeSrc":"18450:3:22","nodeType":"YulIdentifier","src":"18450:3:22"},"nativeSrc":"18450:14:22","nodeType":"YulFunctionCall","src":"18450:14:22"}],"functionName":{"name":"add","nativeSrc":"18430:3:22","nodeType":"YulIdentifier","src":"18430:3:22"},"nativeSrc":"18430:35:22","nodeType":"YulFunctionCall","src":"18430:35:22"}],"functionName":{"name":"mload","nativeSrc":"18424:5:22","nodeType":"YulIdentifier","src":"18424:5:22"},"nativeSrc":"18424:42:22","nodeType":"YulFunctionCall","src":"18424:42:22"},"variableNames":[{"name":"res","nativeSrc":"18417:3:22","nodeType":"YulIdentifier","src":"18417:3:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2647,"isOffset":false,"isSlot":false,"src":"18438:3:22","valueSize":1},{"declaration":2649,"isOffset":false,"isSlot":false,"src":"18454:3:22","valueSize":1},{"declaration":2652,"isOffset":false,"isSlot":false,"src":"18417:3:22","valueSize":1}],"id":2654,"nodeType":"InlineAssembly","src":"18394:82:22"}]},"documentation":{"id":2644,"nodeType":"StructuredDocumentation","src":"18086:191:22","text":" @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n WARNING: Only use if you are certain `pos` is lower than the array length."},"id":2656,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeMemoryAccess","nameLocation":"18291:18:22","nodeType":"FunctionDefinition","parameters":{"id":2650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2647,"mutability":"mutable","name":"arr","nameLocation":"18325:3:22","nodeType":"VariableDeclaration","scope":2656,"src":"18310:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2645,"name":"bytes","nodeType":"ElementaryTypeName","src":"18310:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2646,"nodeType":"ArrayTypeName","src":"18310:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2649,"mutability":"mutable","name":"pos","nameLocation":"18338:3:22","nodeType":"VariableDeclaration","scope":2656,"src":"18330:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2648,"name":"uint256","nodeType":"ElementaryTypeName","src":"18330:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18309:33:22"},"returnParameters":{"id":2653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2652,"mutability":"mutable","name":"res","nameLocation":"18379:3:22","nodeType":"VariableDeclaration","scope":2656,"src":"18366:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2651,"name":"bytes","nodeType":"ElementaryTypeName","src":"18366:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18365:18:22"},"scope":2725,"src":"18282:200:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2668,"nodeType":"Block","src":"18788:98:22","statements":[{"AST":{"nativeSrc":"18807:73:22","nodeType":"YulBlock","src":"18807:73:22","statements":[{"nativeSrc":"18821:49:22","nodeType":"YulAssignment","src":"18821:49:22","value":{"arguments":[{"arguments":[{"arguments":[{"name":"arr","nativeSrc":"18842:3:22","nodeType":"YulIdentifier","src":"18842:3:22"},{"kind":"number","nativeSrc":"18847:4:22","nodeType":"YulLiteral","src":"18847:4:22","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18838:3:22","nodeType":"YulIdentifier","src":"18838:3:22"},"nativeSrc":"18838:14:22","nodeType":"YulFunctionCall","src":"18838:14:22"},{"arguments":[{"name":"pos","nativeSrc":"18858:3:22","nodeType":"YulIdentifier","src":"18858:3:22"},{"kind":"number","nativeSrc":"18863:4:22","nodeType":"YulLiteral","src":"18863:4:22","type":"","value":"0x20"}],"functionName":{"name":"mul","nativeSrc":"18854:3:22","nodeType":"YulIdentifier","src":"18854:3:22"},"nativeSrc":"18854:14:22","nodeType":"YulFunctionCall","src":"18854:14:22"}],"functionName":{"name":"add","nativeSrc":"18834:3:22","nodeType":"YulIdentifier","src":"18834:3:22"},"nativeSrc":"18834:35:22","nodeType":"YulFunctionCall","src":"18834:35:22"}],"functionName":{"name":"mload","nativeSrc":"18828:5:22","nodeType":"YulIdentifier","src":"18828:5:22"},"nativeSrc":"18828:42:22","nodeType":"YulFunctionCall","src":"18828:42:22"},"variableNames":[{"name":"res","nativeSrc":"18821:3:22","nodeType":"YulIdentifier","src":"18821:3:22"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2660,"isOffset":false,"isSlot":false,"src":"18842:3:22","valueSize":1},{"declaration":2662,"isOffset":false,"isSlot":false,"src":"18858:3:22","valueSize":1},{"declaration":2665,"isOffset":false,"isSlot":false,"src":"18821:3:22","valueSize":1}],"id":2667,"nodeType":"InlineAssembly","src":"18798:82:22"}]},"documentation":{"id":2657,"nodeType":"StructuredDocumentation","src":"18488:191:22","text":" @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n WARNING: Only use if you are certain `pos` is lower than the array length."},"id":2669,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeMemoryAccess","nameLocation":"18693:18:22","nodeType":"FunctionDefinition","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2660,"mutability":"mutable","name":"arr","nameLocation":"18728:3:22","nodeType":"VariableDeclaration","scope":2669,"src":"18712:19:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":2658,"name":"string","nodeType":"ElementaryTypeName","src":"18712:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":2659,"nodeType":"ArrayTypeName","src":"18712:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":2662,"mutability":"mutable","name":"pos","nameLocation":"18741:3:22","nodeType":"VariableDeclaration","scope":2669,"src":"18733:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"18733:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18711:34:22"},"returnParameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"res","nameLocation":"18783:3:22","nodeType":"VariableDeclaration","scope":2669,"src":"18769:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2664,"name":"string","nodeType":"ElementaryTypeName","src":"18769:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"18768:19:22"},"scope":2725,"src":"18684:202:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2679,"nodeType":"Block","src":"19202:88:22","statements":[{"AST":{"nativeSrc":"19237:47:22","nodeType":"YulBlock","src":"19237:47:22","statements":[{"expression":{"arguments":[{"name":"array.slot","nativeSrc":"19258:10:22","nodeType":"YulIdentifier","src":"19258:10:22"},{"name":"len","nativeSrc":"19270:3:22","nodeType":"YulIdentifier","src":"19270:3:22"}],"functionName":{"name":"sstore","nativeSrc":"19251:6:22","nodeType":"YulIdentifier","src":"19251:6:22"},"nativeSrc":"19251:23:22","nodeType":"YulFunctionCall","src":"19251:23:22"},"nativeSrc":"19251:23:22","nodeType":"YulExpressionStatement","src":"19251:23:22"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2673,"isOffset":false,"isSlot":true,"src":"19258:10:22","suffix":"slot","valueSize":1},{"declaration":2675,"isOffset":false,"isSlot":false,"src":"19270:3:22","valueSize":1}],"flags":["memory-safe"],"id":2678,"nodeType":"InlineAssembly","src":"19212:72:22"}]},"documentation":{"id":2670,"nodeType":"StructuredDocumentation","src":"18892:233:22","text":" @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden.\n WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased."},"id":2680,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeSetLength","nameLocation":"19139:15:22","nodeType":"FunctionDefinition","parameters":{"id":2676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2673,"mutability":"mutable","name":"array","nameLocation":"19173:5:22","nodeType":"VariableDeclaration","scope":2680,"src":"19155:23:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2671,"name":"address","nodeType":"ElementaryTypeName","src":"19155:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2672,"nodeType":"ArrayTypeName","src":"19155:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":2675,"mutability":"mutable","name":"len","nameLocation":"19188:3:22","nodeType":"VariableDeclaration","scope":2680,"src":"19180:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2674,"name":"uint256","nodeType":"ElementaryTypeName","src":"19180:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19154:38:22"},"returnParameters":{"id":2677,"nodeType":"ParameterList","parameters":[],"src":"19202:0:22"},"scope":2725,"src":"19130:160:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2690,"nodeType":"Block","src":"19606:88:22","statements":[{"AST":{"nativeSrc":"19641:47:22","nodeType":"YulBlock","src":"19641:47:22","statements":[{"expression":{"arguments":[{"name":"array.slot","nativeSrc":"19662:10:22","nodeType":"YulIdentifier","src":"19662:10:22"},{"name":"len","nativeSrc":"19674:3:22","nodeType":"YulIdentifier","src":"19674:3:22"}],"functionName":{"name":"sstore","nativeSrc":"19655:6:22","nodeType":"YulIdentifier","src":"19655:6:22"},"nativeSrc":"19655:23:22","nodeType":"YulFunctionCall","src":"19655:23:22"},"nativeSrc":"19655:23:22","nodeType":"YulExpressionStatement","src":"19655:23:22"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2684,"isOffset":false,"isSlot":true,"src":"19662:10:22","suffix":"slot","valueSize":1},{"declaration":2686,"isOffset":false,"isSlot":false,"src":"19674:3:22","valueSize":1}],"flags":["memory-safe"],"id":2689,"nodeType":"InlineAssembly","src":"19616:72:22"}]},"documentation":{"id":2681,"nodeType":"StructuredDocumentation","src":"19296:233:22","text":" @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden.\n WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased."},"id":2691,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeSetLength","nameLocation":"19543:15:22","nodeType":"FunctionDefinition","parameters":{"id":2687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2684,"mutability":"mutable","name":"array","nameLocation":"19577:5:22","nodeType":"VariableDeclaration","scope":2691,"src":"19559:23:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":2682,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19559:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2683,"nodeType":"ArrayTypeName","src":"19559:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":2686,"mutability":"mutable","name":"len","nameLocation":"19592:3:22","nodeType":"VariableDeclaration","scope":2691,"src":"19584:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2685,"name":"uint256","nodeType":"ElementaryTypeName","src":"19584:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19558:38:22"},"returnParameters":{"id":2688,"nodeType":"ParameterList","parameters":[],"src":"19606:0:22"},"scope":2725,"src":"19534:160:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2701,"nodeType":"Block","src":"20010:88:22","statements":[{"AST":{"nativeSrc":"20045:47:22","nodeType":"YulBlock","src":"20045:47:22","statements":[{"expression":{"arguments":[{"name":"array.slot","nativeSrc":"20066:10:22","nodeType":"YulIdentifier","src":"20066:10:22"},{"name":"len","nativeSrc":"20078:3:22","nodeType":"YulIdentifier","src":"20078:3:22"}],"functionName":{"name":"sstore","nativeSrc":"20059:6:22","nodeType":"YulIdentifier","src":"20059:6:22"},"nativeSrc":"20059:23:22","nodeType":"YulFunctionCall","src":"20059:23:22"},"nativeSrc":"20059:23:22","nodeType":"YulExpressionStatement","src":"20059:23:22"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2695,"isOffset":false,"isSlot":true,"src":"20066:10:22","suffix":"slot","valueSize":1},{"declaration":2697,"isOffset":false,"isSlot":false,"src":"20078:3:22","valueSize":1}],"flags":["memory-safe"],"id":2700,"nodeType":"InlineAssembly","src":"20020:72:22"}]},"documentation":{"id":2692,"nodeType":"StructuredDocumentation","src":"19700:233:22","text":" @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden.\n WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased."},"id":2702,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeSetLength","nameLocation":"19947:15:22","nodeType":"FunctionDefinition","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2695,"mutability":"mutable","name":"array","nameLocation":"19981:5:22","nodeType":"VariableDeclaration","scope":2702,"src":"19963:23:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2693,"name":"uint256","nodeType":"ElementaryTypeName","src":"19963:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2694,"nodeType":"ArrayTypeName","src":"19963:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"len","nameLocation":"19996:3:22","nodeType":"VariableDeclaration","scope":2702,"src":"19988:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2696,"name":"uint256","nodeType":"ElementaryTypeName","src":"19988:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19962:38:22"},"returnParameters":{"id":2699,"nodeType":"ParameterList","parameters":[],"src":"20010:0:22"},"scope":2725,"src":"19938:160:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2712,"nodeType":"Block","src":"20412:88:22","statements":[{"AST":{"nativeSrc":"20447:47:22","nodeType":"YulBlock","src":"20447:47:22","statements":[{"expression":{"arguments":[{"name":"array.slot","nativeSrc":"20468:10:22","nodeType":"YulIdentifier","src":"20468:10:22"},{"name":"len","nativeSrc":"20480:3:22","nodeType":"YulIdentifier","src":"20480:3:22"}],"functionName":{"name":"sstore","nativeSrc":"20461:6:22","nodeType":"YulIdentifier","src":"20461:6:22"},"nativeSrc":"20461:23:22","nodeType":"YulFunctionCall","src":"20461:23:22"},"nativeSrc":"20461:23:22","nodeType":"YulExpressionStatement","src":"20461:23:22"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2706,"isOffset":false,"isSlot":true,"src":"20468:10:22","suffix":"slot","valueSize":1},{"declaration":2708,"isOffset":false,"isSlot":false,"src":"20480:3:22","valueSize":1}],"flags":["memory-safe"],"id":2711,"nodeType":"InlineAssembly","src":"20422:72:22"}]},"documentation":{"id":2703,"nodeType":"StructuredDocumentation","src":"20104:233:22","text":" @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden.\n WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased."},"id":2713,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeSetLength","nameLocation":"20351:15:22","nodeType":"FunctionDefinition","parameters":{"id":2709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2706,"mutability":"mutable","name":"array","nameLocation":"20383:5:22","nodeType":"VariableDeclaration","scope":2713,"src":"20367:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2704,"name":"bytes","nodeType":"ElementaryTypeName","src":"20367:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2705,"nodeType":"ArrayTypeName","src":"20367:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2708,"mutability":"mutable","name":"len","nameLocation":"20398:3:22","nodeType":"VariableDeclaration","scope":2713,"src":"20390:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2707,"name":"uint256","nodeType":"ElementaryTypeName","src":"20390:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20366:36:22"},"returnParameters":{"id":2710,"nodeType":"ParameterList","parameters":[],"src":"20412:0:22"},"scope":2725,"src":"20342:158:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2723,"nodeType":"Block","src":"20815:88:22","statements":[{"AST":{"nativeSrc":"20850:47:22","nodeType":"YulBlock","src":"20850:47:22","statements":[{"expression":{"arguments":[{"name":"array.slot","nativeSrc":"20871:10:22","nodeType":"YulIdentifier","src":"20871:10:22"},{"name":"len","nativeSrc":"20883:3:22","nodeType":"YulIdentifier","src":"20883:3:22"}],"functionName":{"name":"sstore","nativeSrc":"20864:6:22","nodeType":"YulIdentifier","src":"20864:6:22"},"nativeSrc":"20864:23:22","nodeType":"YulFunctionCall","src":"20864:23:22"},"nativeSrc":"20864:23:22","nodeType":"YulExpressionStatement","src":"20864:23:22"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2717,"isOffset":false,"isSlot":true,"src":"20871:10:22","suffix":"slot","valueSize":1},{"declaration":2719,"isOffset":false,"isSlot":false,"src":"20883:3:22","valueSize":1}],"flags":["memory-safe"],"id":2722,"nodeType":"InlineAssembly","src":"20825:72:22"}]},"documentation":{"id":2714,"nodeType":"StructuredDocumentation","src":"20506:233:22","text":" @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden.\n WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased."},"id":2724,"implemented":true,"kind":"function","modifiers":[],"name":"unsafeSetLength","nameLocation":"20753:15:22","nodeType":"FunctionDefinition","parameters":{"id":2720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2717,"mutability":"mutable","name":"array","nameLocation":"20786:5:22","nodeType":"VariableDeclaration","scope":2724,"src":"20769:22:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":2715,"name":"string","nodeType":"ElementaryTypeName","src":"20769:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":2716,"nodeType":"ArrayTypeName","src":"20769:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":2719,"mutability":"mutable","name":"len","nameLocation":"20801:3:22","nodeType":"VariableDeclaration","scope":2724,"src":"20793:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2718,"name":"uint256","nodeType":"ElementaryTypeName","src":"20793:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20768:37:22"},"returnParameters":{"id":2721,"nodeType":"ParameterList","parameters":[],"src":"20815:0:22"},"scope":2725,"src":"20744:159:22","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2726,"src":"459:20446:22","usedErrors":[],"usedEvents":[]}],"src":"183:20723:22"},"id":22},"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/Comparators.sol","exportedSymbols":{"Comparators":[2757]},"id":2758,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2727,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:23"},{"abstract":false,"baseContracts":[],"canonicalName":"Comparators","contractDependencies":[],"contractKind":"library","documentation":{"id":2728,"nodeType":"StructuredDocumentation","src":"131:92:23","text":" @dev Provides a set of functions to compare values.\n _Available since v5.1._"},"fullyImplemented":true,"id":2757,"linearizedBaseContracts":[2757],"name":"Comparators","nameLocation":"232:11:23","nodeType":"ContractDefinition","nodes":[{"body":{"id":2741,"nodeType":"Block","src":"313:29:23","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2737,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"330:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2738,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2732,"src":"334:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"330:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2736,"id":2740,"nodeType":"Return","src":"323:12:23"}]},"id":2742,"implemented":true,"kind":"function","modifiers":[],"name":"lt","nameLocation":"259:2:23","nodeType":"FunctionDefinition","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2730,"mutability":"mutable","name":"a","nameLocation":"270:1:23","nodeType":"VariableDeclaration","scope":2742,"src":"262:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2729,"name":"uint256","nodeType":"ElementaryTypeName","src":"262:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2732,"mutability":"mutable","name":"b","nameLocation":"281:1:23","nodeType":"VariableDeclaration","scope":2742,"src":"273:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2731,"name":"uint256","nodeType":"ElementaryTypeName","src":"273:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"261:22:23"},"returnParameters":{"id":2736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2735,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2742,"src":"307:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2734,"name":"bool","nodeType":"ElementaryTypeName","src":"307:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"306:6:23"},"scope":2757,"src":"250:92:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2755,"nodeType":"Block","src":"411:29:23","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2751,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"428:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2752,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"432:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"428:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2750,"id":2754,"nodeType":"Return","src":"421:12:23"}]},"id":2756,"implemented":true,"kind":"function","modifiers":[],"name":"gt","nameLocation":"357:2:23","nodeType":"FunctionDefinition","parameters":{"id":2747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2744,"mutability":"mutable","name":"a","nameLocation":"368:1:23","nodeType":"VariableDeclaration","scope":2756,"src":"360:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2743,"name":"uint256","nodeType":"ElementaryTypeName","src":"360:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2746,"mutability":"mutable","name":"b","nameLocation":"379:1:23","nodeType":"VariableDeclaration","scope":2756,"src":"371:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2745,"name":"uint256","nodeType":"ElementaryTypeName","src":"371:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"359:22:23"},"returnParameters":{"id":2750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2756,"src":"405:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2748,"name":"bool","nodeType":"ElementaryTypeName","src":"405:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"404:6:23"},"scope":2757,"src":"348:92:23","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2758,"src":"224:218:23","usedErrors":[],"usedEvents":[]}],"src":"105:338:23"},"id":23},"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol","exportedSymbols":{"Panic":[2809]},"id":2810,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2759,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:24"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":2760,"nodeType":"StructuredDocumentation","src":"125:489:24","text":" @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n      using Panic for uint256;\n      // Use any of the declared internal constants\n      function foo() { Panic.GENERIC.panic(); }\n      // Alternatively\n      function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"},"fullyImplemented":true,"id":2809,"linearizedBaseContracts":[2809],"name":"Panic","nameLocation":"665:5:24","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":2761,"nodeType":"StructuredDocumentation","src":"677:36:24","text":"@dev generic / unspecified error"},"id":2764,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:24","nodeType":"VariableDeclaration","scope":2809,"src":"718:40:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2762,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":2763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":2765,"nodeType":"StructuredDocumentation","src":"764:37:24","text":"@dev used by the assert() builtin"},"id":2768,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:24","nodeType":"VariableDeclaration","scope":2809,"src":"806:39:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2766,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":2767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":2769,"nodeType":"StructuredDocumentation","src":"851:41:24","text":"@dev arithmetic underflow or overflow"},"id":2772,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:24","nodeType":"VariableDeclaration","scope":2809,"src":"897:47:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2770,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":2771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:24","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":2773,"nodeType":"StructuredDocumentation","src":"950:35:24","text":"@dev division or modulo by zero"},"id":2776,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:24","nodeType":"VariableDeclaration","scope":2809,"src":"990:49:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2774,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":2775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:24","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":2777,"nodeType":"StructuredDocumentation","src":"1045:30:24","text":"@dev enum conversion error"},"id":2780,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:24","nodeType":"VariableDeclaration","scope":2809,"src":"1080:54:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2778,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":2779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:24","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":2781,"nodeType":"StructuredDocumentation","src":"1140:36:24","text":"@dev invalid encoding in storage"},"id":2784,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:24","nodeType":"VariableDeclaration","scope":2809,"src":"1181:55:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2782,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":2783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:24","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":2785,"nodeType":"StructuredDocumentation","src":"1242:24:24","text":"@dev empty array pop"},"id":2788,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:24","nodeType":"VariableDeclaration","scope":2809,"src":"1271:48:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2786,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":2787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:24","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":2789,"nodeType":"StructuredDocumentation","src":"1325:35:24","text":"@dev array out of bounds access"},"id":2792,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:24","nodeType":"VariableDeclaration","scope":2809,"src":"1365:52:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2790,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:24","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":2793,"nodeType":"StructuredDocumentation","src":"1423:65:24","text":"@dev resource error (too large allocation or too large array)"},"id":2796,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:24","nodeType":"VariableDeclaration","scope":2809,"src":"1493:47:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2794,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":2795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:24","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":2797,"nodeType":"StructuredDocumentation","src":"1546:42:24","text":"@dev calling invalid internal function"},"id":2800,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:24","nodeType":"VariableDeclaration","scope":2809,"src":"1593:58:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2798,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":2799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:24","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":2807,"nodeType":"Block","src":"1819:151:24","statements":[{"AST":{"nativeSrc":"1854:110:24","nodeType":"YulBlock","src":"1854:110:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:24","nodeType":"YulLiteral","src":"1875:4:24","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:24","nodeType":"YulLiteral","src":"1881:10:24","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:24","nodeType":"YulIdentifier","src":"1868:6:24"},"nativeSrc":"1868:24:24","nodeType":"YulFunctionCall","src":"1868:24:24"},"nativeSrc":"1868:24:24","nodeType":"YulExpressionStatement","src":"1868:24:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:24","nodeType":"YulLiteral","src":"1912:4:24","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:24","nodeType":"YulIdentifier","src":"1918:4:24"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:24","nodeType":"YulIdentifier","src":"1905:6:24"},"nativeSrc":"1905:18:24","nodeType":"YulFunctionCall","src":"1905:18:24"},"nativeSrc":"1905:18:24","nodeType":"YulExpressionStatement","src":"1905:18:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:24","nodeType":"YulLiteral","src":"1943:4:24","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:24","nodeType":"YulLiteral","src":"1949:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:24","nodeType":"YulIdentifier","src":"1936:6:24"},"nativeSrc":"1936:18:24","nodeType":"YulFunctionCall","src":"1936:18:24"},"nativeSrc":"1936:18:24","nodeType":"YulExpressionStatement","src":"1936:18:24"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2803,"isOffset":false,"isSlot":false,"src":"1918:4:24","valueSize":1}],"flags":["memory-safe"],"id":2806,"nodeType":"InlineAssembly","src":"1829:135:24"}]},"documentation":{"id":2801,"nodeType":"StructuredDocumentation","src":"1658:113:24","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":2808,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:24","nodeType":"FunctionDefinition","parameters":{"id":2804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2803,"mutability":"mutable","name":"code","nameLocation":"1799:4:24","nodeType":"VariableDeclaration","scope":2808,"src":"1791:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2802,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:24"},"returnParameters":{"id":2805,"nodeType":"ParameterList","parameters":[],"src":"1819:0:24"},"scope":2809,"src":"1776:194:24","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2810,"src":"657:1315:24","usedErrors":[],"usedEvents":[]}],"src":"99:1874:24"},"id":24},"npm/@openzeppelin/contracts@5.4.0/utils/ReentrancyGuardTransient.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/ReentrancyGuardTransient.sol","exportedSymbols":{"ReentrancyGuardTransient":[2878],"TransientSlot":[3331]},"id":2879,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2811,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"118:24:25"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol","file":"./TransientSlot.sol","id":2813,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2879,"sourceUnit":3332,"src":"144:50:25","symbolAliases":[{"foreign":{"id":2812,"name":"TransientSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"152:13:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuardTransient","contractDependencies":[],"contractKind":"contract","documentation":{"id":2814,"nodeType":"StructuredDocumentation","src":"196:180:25","text":" @dev Variant of {ReentrancyGuard} that uses transient storage.\n NOTE: This variant only works on networks where EIP-1153 is available.\n _Available since v5.1._"},"fullyImplemented":true,"id":2878,"linearizedBaseContracts":[2878],"name":"ReentrancyGuardTransient","nameLocation":"395:24:25","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2816,"libraryName":{"id":2815,"name":"TransientSlot","nameLocations":["432:13:25"],"nodeType":"IdentifierPath","referencedDeclaration":3331,"src":"432:13:25"},"nodeType":"UsingForDirective","src":"426:26:25"},{"constant":true,"id":2819,"mutability":"constant","name":"REENTRANCY_GUARD_STORAGE","nameLocation":"602:24:25","nodeType":"VariableDeclaration","scope":2878,"src":"577:126:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2817,"name":"bytes32","nodeType":"ElementaryTypeName","src":"577:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":2818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"637:66:25","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"documentation":{"id":2820,"nodeType":"StructuredDocumentation","src":"710:52:25","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":2822,"name":"ReentrancyGuardReentrantCall","nameLocation":"773:28:25","nodeType":"ErrorDefinition","parameters":{"id":2821,"nodeType":"ParameterList","parameters":[],"src":"801:2:25"},"src":"767:37:25"},{"body":{"id":2832,"nodeType":"Block","src":"1205:79:25","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2825,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2852,"src":"1215:19:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1215:21:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2827,"nodeType":"ExpressionStatement","src":"1215:21:25"},{"id":2828,"nodeType":"PlaceholderStatement","src":"1246:1:25"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2829,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"1257:18:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1257:20:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2831,"nodeType":"ExpressionStatement","src":"1257:20:25"}]},"documentation":{"id":2823,"nodeType":"StructuredDocumentation","src":"810:366:25","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":2833,"name":"nonReentrant","nameLocation":"1190:12:25","nodeType":"ModifierDefinition","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[],"src":"1202:2:25"},"src":"1181:103:25","virtual":false,"visibility":"internal"},{"body":{"id":2851,"nodeType":"Block","src":"1329:338:25","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":2836,"name":"_reentrancyGuardEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"1448:23:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":2837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1448:25:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2842,"nodeType":"IfStatement","src":"1444:93:25","trueBody":{"id":2841,"nodeType":"Block","src":"1475:62:25","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2838,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"1496:28:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1496:30:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2840,"nodeType":"RevertStatement","src":"1489:37:25"}]}},{"expression":{"arguments":[{"hexValue":"74727565","id":2848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1655:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2843,"name":"REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2819,"src":"1611:24:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1636:9:25","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":3169,"src":"1611:34:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$3154_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":2846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1611:36:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$3154","typeString":"TransientSlot.BooleanSlot"}},"id":2847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1648:6:25","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":3264,"src":"1611:43:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlot_$3154_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlot_$3154_$","typeString":"function (TransientSlot.BooleanSlot,bool)"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1611:49:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2850,"nodeType":"ExpressionStatement","src":"1611:49:25"}]},"id":2852,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"1299:19:25","nodeType":"FunctionDefinition","parameters":{"id":2834,"nodeType":"ParameterList","parameters":[],"src":"1318:2:25"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[],"src":"1329:0:25"},"scope":2878,"src":"1290:377:25","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2863,"nodeType":"Block","src":"1711:67:25","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":2860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1765:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2855,"name":"REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2819,"src":"1721:24:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1746:9:25","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":3169,"src":"1721:34:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$3154_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":2858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1721:36:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$3154","typeString":"TransientSlot.BooleanSlot"}},"id":2859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1758:6:25","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":3264,"src":"1721:43:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlot_$3154_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlot_$3154_$","typeString":"function (TransientSlot.BooleanSlot,bool)"}},"id":2861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1721:50:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2862,"nodeType":"ExpressionStatement","src":"1721:50:25"}]},"id":2864,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"1682:18:25","nodeType":"FunctionDefinition","parameters":{"id":2853,"nodeType":"ParameterList","parameters":[],"src":"1700:2:25"},"returnParameters":{"id":2854,"nodeType":"ParameterList","parameters":[],"src":"1711:0:25"},"scope":2878,"src":"1673:105:25","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2876,"nodeType":"Block","src":"2021:68:25","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2870,"name":"REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2819,"src":"2038:24:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2063:9:25","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":3169,"src":"2038:34:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$3154_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":2872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2038:36:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$3154","typeString":"TransientSlot.BooleanSlot"}},"id":2873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2075:5:25","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":3253,"src":"2038:42:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlot_$3154_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlot_$3154_$","typeString":"function (TransientSlot.BooleanSlot) view returns (bool)"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2038:44:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2869,"id":2875,"nodeType":"Return","src":"2031:51:25"}]},"documentation":{"id":2865,"nodeType":"StructuredDocumentation","src":"1784:168:25","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":2877,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"1966:23:25","nodeType":"FunctionDefinition","parameters":{"id":2866,"nodeType":"ParameterList","parameters":[],"src":"1989:2:25"},"returnParameters":{"id":2869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2868,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2877,"src":"2015:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2867,"name":"bool","nodeType":"ElementaryTypeName","src":"2015:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2014:6:25"},"scope":2878,"src":"1957:132:25","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2879,"src":"377:1714:25","usedErrors":[2822],"usedEvents":[]}],"src":"118:1974:25"},"id":25},"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/SlotDerivation.sol","exportedSymbols":{"SlotDerivation":[3008]},"id":3009,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2880,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"199:24:26"},{"abstract":false,"baseContracts":[],"canonicalName":"SlotDerivation","contractDependencies":[],"contractKind":"library","documentation":{"id":2881,"nodeType":"StructuredDocumentation","src":"225:1373:26","text":" @dev Library for computing storage (and transient storage) locations from namespaces and deriving slots\n corresponding to standard patterns. The derivation method for array and mapping matches the storage layout used by\n the solidity language / compiler.\n See https://docs.soliditylang.org/en/v0.8.20/internals/layout_in_storage.html#mappings-and-dynamic-arrays[Solidity docs for mappings and dynamic arrays.].\n Example usage:\n ```solidity\n contract Example {\n     // Add the library methods\n     using StorageSlot for bytes32;\n     using SlotDerivation for bytes32;\n     // Declare a namespace\n     string private constant _NAMESPACE = \"<namespace>\"; // eg. OpenZeppelin.Slot\n     function setValueInNamespace(uint256 key, address newValue) internal {\n         _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value = newValue;\n     }\n     function getValueInNamespace(uint256 key) internal view returns (address) {\n         return _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value;\n     }\n }\n ```\n TIP: Consider using this library along with {StorageSlot}.\n NOTE: This library provides a way to manipulate storage locations in a non-standard way. Tooling for checking\n upgrade safety will ignore the slots accessed through this library.\n _Available since v5.1._"},"fullyImplemented":true,"id":3008,"linearizedBaseContracts":[3008],"name":"SlotDerivation","nameLocation":"1607:14:26","nodeType":"ContractDefinition","nodes":[{"body":{"id":2890,"nodeType":"Block","src":"1790:194:26","statements":[{"AST":{"nativeSrc":"1825:153:26","nodeType":"YulBlock","src":"1825:153:26","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1846:4:26","nodeType":"YulLiteral","src":"1846:4:26","type":"","value":"0x00"},{"arguments":[{"arguments":[{"arguments":[{"name":"namespace","nativeSrc":"1870:9:26","nodeType":"YulIdentifier","src":"1870:9:26"},{"kind":"number","nativeSrc":"1881:4:26","nodeType":"YulLiteral","src":"1881:4:26","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1866:3:26","nodeType":"YulIdentifier","src":"1866:3:26"},"nativeSrc":"1866:20:26","nodeType":"YulFunctionCall","src":"1866:20:26"},{"arguments":[{"name":"namespace","nativeSrc":"1894:9:26","nodeType":"YulIdentifier","src":"1894:9:26"}],"functionName":{"name":"mload","nativeSrc":"1888:5:26","nodeType":"YulIdentifier","src":"1888:5:26"},"nativeSrc":"1888:16:26","nodeType":"YulFunctionCall","src":"1888:16:26"}],"functionName":{"name":"keccak256","nativeSrc":"1856:9:26","nodeType":"YulIdentifier","src":"1856:9:26"},"nativeSrc":"1856:49:26","nodeType":"YulFunctionCall","src":"1856:49:26"},{"kind":"number","nativeSrc":"1907:1:26","nodeType":"YulLiteral","src":"1907:1:26","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1852:3:26","nodeType":"YulIdentifier","src":"1852:3:26"},"nativeSrc":"1852:57:26","nodeType":"YulFunctionCall","src":"1852:57:26"}],"functionName":{"name":"mstore","nativeSrc":"1839:6:26","nodeType":"YulIdentifier","src":"1839:6:26"},"nativeSrc":"1839:71:26","nodeType":"YulFunctionCall","src":"1839:71:26"},"nativeSrc":"1839:71:26","nodeType":"YulExpressionStatement","src":"1839:71:26"},{"nativeSrc":"1923:45:26","nodeType":"YulAssignment","src":"1923:45:26","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1945:4:26","nodeType":"YulLiteral","src":"1945:4:26","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1951:4:26","nodeType":"YulLiteral","src":"1951:4:26","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"1935:9:26","nodeType":"YulIdentifier","src":"1935:9:26"},"nativeSrc":"1935:21:26","nodeType":"YulFunctionCall","src":"1935:21:26"},{"arguments":[{"kind":"number","nativeSrc":"1962:4:26","nodeType":"YulLiteral","src":"1962:4:26","type":"","value":"0xff"}],"functionName":{"name":"not","nativeSrc":"1958:3:26","nodeType":"YulIdentifier","src":"1958:3:26"},"nativeSrc":"1958:9:26","nodeType":"YulFunctionCall","src":"1958:9:26"}],"functionName":{"name":"and","nativeSrc":"1931:3:26","nodeType":"YulIdentifier","src":"1931:3:26"},"nativeSrc":"1931:37:26","nodeType":"YulFunctionCall","src":"1931:37:26"},"variableNames":[{"name":"slot","nativeSrc":"1923:4:26","nodeType":"YulIdentifier","src":"1923:4:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2884,"isOffset":false,"isSlot":false,"src":"1870:9:26","valueSize":1},{"declaration":2884,"isOffset":false,"isSlot":false,"src":"1894:9:26","valueSize":1},{"declaration":2887,"isOffset":false,"isSlot":false,"src":"1923:4:26","valueSize":1}],"flags":["memory-safe"],"id":2889,"nodeType":"InlineAssembly","src":"1800:178:26"}]},"documentation":{"id":2882,"nodeType":"StructuredDocumentation","src":"1628:74:26","text":" @dev Derive an ERC-7201 slot from a string (namespace)."},"id":2891,"implemented":true,"kind":"function","modifiers":[],"name":"erc7201Slot","nameLocation":"1716:11:26","nodeType":"FunctionDefinition","parameters":{"id":2885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2884,"mutability":"mutable","name":"namespace","nameLocation":"1742:9:26","nodeType":"VariableDeclaration","scope":2891,"src":"1728:23:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2883,"name":"string","nodeType":"ElementaryTypeName","src":"1728:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1727:25:26"},"returnParameters":{"id":2888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2887,"mutability":"mutable","name":"slot","nameLocation":"1784:4:26","nodeType":"VariableDeclaration","scope":2891,"src":"1776:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2886,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1776:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1775:14:26"},"scope":3008,"src":"1707:277:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2912,"nodeType":"Block","src":"2176:86:26","statements":[{"id":2911,"nodeType":"UncheckedBlock","src":"2186:70:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2905,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"2233:4:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2225:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2903,"name":"uint256","nodeType":"ElementaryTypeName","src":"2225:7:26","typeDescriptions":{}}},"id":2906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2907,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"2241:3:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2225:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2217:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2217:7:26","typeDescriptions":{}}},"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2900,"id":2910,"nodeType":"Return","src":"2210:35:26"}]}]},"documentation":{"id":2892,"nodeType":"StructuredDocumentation","src":"1990:99:26","text":" @dev Add an offset to a slot to get the n-th element of a structure or an array."},"id":2913,"implemented":true,"kind":"function","modifiers":[],"name":"offset","nameLocation":"2103:6:26","nodeType":"FunctionDefinition","parameters":{"id":2897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2894,"mutability":"mutable","name":"slot","nameLocation":"2118:4:26","nodeType":"VariableDeclaration","scope":2913,"src":"2110:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2893,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2110:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2896,"mutability":"mutable","name":"pos","nameLocation":"2132:3:26","nodeType":"VariableDeclaration","scope":2913,"src":"2124:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2895,"name":"uint256","nodeType":"ElementaryTypeName","src":"2124:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2109:27:26"},"returnParameters":{"id":2900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2899,"mutability":"mutable","name":"result","nameLocation":"2168:6:26","nodeType":"VariableDeclaration","scope":2913,"src":"2160:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2160:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2159:16:26"},"scope":3008,"src":"2094:168:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2922,"nodeType":"Block","src":"2465:127:26","statements":[{"AST":{"nativeSrc":"2500:86:26","nodeType":"YulBlock","src":"2500:86:26","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2521:4:26","nodeType":"YulLiteral","src":"2521:4:26","type":"","value":"0x00"},{"name":"slot","nativeSrc":"2527:4:26","nodeType":"YulIdentifier","src":"2527:4:26"}],"functionName":{"name":"mstore","nativeSrc":"2514:6:26","nodeType":"YulIdentifier","src":"2514:6:26"},"nativeSrc":"2514:18:26","nodeType":"YulFunctionCall","src":"2514:18:26"},"nativeSrc":"2514:18:26","nodeType":"YulExpressionStatement","src":"2514:18:26"},{"nativeSrc":"2545:31:26","nodeType":"YulAssignment","src":"2545:31:26","value":{"arguments":[{"kind":"number","nativeSrc":"2565:4:26","nodeType":"YulLiteral","src":"2565:4:26","type":"","value":"0x00"},{"kind":"number","nativeSrc":"2571:4:26","nodeType":"YulLiteral","src":"2571:4:26","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2555:9:26","nodeType":"YulIdentifier","src":"2555:9:26"},"nativeSrc":"2555:21:26","nodeType":"YulFunctionCall","src":"2555:21:26"},"variableNames":[{"name":"result","nativeSrc":"2545:6:26","nodeType":"YulIdentifier","src":"2545:6:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2919,"isOffset":false,"isSlot":false,"src":"2545:6:26","valueSize":1},{"declaration":2916,"isOffset":false,"isSlot":false,"src":"2527:4:26","valueSize":1}],"flags":["memory-safe"],"id":2921,"nodeType":"InlineAssembly","src":"2475:111:26"}]},"documentation":{"id":2914,"nodeType":"StructuredDocumentation","src":"2268:118:26","text":" @dev Derive the location of the first element in an array from the slot where the length is stored."},"id":2923,"implemented":true,"kind":"function","modifiers":[],"name":"deriveArray","nameLocation":"2400:11:26","nodeType":"FunctionDefinition","parameters":{"id":2917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2916,"mutability":"mutable","name":"slot","nameLocation":"2420:4:26","nodeType":"VariableDeclaration","scope":2923,"src":"2412:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2915,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2412:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2411:14:26"},"returnParameters":{"id":2920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2919,"mutability":"mutable","name":"result","nameLocation":"2457:6:26","nodeType":"VariableDeclaration","scope":2923,"src":"2449:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2449:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2448:16:26"},"scope":3008,"src":"2391:201:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2934,"nodeType":"Block","src":"2770:179:26","statements":[{"AST":{"nativeSrc":"2805:138:26","nodeType":"YulBlock","src":"2805:138:26","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2826:4:26","nodeType":"YulLiteral","src":"2826:4:26","type":"","value":"0x00"},{"arguments":[{"name":"key","nativeSrc":"2836:3:26","nodeType":"YulIdentifier","src":"2836:3:26"},{"arguments":[{"kind":"number","nativeSrc":"2845:2:26","nodeType":"YulLiteral","src":"2845:2:26","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"2853:1:26","nodeType":"YulLiteral","src":"2853:1:26","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"2849:3:26","nodeType":"YulIdentifier","src":"2849:3:26"},"nativeSrc":"2849:6:26","nodeType":"YulFunctionCall","src":"2849:6:26"}],"functionName":{"name":"shr","nativeSrc":"2841:3:26","nodeType":"YulIdentifier","src":"2841:3:26"},"nativeSrc":"2841:15:26","nodeType":"YulFunctionCall","src":"2841:15:26"}],"functionName":{"name":"and","nativeSrc":"2832:3:26","nodeType":"YulIdentifier","src":"2832:3:26"},"nativeSrc":"2832:25:26","nodeType":"YulFunctionCall","src":"2832:25:26"}],"functionName":{"name":"mstore","nativeSrc":"2819:6:26","nodeType":"YulIdentifier","src":"2819:6:26"},"nativeSrc":"2819:39:26","nodeType":"YulFunctionCall","src":"2819:39:26"},"nativeSrc":"2819:39:26","nodeType":"YulExpressionStatement","src":"2819:39:26"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2878:4:26","nodeType":"YulLiteral","src":"2878:4:26","type":"","value":"0x20"},{"name":"slot","nativeSrc":"2884:4:26","nodeType":"YulIdentifier","src":"2884:4:26"}],"functionName":{"name":"mstore","nativeSrc":"2871:6:26","nodeType":"YulIdentifier","src":"2871:6:26"},"nativeSrc":"2871:18:26","nodeType":"YulFunctionCall","src":"2871:18:26"},"nativeSrc":"2871:18:26","nodeType":"YulExpressionStatement","src":"2871:18:26"},{"nativeSrc":"2902:31:26","nodeType":"YulAssignment","src":"2902:31:26","value":{"arguments":[{"kind":"number","nativeSrc":"2922:4:26","nodeType":"YulLiteral","src":"2922:4:26","type":"","value":"0x00"},{"kind":"number","nativeSrc":"2928:4:26","nodeType":"YulLiteral","src":"2928:4:26","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"2912:9:26","nodeType":"YulIdentifier","src":"2912:9:26"},"nativeSrc":"2912:21:26","nodeType":"YulFunctionCall","src":"2912:21:26"},"variableNames":[{"name":"result","nativeSrc":"2902:6:26","nodeType":"YulIdentifier","src":"2902:6:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2928,"isOffset":false,"isSlot":false,"src":"2836:3:26","valueSize":1},{"declaration":2931,"isOffset":false,"isSlot":false,"src":"2902:6:26","valueSize":1},{"declaration":2926,"isOffset":false,"isSlot":false,"src":"2884:4:26","valueSize":1}],"flags":["memory-safe"],"id":2933,"nodeType":"InlineAssembly","src":"2780:163:26"}]},"documentation":{"id":2924,"nodeType":"StructuredDocumentation","src":"2598:78:26","text":" @dev Derive the location of a mapping element from the key."},"id":2935,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"2690:13:26","nodeType":"FunctionDefinition","parameters":{"id":2929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2926,"mutability":"mutable","name":"slot","nameLocation":"2712:4:26","nodeType":"VariableDeclaration","scope":2935,"src":"2704:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2704:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2928,"mutability":"mutable","name":"key","nameLocation":"2726:3:26","nodeType":"VariableDeclaration","scope":2935,"src":"2718:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2927,"name":"address","nodeType":"ElementaryTypeName","src":"2718:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2703:27:26"},"returnParameters":{"id":2932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2931,"mutability":"mutable","name":"result","nameLocation":"2762:6:26","nodeType":"VariableDeclaration","scope":2935,"src":"2754:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2930,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2754:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2753:16:26"},"scope":3008,"src":"2681:268:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2946,"nodeType":"Block","src":"3124:173:26","statements":[{"AST":{"nativeSrc":"3159:132:26","nodeType":"YulBlock","src":"3159:132:26","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3180:4:26","nodeType":"YulLiteral","src":"3180:4:26","type":"","value":"0x00"},{"arguments":[{"arguments":[{"name":"key","nativeSrc":"3200:3:26","nodeType":"YulIdentifier","src":"3200:3:26"}],"functionName":{"name":"iszero","nativeSrc":"3193:6:26","nodeType":"YulIdentifier","src":"3193:6:26"},"nativeSrc":"3193:11:26","nodeType":"YulFunctionCall","src":"3193:11:26"}],"functionName":{"name":"iszero","nativeSrc":"3186:6:26","nodeType":"YulIdentifier","src":"3186:6:26"},"nativeSrc":"3186:19:26","nodeType":"YulFunctionCall","src":"3186:19:26"}],"functionName":{"name":"mstore","nativeSrc":"3173:6:26","nodeType":"YulIdentifier","src":"3173:6:26"},"nativeSrc":"3173:33:26","nodeType":"YulFunctionCall","src":"3173:33:26"},"nativeSrc":"3173:33:26","nodeType":"YulExpressionStatement","src":"3173:33:26"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3226:4:26","nodeType":"YulLiteral","src":"3226:4:26","type":"","value":"0x20"},{"name":"slot","nativeSrc":"3232:4:26","nodeType":"YulIdentifier","src":"3232:4:26"}],"functionName":{"name":"mstore","nativeSrc":"3219:6:26","nodeType":"YulIdentifier","src":"3219:6:26"},"nativeSrc":"3219:18:26","nodeType":"YulFunctionCall","src":"3219:18:26"},"nativeSrc":"3219:18:26","nodeType":"YulExpressionStatement","src":"3219:18:26"},{"nativeSrc":"3250:31:26","nodeType":"YulAssignment","src":"3250:31:26","value":{"arguments":[{"kind":"number","nativeSrc":"3270:4:26","nodeType":"YulLiteral","src":"3270:4:26","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3276:4:26","nodeType":"YulLiteral","src":"3276:4:26","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"3260:9:26","nodeType":"YulIdentifier","src":"3260:9:26"},"nativeSrc":"3260:21:26","nodeType":"YulFunctionCall","src":"3260:21:26"},"variableNames":[{"name":"result","nativeSrc":"3250:6:26","nodeType":"YulIdentifier","src":"3250:6:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2940,"isOffset":false,"isSlot":false,"src":"3200:3:26","valueSize":1},{"declaration":2943,"isOffset":false,"isSlot":false,"src":"3250:6:26","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"3232:4:26","valueSize":1}],"flags":["memory-safe"],"id":2945,"nodeType":"InlineAssembly","src":"3134:157:26"}]},"documentation":{"id":2936,"nodeType":"StructuredDocumentation","src":"2955:78:26","text":" @dev Derive the location of a mapping element from the key."},"id":2947,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"3047:13:26","nodeType":"FunctionDefinition","parameters":{"id":2941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2938,"mutability":"mutable","name":"slot","nameLocation":"3069:4:26","nodeType":"VariableDeclaration","scope":2947,"src":"3061:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2937,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3061:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2940,"mutability":"mutable","name":"key","nameLocation":"3080:3:26","nodeType":"VariableDeclaration","scope":2947,"src":"3075:8:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2939,"name":"bool","nodeType":"ElementaryTypeName","src":"3075:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3060:24:26"},"returnParameters":{"id":2944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2943,"mutability":"mutable","name":"result","nameLocation":"3116:6:26","nodeType":"VariableDeclaration","scope":2947,"src":"3108:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2942,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3108:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3107:16:26"},"scope":3008,"src":"3038:259:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2958,"nodeType":"Block","src":"3475:157:26","statements":[{"AST":{"nativeSrc":"3510:116:26","nodeType":"YulBlock","src":"3510:116:26","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3531:4:26","nodeType":"YulLiteral","src":"3531:4:26","type":"","value":"0x00"},{"name":"key","nativeSrc":"3537:3:26","nodeType":"YulIdentifier","src":"3537:3:26"}],"functionName":{"name":"mstore","nativeSrc":"3524:6:26","nodeType":"YulIdentifier","src":"3524:6:26"},"nativeSrc":"3524:17:26","nodeType":"YulFunctionCall","src":"3524:17:26"},"nativeSrc":"3524:17:26","nodeType":"YulExpressionStatement","src":"3524:17:26"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3561:4:26","nodeType":"YulLiteral","src":"3561:4:26","type":"","value":"0x20"},{"name":"slot","nativeSrc":"3567:4:26","nodeType":"YulIdentifier","src":"3567:4:26"}],"functionName":{"name":"mstore","nativeSrc":"3554:6:26","nodeType":"YulIdentifier","src":"3554:6:26"},"nativeSrc":"3554:18:26","nodeType":"YulFunctionCall","src":"3554:18:26"},"nativeSrc":"3554:18:26","nodeType":"YulExpressionStatement","src":"3554:18:26"},{"nativeSrc":"3585:31:26","nodeType":"YulAssignment","src":"3585:31:26","value":{"arguments":[{"kind":"number","nativeSrc":"3605:4:26","nodeType":"YulLiteral","src":"3605:4:26","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3611:4:26","nodeType":"YulLiteral","src":"3611:4:26","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"3595:9:26","nodeType":"YulIdentifier","src":"3595:9:26"},"nativeSrc":"3595:21:26","nodeType":"YulFunctionCall","src":"3595:21:26"},"variableNames":[{"name":"result","nativeSrc":"3585:6:26","nodeType":"YulIdentifier","src":"3585:6:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2952,"isOffset":false,"isSlot":false,"src":"3537:3:26","valueSize":1},{"declaration":2955,"isOffset":false,"isSlot":false,"src":"3585:6:26","valueSize":1},{"declaration":2950,"isOffset":false,"isSlot":false,"src":"3567:4:26","valueSize":1}],"flags":["memory-safe"],"id":2957,"nodeType":"InlineAssembly","src":"3485:141:26"}]},"documentation":{"id":2948,"nodeType":"StructuredDocumentation","src":"3303:78:26","text":" @dev Derive the location of a mapping element from the key."},"id":2959,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"3395:13:26","nodeType":"FunctionDefinition","parameters":{"id":2953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2950,"mutability":"mutable","name":"slot","nameLocation":"3417:4:26","nodeType":"VariableDeclaration","scope":2959,"src":"3409:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3409:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2952,"mutability":"mutable","name":"key","nameLocation":"3431:3:26","nodeType":"VariableDeclaration","scope":2959,"src":"3423:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2951,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3423:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3408:27:26"},"returnParameters":{"id":2956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2955,"mutability":"mutable","name":"result","nameLocation":"3467:6:26","nodeType":"VariableDeclaration","scope":2959,"src":"3459:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2954,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3459:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3458:16:26"},"scope":3008,"src":"3386:246:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2970,"nodeType":"Block","src":"3810:157:26","statements":[{"AST":{"nativeSrc":"3845:116:26","nodeType":"YulBlock","src":"3845:116:26","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3866:4:26","nodeType":"YulLiteral","src":"3866:4:26","type":"","value":"0x00"},{"name":"key","nativeSrc":"3872:3:26","nodeType":"YulIdentifier","src":"3872:3:26"}],"functionName":{"name":"mstore","nativeSrc":"3859:6:26","nodeType":"YulIdentifier","src":"3859:6:26"},"nativeSrc":"3859:17:26","nodeType":"YulFunctionCall","src":"3859:17:26"},"nativeSrc":"3859:17:26","nodeType":"YulExpressionStatement","src":"3859:17:26"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3896:4:26","nodeType":"YulLiteral","src":"3896:4:26","type":"","value":"0x20"},{"name":"slot","nativeSrc":"3902:4:26","nodeType":"YulIdentifier","src":"3902:4:26"}],"functionName":{"name":"mstore","nativeSrc":"3889:6:26","nodeType":"YulIdentifier","src":"3889:6:26"},"nativeSrc":"3889:18:26","nodeType":"YulFunctionCall","src":"3889:18:26"},"nativeSrc":"3889:18:26","nodeType":"YulExpressionStatement","src":"3889:18:26"},{"nativeSrc":"3920:31:26","nodeType":"YulAssignment","src":"3920:31:26","value":{"arguments":[{"kind":"number","nativeSrc":"3940:4:26","nodeType":"YulLiteral","src":"3940:4:26","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3946:4:26","nodeType":"YulLiteral","src":"3946:4:26","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"3930:9:26","nodeType":"YulIdentifier","src":"3930:9:26"},"nativeSrc":"3930:21:26","nodeType":"YulFunctionCall","src":"3930:21:26"},"variableNames":[{"name":"result","nativeSrc":"3920:6:26","nodeType":"YulIdentifier","src":"3920:6:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2964,"isOffset":false,"isSlot":false,"src":"3872:3:26","valueSize":1},{"declaration":2967,"isOffset":false,"isSlot":false,"src":"3920:6:26","valueSize":1},{"declaration":2962,"isOffset":false,"isSlot":false,"src":"3902:4:26","valueSize":1}],"flags":["memory-safe"],"id":2969,"nodeType":"InlineAssembly","src":"3820:141:26"}]},"documentation":{"id":2960,"nodeType":"StructuredDocumentation","src":"3638:78:26","text":" @dev Derive the location of a mapping element from the key."},"id":2971,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"3730:13:26","nodeType":"FunctionDefinition","parameters":{"id":2965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2962,"mutability":"mutable","name":"slot","nameLocation":"3752:4:26","nodeType":"VariableDeclaration","scope":2971,"src":"3744:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3744:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2964,"mutability":"mutable","name":"key","nameLocation":"3766:3:26","nodeType":"VariableDeclaration","scope":2971,"src":"3758:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2963,"name":"uint256","nodeType":"ElementaryTypeName","src":"3758:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3743:27:26"},"returnParameters":{"id":2968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2967,"mutability":"mutable","name":"result","nameLocation":"3802:6:26","nodeType":"VariableDeclaration","scope":2971,"src":"3794:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2966,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3794:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3793:16:26"},"scope":3008,"src":"3721:246:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2982,"nodeType":"Block","src":"4144:157:26","statements":[{"AST":{"nativeSrc":"4179:116:26","nodeType":"YulBlock","src":"4179:116:26","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4200:4:26","nodeType":"YulLiteral","src":"4200:4:26","type":"","value":"0x00"},{"name":"key","nativeSrc":"4206:3:26","nodeType":"YulIdentifier","src":"4206:3:26"}],"functionName":{"name":"mstore","nativeSrc":"4193:6:26","nodeType":"YulIdentifier","src":"4193:6:26"},"nativeSrc":"4193:17:26","nodeType":"YulFunctionCall","src":"4193:17:26"},"nativeSrc":"4193:17:26","nodeType":"YulExpressionStatement","src":"4193:17:26"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4230:4:26","nodeType":"YulLiteral","src":"4230:4:26","type":"","value":"0x20"},{"name":"slot","nativeSrc":"4236:4:26","nodeType":"YulIdentifier","src":"4236:4:26"}],"functionName":{"name":"mstore","nativeSrc":"4223:6:26","nodeType":"YulIdentifier","src":"4223:6:26"},"nativeSrc":"4223:18:26","nodeType":"YulFunctionCall","src":"4223:18:26"},"nativeSrc":"4223:18:26","nodeType":"YulExpressionStatement","src":"4223:18:26"},{"nativeSrc":"4254:31:26","nodeType":"YulAssignment","src":"4254:31:26","value":{"arguments":[{"kind":"number","nativeSrc":"4274:4:26","nodeType":"YulLiteral","src":"4274:4:26","type":"","value":"0x00"},{"kind":"number","nativeSrc":"4280:4:26","nodeType":"YulLiteral","src":"4280:4:26","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"4264:9:26","nodeType":"YulIdentifier","src":"4264:9:26"},"nativeSrc":"4264:21:26","nodeType":"YulFunctionCall","src":"4264:21:26"},"variableNames":[{"name":"result","nativeSrc":"4254:6:26","nodeType":"YulIdentifier","src":"4254:6:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2976,"isOffset":false,"isSlot":false,"src":"4206:3:26","valueSize":1},{"declaration":2979,"isOffset":false,"isSlot":false,"src":"4254:6:26","valueSize":1},{"declaration":2974,"isOffset":false,"isSlot":false,"src":"4236:4:26","valueSize":1}],"flags":["memory-safe"],"id":2981,"nodeType":"InlineAssembly","src":"4154:141:26"}]},"documentation":{"id":2972,"nodeType":"StructuredDocumentation","src":"3973:78:26","text":" @dev Derive the location of a mapping element from the key."},"id":2983,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"4065:13:26","nodeType":"FunctionDefinition","parameters":{"id":2977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2974,"mutability":"mutable","name":"slot","nameLocation":"4087:4:26","nodeType":"VariableDeclaration","scope":2983,"src":"4079:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2973,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4079:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2976,"mutability":"mutable","name":"key","nameLocation":"4100:3:26","nodeType":"VariableDeclaration","scope":2983,"src":"4093:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2975,"name":"int256","nodeType":"ElementaryTypeName","src":"4093:6:26","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4078:26:26"},"returnParameters":{"id":2980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2979,"mutability":"mutable","name":"result","nameLocation":"4136:6:26","nodeType":"VariableDeclaration","scope":2983,"src":"4128:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4128:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4127:16:26"},"scope":3008,"src":"4056:245:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2994,"nodeType":"Block","src":"4485:326:26","statements":[{"AST":{"nativeSrc":"4520:285:26","nodeType":"YulBlock","src":"4520:285:26","statements":[{"nativeSrc":"4534:24:26","nodeType":"YulVariableDeclaration","src":"4534:24:26","value":{"arguments":[{"name":"key","nativeSrc":"4554:3:26","nodeType":"YulIdentifier","src":"4554:3:26"}],"functionName":{"name":"mload","nativeSrc":"4548:5:26","nodeType":"YulIdentifier","src":"4548:5:26"},"nativeSrc":"4548:10:26","nodeType":"YulFunctionCall","src":"4548:10:26"},"variables":[{"name":"length","nativeSrc":"4538:6:26","nodeType":"YulTypedName","src":"4538:6:26","type":""}]},{"nativeSrc":"4571:27:26","nodeType":"YulVariableDeclaration","src":"4571:27:26","value":{"arguments":[{"name":"key","nativeSrc":"4588:3:26","nodeType":"YulIdentifier","src":"4588:3:26"},{"kind":"number","nativeSrc":"4593:4:26","nodeType":"YulLiteral","src":"4593:4:26","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4584:3:26","nodeType":"YulIdentifier","src":"4584:3:26"},"nativeSrc":"4584:14:26","nodeType":"YulFunctionCall","src":"4584:14:26"},"variables":[{"name":"begin","nativeSrc":"4575:5:26","nodeType":"YulTypedName","src":"4575:5:26","type":""}]},{"nativeSrc":"4611:29:26","nodeType":"YulVariableDeclaration","src":"4611:29:26","value":{"arguments":[{"name":"begin","nativeSrc":"4626:5:26","nodeType":"YulIdentifier","src":"4626:5:26"},{"name":"length","nativeSrc":"4633:6:26","nodeType":"YulIdentifier","src":"4633:6:26"}],"functionName":{"name":"add","nativeSrc":"4622:3:26","nodeType":"YulIdentifier","src":"4622:3:26"},"nativeSrc":"4622:18:26","nodeType":"YulFunctionCall","src":"4622:18:26"},"variables":[{"name":"end","nativeSrc":"4615:3:26","nodeType":"YulTypedName","src":"4615:3:26","type":""}]},{"nativeSrc":"4653:23:26","nodeType":"YulVariableDeclaration","src":"4653:23:26","value":{"arguments":[{"name":"end","nativeSrc":"4672:3:26","nodeType":"YulIdentifier","src":"4672:3:26"}],"functionName":{"name":"mload","nativeSrc":"4666:5:26","nodeType":"YulIdentifier","src":"4666:5:26"},"nativeSrc":"4666:10:26","nodeType":"YulFunctionCall","src":"4666:10:26"},"variables":[{"name":"cache","nativeSrc":"4657:5:26","nodeType":"YulTypedName","src":"4657:5:26","type":""}]},{"expression":{"arguments":[{"name":"end","nativeSrc":"4696:3:26","nodeType":"YulIdentifier","src":"4696:3:26"},{"name":"slot","nativeSrc":"4701:4:26","nodeType":"YulIdentifier","src":"4701:4:26"}],"functionName":{"name":"mstore","nativeSrc":"4689:6:26","nodeType":"YulIdentifier","src":"4689:6:26"},"nativeSrc":"4689:17:26","nodeType":"YulFunctionCall","src":"4689:17:26"},"nativeSrc":"4689:17:26","nodeType":"YulExpressionStatement","src":"4689:17:26"},{"nativeSrc":"4719:45:26","nodeType":"YulAssignment","src":"4719:45:26","value":{"arguments":[{"name":"begin","nativeSrc":"4739:5:26","nodeType":"YulIdentifier","src":"4739:5:26"},{"arguments":[{"name":"length","nativeSrc":"4750:6:26","nodeType":"YulIdentifier","src":"4750:6:26"},{"kind":"number","nativeSrc":"4758:4:26","nodeType":"YulLiteral","src":"4758:4:26","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4746:3:26","nodeType":"YulIdentifier","src":"4746:3:26"},"nativeSrc":"4746:17:26","nodeType":"YulFunctionCall","src":"4746:17:26"}],"functionName":{"name":"keccak256","nativeSrc":"4729:9:26","nodeType":"YulIdentifier","src":"4729:9:26"},"nativeSrc":"4729:35:26","nodeType":"YulFunctionCall","src":"4729:35:26"},"variableNames":[{"name":"result","nativeSrc":"4719:6:26","nodeType":"YulIdentifier","src":"4719:6:26"}]},{"expression":{"arguments":[{"name":"end","nativeSrc":"4784:3:26","nodeType":"YulIdentifier","src":"4784:3:26"},{"name":"cache","nativeSrc":"4789:5:26","nodeType":"YulIdentifier","src":"4789:5:26"}],"functionName":{"name":"mstore","nativeSrc":"4777:6:26","nodeType":"YulIdentifier","src":"4777:6:26"},"nativeSrc":"4777:18:26","nodeType":"YulFunctionCall","src":"4777:18:26"},"nativeSrc":"4777:18:26","nodeType":"YulExpressionStatement","src":"4777:18:26"}]},"evmVersion":"cancun","externalReferences":[{"declaration":2988,"isOffset":false,"isSlot":false,"src":"4554:3:26","valueSize":1},{"declaration":2988,"isOffset":false,"isSlot":false,"src":"4588:3:26","valueSize":1},{"declaration":2991,"isOffset":false,"isSlot":false,"src":"4719:6:26","valueSize":1},{"declaration":2986,"isOffset":false,"isSlot":false,"src":"4701:4:26","valueSize":1}],"flags":["memory-safe"],"id":2993,"nodeType":"InlineAssembly","src":"4495:310:26"}]},"documentation":{"id":2984,"nodeType":"StructuredDocumentation","src":"4307:78:26","text":" @dev Derive the location of a mapping element from the key."},"id":2995,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"4399:13:26","nodeType":"FunctionDefinition","parameters":{"id":2989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2986,"mutability":"mutable","name":"slot","nameLocation":"4421:4:26","nodeType":"VariableDeclaration","scope":2995,"src":"4413:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2985,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4413:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2988,"mutability":"mutable","name":"key","nameLocation":"4441:3:26","nodeType":"VariableDeclaration","scope":2995,"src":"4427:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2987,"name":"string","nodeType":"ElementaryTypeName","src":"4427:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4412:33:26"},"returnParameters":{"id":2992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2991,"mutability":"mutable","name":"result","nameLocation":"4477:6:26","nodeType":"VariableDeclaration","scope":2995,"src":"4469:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2990,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4469:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4468:16:26"},"scope":3008,"src":"4390:421:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3006,"nodeType":"Block","src":"4994:326:26","statements":[{"AST":{"nativeSrc":"5029:285:26","nodeType":"YulBlock","src":"5029:285:26","statements":[{"nativeSrc":"5043:24:26","nodeType":"YulVariableDeclaration","src":"5043:24:26","value":{"arguments":[{"name":"key","nativeSrc":"5063:3:26","nodeType":"YulIdentifier","src":"5063:3:26"}],"functionName":{"name":"mload","nativeSrc":"5057:5:26","nodeType":"YulIdentifier","src":"5057:5:26"},"nativeSrc":"5057:10:26","nodeType":"YulFunctionCall","src":"5057:10:26"},"variables":[{"name":"length","nativeSrc":"5047:6:26","nodeType":"YulTypedName","src":"5047:6:26","type":""}]},{"nativeSrc":"5080:27:26","nodeType":"YulVariableDeclaration","src":"5080:27:26","value":{"arguments":[{"name":"key","nativeSrc":"5097:3:26","nodeType":"YulIdentifier","src":"5097:3:26"},{"kind":"number","nativeSrc":"5102:4:26","nodeType":"YulLiteral","src":"5102:4:26","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5093:3:26","nodeType":"YulIdentifier","src":"5093:3:26"},"nativeSrc":"5093:14:26","nodeType":"YulFunctionCall","src":"5093:14:26"},"variables":[{"name":"begin","nativeSrc":"5084:5:26","nodeType":"YulTypedName","src":"5084:5:26","type":""}]},{"nativeSrc":"5120:29:26","nodeType":"YulVariableDeclaration","src":"5120:29:26","value":{"arguments":[{"name":"begin","nativeSrc":"5135:5:26","nodeType":"YulIdentifier","src":"5135:5:26"},{"name":"length","nativeSrc":"5142:6:26","nodeType":"YulIdentifier","src":"5142:6:26"}],"functionName":{"name":"add","nativeSrc":"5131:3:26","nodeType":"YulIdentifier","src":"5131:3:26"},"nativeSrc":"5131:18:26","nodeType":"YulFunctionCall","src":"5131:18:26"},"variables":[{"name":"end","nativeSrc":"5124:3:26","nodeType":"YulTypedName","src":"5124:3:26","type":""}]},{"nativeSrc":"5162:23:26","nodeType":"YulVariableDeclaration","src":"5162:23:26","value":{"arguments":[{"name":"end","nativeSrc":"5181:3:26","nodeType":"YulIdentifier","src":"5181:3:26"}],"functionName":{"name":"mload","nativeSrc":"5175:5:26","nodeType":"YulIdentifier","src":"5175:5:26"},"nativeSrc":"5175:10:26","nodeType":"YulFunctionCall","src":"5175:10:26"},"variables":[{"name":"cache","nativeSrc":"5166:5:26","nodeType":"YulTypedName","src":"5166:5:26","type":""}]},{"expression":{"arguments":[{"name":"end","nativeSrc":"5205:3:26","nodeType":"YulIdentifier","src":"5205:3:26"},{"name":"slot","nativeSrc":"5210:4:26","nodeType":"YulIdentifier","src":"5210:4:26"}],"functionName":{"name":"mstore","nativeSrc":"5198:6:26","nodeType":"YulIdentifier","src":"5198:6:26"},"nativeSrc":"5198:17:26","nodeType":"YulFunctionCall","src":"5198:17:26"},"nativeSrc":"5198:17:26","nodeType":"YulExpressionStatement","src":"5198:17:26"},{"nativeSrc":"5228:45:26","nodeType":"YulAssignment","src":"5228:45:26","value":{"arguments":[{"name":"begin","nativeSrc":"5248:5:26","nodeType":"YulIdentifier","src":"5248:5:26"},{"arguments":[{"name":"length","nativeSrc":"5259:6:26","nodeType":"YulIdentifier","src":"5259:6:26"},{"kind":"number","nativeSrc":"5267:4:26","nodeType":"YulLiteral","src":"5267:4:26","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5255:3:26","nodeType":"YulIdentifier","src":"5255:3:26"},"nativeSrc":"5255:17:26","nodeType":"YulFunctionCall","src":"5255:17:26"}],"functionName":{"name":"keccak256","nativeSrc":"5238:9:26","nodeType":"YulIdentifier","src":"5238:9:26"},"nativeSrc":"5238:35:26","nodeType":"YulFunctionCall","src":"5238:35:26"},"variableNames":[{"name":"result","nativeSrc":"5228:6:26","nodeType":"YulIdentifier","src":"5228:6:26"}]},{"expression":{"arguments":[{"name":"end","nativeSrc":"5293:3:26","nodeType":"YulIdentifier","src":"5293:3:26"},{"name":"cache","nativeSrc":"5298:5:26","nodeType":"YulIdentifier","src":"5298:5:26"}],"functionName":{"name":"mstore","nativeSrc":"5286:6:26","nodeType":"YulIdentifier","src":"5286:6:26"},"nativeSrc":"5286:18:26","nodeType":"YulFunctionCall","src":"5286:18:26"},"nativeSrc":"5286:18:26","nodeType":"YulExpressionStatement","src":"5286:18:26"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3000,"isOffset":false,"isSlot":false,"src":"5063:3:26","valueSize":1},{"declaration":3000,"isOffset":false,"isSlot":false,"src":"5097:3:26","valueSize":1},{"declaration":3003,"isOffset":false,"isSlot":false,"src":"5228:6:26","valueSize":1},{"declaration":2998,"isOffset":false,"isSlot":false,"src":"5210:4:26","valueSize":1}],"flags":["memory-safe"],"id":3005,"nodeType":"InlineAssembly","src":"5004:310:26"}]},"documentation":{"id":2996,"nodeType":"StructuredDocumentation","src":"4817:78:26","text":" @dev Derive the location of a mapping element from the key."},"id":3007,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"4909:13:26","nodeType":"FunctionDefinition","parameters":{"id":3001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2998,"mutability":"mutable","name":"slot","nameLocation":"4931:4:26","nodeType":"VariableDeclaration","scope":3007,"src":"4923:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2997,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4923:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3000,"mutability":"mutable","name":"key","nameLocation":"4950:3:26","nodeType":"VariableDeclaration","scope":3007,"src":"4937:16:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2999,"name":"bytes","nodeType":"ElementaryTypeName","src":"4937:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4922:32:26"},"returnParameters":{"id":3004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3003,"mutability":"mutable","name":"result","nameLocation":"4986:6:26","nodeType":"VariableDeclaration","scope":3007,"src":"4978:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3002,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4978:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4977:16:26"},"scope":3008,"src":"4900:420:26","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3009,"src":"1599:3723:26","usedErrors":[],"usedEvents":[]}],"src":"199:5124:26"},"id":26},"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[3132]},"id":3133,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3010,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:27"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":3011,"nodeType":"StructuredDocumentation","src":"219:1187:27","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(newImplementation.code.length > 0);\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":3132,"linearizedBaseContracts":[3132],"name":"StorageSlot","nameLocation":"1415:11:27","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":3014,"members":[{"constant":false,"id":3013,"mutability":"mutable","name":"value","nameLocation":"1470:5:27","nodeType":"VariableDeclaration","scope":3014,"src":"1462:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3012,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:27","nodeType":"StructDefinition","scope":3132,"src":"1433:49:27","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":3017,"members":[{"constant":false,"id":3016,"mutability":"mutable","name":"value","nameLocation":"1522:5:27","nodeType":"VariableDeclaration","scope":3017,"src":"1517:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3015,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:27","nodeType":"StructDefinition","scope":3132,"src":"1488:46:27","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":3020,"members":[{"constant":false,"id":3019,"mutability":"mutable","name":"value","nameLocation":"1577:5:27","nodeType":"VariableDeclaration","scope":3020,"src":"1569:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3018,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:27","nodeType":"StructDefinition","scope":3132,"src":"1540:49:27","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":3023,"members":[{"constant":false,"id":3022,"mutability":"mutable","name":"value","nameLocation":"1632:5:27","nodeType":"VariableDeclaration","scope":3023,"src":"1624:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3021,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:27","nodeType":"StructDefinition","scope":3132,"src":"1595:49:27","visibility":"public"},{"canonicalName":"StorageSlot.Int256Slot","id":3026,"members":[{"constant":false,"id":3025,"mutability":"mutable","name":"value","nameLocation":"1685:5:27","nodeType":"VariableDeclaration","scope":3026,"src":"1678:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3024,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:27","nodeType":"StructDefinition","scope":3132,"src":"1650:47:27","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":3029,"members":[{"constant":false,"id":3028,"mutability":"mutable","name":"value","nameLocation":"1738:5:27","nodeType":"VariableDeclaration","scope":3029,"src":"1731:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3027,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:27","nodeType":"StructDefinition","scope":3132,"src":"1703:47:27","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":3032,"members":[{"constant":false,"id":3031,"mutability":"mutable","name":"value","nameLocation":"1789:5:27","nodeType":"VariableDeclaration","scope":3032,"src":"1783:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3030,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:27","nodeType":"StructDefinition","scope":3132,"src":"1756:45:27","visibility":"public"},{"body":{"id":3042,"nodeType":"Block","src":"1983:79:27","statements":[{"AST":{"nativeSrc":"2018:38:27","nodeType":"YulBlock","src":"2018:38:27","statements":[{"nativeSrc":"2032:14:27","nodeType":"YulAssignment","src":"2032:14:27","value":{"name":"slot","nativeSrc":"2042:4:27","nodeType":"YulIdentifier","src":"2042:4:27"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:27","nodeType":"YulIdentifier","src":"2032:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3039,"isOffset":false,"isSlot":true,"src":"2032:6:27","suffix":"slot","valueSize":1},{"declaration":3035,"isOffset":false,"isSlot":false,"src":"2042:4:27","valueSize":1}],"flags":["memory-safe"],"id":3041,"nodeType":"InlineAssembly","src":"1993:63:27"}]},"documentation":{"id":3033,"nodeType":"StructuredDocumentation","src":"1807:87:27","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":3043,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:27","nodeType":"FunctionDefinition","parameters":{"id":3036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3035,"mutability":"mutable","name":"slot","nameLocation":"1931:4:27","nodeType":"VariableDeclaration","scope":3043,"src":"1923:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3034,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:27"},"returnParameters":{"id":3040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3039,"mutability":"mutable","name":"r","nameLocation":"1980:1:27","nodeType":"VariableDeclaration","scope":3043,"src":"1960:21:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3014_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":3038,"nodeType":"UserDefinedTypeName","pathNode":{"id":3037,"name":"AddressSlot","nameLocations":["1960:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":3014,"src":"1960:11:27"},"referencedDeclaration":3014,"src":"1960:11:27","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3014_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:27"},"scope":3132,"src":"1899:163:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3053,"nodeType":"Block","src":"2243:79:27","statements":[{"AST":{"nativeSrc":"2278:38:27","nodeType":"YulBlock","src":"2278:38:27","statements":[{"nativeSrc":"2292:14:27","nodeType":"YulAssignment","src":"2292:14:27","value":{"name":"slot","nativeSrc":"2302:4:27","nodeType":"YulIdentifier","src":"2302:4:27"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:27","nodeType":"YulIdentifier","src":"2292:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3050,"isOffset":false,"isSlot":true,"src":"2292:6:27","suffix":"slot","valueSize":1},{"declaration":3046,"isOffset":false,"isSlot":false,"src":"2302:4:27","valueSize":1}],"flags":["memory-safe"],"id":3052,"nodeType":"InlineAssembly","src":"2253:63:27"}]},"documentation":{"id":3044,"nodeType":"StructuredDocumentation","src":"2068:86:27","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"id":3054,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:27","nodeType":"FunctionDefinition","parameters":{"id":3047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3046,"mutability":"mutable","name":"slot","nameLocation":"2191:4:27","nodeType":"VariableDeclaration","scope":3054,"src":"2183:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3045,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:27"},"returnParameters":{"id":3051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3050,"mutability":"mutable","name":"r","nameLocation":"2240:1:27","nodeType":"VariableDeclaration","scope":3054,"src":"2220:21:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$3017_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":3049,"nodeType":"UserDefinedTypeName","pathNode":{"id":3048,"name":"BooleanSlot","nameLocations":["2220:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":3017,"src":"2220:11:27"},"referencedDeclaration":3017,"src":"2220:11:27","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$3017_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:27"},"scope":3132,"src":"2159:163:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3064,"nodeType":"Block","src":"2503:79:27","statements":[{"AST":{"nativeSrc":"2538:38:27","nodeType":"YulBlock","src":"2538:38:27","statements":[{"nativeSrc":"2552:14:27","nodeType":"YulAssignment","src":"2552:14:27","value":{"name":"slot","nativeSrc":"2562:4:27","nodeType":"YulIdentifier","src":"2562:4:27"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:27","nodeType":"YulIdentifier","src":"2552:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3061,"isOffset":false,"isSlot":true,"src":"2552:6:27","suffix":"slot","valueSize":1},{"declaration":3057,"isOffset":false,"isSlot":false,"src":"2562:4:27","valueSize":1}],"flags":["memory-safe"],"id":3063,"nodeType":"InlineAssembly","src":"2513:63:27"}]},"documentation":{"id":3055,"nodeType":"StructuredDocumentation","src":"2328:86:27","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"id":3065,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:27","nodeType":"FunctionDefinition","parameters":{"id":3058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3057,"mutability":"mutable","name":"slot","nameLocation":"2451:4:27","nodeType":"VariableDeclaration","scope":3065,"src":"2443:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3056,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:27"},"returnParameters":{"id":3062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3061,"mutability":"mutable","name":"r","nameLocation":"2500:1:27","nodeType":"VariableDeclaration","scope":3065,"src":"2480:21:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$3020_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":3060,"nodeType":"UserDefinedTypeName","pathNode":{"id":3059,"name":"Bytes32Slot","nameLocations":["2480:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":3020,"src":"2480:11:27"},"referencedDeclaration":3020,"src":"2480:11:27","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$3020_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:27"},"scope":3132,"src":"2419:163:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3075,"nodeType":"Block","src":"2763:79:27","statements":[{"AST":{"nativeSrc":"2798:38:27","nodeType":"YulBlock","src":"2798:38:27","statements":[{"nativeSrc":"2812:14:27","nodeType":"YulAssignment","src":"2812:14:27","value":{"name":"slot","nativeSrc":"2822:4:27","nodeType":"YulIdentifier","src":"2822:4:27"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:27","nodeType":"YulIdentifier","src":"2812:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3072,"isOffset":false,"isSlot":true,"src":"2812:6:27","suffix":"slot","valueSize":1},{"declaration":3068,"isOffset":false,"isSlot":false,"src":"2822:4:27","valueSize":1}],"flags":["memory-safe"],"id":3074,"nodeType":"InlineAssembly","src":"2773:63:27"}]},"documentation":{"id":3066,"nodeType":"StructuredDocumentation","src":"2588:86:27","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"id":3076,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:27","nodeType":"FunctionDefinition","parameters":{"id":3069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3068,"mutability":"mutable","name":"slot","nameLocation":"2711:4:27","nodeType":"VariableDeclaration","scope":3076,"src":"2703:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3067,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:27"},"returnParameters":{"id":3073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3072,"mutability":"mutable","name":"r","nameLocation":"2760:1:27","nodeType":"VariableDeclaration","scope":3076,"src":"2740:21:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3023_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":3071,"nodeType":"UserDefinedTypeName","pathNode":{"id":3070,"name":"Uint256Slot","nameLocations":["2740:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":3023,"src":"2740:11:27"},"referencedDeclaration":3023,"src":"2740:11:27","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3023_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:27"},"scope":3132,"src":"2679:163:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3086,"nodeType":"Block","src":"3020:79:27","statements":[{"AST":{"nativeSrc":"3055:38:27","nodeType":"YulBlock","src":"3055:38:27","statements":[{"nativeSrc":"3069:14:27","nodeType":"YulAssignment","src":"3069:14:27","value":{"name":"slot","nativeSrc":"3079:4:27","nodeType":"YulIdentifier","src":"3079:4:27"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:27","nodeType":"YulIdentifier","src":"3069:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3083,"isOffset":false,"isSlot":true,"src":"3069:6:27","suffix":"slot","valueSize":1},{"declaration":3079,"isOffset":false,"isSlot":false,"src":"3079:4:27","valueSize":1}],"flags":["memory-safe"],"id":3085,"nodeType":"InlineAssembly","src":"3030:63:27"}]},"documentation":{"id":3077,"nodeType":"StructuredDocumentation","src":"2848:85:27","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"id":3087,"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:27","nodeType":"FunctionDefinition","parameters":{"id":3080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3079,"mutability":"mutable","name":"slot","nameLocation":"2969:4:27","nodeType":"VariableDeclaration","scope":3087,"src":"2961:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3078,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:27"},"returnParameters":{"id":3084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3083,"mutability":"mutable","name":"r","nameLocation":"3017:1:27","nodeType":"VariableDeclaration","scope":3087,"src":"2998:20:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$3026_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":3082,"nodeType":"UserDefinedTypeName","pathNode":{"id":3081,"name":"Int256Slot","nameLocations":["2998:10:27"],"nodeType":"IdentifierPath","referencedDeclaration":3026,"src":"2998:10:27"},"referencedDeclaration":3026,"src":"2998:10:27","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$3026_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:27"},"scope":3132,"src":"2938:161:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3097,"nodeType":"Block","src":"3277:79:27","statements":[{"AST":{"nativeSrc":"3312:38:27","nodeType":"YulBlock","src":"3312:38:27","statements":[{"nativeSrc":"3326:14:27","nodeType":"YulAssignment","src":"3326:14:27","value":{"name":"slot","nativeSrc":"3336:4:27","nodeType":"YulIdentifier","src":"3336:4:27"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:27","nodeType":"YulIdentifier","src":"3326:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3094,"isOffset":false,"isSlot":true,"src":"3326:6:27","suffix":"slot","valueSize":1},{"declaration":3090,"isOffset":false,"isSlot":false,"src":"3336:4:27","valueSize":1}],"flags":["memory-safe"],"id":3096,"nodeType":"InlineAssembly","src":"3287:63:27"}]},"documentation":{"id":3088,"nodeType":"StructuredDocumentation","src":"3105:85:27","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"id":3098,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:27","nodeType":"FunctionDefinition","parameters":{"id":3091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3090,"mutability":"mutable","name":"slot","nameLocation":"3226:4:27","nodeType":"VariableDeclaration","scope":3098,"src":"3218:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3089,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:27"},"returnParameters":{"id":3095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3094,"mutability":"mutable","name":"r","nameLocation":"3274:1:27","nodeType":"VariableDeclaration","scope":3098,"src":"3255:20:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3029_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":3093,"nodeType":"UserDefinedTypeName","pathNode":{"id":3092,"name":"StringSlot","nameLocations":["3255:10:27"],"nodeType":"IdentifierPath","referencedDeclaration":3029,"src":"3255:10:27"},"referencedDeclaration":3029,"src":"3255:10:27","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3029_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:27"},"scope":3132,"src":"3195:161:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3108,"nodeType":"Block","src":"3558:85:27","statements":[{"AST":{"nativeSrc":"3593:44:27","nodeType":"YulBlock","src":"3593:44:27","statements":[{"nativeSrc":"3607:20:27","nodeType":"YulAssignment","src":"3607:20:27","value":{"name":"store.slot","nativeSrc":"3617:10:27","nodeType":"YulIdentifier","src":"3617:10:27"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:27","nodeType":"YulIdentifier","src":"3607:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3105,"isOffset":false,"isSlot":true,"src":"3607:6:27","suffix":"slot","valueSize":1},{"declaration":3101,"isOffset":false,"isSlot":true,"src":"3617:10:27","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":3107,"nodeType":"InlineAssembly","src":"3568:69:27"}]},"documentation":{"id":3099,"nodeType":"StructuredDocumentation","src":"3362:101:27","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":3109,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:27","nodeType":"FunctionDefinition","parameters":{"id":3102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3101,"mutability":"mutable","name":"store","nameLocation":"3506:5:27","nodeType":"VariableDeclaration","scope":3109,"src":"3491:20:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3100,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:27"},"returnParameters":{"id":3106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3105,"mutability":"mutable","name":"r","nameLocation":"3555:1:27","nodeType":"VariableDeclaration","scope":3109,"src":"3536:20:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3029_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":3104,"nodeType":"UserDefinedTypeName","pathNode":{"id":3103,"name":"StringSlot","nameLocations":["3536:10:27"],"nodeType":"IdentifierPath","referencedDeclaration":3029,"src":"3536:10:27"},"referencedDeclaration":3029,"src":"3536:10:27","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3029_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:27"},"scope":3132,"src":"3468:175:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3119,"nodeType":"Block","src":"3818:79:27","statements":[{"AST":{"nativeSrc":"3853:38:27","nodeType":"YulBlock","src":"3853:38:27","statements":[{"nativeSrc":"3867:14:27","nodeType":"YulAssignment","src":"3867:14:27","value":{"name":"slot","nativeSrc":"3877:4:27","nodeType":"YulIdentifier","src":"3877:4:27"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:27","nodeType":"YulIdentifier","src":"3867:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3116,"isOffset":false,"isSlot":true,"src":"3867:6:27","suffix":"slot","valueSize":1},{"declaration":3112,"isOffset":false,"isSlot":false,"src":"3877:4:27","valueSize":1}],"flags":["memory-safe"],"id":3118,"nodeType":"InlineAssembly","src":"3828:63:27"}]},"documentation":{"id":3110,"nodeType":"StructuredDocumentation","src":"3649:84:27","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"id":3120,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:27","nodeType":"FunctionDefinition","parameters":{"id":3113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3112,"mutability":"mutable","name":"slot","nameLocation":"3768:4:27","nodeType":"VariableDeclaration","scope":3120,"src":"3760:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3111,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:27"},"returnParameters":{"id":3117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3116,"mutability":"mutable","name":"r","nameLocation":"3815:1:27","nodeType":"VariableDeclaration","scope":3120,"src":"3797:19:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3032_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":3115,"nodeType":"UserDefinedTypeName","pathNode":{"id":3114,"name":"BytesSlot","nameLocations":["3797:9:27"],"nodeType":"IdentifierPath","referencedDeclaration":3032,"src":"3797:9:27"},"referencedDeclaration":3032,"src":"3797:9:27","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3032_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:27"},"scope":3132,"src":"3738:159:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3130,"nodeType":"Block","src":"4094:85:27","statements":[{"AST":{"nativeSrc":"4129:44:27","nodeType":"YulBlock","src":"4129:44:27","statements":[{"nativeSrc":"4143:20:27","nodeType":"YulAssignment","src":"4143:20:27","value":{"name":"store.slot","nativeSrc":"4153:10:27","nodeType":"YulIdentifier","src":"4153:10:27"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:27","nodeType":"YulIdentifier","src":"4143:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3127,"isOffset":false,"isSlot":true,"src":"4143:6:27","suffix":"slot","valueSize":1},{"declaration":3123,"isOffset":false,"isSlot":true,"src":"4153:10:27","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":3129,"nodeType":"InlineAssembly","src":"4104:69:27"}]},"documentation":{"id":3121,"nodeType":"StructuredDocumentation","src":"3903:99:27","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":3131,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:27","nodeType":"FunctionDefinition","parameters":{"id":3124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3123,"mutability":"mutable","name":"store","nameLocation":"4043:5:27","nodeType":"VariableDeclaration","scope":3131,"src":"4029:19:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3122,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:27"},"returnParameters":{"id":3128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3127,"mutability":"mutable","name":"r","nameLocation":"4091:1:27","nodeType":"VariableDeclaration","scope":3131,"src":"4073:19:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3032_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":3126,"nodeType":"UserDefinedTypeName","pathNode":{"id":3125,"name":"BytesSlot","nameLocations":["4073:9:27"],"nodeType":"IdentifierPath","referencedDeclaration":3032,"src":"4073:9:27"},"referencedDeclaration":3032,"src":"4073:9:27","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3032_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:27"},"scope":3132,"src":"4007:172:27","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3133,"src":"1407:2774:27","usedErrors":[],"usedEvents":[]}],"src":"193:3989:27"},"id":27},"npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/TransientSlot.sol","exportedSymbols":{"TransientSlot":[3331]},"id":3332,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3134,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"197:24:28"},{"abstract":false,"baseContracts":[],"canonicalName":"TransientSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":3135,"nodeType":"StructuredDocumentation","src":"223:939:28","text":" @dev Library for reading and writing value-types to specific transient storage slots.\n Transient slots are often used to store temporary values that are removed after the current transaction.\n This library helps with reading and writing to such slots without the need for inline assembly.\n  * Example reading and writing values using transient storage:\n ```solidity\n contract Lock {\n     using TransientSlot for *;\n     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n     bytes32 internal constant _LOCK_SLOT = 0xf4678858b2b588224636b8522b729e7722d32fc491da849ed75b3fdf3c84f542;\n     modifier locked() {\n         require(!_LOCK_SLOT.asBoolean().tload());\n         _LOCK_SLOT.asBoolean().tstore(true);\n         _;\n         _LOCK_SLOT.asBoolean().tstore(false);\n     }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":3331,"linearizedBaseContracts":[3331],"name":"TransientSlot","nameLocation":"1171:13:28","nodeType":"ContractDefinition","nodes":[{"canonicalName":"TransientSlot.AddressSlot","id":3137,"name":"AddressSlot","nameLocation":"1272:11:28","nodeType":"UserDefinedValueTypeDefinition","src":"1267:28:28","underlyingType":{"id":3136,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1287:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":3151,"nodeType":"Block","src":"1439:46:28","statements":[{"expression":{"arguments":[{"id":3148,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3140,"src":"1473:4:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3146,"name":"AddressSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"1456:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressSlot_$3137_$","typeString":"type(TransientSlot.AddressSlot)"}},"id":3147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1468:4:28","memberName":"wrap","nodeType":"MemberAccess","src":"1456:16:28","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressSlot_$3137_$","typeString":"function (bytes32) pure returns (TransientSlot.AddressSlot)"}},"id":3149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1456:22:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$3137","typeString":"TransientSlot.AddressSlot"}},"functionReturnParameters":3145,"id":3150,"nodeType":"Return","src":"1449:29:28"}]},"documentation":{"id":3138,"nodeType":"StructuredDocumentation","src":"1301:64:28","text":" @dev Cast an arbitrary slot to a AddressSlot."},"id":3152,"implemented":true,"kind":"function","modifiers":[],"name":"asAddress","nameLocation":"1379:9:28","nodeType":"FunctionDefinition","parameters":{"id":3141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3140,"mutability":"mutable","name":"slot","nameLocation":"1397:4:28","nodeType":"VariableDeclaration","scope":3152,"src":"1389:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3139,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1389:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1388:14:28"},"returnParameters":{"id":3145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3144,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3152,"src":"1426:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$3137","typeString":"TransientSlot.AddressSlot"},"typeName":{"id":3143,"nodeType":"UserDefinedTypeName","pathNode":{"id":3142,"name":"AddressSlot","nameLocations":["1426:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3137,"src":"1426:11:28"},"referencedDeclaration":3137,"src":"1426:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$3137","typeString":"TransientSlot.AddressSlot"}},"visibility":"internal"}],"src":"1425:13:28"},"scope":3331,"src":"1370:115:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"TransientSlot.BooleanSlot","id":3154,"name":"BooleanSlot","nameLocation":"1568:11:28","nodeType":"UserDefinedValueTypeDefinition","src":"1563:28:28","underlyingType":{"id":3153,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1583:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":3168,"nodeType":"Block","src":"1735:46:28","statements":[{"expression":{"arguments":[{"id":3165,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"1769:4:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3163,"name":"BooleanSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"1752:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BooleanSlot_$3154_$","typeString":"type(TransientSlot.BooleanSlot)"}},"id":3164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1764:4:28","memberName":"wrap","nodeType":"MemberAccess","src":"1752:16:28","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$3154_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1752:22:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$3154","typeString":"TransientSlot.BooleanSlot"}},"functionReturnParameters":3162,"id":3167,"nodeType":"Return","src":"1745:29:28"}]},"documentation":{"id":3155,"nodeType":"StructuredDocumentation","src":"1597:64:28","text":" @dev Cast an arbitrary slot to a BooleanSlot."},"id":3169,"implemented":true,"kind":"function","modifiers":[],"name":"asBoolean","nameLocation":"1675:9:28","nodeType":"FunctionDefinition","parameters":{"id":3158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3157,"mutability":"mutable","name":"slot","nameLocation":"1693:4:28","nodeType":"VariableDeclaration","scope":3169,"src":"1685:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3156,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1685:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1684:14:28"},"returnParameters":{"id":3162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3169,"src":"1722:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$3154","typeString":"TransientSlot.BooleanSlot"},"typeName":{"id":3160,"nodeType":"UserDefinedTypeName","pathNode":{"id":3159,"name":"BooleanSlot","nameLocations":["1722:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3154,"src":"1722:11:28"},"referencedDeclaration":3154,"src":"1722:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$3154","typeString":"TransientSlot.BooleanSlot"}},"visibility":"internal"}],"src":"1721:13:28"},"scope":3331,"src":"1666:115:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"TransientSlot.Bytes32Slot","id":3171,"name":"Bytes32Slot","nameLocation":"1867:11:28","nodeType":"UserDefinedValueTypeDefinition","src":"1862:28:28","underlyingType":{"id":3170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1882:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":3185,"nodeType":"Block","src":"2034:46:28","statements":[{"expression":{"arguments":[{"id":3182,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3174,"src":"2068:4:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3180,"name":"Bytes32Slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"2051:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Bytes32Slot_$3171_$","typeString":"type(TransientSlot.Bytes32Slot)"}},"id":3181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2063:4:28","memberName":"wrap","nodeType":"MemberAccess","src":"2051:16:28","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Bytes32Slot_$3171_$","typeString":"function (bytes32) pure returns (TransientSlot.Bytes32Slot)"}},"id":3183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2051:22:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$3171","typeString":"TransientSlot.Bytes32Slot"}},"functionReturnParameters":3179,"id":3184,"nodeType":"Return","src":"2044:29:28"}]},"documentation":{"id":3172,"nodeType":"StructuredDocumentation","src":"1896:64:28","text":" @dev Cast an arbitrary slot to a Bytes32Slot."},"id":3186,"implemented":true,"kind":"function","modifiers":[],"name":"asBytes32","nameLocation":"1974:9:28","nodeType":"FunctionDefinition","parameters":{"id":3175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3174,"mutability":"mutable","name":"slot","nameLocation":"1992:4:28","nodeType":"VariableDeclaration","scope":3186,"src":"1984:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3173,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1984:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1983:14:28"},"returnParameters":{"id":3179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3186,"src":"2021:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$3171","typeString":"TransientSlot.Bytes32Slot"},"typeName":{"id":3177,"nodeType":"UserDefinedTypeName","pathNode":{"id":3176,"name":"Bytes32Slot","nameLocations":["2021:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3171,"src":"2021:11:28"},"referencedDeclaration":3171,"src":"2021:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$3171","typeString":"TransientSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2020:13:28"},"scope":3331,"src":"1965:115:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"TransientSlot.Uint256Slot","id":3188,"name":"Uint256Slot","nameLocation":"2166:11:28","nodeType":"UserDefinedValueTypeDefinition","src":"2161:28:28","underlyingType":{"id":3187,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2181:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":3202,"nodeType":"Block","src":"2333:46:28","statements":[{"expression":{"arguments":[{"id":3199,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3191,"src":"2367:4:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3197,"name":"Uint256Slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3188,"src":"2350:11:28","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Uint256Slot_$3188_$","typeString":"type(TransientSlot.Uint256Slot)"}},"id":3198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2362:4:28","memberName":"wrap","nodeType":"MemberAccess","src":"2350:16:28","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256Slot_$3188_$","typeString":"function (bytes32) pure returns (TransientSlot.Uint256Slot)"}},"id":3200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2350:22:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$3188","typeString":"TransientSlot.Uint256Slot"}},"functionReturnParameters":3196,"id":3201,"nodeType":"Return","src":"2343:29:28"}]},"documentation":{"id":3189,"nodeType":"StructuredDocumentation","src":"2195:64:28","text":" @dev Cast an arbitrary slot to a Uint256Slot."},"id":3203,"implemented":true,"kind":"function","modifiers":[],"name":"asUint256","nameLocation":"2273:9:28","nodeType":"FunctionDefinition","parameters":{"id":3192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3191,"mutability":"mutable","name":"slot","nameLocation":"2291:4:28","nodeType":"VariableDeclaration","scope":3203,"src":"2283:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3190,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2283:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2282:14:28"},"returnParameters":{"id":3196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3203,"src":"2320:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$3188","typeString":"TransientSlot.Uint256Slot"},"typeName":{"id":3194,"nodeType":"UserDefinedTypeName","pathNode":{"id":3193,"name":"Uint256Slot","nameLocations":["2320:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3188,"src":"2320:11:28"},"referencedDeclaration":3188,"src":"2320:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$3188","typeString":"TransientSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2319:13:28"},"scope":3331,"src":"2264:115:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"TransientSlot.Int256Slot","id":3205,"name":"Int256Slot","nameLocation":"2464:10:28","nodeType":"UserDefinedValueTypeDefinition","src":"2459:27:28","underlyingType":{"id":3204,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2478:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":3219,"nodeType":"Block","src":"2627:45:28","statements":[{"expression":{"arguments":[{"id":3216,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"2660:4:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3214,"name":"Int256Slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3205,"src":"2644:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Int256Slot_$3205_$","typeString":"type(TransientSlot.Int256Slot)"}},"id":3215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2655:4:28","memberName":"wrap","nodeType":"MemberAccess","src":"2644:15:28","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Int256Slot_$3205_$","typeString":"function (bytes32) pure returns (TransientSlot.Int256Slot)"}},"id":3217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2644:21:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$3205","typeString":"TransientSlot.Int256Slot"}},"functionReturnParameters":3213,"id":3218,"nodeType":"Return","src":"2637:28:28"}]},"documentation":{"id":3206,"nodeType":"StructuredDocumentation","src":"2492:63:28","text":" @dev Cast an arbitrary slot to a Int256Slot."},"id":3220,"implemented":true,"kind":"function","modifiers":[],"name":"asInt256","nameLocation":"2569:8:28","nodeType":"FunctionDefinition","parameters":{"id":3209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3208,"mutability":"mutable","name":"slot","nameLocation":"2586:4:28","nodeType":"VariableDeclaration","scope":3220,"src":"2578:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3207,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2578:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2577:14:28"},"returnParameters":{"id":3213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3212,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3220,"src":"2615:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$3205","typeString":"TransientSlot.Int256Slot"},"typeName":{"id":3211,"nodeType":"UserDefinedTypeName","pathNode":{"id":3210,"name":"Int256Slot","nameLocations":["2615:10:28"],"nodeType":"IdentifierPath","referencedDeclaration":3205,"src":"2615:10:28"},"referencedDeclaration":3205,"src":"2615:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$3205","typeString":"TransientSlot.Int256Slot"}},"visibility":"internal"}],"src":"2614:12:28"},"scope":3331,"src":"2560:112:28","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3230,"nodeType":"Block","src":"2838:85:28","statements":[{"AST":{"nativeSrc":"2873:44:28","nodeType":"YulBlock","src":"2873:44:28","statements":[{"nativeSrc":"2887:20:28","nodeType":"YulAssignment","src":"2887:20:28","value":{"arguments":[{"name":"slot","nativeSrc":"2902:4:28","nodeType":"YulIdentifier","src":"2902:4:28"}],"functionName":{"name":"tload","nativeSrc":"2896:5:28","nodeType":"YulIdentifier","src":"2896:5:28"},"nativeSrc":"2896:11:28","nodeType":"YulFunctionCall","src":"2896:11:28"},"variableNames":[{"name":"value","nativeSrc":"2887:5:28","nodeType":"YulIdentifier","src":"2887:5:28"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3224,"isOffset":false,"isSlot":false,"src":"2902:4:28","valueSize":1},{"declaration":3227,"isOffset":false,"isSlot":false,"src":"2887:5:28","valueSize":1}],"flags":["memory-safe"],"id":3229,"nodeType":"InlineAssembly","src":"2848:69:28"}]},"documentation":{"id":3221,"nodeType":"StructuredDocumentation","src":"2678:84:28","text":" @dev Load the value held at location `slot` in transient storage."},"id":3231,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"2776:5:28","nodeType":"FunctionDefinition","parameters":{"id":3225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3224,"mutability":"mutable","name":"slot","nameLocation":"2794:4:28","nodeType":"VariableDeclaration","scope":3231,"src":"2782:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$3137","typeString":"TransientSlot.AddressSlot"},"typeName":{"id":3223,"nodeType":"UserDefinedTypeName","pathNode":{"id":3222,"name":"AddressSlot","nameLocations":["2782:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3137,"src":"2782:11:28"},"referencedDeclaration":3137,"src":"2782:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$3137","typeString":"TransientSlot.AddressSlot"}},"visibility":"internal"}],"src":"2781:18:28"},"returnParameters":{"id":3228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3227,"mutability":"mutable","name":"value","nameLocation":"2831:5:28","nodeType":"VariableDeclaration","scope":3231,"src":"2823:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3226,"name":"address","nodeType":"ElementaryTypeName","src":"2823:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2822:15:28"},"scope":3331,"src":"2767:156:28","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3241,"nodeType":"Block","src":"3070:84:28","statements":[{"AST":{"nativeSrc":"3105:43:28","nodeType":"YulBlock","src":"3105:43:28","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"3126:4:28","nodeType":"YulIdentifier","src":"3126:4:28"},{"name":"value","nativeSrc":"3132:5:28","nodeType":"YulIdentifier","src":"3132:5:28"}],"functionName":{"name":"tstore","nativeSrc":"3119:6:28","nodeType":"YulIdentifier","src":"3119:6:28"},"nativeSrc":"3119:19:28","nodeType":"YulFunctionCall","src":"3119:19:28"},"nativeSrc":"3119:19:28","nodeType":"YulExpressionStatement","src":"3119:19:28"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3235,"isOffset":false,"isSlot":false,"src":"3126:4:28","valueSize":1},{"declaration":3237,"isOffset":false,"isSlot":false,"src":"3132:5:28","valueSize":1}],"flags":["memory-safe"],"id":3240,"nodeType":"InlineAssembly","src":"3080:68:28"}]},"documentation":{"id":3232,"nodeType":"StructuredDocumentation","src":"2929:78:28","text":" @dev Store `value` at location `slot` in transient storage."},"id":3242,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"3021:6:28","nodeType":"FunctionDefinition","parameters":{"id":3238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3235,"mutability":"mutable","name":"slot","nameLocation":"3040:4:28","nodeType":"VariableDeclaration","scope":3242,"src":"3028:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$3137","typeString":"TransientSlot.AddressSlot"},"typeName":{"id":3234,"nodeType":"UserDefinedTypeName","pathNode":{"id":3233,"name":"AddressSlot","nameLocations":["3028:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3137,"src":"3028:11:28"},"referencedDeclaration":3137,"src":"3028:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$3137","typeString":"TransientSlot.AddressSlot"}},"visibility":"internal"},{"constant":false,"id":3237,"mutability":"mutable","name":"value","nameLocation":"3054:5:28","nodeType":"VariableDeclaration","scope":3242,"src":"3046:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3236,"name":"address","nodeType":"ElementaryTypeName","src":"3046:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3027:33:28"},"returnParameters":{"id":3239,"nodeType":"ParameterList","parameters":[],"src":"3070:0:28"},"scope":3331,"src":"3012:142:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3252,"nodeType":"Block","src":"3317:85:28","statements":[{"AST":{"nativeSrc":"3352:44:28","nodeType":"YulBlock","src":"3352:44:28","statements":[{"nativeSrc":"3366:20:28","nodeType":"YulAssignment","src":"3366:20:28","value":{"arguments":[{"name":"slot","nativeSrc":"3381:4:28","nodeType":"YulIdentifier","src":"3381:4:28"}],"functionName":{"name":"tload","nativeSrc":"3375:5:28","nodeType":"YulIdentifier","src":"3375:5:28"},"nativeSrc":"3375:11:28","nodeType":"YulFunctionCall","src":"3375:11:28"},"variableNames":[{"name":"value","nativeSrc":"3366:5:28","nodeType":"YulIdentifier","src":"3366:5:28"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3246,"isOffset":false,"isSlot":false,"src":"3381:4:28","valueSize":1},{"declaration":3249,"isOffset":false,"isSlot":false,"src":"3366:5:28","valueSize":1}],"flags":["memory-safe"],"id":3251,"nodeType":"InlineAssembly","src":"3327:69:28"}]},"documentation":{"id":3243,"nodeType":"StructuredDocumentation","src":"3160:84:28","text":" @dev Load the value held at location `slot` in transient storage."},"id":3253,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"3258:5:28","nodeType":"FunctionDefinition","parameters":{"id":3247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3246,"mutability":"mutable","name":"slot","nameLocation":"3276:4:28","nodeType":"VariableDeclaration","scope":3253,"src":"3264:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$3154","typeString":"TransientSlot.BooleanSlot"},"typeName":{"id":3245,"nodeType":"UserDefinedTypeName","pathNode":{"id":3244,"name":"BooleanSlot","nameLocations":["3264:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3154,"src":"3264:11:28"},"referencedDeclaration":3154,"src":"3264:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$3154","typeString":"TransientSlot.BooleanSlot"}},"visibility":"internal"}],"src":"3263:18:28"},"returnParameters":{"id":3250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3249,"mutability":"mutable","name":"value","nameLocation":"3310:5:28","nodeType":"VariableDeclaration","scope":3253,"src":"3305:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3248,"name":"bool","nodeType":"ElementaryTypeName","src":"3305:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3304:12:28"},"scope":3331,"src":"3249:153:28","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3263,"nodeType":"Block","src":"3546:84:28","statements":[{"AST":{"nativeSrc":"3581:43:28","nodeType":"YulBlock","src":"3581:43:28","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"3602:4:28","nodeType":"YulIdentifier","src":"3602:4:28"},{"name":"value","nativeSrc":"3608:5:28","nodeType":"YulIdentifier","src":"3608:5:28"}],"functionName":{"name":"tstore","nativeSrc":"3595:6:28","nodeType":"YulIdentifier","src":"3595:6:28"},"nativeSrc":"3595:19:28","nodeType":"YulFunctionCall","src":"3595:19:28"},"nativeSrc":"3595:19:28","nodeType":"YulExpressionStatement","src":"3595:19:28"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3257,"isOffset":false,"isSlot":false,"src":"3602:4:28","valueSize":1},{"declaration":3259,"isOffset":false,"isSlot":false,"src":"3608:5:28","valueSize":1}],"flags":["memory-safe"],"id":3262,"nodeType":"InlineAssembly","src":"3556:68:28"}]},"documentation":{"id":3254,"nodeType":"StructuredDocumentation","src":"3408:78:28","text":" @dev Store `value` at location `slot` in transient storage."},"id":3264,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"3500:6:28","nodeType":"FunctionDefinition","parameters":{"id":3260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3257,"mutability":"mutable","name":"slot","nameLocation":"3519:4:28","nodeType":"VariableDeclaration","scope":3264,"src":"3507:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$3154","typeString":"TransientSlot.BooleanSlot"},"typeName":{"id":3256,"nodeType":"UserDefinedTypeName","pathNode":{"id":3255,"name":"BooleanSlot","nameLocations":["3507:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3154,"src":"3507:11:28"},"referencedDeclaration":3154,"src":"3507:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$3154","typeString":"TransientSlot.BooleanSlot"}},"visibility":"internal"},{"constant":false,"id":3259,"mutability":"mutable","name":"value","nameLocation":"3530:5:28","nodeType":"VariableDeclaration","scope":3264,"src":"3525:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3258,"name":"bool","nodeType":"ElementaryTypeName","src":"3525:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3506:30:28"},"returnParameters":{"id":3261,"nodeType":"ParameterList","parameters":[],"src":"3546:0:28"},"scope":3331,"src":"3491:139:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3274,"nodeType":"Block","src":"3796:85:28","statements":[{"AST":{"nativeSrc":"3831:44:28","nodeType":"YulBlock","src":"3831:44:28","statements":[{"nativeSrc":"3845:20:28","nodeType":"YulAssignment","src":"3845:20:28","value":{"arguments":[{"name":"slot","nativeSrc":"3860:4:28","nodeType":"YulIdentifier","src":"3860:4:28"}],"functionName":{"name":"tload","nativeSrc":"3854:5:28","nodeType":"YulIdentifier","src":"3854:5:28"},"nativeSrc":"3854:11:28","nodeType":"YulFunctionCall","src":"3854:11:28"},"variableNames":[{"name":"value","nativeSrc":"3845:5:28","nodeType":"YulIdentifier","src":"3845:5:28"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3268,"isOffset":false,"isSlot":false,"src":"3860:4:28","valueSize":1},{"declaration":3271,"isOffset":false,"isSlot":false,"src":"3845:5:28","valueSize":1}],"flags":["memory-safe"],"id":3273,"nodeType":"InlineAssembly","src":"3806:69:28"}]},"documentation":{"id":3265,"nodeType":"StructuredDocumentation","src":"3636:84:28","text":" @dev Load the value held at location `slot` in transient storage."},"id":3275,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"3734:5:28","nodeType":"FunctionDefinition","parameters":{"id":3269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3268,"mutability":"mutable","name":"slot","nameLocation":"3752:4:28","nodeType":"VariableDeclaration","scope":3275,"src":"3740:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$3171","typeString":"TransientSlot.Bytes32Slot"},"typeName":{"id":3267,"nodeType":"UserDefinedTypeName","pathNode":{"id":3266,"name":"Bytes32Slot","nameLocations":["3740:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3171,"src":"3740:11:28"},"referencedDeclaration":3171,"src":"3740:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$3171","typeString":"TransientSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"3739:18:28"},"returnParameters":{"id":3272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3271,"mutability":"mutable","name":"value","nameLocation":"3789:5:28","nodeType":"VariableDeclaration","scope":3275,"src":"3781:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3781:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3780:15:28"},"scope":3331,"src":"3725:156:28","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3285,"nodeType":"Block","src":"4028:84:28","statements":[{"AST":{"nativeSrc":"4063:43:28","nodeType":"YulBlock","src":"4063:43:28","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"4084:4:28","nodeType":"YulIdentifier","src":"4084:4:28"},{"name":"value","nativeSrc":"4090:5:28","nodeType":"YulIdentifier","src":"4090:5:28"}],"functionName":{"name":"tstore","nativeSrc":"4077:6:28","nodeType":"YulIdentifier","src":"4077:6:28"},"nativeSrc":"4077:19:28","nodeType":"YulFunctionCall","src":"4077:19:28"},"nativeSrc":"4077:19:28","nodeType":"YulExpressionStatement","src":"4077:19:28"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3279,"isOffset":false,"isSlot":false,"src":"4084:4:28","valueSize":1},{"declaration":3281,"isOffset":false,"isSlot":false,"src":"4090:5:28","valueSize":1}],"flags":["memory-safe"],"id":3284,"nodeType":"InlineAssembly","src":"4038:68:28"}]},"documentation":{"id":3276,"nodeType":"StructuredDocumentation","src":"3887:78:28","text":" @dev Store `value` at location `slot` in transient storage."},"id":3286,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"3979:6:28","nodeType":"FunctionDefinition","parameters":{"id":3282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3279,"mutability":"mutable","name":"slot","nameLocation":"3998:4:28","nodeType":"VariableDeclaration","scope":3286,"src":"3986:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$3171","typeString":"TransientSlot.Bytes32Slot"},"typeName":{"id":3278,"nodeType":"UserDefinedTypeName","pathNode":{"id":3277,"name":"Bytes32Slot","nameLocations":["3986:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3171,"src":"3986:11:28"},"referencedDeclaration":3171,"src":"3986:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$3171","typeString":"TransientSlot.Bytes32Slot"}},"visibility":"internal"},{"constant":false,"id":3281,"mutability":"mutable","name":"value","nameLocation":"4012:5:28","nodeType":"VariableDeclaration","scope":3286,"src":"4004:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3280,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4004:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3985:33:28"},"returnParameters":{"id":3283,"nodeType":"ParameterList","parameters":[],"src":"4028:0:28"},"scope":3331,"src":"3970:142:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3296,"nodeType":"Block","src":"4278:85:28","statements":[{"AST":{"nativeSrc":"4313:44:28","nodeType":"YulBlock","src":"4313:44:28","statements":[{"nativeSrc":"4327:20:28","nodeType":"YulAssignment","src":"4327:20:28","value":{"arguments":[{"name":"slot","nativeSrc":"4342:4:28","nodeType":"YulIdentifier","src":"4342:4:28"}],"functionName":{"name":"tload","nativeSrc":"4336:5:28","nodeType":"YulIdentifier","src":"4336:5:28"},"nativeSrc":"4336:11:28","nodeType":"YulFunctionCall","src":"4336:11:28"},"variableNames":[{"name":"value","nativeSrc":"4327:5:28","nodeType":"YulIdentifier","src":"4327:5:28"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3290,"isOffset":false,"isSlot":false,"src":"4342:4:28","valueSize":1},{"declaration":3293,"isOffset":false,"isSlot":false,"src":"4327:5:28","valueSize":1}],"flags":["memory-safe"],"id":3295,"nodeType":"InlineAssembly","src":"4288:69:28"}]},"documentation":{"id":3287,"nodeType":"StructuredDocumentation","src":"4118:84:28","text":" @dev Load the value held at location `slot` in transient storage."},"id":3297,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"4216:5:28","nodeType":"FunctionDefinition","parameters":{"id":3291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3290,"mutability":"mutable","name":"slot","nameLocation":"4234:4:28","nodeType":"VariableDeclaration","scope":3297,"src":"4222:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$3188","typeString":"TransientSlot.Uint256Slot"},"typeName":{"id":3289,"nodeType":"UserDefinedTypeName","pathNode":{"id":3288,"name":"Uint256Slot","nameLocations":["4222:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3188,"src":"4222:11:28"},"referencedDeclaration":3188,"src":"4222:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$3188","typeString":"TransientSlot.Uint256Slot"}},"visibility":"internal"}],"src":"4221:18:28"},"returnParameters":{"id":3294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3293,"mutability":"mutable","name":"value","nameLocation":"4271:5:28","nodeType":"VariableDeclaration","scope":3297,"src":"4263:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3292,"name":"uint256","nodeType":"ElementaryTypeName","src":"4263:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4262:15:28"},"scope":3331,"src":"4207:156:28","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3307,"nodeType":"Block","src":"4510:84:28","statements":[{"AST":{"nativeSrc":"4545:43:28","nodeType":"YulBlock","src":"4545:43:28","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"4566:4:28","nodeType":"YulIdentifier","src":"4566:4:28"},{"name":"value","nativeSrc":"4572:5:28","nodeType":"YulIdentifier","src":"4572:5:28"}],"functionName":{"name":"tstore","nativeSrc":"4559:6:28","nodeType":"YulIdentifier","src":"4559:6:28"},"nativeSrc":"4559:19:28","nodeType":"YulFunctionCall","src":"4559:19:28"},"nativeSrc":"4559:19:28","nodeType":"YulExpressionStatement","src":"4559:19:28"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3301,"isOffset":false,"isSlot":false,"src":"4566:4:28","valueSize":1},{"declaration":3303,"isOffset":false,"isSlot":false,"src":"4572:5:28","valueSize":1}],"flags":["memory-safe"],"id":3306,"nodeType":"InlineAssembly","src":"4520:68:28"}]},"documentation":{"id":3298,"nodeType":"StructuredDocumentation","src":"4369:78:28","text":" @dev Store `value` at location `slot` in transient storage."},"id":3308,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"4461:6:28","nodeType":"FunctionDefinition","parameters":{"id":3304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3301,"mutability":"mutable","name":"slot","nameLocation":"4480:4:28","nodeType":"VariableDeclaration","scope":3308,"src":"4468:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$3188","typeString":"TransientSlot.Uint256Slot"},"typeName":{"id":3300,"nodeType":"UserDefinedTypeName","pathNode":{"id":3299,"name":"Uint256Slot","nameLocations":["4468:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":3188,"src":"4468:11:28"},"referencedDeclaration":3188,"src":"4468:11:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$3188","typeString":"TransientSlot.Uint256Slot"}},"visibility":"internal"},{"constant":false,"id":3303,"mutability":"mutable","name":"value","nameLocation":"4494:5:28","nodeType":"VariableDeclaration","scope":3308,"src":"4486:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3302,"name":"uint256","nodeType":"ElementaryTypeName","src":"4486:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4467:33:28"},"returnParameters":{"id":3305,"nodeType":"ParameterList","parameters":[],"src":"4510:0:28"},"scope":3331,"src":"4452:142:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3318,"nodeType":"Block","src":"4758:85:28","statements":[{"AST":{"nativeSrc":"4793:44:28","nodeType":"YulBlock","src":"4793:44:28","statements":[{"nativeSrc":"4807:20:28","nodeType":"YulAssignment","src":"4807:20:28","value":{"arguments":[{"name":"slot","nativeSrc":"4822:4:28","nodeType":"YulIdentifier","src":"4822:4:28"}],"functionName":{"name":"tload","nativeSrc":"4816:5:28","nodeType":"YulIdentifier","src":"4816:5:28"},"nativeSrc":"4816:11:28","nodeType":"YulFunctionCall","src":"4816:11:28"},"variableNames":[{"name":"value","nativeSrc":"4807:5:28","nodeType":"YulIdentifier","src":"4807:5:28"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3312,"isOffset":false,"isSlot":false,"src":"4822:4:28","valueSize":1},{"declaration":3315,"isOffset":false,"isSlot":false,"src":"4807:5:28","valueSize":1}],"flags":["memory-safe"],"id":3317,"nodeType":"InlineAssembly","src":"4768:69:28"}]},"documentation":{"id":3309,"nodeType":"StructuredDocumentation","src":"4600:84:28","text":" @dev Load the value held at location `slot` in transient storage."},"id":3319,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"4698:5:28","nodeType":"FunctionDefinition","parameters":{"id":3313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3312,"mutability":"mutable","name":"slot","nameLocation":"4715:4:28","nodeType":"VariableDeclaration","scope":3319,"src":"4704:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$3205","typeString":"TransientSlot.Int256Slot"},"typeName":{"id":3311,"nodeType":"UserDefinedTypeName","pathNode":{"id":3310,"name":"Int256Slot","nameLocations":["4704:10:28"],"nodeType":"IdentifierPath","referencedDeclaration":3205,"src":"4704:10:28"},"referencedDeclaration":3205,"src":"4704:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$3205","typeString":"TransientSlot.Int256Slot"}},"visibility":"internal"}],"src":"4703:17:28"},"returnParameters":{"id":3316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3315,"mutability":"mutable","name":"value","nameLocation":"4751:5:28","nodeType":"VariableDeclaration","scope":3319,"src":"4744:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3314,"name":"int256","nodeType":"ElementaryTypeName","src":"4744:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4743:14:28"},"scope":3331,"src":"4689:154:28","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3329,"nodeType":"Block","src":"4988:84:28","statements":[{"AST":{"nativeSrc":"5023:43:28","nodeType":"YulBlock","src":"5023:43:28","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"5044:4:28","nodeType":"YulIdentifier","src":"5044:4:28"},{"name":"value","nativeSrc":"5050:5:28","nodeType":"YulIdentifier","src":"5050:5:28"}],"functionName":{"name":"tstore","nativeSrc":"5037:6:28","nodeType":"YulIdentifier","src":"5037:6:28"},"nativeSrc":"5037:19:28","nodeType":"YulFunctionCall","src":"5037:19:28"},"nativeSrc":"5037:19:28","nodeType":"YulExpressionStatement","src":"5037:19:28"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3323,"isOffset":false,"isSlot":false,"src":"5044:4:28","valueSize":1},{"declaration":3325,"isOffset":false,"isSlot":false,"src":"5050:5:28","valueSize":1}],"flags":["memory-safe"],"id":3328,"nodeType":"InlineAssembly","src":"4998:68:28"}]},"documentation":{"id":3320,"nodeType":"StructuredDocumentation","src":"4849:78:28","text":" @dev Store `value` at location `slot` in transient storage."},"id":3330,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"4941:6:28","nodeType":"FunctionDefinition","parameters":{"id":3326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3323,"mutability":"mutable","name":"slot","nameLocation":"4959:4:28","nodeType":"VariableDeclaration","scope":3330,"src":"4948:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$3205","typeString":"TransientSlot.Int256Slot"},"typeName":{"id":3322,"nodeType":"UserDefinedTypeName","pathNode":{"id":3321,"name":"Int256Slot","nameLocations":["4948:10:28"],"nodeType":"IdentifierPath","referencedDeclaration":3205,"src":"4948:10:28"},"referencedDeclaration":3205,"src":"4948:10:28","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$3205","typeString":"TransientSlot.Int256Slot"}},"visibility":"internal"},{"constant":false,"id":3325,"mutability":"mutable","name":"value","nameLocation":"4972:5:28","nodeType":"VariableDeclaration","scope":3330,"src":"4965:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3324,"name":"int256","nodeType":"ElementaryTypeName","src":"4965:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4947:31:28"},"returnParameters":{"id":3327,"nodeType":"ParameterList","parameters":[],"src":"4988:0:28"},"scope":3331,"src":"4932:140:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3332,"src":"1163:3911:28","usedErrors":[],"usedEvents":[]}],"src":"197:4878:28"},"id":28},"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[3355],"IERC165":[3367]},"id":3356,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3333,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:29"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":3335,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3356,"sourceUnit":3368,"src":"140:38:29","symbolAliases":[{"foreign":{"id":3334,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"148:7:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3337,"name":"IERC165","nameLocations":["688:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":3367,"src":"688:7:29"},"id":3338,"nodeType":"InheritanceSpecifier","src":"688:7:29"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":3336,"nodeType":"StructuredDocumentation","src":"180:479:29","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"id":3355,"linearizedBaseContracts":[3355,3367],"name":"ERC165","nameLocation":"678:6:29","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[3366],"body":{"id":3353,"nodeType":"Block","src":"812:64:29","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3346,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"829:11:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3348,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"849:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$3367_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$3367_$","typeString":"type(contract IERC165)"}],"id":3347,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"844:4:29","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"844:13:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$3367","typeString":"type(contract IERC165)"}},"id":3350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"858:11:29","memberName":"interfaceId","nodeType":"MemberAccess","src":"844:25:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"829:40:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3345,"id":3352,"nodeType":"Return","src":"822:47:29"}]},"documentation":{"id":3339,"nodeType":"StructuredDocumentation","src":"702:23:29","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":3354,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"739:17:29","nodeType":"FunctionDefinition","parameters":{"id":3342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3341,"mutability":"mutable","name":"interfaceId","nameLocation":"764:11:29","nodeType":"VariableDeclaration","scope":3354,"src":"757:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3340,"name":"bytes4","nodeType":"ElementaryTypeName","src":"757:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"756:20:29"},"returnParameters":{"id":3345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3354,"src":"806:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3343,"name":"bool","nodeType":"ElementaryTypeName","src":"806:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"805:6:29"},"scope":3355,"src":"730:146:29","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":3356,"src":"660:218:29","usedErrors":[],"usedEvents":[]}],"src":"114:765:29"},"id":29},"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[3367]},"id":3368,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3357,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"115:25:30"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":3358,"nodeType":"StructuredDocumentation","src":"142:280:30","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":3367,"linearizedBaseContracts":[3367],"name":"IERC165","nameLocation":"433:7:30","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3359,"nodeType":"StructuredDocumentation","src":"447:340:30","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":3366,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"801:17:30","nodeType":"FunctionDefinition","parameters":{"id":3362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3361,"mutability":"mutable","name":"interfaceId","nameLocation":"826:11:30","nodeType":"VariableDeclaration","scope":3366,"src":"819:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3360,"name":"bytes4","nodeType":"ElementaryTypeName","src":"819:6:30","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"818:20:30"},"returnParameters":{"id":3365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3366,"src":"862:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3363,"name":"bool","nodeType":"ElementaryTypeName","src":"862:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"861:6:30"},"scope":3367,"src":"792:76:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3368,"src":"423:447:30","usedErrors":[],"usedEvents":[]}],"src":"115:756:30"},"id":30},"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol","exportedSymbols":{"Math":[4988],"Panic":[2809],"SafeCast":[6753]},"id":4989,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3369,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:31"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/Panic.sol","file":"../Panic.sol","id":3371,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4989,"sourceUnit":2810,"src":"129:35:31","symbolAliases":[{"foreign":{"id":3370,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"137:5:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":3373,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4989,"sourceUnit":6754,"src":"165:40:31","symbolAliases":[{"foreign":{"id":3372,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"173:8:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":3374,"nodeType":"StructuredDocumentation","src":"207:73:31","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":4988,"linearizedBaseContracts":[4988],"name":"Math","nameLocation":"289:4:31","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":3379,"members":[{"id":3375,"name":"Floor","nameLocation":"324:5:31","nodeType":"EnumValue","src":"324:5:31"},{"id":3376,"name":"Ceil","nameLocation":"367:4:31","nodeType":"EnumValue","src":"367:4:31"},{"id":3377,"name":"Trunc","nameLocation":"409:5:31","nodeType":"EnumValue","src":"409:5:31"},{"id":3378,"name":"Expand","nameLocation":"439:6:31","nodeType":"EnumValue","src":"439:6:31"}],"name":"Rounding","nameLocation":"305:8:31","nodeType":"EnumDefinition","src":"300:169:31"},{"body":{"id":3392,"nodeType":"Block","src":"731:112:31","statements":[{"AST":{"nativeSrc":"766:71:31","nodeType":"YulBlock","src":"766:71:31","statements":[{"nativeSrc":"780:16:31","nodeType":"YulAssignment","src":"780:16:31","value":{"arguments":[{"name":"a","nativeSrc":"791:1:31","nodeType":"YulIdentifier","src":"791:1:31"},{"name":"b","nativeSrc":"794:1:31","nodeType":"YulIdentifier","src":"794:1:31"}],"functionName":{"name":"add","nativeSrc":"787:3:31","nodeType":"YulIdentifier","src":"787:3:31"},"nativeSrc":"787:9:31","nodeType":"YulFunctionCall","src":"787:9:31"},"variableNames":[{"name":"low","nativeSrc":"780:3:31","nodeType":"YulIdentifier","src":"780:3:31"}]},{"nativeSrc":"809:18:31","nodeType":"YulAssignment","src":"809:18:31","value":{"arguments":[{"name":"low","nativeSrc":"820:3:31","nodeType":"YulIdentifier","src":"820:3:31"},{"name":"a","nativeSrc":"825:1:31","nodeType":"YulIdentifier","src":"825:1:31"}],"functionName":{"name":"lt","nativeSrc":"817:2:31","nodeType":"YulIdentifier","src":"817:2:31"},"nativeSrc":"817:10:31","nodeType":"YulFunctionCall","src":"817:10:31"},"variableNames":[{"name":"high","nativeSrc":"809:4:31","nodeType":"YulIdentifier","src":"809:4:31"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3382,"isOffset":false,"isSlot":false,"src":"791:1:31","valueSize":1},{"declaration":3382,"isOffset":false,"isSlot":false,"src":"825:1:31","valueSize":1},{"declaration":3384,"isOffset":false,"isSlot":false,"src":"794:1:31","valueSize":1},{"declaration":3387,"isOffset":false,"isSlot":false,"src":"809:4:31","valueSize":1},{"declaration":3389,"isOffset":false,"isSlot":false,"src":"780:3:31","valueSize":1},{"declaration":3389,"isOffset":false,"isSlot":false,"src":"820:3:31","valueSize":1}],"flags":["memory-safe"],"id":3391,"nodeType":"InlineAssembly","src":"741:96:31"}]},"documentation":{"id":3380,"nodeType":"StructuredDocumentation","src":"475:163:31","text":" @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low."},"id":3393,"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:31","nodeType":"FunctionDefinition","parameters":{"id":3385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3382,"mutability":"mutable","name":"a","nameLocation":"667:1:31","nodeType":"VariableDeclaration","scope":3393,"src":"659:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3381,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3384,"mutability":"mutable","name":"b","nameLocation":"678:1:31","nodeType":"VariableDeclaration","scope":3393,"src":"670:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3383,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:31"},"returnParameters":{"id":3390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3387,"mutability":"mutable","name":"high","nameLocation":"712:4:31","nodeType":"VariableDeclaration","scope":3393,"src":"704:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3386,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3389,"mutability":"mutable","name":"low","nameLocation":"726:3:31","nodeType":"VariableDeclaration","scope":3393,"src":"718:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3388,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:31"},"scope":4988,"src":"643:200:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3406,"nodeType":"Block","src":"1115:462:31","statements":[{"AST":{"nativeSrc":"1437:134:31","nodeType":"YulBlock","src":"1437:134:31","statements":[{"nativeSrc":"1451:30:31","nodeType":"YulVariableDeclaration","src":"1451:30:31","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:31","nodeType":"YulIdentifier","src":"1468:1:31"},{"name":"b","nativeSrc":"1471:1:31","nodeType":"YulIdentifier","src":"1471:1:31"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:31","nodeType":"YulLiteral","src":"1478:1:31","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:31","nodeType":"YulIdentifier","src":"1474:3:31"},"nativeSrc":"1474:6:31","nodeType":"YulFunctionCall","src":"1474:6:31"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:31","nodeType":"YulIdentifier","src":"1461:6:31"},"nativeSrc":"1461:20:31","nodeType":"YulFunctionCall","src":"1461:20:31"},"variables":[{"name":"mm","nativeSrc":"1455:2:31","nodeType":"YulTypedName","src":"1455:2:31","type":""}]},{"nativeSrc":"1494:16:31","nodeType":"YulAssignment","src":"1494:16:31","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:31","nodeType":"YulIdentifier","src":"1505:1:31"},{"name":"b","nativeSrc":"1508:1:31","nodeType":"YulIdentifier","src":"1508:1:31"}],"functionName":{"name":"mul","nativeSrc":"1501:3:31","nodeType":"YulIdentifier","src":"1501:3:31"},"nativeSrc":"1501:9:31","nodeType":"YulFunctionCall","src":"1501:9:31"},"variableNames":[{"name":"low","nativeSrc":"1494:3:31","nodeType":"YulIdentifier","src":"1494:3:31"}]},{"nativeSrc":"1523:38:31","nodeType":"YulAssignment","src":"1523:38:31","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:31","nodeType":"YulIdentifier","src":"1539:2:31"},{"name":"low","nativeSrc":"1543:3:31","nodeType":"YulIdentifier","src":"1543:3:31"}],"functionName":{"name":"sub","nativeSrc":"1535:3:31","nodeType":"YulIdentifier","src":"1535:3:31"},"nativeSrc":"1535:12:31","nodeType":"YulFunctionCall","src":"1535:12:31"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:31","nodeType":"YulIdentifier","src":"1552:2:31"},{"name":"low","nativeSrc":"1556:3:31","nodeType":"YulIdentifier","src":"1556:3:31"}],"functionName":{"name":"lt","nativeSrc":"1549:2:31","nodeType":"YulIdentifier","src":"1549:2:31"},"nativeSrc":"1549:11:31","nodeType":"YulFunctionCall","src":"1549:11:31"}],"functionName":{"name":"sub","nativeSrc":"1531:3:31","nodeType":"YulIdentifier","src":"1531:3:31"},"nativeSrc":"1531:30:31","nodeType":"YulFunctionCall","src":"1531:30:31"},"variableNames":[{"name":"high","nativeSrc":"1523:4:31","nodeType":"YulIdentifier","src":"1523:4:31"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3396,"isOffset":false,"isSlot":false,"src":"1468:1:31","valueSize":1},{"declaration":3396,"isOffset":false,"isSlot":false,"src":"1505:1:31","valueSize":1},{"declaration":3398,"isOffset":false,"isSlot":false,"src":"1471:1:31","valueSize":1},{"declaration":3398,"isOffset":false,"isSlot":false,"src":"1508:1:31","valueSize":1},{"declaration":3401,"isOffset":false,"isSlot":false,"src":"1523:4:31","valueSize":1},{"declaration":3403,"isOffset":false,"isSlot":false,"src":"1494:3:31","valueSize":1},{"declaration":3403,"isOffset":false,"isSlot":false,"src":"1543:3:31","valueSize":1},{"declaration":3403,"isOffset":false,"isSlot":false,"src":"1556:3:31","valueSize":1}],"flags":["memory-safe"],"id":3405,"nodeType":"InlineAssembly","src":"1412:159:31"}]},"documentation":{"id":3394,"nodeType":"StructuredDocumentation","src":"849:173:31","text":" @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low."},"id":3407,"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:31","nodeType":"FunctionDefinition","parameters":{"id":3399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3396,"mutability":"mutable","name":"a","nameLocation":"1051:1:31","nodeType":"VariableDeclaration","scope":3407,"src":"1043:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3395,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3398,"mutability":"mutable","name":"b","nameLocation":"1062:1:31","nodeType":"VariableDeclaration","scope":3407,"src":"1054:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3397,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:31"},"returnParameters":{"id":3404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3401,"mutability":"mutable","name":"high","nameLocation":"1096:4:31","nodeType":"VariableDeclaration","scope":3407,"src":"1088:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3400,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3403,"mutability":"mutable","name":"low","nameLocation":"1110:3:31","nodeType":"VariableDeclaration","scope":3407,"src":"1102:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3402,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:31"},"scope":4988,"src":"1027:550:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3441,"nodeType":"Block","src":"1784:149:31","statements":[{"id":3440,"nodeType":"UncheckedBlock","src":"1794:133:31","statements":[{"assignments":[3420],"declarations":[{"constant":false,"id":3420,"mutability":"mutable","name":"c","nameLocation":"1826:1:31","nodeType":"VariableDeclaration","scope":3440,"src":"1818:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3419,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3424,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3410,"src":"1830:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3412,"src":"1834:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:31"},{"expression":{"id":3429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3425,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"1849:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3426,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3420,"src":"1859:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3427,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3410,"src":"1864:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3430,"nodeType":"ExpressionStatement","src":"1849:16:31"},{"expression":{"id":3438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3431,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"1879:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3432,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3420,"src":"1888:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3435,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"1908:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3433,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"1892:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":3434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"1892:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3439,"nodeType":"ExpressionStatement","src":"1879:37:31"}]}]},"documentation":{"id":3408,"nodeType":"StructuredDocumentation","src":"1583:105:31","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"id":3442,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:31","nodeType":"FunctionDefinition","parameters":{"id":3413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3410,"mutability":"mutable","name":"a","nameLocation":"1717:1:31","nodeType":"VariableDeclaration","scope":3442,"src":"1709:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3409,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3412,"mutability":"mutable","name":"b","nameLocation":"1728:1:31","nodeType":"VariableDeclaration","scope":3442,"src":"1720:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3411,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:31"},"returnParameters":{"id":3418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3415,"mutability":"mutable","name":"success","nameLocation":"1759:7:31","nodeType":"VariableDeclaration","scope":3442,"src":"1754:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3414,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3417,"mutability":"mutable","name":"result","nameLocation":"1776:6:31","nodeType":"VariableDeclaration","scope":3442,"src":"1768:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3416,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:31"},"scope":4988,"src":"1693:240:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3476,"nodeType":"Block","src":"2143:149:31","statements":[{"id":3475,"nodeType":"UncheckedBlock","src":"2153:133:31","statements":[{"assignments":[3455],"declarations":[{"constant":false,"id":3455,"mutability":"mutable","name":"c","nameLocation":"2185:1:31","nodeType":"VariableDeclaration","scope":3475,"src":"2177:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3454,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3459,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3456,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3445,"src":"2189:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3457,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3447,"src":"2193:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:31"},{"expression":{"id":3464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3460,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"2208:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3461,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3455,"src":"2218:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3462,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3445,"src":"2223:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3465,"nodeType":"ExpressionStatement","src":"2208:16:31"},{"expression":{"id":3473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3466,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3452,"src":"2238:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3467,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3455,"src":"2247:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3470,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"2267:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3468,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"2251:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"2251:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3474,"nodeType":"ExpressionStatement","src":"2238:37:31"}]}]},"documentation":{"id":3443,"nodeType":"StructuredDocumentation","src":"1939:108:31","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"id":3477,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:31","nodeType":"FunctionDefinition","parameters":{"id":3448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3445,"mutability":"mutable","name":"a","nameLocation":"2076:1:31","nodeType":"VariableDeclaration","scope":3477,"src":"2068:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3444,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3447,"mutability":"mutable","name":"b","nameLocation":"2087:1:31","nodeType":"VariableDeclaration","scope":3477,"src":"2079:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3446,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:31"},"returnParameters":{"id":3453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3450,"mutability":"mutable","name":"success","nameLocation":"2118:7:31","nodeType":"VariableDeclaration","scope":3477,"src":"2113:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3449,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3452,"mutability":"mutable","name":"result","nameLocation":"2135:6:31","nodeType":"VariableDeclaration","scope":3477,"src":"2127:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3451,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:31"},"scope":4988,"src":"2052:240:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3506,"nodeType":"Block","src":"2505:391:31","statements":[{"id":3505,"nodeType":"UncheckedBlock","src":"2515:375:31","statements":[{"assignments":[3490],"declarations":[{"constant":false,"id":3490,"mutability":"mutable","name":"c","nameLocation":"2547:1:31","nodeType":"VariableDeclaration","scope":3505,"src":"2539:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3489,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3494,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3491,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3480,"src":"2551:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3492,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3482,"src":"2555:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:31"},{"AST":{"nativeSrc":"2595:188:31","nodeType":"YulBlock","src":"2595:188:31","statements":[{"nativeSrc":"2727:42:31","nodeType":"YulAssignment","src":"2727:42:31","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:31","nodeType":"YulIdentifier","src":"2748:1:31"},{"name":"a","nativeSrc":"2751:1:31","nodeType":"YulIdentifier","src":"2751:1:31"}],"functionName":{"name":"div","nativeSrc":"2744:3:31","nodeType":"YulIdentifier","src":"2744:3:31"},"nativeSrc":"2744:9:31","nodeType":"YulFunctionCall","src":"2744:9:31"},{"name":"b","nativeSrc":"2755:1:31","nodeType":"YulIdentifier","src":"2755:1:31"}],"functionName":{"name":"eq","nativeSrc":"2741:2:31","nodeType":"YulIdentifier","src":"2741:2:31"},"nativeSrc":"2741:16:31","nodeType":"YulFunctionCall","src":"2741:16:31"},{"arguments":[{"name":"a","nativeSrc":"2766:1:31","nodeType":"YulIdentifier","src":"2766:1:31"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:31","nodeType":"YulIdentifier","src":"2759:6:31"},"nativeSrc":"2759:9:31","nodeType":"YulFunctionCall","src":"2759:9:31"}],"functionName":{"name":"or","nativeSrc":"2738:2:31","nodeType":"YulIdentifier","src":"2738:2:31"},"nativeSrc":"2738:31:31","nodeType":"YulFunctionCall","src":"2738:31:31"},"variableNames":[{"name":"success","nativeSrc":"2727:7:31","nodeType":"YulIdentifier","src":"2727:7:31"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3480,"isOffset":false,"isSlot":false,"src":"2751:1:31","valueSize":1},{"declaration":3480,"isOffset":false,"isSlot":false,"src":"2766:1:31","valueSize":1},{"declaration":3482,"isOffset":false,"isSlot":false,"src":"2755:1:31","valueSize":1},{"declaration":3490,"isOffset":false,"isSlot":false,"src":"2748:1:31","valueSize":1},{"declaration":3485,"isOffset":false,"isSlot":false,"src":"2727:7:31","valueSize":1}],"flags":["memory-safe"],"id":3495,"nodeType":"InlineAssembly","src":"2570:213:31"},{"expression":{"id":3503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3496,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"2842:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3497,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3490,"src":"2851:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3500,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3485,"src":"2871:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3498,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"2855:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":3499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"2855:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3504,"nodeType":"ExpressionStatement","src":"2842:37:31"}]}]},"documentation":{"id":3478,"nodeType":"StructuredDocumentation","src":"2298:111:31","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"id":3507,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:31","nodeType":"FunctionDefinition","parameters":{"id":3483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3480,"mutability":"mutable","name":"a","nameLocation":"2438:1:31","nodeType":"VariableDeclaration","scope":3507,"src":"2430:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3479,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3482,"mutability":"mutable","name":"b","nameLocation":"2449:1:31","nodeType":"VariableDeclaration","scope":3507,"src":"2441:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3481,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:31"},"returnParameters":{"id":3488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3485,"mutability":"mutable","name":"success","nameLocation":"2480:7:31","nodeType":"VariableDeclaration","scope":3507,"src":"2475:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3484,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3487,"mutability":"mutable","name":"result","nameLocation":"2497:6:31","nodeType":"VariableDeclaration","scope":3507,"src":"2489:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3486,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:31"},"scope":4988,"src":"2414:482:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3527,"nodeType":"Block","src":"3111:231:31","statements":[{"id":3526,"nodeType":"UncheckedBlock","src":"3121:215:31","statements":[{"expression":{"id":3523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3519,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"3145:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3520,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3512,"src":"3155:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3524,"nodeType":"ExpressionStatement","src":"3145:15:31"},{"AST":{"nativeSrc":"3199:127:31","nodeType":"YulBlock","src":"3199:127:31","statements":[{"nativeSrc":"3293:19:31","nodeType":"YulAssignment","src":"3293:19:31","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:31","nodeType":"YulIdentifier","src":"3307:1:31"},{"name":"b","nativeSrc":"3310:1:31","nodeType":"YulIdentifier","src":"3310:1:31"}],"functionName":{"name":"div","nativeSrc":"3303:3:31","nodeType":"YulIdentifier","src":"3303:3:31"},"nativeSrc":"3303:9:31","nodeType":"YulFunctionCall","src":"3303:9:31"},"variableNames":[{"name":"result","nativeSrc":"3293:6:31","nodeType":"YulIdentifier","src":"3293:6:31"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3510,"isOffset":false,"isSlot":false,"src":"3307:1:31","valueSize":1},{"declaration":3512,"isOffset":false,"isSlot":false,"src":"3310:1:31","valueSize":1},{"declaration":3517,"isOffset":false,"isSlot":false,"src":"3293:6:31","valueSize":1}],"flags":["memory-safe"],"id":3525,"nodeType":"InlineAssembly","src":"3174:152:31"}]}]},"documentation":{"id":3508,"nodeType":"StructuredDocumentation","src":"2902:113:31","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":3528,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:31","nodeType":"FunctionDefinition","parameters":{"id":3513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3510,"mutability":"mutable","name":"a","nameLocation":"3044:1:31","nodeType":"VariableDeclaration","scope":3528,"src":"3036:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3509,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3512,"mutability":"mutable","name":"b","nameLocation":"3055:1:31","nodeType":"VariableDeclaration","scope":3528,"src":"3047:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3511,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:31"},"returnParameters":{"id":3518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3515,"mutability":"mutable","name":"success","nameLocation":"3086:7:31","nodeType":"VariableDeclaration","scope":3528,"src":"3081:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3514,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3517,"mutability":"mutable","name":"result","nameLocation":"3103:6:31","nodeType":"VariableDeclaration","scope":3528,"src":"3095:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3516,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:31"},"scope":4988,"src":"3020:322:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3548,"nodeType":"Block","src":"3567:231:31","statements":[{"id":3547,"nodeType":"UncheckedBlock","src":"3577:215:31","statements":[{"expression":{"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3540,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"3601:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3541,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3533,"src":"3611:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3545,"nodeType":"ExpressionStatement","src":"3601:15:31"},{"AST":{"nativeSrc":"3655:127:31","nodeType":"YulBlock","src":"3655:127:31","statements":[{"nativeSrc":"3749:19:31","nodeType":"YulAssignment","src":"3749:19:31","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:31","nodeType":"YulIdentifier","src":"3763:1:31"},{"name":"b","nativeSrc":"3766:1:31","nodeType":"YulIdentifier","src":"3766:1:31"}],"functionName":{"name":"mod","nativeSrc":"3759:3:31","nodeType":"YulIdentifier","src":"3759:3:31"},"nativeSrc":"3759:9:31","nodeType":"YulFunctionCall","src":"3759:9:31"},"variableNames":[{"name":"result","nativeSrc":"3749:6:31","nodeType":"YulIdentifier","src":"3749:6:31"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3531,"isOffset":false,"isSlot":false,"src":"3763:1:31","valueSize":1},{"declaration":3533,"isOffset":false,"isSlot":false,"src":"3766:1:31","valueSize":1},{"declaration":3538,"isOffset":false,"isSlot":false,"src":"3749:6:31","valueSize":1}],"flags":["memory-safe"],"id":3546,"nodeType":"InlineAssembly","src":"3630:152:31"}]}]},"documentation":{"id":3529,"nodeType":"StructuredDocumentation","src":"3348:123:31","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":3549,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:31","nodeType":"FunctionDefinition","parameters":{"id":3534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3531,"mutability":"mutable","name":"a","nameLocation":"3500:1:31","nodeType":"VariableDeclaration","scope":3549,"src":"3492:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3530,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3533,"mutability":"mutable","name":"b","nameLocation":"3511:1:31","nodeType":"VariableDeclaration","scope":3549,"src":"3503:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3532,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:31"},"returnParameters":{"id":3539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3536,"mutability":"mutable","name":"success","nameLocation":"3542:7:31","nodeType":"VariableDeclaration","scope":3549,"src":"3537:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3535,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3538,"mutability":"mutable","name":"result","nameLocation":"3559:6:31","nodeType":"VariableDeclaration","scope":3549,"src":"3551:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3537,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:31"},"scope":4988,"src":"3476:322:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3578,"nodeType":"Block","src":"3989:122:31","statements":[{"assignments":[3560,3562],"declarations":[{"constant":false,"id":3560,"mutability":"mutable","name":"success","nameLocation":"4005:7:31","nodeType":"VariableDeclaration","scope":3578,"src":"4000:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3559,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3562,"mutability":"mutable","name":"result","nameLocation":"4022:6:31","nodeType":"VariableDeclaration","scope":3578,"src":"4014:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3561,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3567,"initialValue":{"arguments":[{"id":3564,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"4039:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3565,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"4042:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3563,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3442,"src":"4032:6:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:31"},{"expression":{"arguments":[{"id":3569,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3560,"src":"4069:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3570,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"4078:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":3573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3572,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:31","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3571,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4086:4:31","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:31","memberName":"max","nodeType":"MemberAccess","src":"4086:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3568,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"4061:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3558,"id":3577,"nodeType":"Return","src":"4054:50:31"}]},"documentation":{"id":3550,"nodeType":"StructuredDocumentation","src":"3804:103:31","text":" @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":3579,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:31","nodeType":"FunctionDefinition","parameters":{"id":3555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3552,"mutability":"mutable","name":"a","nameLocation":"3943:1:31","nodeType":"VariableDeclaration","scope":3579,"src":"3935:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3551,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3554,"mutability":"mutable","name":"b","nameLocation":"3954:1:31","nodeType":"VariableDeclaration","scope":3579,"src":"3946:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3553,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:31"},"returnParameters":{"id":3558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3579,"src":"3980:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3556,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:31"},"scope":4988,"src":"3912:199:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3598,"nodeType":"Block","src":"4294:73:31","statements":[{"assignments":[null,3590],"declarations":[null,{"constant":false,"id":3590,"mutability":"mutable","name":"result","nameLocation":"4315:6:31","nodeType":"VariableDeclaration","scope":3598,"src":"4307:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3589,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3595,"initialValue":{"arguments":[{"id":3592,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"4332:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3593,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3584,"src":"4335:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3591,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"4325:6:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:31"},{"expression":{"id":3596,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"4354:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3588,"id":3597,"nodeType":"Return","src":"4347:13:31"}]},"documentation":{"id":3580,"nodeType":"StructuredDocumentation","src":"4117:95:31","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"id":3599,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:31","nodeType":"FunctionDefinition","parameters":{"id":3585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3582,"mutability":"mutable","name":"a","nameLocation":"4248:1:31","nodeType":"VariableDeclaration","scope":3599,"src":"4240:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3581,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3584,"mutability":"mutable","name":"b","nameLocation":"4259:1:31","nodeType":"VariableDeclaration","scope":3599,"src":"4251:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3583,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:31"},"returnParameters":{"id":3588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3587,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3599,"src":"4285:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3586,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:31"},"scope":4988,"src":"4217:150:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3628,"nodeType":"Block","src":"4564:122:31","statements":[{"assignments":[3610,3612],"declarations":[{"constant":false,"id":3610,"mutability":"mutable","name":"success","nameLocation":"4580:7:31","nodeType":"VariableDeclaration","scope":3628,"src":"4575:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3609,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3612,"mutability":"mutable","name":"result","nameLocation":"4597:6:31","nodeType":"VariableDeclaration","scope":3628,"src":"4589:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3611,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3617,"initialValue":{"arguments":[{"id":3614,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"4614:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3615,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3604,"src":"4617:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3613,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"4607:6:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:31"},{"expression":{"arguments":[{"id":3619,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"4644:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3620,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"4653:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":3623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3622,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:31","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3621,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4661:4:31","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:31","memberName":"max","nodeType":"MemberAccess","src":"4661:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3618,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"4636:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3608,"id":3627,"nodeType":"Return","src":"4629:50:31"}]},"documentation":{"id":3600,"nodeType":"StructuredDocumentation","src":"4373:109:31","text":" @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":3629,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:31","nodeType":"FunctionDefinition","parameters":{"id":3605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3602,"mutability":"mutable","name":"a","nameLocation":"4518:1:31","nodeType":"VariableDeclaration","scope":3629,"src":"4510:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3601,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3604,"mutability":"mutable","name":"b","nameLocation":"4529:1:31","nodeType":"VariableDeclaration","scope":3629,"src":"4521:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3603,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:31"},"returnParameters":{"id":3608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3607,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3629,"src":"4555:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3606,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:31"},"scope":4988,"src":"4487:199:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3655,"nodeType":"Block","src":"5158:207:31","statements":[{"id":3654,"nodeType":"UncheckedBlock","src":"5168:191:31","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3641,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3636,"src":"5306:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3642,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"5312:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3643,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3636,"src":"5316:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5312:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3645,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5311:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3648,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3632,"src":"5337:9:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3646,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"5321:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":3647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5330:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"5321:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5321:26:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5311:36:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3651,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5310:38:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5306:42:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3640,"id":3653,"nodeType":"Return","src":"5299:49:31"}]}]},"documentation":{"id":3630,"nodeType":"StructuredDocumentation","src":"4692:374:31","text":" @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."},"id":3656,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5080:7:31","nodeType":"FunctionDefinition","parameters":{"id":3637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3632,"mutability":"mutable","name":"condition","nameLocation":"5093:9:31","nodeType":"VariableDeclaration","scope":3656,"src":"5088:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3631,"name":"bool","nodeType":"ElementaryTypeName","src":"5088:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3634,"mutability":"mutable","name":"a","nameLocation":"5112:1:31","nodeType":"VariableDeclaration","scope":3656,"src":"5104:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3633,"name":"uint256","nodeType":"ElementaryTypeName","src":"5104:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3636,"mutability":"mutable","name":"b","nameLocation":"5123:1:31","nodeType":"VariableDeclaration","scope":3656,"src":"5115:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3635,"name":"uint256","nodeType":"ElementaryTypeName","src":"5115:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5087:38:31"},"returnParameters":{"id":3640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3639,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3656,"src":"5149:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3638,"name":"uint256","nodeType":"ElementaryTypeName","src":"5149:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5148:9:31"},"scope":4988,"src":"5071:294:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3674,"nodeType":"Block","src":"5502:44:31","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3667,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3659,"src":"5527:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3668,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3661,"src":"5531:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5527:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3670,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3659,"src":"5534:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3671,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3661,"src":"5537:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3666,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"5519:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5519:20:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3665,"id":3673,"nodeType":"Return","src":"5512:27:31"}]},"documentation":{"id":3657,"nodeType":"StructuredDocumentation","src":"5371:59:31","text":" @dev Returns the largest of two numbers."},"id":3675,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5444:3:31","nodeType":"FunctionDefinition","parameters":{"id":3662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3659,"mutability":"mutable","name":"a","nameLocation":"5456:1:31","nodeType":"VariableDeclaration","scope":3675,"src":"5448:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3658,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3661,"mutability":"mutable","name":"b","nameLocation":"5467:1:31","nodeType":"VariableDeclaration","scope":3675,"src":"5459:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3660,"name":"uint256","nodeType":"ElementaryTypeName","src":"5459:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5447:22:31"},"returnParameters":{"id":3665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3675,"src":"5493:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3663,"name":"uint256","nodeType":"ElementaryTypeName","src":"5493:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5492:9:31"},"scope":4988,"src":"5435:111:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3693,"nodeType":"Block","src":"5684:44:31","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3686,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3678,"src":"5709:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3687,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"5713:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5709:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3689,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3678,"src":"5716:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3690,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"5719:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3685,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"5701:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5701:20:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3684,"id":3692,"nodeType":"Return","src":"5694:27:31"}]},"documentation":{"id":3676,"nodeType":"StructuredDocumentation","src":"5552:60:31","text":" @dev Returns the smallest of two numbers."},"id":3694,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5626:3:31","nodeType":"FunctionDefinition","parameters":{"id":3681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3678,"mutability":"mutable","name":"a","nameLocation":"5638:1:31","nodeType":"VariableDeclaration","scope":3694,"src":"5630:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3677,"name":"uint256","nodeType":"ElementaryTypeName","src":"5630:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3680,"mutability":"mutable","name":"b","nameLocation":"5649:1:31","nodeType":"VariableDeclaration","scope":3694,"src":"5641:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3679,"name":"uint256","nodeType":"ElementaryTypeName","src":"5641:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5629:22:31"},"returnParameters":{"id":3684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3683,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3694,"src":"5675:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3682,"name":"uint256","nodeType":"ElementaryTypeName","src":"5675:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5674:9:31"},"scope":4988,"src":"5617:111:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3716,"nodeType":"Block","src":"5912:82:31","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3704,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"5967:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3705,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3699,"src":"5971:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5967:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3707,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5966:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3708,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"5977:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3709,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3699,"src":"5981:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5977:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3711,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5976:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":3712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5986:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5976:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5966:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3703,"id":3715,"nodeType":"Return","src":"5959:28:31"}]},"documentation":{"id":3695,"nodeType":"StructuredDocumentation","src":"5734:102:31","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":3717,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5850:7:31","nodeType":"FunctionDefinition","parameters":{"id":3700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3697,"mutability":"mutable","name":"a","nameLocation":"5866:1:31","nodeType":"VariableDeclaration","scope":3717,"src":"5858:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3696,"name":"uint256","nodeType":"ElementaryTypeName","src":"5858:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3699,"mutability":"mutable","name":"b","nameLocation":"5877:1:31","nodeType":"VariableDeclaration","scope":3717,"src":"5869:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3698,"name":"uint256","nodeType":"ElementaryTypeName","src":"5869:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5857:22:31"},"returnParameters":{"id":3703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3702,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3717,"src":"5903:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3701,"name":"uint256","nodeType":"ElementaryTypeName","src":"5903:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5902:9:31"},"scope":4988,"src":"5841:153:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3757,"nodeType":"Block","src":"6286:633:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3727,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3722,"src":"6300:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6305:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6300:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3738,"nodeType":"IfStatement","src":"6296:150:31","trueBody":{"id":3737,"nodeType":"Block","src":"6308:138:31","statements":[{"expression":{"arguments":[{"expression":{"id":3733,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"6412:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":3734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6418:16:31","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":2776,"src":"6412:22:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3730,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"6400:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":3732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6406:5:31","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2808,"src":"6400:11:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6400:35:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3736,"nodeType":"ExpressionStatement","src":"6400:35:31"}]}},{"id":3756,"nodeType":"UncheckedBlock","src":"6829:84:31","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3741,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3720,"src":"6876:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6880:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6876:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3739,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"6860:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":3740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6869:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"6860:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6860:22:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3745,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3720,"src":"6887:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6891:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6887:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3748,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6886:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3749,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3722,"src":"6896:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6886:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6900:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6886:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3753,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6885:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6860:42:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3726,"id":3755,"nodeType":"Return","src":"6853:49:31"}]}]},"documentation":{"id":3718,"nodeType":"StructuredDocumentation","src":"6000:210:31","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"id":3758,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6224:7:31","nodeType":"FunctionDefinition","parameters":{"id":3723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3720,"mutability":"mutable","name":"a","nameLocation":"6240:1:31","nodeType":"VariableDeclaration","scope":3758,"src":"6232:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3719,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3722,"mutability":"mutable","name":"b","nameLocation":"6251:1:31","nodeType":"VariableDeclaration","scope":3758,"src":"6243:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3721,"name":"uint256","nodeType":"ElementaryTypeName","src":"6243:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6231:22:31"},"returnParameters":{"id":3726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3725,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3758,"src":"6277:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3724,"name":"uint256","nodeType":"ElementaryTypeName","src":"6277:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6276:9:31"},"scope":4988,"src":"6215:704:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3893,"nodeType":"Block","src":"7340:3585:31","statements":[{"id":3892,"nodeType":"UncheckedBlock","src":"7350:3569:31","statements":[{"assignments":[3771,3773],"declarations":[{"constant":false,"id":3771,"mutability":"mutable","name":"high","nameLocation":"7383:4:31","nodeType":"VariableDeclaration","scope":3892,"src":"7375:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3770,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3773,"mutability":"mutable","name":"low","nameLocation":"7397:3:31","nodeType":"VariableDeclaration","scope":3892,"src":"7389:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3772,"name":"uint256","nodeType":"ElementaryTypeName","src":"7389:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3778,"initialValue":{"arguments":[{"id":3775,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"7411:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3776,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3763,"src":"7414:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3774,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3407,"src":"7404:6:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":3777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7404:12:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7374:42:31"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3779,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3771,"src":"7498:4:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7506:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7498:9:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3787,"nodeType":"IfStatement","src":"7494:365:31","trueBody":{"id":3786,"nodeType":"Block","src":"7509:350:31","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3782,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"7827:3:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3783,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"7833:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7827:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3769,"id":3785,"nodeType":"Return","src":"7820:24:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3788,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"7969:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3789,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3771,"src":"7984:4:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7969:19:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3806,"nodeType":"IfStatement","src":"7965:142:31","trueBody":{"id":3805,"nodeType":"Block","src":"7990:117:31","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3795,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"8028:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8043:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8028:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3798,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"8046:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":3799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8052:16:31","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":2776,"src":"8046:22:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3800,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"8070:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":3801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8076:14:31","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":2772,"src":"8070:20:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3794,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"8020:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8020:71:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3791,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"8008:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":3793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8014:5:31","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2808,"src":"8008:11:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8008:84:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3804,"nodeType":"ExpressionStatement","src":"8008:84:31"}]}},{"assignments":[3808],"declarations":[{"constant":false,"id":3808,"mutability":"mutable","name":"remainder","nameLocation":"8367:9:31","nodeType":"VariableDeclaration","scope":3892,"src":"8359:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3807,"name":"uint256","nodeType":"ElementaryTypeName","src":"8359:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3809,"nodeType":"VariableDeclarationStatement","src":"8359:17:31"},{"AST":{"nativeSrc":"8415:283:31","nodeType":"YulBlock","src":"8415:283:31","statements":[{"nativeSrc":"8484:38:31","nodeType":"YulAssignment","src":"8484:38:31","value":{"arguments":[{"name":"x","nativeSrc":"8504:1:31","nodeType":"YulIdentifier","src":"8504:1:31"},{"name":"y","nativeSrc":"8507:1:31","nodeType":"YulIdentifier","src":"8507:1:31"},{"name":"denominator","nativeSrc":"8510:11:31","nodeType":"YulIdentifier","src":"8510:11:31"}],"functionName":{"name":"mulmod","nativeSrc":"8497:6:31","nodeType":"YulIdentifier","src":"8497:6:31"},"nativeSrc":"8497:25:31","nodeType":"YulFunctionCall","src":"8497:25:31"},"variableNames":[{"name":"remainder","nativeSrc":"8484:9:31","nodeType":"YulIdentifier","src":"8484:9:31"}]},{"nativeSrc":"8604:37:31","nodeType":"YulAssignment","src":"8604:37:31","value":{"arguments":[{"name":"high","nativeSrc":"8616:4:31","nodeType":"YulIdentifier","src":"8616:4:31"},{"arguments":[{"name":"remainder","nativeSrc":"8625:9:31","nodeType":"YulIdentifier","src":"8625:9:31"},{"name":"low","nativeSrc":"8636:3:31","nodeType":"YulIdentifier","src":"8636:3:31"}],"functionName":{"name":"gt","nativeSrc":"8622:2:31","nodeType":"YulIdentifier","src":"8622:2:31"},"nativeSrc":"8622:18:31","nodeType":"YulFunctionCall","src":"8622:18:31"}],"functionName":{"name":"sub","nativeSrc":"8612:3:31","nodeType":"YulIdentifier","src":"8612:3:31"},"nativeSrc":"8612:29:31","nodeType":"YulFunctionCall","src":"8612:29:31"},"variableNames":[{"name":"high","nativeSrc":"8604:4:31","nodeType":"YulIdentifier","src":"8604:4:31"}]},{"nativeSrc":"8658:26:31","nodeType":"YulAssignment","src":"8658:26:31","value":{"arguments":[{"name":"low","nativeSrc":"8669:3:31","nodeType":"YulIdentifier","src":"8669:3:31"},{"name":"remainder","nativeSrc":"8674:9:31","nodeType":"YulIdentifier","src":"8674:9:31"}],"functionName":{"name":"sub","nativeSrc":"8665:3:31","nodeType":"YulIdentifier","src":"8665:3:31"},"nativeSrc":"8665:19:31","nodeType":"YulFunctionCall","src":"8665:19:31"},"variableNames":[{"name":"low","nativeSrc":"8658:3:31","nodeType":"YulIdentifier","src":"8658:3:31"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3765,"isOffset":false,"isSlot":false,"src":"8510:11:31","valueSize":1},{"declaration":3771,"isOffset":false,"isSlot":false,"src":"8604:4:31","valueSize":1},{"declaration":3771,"isOffset":false,"isSlot":false,"src":"8616:4:31","valueSize":1},{"declaration":3773,"isOffset":false,"isSlot":false,"src":"8636:3:31","valueSize":1},{"declaration":3773,"isOffset":false,"isSlot":false,"src":"8658:3:31","valueSize":1},{"declaration":3773,"isOffset":false,"isSlot":false,"src":"8669:3:31","valueSize":1},{"declaration":3808,"isOffset":false,"isSlot":false,"src":"8484:9:31","valueSize":1},{"declaration":3808,"isOffset":false,"isSlot":false,"src":"8625:9:31","valueSize":1},{"declaration":3808,"isOffset":false,"isSlot":false,"src":"8674:9:31","valueSize":1},{"declaration":3761,"isOffset":false,"isSlot":false,"src":"8504:1:31","valueSize":1},{"declaration":3763,"isOffset":false,"isSlot":false,"src":"8507:1:31","valueSize":1}],"flags":["memory-safe"],"id":3810,"nodeType":"InlineAssembly","src":"8390:308:31"},{"assignments":[3812],"declarations":[{"constant":false,"id":3812,"mutability":"mutable","name":"twos","nameLocation":"8910:4:31","nodeType":"VariableDeclaration","scope":3892,"src":"8902:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3811,"name":"uint256","nodeType":"ElementaryTypeName","src":"8902:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3819,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3813,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"8917:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":3814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8932:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3815,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"8936:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8932:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8931:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8917:31:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8902:46:31"},{"AST":{"nativeSrc":"8987:359:31","nodeType":"YulBlock","src":"8987:359:31","statements":[{"nativeSrc":"9052:37:31","nodeType":"YulAssignment","src":"9052:37:31","value":{"arguments":[{"name":"denominator","nativeSrc":"9071:11:31","nodeType":"YulIdentifier","src":"9071:11:31"},{"name":"twos","nativeSrc":"9084:4:31","nodeType":"YulIdentifier","src":"9084:4:31"}],"functionName":{"name":"div","nativeSrc":"9067:3:31","nodeType":"YulIdentifier","src":"9067:3:31"},"nativeSrc":"9067:22:31","nodeType":"YulFunctionCall","src":"9067:22:31"},"variableNames":[{"name":"denominator","nativeSrc":"9052:11:31","nodeType":"YulIdentifier","src":"9052:11:31"}]},{"nativeSrc":"9153:21:31","nodeType":"YulAssignment","src":"9153:21:31","value":{"arguments":[{"name":"low","nativeSrc":"9164:3:31","nodeType":"YulIdentifier","src":"9164:3:31"},{"name":"twos","nativeSrc":"9169:4:31","nodeType":"YulIdentifier","src":"9169:4:31"}],"functionName":{"name":"div","nativeSrc":"9160:3:31","nodeType":"YulIdentifier","src":"9160:3:31"},"nativeSrc":"9160:14:31","nodeType":"YulFunctionCall","src":"9160:14:31"},"variableNames":[{"name":"low","nativeSrc":"9153:3:31","nodeType":"YulIdentifier","src":"9153:3:31"}]},{"nativeSrc":"9293:39:31","nodeType":"YulAssignment","src":"9293:39:31","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9313:1:31","nodeType":"YulLiteral","src":"9313:1:31","type":"","value":"0"},{"name":"twos","nativeSrc":"9316:4:31","nodeType":"YulIdentifier","src":"9316:4:31"}],"functionName":{"name":"sub","nativeSrc":"9309:3:31","nodeType":"YulIdentifier","src":"9309:3:31"},"nativeSrc":"9309:12:31","nodeType":"YulFunctionCall","src":"9309:12:31"},{"name":"twos","nativeSrc":"9323:4:31","nodeType":"YulIdentifier","src":"9323:4:31"}],"functionName":{"name":"div","nativeSrc":"9305:3:31","nodeType":"YulIdentifier","src":"9305:3:31"},"nativeSrc":"9305:23:31","nodeType":"YulFunctionCall","src":"9305:23:31"},{"kind":"number","nativeSrc":"9330:1:31","nodeType":"YulLiteral","src":"9330:1:31","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9301:3:31","nodeType":"YulIdentifier","src":"9301:3:31"},"nativeSrc":"9301:31:31","nodeType":"YulFunctionCall","src":"9301:31:31"},"variableNames":[{"name":"twos","nativeSrc":"9293:4:31","nodeType":"YulIdentifier","src":"9293:4:31"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3765,"isOffset":false,"isSlot":false,"src":"9052:11:31","valueSize":1},{"declaration":3765,"isOffset":false,"isSlot":false,"src":"9071:11:31","valueSize":1},{"declaration":3773,"isOffset":false,"isSlot":false,"src":"9153:3:31","valueSize":1},{"declaration":3773,"isOffset":false,"isSlot":false,"src":"9164:3:31","valueSize":1},{"declaration":3812,"isOffset":false,"isSlot":false,"src":"9084:4:31","valueSize":1},{"declaration":3812,"isOffset":false,"isSlot":false,"src":"9169:4:31","valueSize":1},{"declaration":3812,"isOffset":false,"isSlot":false,"src":"9293:4:31","valueSize":1},{"declaration":3812,"isOffset":false,"isSlot":false,"src":"9316:4:31","valueSize":1},{"declaration":3812,"isOffset":false,"isSlot":false,"src":"9323:4:31","valueSize":1}],"flags":["memory-safe"],"id":3820,"nodeType":"InlineAssembly","src":"8962:384:31"},{"expression":{"id":3825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3821,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"9409:3:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3822,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3771,"src":"9416:4:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3823,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3812,"src":"9423:4:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9416:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9409:18:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3826,"nodeType":"ExpressionStatement","src":"9409:18:31"},{"assignments":[3828],"declarations":[{"constant":false,"id":3828,"mutability":"mutable","name":"inverse","nameLocation":"9770:7:31","nodeType":"VariableDeclaration","scope":3892,"src":"9762:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3827,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3835,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":3829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9781:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3830,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"9785:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9781:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3832,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9780:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":3833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9800:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9780:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9762:39:31"},{"expression":{"id":3842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3836,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10018:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10029:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3838,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"10033:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3839,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10047:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10033:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10029:25:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10018:36:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3843,"nodeType":"ExpressionStatement","src":"10018:36:31"},{"expression":{"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3844,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10088:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10099:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3846,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"10103:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3847,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10117:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10099:25:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10088:36:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3851,"nodeType":"ExpressionStatement","src":"10088:36:31"},{"expression":{"id":3858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3852,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10160:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10171:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3854,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"10175:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3855,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10189:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10175:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10171:25:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10160:36:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3859,"nodeType":"ExpressionStatement","src":"10160:36:31"},{"expression":{"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3860,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10231:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10242:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3862,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"10246:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3863,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10260:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10246:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10242:25:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10231:36:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3867,"nodeType":"ExpressionStatement","src":"10231:36:31"},{"expression":{"id":3874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3868,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10304:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10315:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3870,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"10319:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3871,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10333:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10319:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10315:25:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10304:36:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3875,"nodeType":"ExpressionStatement","src":"10304:36:31"},{"expression":{"id":3882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3876,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10378:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10389:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3878,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"10393:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3879,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10407:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10393:21:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10389:25:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10378:36:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3883,"nodeType":"ExpressionStatement","src":"10378:36:31"},{"expression":{"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3884,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3768,"src":"10859:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3885,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"10868:3:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3886,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3828,"src":"10874:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10868:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10859:22:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3889,"nodeType":"ExpressionStatement","src":"10859:22:31"},{"expression":{"id":3890,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3768,"src":"10902:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3769,"id":3891,"nodeType":"Return","src":"10895:13:31"}]}]},"documentation":{"id":3759,"nodeType":"StructuredDocumentation","src":"6925:312:31","text":" @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"id":3894,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7251:6:31","nodeType":"FunctionDefinition","parameters":{"id":3766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3761,"mutability":"mutable","name":"x","nameLocation":"7266:1:31","nodeType":"VariableDeclaration","scope":3894,"src":"7258:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3760,"name":"uint256","nodeType":"ElementaryTypeName","src":"7258:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3763,"mutability":"mutable","name":"y","nameLocation":"7277:1:31","nodeType":"VariableDeclaration","scope":3894,"src":"7269:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3762,"name":"uint256","nodeType":"ElementaryTypeName","src":"7269:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3765,"mutability":"mutable","name":"denominator","nameLocation":"7288:11:31","nodeType":"VariableDeclaration","scope":3894,"src":"7280:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3764,"name":"uint256","nodeType":"ElementaryTypeName","src":"7280:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7257:43:31"},"returnParameters":{"id":3769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3768,"mutability":"mutable","name":"result","nameLocation":"7332:6:31","nodeType":"VariableDeclaration","scope":3894,"src":"7324:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3767,"name":"uint256","nodeType":"ElementaryTypeName","src":"7324:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7323:16:31"},"scope":4988,"src":"7242:3683:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3930,"nodeType":"Block","src":"11164:128:31","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3910,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3897,"src":"11188:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3911,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"11191:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3912,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3901,"src":"11194:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3909,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[3894,3931],"referencedDeclaration":3894,"src":"11181:6:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11181:25:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3917,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3904,"src":"11242:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}],"id":3916,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"11225:16:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3379_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11225:26:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3920,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3897,"src":"11262:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3921,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"11265:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3922,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3901,"src":"11268:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3919,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"11255:6:31","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11255:25:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11283:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11255:29:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11225:59:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3914,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"11209:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":3915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11218:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"11209:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11209:76:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11181:104:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3908,"id":3929,"nodeType":"Return","src":"11174:111:31"}]},"documentation":{"id":3895,"nodeType":"StructuredDocumentation","src":"10931:118:31","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":3931,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11063:6:31","nodeType":"FunctionDefinition","parameters":{"id":3905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3897,"mutability":"mutable","name":"x","nameLocation":"11078:1:31","nodeType":"VariableDeclaration","scope":3931,"src":"11070:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3896,"name":"uint256","nodeType":"ElementaryTypeName","src":"11070:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3899,"mutability":"mutable","name":"y","nameLocation":"11089:1:31","nodeType":"VariableDeclaration","scope":3931,"src":"11081:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3898,"name":"uint256","nodeType":"ElementaryTypeName","src":"11081:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3901,"mutability":"mutable","name":"denominator","nameLocation":"11100:11:31","nodeType":"VariableDeclaration","scope":3931,"src":"11092:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3900,"name":"uint256","nodeType":"ElementaryTypeName","src":"11092:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3904,"mutability":"mutable","name":"rounding","nameLocation":"11122:8:31","nodeType":"VariableDeclaration","scope":3931,"src":"11113:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"},"typeName":{"id":3903,"nodeType":"UserDefinedTypeName","pathNode":{"id":3902,"name":"Rounding","nameLocations":["11113:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":3379,"src":"11113:8:31"},"referencedDeclaration":3379,"src":"11113:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11069:62:31"},"returnParameters":{"id":3908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3931,"src":"11155:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3906,"name":"uint256","nodeType":"ElementaryTypeName","src":"11155:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11154:9:31"},"scope":4988,"src":"11054:238:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3980,"nodeType":"Block","src":"11500:245:31","statements":[{"id":3979,"nodeType":"UncheckedBlock","src":"11510:229:31","statements":[{"assignments":[3944,3946],"declarations":[{"constant":false,"id":3944,"mutability":"mutable","name":"high","nameLocation":"11543:4:31","nodeType":"VariableDeclaration","scope":3979,"src":"11535:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3943,"name":"uint256","nodeType":"ElementaryTypeName","src":"11535:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3946,"mutability":"mutable","name":"low","nameLocation":"11557:3:31","nodeType":"VariableDeclaration","scope":3979,"src":"11549:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3945,"name":"uint256","nodeType":"ElementaryTypeName","src":"11549:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3951,"initialValue":{"arguments":[{"id":3948,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3934,"src":"11571:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3949,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3936,"src":"11574:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3947,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3407,"src":"11564:6:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11564:12:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11534:42:31"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3952,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"11594:4:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11602:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":3954,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"11607:1:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11602:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11594:14:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3965,"nodeType":"IfStatement","src":"11590:86:31","trueBody":{"id":3964,"nodeType":"Block","src":"11610:66:31","statements":[{"expression":{"arguments":[{"expression":{"id":3960,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"11640:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":3961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11646:14:31","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":2772,"src":"11640:20:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3957,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"11628:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":3959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11634:5:31","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2808,"src":"11628:11:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11628:33:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3963,"nodeType":"ExpressionStatement","src":"11628:33:31"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3966,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"11697:4:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":3967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11706:3:31","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3968,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"11712:1:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11706:7:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":3970,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11705:9:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11697:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3972,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11696:19:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3973,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3946,"src":"11719:3:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":3974,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"11726:1:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11719:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3976,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11718:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11696:32:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3942,"id":3978,"nodeType":"Return","src":"11689:39:31"}]}]},"documentation":{"id":3932,"nodeType":"StructuredDocumentation","src":"11298:111:31","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"id":3981,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11423:6:31","nodeType":"FunctionDefinition","parameters":{"id":3939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3934,"mutability":"mutable","name":"x","nameLocation":"11438:1:31","nodeType":"VariableDeclaration","scope":3981,"src":"11430:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3933,"name":"uint256","nodeType":"ElementaryTypeName","src":"11430:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3936,"mutability":"mutable","name":"y","nameLocation":"11449:1:31","nodeType":"VariableDeclaration","scope":3981,"src":"11441:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3935,"name":"uint256","nodeType":"ElementaryTypeName","src":"11441:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3938,"mutability":"mutable","name":"n","nameLocation":"11458:1:31","nodeType":"VariableDeclaration","scope":3981,"src":"11452:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3937,"name":"uint8","nodeType":"ElementaryTypeName","src":"11452:5:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11429:31:31"},"returnParameters":{"id":3942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3941,"mutability":"mutable","name":"result","nameLocation":"11492:6:31","nodeType":"VariableDeclaration","scope":3981,"src":"11484:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3940,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11483:16:31"},"scope":4988,"src":"11414:331:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4019,"nodeType":"Block","src":"11963:113:31","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3997,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3984,"src":"11987:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3998,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"11990:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3999,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3988,"src":"11993:1:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":3996,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[3981,4020],"referencedDeclaration":3981,"src":"11980:6:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":4000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11980:15:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4004,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3991,"src":"12031:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}],"id":4003,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"12014:16:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3379_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12014:26:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4007,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3984,"src":"12051:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4008,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"12054:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12057:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":4010,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3988,"src":"12062:1:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12057:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4006,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"12044:6:31","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12044:20:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12067:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12044:24:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12014:54:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4001,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"11998:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12007:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"11998:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11998:71:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11980:89:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3995,"id":4018,"nodeType":"Return","src":"11973:96:31"}]},"documentation":{"id":3982,"nodeType":"StructuredDocumentation","src":"11751:109:31","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"id":4020,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11874:6:31","nodeType":"FunctionDefinition","parameters":{"id":3992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3984,"mutability":"mutable","name":"x","nameLocation":"11889:1:31","nodeType":"VariableDeclaration","scope":4020,"src":"11881:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3983,"name":"uint256","nodeType":"ElementaryTypeName","src":"11881:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3986,"mutability":"mutable","name":"y","nameLocation":"11900:1:31","nodeType":"VariableDeclaration","scope":4020,"src":"11892:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3985,"name":"uint256","nodeType":"ElementaryTypeName","src":"11892:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3988,"mutability":"mutable","name":"n","nameLocation":"11909:1:31","nodeType":"VariableDeclaration","scope":4020,"src":"11903:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3987,"name":"uint8","nodeType":"ElementaryTypeName","src":"11903:5:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3991,"mutability":"mutable","name":"rounding","nameLocation":"11921:8:31","nodeType":"VariableDeclaration","scope":4020,"src":"11912:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"},"typeName":{"id":3990,"nodeType":"UserDefinedTypeName","pathNode":{"id":3989,"name":"Rounding","nameLocations":["11912:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":3379,"src":"11912:8:31"},"referencedDeclaration":3379,"src":"11912:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11880:50:31"},"returnParameters":{"id":3995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4020,"src":"11954:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3993,"name":"uint256","nodeType":"ElementaryTypeName","src":"11954:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11953:9:31"},"scope":4988,"src":"11865:211:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4116,"nodeType":"Block","src":"12710:1849:31","statements":[{"id":4115,"nodeType":"UncheckedBlock","src":"12720:1833:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4030,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4025,"src":"12748:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12753:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12748:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4035,"nodeType":"IfStatement","src":"12744:20:31","trueBody":{"expression":{"hexValue":"30","id":4033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4029,"id":4034,"nodeType":"Return","src":"12756:8:31"}},{"assignments":[4037],"declarations":[{"constant":false,"id":4037,"mutability":"mutable","name":"remainder","nameLocation":"13243:9:31","nodeType":"VariableDeclaration","scope":4115,"src":"13235:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4036,"name":"uint256","nodeType":"ElementaryTypeName","src":"13235:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4041,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4038,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"13255:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4039,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4025,"src":"13259:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13255:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13235:25:31"},{"assignments":[4043],"declarations":[{"constant":false,"id":4043,"mutability":"mutable","name":"gcd","nameLocation":"13282:3:31","nodeType":"VariableDeclaration","scope":4115,"src":"13274:11:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4042,"name":"uint256","nodeType":"ElementaryTypeName","src":"13274:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4045,"initialValue":{"id":4044,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4025,"src":"13288:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13274:15:31"},{"assignments":[4047],"declarations":[{"constant":false,"id":4047,"mutability":"mutable","name":"x","nameLocation":"13432:1:31","nodeType":"VariableDeclaration","scope":4115,"src":"13425:8:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4046,"name":"int256","nodeType":"ElementaryTypeName","src":"13425:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4049,"initialValue":{"hexValue":"30","id":4048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13436:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13425:12:31"},{"assignments":[4051],"declarations":[{"constant":false,"id":4051,"mutability":"mutable","name":"y","nameLocation":"13458:1:31","nodeType":"VariableDeclaration","scope":4115,"src":"13451:8:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4050,"name":"int256","nodeType":"ElementaryTypeName","src":"13451:6:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4053,"initialValue":{"hexValue":"31","id":4052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13462:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13451:12:31"},{"body":{"id":4090,"nodeType":"Block","src":"13501:882:31","statements":[{"assignments":[4058],"declarations":[{"constant":false,"id":4058,"mutability":"mutable","name":"quotient","nameLocation":"13527:8:31","nodeType":"VariableDeclaration","scope":4090,"src":"13519:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4057,"name":"uint256","nodeType":"ElementaryTypeName","src":"13519:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4062,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4059,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"13538:3:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4060,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"13544:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13538:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13519:34:31"},{"expression":{"id":4073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4063,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"13573:3:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4064,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"13578:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4065,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13572:16:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4066,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"13678:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4067,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"13923:3:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4068,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"13929:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4069,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"13941:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13929:20:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13923:26:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4072,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13591:376:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13572:395:31","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4074,"nodeType":"ExpressionStatement","src":"13572:395:31"},{"expression":{"id":4088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4075,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4047,"src":"13987:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":4076,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"13990:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4077,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13986:6:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4078,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"14072:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4079,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4047,"src":"14326:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4080,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"14330:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":4083,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"14341:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14334:6:31","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4081,"name":"int256","nodeType":"ElementaryTypeName","src":"14334:6:31","typeDescriptions":{}}},"id":4084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14334:16:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14330:20:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14326:24:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4087,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13995:373:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"13986:382:31","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4089,"nodeType":"ExpressionStatement","src":"13986:382:31"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4054,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"13485:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13498:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13485:14:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4091,"nodeType":"WhileStatement","src":"13478:905:31"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4092,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"14401:3:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":4093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14408:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14401:8:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4097,"nodeType":"IfStatement","src":"14397:22:31","trueBody":{"expression":{"hexValue":"30","id":4095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14418:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4029,"id":4096,"nodeType":"Return","src":"14411:8:31"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4099,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4047,"src":"14470:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14474:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14470:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4102,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4025,"src":"14477:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":4106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14489:2:31","subExpression":{"id":4105,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4047,"src":"14490:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14481:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4103,"name":"uint256","nodeType":"ElementaryTypeName","src":"14481:7:31","typeDescriptions":{}}},"id":4107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14481:11:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14477:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":4111,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4047,"src":"14502:1:31","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14494:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4109,"name":"uint256","nodeType":"ElementaryTypeName","src":"14494:7:31","typeDescriptions":{}}},"id":4112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14494:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4098,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"14462:7:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":4113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14462:43:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4029,"id":4114,"nodeType":"Return","src":"14455:50:31"}]}]},"documentation":{"id":4021,"nodeType":"StructuredDocumentation","src":"12082:553:31","text":" @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."},"id":4117,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12649:6:31","nodeType":"FunctionDefinition","parameters":{"id":4026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4023,"mutability":"mutable","name":"a","nameLocation":"12664:1:31","nodeType":"VariableDeclaration","scope":4117,"src":"12656:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4022,"name":"uint256","nodeType":"ElementaryTypeName","src":"12656:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4025,"mutability":"mutable","name":"n","nameLocation":"12675:1:31","nodeType":"VariableDeclaration","scope":4117,"src":"12667:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4024,"name":"uint256","nodeType":"ElementaryTypeName","src":"12667:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12655:22:31"},"returnParameters":{"id":4029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4028,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4117,"src":"12701:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4027,"name":"uint256","nodeType":"ElementaryTypeName","src":"12701:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12700:9:31"},"scope":4988,"src":"12640:1919:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4137,"nodeType":"Block","src":"15159:82:31","statements":[{"id":4136,"nodeType":"UncheckedBlock","src":"15169:66:31","statements":[{"expression":{"arguments":[{"id":4129,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4120,"src":"15212:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4130,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"15215:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":4131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15219:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15215:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4133,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"15222:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4127,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"15200:4:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15205:6:31","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"15200:11:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15200:24:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4126,"id":4135,"nodeType":"Return","src":"15193:31:31"}]}]},"documentation":{"id":4118,"nodeType":"StructuredDocumentation","src":"14565:514:31","text":" @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."},"id":4138,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15093:11:31","nodeType":"FunctionDefinition","parameters":{"id":4123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4120,"mutability":"mutable","name":"a","nameLocation":"15113:1:31","nodeType":"VariableDeclaration","scope":4138,"src":"15105:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4119,"name":"uint256","nodeType":"ElementaryTypeName","src":"15105:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4122,"mutability":"mutable","name":"p","nameLocation":"15124:1:31","nodeType":"VariableDeclaration","scope":4138,"src":"15116:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4121,"name":"uint256","nodeType":"ElementaryTypeName","src":"15116:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15104:22:31"},"returnParameters":{"id":4126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4138,"src":"15150:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4124,"name":"uint256","nodeType":"ElementaryTypeName","src":"15150:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15149:9:31"},"scope":4988,"src":"15084:157:31","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4173,"nodeType":"Block","src":"16011:174:31","statements":[{"assignments":[4151,4153],"declarations":[{"constant":false,"id":4151,"mutability":"mutable","name":"success","nameLocation":"16027:7:31","nodeType":"VariableDeclaration","scope":4173,"src":"16022:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4150,"name":"bool","nodeType":"ElementaryTypeName","src":"16022:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4153,"mutability":"mutable","name":"result","nameLocation":"16044:6:31","nodeType":"VariableDeclaration","scope":4173,"src":"16036:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4152,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4159,"initialValue":{"arguments":[{"id":4155,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4141,"src":"16064:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4156,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"16067:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4157,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"16070:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4154,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[4198,4280],"referencedDeclaration":4198,"src":"16054:9:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (bool,uint256)"}},"id":4158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16054:18:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16021:51:31"},{"condition":{"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16086:8:31","subExpression":{"id":4160,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4151,"src":"16087:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4170,"nodeType":"IfStatement","src":"16082:74:31","trueBody":{"id":4169,"nodeType":"Block","src":"16096:60:31","statements":[{"expression":{"arguments":[{"expression":{"id":4165,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"16122:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":4166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16128:16:31","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":2776,"src":"16122:22:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4162,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"16110:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":4164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16116:5:31","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2808,"src":"16110:11:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16110:35:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4168,"nodeType":"ExpressionStatement","src":"16110:35:31"}]}},{"expression":{"id":4171,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4153,"src":"16172:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4149,"id":4172,"nodeType":"Return","src":"16165:13:31"}]},"documentation":{"id":4139,"nodeType":"StructuredDocumentation","src":"15247:678:31","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."},"id":4174,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15939:6:31","nodeType":"FunctionDefinition","parameters":{"id":4146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4141,"mutability":"mutable","name":"b","nameLocation":"15954:1:31","nodeType":"VariableDeclaration","scope":4174,"src":"15946:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4140,"name":"uint256","nodeType":"ElementaryTypeName","src":"15946:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4143,"mutability":"mutable","name":"e","nameLocation":"15965:1:31","nodeType":"VariableDeclaration","scope":4174,"src":"15957:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4142,"name":"uint256","nodeType":"ElementaryTypeName","src":"15957:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4145,"mutability":"mutable","name":"m","nameLocation":"15976:1:31","nodeType":"VariableDeclaration","scope":4174,"src":"15968:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4144,"name":"uint256","nodeType":"ElementaryTypeName","src":"15968:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15945:33:31"},"returnParameters":{"id":4149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4148,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4174,"src":"16002:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4147,"name":"uint256","nodeType":"ElementaryTypeName","src":"16002:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16001:9:31"},"scope":4988,"src":"15930:255:31","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4197,"nodeType":"Block","src":"17039:1493:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4188,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"17053:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17058:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17053:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4195,"nodeType":"IfStatement","src":"17049:29:31","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":4191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17069:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":4192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17076:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17068:10:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":4187,"id":4194,"nodeType":"Return","src":"17061:17:31"}},{"AST":{"nativeSrc":"17113:1413:31","nodeType":"YulBlock","src":"17113:1413:31","statements":[{"nativeSrc":"17127:22:31","nodeType":"YulVariableDeclaration","src":"17127:22:31","value":{"arguments":[{"kind":"number","nativeSrc":"17144:4:31","nodeType":"YulLiteral","src":"17144:4:31","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17138:5:31","nodeType":"YulIdentifier","src":"17138:5:31"},"nativeSrc":"17138:11:31","nodeType":"YulFunctionCall","src":"17138:11:31"},"variables":[{"name":"ptr","nativeSrc":"17131:3:31","nodeType":"YulTypedName","src":"17131:3:31","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18057:3:31","nodeType":"YulIdentifier","src":"18057:3:31"},{"kind":"number","nativeSrc":"18062:4:31","nodeType":"YulLiteral","src":"18062:4:31","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18050:6:31","nodeType":"YulIdentifier","src":"18050:6:31"},"nativeSrc":"18050:17:31","nodeType":"YulFunctionCall","src":"18050:17:31"},"nativeSrc":"18050:17:31","nodeType":"YulExpressionStatement","src":"18050:17:31"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18091:3:31","nodeType":"YulIdentifier","src":"18091:3:31"},{"kind":"number","nativeSrc":"18096:4:31","nodeType":"YulLiteral","src":"18096:4:31","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18087:3:31","nodeType":"YulIdentifier","src":"18087:3:31"},"nativeSrc":"18087:14:31","nodeType":"YulFunctionCall","src":"18087:14:31"},{"kind":"number","nativeSrc":"18103:4:31","nodeType":"YulLiteral","src":"18103:4:31","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18080:6:31","nodeType":"YulIdentifier","src":"18080:6:31"},"nativeSrc":"18080:28:31","nodeType":"YulFunctionCall","src":"18080:28:31"},"nativeSrc":"18080:28:31","nodeType":"YulExpressionStatement","src":"18080:28:31"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18132:3:31","nodeType":"YulIdentifier","src":"18132:3:31"},{"kind":"number","nativeSrc":"18137:4:31","nodeType":"YulLiteral","src":"18137:4:31","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18128:3:31","nodeType":"YulIdentifier","src":"18128:3:31"},"nativeSrc":"18128:14:31","nodeType":"YulFunctionCall","src":"18128:14:31"},{"kind":"number","nativeSrc":"18144:4:31","nodeType":"YulLiteral","src":"18144:4:31","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18121:6:31","nodeType":"YulIdentifier","src":"18121:6:31"},"nativeSrc":"18121:28:31","nodeType":"YulFunctionCall","src":"18121:28:31"},"nativeSrc":"18121:28:31","nodeType":"YulExpressionStatement","src":"18121:28:31"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18173:3:31","nodeType":"YulIdentifier","src":"18173:3:31"},{"kind":"number","nativeSrc":"18178:4:31","nodeType":"YulLiteral","src":"18178:4:31","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18169:3:31","nodeType":"YulIdentifier","src":"18169:3:31"},"nativeSrc":"18169:14:31","nodeType":"YulFunctionCall","src":"18169:14:31"},{"name":"b","nativeSrc":"18185:1:31","nodeType":"YulIdentifier","src":"18185:1:31"}],"functionName":{"name":"mstore","nativeSrc":"18162:6:31","nodeType":"YulIdentifier","src":"18162:6:31"},"nativeSrc":"18162:25:31","nodeType":"YulFunctionCall","src":"18162:25:31"},"nativeSrc":"18162:25:31","nodeType":"YulExpressionStatement","src":"18162:25:31"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18211:3:31","nodeType":"YulIdentifier","src":"18211:3:31"},{"kind":"number","nativeSrc":"18216:4:31","nodeType":"YulLiteral","src":"18216:4:31","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18207:3:31","nodeType":"YulIdentifier","src":"18207:3:31"},"nativeSrc":"18207:14:31","nodeType":"YulFunctionCall","src":"18207:14:31"},{"name":"e","nativeSrc":"18223:1:31","nodeType":"YulIdentifier","src":"18223:1:31"}],"functionName":{"name":"mstore","nativeSrc":"18200:6:31","nodeType":"YulIdentifier","src":"18200:6:31"},"nativeSrc":"18200:25:31","nodeType":"YulFunctionCall","src":"18200:25:31"},"nativeSrc":"18200:25:31","nodeType":"YulExpressionStatement","src":"18200:25:31"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18249:3:31","nodeType":"YulIdentifier","src":"18249:3:31"},{"kind":"number","nativeSrc":"18254:4:31","nodeType":"YulLiteral","src":"18254:4:31","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18245:3:31","nodeType":"YulIdentifier","src":"18245:3:31"},"nativeSrc":"18245:14:31","nodeType":"YulFunctionCall","src":"18245:14:31"},{"name":"m","nativeSrc":"18261:1:31","nodeType":"YulIdentifier","src":"18261:1:31"}],"functionName":{"name":"mstore","nativeSrc":"18238:6:31","nodeType":"YulIdentifier","src":"18238:6:31"},"nativeSrc":"18238:25:31","nodeType":"YulFunctionCall","src":"18238:25:31"},"nativeSrc":"18238:25:31","nodeType":"YulExpressionStatement","src":"18238:25:31"},{"nativeSrc":"18425:57:31","nodeType":"YulAssignment","src":"18425:57:31","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18447:3:31","nodeType":"YulIdentifier","src":"18447:3:31"},"nativeSrc":"18447:5:31","nodeType":"YulFunctionCall","src":"18447:5:31"},{"kind":"number","nativeSrc":"18454:4:31","nodeType":"YulLiteral","src":"18454:4:31","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18460:3:31","nodeType":"YulIdentifier","src":"18460:3:31"},{"kind":"number","nativeSrc":"18465:4:31","nodeType":"YulLiteral","src":"18465:4:31","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18471:4:31","nodeType":"YulLiteral","src":"18471:4:31","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18477:4:31","nodeType":"YulLiteral","src":"18477:4:31","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18436:10:31","nodeType":"YulIdentifier","src":"18436:10:31"},"nativeSrc":"18436:46:31","nodeType":"YulFunctionCall","src":"18436:46:31"},"variableNames":[{"name":"success","nativeSrc":"18425:7:31","nodeType":"YulIdentifier","src":"18425:7:31"}]},{"nativeSrc":"18495:21:31","nodeType":"YulAssignment","src":"18495:21:31","value":{"arguments":[{"kind":"number","nativeSrc":"18511:4:31","nodeType":"YulLiteral","src":"18511:4:31","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18505:5:31","nodeType":"YulIdentifier","src":"18505:5:31"},"nativeSrc":"18505:11:31","nodeType":"YulFunctionCall","src":"18505:11:31"},"variableNames":[{"name":"result","nativeSrc":"18495:6:31","nodeType":"YulIdentifier","src":"18495:6:31"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4177,"isOffset":false,"isSlot":false,"src":"18185:1:31","valueSize":1},{"declaration":4179,"isOffset":false,"isSlot":false,"src":"18223:1:31","valueSize":1},{"declaration":4181,"isOffset":false,"isSlot":false,"src":"18261:1:31","valueSize":1},{"declaration":4186,"isOffset":false,"isSlot":false,"src":"18495:6:31","valueSize":1},{"declaration":4184,"isOffset":false,"isSlot":false,"src":"18425:7:31","valueSize":1}],"flags":["memory-safe"],"id":4196,"nodeType":"InlineAssembly","src":"17088:1438:31"}]},"documentation":{"id":4175,"nodeType":"StructuredDocumentation","src":"16191:738:31","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."},"id":4198,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16943:9:31","nodeType":"FunctionDefinition","parameters":{"id":4182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4177,"mutability":"mutable","name":"b","nameLocation":"16961:1:31","nodeType":"VariableDeclaration","scope":4198,"src":"16953:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4176,"name":"uint256","nodeType":"ElementaryTypeName","src":"16953:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4179,"mutability":"mutable","name":"e","nameLocation":"16972:1:31","nodeType":"VariableDeclaration","scope":4198,"src":"16964:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4178,"name":"uint256","nodeType":"ElementaryTypeName","src":"16964:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4181,"mutability":"mutable","name":"m","nameLocation":"16983:1:31","nodeType":"VariableDeclaration","scope":4198,"src":"16975:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4180,"name":"uint256","nodeType":"ElementaryTypeName","src":"16975:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16952:33:31"},"returnParameters":{"id":4187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4184,"mutability":"mutable","name":"success","nameLocation":"17014:7:31","nodeType":"VariableDeclaration","scope":4198,"src":"17009:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4183,"name":"bool","nodeType":"ElementaryTypeName","src":"17009:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4186,"mutability":"mutable","name":"result","nameLocation":"17031:6:31","nodeType":"VariableDeclaration","scope":4198,"src":"17023:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4185,"name":"uint256","nodeType":"ElementaryTypeName","src":"17023:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17008:30:31"},"scope":4988,"src":"16934:1598:31","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4233,"nodeType":"Block","src":"18729:179:31","statements":[{"assignments":[4211,4213],"declarations":[{"constant":false,"id":4211,"mutability":"mutable","name":"success","nameLocation":"18745:7:31","nodeType":"VariableDeclaration","scope":4233,"src":"18740:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4210,"name":"bool","nodeType":"ElementaryTypeName","src":"18740:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4213,"mutability":"mutable","name":"result","nameLocation":"18767:6:31","nodeType":"VariableDeclaration","scope":4233,"src":"18754:19:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4212,"name":"bytes","nodeType":"ElementaryTypeName","src":"18754:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4219,"initialValue":{"arguments":[{"id":4215,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4201,"src":"18787:1:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4216,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4203,"src":"18790:1:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4217,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"18793:1:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4214,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[4198,4280],"referencedDeclaration":4280,"src":"18777:9:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"}},"id":4218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18777:18:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18739:56:31"},{"condition":{"id":4221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18809:8:31","subExpression":{"id":4220,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"18810:7:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4230,"nodeType":"IfStatement","src":"18805:74:31","trueBody":{"id":4229,"nodeType":"Block","src":"18819:60:31","statements":[{"expression":{"arguments":[{"expression":{"id":4225,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"18845:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":4226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18851:16:31","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":2776,"src":"18845:22:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4222,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2809,"src":"18833:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$2809_$","typeString":"type(library Panic)"}},"id":4224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18839:5:31","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":2808,"src":"18833:11:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18833:35:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4228,"nodeType":"ExpressionStatement","src":"18833:35:31"}]}},{"expression":{"id":4231,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4213,"src":"18895:6:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4209,"id":4232,"nodeType":"Return","src":"18888:13:31"}]},"documentation":{"id":4199,"nodeType":"StructuredDocumentation","src":"18538:85:31","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":4234,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18637:6:31","nodeType":"FunctionDefinition","parameters":{"id":4206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4201,"mutability":"mutable","name":"b","nameLocation":"18657:1:31","nodeType":"VariableDeclaration","scope":4234,"src":"18644:14:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4200,"name":"bytes","nodeType":"ElementaryTypeName","src":"18644:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4203,"mutability":"mutable","name":"e","nameLocation":"18673:1:31","nodeType":"VariableDeclaration","scope":4234,"src":"18660:14:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4202,"name":"bytes","nodeType":"ElementaryTypeName","src":"18660:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4205,"mutability":"mutable","name":"m","nameLocation":"18689:1:31","nodeType":"VariableDeclaration","scope":4234,"src":"18676:14:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4204,"name":"bytes","nodeType":"ElementaryTypeName","src":"18676:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18643:48:31"},"returnParameters":{"id":4209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4208,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4234,"src":"18715:12:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4207,"name":"bytes","nodeType":"ElementaryTypeName","src":"18715:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18714:14:31"},"scope":4988,"src":"18628:280:31","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4279,"nodeType":"Block","src":"19162:771:31","statements":[{"condition":{"arguments":[{"id":4249,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"19187:1:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4248,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4313,"src":"19176:10:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":4250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19176:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4258,"nodeType":"IfStatement","src":"19172:47:31","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":4251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19199:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":4254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19216:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19206:9:31","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4252,"name":"bytes","nodeType":"ElementaryTypeName","src":"19210:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19206:12:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4256,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19198:21:31","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":4247,"id":4257,"nodeType":"Return","src":"19191:28:31"}},{"assignments":[4260],"declarations":[{"constant":false,"id":4260,"mutability":"mutable","name":"mLen","nameLocation":"19238:4:31","nodeType":"VariableDeclaration","scope":4279,"src":"19230:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4259,"name":"uint256","nodeType":"ElementaryTypeName","src":"19230:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4263,"initialValue":{"expression":{"id":4261,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"19245:1:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19247:6:31","memberName":"length","nodeType":"MemberAccess","src":"19245:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19230:23:31"},{"expression":{"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4264,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4246,"src":"19335:6:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":4267,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4237,"src":"19361:1:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19363:6:31","memberName":"length","nodeType":"MemberAccess","src":"19361:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4269,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"19371:1:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19373:6:31","memberName":"length","nodeType":"MemberAccess","src":"19371:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4271,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"19381:4:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4272,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4237,"src":"19387:1:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4273,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"19390:1:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4274,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"19393:1:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4265,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19344:3:31","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19348:12:31","memberName":"encodePacked","nodeType":"MemberAccess","src":"19344:16:31","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19344:51:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19335:60:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4277,"nodeType":"ExpressionStatement","src":"19335:60:31"},{"AST":{"nativeSrc":"19431:496:31","nodeType":"YulBlock","src":"19431:496:31","statements":[{"nativeSrc":"19445:32:31","nodeType":"YulVariableDeclaration","src":"19445:32:31","value":{"arguments":[{"name":"result","nativeSrc":"19464:6:31","nodeType":"YulIdentifier","src":"19464:6:31"},{"kind":"number","nativeSrc":"19472:4:31","nodeType":"YulLiteral","src":"19472:4:31","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19460:3:31","nodeType":"YulIdentifier","src":"19460:3:31"},"nativeSrc":"19460:17:31","nodeType":"YulFunctionCall","src":"19460:17:31"},"variables":[{"name":"dataPtr","nativeSrc":"19449:7:31","nodeType":"YulTypedName","src":"19449:7:31","type":""}]},{"nativeSrc":"19567:73:31","nodeType":"YulAssignment","src":"19567:73:31","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19589:3:31","nodeType":"YulIdentifier","src":"19589:3:31"},"nativeSrc":"19589:5:31","nodeType":"YulFunctionCall","src":"19589:5:31"},{"kind":"number","nativeSrc":"19596:4:31","nodeType":"YulLiteral","src":"19596:4:31","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19602:7:31","nodeType":"YulIdentifier","src":"19602:7:31"},{"arguments":[{"name":"result","nativeSrc":"19617:6:31","nodeType":"YulIdentifier","src":"19617:6:31"}],"functionName":{"name":"mload","nativeSrc":"19611:5:31","nodeType":"YulIdentifier","src":"19611:5:31"},"nativeSrc":"19611:13:31","nodeType":"YulFunctionCall","src":"19611:13:31"},{"name":"dataPtr","nativeSrc":"19626:7:31","nodeType":"YulIdentifier","src":"19626:7:31"},{"name":"mLen","nativeSrc":"19635:4:31","nodeType":"YulIdentifier","src":"19635:4:31"}],"functionName":{"name":"staticcall","nativeSrc":"19578:10:31","nodeType":"YulIdentifier","src":"19578:10:31"},"nativeSrc":"19578:62:31","nodeType":"YulFunctionCall","src":"19578:62:31"},"variableNames":[{"name":"success","nativeSrc":"19567:7:31","nodeType":"YulIdentifier","src":"19567:7:31"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19796:6:31","nodeType":"YulIdentifier","src":"19796:6:31"},{"name":"mLen","nativeSrc":"19804:4:31","nodeType":"YulIdentifier","src":"19804:4:31"}],"functionName":{"name":"mstore","nativeSrc":"19789:6:31","nodeType":"YulIdentifier","src":"19789:6:31"},"nativeSrc":"19789:20:31","nodeType":"YulFunctionCall","src":"19789:20:31"},"nativeSrc":"19789:20:31","nodeType":"YulExpressionStatement","src":"19789:20:31"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19892:4:31","nodeType":"YulLiteral","src":"19892:4:31","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19902:7:31","nodeType":"YulIdentifier","src":"19902:7:31"},{"name":"mLen","nativeSrc":"19911:4:31","nodeType":"YulIdentifier","src":"19911:4:31"}],"functionName":{"name":"add","nativeSrc":"19898:3:31","nodeType":"YulIdentifier","src":"19898:3:31"},"nativeSrc":"19898:18:31","nodeType":"YulFunctionCall","src":"19898:18:31"}],"functionName":{"name":"mstore","nativeSrc":"19885:6:31","nodeType":"YulIdentifier","src":"19885:6:31"},"nativeSrc":"19885:32:31","nodeType":"YulFunctionCall","src":"19885:32:31"},"nativeSrc":"19885:32:31","nodeType":"YulExpressionStatement","src":"19885:32:31"}]},"evmVersion":"cancun","externalReferences":[{"declaration":4260,"isOffset":false,"isSlot":false,"src":"19635:4:31","valueSize":1},{"declaration":4260,"isOffset":false,"isSlot":false,"src":"19804:4:31","valueSize":1},{"declaration":4260,"isOffset":false,"isSlot":false,"src":"19911:4:31","valueSize":1},{"declaration":4246,"isOffset":false,"isSlot":false,"src":"19464:6:31","valueSize":1},{"declaration":4246,"isOffset":false,"isSlot":false,"src":"19617:6:31","valueSize":1},{"declaration":4246,"isOffset":false,"isSlot":false,"src":"19796:6:31","valueSize":1},{"declaration":4244,"isOffset":false,"isSlot":false,"src":"19567:7:31","valueSize":1}],"flags":["memory-safe"],"id":4278,"nodeType":"InlineAssembly","src":"19406:521:31"}]},"documentation":{"id":4235,"nodeType":"StructuredDocumentation","src":"18914:88:31","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":4280,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19016:9:31","nodeType":"FunctionDefinition","parameters":{"id":4242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4237,"mutability":"mutable","name":"b","nameLocation":"19048:1:31","nodeType":"VariableDeclaration","scope":4280,"src":"19035:14:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4236,"name":"bytes","nodeType":"ElementaryTypeName","src":"19035:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4239,"mutability":"mutable","name":"e","nameLocation":"19072:1:31","nodeType":"VariableDeclaration","scope":4280,"src":"19059:14:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4238,"name":"bytes","nodeType":"ElementaryTypeName","src":"19059:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4241,"mutability":"mutable","name":"m","nameLocation":"19096:1:31","nodeType":"VariableDeclaration","scope":4280,"src":"19083:14:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4240,"name":"bytes","nodeType":"ElementaryTypeName","src":"19083:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19025:78:31"},"returnParameters":{"id":4247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4244,"mutability":"mutable","name":"success","nameLocation":"19132:7:31","nodeType":"VariableDeclaration","scope":4280,"src":"19127:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4243,"name":"bool","nodeType":"ElementaryTypeName","src":"19127:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4246,"mutability":"mutable","name":"result","nameLocation":"19154:6:31","nodeType":"VariableDeclaration","scope":4280,"src":"19141:19:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4245,"name":"bytes","nodeType":"ElementaryTypeName","src":"19141:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19126:35:31"},"scope":4988,"src":"19007:926:31","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4312,"nodeType":"Block","src":"20088:176:31","statements":[{"body":{"id":4308,"nodeType":"Block","src":"20145:92:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":4303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":4299,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4283,"src":"20163:9:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4301,"indexExpression":{"id":4300,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4289,"src":"20173:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20163:12:31","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20179:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20163:17:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4307,"nodeType":"IfStatement","src":"20159:68:31","trueBody":{"id":4306,"nodeType":"Block","src":"20182:45:31","statements":[{"expression":{"hexValue":"66616c7365","id":4304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20207:5:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4287,"id":4305,"nodeType":"Return","src":"20200:12:31"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4292,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4289,"src":"20118:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4293,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4283,"src":"20122:9:31","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20132:6:31","memberName":"length","nodeType":"MemberAccess","src":"20122:16:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20118:20:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4309,"initializationExpression":{"assignments":[4289],"declarations":[{"constant":false,"id":4289,"mutability":"mutable","name":"i","nameLocation":"20111:1:31","nodeType":"VariableDeclaration","scope":4309,"src":"20103:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4288,"name":"uint256","nodeType":"ElementaryTypeName","src":"20103:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4291,"initialValue":{"hexValue":"30","id":4290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20115:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20103:13:31"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":4297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"20140:3:31","subExpression":{"id":4296,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4289,"src":"20142:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4298,"nodeType":"ExpressionStatement","src":"20140:3:31"},"nodeType":"ForStatement","src":"20098:139:31"},{"expression":{"hexValue":"74727565","id":4310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20253:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4287,"id":4311,"nodeType":"Return","src":"20246:11:31"}]},"documentation":{"id":4281,"nodeType":"StructuredDocumentation","src":"19939:72:31","text":" @dev Returns whether the provided byte array is zero."},"id":4313,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20025:10:31","nodeType":"FunctionDefinition","parameters":{"id":4284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4283,"mutability":"mutable","name":"byteArray","nameLocation":"20049:9:31","nodeType":"VariableDeclaration","scope":4313,"src":"20036:22:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4282,"name":"bytes","nodeType":"ElementaryTypeName","src":"20036:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20035:24:31"},"returnParameters":{"id":4287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4286,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4313,"src":"20082:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4285,"name":"bool","nodeType":"ElementaryTypeName","src":"20082:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20081:6:31"},"scope":4988,"src":"20016:248:31","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":4531,"nodeType":"Block","src":"20624:5124:31","statements":[{"id":4530,"nodeType":"UncheckedBlock","src":"20634:5108:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4321,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"20728:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":4322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20733:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20728:6:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4327,"nodeType":"IfStatement","src":"20724:53:31","trueBody":{"id":4326,"nodeType":"Block","src":"20736:41:31","statements":[{"expression":{"id":4324,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"20761:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4320,"id":4325,"nodeType":"Return","src":"20754:8:31"}]}},{"assignments":[4329],"declarations":[{"constant":false,"id":4329,"mutability":"mutable","name":"aa","nameLocation":"21712:2:31","nodeType":"VariableDeclaration","scope":4530,"src":"21704:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4328,"name":"uint256","nodeType":"ElementaryTypeName","src":"21704:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4331,"initialValue":{"id":4330,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"21717:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21704:14:31"},{"assignments":[4333],"declarations":[{"constant":false,"id":4333,"mutability":"mutable","name":"xn","nameLocation":"21740:2:31","nodeType":"VariableDeclaration","scope":4530,"src":"21732:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4332,"name":"uint256","nodeType":"ElementaryTypeName","src":"21732:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4335,"initialValue":{"hexValue":"31","id":4334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21745:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"21732:14:31"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4336,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"21765:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":4339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21772:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":4338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21777:3:31","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21772:8:31","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":4340,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21771:10:31","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"21765:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4351,"nodeType":"IfStatement","src":"21761:92:31","trueBody":{"id":4350,"nodeType":"Block","src":"21783:70:31","statements":[{"expression":{"id":4344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4342,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"21801:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":4343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21808:3:31","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21801:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4345,"nodeType":"ExpressionStatement","src":"21801:10:31"},{"expression":{"id":4348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4346,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"21829:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":4347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21836:2:31","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21829:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4349,"nodeType":"ExpressionStatement","src":"21829:9:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4352,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"21870:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":4355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21877:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":4354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:31","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21877:7:31","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":4356,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21876:9:31","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"21870:15:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4367,"nodeType":"IfStatement","src":"21866:90:31","trueBody":{"id":4366,"nodeType":"Block","src":"21887:69:31","statements":[{"expression":{"id":4360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4358,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"21905:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":4359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21912:2:31","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21905:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4361,"nodeType":"ExpressionStatement","src":"21905:9:31"},{"expression":{"id":4364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4362,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"21932:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":4363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21939:2:31","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21932:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4365,"nodeType":"ExpressionStatement","src":"21932:9:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4368,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"21973:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":4371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21980:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":4370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21985:2:31","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21980:7:31","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":4372,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21979:9:31","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"21973:15:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4383,"nodeType":"IfStatement","src":"21969:90:31","trueBody":{"id":4382,"nodeType":"Block","src":"21990:69:31","statements":[{"expression":{"id":4376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4374,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"22008:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":4375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22015:2:31","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22008:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4377,"nodeType":"ExpressionStatement","src":"22008:9:31"},{"expression":{"id":4380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4378,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"22035:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":4379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22042:2:31","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22035:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4381,"nodeType":"ExpressionStatement","src":"22035:9:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4384,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"22076:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":4387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22083:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":4386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22088:2:31","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22083:7:31","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":4388,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22082:9:31","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22076:15:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4399,"nodeType":"IfStatement","src":"22072:89:31","trueBody":{"id":4398,"nodeType":"Block","src":"22093:68:31","statements":[{"expression":{"id":4392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4390,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"22111:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":4391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22118:2:31","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22111:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4393,"nodeType":"ExpressionStatement","src":"22111:9:31"},{"expression":{"id":4396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4394,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"22138:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":4395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22145:1:31","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22138:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4397,"nodeType":"ExpressionStatement","src":"22138:8:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4400,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"22178:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":4403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22185:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":4402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22190:1:31","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22185:6:31","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":4404,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22184:8:31","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22178:14:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4415,"nodeType":"IfStatement","src":"22174:87:31","trueBody":{"id":4414,"nodeType":"Block","src":"22194:67:31","statements":[{"expression":{"id":4408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4406,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"22212:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":4407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22219:1:31","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22212:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4409,"nodeType":"ExpressionStatement","src":"22212:8:31"},{"expression":{"id":4412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4410,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"22238:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":4411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22245:1:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22238:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4413,"nodeType":"ExpressionStatement","src":"22238:8:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4416,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"22278:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":4419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22285:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22290:1:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22285:6:31","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":4420,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22284:8:31","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22278:14:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4431,"nodeType":"IfStatement","src":"22274:87:31","trueBody":{"id":4430,"nodeType":"Block","src":"22294:67:31","statements":[{"expression":{"id":4424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4422,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"22312:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":4423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22319:1:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22312:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4425,"nodeType":"ExpressionStatement","src":"22312:8:31"},{"expression":{"id":4428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4426,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"22338:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":4427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22345:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22338:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4429,"nodeType":"ExpressionStatement","src":"22338:8:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4432,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"22378:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":4435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22385:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":4434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22390:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22385:6:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":4436,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22384:8:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22378:14:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4443,"nodeType":"IfStatement","src":"22374:61:31","trueBody":{"id":4442,"nodeType":"Block","src":"22394:41:31","statements":[{"expression":{"id":4440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4438,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"22412:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":4439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22419:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22412:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4441,"nodeType":"ExpressionStatement","src":"22412:8:31"}]}},{"expression":{"id":4451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4444,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"22855:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":4445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22861:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4446,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"22865:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22861:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4448,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22860:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22872:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22860:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22855:18:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4452,"nodeType":"ExpressionStatement","src":"22855:18:31"},{"expression":{"id":4462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4453,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"24760:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4454,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"24766:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4455,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"24771:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4456,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"24775:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24771:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24766:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4459,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24765:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24782:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24765:18:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24760:23:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4463,"nodeType":"ExpressionStatement","src":"24760:23:31"},{"expression":{"id":4473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4464,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"24869:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4465,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"24875:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4466,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"24880:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4467,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"24884:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24880:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24875:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4470,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24874:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24891:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24874:18:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24869:23:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4474,"nodeType":"ExpressionStatement","src":"24869:23:31"},{"expression":{"id":4484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4475,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"24980:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4476,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"24986:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4477,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"24991:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4478,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"24995:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24991:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24986:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4481,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24985:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25002:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24985:18:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24980:23:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4485,"nodeType":"ExpressionStatement","src":"24980:23:31"},{"expression":{"id":4495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4486,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25089:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4487,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25095:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4488,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"25100:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4489,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25104:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25100:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25095:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4492,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25094:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25111:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25094:18:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25089:23:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4496,"nodeType":"ExpressionStatement","src":"25089:23:31"},{"expression":{"id":4506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4497,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25199:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4498,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25205:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4499,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"25210:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4500,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25214:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25210:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25205:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4503,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25204:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25221:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25204:18:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25199:23:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4507,"nodeType":"ExpressionStatement","src":"25199:23:31"},{"expression":{"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4508,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25309:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4509,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25315:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4510,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"25320:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4511,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25324:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25320:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25315:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4514,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25314:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25331:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25314:18:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25309:23:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4518,"nodeType":"ExpressionStatement","src":"25309:23:31"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4519,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25698:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4522,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25719:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4523,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4316,"src":"25724:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4524,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4333,"src":"25728:2:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25724:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25719:11:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4520,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"25703:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25712:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"25703:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25703:28:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25698:33:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4320,"id":4529,"nodeType":"Return","src":"25691:40:31"}]}]},"documentation":{"id":4314,"nodeType":"StructuredDocumentation","src":"20270:292:31","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."},"id":4532,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20576:4:31","nodeType":"FunctionDefinition","parameters":{"id":4317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4316,"mutability":"mutable","name":"a","nameLocation":"20589:1:31","nodeType":"VariableDeclaration","scope":4532,"src":"20581:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4315,"name":"uint256","nodeType":"ElementaryTypeName","src":"20581:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20580:11:31"},"returnParameters":{"id":4320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4319,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4532,"src":"20615:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4318,"name":"uint256","nodeType":"ElementaryTypeName","src":"20615:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20614:9:31"},"scope":4988,"src":"20567:5181:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4565,"nodeType":"Block","src":"25921:171:31","statements":[{"id":4564,"nodeType":"UncheckedBlock","src":"25931:155:31","statements":[{"assignments":[4544],"declarations":[{"constant":false,"id":4544,"mutability":"mutable","name":"result","nameLocation":"25963:6:31","nodeType":"VariableDeclaration","scope":4564,"src":"25955:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4543,"name":"uint256","nodeType":"ElementaryTypeName","src":"25955:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4548,"initialValue":{"arguments":[{"id":4546,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4535,"src":"25977:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4545,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[4532,4566],"referencedDeclaration":4532,"src":"25972:4:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25972:7:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25955:24:31"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4549,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4544,"src":"26000:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4553,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"26042:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}],"id":4552,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"26025:16:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3379_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26025:26:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4555,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4544,"src":"26055:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4556,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4544,"src":"26064:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:15:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4558,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4535,"src":"26073:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:19:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26025:49:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4550,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"26009:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26018:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"26009:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26009:66:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26000:75:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4542,"id":4563,"nodeType":"Return","src":"25993:82:31"}]}]},"documentation":{"id":4533,"nodeType":"StructuredDocumentation","src":"25754:86:31","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":4566,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"25854:4:31","nodeType":"FunctionDefinition","parameters":{"id":4539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4535,"mutability":"mutable","name":"a","nameLocation":"25867:1:31","nodeType":"VariableDeclaration","scope":4566,"src":"25859:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4534,"name":"uint256","nodeType":"ElementaryTypeName","src":"25859:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4538,"mutability":"mutable","name":"rounding","nameLocation":"25879:8:31","nodeType":"VariableDeclaration","scope":4566,"src":"25870:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"},"typeName":{"id":4537,"nodeType":"UserDefinedTypeName","pathNode":{"id":4536,"name":"Rounding","nameLocations":["25870:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":3379,"src":"25870:8:31"},"referencedDeclaration":3379,"src":"25870:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"25858:30:31"},"returnParameters":{"id":4542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4566,"src":"25912:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4540,"name":"uint256","nodeType":"ElementaryTypeName","src":"25912:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25911:9:31"},"scope":4988,"src":"25845:247:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4656,"nodeType":"Block","src":"26281:2334:31","statements":[{"expression":{"id":4583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4574,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"26363:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4577,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4569,"src":"26383:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":4578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26387:34:31","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26383:38:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4575,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"26367:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26376:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"26367:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26367:55:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":4581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26426:1:31","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26367:60:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26363:64:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4584,"nodeType":"ExpressionStatement","src":"26363:64:31"},{"expression":{"id":4597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4585,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"26503:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4588,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4569,"src":"26525:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4589,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"26530:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26525:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4591,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26524:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":4592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26535:18:31","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26524:29:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4586,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"26508:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26517:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"26508:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26508:46:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":4595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26558:1:31","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26508:51:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26503:56:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4598,"nodeType":"ExpressionStatement","src":"26503:56:31"},{"expression":{"id":4611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4599,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"26634:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4602,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4569,"src":"26656:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4603,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"26661:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26656:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4605,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26655:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":4606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26666:10:31","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26655:21:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4600,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"26639:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26648:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"26639:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26639:38:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":4609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26681:1:31","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26639:43:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26634:48:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4612,"nodeType":"ExpressionStatement","src":"26634:48:31"},{"expression":{"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4613,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"26757:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4616,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4569,"src":"26779:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4617,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"26784:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26779:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4619,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26778:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":4620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26789:6:31","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"26778:17:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4614,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"26762:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26771:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"26762:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26762:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26800:1:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"26762:39:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26757:44:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4626,"nodeType":"ExpressionStatement","src":"26757:44:31"},{"expression":{"id":4639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4627,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"26874:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4630,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4569,"src":"26896:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4631,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"26901:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26896:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4633,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26895:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":4634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26906:4:31","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"26895:15:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4628,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"26879:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26888:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"26879:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26879:32:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":4637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26915:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"26879:37:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26874:42:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4640,"nodeType":"ExpressionStatement","src":"26874:42:31"},{"expression":{"id":4653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4641,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"26988:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4644,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4569,"src":"27010:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4645,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4572,"src":"27015:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27010:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4647,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27009:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":4648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27020:3:31","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27009:14:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4642,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"26993:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27002:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"26993:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26993:31:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":4651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27028:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"26993:36:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26988:41:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4654,"nodeType":"ExpressionStatement","src":"26988:41:31"},{"AST":{"nativeSrc":"28490:119:31","nodeType":"YulBlock","src":"28490:119:31","statements":[{"nativeSrc":"28504:95:31","nodeType":"YulAssignment","src":"28504:95:31","value":{"arguments":[{"name":"r","nativeSrc":"28512:1:31","nodeType":"YulIdentifier","src":"28512:1:31"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28524:1:31","nodeType":"YulIdentifier","src":"28524:1:31"},{"name":"x","nativeSrc":"28527:1:31","nodeType":"YulIdentifier","src":"28527:1:31"}],"functionName":{"name":"shr","nativeSrc":"28520:3:31","nodeType":"YulIdentifier","src":"28520:3:31"},"nativeSrc":"28520:9:31","nodeType":"YulFunctionCall","src":"28520:9:31"},{"kind":"number","nativeSrc":"28531:66:31","nodeType":"YulLiteral","src":"28531:66:31","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28515:4:31","nodeType":"YulIdentifier","src":"28515:4:31"},"nativeSrc":"28515:83:31","nodeType":"YulFunctionCall","src":"28515:83:31"}],"functionName":{"name":"or","nativeSrc":"28509:2:31","nodeType":"YulIdentifier","src":"28509:2:31"},"nativeSrc":"28509:90:31","nodeType":"YulFunctionCall","src":"28509:90:31"},"variableNames":[{"name":"r","nativeSrc":"28504:1:31","nodeType":"YulIdentifier","src":"28504:1:31"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4572,"isOffset":false,"isSlot":false,"src":"28504:1:31","valueSize":1},{"declaration":4572,"isOffset":false,"isSlot":false,"src":"28512:1:31","valueSize":1},{"declaration":4572,"isOffset":false,"isSlot":false,"src":"28524:1:31","valueSize":1},{"declaration":4569,"isOffset":false,"isSlot":false,"src":"28527:1:31","valueSize":1}],"flags":["memory-safe"],"id":4655,"nodeType":"InlineAssembly","src":"28465:144:31"}]},"documentation":{"id":4567,"nodeType":"StructuredDocumentation","src":"26098:119:31","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":4657,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26231:4:31","nodeType":"FunctionDefinition","parameters":{"id":4570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4569,"mutability":"mutable","name":"x","nameLocation":"26244:1:31","nodeType":"VariableDeclaration","scope":4657,"src":"26236:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4568,"name":"uint256","nodeType":"ElementaryTypeName","src":"26236:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26235:11:31"},"returnParameters":{"id":4573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4572,"mutability":"mutable","name":"r","nameLocation":"26278:1:31","nodeType":"VariableDeclaration","scope":4657,"src":"26270:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4571,"name":"uint256","nodeType":"ElementaryTypeName","src":"26270:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26269:11:31"},"scope":4988,"src":"26222:2393:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4690,"nodeType":"Block","src":"28848:175:31","statements":[{"id":4689,"nodeType":"UncheckedBlock","src":"28858:159:31","statements":[{"assignments":[4669],"declarations":[{"constant":false,"id":4669,"mutability":"mutable","name":"result","nameLocation":"28890:6:31","nodeType":"VariableDeclaration","scope":4689,"src":"28882:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4668,"name":"uint256","nodeType":"ElementaryTypeName","src":"28882:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4673,"initialValue":{"arguments":[{"id":4671,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4660,"src":"28904:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4670,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[4657,4691],"referencedDeclaration":4657,"src":"28899:4:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28899:11:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28882:28:31"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4674,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4669,"src":"28931:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4678,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4663,"src":"28973:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}],"id":4677,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"28956:16:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3379_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28956:26:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28986:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":4681,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4669,"src":"28991:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4683,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4660,"src":"29000:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:19:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28956:49:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4675,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"28940:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28949:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"28940:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28940:66:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28931:75:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4667,"id":4688,"nodeType":"Return","src":"28924:82:31"}]}]},"documentation":{"id":4658,"nodeType":"StructuredDocumentation","src":"28621:142:31","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4691,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"28777:4:31","nodeType":"FunctionDefinition","parameters":{"id":4664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4660,"mutability":"mutable","name":"value","nameLocation":"28790:5:31","nodeType":"VariableDeclaration","scope":4691,"src":"28782:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4659,"name":"uint256","nodeType":"ElementaryTypeName","src":"28782:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4663,"mutability":"mutable","name":"rounding","nameLocation":"28806:8:31","nodeType":"VariableDeclaration","scope":4691,"src":"28797:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"},"typeName":{"id":4662,"nodeType":"UserDefinedTypeName","pathNode":{"id":4661,"name":"Rounding","nameLocations":["28797:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":3379,"src":"28797:8:31"},"referencedDeclaration":3379,"src":"28797:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"28781:34:31"},"returnParameters":{"id":4667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4691,"src":"28839:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4665,"name":"uint256","nodeType":"ElementaryTypeName","src":"28839:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28838:9:31"},"scope":4988,"src":"28768:255:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4819,"nodeType":"Block","src":"29216:854:31","statements":[{"assignments":[4700],"declarations":[{"constant":false,"id":4700,"mutability":"mutable","name":"result","nameLocation":"29234:6:31","nodeType":"VariableDeclaration","scope":4819,"src":"29226:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4699,"name":"uint256","nodeType":"ElementaryTypeName","src":"29226:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4702,"initialValue":{"hexValue":"30","id":4701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29243:1:31","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29226:18:31"},{"id":4816,"nodeType":"UncheckedBlock","src":"29254:787:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4703,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29282:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":4706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29291:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":4705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29297:2:31","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29291:8:31","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29282:17:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4719,"nodeType":"IfStatement","src":"29278:103:31","trueBody":{"id":4718,"nodeType":"Block","src":"29301:80:31","statements":[{"expression":{"id":4712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4708,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29319:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":4711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29328:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":4710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29334:2:31","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29328:8:31","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29319:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4713,"nodeType":"ExpressionStatement","src":"29319:17:31"},{"expression":{"id":4716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4714,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"29354:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":4715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29364:2:31","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29354:12:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4717,"nodeType":"ExpressionStatement","src":"29354:12:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4720,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29398:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":4723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29407:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29413:2:31","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29407:8:31","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29398:17:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4736,"nodeType":"IfStatement","src":"29394:103:31","trueBody":{"id":4735,"nodeType":"Block","src":"29417:80:31","statements":[{"expression":{"id":4729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4725,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29435:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":4728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29444:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29450:2:31","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29444:8:31","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29435:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4730,"nodeType":"ExpressionStatement","src":"29435:17:31"},{"expression":{"id":4733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4731,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"29470:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29480:2:31","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29470:12:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4734,"nodeType":"ExpressionStatement","src":"29470:12:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4737,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29514:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":4740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29523:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":4739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29529:2:31","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29523:8:31","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29514:17:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4753,"nodeType":"IfStatement","src":"29510:103:31","trueBody":{"id":4752,"nodeType":"Block","src":"29533:80:31","statements":[{"expression":{"id":4746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4742,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29551:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":4745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29560:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":4744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29566:2:31","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29560:8:31","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29551:17:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4747,"nodeType":"ExpressionStatement","src":"29551:17:31"},{"expression":{"id":4750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4748,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"29586:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":4749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29596:2:31","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29586:12:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4751,"nodeType":"ExpressionStatement","src":"29586:12:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29630:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":4757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29639:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":4756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29645:1:31","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29639:7:31","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29630:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4770,"nodeType":"IfStatement","src":"29626:100:31","trueBody":{"id":4769,"nodeType":"Block","src":"29648:78:31","statements":[{"expression":{"id":4763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4759,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29666:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":4762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29675:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":4761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29681:1:31","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29675:7:31","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29666:16:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4764,"nodeType":"ExpressionStatement","src":"29666:16:31"},{"expression":{"id":4767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"29700:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":4766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29710:1:31","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29700:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4768,"nodeType":"ExpressionStatement","src":"29700:11:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4771,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29743:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":4774,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29752:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":4773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29758:1:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29752:7:31","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29743:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4787,"nodeType":"IfStatement","src":"29739:100:31","trueBody":{"id":4786,"nodeType":"Block","src":"29761:78:31","statements":[{"expression":{"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4776,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29779:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":4779,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29788:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":4778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29794:1:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29788:7:31","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29779:16:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4781,"nodeType":"ExpressionStatement","src":"29779:16:31"},{"expression":{"id":4784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4782,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"29813:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":4783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29823:1:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29813:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4785,"nodeType":"ExpressionStatement","src":"29813:11:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4788,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29856:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":4791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29865:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":4790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29871:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29865:7:31","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29856:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4804,"nodeType":"IfStatement","src":"29852:100:31","trueBody":{"id":4803,"nodeType":"Block","src":"29874:78:31","statements":[{"expression":{"id":4797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4793,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29892:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":4796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29901:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":4795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29907:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29901:7:31","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29892:16:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4798,"nodeType":"ExpressionStatement","src":"29892:16:31"},{"expression":{"id":4801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"29926:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":4800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29936:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29926:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4802,"nodeType":"ExpressionStatement","src":"29926:11:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"29969:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":4808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29978:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":4807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29984:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"29978:7:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"29969:16:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4815,"nodeType":"IfStatement","src":"29965:66:31","trueBody":{"id":4814,"nodeType":"Block","src":"29987:44:31","statements":[{"expression":{"id":4812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4810,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"30005:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30015:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30005:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4813,"nodeType":"ExpressionStatement","src":"30005:11:31"}]}}]},{"expression":{"id":4817,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4700,"src":"30057:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4698,"id":4818,"nodeType":"Return","src":"30050:13:31"}]},"documentation":{"id":4692,"nodeType":"StructuredDocumentation","src":"29029:120:31","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":4820,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29163:5:31","nodeType":"FunctionDefinition","parameters":{"id":4695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4694,"mutability":"mutable","name":"value","nameLocation":"29177:5:31","nodeType":"VariableDeclaration","scope":4820,"src":"29169:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4693,"name":"uint256","nodeType":"ElementaryTypeName","src":"29169:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29168:15:31"},"returnParameters":{"id":4698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4697,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4820,"src":"29207:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4696,"name":"uint256","nodeType":"ElementaryTypeName","src":"29207:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29206:9:31"},"scope":4988,"src":"29154:916:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4853,"nodeType":"Block","src":"30305:177:31","statements":[{"id":4852,"nodeType":"UncheckedBlock","src":"30315:161:31","statements":[{"assignments":[4832],"declarations":[{"constant":false,"id":4832,"mutability":"mutable","name":"result","nameLocation":"30347:6:31","nodeType":"VariableDeclaration","scope":4852,"src":"30339:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4831,"name":"uint256","nodeType":"ElementaryTypeName","src":"30339:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4836,"initialValue":{"arguments":[{"id":4834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4823,"src":"30362:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4833,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[4820,4854],"referencedDeclaration":4820,"src":"30356:5:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30356:12:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30339:29:31"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4837,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4832,"src":"30389:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4841,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4826,"src":"30431:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}],"id":4840,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"30414:16:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3379_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30414:26:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30444:2:31","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":4844,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4832,"src":"30450:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:12:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4846,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4823,"src":"30459:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:20:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30414:50:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4838,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"30398:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30407:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"30398:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30398:67:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30389:76:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4830,"id":4851,"nodeType":"Return","src":"30382:83:31"}]}]},"documentation":{"id":4821,"nodeType":"StructuredDocumentation","src":"30076:143:31","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4854,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30233:5:31","nodeType":"FunctionDefinition","parameters":{"id":4827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4823,"mutability":"mutable","name":"value","nameLocation":"30247:5:31","nodeType":"VariableDeclaration","scope":4854,"src":"30239:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4822,"name":"uint256","nodeType":"ElementaryTypeName","src":"30239:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4826,"mutability":"mutable","name":"rounding","nameLocation":"30263:8:31","nodeType":"VariableDeclaration","scope":4854,"src":"30254:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"},"typeName":{"id":4825,"nodeType":"UserDefinedTypeName","pathNode":{"id":4824,"name":"Rounding","nameLocations":["30254:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":3379,"src":"30254:8:31"},"referencedDeclaration":3379,"src":"30254:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30238:34:31"},"returnParameters":{"id":4830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4854,"src":"30296:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4828,"name":"uint256","nodeType":"ElementaryTypeName","src":"30296:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30295:9:31"},"scope":4988,"src":"30224:258:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4930,"nodeType":"Block","src":"30800:675:31","statements":[{"expression":{"id":4871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4862,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"30882:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4865,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"30902:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":4866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30906:34:31","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"30902:38:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4863,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"30886:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30895:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"30886:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30886:55:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":4869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30945:1:31","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"30886:60:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30882:64:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4872,"nodeType":"ExpressionStatement","src":"30882:64:31"},{"expression":{"id":4885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4873,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"31022:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4876,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"31044:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4877,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"31049:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31044:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4879,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31043:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":4880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31054:18:31","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31043:29:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4874,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"31027:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31036:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"31027:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31027:46:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":4883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31077:1:31","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31027:51:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31022:56:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4886,"nodeType":"ExpressionStatement","src":"31022:56:31"},{"expression":{"id":4899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4887,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"31153:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4890,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"31175:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4891,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"31180:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31175:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4893,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31174:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":4894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31185:10:31","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31174:21:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4888,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"31158:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31167:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"31158:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31158:38:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":4897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31200:1:31","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31158:43:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31153:48:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4900,"nodeType":"ExpressionStatement","src":"31153:48:31"},{"expression":{"id":4913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4901,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"31276:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4904,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"31298:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4905,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"31303:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31298:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4907,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31297:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":4908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31308:6:31","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31297:17:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4902,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"31281:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31290:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"31281:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31281:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31319:1:31","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31281:39:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31276:44:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4914,"nodeType":"ExpressionStatement","src":"31276:44:31"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4915,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"31426:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":4916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31431:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31426:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4918,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31425:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4921,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"31453:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4922,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"31458:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31453:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4924,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31452:8:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":4925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31463:4:31","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31452:15:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4919,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"31436:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31445:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"31436:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31436:32:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31425:43:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4861,"id":4929,"nodeType":"Return","src":"31418:50:31"}]},"documentation":{"id":4855,"nodeType":"StructuredDocumentation","src":"30488:246:31","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":4931,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"30748:6:31","nodeType":"FunctionDefinition","parameters":{"id":4858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4857,"mutability":"mutable","name":"x","nameLocation":"30763:1:31","nodeType":"VariableDeclaration","scope":4931,"src":"30755:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4856,"name":"uint256","nodeType":"ElementaryTypeName","src":"30755:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30754:11:31"},"returnParameters":{"id":4861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4860,"mutability":"mutable","name":"r","nameLocation":"30797:1:31","nodeType":"VariableDeclaration","scope":4931,"src":"30789:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4859,"name":"uint256","nodeType":"ElementaryTypeName","src":"30789:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30788:11:31"},"scope":4988,"src":"30739:736:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4967,"nodeType":"Block","src":"31712:184:31","statements":[{"id":4966,"nodeType":"UncheckedBlock","src":"31722:168:31","statements":[{"assignments":[4943],"declarations":[{"constant":false,"id":4943,"mutability":"mutable","name":"result","nameLocation":"31754:6:31","nodeType":"VariableDeclaration","scope":4966,"src":"31746:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4942,"name":"uint256","nodeType":"ElementaryTypeName","src":"31746:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4947,"initialValue":{"arguments":[{"id":4945,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4934,"src":"31770:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4944,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[4931,4968],"referencedDeclaration":4931,"src":"31763:6:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31763:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31746:30:31"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4948,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4943,"src":"31797:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4952,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4937,"src":"31839:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}],"id":4951,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"31822:16:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3379_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31822:26:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31852:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4955,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4943,"src":"31858:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":4956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31868:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31858:11:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4958,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31857:13:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:18:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4960,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4934,"src":"31873:5:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:26:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31822:56:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4949,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6753,"src":"31806:8:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6753_$","typeString":"type(library SafeCast)"}},"id":4950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31815:6:31","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6752,"src":"31806:15:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31806:73:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31797:82:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4941,"id":4965,"nodeType":"Return","src":"31790:89:31"}]}]},"documentation":{"id":4932,"nodeType":"StructuredDocumentation","src":"31481:144:31","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4968,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31639:6:31","nodeType":"FunctionDefinition","parameters":{"id":4938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4934,"mutability":"mutable","name":"value","nameLocation":"31654:5:31","nodeType":"VariableDeclaration","scope":4968,"src":"31646:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4933,"name":"uint256","nodeType":"ElementaryTypeName","src":"31646:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4937,"mutability":"mutable","name":"rounding","nameLocation":"31670:8:31","nodeType":"VariableDeclaration","scope":4968,"src":"31661:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"},"typeName":{"id":4936,"nodeType":"UserDefinedTypeName","pathNode":{"id":4935,"name":"Rounding","nameLocations":["31661:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":3379,"src":"31661:8:31"},"referencedDeclaration":3379,"src":"31661:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31645:34:31"},"returnParameters":{"id":4941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4940,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4968,"src":"31703:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4939,"name":"uint256","nodeType":"ElementaryTypeName","src":"31703:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31702:9:31"},"scope":4988,"src":"31630:266:31","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4986,"nodeType":"Block","src":"32094:48:31","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4979,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4972,"src":"32117:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}],"id":4978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32111:5:31","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4977,"name":"uint8","nodeType":"ElementaryTypeName","src":"32111:5:31","typeDescriptions":{}}},"id":4980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32111:15:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":4981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32129:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32111:19:31","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":4983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32134:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32111:24:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4976,"id":4985,"nodeType":"Return","src":"32104:31:31"}]},"documentation":{"id":4969,"nodeType":"StructuredDocumentation","src":"31902:113:31","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":4987,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32029:16:31","nodeType":"FunctionDefinition","parameters":{"id":4973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4972,"mutability":"mutable","name":"rounding","nameLocation":"32055:8:31","nodeType":"VariableDeclaration","scope":4987,"src":"32046:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"},"typeName":{"id":4971,"nodeType":"UserDefinedTypeName","pathNode":{"id":4970,"name":"Rounding","nameLocations":["32046:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":3379,"src":"32046:8:31"},"referencedDeclaration":3379,"src":"32046:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3379","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32045:19:31"},"returnParameters":{"id":4976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4987,"src":"32088:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4974,"name":"bool","nodeType":"ElementaryTypeName","src":"32088:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32087:6:31"},"scope":4988,"src":"32020:122:31","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4989,"src":"281:31863:31","usedErrors":[],"usedEvents":[]}],"src":"103:32042:31"},"id":31},"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[6753]},"id":6754,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4990,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:32"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":4991,"nodeType":"StructuredDocumentation","src":"218:550:32","text":" @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":6753,"linearizedBaseContracts":[6753],"name":"SafeCast","nameLocation":"777:8:32","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4992,"nodeType":"StructuredDocumentation","src":"792:68:32","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","id":4998,"name":"SafeCastOverflowedUintDowncast","nameLocation":"871:30:32","nodeType":"ErrorDefinition","parameters":{"id":4997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4994,"mutability":"mutable","name":"bits","nameLocation":"908:4:32","nodeType":"VariableDeclaration","scope":4998,"src":"902:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4993,"name":"uint8","nodeType":"ElementaryTypeName","src":"902:5:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4996,"mutability":"mutable","name":"value","nameLocation":"922:5:32","nodeType":"VariableDeclaration","scope":4998,"src":"914:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4995,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"901:27:32"},"src":"865:64:32"},{"documentation":{"id":4999,"nodeType":"StructuredDocumentation","src":"935:75:32","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","id":5003,"name":"SafeCastOverflowedIntToUint","nameLocation":"1021:27:32","nodeType":"ErrorDefinition","parameters":{"id":5002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5001,"mutability":"mutable","name":"value","nameLocation":"1056:5:32","nodeType":"VariableDeclaration","scope":5003,"src":"1049:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5000,"name":"int256","nodeType":"ElementaryTypeName","src":"1049:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1048:14:32"},"src":"1015:48:32"},{"documentation":{"id":5004,"nodeType":"StructuredDocumentation","src":"1069:67:32","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":5010,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1147:29:32","nodeType":"ErrorDefinition","parameters":{"id":5009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5006,"mutability":"mutable","name":"bits","nameLocation":"1183:4:32","nodeType":"VariableDeclaration","scope":5010,"src":"1177:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5005,"name":"uint8","nodeType":"ElementaryTypeName","src":"1177:5:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5008,"mutability":"mutable","name":"value","nameLocation":"1196:5:32","nodeType":"VariableDeclaration","scope":5010,"src":"1189:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5007,"name":"int256","nodeType":"ElementaryTypeName","src":"1189:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1176:26:32"},"src":"1141:62:32"},{"documentation":{"id":5011,"nodeType":"StructuredDocumentation","src":"1209:75:32","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":5015,"name":"SafeCastOverflowedUintToInt","nameLocation":"1295:27:32","nodeType":"ErrorDefinition","parameters":{"id":5014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5013,"mutability":"mutable","name":"value","nameLocation":"1331:5:32","nodeType":"VariableDeclaration","scope":5015,"src":"1323:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5012,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1322:15:32"},"src":"1289:49:32"},{"body":{"id":5042,"nodeType":"Block","src":"1695:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5023,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5018,"src":"1709:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1722:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":5025,"name":"uint248","nodeType":"ElementaryTypeName","src":"1722:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":5024,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1717:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":5028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1731:3:32","memberName":"max","nodeType":"MemberAccess","src":"1717:17:32","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1709:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5036,"nodeType":"IfStatement","src":"1705:105:32","trueBody":{"id":5035,"nodeType":"Block","src":"1736:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":5031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1788:3:32","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":5032,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5018,"src":"1793:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5030,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"1757:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5034,"nodeType":"RevertStatement","src":"1750:49:32"}]}},{"expression":{"arguments":[{"id":5039,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5018,"src":"1834:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1826:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":5037,"name":"uint248","nodeType":"ElementaryTypeName","src":"1826:7:32","typeDescriptions":{}}},"id":5040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":5022,"id":5041,"nodeType":"Return","src":"1819:21:32"}]},"documentation":{"id":5016,"nodeType":"StructuredDocumentation","src":"1344:280:32","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":5043,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1638:9:32","nodeType":"FunctionDefinition","parameters":{"id":5019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5018,"mutability":"mutable","name":"value","nameLocation":"1656:5:32","nodeType":"VariableDeclaration","scope":5043,"src":"1648:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5017,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:15:32"},"returnParameters":{"id":5022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5021,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5043,"src":"1686:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":5020,"name":"uint248","nodeType":"ElementaryTypeName","src":"1686:7:32","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1685:9:32"},"scope":6753,"src":"1629:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5070,"nodeType":"Block","src":"2204:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5051,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5046,"src":"2218:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2231:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":5053,"name":"uint240","nodeType":"ElementaryTypeName","src":"2231:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":5052,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2226:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":5056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2240:3:32","memberName":"max","nodeType":"MemberAccess","src":"2226:17:32","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2218:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5064,"nodeType":"IfStatement","src":"2214:105:32","trueBody":{"id":5063,"nodeType":"Block","src":"2245:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":5059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:3:32","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":5060,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5046,"src":"2302:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5058,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"2266:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5062,"nodeType":"RevertStatement","src":"2259:49:32"}]}},{"expression":{"arguments":[{"id":5067,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5046,"src":"2343:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2335:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":5065,"name":"uint240","nodeType":"ElementaryTypeName","src":"2335:7:32","typeDescriptions":{}}},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2335:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":5050,"id":5069,"nodeType":"Return","src":"2328:21:32"}]},"documentation":{"id":5044,"nodeType":"StructuredDocumentation","src":"1853:280:32","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":5071,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2147:9:32","nodeType":"FunctionDefinition","parameters":{"id":5047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5046,"mutability":"mutable","name":"value","nameLocation":"2165:5:32","nodeType":"VariableDeclaration","scope":5071,"src":"2157:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5045,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:15:32"},"returnParameters":{"id":5050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5049,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5071,"src":"2195:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":5048,"name":"uint240","nodeType":"ElementaryTypeName","src":"2195:7:32","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2194:9:32"},"scope":6753,"src":"2138:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5098,"nodeType":"Block","src":"2713:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5079,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5074,"src":"2727:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2740:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":5081,"name":"uint232","nodeType":"ElementaryTypeName","src":"2740:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":5080,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2735:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":5084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2749:3:32","memberName":"max","nodeType":"MemberAccess","src":"2735:17:32","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2727:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5092,"nodeType":"IfStatement","src":"2723:105:32","trueBody":{"id":5091,"nodeType":"Block","src":"2754:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":5087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2806:3:32","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":5088,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5074,"src":"2811:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5086,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"2775:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5090,"nodeType":"RevertStatement","src":"2768:49:32"}]}},{"expression":{"arguments":[{"id":5095,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5074,"src":"2852:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2844:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":5093,"name":"uint232","nodeType":"ElementaryTypeName","src":"2844:7:32","typeDescriptions":{}}},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2844:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":5078,"id":5097,"nodeType":"Return","src":"2837:21:32"}]},"documentation":{"id":5072,"nodeType":"StructuredDocumentation","src":"2362:280:32","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":5099,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2656:9:32","nodeType":"FunctionDefinition","parameters":{"id":5075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5074,"mutability":"mutable","name":"value","nameLocation":"2674:5:32","nodeType":"VariableDeclaration","scope":5099,"src":"2666:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5073,"name":"uint256","nodeType":"ElementaryTypeName","src":"2666:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:15:32"},"returnParameters":{"id":5078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5077,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5099,"src":"2704:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":5076,"name":"uint232","nodeType":"ElementaryTypeName","src":"2704:7:32","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2703:9:32"},"scope":6753,"src":"2647:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5126,"nodeType":"Block","src":"3222:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5107,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5102,"src":"3236:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3249:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":5109,"name":"uint224","nodeType":"ElementaryTypeName","src":"3249:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":5108,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3244:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":5112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3258:3:32","memberName":"max","nodeType":"MemberAccess","src":"3244:17:32","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3236:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5120,"nodeType":"IfStatement","src":"3232:105:32","trueBody":{"id":5119,"nodeType":"Block","src":"3263:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":5115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3315:3:32","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":5116,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5102,"src":"3320:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5114,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"3284:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3284:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5118,"nodeType":"RevertStatement","src":"3277:49:32"}]}},{"expression":{"arguments":[{"id":5123,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5102,"src":"3361:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":5121,"name":"uint224","nodeType":"ElementaryTypeName","src":"3353:7:32","typeDescriptions":{}}},"id":5124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":5106,"id":5125,"nodeType":"Return","src":"3346:21:32"}]},"documentation":{"id":5100,"nodeType":"StructuredDocumentation","src":"2871:280:32","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":5127,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3165:9:32","nodeType":"FunctionDefinition","parameters":{"id":5103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5102,"mutability":"mutable","name":"value","nameLocation":"3183:5:32","nodeType":"VariableDeclaration","scope":5127,"src":"3175:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5101,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3174:15:32"},"returnParameters":{"id":5106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5105,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5127,"src":"3213:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5104,"name":"uint224","nodeType":"ElementaryTypeName","src":"3213:7:32","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3212:9:32"},"scope":6753,"src":"3156:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5154,"nodeType":"Block","src":"3731:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5135,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5130,"src":"3745:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3758:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":5137,"name":"uint216","nodeType":"ElementaryTypeName","src":"3758:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":5136,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3753:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3753:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":5140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3767:3:32","memberName":"max","nodeType":"MemberAccess","src":"3753:17:32","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3745:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5148,"nodeType":"IfStatement","src":"3741:105:32","trueBody":{"id":5147,"nodeType":"Block","src":"3772:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":5143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:3:32","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":5144,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5130,"src":"3829:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5142,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"3793:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5146,"nodeType":"RevertStatement","src":"3786:49:32"}]}},{"expression":{"arguments":[{"id":5151,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5130,"src":"3870:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3862:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":5149,"name":"uint216","nodeType":"ElementaryTypeName","src":"3862:7:32","typeDescriptions":{}}},"id":5152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":5134,"id":5153,"nodeType":"Return","src":"3855:21:32"}]},"documentation":{"id":5128,"nodeType":"StructuredDocumentation","src":"3380:280:32","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":5155,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3674:9:32","nodeType":"FunctionDefinition","parameters":{"id":5131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5130,"mutability":"mutable","name":"value","nameLocation":"3692:5:32","nodeType":"VariableDeclaration","scope":5155,"src":"3684:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5129,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3683:15:32"},"returnParameters":{"id":5134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5133,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5155,"src":"3722:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":5132,"name":"uint216","nodeType":"ElementaryTypeName","src":"3722:7:32","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3721:9:32"},"scope":6753,"src":"3665:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5182,"nodeType":"Block","src":"4240:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5163,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"4254:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":5165,"name":"uint208","nodeType":"ElementaryTypeName","src":"4267:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":5164,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4262:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":5168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4276:3:32","memberName":"max","nodeType":"MemberAccess","src":"4262:17:32","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4254:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5176,"nodeType":"IfStatement","src":"4250:105:32","trueBody":{"id":5175,"nodeType":"Block","src":"4281:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":5171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4333:3:32","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":5172,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"4338:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5170,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"4302:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4302:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5174,"nodeType":"RevertStatement","src":"4295:49:32"}]}},{"expression":{"arguments":[{"id":5179,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5158,"src":"4379:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4371:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":5177,"name":"uint208","nodeType":"ElementaryTypeName","src":"4371:7:32","typeDescriptions":{}}},"id":5180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4371:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":5162,"id":5181,"nodeType":"Return","src":"4364:21:32"}]},"documentation":{"id":5156,"nodeType":"StructuredDocumentation","src":"3889:280:32","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":5183,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4183:9:32","nodeType":"FunctionDefinition","parameters":{"id":5159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5158,"mutability":"mutable","name":"value","nameLocation":"4201:5:32","nodeType":"VariableDeclaration","scope":5183,"src":"4193:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5157,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:15:32"},"returnParameters":{"id":5162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5183,"src":"4231:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5160,"name":"uint208","nodeType":"ElementaryTypeName","src":"4231:7:32","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4230:9:32"},"scope":6753,"src":"4174:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5210,"nodeType":"Block","src":"4749:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5191,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5186,"src":"4763:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5194,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4776:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":5193,"name":"uint200","nodeType":"ElementaryTypeName","src":"4776:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":5192,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4771:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":5196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4785:3:32","memberName":"max","nodeType":"MemberAccess","src":"4771:17:32","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4763:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5204,"nodeType":"IfStatement","src":"4759:105:32","trueBody":{"id":5203,"nodeType":"Block","src":"4790:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":5199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4842:3:32","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":5200,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5186,"src":"4847:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5198,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"4811:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5202,"nodeType":"RevertStatement","src":"4804:49:32"}]}},{"expression":{"arguments":[{"id":5207,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5186,"src":"4888:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4880:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":5205,"name":"uint200","nodeType":"ElementaryTypeName","src":"4880:7:32","typeDescriptions":{}}},"id":5208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4880:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":5190,"id":5209,"nodeType":"Return","src":"4873:21:32"}]},"documentation":{"id":5184,"nodeType":"StructuredDocumentation","src":"4398:280:32","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":5211,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4692:9:32","nodeType":"FunctionDefinition","parameters":{"id":5187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5186,"mutability":"mutable","name":"value","nameLocation":"4710:5:32","nodeType":"VariableDeclaration","scope":5211,"src":"4702:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5185,"name":"uint256","nodeType":"ElementaryTypeName","src":"4702:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:15:32"},"returnParameters":{"id":5190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5211,"src":"4740:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":5188,"name":"uint200","nodeType":"ElementaryTypeName","src":"4740:7:32","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4739:9:32"},"scope":6753,"src":"4683:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5238,"nodeType":"Block","src":"5258:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5219,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5214,"src":"5272:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5285:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":5221,"name":"uint192","nodeType":"ElementaryTypeName","src":"5285:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":5220,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5280:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5280:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":5224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5294:3:32","memberName":"max","nodeType":"MemberAccess","src":"5280:17:32","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5272:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5232,"nodeType":"IfStatement","src":"5268:105:32","trueBody":{"id":5231,"nodeType":"Block","src":"5299:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":5227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5351:3:32","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":5228,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5214,"src":"5356:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5226,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"5320:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5230,"nodeType":"RevertStatement","src":"5313:49:32"}]}},{"expression":{"arguments":[{"id":5235,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5214,"src":"5397:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5234,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5389:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":5233,"name":"uint192","nodeType":"ElementaryTypeName","src":"5389:7:32","typeDescriptions":{}}},"id":5236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":5218,"id":5237,"nodeType":"Return","src":"5382:21:32"}]},"documentation":{"id":5212,"nodeType":"StructuredDocumentation","src":"4907:280:32","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":5239,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5201:9:32","nodeType":"FunctionDefinition","parameters":{"id":5215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5214,"mutability":"mutable","name":"value","nameLocation":"5219:5:32","nodeType":"VariableDeclaration","scope":5239,"src":"5211:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5213,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5210:15:32"},"returnParameters":{"id":5218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5239,"src":"5249:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":5216,"name":"uint192","nodeType":"ElementaryTypeName","src":"5249:7:32","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5248:9:32"},"scope":6753,"src":"5192:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5266,"nodeType":"Block","src":"5767:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5247,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5242,"src":"5781:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5794:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":5249,"name":"uint184","nodeType":"ElementaryTypeName","src":"5794:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":5248,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5789:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":5252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5803:3:32","memberName":"max","nodeType":"MemberAccess","src":"5789:17:32","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5781:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5260,"nodeType":"IfStatement","src":"5777:105:32","trueBody":{"id":5259,"nodeType":"Block","src":"5808:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":5255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5860:3:32","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":5256,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5242,"src":"5865:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5254,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"5829:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5258,"nodeType":"RevertStatement","src":"5822:49:32"}]}},{"expression":{"arguments":[{"id":5263,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5242,"src":"5906:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":5261,"name":"uint184","nodeType":"ElementaryTypeName","src":"5898:7:32","typeDescriptions":{}}},"id":5264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":5246,"id":5265,"nodeType":"Return","src":"5891:21:32"}]},"documentation":{"id":5240,"nodeType":"StructuredDocumentation","src":"5416:280:32","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":5267,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5710:9:32","nodeType":"FunctionDefinition","parameters":{"id":5243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5242,"mutability":"mutable","name":"value","nameLocation":"5728:5:32","nodeType":"VariableDeclaration","scope":5267,"src":"5720:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5241,"name":"uint256","nodeType":"ElementaryTypeName","src":"5720:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5719:15:32"},"returnParameters":{"id":5246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5267,"src":"5758:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":5244,"name":"uint184","nodeType":"ElementaryTypeName","src":"5758:7:32","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5757:9:32"},"scope":6753,"src":"5701:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5294,"nodeType":"Block","src":"6276:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5275,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"6290:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6303:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":5277,"name":"uint176","nodeType":"ElementaryTypeName","src":"6303:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":5276,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6298:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":5280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6312:3:32","memberName":"max","nodeType":"MemberAccess","src":"6298:17:32","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6290:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5288,"nodeType":"IfStatement","src":"6286:105:32","trueBody":{"id":5287,"nodeType":"Block","src":"6317:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":5283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:3:32","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":5284,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"6374:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5282,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"6338:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5286,"nodeType":"RevertStatement","src":"6331:49:32"}]}},{"expression":{"arguments":[{"id":5291,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5270,"src":"6415:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6407:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":5289,"name":"uint176","nodeType":"ElementaryTypeName","src":"6407:7:32","typeDescriptions":{}}},"id":5292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":5274,"id":5293,"nodeType":"Return","src":"6400:21:32"}]},"documentation":{"id":5268,"nodeType":"StructuredDocumentation","src":"5925:280:32","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":5295,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6219:9:32","nodeType":"FunctionDefinition","parameters":{"id":5271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5270,"mutability":"mutable","name":"value","nameLocation":"6237:5:32","nodeType":"VariableDeclaration","scope":5295,"src":"6229:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5269,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6228:15:32"},"returnParameters":{"id":5274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5273,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5295,"src":"6267:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":5272,"name":"uint176","nodeType":"ElementaryTypeName","src":"6267:7:32","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6266:9:32"},"scope":6753,"src":"6210:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5322,"nodeType":"Block","src":"6785:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5303,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"6799:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6812:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":5305,"name":"uint168","nodeType":"ElementaryTypeName","src":"6812:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":5304,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6807:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6807:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":5308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6821:3:32","memberName":"max","nodeType":"MemberAccess","src":"6807:17:32","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6799:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5316,"nodeType":"IfStatement","src":"6795:105:32","trueBody":{"id":5315,"nodeType":"Block","src":"6826:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":5311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:3:32","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":5312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"6883:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5310,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"6847:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5314,"nodeType":"RevertStatement","src":"6840:49:32"}]}},{"expression":{"arguments":[{"id":5319,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"6924:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6916:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":5317,"name":"uint168","nodeType":"ElementaryTypeName","src":"6916:7:32","typeDescriptions":{}}},"id":5320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":5302,"id":5321,"nodeType":"Return","src":"6909:21:32"}]},"documentation":{"id":5296,"nodeType":"StructuredDocumentation","src":"6434:280:32","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":5323,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6728:9:32","nodeType":"FunctionDefinition","parameters":{"id":5299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5298,"mutability":"mutable","name":"value","nameLocation":"6746:5:32","nodeType":"VariableDeclaration","scope":5323,"src":"6738:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5297,"name":"uint256","nodeType":"ElementaryTypeName","src":"6738:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6737:15:32"},"returnParameters":{"id":5302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5323,"src":"6776:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":5300,"name":"uint168","nodeType":"ElementaryTypeName","src":"6776:7:32","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6775:9:32"},"scope":6753,"src":"6719:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5350,"nodeType":"Block","src":"7294:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5331,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5326,"src":"7308:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7321:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5333,"name":"uint160","nodeType":"ElementaryTypeName","src":"7321:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":5332,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7316:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7316:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":5336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7330:3:32","memberName":"max","nodeType":"MemberAccess","src":"7316:17:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7308:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5344,"nodeType":"IfStatement","src":"7304:105:32","trueBody":{"id":5343,"nodeType":"Block","src":"7335:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":5339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:3:32","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":5340,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5326,"src":"7392:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5338,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"7356:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7356:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5342,"nodeType":"RevertStatement","src":"7349:49:32"}]}},{"expression":{"arguments":[{"id":5347,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5326,"src":"7433:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7425:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5345,"name":"uint160","nodeType":"ElementaryTypeName","src":"7425:7:32","typeDescriptions":{}}},"id":5348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7425:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5330,"id":5349,"nodeType":"Return","src":"7418:21:32"}]},"documentation":{"id":5324,"nodeType":"StructuredDocumentation","src":"6943:280:32","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":5351,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7237:9:32","nodeType":"FunctionDefinition","parameters":{"id":5327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5326,"mutability":"mutable","name":"value","nameLocation":"7255:5:32","nodeType":"VariableDeclaration","scope":5351,"src":"7247:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5325,"name":"uint256","nodeType":"ElementaryTypeName","src":"7247:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7246:15:32"},"returnParameters":{"id":5330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5329,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5351,"src":"7285:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5328,"name":"uint160","nodeType":"ElementaryTypeName","src":"7285:7:32","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7284:9:32"},"scope":6753,"src":"7228:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5378,"nodeType":"Block","src":"7803:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"7817:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7830:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":5361,"name":"uint152","nodeType":"ElementaryTypeName","src":"7830:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":5360,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7825:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7825:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":5364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7839:3:32","memberName":"max","nodeType":"MemberAccess","src":"7825:17:32","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7817:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5372,"nodeType":"IfStatement","src":"7813:105:32","trueBody":{"id":5371,"nodeType":"Block","src":"7844:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":5367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:3:32","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":5368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"7901:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5366,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"7865:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7865:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5370,"nodeType":"RevertStatement","src":"7858:49:32"}]}},{"expression":{"arguments":[{"id":5375,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"7942:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7934:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":5373,"name":"uint152","nodeType":"ElementaryTypeName","src":"7934:7:32","typeDescriptions":{}}},"id":5376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7934:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":5358,"id":5377,"nodeType":"Return","src":"7927:21:32"}]},"documentation":{"id":5352,"nodeType":"StructuredDocumentation","src":"7452:280:32","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":5379,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7746:9:32","nodeType":"FunctionDefinition","parameters":{"id":5355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5354,"mutability":"mutable","name":"value","nameLocation":"7764:5:32","nodeType":"VariableDeclaration","scope":5379,"src":"7756:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5353,"name":"uint256","nodeType":"ElementaryTypeName","src":"7756:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7755:15:32"},"returnParameters":{"id":5358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5357,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5379,"src":"7794:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":5356,"name":"uint152","nodeType":"ElementaryTypeName","src":"7794:7:32","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7793:9:32"},"scope":6753,"src":"7737:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5406,"nodeType":"Block","src":"8312:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5387,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5382,"src":"8326:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8339:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":5389,"name":"uint144","nodeType":"ElementaryTypeName","src":"8339:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":5388,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8334:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8334:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":5392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8348:3:32","memberName":"max","nodeType":"MemberAccess","src":"8334:17:32","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8326:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5400,"nodeType":"IfStatement","src":"8322:105:32","trueBody":{"id":5399,"nodeType":"Block","src":"8353:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":5395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8405:3:32","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":5396,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5382,"src":"8410:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5394,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"8374:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8374:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5398,"nodeType":"RevertStatement","src":"8367:49:32"}]}},{"expression":{"arguments":[{"id":5403,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5382,"src":"8451:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8443:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":5401,"name":"uint144","nodeType":"ElementaryTypeName","src":"8443:7:32","typeDescriptions":{}}},"id":5404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":5386,"id":5405,"nodeType":"Return","src":"8436:21:32"}]},"documentation":{"id":5380,"nodeType":"StructuredDocumentation","src":"7961:280:32","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":5407,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8255:9:32","nodeType":"FunctionDefinition","parameters":{"id":5383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5382,"mutability":"mutable","name":"value","nameLocation":"8273:5:32","nodeType":"VariableDeclaration","scope":5407,"src":"8265:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5381,"name":"uint256","nodeType":"ElementaryTypeName","src":"8265:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8264:15:32"},"returnParameters":{"id":5386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5385,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5407,"src":"8303:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":5384,"name":"uint144","nodeType":"ElementaryTypeName","src":"8303:7:32","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8302:9:32"},"scope":6753,"src":"8246:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5434,"nodeType":"Block","src":"8821:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5415,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"8835:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8848:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":5417,"name":"uint136","nodeType":"ElementaryTypeName","src":"8848:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":5416,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8843:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8843:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":5420,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8857:3:32","memberName":"max","nodeType":"MemberAccess","src":"8843:17:32","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8835:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5428,"nodeType":"IfStatement","src":"8831:105:32","trueBody":{"id":5427,"nodeType":"Block","src":"8862:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":5423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8914:3:32","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":5424,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"8919:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5422,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"8883:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8883:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5426,"nodeType":"RevertStatement","src":"8876:49:32"}]}},{"expression":{"arguments":[{"id":5431,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"8960:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8952:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":5429,"name":"uint136","nodeType":"ElementaryTypeName","src":"8952:7:32","typeDescriptions":{}}},"id":5432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":5414,"id":5433,"nodeType":"Return","src":"8945:21:32"}]},"documentation":{"id":5408,"nodeType":"StructuredDocumentation","src":"8470:280:32","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":5435,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8764:9:32","nodeType":"FunctionDefinition","parameters":{"id":5411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5410,"mutability":"mutable","name":"value","nameLocation":"8782:5:32","nodeType":"VariableDeclaration","scope":5435,"src":"8774:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5409,"name":"uint256","nodeType":"ElementaryTypeName","src":"8774:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8773:15:32"},"returnParameters":{"id":5414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5413,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5435,"src":"8812:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":5412,"name":"uint136","nodeType":"ElementaryTypeName","src":"8812:7:32","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8811:9:32"},"scope":6753,"src":"8755:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5462,"nodeType":"Block","src":"9330:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5443,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5438,"src":"9344:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9357:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5445,"name":"uint128","nodeType":"ElementaryTypeName","src":"9357:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":5444,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9352:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":5448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9366:3:32","memberName":"max","nodeType":"MemberAccess","src":"9352:17:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9344:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5456,"nodeType":"IfStatement","src":"9340:105:32","trueBody":{"id":5455,"nodeType":"Block","src":"9371:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":5451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9423:3:32","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":5452,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5438,"src":"9428:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5450,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"9392:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5454,"nodeType":"RevertStatement","src":"9385:49:32"}]}},{"expression":{"arguments":[{"id":5459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5438,"src":"9469:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9461:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5457,"name":"uint128","nodeType":"ElementaryTypeName","src":"9461:7:32","typeDescriptions":{}}},"id":5460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9461:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":5442,"id":5461,"nodeType":"Return","src":"9454:21:32"}]},"documentation":{"id":5436,"nodeType":"StructuredDocumentation","src":"8979:280:32","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":5463,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9273:9:32","nodeType":"FunctionDefinition","parameters":{"id":5439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5438,"mutability":"mutable","name":"value","nameLocation":"9291:5:32","nodeType":"VariableDeclaration","scope":5463,"src":"9283:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5437,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9282:15:32"},"returnParameters":{"id":5442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5463,"src":"9321:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5440,"name":"uint128","nodeType":"ElementaryTypeName","src":"9321:7:32","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9320:9:32"},"scope":6753,"src":"9264:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5490,"nodeType":"Block","src":"9839:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5466,"src":"9853:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9866:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":5473,"name":"uint120","nodeType":"ElementaryTypeName","src":"9866:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":5472,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9861:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":5476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9875:3:32","memberName":"max","nodeType":"MemberAccess","src":"9861:17:32","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9853:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5484,"nodeType":"IfStatement","src":"9849:105:32","trueBody":{"id":5483,"nodeType":"Block","src":"9880:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":5479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9932:3:32","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":5480,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5466,"src":"9937:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5478,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"9901:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9901:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5482,"nodeType":"RevertStatement","src":"9894:49:32"}]}},{"expression":{"arguments":[{"id":5487,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5466,"src":"9978:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9970:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":5485,"name":"uint120","nodeType":"ElementaryTypeName","src":"9970:7:32","typeDescriptions":{}}},"id":5488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9970:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":5470,"id":5489,"nodeType":"Return","src":"9963:21:32"}]},"documentation":{"id":5464,"nodeType":"StructuredDocumentation","src":"9488:280:32","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":5491,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9782:9:32","nodeType":"FunctionDefinition","parameters":{"id":5467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5466,"mutability":"mutable","name":"value","nameLocation":"9800:5:32","nodeType":"VariableDeclaration","scope":5491,"src":"9792:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5465,"name":"uint256","nodeType":"ElementaryTypeName","src":"9792:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9791:15:32"},"returnParameters":{"id":5470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5491,"src":"9830:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":5468,"name":"uint120","nodeType":"ElementaryTypeName","src":"9830:7:32","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9829:9:32"},"scope":6753,"src":"9773:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5518,"nodeType":"Block","src":"10348:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5494,"src":"10362:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5502,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10375:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":5501,"name":"uint112","nodeType":"ElementaryTypeName","src":"10375:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":5500,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10370:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10370:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":5504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10384:3:32","memberName":"max","nodeType":"MemberAccess","src":"10370:17:32","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10362:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5512,"nodeType":"IfStatement","src":"10358:105:32","trueBody":{"id":5511,"nodeType":"Block","src":"10389:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":5507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10441:3:32","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":5508,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5494,"src":"10446:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5506,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"10410:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10410:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5510,"nodeType":"RevertStatement","src":"10403:49:32"}]}},{"expression":{"arguments":[{"id":5515,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5494,"src":"10487:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10479:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":5513,"name":"uint112","nodeType":"ElementaryTypeName","src":"10479:7:32","typeDescriptions":{}}},"id":5516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10479:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":5498,"id":5517,"nodeType":"Return","src":"10472:21:32"}]},"documentation":{"id":5492,"nodeType":"StructuredDocumentation","src":"9997:280:32","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":5519,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10291:9:32","nodeType":"FunctionDefinition","parameters":{"id":5495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5494,"mutability":"mutable","name":"value","nameLocation":"10309:5:32","nodeType":"VariableDeclaration","scope":5519,"src":"10301:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5493,"name":"uint256","nodeType":"ElementaryTypeName","src":"10301:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10300:15:32"},"returnParameters":{"id":5498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5497,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5519,"src":"10339:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":5496,"name":"uint112","nodeType":"ElementaryTypeName","src":"10339:7:32","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10338:9:32"},"scope":6753,"src":"10282:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5546,"nodeType":"Block","src":"10857:152:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5522,"src":"10871:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10884:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5529,"name":"uint104","nodeType":"ElementaryTypeName","src":"10884:7:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":5528,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10879:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10879:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":5532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10893:3:32","memberName":"max","nodeType":"MemberAccess","src":"10879:17:32","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10871:25:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5540,"nodeType":"IfStatement","src":"10867:105:32","trueBody":{"id":5539,"nodeType":"Block","src":"10898:74:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":5535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10950:3:32","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":5536,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5522,"src":"10955:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5534,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"10919:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10919:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5538,"nodeType":"RevertStatement","src":"10912:49:32"}]}},{"expression":{"arguments":[{"id":5543,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5522,"src":"10996:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10988:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5541,"name":"uint104","nodeType":"ElementaryTypeName","src":"10988:7:32","typeDescriptions":{}}},"id":5544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10988:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":5526,"id":5545,"nodeType":"Return","src":"10981:21:32"}]},"documentation":{"id":5520,"nodeType":"StructuredDocumentation","src":"10506:280:32","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":5547,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10800:9:32","nodeType":"FunctionDefinition","parameters":{"id":5523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5522,"mutability":"mutable","name":"value","nameLocation":"10818:5:32","nodeType":"VariableDeclaration","scope":5547,"src":"10810:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5521,"name":"uint256","nodeType":"ElementaryTypeName","src":"10810:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10809:15:32"},"returnParameters":{"id":5526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5525,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5547,"src":"10848:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5524,"name":"uint104","nodeType":"ElementaryTypeName","src":"10848:7:32","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10847:9:32"},"scope":6753,"src":"10791:218:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5574,"nodeType":"Block","src":"11360:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5555,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5550,"src":"11374:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11387:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":5557,"name":"uint96","nodeType":"ElementaryTypeName","src":"11387:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":5556,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11382:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11382:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":5560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11395:3:32","memberName":"max","nodeType":"MemberAccess","src":"11382:16:32","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11374:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5568,"nodeType":"IfStatement","src":"11370:103:32","trueBody":{"id":5567,"nodeType":"Block","src":"11400:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":5563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11452:2:32","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":5564,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5550,"src":"11456:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5562,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"11421:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11421:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5566,"nodeType":"RevertStatement","src":"11414:48:32"}]}},{"expression":{"arguments":[{"id":5571,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5550,"src":"11496:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11489:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":5569,"name":"uint96","nodeType":"ElementaryTypeName","src":"11489:6:32","typeDescriptions":{}}},"id":5572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11489:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":5554,"id":5573,"nodeType":"Return","src":"11482:20:32"}]},"documentation":{"id":5548,"nodeType":"StructuredDocumentation","src":"11015:276:32","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":5575,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11305:8:32","nodeType":"FunctionDefinition","parameters":{"id":5551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5550,"mutability":"mutable","name":"value","nameLocation":"11322:5:32","nodeType":"VariableDeclaration","scope":5575,"src":"11314:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5549,"name":"uint256","nodeType":"ElementaryTypeName","src":"11314:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11313:15:32"},"returnParameters":{"id":5554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5553,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5575,"src":"11352:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5552,"name":"uint96","nodeType":"ElementaryTypeName","src":"11352:6:32","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11351:8:32"},"scope":6753,"src":"11296:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5602,"nodeType":"Block","src":"11860:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5583,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5578,"src":"11874:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11887:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":5585,"name":"uint88","nodeType":"ElementaryTypeName","src":"11887:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":5584,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11882:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11882:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":5588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11895:3:32","memberName":"max","nodeType":"MemberAccess","src":"11882:16:32","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11874:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5596,"nodeType":"IfStatement","src":"11870:103:32","trueBody":{"id":5595,"nodeType":"Block","src":"11900:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":5591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11952:2:32","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":5592,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5578,"src":"11956:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5590,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"11921:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5594,"nodeType":"RevertStatement","src":"11914:48:32"}]}},{"expression":{"arguments":[{"id":5599,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5578,"src":"11996:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11989:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":5597,"name":"uint88","nodeType":"ElementaryTypeName","src":"11989:6:32","typeDescriptions":{}}},"id":5600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11989:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":5582,"id":5601,"nodeType":"Return","src":"11982:20:32"}]},"documentation":{"id":5576,"nodeType":"StructuredDocumentation","src":"11515:276:32","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":5603,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11805:8:32","nodeType":"FunctionDefinition","parameters":{"id":5579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5578,"mutability":"mutable","name":"value","nameLocation":"11822:5:32","nodeType":"VariableDeclaration","scope":5603,"src":"11814:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5577,"name":"uint256","nodeType":"ElementaryTypeName","src":"11814:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11813:15:32"},"returnParameters":{"id":5582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5603,"src":"11852:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":5580,"name":"uint88","nodeType":"ElementaryTypeName","src":"11852:6:32","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11851:8:32"},"scope":6753,"src":"11796:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5630,"nodeType":"Block","src":"12360:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"12374:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12387:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":5613,"name":"uint80","nodeType":"ElementaryTypeName","src":"12387:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":5612,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12382:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":5616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12395:3:32","memberName":"max","nodeType":"MemberAccess","src":"12382:16:32","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12374:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5624,"nodeType":"IfStatement","src":"12370:103:32","trueBody":{"id":5623,"nodeType":"Block","src":"12400:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":5619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:2:32","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":5620,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"12456:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5618,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"12421:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12421:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5622,"nodeType":"RevertStatement","src":"12414:48:32"}]}},{"expression":{"arguments":[{"id":5627,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"12496:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12489:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":5625,"name":"uint80","nodeType":"ElementaryTypeName","src":"12489:6:32","typeDescriptions":{}}},"id":5628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12489:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":5610,"id":5629,"nodeType":"Return","src":"12482:20:32"}]},"documentation":{"id":5604,"nodeType":"StructuredDocumentation","src":"12015:276:32","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":5631,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12305:8:32","nodeType":"FunctionDefinition","parameters":{"id":5607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5606,"mutability":"mutable","name":"value","nameLocation":"12322:5:32","nodeType":"VariableDeclaration","scope":5631,"src":"12314:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5605,"name":"uint256","nodeType":"ElementaryTypeName","src":"12314:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12313:15:32"},"returnParameters":{"id":5610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5631,"src":"12352:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":5608,"name":"uint80","nodeType":"ElementaryTypeName","src":"12352:6:32","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12351:8:32"},"scope":6753,"src":"12296:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5658,"nodeType":"Block","src":"12860:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5634,"src":"12874:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12887:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":5641,"name":"uint72","nodeType":"ElementaryTypeName","src":"12887:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":5640,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12882:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":5644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12895:3:32","memberName":"max","nodeType":"MemberAccess","src":"12882:16:32","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12874:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5652,"nodeType":"IfStatement","src":"12870:103:32","trueBody":{"id":5651,"nodeType":"Block","src":"12900:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":5647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12952:2:32","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":5648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5634,"src":"12956:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5646,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"12921:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12921:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5650,"nodeType":"RevertStatement","src":"12914:48:32"}]}},{"expression":{"arguments":[{"id":5655,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5634,"src":"12996:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12989:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":5653,"name":"uint72","nodeType":"ElementaryTypeName","src":"12989:6:32","typeDescriptions":{}}},"id":5656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12989:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":5638,"id":5657,"nodeType":"Return","src":"12982:20:32"}]},"documentation":{"id":5632,"nodeType":"StructuredDocumentation","src":"12515:276:32","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":5659,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12805:8:32","nodeType":"FunctionDefinition","parameters":{"id":5635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5634,"mutability":"mutable","name":"value","nameLocation":"12822:5:32","nodeType":"VariableDeclaration","scope":5659,"src":"12814:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5633,"name":"uint256","nodeType":"ElementaryTypeName","src":"12814:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12813:15:32"},"returnParameters":{"id":5638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5637,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5659,"src":"12852:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":5636,"name":"uint72","nodeType":"ElementaryTypeName","src":"12852:6:32","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12851:8:32"},"scope":6753,"src":"12796:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5686,"nodeType":"Block","src":"13360:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5662,"src":"13374:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13387:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5669,"name":"uint64","nodeType":"ElementaryTypeName","src":"13387:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":5668,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13382:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13382:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":5672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13395:3:32","memberName":"max","nodeType":"MemberAccess","src":"13382:16:32","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13374:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5680,"nodeType":"IfStatement","src":"13370:103:32","trueBody":{"id":5679,"nodeType":"Block","src":"13400:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":5675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:2:32","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":5676,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5662,"src":"13456:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5674,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"13421:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13421:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5678,"nodeType":"RevertStatement","src":"13414:48:32"}]}},{"expression":{"arguments":[{"id":5683,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5662,"src":"13496:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13489:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5681,"name":"uint64","nodeType":"ElementaryTypeName","src":"13489:6:32","typeDescriptions":{}}},"id":5684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13489:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5666,"id":5685,"nodeType":"Return","src":"13482:20:32"}]},"documentation":{"id":5660,"nodeType":"StructuredDocumentation","src":"13015:276:32","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":5687,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13305:8:32","nodeType":"FunctionDefinition","parameters":{"id":5663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5662,"mutability":"mutable","name":"value","nameLocation":"13322:5:32","nodeType":"VariableDeclaration","scope":5687,"src":"13314:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5661,"name":"uint256","nodeType":"ElementaryTypeName","src":"13314:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13313:15:32"},"returnParameters":{"id":5666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5687,"src":"13352:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5664,"name":"uint64","nodeType":"ElementaryTypeName","src":"13352:6:32","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13351:8:32"},"scope":6753,"src":"13296:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5714,"nodeType":"Block","src":"13860:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5695,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5690,"src":"13874:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13887:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":5697,"name":"uint56","nodeType":"ElementaryTypeName","src":"13887:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":5696,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13882:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13882:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":5700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13895:3:32","memberName":"max","nodeType":"MemberAccess","src":"13882:16:32","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13874:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5708,"nodeType":"IfStatement","src":"13870:103:32","trueBody":{"id":5707,"nodeType":"Block","src":"13900:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":5703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13952:2:32","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":5704,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5690,"src":"13956:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5702,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"13921:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5706,"nodeType":"RevertStatement","src":"13914:48:32"}]}},{"expression":{"arguments":[{"id":5711,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5690,"src":"13996:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13989:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":5709,"name":"uint56","nodeType":"ElementaryTypeName","src":"13989:6:32","typeDescriptions":{}}},"id":5712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13989:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":5694,"id":5713,"nodeType":"Return","src":"13982:20:32"}]},"documentation":{"id":5688,"nodeType":"StructuredDocumentation","src":"13515:276:32","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":5715,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13805:8:32","nodeType":"FunctionDefinition","parameters":{"id":5691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5690,"mutability":"mutable","name":"value","nameLocation":"13822:5:32","nodeType":"VariableDeclaration","scope":5715,"src":"13814:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5689,"name":"uint256","nodeType":"ElementaryTypeName","src":"13814:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13813:15:32"},"returnParameters":{"id":5694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5693,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5715,"src":"13852:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":5692,"name":"uint56","nodeType":"ElementaryTypeName","src":"13852:6:32","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13851:8:32"},"scope":6753,"src":"13796:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5742,"nodeType":"Block","src":"14360:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5723,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"14374:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14387:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":5725,"name":"uint48","nodeType":"ElementaryTypeName","src":"14387:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":5724,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14382:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14382:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":5728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14395:3:32","memberName":"max","nodeType":"MemberAccess","src":"14382:16:32","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14374:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5736,"nodeType":"IfStatement","src":"14370:103:32","trueBody":{"id":5735,"nodeType":"Block","src":"14400:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":5731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14452:2:32","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":5732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"14456:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5730,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"14421:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14421:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5734,"nodeType":"RevertStatement","src":"14414:48:32"}]}},{"expression":{"arguments":[{"id":5739,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"14496:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14489:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":5737,"name":"uint48","nodeType":"ElementaryTypeName","src":"14489:6:32","typeDescriptions":{}}},"id":5740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14489:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":5722,"id":5741,"nodeType":"Return","src":"14482:20:32"}]},"documentation":{"id":5716,"nodeType":"StructuredDocumentation","src":"14015:276:32","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":5743,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14305:8:32","nodeType":"FunctionDefinition","parameters":{"id":5719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5718,"mutability":"mutable","name":"value","nameLocation":"14322:5:32","nodeType":"VariableDeclaration","scope":5743,"src":"14314:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5717,"name":"uint256","nodeType":"ElementaryTypeName","src":"14314:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14313:15:32"},"returnParameters":{"id":5722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5743,"src":"14352:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5720,"name":"uint48","nodeType":"ElementaryTypeName","src":"14352:6:32","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14351:8:32"},"scope":6753,"src":"14296:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5770,"nodeType":"Block","src":"14860:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5751,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5746,"src":"14874:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14887:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":5753,"name":"uint40","nodeType":"ElementaryTypeName","src":"14887:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":5752,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14882:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14882:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":5756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14895:3:32","memberName":"max","nodeType":"MemberAccess","src":"14882:16:32","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14874:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5764,"nodeType":"IfStatement","src":"14870:103:32","trueBody":{"id":5763,"nodeType":"Block","src":"14900:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":5759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14952:2:32","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":5760,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5746,"src":"14956:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5758,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"14921:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14921:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5762,"nodeType":"RevertStatement","src":"14914:48:32"}]}},{"expression":{"arguments":[{"id":5767,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5746,"src":"14996:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14989:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":5765,"name":"uint40","nodeType":"ElementaryTypeName","src":"14989:6:32","typeDescriptions":{}}},"id":5768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14989:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":5750,"id":5769,"nodeType":"Return","src":"14982:20:32"}]},"documentation":{"id":5744,"nodeType":"StructuredDocumentation","src":"14515:276:32","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":5771,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14805:8:32","nodeType":"FunctionDefinition","parameters":{"id":5747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5746,"mutability":"mutable","name":"value","nameLocation":"14822:5:32","nodeType":"VariableDeclaration","scope":5771,"src":"14814:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5745,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14813:15:32"},"returnParameters":{"id":5750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5771,"src":"14852:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":5748,"name":"uint40","nodeType":"ElementaryTypeName","src":"14852:6:32","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14851:8:32"},"scope":6753,"src":"14796:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5798,"nodeType":"Block","src":"15360:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5779,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5774,"src":"15374:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15387:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":5781,"name":"uint32","nodeType":"ElementaryTypeName","src":"15387:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":5780,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15382:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15382:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":5784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15395:3:32","memberName":"max","nodeType":"MemberAccess","src":"15382:16:32","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15374:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5792,"nodeType":"IfStatement","src":"15370:103:32","trueBody":{"id":5791,"nodeType":"Block","src":"15400:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":5787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:2:32","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":5788,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5774,"src":"15456:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5786,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"15421:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15421:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5790,"nodeType":"RevertStatement","src":"15414:48:32"}]}},{"expression":{"arguments":[{"id":5795,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5774,"src":"15496:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15489:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":5793,"name":"uint32","nodeType":"ElementaryTypeName","src":"15489:6:32","typeDescriptions":{}}},"id":5796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15489:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5778,"id":5797,"nodeType":"Return","src":"15482:20:32"}]},"documentation":{"id":5772,"nodeType":"StructuredDocumentation","src":"15015:276:32","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":5799,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15305:8:32","nodeType":"FunctionDefinition","parameters":{"id":5775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5774,"mutability":"mutable","name":"value","nameLocation":"15322:5:32","nodeType":"VariableDeclaration","scope":5799,"src":"15314:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5773,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15313:15:32"},"returnParameters":{"id":5778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5777,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5799,"src":"15352:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5776,"name":"uint32","nodeType":"ElementaryTypeName","src":"15352:6:32","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15351:8:32"},"scope":6753,"src":"15296:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5826,"nodeType":"Block","src":"15860:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5807,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5802,"src":"15874:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15887:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":5809,"name":"uint24","nodeType":"ElementaryTypeName","src":"15887:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":5808,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15882:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":5812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15895:3:32","memberName":"max","nodeType":"MemberAccess","src":"15882:16:32","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15874:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5820,"nodeType":"IfStatement","src":"15870:103:32","trueBody":{"id":5819,"nodeType":"Block","src":"15900:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":5815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15952:2:32","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":5816,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5802,"src":"15956:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5814,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"15921:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15921:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5818,"nodeType":"RevertStatement","src":"15914:48:32"}]}},{"expression":{"arguments":[{"id":5823,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5802,"src":"15996:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15989:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":5821,"name":"uint24","nodeType":"ElementaryTypeName","src":"15989:6:32","typeDescriptions":{}}},"id":5824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15989:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":5806,"id":5825,"nodeType":"Return","src":"15982:20:32"}]},"documentation":{"id":5800,"nodeType":"StructuredDocumentation","src":"15515:276:32","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":5827,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15805:8:32","nodeType":"FunctionDefinition","parameters":{"id":5803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5802,"mutability":"mutable","name":"value","nameLocation":"15822:5:32","nodeType":"VariableDeclaration","scope":5827,"src":"15814:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5801,"name":"uint256","nodeType":"ElementaryTypeName","src":"15814:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15813:15:32"},"returnParameters":{"id":5806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5805,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5827,"src":"15852:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":5804,"name":"uint24","nodeType":"ElementaryTypeName","src":"15852:6:32","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15851:8:32"},"scope":6753,"src":"15796:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5854,"nodeType":"Block","src":"16360:149:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5835,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"16374:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16387:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":5837,"name":"uint16","nodeType":"ElementaryTypeName","src":"16387:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":5836,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16382:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16382:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":5840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16395:3:32","memberName":"max","nodeType":"MemberAccess","src":"16382:16:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16374:24:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5848,"nodeType":"IfStatement","src":"16370:103:32","trueBody":{"id":5847,"nodeType":"Block","src":"16400:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":5843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16452:2:32","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":5844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"16456:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5842,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"16421:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5846,"nodeType":"RevertStatement","src":"16414:48:32"}]}},{"expression":{"arguments":[{"id":5851,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"16496:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16489:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":5849,"name":"uint16","nodeType":"ElementaryTypeName","src":"16489:6:32","typeDescriptions":{}}},"id":5852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16489:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":5834,"id":5853,"nodeType":"Return","src":"16482:20:32"}]},"documentation":{"id":5828,"nodeType":"StructuredDocumentation","src":"16015:276:32","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":5855,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16305:8:32","nodeType":"FunctionDefinition","parameters":{"id":5831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5830,"mutability":"mutable","name":"value","nameLocation":"16322:5:32","nodeType":"VariableDeclaration","scope":5855,"src":"16314:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5829,"name":"uint256","nodeType":"ElementaryTypeName","src":"16314:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16313:15:32"},"returnParameters":{"id":5834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5833,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5855,"src":"16352:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5832,"name":"uint16","nodeType":"ElementaryTypeName","src":"16352:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16351:8:32"},"scope":6753,"src":"16296:213:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5882,"nodeType":"Block","src":"16854:146:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5863,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5858,"src":"16868:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16881:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5865,"name":"uint8","nodeType":"ElementaryTypeName","src":"16881:5:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":5864,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16876:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16876:11:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":5868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16888:3:32","memberName":"max","nodeType":"MemberAccess","src":"16876:15:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16868:23:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5876,"nodeType":"IfStatement","src":"16864:101:32","trueBody":{"id":5875,"nodeType":"Block","src":"16893:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":5871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16945:1:32","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":5872,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5858,"src":"16948:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5870,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"16914:30:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16914:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5874,"nodeType":"RevertStatement","src":"16907:47:32"}]}},{"expression":{"arguments":[{"id":5879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5858,"src":"16987:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16981:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5877,"name":"uint8","nodeType":"ElementaryTypeName","src":"16981:5:32","typeDescriptions":{}}},"id":5880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16981:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5862,"id":5881,"nodeType":"Return","src":"16974:19:32"}]},"documentation":{"id":5856,"nodeType":"StructuredDocumentation","src":"16515:272:32","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":5883,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16801:7:32","nodeType":"FunctionDefinition","parameters":{"id":5859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5858,"mutability":"mutable","name":"value","nameLocation":"16817:5:32","nodeType":"VariableDeclaration","scope":5883,"src":"16809:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5857,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16808:15:32"},"returnParameters":{"id":5862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5861,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5883,"src":"16847:5:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5860,"name":"uint8","nodeType":"ElementaryTypeName","src":"16847:5:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16846:7:32"},"scope":6753,"src":"16792:208:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5905,"nodeType":"Block","src":"17236:128:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5891,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5886,"src":"17250:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17258:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17250:9:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5899,"nodeType":"IfStatement","src":"17246:81:32","trueBody":{"id":5898,"nodeType":"Block","src":"17261:66:32","statements":[{"errorCall":{"arguments":[{"id":5895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5886,"src":"17310:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5894,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5003,"src":"17282:27:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":5896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17282:34:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5897,"nodeType":"RevertStatement","src":"17275:41:32"}]}},{"expression":{"arguments":[{"id":5902,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5886,"src":"17351:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17343:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5900,"name":"uint256","nodeType":"ElementaryTypeName","src":"17343:7:32","typeDescriptions":{}}},"id":5903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17343:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5890,"id":5904,"nodeType":"Return","src":"17336:21:32"}]},"documentation":{"id":5884,"nodeType":"StructuredDocumentation","src":"17006:160:32","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":5906,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17180:9:32","nodeType":"FunctionDefinition","parameters":{"id":5887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5886,"mutability":"mutable","name":"value","nameLocation":"17197:5:32","nodeType":"VariableDeclaration","scope":5906,"src":"17190:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5885,"name":"int256","nodeType":"ElementaryTypeName","src":"17190:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17189:14:32"},"returnParameters":{"id":5890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5906,"src":"17227:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5888,"name":"uint256","nodeType":"ElementaryTypeName","src":"17227:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17226:9:32"},"scope":6753,"src":"17171:193:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5931,"nodeType":"Block","src":"17761:150:32","statements":[{"expression":{"id":5919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5914,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"17771:10:32","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5917,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5909,"src":"17791:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17784:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":5915,"name":"int248","nodeType":"ElementaryTypeName","src":"17784:6:32","typeDescriptions":{}}},"id":5918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17784:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17771:26:32","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":5920,"nodeType":"ExpressionStatement","src":"17771:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5921,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"17811:10:32","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5909,"src":"17825:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17811:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5930,"nodeType":"IfStatement","src":"17807:98:32","trueBody":{"id":5929,"nodeType":"Block","src":"17832:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":5925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17883:3:32","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":5926,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5909,"src":"17888:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5924,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"17853:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17853:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5928,"nodeType":"RevertStatement","src":"17846:48:32"}]}}]},"documentation":{"id":5907,"nodeType":"StructuredDocumentation","src":"17370:312:32","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":5932,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17696:8:32","nodeType":"FunctionDefinition","parameters":{"id":5910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5909,"mutability":"mutable","name":"value","nameLocation":"17712:5:32","nodeType":"VariableDeclaration","scope":5932,"src":"17705:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5908,"name":"int256","nodeType":"ElementaryTypeName","src":"17705:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17704:14:32"},"returnParameters":{"id":5913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5912,"mutability":"mutable","name":"downcasted","nameLocation":"17749:10:32","nodeType":"VariableDeclaration","scope":5932,"src":"17742:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":5911,"name":"int248","nodeType":"ElementaryTypeName","src":"17742:6:32","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17741:19:32"},"scope":6753,"src":"17687:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5957,"nodeType":"Block","src":"18308:150:32","statements":[{"expression":{"id":5945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5940,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5938,"src":"18318:10:32","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5943,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"18338:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18331:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":5941,"name":"int240","nodeType":"ElementaryTypeName","src":"18331:6:32","typeDescriptions":{}}},"id":5944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18331:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18318:26:32","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":5946,"nodeType":"ExpressionStatement","src":"18318:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5947,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5938,"src":"18358:10:32","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5948,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"18372:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18358:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5956,"nodeType":"IfStatement","src":"18354:98:32","trueBody":{"id":5955,"nodeType":"Block","src":"18379:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":5951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:3:32","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":5952,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5935,"src":"18435:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5950,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"18400:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18400:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5954,"nodeType":"RevertStatement","src":"18393:48:32"}]}}]},"documentation":{"id":5933,"nodeType":"StructuredDocumentation","src":"17917:312:32","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":5958,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18243:8:32","nodeType":"FunctionDefinition","parameters":{"id":5936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5935,"mutability":"mutable","name":"value","nameLocation":"18259:5:32","nodeType":"VariableDeclaration","scope":5958,"src":"18252:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5934,"name":"int256","nodeType":"ElementaryTypeName","src":"18252:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18251:14:32"},"returnParameters":{"id":5939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5938,"mutability":"mutable","name":"downcasted","nameLocation":"18296:10:32","nodeType":"VariableDeclaration","scope":5958,"src":"18289:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":5937,"name":"int240","nodeType":"ElementaryTypeName","src":"18289:6:32","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18288:19:32"},"scope":6753,"src":"18234:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5983,"nodeType":"Block","src":"18855:150:32","statements":[{"expression":{"id":5971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5966,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5964,"src":"18865:10:32","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"18885:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5968,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18878:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":5967,"name":"int232","nodeType":"ElementaryTypeName","src":"18878:6:32","typeDescriptions":{}}},"id":5970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18878:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18865:26:32","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":5972,"nodeType":"ExpressionStatement","src":"18865:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5973,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5964,"src":"18905:10:32","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5974,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"18919:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18905:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5982,"nodeType":"IfStatement","src":"18901:98:32","trueBody":{"id":5981,"nodeType":"Block","src":"18926:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":5977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18977:3:32","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":5978,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"18982:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5976,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"18947:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":5979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18947:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5980,"nodeType":"RevertStatement","src":"18940:48:32"}]}}]},"documentation":{"id":5959,"nodeType":"StructuredDocumentation","src":"18464:312:32","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":5984,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18790:8:32","nodeType":"FunctionDefinition","parameters":{"id":5962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5961,"mutability":"mutable","name":"value","nameLocation":"18806:5:32","nodeType":"VariableDeclaration","scope":5984,"src":"18799:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5960,"name":"int256","nodeType":"ElementaryTypeName","src":"18799:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18798:14:32"},"returnParameters":{"id":5965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5964,"mutability":"mutable","name":"downcasted","nameLocation":"18843:10:32","nodeType":"VariableDeclaration","scope":5984,"src":"18836:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":5963,"name":"int232","nodeType":"ElementaryTypeName","src":"18836:6:32","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18835:19:32"},"scope":6753,"src":"18781:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6009,"nodeType":"Block","src":"19402:150:32","statements":[{"expression":{"id":5997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5992,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5990,"src":"19412:10:32","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5995,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"19432:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19425:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":5993,"name":"int224","nodeType":"ElementaryTypeName","src":"19425:6:32","typeDescriptions":{}}},"id":5996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19425:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19412:26:32","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":5998,"nodeType":"ExpressionStatement","src":"19412:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5999,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5990,"src":"19452:10:32","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6000,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"19466:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19452:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6008,"nodeType":"IfStatement","src":"19448:98:32","trueBody":{"id":6007,"nodeType":"Block","src":"19473:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":6003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19524:3:32","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":6004,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"19529:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6002,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"19494:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6006,"nodeType":"RevertStatement","src":"19487:48:32"}]}}]},"documentation":{"id":5985,"nodeType":"StructuredDocumentation","src":"19011:312:32","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":6010,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19337:8:32","nodeType":"FunctionDefinition","parameters":{"id":5988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5987,"mutability":"mutable","name":"value","nameLocation":"19353:5:32","nodeType":"VariableDeclaration","scope":6010,"src":"19346:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5986,"name":"int256","nodeType":"ElementaryTypeName","src":"19346:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19345:14:32"},"returnParameters":{"id":5991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5990,"mutability":"mutable","name":"downcasted","nameLocation":"19390:10:32","nodeType":"VariableDeclaration","scope":6010,"src":"19383:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":5989,"name":"int224","nodeType":"ElementaryTypeName","src":"19383:6:32","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19382:19:32"},"scope":6753,"src":"19328:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6035,"nodeType":"Block","src":"19949:150:32","statements":[{"expression":{"id":6023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6018,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"19959:10:32","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6021,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"19979:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6020,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19972:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":6019,"name":"int216","nodeType":"ElementaryTypeName","src":"19972:6:32","typeDescriptions":{}}},"id":6022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19972:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19959:26:32","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":6024,"nodeType":"ExpressionStatement","src":"19959:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6025,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"19999:10:32","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6026,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"20013:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19999:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6034,"nodeType":"IfStatement","src":"19995:98:32","trueBody":{"id":6033,"nodeType":"Block","src":"20020:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":6029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20071:3:32","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":6030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"20076:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6028,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"20041:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20041:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6032,"nodeType":"RevertStatement","src":"20034:48:32"}]}}]},"documentation":{"id":6011,"nodeType":"StructuredDocumentation","src":"19558:312:32","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":6036,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19884:8:32","nodeType":"FunctionDefinition","parameters":{"id":6014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6013,"mutability":"mutable","name":"value","nameLocation":"19900:5:32","nodeType":"VariableDeclaration","scope":6036,"src":"19893:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6012,"name":"int256","nodeType":"ElementaryTypeName","src":"19893:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19892:14:32"},"returnParameters":{"id":6017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6016,"mutability":"mutable","name":"downcasted","nameLocation":"19937:10:32","nodeType":"VariableDeclaration","scope":6036,"src":"19930:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":6015,"name":"int216","nodeType":"ElementaryTypeName","src":"19930:6:32","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19929:19:32"},"scope":6753,"src":"19875:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6061,"nodeType":"Block","src":"20496:150:32","statements":[{"expression":{"id":6049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6044,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"20506:10:32","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6047,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"20526:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20519:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":6045,"name":"int208","nodeType":"ElementaryTypeName","src":"20519:6:32","typeDescriptions":{}}},"id":6048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20519:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20506:26:32","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":6050,"nodeType":"ExpressionStatement","src":"20506:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6051,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"20546:10:32","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"20560:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20546:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6060,"nodeType":"IfStatement","src":"20542:98:32","trueBody":{"id":6059,"nodeType":"Block","src":"20567:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":6055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20618:3:32","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":6056,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"20623:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6054,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"20588:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20588:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6058,"nodeType":"RevertStatement","src":"20581:48:32"}]}}]},"documentation":{"id":6037,"nodeType":"StructuredDocumentation","src":"20105:312:32","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":6062,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20431:8:32","nodeType":"FunctionDefinition","parameters":{"id":6040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6039,"mutability":"mutable","name":"value","nameLocation":"20447:5:32","nodeType":"VariableDeclaration","scope":6062,"src":"20440:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6038,"name":"int256","nodeType":"ElementaryTypeName","src":"20440:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20439:14:32"},"returnParameters":{"id":6043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6042,"mutability":"mutable","name":"downcasted","nameLocation":"20484:10:32","nodeType":"VariableDeclaration","scope":6062,"src":"20477:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":6041,"name":"int208","nodeType":"ElementaryTypeName","src":"20477:6:32","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20476:19:32"},"scope":6753,"src":"20422:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6087,"nodeType":"Block","src":"21043:150:32","statements":[{"expression":{"id":6075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6070,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6068,"src":"21053:10:32","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6073,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"21073:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21066:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":6071,"name":"int200","nodeType":"ElementaryTypeName","src":"21066:6:32","typeDescriptions":{}}},"id":6074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21066:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21053:26:32","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":6076,"nodeType":"ExpressionStatement","src":"21053:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6077,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6068,"src":"21093:10:32","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6078,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"21107:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21093:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6086,"nodeType":"IfStatement","src":"21089:98:32","trueBody":{"id":6085,"nodeType":"Block","src":"21114:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":6081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21165:3:32","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":6082,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6065,"src":"21170:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6080,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"21135:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21135:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6084,"nodeType":"RevertStatement","src":"21128:48:32"}]}}]},"documentation":{"id":6063,"nodeType":"StructuredDocumentation","src":"20652:312:32","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":6088,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20978:8:32","nodeType":"FunctionDefinition","parameters":{"id":6066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6065,"mutability":"mutable","name":"value","nameLocation":"20994:5:32","nodeType":"VariableDeclaration","scope":6088,"src":"20987:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6064,"name":"int256","nodeType":"ElementaryTypeName","src":"20987:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20986:14:32"},"returnParameters":{"id":6069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6068,"mutability":"mutable","name":"downcasted","nameLocation":"21031:10:32","nodeType":"VariableDeclaration","scope":6088,"src":"21024:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":6067,"name":"int200","nodeType":"ElementaryTypeName","src":"21024:6:32","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21023:19:32"},"scope":6753,"src":"20969:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6113,"nodeType":"Block","src":"21590:150:32","statements":[{"expression":{"id":6101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6096,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6094,"src":"21600:10:32","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6099,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"21620:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21613:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":6097,"name":"int192","nodeType":"ElementaryTypeName","src":"21613:6:32","typeDescriptions":{}}},"id":6100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21613:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21600:26:32","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":6102,"nodeType":"ExpressionStatement","src":"21600:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6103,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6094,"src":"21640:10:32","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6104,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"21654:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21640:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6112,"nodeType":"IfStatement","src":"21636:98:32","trueBody":{"id":6111,"nodeType":"Block","src":"21661:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":6107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21712:3:32","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":6108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"21717:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6106,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"21682:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21682:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6110,"nodeType":"RevertStatement","src":"21675:48:32"}]}}]},"documentation":{"id":6089,"nodeType":"StructuredDocumentation","src":"21199:312:32","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":6114,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21525:8:32","nodeType":"FunctionDefinition","parameters":{"id":6092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6091,"mutability":"mutable","name":"value","nameLocation":"21541:5:32","nodeType":"VariableDeclaration","scope":6114,"src":"21534:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6090,"name":"int256","nodeType":"ElementaryTypeName","src":"21534:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21533:14:32"},"returnParameters":{"id":6095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6094,"mutability":"mutable","name":"downcasted","nameLocation":"21578:10:32","nodeType":"VariableDeclaration","scope":6114,"src":"21571:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":6093,"name":"int192","nodeType":"ElementaryTypeName","src":"21571:6:32","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21570:19:32"},"scope":6753,"src":"21516:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6139,"nodeType":"Block","src":"22137:150:32","statements":[{"expression":{"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6122,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6120,"src":"22147:10:32","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"22167:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22160:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":6123,"name":"int184","nodeType":"ElementaryTypeName","src":"22160:6:32","typeDescriptions":{}}},"id":6126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22160:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22147:26:32","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":6128,"nodeType":"ExpressionStatement","src":"22147:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6129,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6120,"src":"22187:10:32","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6130,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"22201:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22187:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6138,"nodeType":"IfStatement","src":"22183:98:32","trueBody":{"id":6137,"nodeType":"Block","src":"22208:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":6133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22259:3:32","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":6134,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"22264:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6132,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"22229:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22229:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6136,"nodeType":"RevertStatement","src":"22222:48:32"}]}}]},"documentation":{"id":6115,"nodeType":"StructuredDocumentation","src":"21746:312:32","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":6140,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22072:8:32","nodeType":"FunctionDefinition","parameters":{"id":6118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6117,"mutability":"mutable","name":"value","nameLocation":"22088:5:32","nodeType":"VariableDeclaration","scope":6140,"src":"22081:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6116,"name":"int256","nodeType":"ElementaryTypeName","src":"22081:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22080:14:32"},"returnParameters":{"id":6121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6120,"mutability":"mutable","name":"downcasted","nameLocation":"22125:10:32","nodeType":"VariableDeclaration","scope":6140,"src":"22118:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":6119,"name":"int184","nodeType":"ElementaryTypeName","src":"22118:6:32","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22117:19:32"},"scope":6753,"src":"22063:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6165,"nodeType":"Block","src":"22684:150:32","statements":[{"expression":{"id":6153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6148,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6146,"src":"22694:10:32","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6151,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"22714:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22707:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":6149,"name":"int176","nodeType":"ElementaryTypeName","src":"22707:6:32","typeDescriptions":{}}},"id":6152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22707:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22694:26:32","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":6154,"nodeType":"ExpressionStatement","src":"22694:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6155,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6146,"src":"22734:10:32","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6156,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"22748:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22734:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6164,"nodeType":"IfStatement","src":"22730:98:32","trueBody":{"id":6163,"nodeType":"Block","src":"22755:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":6159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22806:3:32","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":6160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"22811:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6158,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"22776:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22776:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6162,"nodeType":"RevertStatement","src":"22769:48:32"}]}}]},"documentation":{"id":6141,"nodeType":"StructuredDocumentation","src":"22293:312:32","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":6166,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22619:8:32","nodeType":"FunctionDefinition","parameters":{"id":6144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6143,"mutability":"mutable","name":"value","nameLocation":"22635:5:32","nodeType":"VariableDeclaration","scope":6166,"src":"22628:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6142,"name":"int256","nodeType":"ElementaryTypeName","src":"22628:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22627:14:32"},"returnParameters":{"id":6147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6146,"mutability":"mutable","name":"downcasted","nameLocation":"22672:10:32","nodeType":"VariableDeclaration","scope":6166,"src":"22665:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":6145,"name":"int176","nodeType":"ElementaryTypeName","src":"22665:6:32","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22664:19:32"},"scope":6753,"src":"22610:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6191,"nodeType":"Block","src":"23231:150:32","statements":[{"expression":{"id":6179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6174,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6172,"src":"23241:10:32","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6177,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6169,"src":"23261:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23254:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":6175,"name":"int168","nodeType":"ElementaryTypeName","src":"23254:6:32","typeDescriptions":{}}},"id":6178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23254:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23241:26:32","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":6180,"nodeType":"ExpressionStatement","src":"23241:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6181,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6172,"src":"23281:10:32","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6182,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6169,"src":"23295:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23281:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6190,"nodeType":"IfStatement","src":"23277:98:32","trueBody":{"id":6189,"nodeType":"Block","src":"23302:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":6185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23353:3:32","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":6186,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6169,"src":"23358:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6184,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"23323:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23323:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6188,"nodeType":"RevertStatement","src":"23316:48:32"}]}}]},"documentation":{"id":6167,"nodeType":"StructuredDocumentation","src":"22840:312:32","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":6192,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23166:8:32","nodeType":"FunctionDefinition","parameters":{"id":6170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6169,"mutability":"mutable","name":"value","nameLocation":"23182:5:32","nodeType":"VariableDeclaration","scope":6192,"src":"23175:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6168,"name":"int256","nodeType":"ElementaryTypeName","src":"23175:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23174:14:32"},"returnParameters":{"id":6173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6172,"mutability":"mutable","name":"downcasted","nameLocation":"23219:10:32","nodeType":"VariableDeclaration","scope":6192,"src":"23212:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":6171,"name":"int168","nodeType":"ElementaryTypeName","src":"23212:6:32","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23211:19:32"},"scope":6753,"src":"23157:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6217,"nodeType":"Block","src":"23778:150:32","statements":[{"expression":{"id":6205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6200,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6198,"src":"23788:10:32","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6203,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"23808:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23801:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":6201,"name":"int160","nodeType":"ElementaryTypeName","src":"23801:6:32","typeDescriptions":{}}},"id":6204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23801:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23788:26:32","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":6206,"nodeType":"ExpressionStatement","src":"23788:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6207,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6198,"src":"23828:10:32","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6208,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"23842:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23828:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6216,"nodeType":"IfStatement","src":"23824:98:32","trueBody":{"id":6215,"nodeType":"Block","src":"23849:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":6211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23900:3:32","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":6212,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6195,"src":"23905:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6210,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"23870:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23870:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6214,"nodeType":"RevertStatement","src":"23863:48:32"}]}}]},"documentation":{"id":6193,"nodeType":"StructuredDocumentation","src":"23387:312:32","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":6218,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23713:8:32","nodeType":"FunctionDefinition","parameters":{"id":6196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6195,"mutability":"mutable","name":"value","nameLocation":"23729:5:32","nodeType":"VariableDeclaration","scope":6218,"src":"23722:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6194,"name":"int256","nodeType":"ElementaryTypeName","src":"23722:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23721:14:32"},"returnParameters":{"id":6199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6198,"mutability":"mutable","name":"downcasted","nameLocation":"23766:10:32","nodeType":"VariableDeclaration","scope":6218,"src":"23759:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":6197,"name":"int160","nodeType":"ElementaryTypeName","src":"23759:6:32","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23758:19:32"},"scope":6753,"src":"23704:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6243,"nodeType":"Block","src":"24325:150:32","statements":[{"expression":{"id":6231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6226,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"24335:10:32","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6229,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6221,"src":"24355:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24348:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":6227,"name":"int152","nodeType":"ElementaryTypeName","src":"24348:6:32","typeDescriptions":{}}},"id":6230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24348:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24335:26:32","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":6232,"nodeType":"ExpressionStatement","src":"24335:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6233,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"24375:10:32","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6221,"src":"24389:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24375:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6242,"nodeType":"IfStatement","src":"24371:98:32","trueBody":{"id":6241,"nodeType":"Block","src":"24396:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":6237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24447:3:32","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":6238,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6221,"src":"24452:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6236,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"24417:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24417:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6240,"nodeType":"RevertStatement","src":"24410:48:32"}]}}]},"documentation":{"id":6219,"nodeType":"StructuredDocumentation","src":"23934:312:32","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":6244,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24260:8:32","nodeType":"FunctionDefinition","parameters":{"id":6222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6221,"mutability":"mutable","name":"value","nameLocation":"24276:5:32","nodeType":"VariableDeclaration","scope":6244,"src":"24269:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6220,"name":"int256","nodeType":"ElementaryTypeName","src":"24269:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24268:14:32"},"returnParameters":{"id":6225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6224,"mutability":"mutable","name":"downcasted","nameLocation":"24313:10:32","nodeType":"VariableDeclaration","scope":6244,"src":"24306:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":6223,"name":"int152","nodeType":"ElementaryTypeName","src":"24306:6:32","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24305:19:32"},"scope":6753,"src":"24251:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6269,"nodeType":"Block","src":"24872:150:32","statements":[{"expression":{"id":6257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6252,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6250,"src":"24882:10:32","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"24902:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24895:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":6253,"name":"int144","nodeType":"ElementaryTypeName","src":"24895:6:32","typeDescriptions":{}}},"id":6256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24895:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24882:26:32","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":6258,"nodeType":"ExpressionStatement","src":"24882:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6259,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6250,"src":"24922:10:32","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6260,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"24936:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24922:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6268,"nodeType":"IfStatement","src":"24918:98:32","trueBody":{"id":6267,"nodeType":"Block","src":"24943:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":6263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24994:3:32","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":6264,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"24999:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6262,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"24964:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24964:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6266,"nodeType":"RevertStatement","src":"24957:48:32"}]}}]},"documentation":{"id":6245,"nodeType":"StructuredDocumentation","src":"24481:312:32","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":6270,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24807:8:32","nodeType":"FunctionDefinition","parameters":{"id":6248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6247,"mutability":"mutable","name":"value","nameLocation":"24823:5:32","nodeType":"VariableDeclaration","scope":6270,"src":"24816:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6246,"name":"int256","nodeType":"ElementaryTypeName","src":"24816:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24815:14:32"},"returnParameters":{"id":6251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6250,"mutability":"mutable","name":"downcasted","nameLocation":"24860:10:32","nodeType":"VariableDeclaration","scope":6270,"src":"24853:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":6249,"name":"int144","nodeType":"ElementaryTypeName","src":"24853:6:32","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24852:19:32"},"scope":6753,"src":"24798:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6295,"nodeType":"Block","src":"25419:150:32","statements":[{"expression":{"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6278,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6276,"src":"25429:10:32","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6281,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6273,"src":"25449:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25442:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":6279,"name":"int136","nodeType":"ElementaryTypeName","src":"25442:6:32","typeDescriptions":{}}},"id":6282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25442:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25429:26:32","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":6284,"nodeType":"ExpressionStatement","src":"25429:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6285,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6276,"src":"25469:10:32","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6286,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6273,"src":"25483:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25469:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6294,"nodeType":"IfStatement","src":"25465:98:32","trueBody":{"id":6293,"nodeType":"Block","src":"25490:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":6289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25541:3:32","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":6290,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6273,"src":"25546:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6288,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"25511:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25511:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6292,"nodeType":"RevertStatement","src":"25504:48:32"}]}}]},"documentation":{"id":6271,"nodeType":"StructuredDocumentation","src":"25028:312:32","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":6296,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25354:8:32","nodeType":"FunctionDefinition","parameters":{"id":6274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6273,"mutability":"mutable","name":"value","nameLocation":"25370:5:32","nodeType":"VariableDeclaration","scope":6296,"src":"25363:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6272,"name":"int256","nodeType":"ElementaryTypeName","src":"25363:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25362:14:32"},"returnParameters":{"id":6277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6276,"mutability":"mutable","name":"downcasted","nameLocation":"25407:10:32","nodeType":"VariableDeclaration","scope":6296,"src":"25400:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":6275,"name":"int136","nodeType":"ElementaryTypeName","src":"25400:6:32","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25399:19:32"},"scope":6753,"src":"25345:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6321,"nodeType":"Block","src":"25966:150:32","statements":[{"expression":{"id":6309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6304,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6302,"src":"25976:10:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6307,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"25996:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25989:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":6305,"name":"int128","nodeType":"ElementaryTypeName","src":"25989:6:32","typeDescriptions":{}}},"id":6308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25989:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25976:26:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":6310,"nodeType":"ExpressionStatement","src":"25976:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6311,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6302,"src":"26016:10:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"26030:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26016:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6320,"nodeType":"IfStatement","src":"26012:98:32","trueBody":{"id":6319,"nodeType":"Block","src":"26037:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":6315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26088:3:32","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":6316,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"26093:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6314,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"26058:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26058:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6318,"nodeType":"RevertStatement","src":"26051:48:32"}]}}]},"documentation":{"id":6297,"nodeType":"StructuredDocumentation","src":"25575:312:32","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":6322,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25901:8:32","nodeType":"FunctionDefinition","parameters":{"id":6300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6299,"mutability":"mutable","name":"value","nameLocation":"25917:5:32","nodeType":"VariableDeclaration","scope":6322,"src":"25910:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6298,"name":"int256","nodeType":"ElementaryTypeName","src":"25910:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25909:14:32"},"returnParameters":{"id":6303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6302,"mutability":"mutable","name":"downcasted","nameLocation":"25954:10:32","nodeType":"VariableDeclaration","scope":6322,"src":"25947:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6301,"name":"int128","nodeType":"ElementaryTypeName","src":"25947:6:32","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25946:19:32"},"scope":6753,"src":"25892:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6347,"nodeType":"Block","src":"26513:150:32","statements":[{"expression":{"id":6335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6330,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6328,"src":"26523:10:32","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6325,"src":"26543:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26536:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":6331,"name":"int120","nodeType":"ElementaryTypeName","src":"26536:6:32","typeDescriptions":{}}},"id":6334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26536:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26523:26:32","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":6336,"nodeType":"ExpressionStatement","src":"26523:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6337,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6328,"src":"26563:10:32","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6338,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6325,"src":"26577:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26563:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6346,"nodeType":"IfStatement","src":"26559:98:32","trueBody":{"id":6345,"nodeType":"Block","src":"26584:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":6341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26635:3:32","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":6342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6325,"src":"26640:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6340,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"26605:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6344,"nodeType":"RevertStatement","src":"26598:48:32"}]}}]},"documentation":{"id":6323,"nodeType":"StructuredDocumentation","src":"26122:312:32","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":6348,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26448:8:32","nodeType":"FunctionDefinition","parameters":{"id":6326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6325,"mutability":"mutable","name":"value","nameLocation":"26464:5:32","nodeType":"VariableDeclaration","scope":6348,"src":"26457:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6324,"name":"int256","nodeType":"ElementaryTypeName","src":"26457:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26456:14:32"},"returnParameters":{"id":6329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6328,"mutability":"mutable","name":"downcasted","nameLocation":"26501:10:32","nodeType":"VariableDeclaration","scope":6348,"src":"26494:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":6327,"name":"int120","nodeType":"ElementaryTypeName","src":"26494:6:32","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26493:19:32"},"scope":6753,"src":"26439:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6373,"nodeType":"Block","src":"27060:150:32","statements":[{"expression":{"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6356,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6354,"src":"27070:10:32","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"27090:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27083:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":6357,"name":"int112","nodeType":"ElementaryTypeName","src":"27083:6:32","typeDescriptions":{}}},"id":6360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27083:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27070:26:32","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":6362,"nodeType":"ExpressionStatement","src":"27070:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6363,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6354,"src":"27110:10:32","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6364,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"27124:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27110:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6372,"nodeType":"IfStatement","src":"27106:98:32","trueBody":{"id":6371,"nodeType":"Block","src":"27131:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":6367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27182:3:32","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":6368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"27187:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6366,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"27152:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27152:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6370,"nodeType":"RevertStatement","src":"27145:48:32"}]}}]},"documentation":{"id":6349,"nodeType":"StructuredDocumentation","src":"26669:312:32","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":6374,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26995:8:32","nodeType":"FunctionDefinition","parameters":{"id":6352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6351,"mutability":"mutable","name":"value","nameLocation":"27011:5:32","nodeType":"VariableDeclaration","scope":6374,"src":"27004:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6350,"name":"int256","nodeType":"ElementaryTypeName","src":"27004:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27003:14:32"},"returnParameters":{"id":6355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6354,"mutability":"mutable","name":"downcasted","nameLocation":"27048:10:32","nodeType":"VariableDeclaration","scope":6374,"src":"27041:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":6353,"name":"int112","nodeType":"ElementaryTypeName","src":"27041:6:32","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27040:19:32"},"scope":6753,"src":"26986:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6399,"nodeType":"Block","src":"27607:150:32","statements":[{"expression":{"id":6387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6382,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6380,"src":"27617:10:32","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6385,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"27637:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27630:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":6383,"name":"int104","nodeType":"ElementaryTypeName","src":"27630:6:32","typeDescriptions":{}}},"id":6386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27630:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27617:26:32","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":6388,"nodeType":"ExpressionStatement","src":"27617:26:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6389,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6380,"src":"27657:10:32","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6390,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"27671:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27657:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6398,"nodeType":"IfStatement","src":"27653:98:32","trueBody":{"id":6397,"nodeType":"Block","src":"27678:73:32","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":6393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27729:3:32","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":6394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"27734:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6392,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"27699:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27699:41:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6396,"nodeType":"RevertStatement","src":"27692:48:32"}]}}]},"documentation":{"id":6375,"nodeType":"StructuredDocumentation","src":"27216:312:32","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":6400,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27542:8:32","nodeType":"FunctionDefinition","parameters":{"id":6378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6377,"mutability":"mutable","name":"value","nameLocation":"27558:5:32","nodeType":"VariableDeclaration","scope":6400,"src":"27551:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6376,"name":"int256","nodeType":"ElementaryTypeName","src":"27551:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27550:14:32"},"returnParameters":{"id":6381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6380,"mutability":"mutable","name":"downcasted","nameLocation":"27595:10:32","nodeType":"VariableDeclaration","scope":6400,"src":"27588:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":6379,"name":"int104","nodeType":"ElementaryTypeName","src":"27588:6:32","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27587:19:32"},"scope":6753,"src":"27533:224:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6425,"nodeType":"Block","src":"28147:148:32","statements":[{"expression":{"id":6413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6408,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"28157:10:32","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6411,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6403,"src":"28176:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28170:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":6409,"name":"int96","nodeType":"ElementaryTypeName","src":"28170:5:32","typeDescriptions":{}}},"id":6412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28170:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28157:25:32","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":6414,"nodeType":"ExpressionStatement","src":"28157:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6415,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"28196:10:32","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6403,"src":"28210:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28196:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6424,"nodeType":"IfStatement","src":"28192:97:32","trueBody":{"id":6423,"nodeType":"Block","src":"28217:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":6419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28268:2:32","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":6420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6403,"src":"28272:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6418,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"28238:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28238:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6422,"nodeType":"RevertStatement","src":"28231:47:32"}]}}]},"documentation":{"id":6401,"nodeType":"StructuredDocumentation","src":"27763:307:32","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":6426,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28084:7:32","nodeType":"FunctionDefinition","parameters":{"id":6404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6403,"mutability":"mutable","name":"value","nameLocation":"28099:5:32","nodeType":"VariableDeclaration","scope":6426,"src":"28092:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6402,"name":"int256","nodeType":"ElementaryTypeName","src":"28092:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28091:14:32"},"returnParameters":{"id":6407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6406,"mutability":"mutable","name":"downcasted","nameLocation":"28135:10:32","nodeType":"VariableDeclaration","scope":6426,"src":"28129:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":6405,"name":"int96","nodeType":"ElementaryTypeName","src":"28129:5:32","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28128:18:32"},"scope":6753,"src":"28075:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6451,"nodeType":"Block","src":"28685:148:32","statements":[{"expression":{"id":6439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6434,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"28695:10:32","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6429,"src":"28714:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28708:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":6435,"name":"int88","nodeType":"ElementaryTypeName","src":"28708:5:32","typeDescriptions":{}}},"id":6438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28708:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28695:25:32","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":6440,"nodeType":"ExpressionStatement","src":"28695:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6441,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"28734:10:32","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6429,"src":"28748:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28734:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6450,"nodeType":"IfStatement","src":"28730:97:32","trueBody":{"id":6449,"nodeType":"Block","src":"28755:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":6445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28806:2:32","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":6446,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6429,"src":"28810:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6444,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"28776:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28776:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6448,"nodeType":"RevertStatement","src":"28769:47:32"}]}}]},"documentation":{"id":6427,"nodeType":"StructuredDocumentation","src":"28301:307:32","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":6452,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28622:7:32","nodeType":"FunctionDefinition","parameters":{"id":6430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6429,"mutability":"mutable","name":"value","nameLocation":"28637:5:32","nodeType":"VariableDeclaration","scope":6452,"src":"28630:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6428,"name":"int256","nodeType":"ElementaryTypeName","src":"28630:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28629:14:32"},"returnParameters":{"id":6433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6432,"mutability":"mutable","name":"downcasted","nameLocation":"28673:10:32","nodeType":"VariableDeclaration","scope":6452,"src":"28667:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":6431,"name":"int88","nodeType":"ElementaryTypeName","src":"28667:5:32","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28666:18:32"},"scope":6753,"src":"28613:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6477,"nodeType":"Block","src":"29223:148:32","statements":[{"expression":{"id":6465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6460,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6458,"src":"29233:10:32","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6463,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"29252:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29246:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":6461,"name":"int80","nodeType":"ElementaryTypeName","src":"29246:5:32","typeDescriptions":{}}},"id":6464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29246:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29233:25:32","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":6466,"nodeType":"ExpressionStatement","src":"29233:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6467,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6458,"src":"29272:10:32","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6468,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"29286:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29272:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6476,"nodeType":"IfStatement","src":"29268:97:32","trueBody":{"id":6475,"nodeType":"Block","src":"29293:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":6471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:32","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":6472,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"29348:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6470,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"29314:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29314:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6474,"nodeType":"RevertStatement","src":"29307:47:32"}]}}]},"documentation":{"id":6453,"nodeType":"StructuredDocumentation","src":"28839:307:32","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":6478,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29160:7:32","nodeType":"FunctionDefinition","parameters":{"id":6456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6455,"mutability":"mutable","name":"value","nameLocation":"29175:5:32","nodeType":"VariableDeclaration","scope":6478,"src":"29168:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6454,"name":"int256","nodeType":"ElementaryTypeName","src":"29168:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29167:14:32"},"returnParameters":{"id":6459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6458,"mutability":"mutable","name":"downcasted","nameLocation":"29211:10:32","nodeType":"VariableDeclaration","scope":6478,"src":"29205:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":6457,"name":"int80","nodeType":"ElementaryTypeName","src":"29205:5:32","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29204:18:32"},"scope":6753,"src":"29151:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6503,"nodeType":"Block","src":"29761:148:32","statements":[{"expression":{"id":6491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6486,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"29771:10:32","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6489,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6481,"src":"29790:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29784:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":6487,"name":"int72","nodeType":"ElementaryTypeName","src":"29784:5:32","typeDescriptions":{}}},"id":6490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29784:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29771:25:32","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":6492,"nodeType":"ExpressionStatement","src":"29771:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6493,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"29810:10:32","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6494,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6481,"src":"29824:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29810:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6502,"nodeType":"IfStatement","src":"29806:97:32","trueBody":{"id":6501,"nodeType":"Block","src":"29831:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":6497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29882:2:32","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":6498,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6481,"src":"29886:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6496,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"29852:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29852:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6500,"nodeType":"RevertStatement","src":"29845:47:32"}]}}]},"documentation":{"id":6479,"nodeType":"StructuredDocumentation","src":"29377:307:32","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":6504,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29698:7:32","nodeType":"FunctionDefinition","parameters":{"id":6482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6481,"mutability":"mutable","name":"value","nameLocation":"29713:5:32","nodeType":"VariableDeclaration","scope":6504,"src":"29706:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6480,"name":"int256","nodeType":"ElementaryTypeName","src":"29706:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29705:14:32"},"returnParameters":{"id":6485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6484,"mutability":"mutable","name":"downcasted","nameLocation":"29749:10:32","nodeType":"VariableDeclaration","scope":6504,"src":"29743:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":6483,"name":"int72","nodeType":"ElementaryTypeName","src":"29743:5:32","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29742:18:32"},"scope":6753,"src":"29689:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6529,"nodeType":"Block","src":"30299:148:32","statements":[{"expression":{"id":6517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6512,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6510,"src":"30309:10:32","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6515,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6507,"src":"30328:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30322:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":6513,"name":"int64","nodeType":"ElementaryTypeName","src":"30322:5:32","typeDescriptions":{}}},"id":6516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30322:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30309:25:32","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":6518,"nodeType":"ExpressionStatement","src":"30309:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6519,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6510,"src":"30348:10:32","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6520,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6507,"src":"30362:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30348:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6528,"nodeType":"IfStatement","src":"30344:97:32","trueBody":{"id":6527,"nodeType":"Block","src":"30369:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":6523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30420:2:32","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":6524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6507,"src":"30424:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6522,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"30390:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30390:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6526,"nodeType":"RevertStatement","src":"30383:47:32"}]}}]},"documentation":{"id":6505,"nodeType":"StructuredDocumentation","src":"29915:307:32","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":6530,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30236:7:32","nodeType":"FunctionDefinition","parameters":{"id":6508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6507,"mutability":"mutable","name":"value","nameLocation":"30251:5:32","nodeType":"VariableDeclaration","scope":6530,"src":"30244:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6506,"name":"int256","nodeType":"ElementaryTypeName","src":"30244:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30243:14:32"},"returnParameters":{"id":6511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6510,"mutability":"mutable","name":"downcasted","nameLocation":"30287:10:32","nodeType":"VariableDeclaration","scope":6530,"src":"30281:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":6509,"name":"int64","nodeType":"ElementaryTypeName","src":"30281:5:32","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30280:18:32"},"scope":6753,"src":"30227:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6555,"nodeType":"Block","src":"30837:148:32","statements":[{"expression":{"id":6543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6538,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6536,"src":"30847:10:32","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6541,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6533,"src":"30866:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30860:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":6539,"name":"int56","nodeType":"ElementaryTypeName","src":"30860:5:32","typeDescriptions":{}}},"id":6542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30860:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30847:25:32","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":6544,"nodeType":"ExpressionStatement","src":"30847:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6545,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6536,"src":"30886:10:32","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6546,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6533,"src":"30900:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30886:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6554,"nodeType":"IfStatement","src":"30882:97:32","trueBody":{"id":6553,"nodeType":"Block","src":"30907:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":6549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30958:2:32","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":6550,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6533,"src":"30962:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6548,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"30928:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30928:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6552,"nodeType":"RevertStatement","src":"30921:47:32"}]}}]},"documentation":{"id":6531,"nodeType":"StructuredDocumentation","src":"30453:307:32","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":6556,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30774:7:32","nodeType":"FunctionDefinition","parameters":{"id":6534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6533,"mutability":"mutable","name":"value","nameLocation":"30789:5:32","nodeType":"VariableDeclaration","scope":6556,"src":"30782:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6532,"name":"int256","nodeType":"ElementaryTypeName","src":"30782:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30781:14:32"},"returnParameters":{"id":6537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6536,"mutability":"mutable","name":"downcasted","nameLocation":"30825:10:32","nodeType":"VariableDeclaration","scope":6556,"src":"30819:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":6535,"name":"int56","nodeType":"ElementaryTypeName","src":"30819:5:32","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30818:18:32"},"scope":6753,"src":"30765:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6581,"nodeType":"Block","src":"31375:148:32","statements":[{"expression":{"id":6569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6564,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6562,"src":"31385:10:32","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6567,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6559,"src":"31404:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31398:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":6565,"name":"int48","nodeType":"ElementaryTypeName","src":"31398:5:32","typeDescriptions":{}}},"id":6568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31398:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31385:25:32","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":6570,"nodeType":"ExpressionStatement","src":"31385:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6571,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6562,"src":"31424:10:32","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6572,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6559,"src":"31438:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31424:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6580,"nodeType":"IfStatement","src":"31420:97:32","trueBody":{"id":6579,"nodeType":"Block","src":"31445:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":6575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31496:2:32","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":6576,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6559,"src":"31500:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6574,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"31466:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31466:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6578,"nodeType":"RevertStatement","src":"31459:47:32"}]}}]},"documentation":{"id":6557,"nodeType":"StructuredDocumentation","src":"30991:307:32","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":6582,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31312:7:32","nodeType":"FunctionDefinition","parameters":{"id":6560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6559,"mutability":"mutable","name":"value","nameLocation":"31327:5:32","nodeType":"VariableDeclaration","scope":6582,"src":"31320:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6558,"name":"int256","nodeType":"ElementaryTypeName","src":"31320:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31319:14:32"},"returnParameters":{"id":6563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6562,"mutability":"mutable","name":"downcasted","nameLocation":"31363:10:32","nodeType":"VariableDeclaration","scope":6582,"src":"31357:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":6561,"name":"int48","nodeType":"ElementaryTypeName","src":"31357:5:32","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31356:18:32"},"scope":6753,"src":"31303:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6607,"nodeType":"Block","src":"31913:148:32","statements":[{"expression":{"id":6595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6590,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6588,"src":"31923:10:32","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6593,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6585,"src":"31942:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31936:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":6591,"name":"int40","nodeType":"ElementaryTypeName","src":"31936:5:32","typeDescriptions":{}}},"id":6594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31936:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31923:25:32","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":6596,"nodeType":"ExpressionStatement","src":"31923:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6597,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6588,"src":"31962:10:32","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6598,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6585,"src":"31976:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31962:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6606,"nodeType":"IfStatement","src":"31958:97:32","trueBody":{"id":6605,"nodeType":"Block","src":"31983:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":6601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32034:2:32","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":6602,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6585,"src":"32038:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6600,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"32004:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32004:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6604,"nodeType":"RevertStatement","src":"31997:47:32"}]}}]},"documentation":{"id":6583,"nodeType":"StructuredDocumentation","src":"31529:307:32","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":6608,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31850:7:32","nodeType":"FunctionDefinition","parameters":{"id":6586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6585,"mutability":"mutable","name":"value","nameLocation":"31865:5:32","nodeType":"VariableDeclaration","scope":6608,"src":"31858:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6584,"name":"int256","nodeType":"ElementaryTypeName","src":"31858:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31857:14:32"},"returnParameters":{"id":6589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6588,"mutability":"mutable","name":"downcasted","nameLocation":"31901:10:32","nodeType":"VariableDeclaration","scope":6608,"src":"31895:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":6587,"name":"int40","nodeType":"ElementaryTypeName","src":"31895:5:32","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31894:18:32"},"scope":6753,"src":"31841:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6633,"nodeType":"Block","src":"32451:148:32","statements":[{"expression":{"id":6621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6616,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6614,"src":"32461:10:32","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6619,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6611,"src":"32480:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32474:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":6617,"name":"int32","nodeType":"ElementaryTypeName","src":"32474:5:32","typeDescriptions":{}}},"id":6620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32474:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32461:25:32","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":6622,"nodeType":"ExpressionStatement","src":"32461:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6623,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6614,"src":"32500:10:32","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6624,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6611,"src":"32514:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32500:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6632,"nodeType":"IfStatement","src":"32496:97:32","trueBody":{"id":6631,"nodeType":"Block","src":"32521:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":6627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32572:2:32","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":6628,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6611,"src":"32576:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6626,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"32542:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32542:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6630,"nodeType":"RevertStatement","src":"32535:47:32"}]}}]},"documentation":{"id":6609,"nodeType":"StructuredDocumentation","src":"32067:307:32","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":6634,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32388:7:32","nodeType":"FunctionDefinition","parameters":{"id":6612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6611,"mutability":"mutable","name":"value","nameLocation":"32403:5:32","nodeType":"VariableDeclaration","scope":6634,"src":"32396:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6610,"name":"int256","nodeType":"ElementaryTypeName","src":"32396:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32395:14:32"},"returnParameters":{"id":6615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6614,"mutability":"mutable","name":"downcasted","nameLocation":"32439:10:32","nodeType":"VariableDeclaration","scope":6634,"src":"32433:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":6613,"name":"int32","nodeType":"ElementaryTypeName","src":"32433:5:32","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32432:18:32"},"scope":6753,"src":"32379:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6659,"nodeType":"Block","src":"32989:148:32","statements":[{"expression":{"id":6647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6642,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6640,"src":"32999:10:32","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6645,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"33018:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33012:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":6643,"name":"int24","nodeType":"ElementaryTypeName","src":"33012:5:32","typeDescriptions":{}}},"id":6646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33012:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32999:25:32","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":6648,"nodeType":"ExpressionStatement","src":"32999:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6649,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6640,"src":"33038:10:32","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6650,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"33052:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33038:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6658,"nodeType":"IfStatement","src":"33034:97:32","trueBody":{"id":6657,"nodeType":"Block","src":"33059:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":6653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33110:2:32","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":6654,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"33114:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6652,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"33080:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33080:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6656,"nodeType":"RevertStatement","src":"33073:47:32"}]}}]},"documentation":{"id":6635,"nodeType":"StructuredDocumentation","src":"32605:307:32","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":6660,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32926:7:32","nodeType":"FunctionDefinition","parameters":{"id":6638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6637,"mutability":"mutable","name":"value","nameLocation":"32941:5:32","nodeType":"VariableDeclaration","scope":6660,"src":"32934:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6636,"name":"int256","nodeType":"ElementaryTypeName","src":"32934:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32933:14:32"},"returnParameters":{"id":6641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6640,"mutability":"mutable","name":"downcasted","nameLocation":"32977:10:32","nodeType":"VariableDeclaration","scope":6660,"src":"32971:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6639,"name":"int24","nodeType":"ElementaryTypeName","src":"32971:5:32","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32970:18:32"},"scope":6753,"src":"32917:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6685,"nodeType":"Block","src":"33527:148:32","statements":[{"expression":{"id":6673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6668,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6666,"src":"33537:10:32","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6671,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6663,"src":"33556:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33550:5:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":6669,"name":"int16","nodeType":"ElementaryTypeName","src":"33550:5:32","typeDescriptions":{}}},"id":6672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33550:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33537:25:32","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":6674,"nodeType":"ExpressionStatement","src":"33537:25:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6675,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6666,"src":"33576:10:32","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6676,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6663,"src":"33590:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33576:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6684,"nodeType":"IfStatement","src":"33572:97:32","trueBody":{"id":6683,"nodeType":"Block","src":"33597:72:32","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":6679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33648:2:32","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":6680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6663,"src":"33652:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6678,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"33618:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33618:40:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6682,"nodeType":"RevertStatement","src":"33611:47:32"}]}}]},"documentation":{"id":6661,"nodeType":"StructuredDocumentation","src":"33143:307:32","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":6686,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33464:7:32","nodeType":"FunctionDefinition","parameters":{"id":6664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6663,"mutability":"mutable","name":"value","nameLocation":"33479:5:32","nodeType":"VariableDeclaration","scope":6686,"src":"33472:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6662,"name":"int256","nodeType":"ElementaryTypeName","src":"33472:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33471:14:32"},"returnParameters":{"id":6667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6666,"mutability":"mutable","name":"downcasted","nameLocation":"33515:10:32","nodeType":"VariableDeclaration","scope":6686,"src":"33509:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":6665,"name":"int16","nodeType":"ElementaryTypeName","src":"33509:5:32","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33508:18:32"},"scope":6753,"src":"33455:220:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6711,"nodeType":"Block","src":"34058:146:32","statements":[{"expression":{"id":6699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6694,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6692,"src":"34068:10:32","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6697,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6689,"src":"34086:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34081:4:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":6695,"name":"int8","nodeType":"ElementaryTypeName","src":"34081:4:32","typeDescriptions":{}}},"id":6698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34081:11:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34068:24:32","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":6700,"nodeType":"ExpressionStatement","src":"34068:24:32"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6701,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6692,"src":"34106:10:32","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6702,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6689,"src":"34120:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34106:19:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6710,"nodeType":"IfStatement","src":"34102:96:32","trueBody":{"id":6709,"nodeType":"Block","src":"34127:71:32","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":6705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34178:1:32","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":6706,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6689,"src":"34181:5:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6704,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"34148:29:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34148:39:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6708,"nodeType":"RevertStatement","src":"34141:46:32"}]}}]},"documentation":{"id":6687,"nodeType":"StructuredDocumentation","src":"33681:302:32","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":6712,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33997:6:32","nodeType":"FunctionDefinition","parameters":{"id":6690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6689,"mutability":"mutable","name":"value","nameLocation":"34011:5:32","nodeType":"VariableDeclaration","scope":6712,"src":"34004:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6688,"name":"int256","nodeType":"ElementaryTypeName","src":"34004:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34003:14:32"},"returnParameters":{"id":6693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6692,"mutability":"mutable","name":"downcasted","nameLocation":"34046:10:32","nodeType":"VariableDeclaration","scope":6712,"src":"34041:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":6691,"name":"int8","nodeType":"ElementaryTypeName","src":"34041:4:32","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34040:17:32"},"scope":6753,"src":"33988:216:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6741,"nodeType":"Block","src":"34444:250:32","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6720,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6715,"src":"34557:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":6725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34578:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6724,"name":"int256","nodeType":"ElementaryTypeName","src":"34578:6:32","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":6723,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34573:4:32","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34573:12:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":6727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34586:3:32","memberName":"max","nodeType":"MemberAccess","src":"34573:16:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34565:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6721,"name":"uint256","nodeType":"ElementaryTypeName","src":"34565:7:32","typeDescriptions":{}}},"id":6728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34565:25:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34557:33:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6735,"nodeType":"IfStatement","src":"34553:105:32","trueBody":{"id":6734,"nodeType":"Block","src":"34592:66:32","statements":[{"errorCall":{"arguments":[{"id":6731,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6715,"src":"34641:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6730,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5015,"src":"34613:27:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":6732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34613:34:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6733,"nodeType":"RevertStatement","src":"34606:41:32"}]}},{"expression":{"arguments":[{"id":6738,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6715,"src":"34681:5:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34674:6:32","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6736,"name":"int256","nodeType":"ElementaryTypeName","src":"34674:6:32","typeDescriptions":{}}},"id":6739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34674:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6719,"id":6740,"nodeType":"Return","src":"34667:20:32"}]},"documentation":{"id":6713,"nodeType":"StructuredDocumentation","src":"34210:165:32","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":6742,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34389:8:32","nodeType":"FunctionDefinition","parameters":{"id":6716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6715,"mutability":"mutable","name":"value","nameLocation":"34406:5:32","nodeType":"VariableDeclaration","scope":6742,"src":"34398:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6714,"name":"uint256","nodeType":"ElementaryTypeName","src":"34398:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34397:15:32"},"returnParameters":{"id":6719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6718,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6742,"src":"34436:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6717,"name":"int256","nodeType":"ElementaryTypeName","src":"34436:6:32","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34435:8:32"},"scope":6753,"src":"34380:314:32","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6751,"nodeType":"Block","src":"34853:87:32","statements":[{"AST":{"nativeSrc":"34888:46:32","nodeType":"YulBlock","src":"34888:46:32","statements":[{"nativeSrc":"34902:22:32","nodeType":"YulAssignment","src":"34902:22:32","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34921:1:32","nodeType":"YulIdentifier","src":"34921:1:32"}],"functionName":{"name":"iszero","nativeSrc":"34914:6:32","nodeType":"YulIdentifier","src":"34914:6:32"},"nativeSrc":"34914:9:32","nodeType":"YulFunctionCall","src":"34914:9:32"}],"functionName":{"name":"iszero","nativeSrc":"34907:6:32","nodeType":"YulIdentifier","src":"34907:6:32"},"nativeSrc":"34907:17:32","nodeType":"YulFunctionCall","src":"34907:17:32"},"variableNames":[{"name":"u","nativeSrc":"34902:1:32","nodeType":"YulIdentifier","src":"34902:1:32"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6745,"isOffset":false,"isSlot":false,"src":"34921:1:32","valueSize":1},{"declaration":6748,"isOffset":false,"isSlot":false,"src":"34902:1:32","valueSize":1}],"flags":["memory-safe"],"id":6750,"nodeType":"InlineAssembly","src":"34863:71:32"}]},"documentation":{"id":6743,"nodeType":"StructuredDocumentation","src":"34700:90:32","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":6752,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34804:6:32","nodeType":"FunctionDefinition","parameters":{"id":6746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6745,"mutability":"mutable","name":"b","nameLocation":"34816:1:32","nodeType":"VariableDeclaration","scope":6752,"src":"34811:6:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6744,"name":"bool","nodeType":"ElementaryTypeName","src":"34811:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34810:8:32"},"returnParameters":{"id":6749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6748,"mutability":"mutable","name":"u","nameLocation":"34850:1:32","nodeType":"VariableDeclaration","scope":6752,"src":"34842:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6747,"name":"uint256","nodeType":"ElementaryTypeName","src":"34842:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34841:11:32"},"scope":6753,"src":"34795:145:32","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6754,"src":"769:34173:32","usedErrors":[4998,5003,5010,5015],"usedEvents":[]}],"src":"192:34751:32"},"id":32},"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/structs/EnumerableSet.sol","exportedSymbols":{"Arrays":[2725],"EnumerableSet":[8279],"Math":[4988]},"id":8280,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6755,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"205:24:33"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/Arrays.sol","file":"../Arrays.sol","id":6757,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8280,"sourceUnit":2726,"src":"231:37:33","symbolAliases":[{"foreign":{"id":6756,"name":"Arrays","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"239:6:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/math/Math.sol","file":"../math/Math.sol","id":6759,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8280,"sourceUnit":4989,"src":"269:38:33","symbolAliases":[{"foreign":{"id":6758,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"277:4:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"EnumerableSet","contractDependencies":[],"contractKind":"library","documentation":{"id":6760,"nodeType":"StructuredDocumentation","src":"309:1276:33","text":" @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n - Set can be cleared (all elements removed) in O(n).\n ```solidity\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n The following types are supported:\n - `bytes32` (`Bytes32Set`) since v3.3.0\n - `address` (`AddressSet`) since v3.3.0\n - `uint256` (`UintSet`) since v3.3.0\n - `string` (`StringSet`) since v5.4.0\n - `bytes` (`BytesSet`) since v5.4.0\n [WARNING]\n ====\n Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n unusable.\n See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n array of EnumerableSet.\n ===="},"fullyImplemented":true,"id":8279,"linearizedBaseContracts":[8279],"name":"EnumerableSet","nameLocation":"1594:13:33","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.Set","id":6768,"members":[{"constant":false,"id":6763,"mutability":"mutable","name":"_values","nameLocation":"2118:7:33","nodeType":"VariableDeclaration","scope":6768,"src":"2108:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6761,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2108:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6762,"nodeType":"ArrayTypeName","src":"2108:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":6767,"mutability":"mutable","name":"_positions","nameLocation":"2310:10:33","nodeType":"VariableDeclaration","scope":6768,"src":"2276:44:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":6766,"keyName":"value","keyNameLocation":"2292:5:33","keyType":{"id":6764,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2284:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2276:33:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6765,"name":"uint256","nodeType":"ElementaryTypeName","src":"2301:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Set","nameLocation":"2061:3:33","nodeType":"StructDefinition","scope":8279,"src":"2054:273:33","visibility":"public"},{"body":{"id":6809,"nodeType":"Block","src":"2566:337:33","statements":[{"condition":{"id":6783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2580:22:33","subExpression":{"arguments":[{"id":6780,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6772,"src":"2591:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},{"id":6781,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6774,"src":"2596:5:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6779,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6956,"src":"2581:9:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":6782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2581:21:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6807,"nodeType":"Block","src":"2860:37:33","statements":[{"expression":{"hexValue":"66616c7365","id":6805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2881:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6778,"id":6806,"nodeType":"Return","src":"2874:12:33"}]},"id":6808,"nodeType":"IfStatement","src":"2576:321:33","trueBody":{"id":6804,"nodeType":"Block","src":"2604:250:33","statements":[{"expression":{"arguments":[{"id":6789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6774,"src":"2635:5:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":6784,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6772,"src":"2618:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2622:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"2618:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2630:4:33","memberName":"push","nodeType":"MemberAccess","src":"2618:16:33","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer,bytes32)"}},"id":6790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2618:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6791,"nodeType":"ExpressionStatement","src":"2618:23:33"},{"expression":{"id":6800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6792,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6772,"src":"2776:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2780:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6767,"src":"2776:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6796,"indexExpression":{"id":6794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6774,"src":"2791:5:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2776:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":6797,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6772,"src":"2800:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2804:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"2800:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2812:6:33","memberName":"length","nodeType":"MemberAccess","src":"2800:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2776:42:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6801,"nodeType":"ExpressionStatement","src":"2776:42:33"},{"expression":{"hexValue":"74727565","id":6802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2839:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6778,"id":6803,"nodeType":"Return","src":"2832:11:33"}]}}]},"documentation":{"id":6769,"nodeType":"StructuredDocumentation","src":"2333:159:33","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":6810,"implemented":true,"kind":"function","modifiers":[],"name":"_add","nameLocation":"2506:4:33","nodeType":"FunctionDefinition","parameters":{"id":6775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6772,"mutability":"mutable","name":"set","nameLocation":"2523:3:33","nodeType":"VariableDeclaration","scope":6810,"src":"2511:15:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6771,"nodeType":"UserDefinedTypeName","pathNode":{"id":6770,"name":"Set","nameLocations":["2511:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"2511:3:33"},"referencedDeclaration":6768,"src":"2511:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6774,"mutability":"mutable","name":"value","nameLocation":"2536:5:33","nodeType":"VariableDeclaration","scope":6810,"src":"2528:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6773,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2528:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2510:32:33"},"returnParameters":{"id":6778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6777,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6810,"src":"2560:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6776,"name":"bool","nodeType":"ElementaryTypeName","src":"2560:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2559:6:33"},"scope":8279,"src":"2497:406:33","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6893,"nodeType":"Block","src":"3143:1296:33","statements":[{"assignments":[6822],"declarations":[{"constant":false,"id":6822,"mutability":"mutable","name":"position","nameLocation":"3255:8:33","nodeType":"VariableDeclaration","scope":6893,"src":"3247:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6821,"name":"uint256","nodeType":"ElementaryTypeName","src":"3247:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6827,"initialValue":{"baseExpression":{"expression":{"id":6823,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"3266:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6824,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3270:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6767,"src":"3266:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6826,"indexExpression":{"id":6825,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6816,"src":"3281:5:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3266:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3247:40:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6828,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6822,"src":"3302:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3314:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3302:13:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6891,"nodeType":"Block","src":"4396:37:33","statements":[{"expression":{"hexValue":"66616c7365","id":6889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4417:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":6820,"id":6890,"nodeType":"Return","src":"4410:12:33"}]},"id":6892,"nodeType":"IfStatement","src":"3298:1135:33","trueBody":{"id":6888,"nodeType":"Block","src":"3317:1073:33","statements":[{"assignments":[6832],"declarations":[{"constant":false,"id":6832,"mutability":"mutable","name":"valueIndex","nameLocation":"3677:10:33","nodeType":"VariableDeclaration","scope":6888,"src":"3669:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6831,"name":"uint256","nodeType":"ElementaryTypeName","src":"3669:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6836,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6833,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6822,"src":"3690:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3701:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3690:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3669:33:33"},{"assignments":[6838],"declarations":[{"constant":false,"id":6838,"mutability":"mutable","name":"lastIndex","nameLocation":"3724:9:33","nodeType":"VariableDeclaration","scope":6888,"src":"3716:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6837,"name":"uint256","nodeType":"ElementaryTypeName","src":"3716:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6844,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6839,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"3736:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3740:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"3736:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3748:6:33","memberName":"length","nodeType":"MemberAccess","src":"3736:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3757:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3736:22:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3716:42:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6845,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6832,"src":"3777:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6846,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6838,"src":"3791:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3777:23:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6872,"nodeType":"IfStatement","src":"3773:378:33","trueBody":{"id":6871,"nodeType":"Block","src":"3802:349:33","statements":[{"assignments":[6849],"declarations":[{"constant":false,"id":6849,"mutability":"mutable","name":"lastValue","nameLocation":"3828:9:33","nodeType":"VariableDeclaration","scope":6871,"src":"3820:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6848,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3820:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6854,"initialValue":{"baseExpression":{"expression":{"id":6850,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"3840:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6851,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3844:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"3840:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6853,"indexExpression":{"id":6852,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6838,"src":"3852:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3840:22:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3820:42:33"},{"expression":{"id":6861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6855,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"3961:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6858,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3965:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"3961:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6859,"indexExpression":{"id":6857,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6832,"src":"3973:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3961:23:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6860,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6849,"src":"3987:9:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3961:35:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6862,"nodeType":"ExpressionStatement","src":"3961:35:33"},{"expression":{"id":6869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":6863,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"4100:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4104:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6767,"src":"4100:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6867,"indexExpression":{"id":6865,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6849,"src":"4115:9:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4100:25:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6868,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6822,"src":"4128:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4100:36:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6870,"nodeType":"ExpressionStatement","src":"4100:36:33"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":6873,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"4229:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6876,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4233:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"4229:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4241:3:33","memberName":"pop","nodeType":"MemberAccess","src":"4229:15:33","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer)"}},"id":6878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4229:17:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6879,"nodeType":"ExpressionStatement","src":"4229:17:33"},{"expression":{"id":6884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4325:28:33","subExpression":{"baseExpression":{"expression":{"id":6880,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"4332:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6881,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4336:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6767,"src":"4332:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6883,"indexExpression":{"id":6882,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6816,"src":"4347:5:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4332:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6885,"nodeType":"ExpressionStatement","src":"4325:28:33"},{"expression":{"hexValue":"74727565","id":6886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4375:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6820,"id":6887,"nodeType":"Return","src":"4368:11:33"}]}}]},"documentation":{"id":6811,"nodeType":"StructuredDocumentation","src":"2909:157:33","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":6894,"implemented":true,"kind":"function","modifiers":[],"name":"_remove","nameLocation":"3080:7:33","nodeType":"FunctionDefinition","parameters":{"id":6817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6814,"mutability":"mutable","name":"set","nameLocation":"3100:3:33","nodeType":"VariableDeclaration","scope":6894,"src":"3088:15:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6813,"nodeType":"UserDefinedTypeName","pathNode":{"id":6812,"name":"Set","nameLocations":["3088:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"3088:3:33"},"referencedDeclaration":6768,"src":"3088:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6816,"mutability":"mutable","name":"value","nameLocation":"3113:5:33","nodeType":"VariableDeclaration","scope":6894,"src":"3105:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6815,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3105:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3087:32:33"},"returnParameters":{"id":6820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6819,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6894,"src":"3137:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6818,"name":"bool","nodeType":"ElementaryTypeName","src":"3137:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3136:6:33"},"scope":8279,"src":"3071:1368:33","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6936,"nodeType":"Block","src":"4824:196:33","statements":[{"assignments":[6902],"declarations":[{"constant":false,"id":6902,"mutability":"mutable","name":"len","nameLocation":"4842:3:33","nodeType":"VariableDeclaration","scope":6936,"src":"4834:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6901,"name":"uint256","nodeType":"ElementaryTypeName","src":"4834:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6906,"initialValue":{"arguments":[{"id":6904,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"4856:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}],"id":6903,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6970,"src":"4848:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":6905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4848:12:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4834:26:33"},{"body":{"id":6926,"nodeType":"Block","src":"4904:62:33","statements":[{"expression":{"id":6924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4918:37:33","subExpression":{"baseExpression":{"expression":{"id":6917,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"4925:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4929:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6767,"src":"4925:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6923,"indexExpression":{"baseExpression":{"expression":{"id":6919,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"4940:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6920,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4944:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"4940:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6922,"indexExpression":{"id":6921,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"4952:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4940:14:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4925:30:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6925,"nodeType":"ExpressionStatement","src":"4918:37:33"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6911,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"4890:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6912,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6902,"src":"4894:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4890:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6927,"initializationExpression":{"assignments":[6908],"declarations":[{"constant":false,"id":6908,"mutability":"mutable","name":"i","nameLocation":"4883:1:33","nodeType":"VariableDeclaration","scope":6927,"src":"4875:9:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6907,"name":"uint256","nodeType":"ElementaryTypeName","src":"4875:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6910,"initialValue":{"hexValue":"30","id":6909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4887:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4875:13:33"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":6915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4899:3:33","subExpression":{"id":6914,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"4901:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6916,"nodeType":"ExpressionStatement","src":"4899:3:33"},"nodeType":"ForStatement","src":"4870:96:33"},{"expression":{"arguments":[{"expression":{"id":6931,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"4998:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5002:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"4998:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},{"hexValue":"30","id":6933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5011:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":6928,"name":"Arrays","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"4975:6:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Arrays_$2725_$","typeString":"type(library Arrays)"}},"id":6930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4982:15:33","memberName":"unsafeSetLength","nodeType":"MemberAccess","referencedDeclaration":2691,"src":"4975:22:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_uint256_$returns$__$","typeString":"function (bytes32[] storage pointer,uint256)"}},"id":6934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4975:38:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6935,"nodeType":"ExpressionStatement","src":"4975:38:33"}]},"documentation":{"id":6895,"nodeType":"StructuredDocumentation","src":"4445:333:33","text":" @dev Removes all the values from a set. O(n).\n WARNING: This function has an unbounded cost that scales with set size. Developers should keep in mind that\n using it may render the function uncallable if the set grows to the point where clearing it consumes too much\n gas to fit in a block."},"id":6937,"implemented":true,"kind":"function","modifiers":[],"name":"_clear","nameLocation":"4792:6:33","nodeType":"FunctionDefinition","parameters":{"id":6899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6898,"mutability":"mutable","name":"set","nameLocation":"4811:3:33","nodeType":"VariableDeclaration","scope":6937,"src":"4799:15:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6897,"nodeType":"UserDefinedTypeName","pathNode":{"id":6896,"name":"Set","nameLocations":["4799:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"4799:3:33"},"referencedDeclaration":6768,"src":"4799:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"src":"4798:17:33"},"returnParameters":{"id":6900,"nodeType":"ParameterList","parameters":[],"src":"4824:0:33"},"scope":8279,"src":"4783:237:33","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6955,"nodeType":"Block","src":"5180:50:33","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":6948,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6941,"src":"5197:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5201:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":6767,"src":"5197:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":6951,"indexExpression":{"id":6950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6943,"src":"5212:5:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5197:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5222:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5197:26:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6947,"id":6954,"nodeType":"Return","src":"5190:33:33"}]},"documentation":{"id":6938,"nodeType":"StructuredDocumentation","src":"5026:70:33","text":" @dev Returns true if the value is in the set. O(1)."},"id":6956,"implemented":true,"kind":"function","modifiers":[],"name":"_contains","nameLocation":"5110:9:33","nodeType":"FunctionDefinition","parameters":{"id":6944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6941,"mutability":"mutable","name":"set","nameLocation":"5132:3:33","nodeType":"VariableDeclaration","scope":6956,"src":"5120:15:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6940,"nodeType":"UserDefinedTypeName","pathNode":{"id":6939,"name":"Set","nameLocations":["5120:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"5120:3:33"},"referencedDeclaration":6768,"src":"5120:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6943,"mutability":"mutable","name":"value","nameLocation":"5145:5:33","nodeType":"VariableDeclaration","scope":6956,"src":"5137:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6942,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5137:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5119:32:33"},"returnParameters":{"id":6947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6946,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6956,"src":"5174:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6945,"name":"bool","nodeType":"ElementaryTypeName","src":"5174:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5173:6:33"},"scope":8279,"src":"5101:129:33","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6969,"nodeType":"Block","src":"5376:42:33","statements":[{"expression":{"expression":{"expression":{"id":6965,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6960,"src":"5393:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6966,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5397:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"5393:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5405:6:33","memberName":"length","nodeType":"MemberAccess","src":"5393:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6964,"id":6968,"nodeType":"Return","src":"5386:25:33"}]},"documentation":{"id":6957,"nodeType":"StructuredDocumentation","src":"5236:70:33","text":" @dev Returns the number of values on the set. O(1)."},"id":6970,"implemented":true,"kind":"function","modifiers":[],"name":"_length","nameLocation":"5320:7:33","nodeType":"FunctionDefinition","parameters":{"id":6961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6960,"mutability":"mutable","name":"set","nameLocation":"5340:3:33","nodeType":"VariableDeclaration","scope":6970,"src":"5328:15:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6959,"nodeType":"UserDefinedTypeName","pathNode":{"id":6958,"name":"Set","nameLocations":["5328:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"5328:3:33"},"referencedDeclaration":6768,"src":"5328:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"src":"5327:17:33"},"returnParameters":{"id":6964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6963,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6970,"src":"5367:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6962,"name":"uint256","nodeType":"ElementaryTypeName","src":"5367:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5366:9:33"},"scope":8279,"src":"5311:107:33","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6986,"nodeType":"Block","src":"5836:42:33","statements":[{"expression":{"baseExpression":{"expression":{"id":6981,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6974,"src":"5853:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6982,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5857:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"5853:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":6984,"indexExpression":{"id":6983,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6976,"src":"5865:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5853:18:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6980,"id":6985,"nodeType":"Return","src":"5846:25:33"}]},"documentation":{"id":6971,"nodeType":"StructuredDocumentation","src":"5424:331:33","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":6987,"implemented":true,"kind":"function","modifiers":[],"name":"_at","nameLocation":"5769:3:33","nodeType":"FunctionDefinition","parameters":{"id":6977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6974,"mutability":"mutable","name":"set","nameLocation":"5785:3:33","nodeType":"VariableDeclaration","scope":6987,"src":"5773:15:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6973,"nodeType":"UserDefinedTypeName","pathNode":{"id":6972,"name":"Set","nameLocations":["5773:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"5773:3:33"},"referencedDeclaration":6768,"src":"5773:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":6976,"mutability":"mutable","name":"index","nameLocation":"5798:5:33","nodeType":"VariableDeclaration","scope":6987,"src":"5790:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6975,"name":"uint256","nodeType":"ElementaryTypeName","src":"5790:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5772:32:33"},"returnParameters":{"id":6980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6979,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6987,"src":"5827:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5827:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5826:9:33"},"scope":8279,"src":"5760:118:33","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":7000,"nodeType":"Block","src":"6492:35:33","statements":[{"expression":{"expression":{"id":6997,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"6509:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":6998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6513:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"6509:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"functionReturnParameters":6996,"id":6999,"nodeType":"Return","src":"6502:18:33"}]},"documentation":{"id":6988,"nodeType":"StructuredDocumentation","src":"5884:529:33","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7001,"implemented":true,"kind":"function","modifiers":[],"name":"_values","nameLocation":"6427:7:33","nodeType":"FunctionDefinition","parameters":{"id":6992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6991,"mutability":"mutable","name":"set","nameLocation":"6447:3:33","nodeType":"VariableDeclaration","scope":7001,"src":"6435:15:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":6990,"nodeType":"UserDefinedTypeName","pathNode":{"id":6989,"name":"Set","nameLocations":["6435:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"6435:3:33"},"referencedDeclaration":6768,"src":"6435:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"src":"6434:17:33"},"returnParameters":{"id":6996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6995,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7001,"src":"6474:16:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":6993,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6474:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6994,"nodeType":"ArrayTypeName","src":"6474:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6473:18:33"},"scope":8279,"src":"6418:109:33","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":7079,"nodeType":"Block","src":"7173:392:33","statements":[{"id":7078,"nodeType":"UncheckedBlock","src":"7183:376:33","statements":[{"expression":{"id":7023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7015,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"7207:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7018,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"7222:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7020,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7005,"src":"7235:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}],"id":7019,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6970,"src":"7227:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":7021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7227:12:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7016,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"7213:4:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":7017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7218:3:33","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":3694,"src":"7213:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7213:27:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7207:33:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7024,"nodeType":"ExpressionStatement","src":"7207:33:33"},{"expression":{"id":7031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7025,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7007,"src":"7254:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7028,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7007,"src":"7271:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7029,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"7278:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7026,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"7262:4:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":7027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7267:3:33","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":3694,"src":"7262:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7262:20:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7254:28:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7032,"nodeType":"ExpressionStatement","src":"7254:28:33"},{"assignments":[7034],"declarations":[{"constant":false,"id":7034,"mutability":"mutable","name":"len","nameLocation":"7305:3:33","nodeType":"VariableDeclaration","scope":7078,"src":"7297:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7033,"name":"uint256","nodeType":"ElementaryTypeName","src":"7297:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7038,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7035,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"7311:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7036,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7007,"src":"7317:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7311:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7297:25:33"},{"assignments":[7043],"declarations":[{"constant":false,"id":7043,"mutability":"mutable","name":"result","nameLocation":"7353:6:33","nodeType":"VariableDeclaration","scope":7078,"src":"7336:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7041,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7336:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7042,"nodeType":"ArrayTypeName","src":"7336:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7049,"initialValue":{"arguments":[{"id":7047,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7034,"src":"7376:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7362:13:33","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":7044,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7366:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7045,"nodeType":"ArrayTypeName","src":"7366:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":7048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7362:18:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7336:44:33"},{"body":{"id":7074,"nodeType":"Block","src":"7428:94:33","statements":[{"expression":{"id":7072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7060,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7043,"src":"7446:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":7062,"indexExpression":{"id":7061,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"7453:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7446:9:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"expression":{"id":7065,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7005,"src":"7478:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set storage pointer"}},"id":7066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7482:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":6763,"src":"7478:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7067,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7007,"src":"7491:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7068,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"7499:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7491:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7063,"name":"Arrays","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"7458:6:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Arrays_$2725_$","typeString":"type(library Arrays)"}},"id":7064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7465:12:33","memberName":"unsafeAccess","nodeType":"MemberAccess","referencedDeclaration":2526,"src":"7458:19:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Bytes32Slot_$3020_storage_ptr_$","typeString":"function (bytes32[] storage pointer,uint256) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":7070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7458:43:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$3020_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":7071,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7502:5:33","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3019,"src":"7458:49:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7446:61:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7073,"nodeType":"ExpressionStatement","src":"7446:61:33"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7054,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"7414:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7055,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7034,"src":"7418:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7414:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7075,"initializationExpression":{"assignments":[7051],"declarations":[{"constant":false,"id":7051,"mutability":"mutable","name":"i","nameLocation":"7407:1:33","nodeType":"VariableDeclaration","scope":7075,"src":"7399:9:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7050,"name":"uint256","nodeType":"ElementaryTypeName","src":"7399:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7053,"initialValue":{"hexValue":"30","id":7052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7411:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7399:13:33"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7423:3:33","subExpression":{"id":7057,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7051,"src":"7425:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7059,"nodeType":"ExpressionStatement","src":"7423:3:33"},"nodeType":"ForStatement","src":"7394:128:33"},{"expression":{"id":7076,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7043,"src":"7542:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":7014,"id":7077,"nodeType":"Return","src":"7535:13:33"}]}]},"documentation":{"id":7002,"nodeType":"StructuredDocumentation","src":"6533:533:33","text":" @dev Return a slice of the set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7080,"implemented":true,"kind":"function","modifiers":[],"name":"_values","nameLocation":"7080:7:33","nodeType":"FunctionDefinition","parameters":{"id":7010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7005,"mutability":"mutable","name":"set","nameLocation":"7100:3:33","nodeType":"VariableDeclaration","scope":7080,"src":"7088:15:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7004,"nodeType":"UserDefinedTypeName","pathNode":{"id":7003,"name":"Set","nameLocations":["7088:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"7088:3:33"},"referencedDeclaration":6768,"src":"7088:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"},{"constant":false,"id":7007,"mutability":"mutable","name":"start","nameLocation":"7113:5:33","nodeType":"VariableDeclaration","scope":7080,"src":"7105:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7006,"name":"uint256","nodeType":"ElementaryTypeName","src":"7105:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7009,"mutability":"mutable","name":"end","nameLocation":"7128:3:33","nodeType":"VariableDeclaration","scope":7080,"src":"7120:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7008,"name":"uint256","nodeType":"ElementaryTypeName","src":"7120:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7087:45:33"},"returnParameters":{"id":7014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7080,"src":"7155:16:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7011,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7155:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7012,"nodeType":"ArrayTypeName","src":"7155:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"7154:18:33"},"scope":8279,"src":"7071:494:33","stateMutability":"view","virtual":false,"visibility":"private"},{"canonicalName":"EnumerableSet.Bytes32Set","id":7084,"members":[{"constant":false,"id":7083,"mutability":"mutable","name":"_inner","nameLocation":"7622:6:33","nodeType":"VariableDeclaration","scope":7084,"src":"7618:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7082,"nodeType":"UserDefinedTypeName","pathNode":{"id":7081,"name":"Set","nameLocations":["7618:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"7618:3:33"},"referencedDeclaration":6768,"src":"7618:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"Bytes32Set","nameLocation":"7597:10:33","nodeType":"StructDefinition","scope":8279,"src":"7590:45:33","visibility":"public"},{"body":{"id":7101,"nodeType":"Block","src":"7881:47:33","statements":[{"expression":{"arguments":[{"expression":{"id":7096,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"7903:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7097,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7907:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7083,"src":"7903:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7090,"src":"7915:5:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7095,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6810,"src":"7898:4:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6768_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7898:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7094,"id":7100,"nodeType":"Return","src":"7891:30:33"}]},"documentation":{"id":7085,"nodeType":"StructuredDocumentation","src":"7641:159:33","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":7102,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"7814:3:33","nodeType":"FunctionDefinition","parameters":{"id":7091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7088,"mutability":"mutable","name":"set","nameLocation":"7837:3:33","nodeType":"VariableDeclaration","scope":7102,"src":"7818:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7087,"nodeType":"UserDefinedTypeName","pathNode":{"id":7086,"name":"Bytes32Set","nameLocations":["7818:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7084,"src":"7818:10:33"},"referencedDeclaration":7084,"src":"7818:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7090,"mutability":"mutable","name":"value","nameLocation":"7850:5:33","nodeType":"VariableDeclaration","scope":7102,"src":"7842:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7089,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7842:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7817:39:33"},"returnParameters":{"id":7094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7093,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7102,"src":"7875:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7092,"name":"bool","nodeType":"ElementaryTypeName","src":"7875:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7874:6:33"},"scope":8279,"src":"7805:123:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7119,"nodeType":"Block","src":"8175:50:33","statements":[{"expression":{"arguments":[{"expression":{"id":7114,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7106,"src":"8200:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7115,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8204:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7083,"src":"8200:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7116,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7108,"src":"8212:5:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7113,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6894,"src":"8192:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6768_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8192:26:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7112,"id":7118,"nodeType":"Return","src":"8185:33:33"}]},"documentation":{"id":7103,"nodeType":"StructuredDocumentation","src":"7934:157:33","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":7120,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"8105:6:33","nodeType":"FunctionDefinition","parameters":{"id":7109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7106,"mutability":"mutable","name":"set","nameLocation":"8131:3:33","nodeType":"VariableDeclaration","scope":7120,"src":"8112:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7105,"nodeType":"UserDefinedTypeName","pathNode":{"id":7104,"name":"Bytes32Set","nameLocations":["8112:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7084,"src":"8112:10:33"},"referencedDeclaration":7084,"src":"8112:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7108,"mutability":"mutable","name":"value","nameLocation":"8144:5:33","nodeType":"VariableDeclaration","scope":7120,"src":"8136:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7107,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8136:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8111:39:33"},"returnParameters":{"id":7112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7120,"src":"8169:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7110,"name":"bool","nodeType":"ElementaryTypeName","src":"8169:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8168:6:33"},"scope":8279,"src":"8096:129:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7132,"nodeType":"Block","src":"8587:35:33","statements":[{"expression":{"arguments":[{"expression":{"id":7128,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"8604:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8608:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7083,"src":"8604:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7127,"name":"_clear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"8597:6:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6768_storage_ptr_$returns$__$","typeString":"function (struct EnumerableSet.Set storage pointer)"}},"id":7130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8597:18:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7131,"nodeType":"ExpressionStatement","src":"8597:18:33"}]},"documentation":{"id":7121,"nodeType":"StructuredDocumentation","src":"8231:303:33","text":" @dev Removes all the values from a set. O(n).\n WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the\n function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block."},"id":7133,"implemented":true,"kind":"function","modifiers":[],"name":"clear","nameLocation":"8548:5:33","nodeType":"FunctionDefinition","parameters":{"id":7125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7124,"mutability":"mutable","name":"set","nameLocation":"8573:3:33","nodeType":"VariableDeclaration","scope":7133,"src":"8554:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7123,"nodeType":"UserDefinedTypeName","pathNode":{"id":7122,"name":"Bytes32Set","nameLocations":["8554:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7084,"src":"8554:10:33"},"referencedDeclaration":7084,"src":"8554:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"8553:24:33"},"returnParameters":{"id":7126,"nodeType":"ParameterList","parameters":[],"src":"8587:0:33"},"scope":8279,"src":"8539:83:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7150,"nodeType":"Block","src":"8789:52:33","statements":[{"expression":{"arguments":[{"expression":{"id":7145,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7137,"src":"8816:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8820:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7083,"src":"8816:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7147,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7139,"src":"8828:5:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7144,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6956,"src":"8806:9:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":7148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8806:28:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7143,"id":7149,"nodeType":"Return","src":"8799:35:33"}]},"documentation":{"id":7134,"nodeType":"StructuredDocumentation","src":"8628:70:33","text":" @dev Returns true if the value is in the set. O(1)."},"id":7151,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"8712:8:33","nodeType":"FunctionDefinition","parameters":{"id":7140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7137,"mutability":"mutable","name":"set","nameLocation":"8740:3:33","nodeType":"VariableDeclaration","scope":7151,"src":"8721:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7136,"nodeType":"UserDefinedTypeName","pathNode":{"id":7135,"name":"Bytes32Set","nameLocations":["8721:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7084,"src":"8721:10:33"},"referencedDeclaration":7084,"src":"8721:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7139,"mutability":"mutable","name":"value","nameLocation":"8753:5:33","nodeType":"VariableDeclaration","scope":7151,"src":"8745:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8745:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8720:39:33"},"returnParameters":{"id":7143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7151,"src":"8783:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7141,"name":"bool","nodeType":"ElementaryTypeName","src":"8783:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8782:6:33"},"scope":8279,"src":"8703:138:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7165,"nodeType":"Block","src":"8994:43:33","statements":[{"expression":{"arguments":[{"expression":{"id":7161,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7155,"src":"9019:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9023:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7083,"src":"9019:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7160,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6970,"src":"9011:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":7163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9011:19:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7159,"id":7164,"nodeType":"Return","src":"9004:26:33"}]},"documentation":{"id":7152,"nodeType":"StructuredDocumentation","src":"8847:70:33","text":" @dev Returns the number of values in the set. O(1)."},"id":7166,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"8931:6:33","nodeType":"FunctionDefinition","parameters":{"id":7156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7155,"mutability":"mutable","name":"set","nameLocation":"8957:3:33","nodeType":"VariableDeclaration","scope":7166,"src":"8938:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7154,"nodeType":"UserDefinedTypeName","pathNode":{"id":7153,"name":"Bytes32Set","nameLocations":["8938:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7084,"src":"8938:10:33"},"referencedDeclaration":7084,"src":"8938:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"8937:24:33"},"returnParameters":{"id":7159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7158,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7166,"src":"8985:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7157,"name":"uint256","nodeType":"ElementaryTypeName","src":"8985:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8984:9:33"},"scope":8279,"src":"8922:115:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7183,"nodeType":"Block","src":"9462:46:33","statements":[{"expression":{"arguments":[{"expression":{"id":7178,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7170,"src":"9483:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9487:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7083,"src":"9483:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7180,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"9495:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7177,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6987,"src":"9479:3:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":7181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9479:22:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7176,"id":7182,"nodeType":"Return","src":"9472:29:33"}]},"documentation":{"id":7167,"nodeType":"StructuredDocumentation","src":"9043:331:33","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7184,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"9388:2:33","nodeType":"FunctionDefinition","parameters":{"id":7173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7170,"mutability":"mutable","name":"set","nameLocation":"9410:3:33","nodeType":"VariableDeclaration","scope":7184,"src":"9391:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7169,"nodeType":"UserDefinedTypeName","pathNode":{"id":7168,"name":"Bytes32Set","nameLocations":["9391:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7084,"src":"9391:10:33"},"referencedDeclaration":7084,"src":"9391:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7172,"mutability":"mutable","name":"index","nameLocation":"9423:5:33","nodeType":"VariableDeclaration","scope":7184,"src":"9415:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7171,"name":"uint256","nodeType":"ElementaryTypeName","src":"9415:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9390:39:33"},"returnParameters":{"id":7176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7175,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7184,"src":"9453:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9453:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9452:9:33"},"scope":8279,"src":"9379:129:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7213,"nodeType":"Block","src":"10129:192:33","statements":[{"assignments":[7198],"declarations":[{"constant":false,"id":7198,"mutability":"mutable","name":"store","nameLocation":"10156:5:33","nodeType":"VariableDeclaration","scope":7213,"src":"10139:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7196,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10139:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7197,"nodeType":"ArrayTypeName","src":"10139:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7203,"initialValue":{"arguments":[{"expression":{"id":7200,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7188,"src":"10172:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7201,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10176:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7083,"src":"10172:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7199,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[7001,7080],"referencedDeclaration":7001,"src":"10164:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"}},"id":7202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10164:19:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10139:44:33"},{"assignments":[7208],"declarations":[{"constant":false,"id":7208,"mutability":"mutable","name":"result","nameLocation":"10210:6:33","nodeType":"VariableDeclaration","scope":7213,"src":"10193:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7206,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10193:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7207,"nodeType":"ArrayTypeName","src":"10193:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7209,"nodeType":"VariableDeclarationStatement","src":"10193:23:33"},{"AST":{"nativeSrc":"10252:39:33","nodeType":"YulBlock","src":"10252:39:33","statements":[{"nativeSrc":"10266:15:33","nodeType":"YulAssignment","src":"10266:15:33","value":{"name":"store","nativeSrc":"10276:5:33","nodeType":"YulIdentifier","src":"10276:5:33"},"variableNames":[{"name":"result","nativeSrc":"10266:6:33","nodeType":"YulIdentifier","src":"10266:6:33"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7208,"isOffset":false,"isSlot":false,"src":"10266:6:33","valueSize":1},{"declaration":7198,"isOffset":false,"isSlot":false,"src":"10276:5:33","valueSize":1}],"flags":["memory-safe"],"id":7210,"nodeType":"InlineAssembly","src":"10227:64:33"},{"expression":{"id":7211,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7208,"src":"10308:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":7193,"id":7212,"nodeType":"Return","src":"10301:13:33"}]},"documentation":{"id":7185,"nodeType":"StructuredDocumentation","src":"9514:529:33","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7214,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"10057:6:33","nodeType":"FunctionDefinition","parameters":{"id":7189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7188,"mutability":"mutable","name":"set","nameLocation":"10083:3:33","nodeType":"VariableDeclaration","scope":7214,"src":"10064:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7187,"nodeType":"UserDefinedTypeName","pathNode":{"id":7186,"name":"Bytes32Set","nameLocations":["10064:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7084,"src":"10064:10:33"},"referencedDeclaration":7084,"src":"10064:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"10063:24:33"},"returnParameters":{"id":7193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7192,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7214,"src":"10111:16:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7190,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10111:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7191,"nodeType":"ArrayTypeName","src":"10111:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"10110:18:33"},"scope":8279,"src":"10048:273:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7249,"nodeType":"Block","src":"10974:204:33","statements":[{"assignments":[7232],"declarations":[{"constant":false,"id":7232,"mutability":"mutable","name":"store","nameLocation":"11001:5:33","nodeType":"VariableDeclaration","scope":7249,"src":"10984:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7230,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10984:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7231,"nodeType":"ArrayTypeName","src":"10984:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7239,"initialValue":{"arguments":[{"expression":{"id":7234,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"11017:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11021:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7083,"src":"11017:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7236,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7220,"src":"11029:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7237,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7222,"src":"11036:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7233,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[7001,7080],"referencedDeclaration":7080,"src":"11009:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256,uint256) view returns (bytes32[] memory)"}},"id":7238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11009:31:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10984:56:33"},{"assignments":[7244],"declarations":[{"constant":false,"id":7244,"mutability":"mutable","name":"result","nameLocation":"11067:6:33","nodeType":"VariableDeclaration","scope":7249,"src":"11050:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7242,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11050:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7243,"nodeType":"ArrayTypeName","src":"11050:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7245,"nodeType":"VariableDeclarationStatement","src":"11050:23:33"},{"AST":{"nativeSrc":"11109:39:33","nodeType":"YulBlock","src":"11109:39:33","statements":[{"nativeSrc":"11123:15:33","nodeType":"YulAssignment","src":"11123:15:33","value":{"name":"store","nativeSrc":"11133:5:33","nodeType":"YulIdentifier","src":"11133:5:33"},"variableNames":[{"name":"result","nativeSrc":"11123:6:33","nodeType":"YulIdentifier","src":"11123:6:33"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7244,"isOffset":false,"isSlot":false,"src":"11123:6:33","valueSize":1},{"declaration":7232,"isOffset":false,"isSlot":false,"src":"11133:5:33","valueSize":1}],"flags":["memory-safe"],"id":7246,"nodeType":"InlineAssembly","src":"11084:64:33"},{"expression":{"id":7247,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7244,"src":"11165:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":7227,"id":7248,"nodeType":"Return","src":"11158:13:33"}]},"documentation":{"id":7215,"nodeType":"StructuredDocumentation","src":"10327:533:33","text":" @dev Return a slice of the set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7250,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"10874:6:33","nodeType":"FunctionDefinition","parameters":{"id":7223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7218,"mutability":"mutable","name":"set","nameLocation":"10900:3:33","nodeType":"VariableDeclaration","scope":7250,"src":"10881:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7217,"nodeType":"UserDefinedTypeName","pathNode":{"id":7216,"name":"Bytes32Set","nameLocations":["10881:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7084,"src":"10881:10:33"},"referencedDeclaration":7084,"src":"10881:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7084_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7220,"mutability":"mutable","name":"start","nameLocation":"10913:5:33","nodeType":"VariableDeclaration","scope":7250,"src":"10905:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7219,"name":"uint256","nodeType":"ElementaryTypeName","src":"10905:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7222,"mutability":"mutable","name":"end","nameLocation":"10928:3:33","nodeType":"VariableDeclaration","scope":7250,"src":"10920:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7221,"name":"uint256","nodeType":"ElementaryTypeName","src":"10920:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10880:52:33"},"returnParameters":{"id":7227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7250,"src":"10956:16:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7224,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10956:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7225,"nodeType":"ArrayTypeName","src":"10956:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"10955:18:33"},"scope":8279,"src":"10865:313:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.AddressSet","id":7254,"members":[{"constant":false,"id":7253,"mutability":"mutable","name":"_inner","nameLocation":"11235:6:33","nodeType":"VariableDeclaration","scope":7254,"src":"11231:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7252,"nodeType":"UserDefinedTypeName","pathNode":{"id":7251,"name":"Set","nameLocations":["11231:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"11231:3:33"},"referencedDeclaration":6768,"src":"11231:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"AddressSet","nameLocation":"11210:10:33","nodeType":"StructDefinition","scope":8279,"src":"11203:45:33","visibility":"public"},{"body":{"id":7280,"nodeType":"Block","src":"11494:74:33","statements":[{"expression":{"arguments":[{"expression":{"id":7266,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7258,"src":"11516:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7267,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11520:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7253,"src":"11516:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":7274,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7260,"src":"11552:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11544:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7272,"name":"uint160","nodeType":"ElementaryTypeName","src":"11544:7:33","typeDescriptions":{}}},"id":7275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11544:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11536:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7270,"name":"uint256","nodeType":"ElementaryTypeName","src":"11536:7:33","typeDescriptions":{}}},"id":7276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11536:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11528:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7268,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11528:7:33","typeDescriptions":{}}},"id":7277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11528:32:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7265,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6810,"src":"11511:4:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6768_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11511:50:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7264,"id":7279,"nodeType":"Return","src":"11504:57:33"}]},"documentation":{"id":7255,"nodeType":"StructuredDocumentation","src":"11254:159:33","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":7281,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"11427:3:33","nodeType":"FunctionDefinition","parameters":{"id":7261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7258,"mutability":"mutable","name":"set","nameLocation":"11450:3:33","nodeType":"VariableDeclaration","scope":7281,"src":"11431:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7257,"nodeType":"UserDefinedTypeName","pathNode":{"id":7256,"name":"AddressSet","nameLocations":["11431:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7254,"src":"11431:10:33"},"referencedDeclaration":7254,"src":"11431:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7260,"mutability":"mutable","name":"value","nameLocation":"11463:5:33","nodeType":"VariableDeclaration","scope":7281,"src":"11455:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7259,"name":"address","nodeType":"ElementaryTypeName","src":"11455:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11430:39:33"},"returnParameters":{"id":7264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7281,"src":"11488:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7262,"name":"bool","nodeType":"ElementaryTypeName","src":"11488:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11487:6:33"},"scope":8279,"src":"11418:150:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7307,"nodeType":"Block","src":"11815:77:33","statements":[{"expression":{"arguments":[{"expression":{"id":7293,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7285,"src":"11840:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11844:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7253,"src":"11840:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":7301,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7287,"src":"11876:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11868:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7299,"name":"uint160","nodeType":"ElementaryTypeName","src":"11868:7:33","typeDescriptions":{}}},"id":7302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11868:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11860:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7297,"name":"uint256","nodeType":"ElementaryTypeName","src":"11860:7:33","typeDescriptions":{}}},"id":7303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11860:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11852:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7295,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11852:7:33","typeDescriptions":{}}},"id":7304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11852:32:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7292,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6894,"src":"11832:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6768_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11832:53:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7291,"id":7306,"nodeType":"Return","src":"11825:60:33"}]},"documentation":{"id":7282,"nodeType":"StructuredDocumentation","src":"11574:157:33","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":7308,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"11745:6:33","nodeType":"FunctionDefinition","parameters":{"id":7288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7285,"mutability":"mutable","name":"set","nameLocation":"11771:3:33","nodeType":"VariableDeclaration","scope":7308,"src":"11752:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7284,"nodeType":"UserDefinedTypeName","pathNode":{"id":7283,"name":"AddressSet","nameLocations":["11752:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7254,"src":"11752:10:33"},"referencedDeclaration":7254,"src":"11752:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7287,"mutability":"mutable","name":"value","nameLocation":"11784:5:33","nodeType":"VariableDeclaration","scope":7308,"src":"11776:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7286,"name":"address","nodeType":"ElementaryTypeName","src":"11776:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11751:39:33"},"returnParameters":{"id":7291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7308,"src":"11809:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7289,"name":"bool","nodeType":"ElementaryTypeName","src":"11809:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11808:6:33"},"scope":8279,"src":"11736:156:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7320,"nodeType":"Block","src":"12254:35:33","statements":[{"expression":{"arguments":[{"expression":{"id":7316,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7312,"src":"12271:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12275:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7253,"src":"12271:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7315,"name":"_clear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"12264:6:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6768_storage_ptr_$returns$__$","typeString":"function (struct EnumerableSet.Set storage pointer)"}},"id":7318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12264:18:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7319,"nodeType":"ExpressionStatement","src":"12264:18:33"}]},"documentation":{"id":7309,"nodeType":"StructuredDocumentation","src":"11898:303:33","text":" @dev Removes all the values from a set. O(n).\n WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the\n function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block."},"id":7321,"implemented":true,"kind":"function","modifiers":[],"name":"clear","nameLocation":"12215:5:33","nodeType":"FunctionDefinition","parameters":{"id":7313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7312,"mutability":"mutable","name":"set","nameLocation":"12240:3:33","nodeType":"VariableDeclaration","scope":7321,"src":"12221:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7311,"nodeType":"UserDefinedTypeName","pathNode":{"id":7310,"name":"AddressSet","nameLocations":["12221:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7254,"src":"12221:10:33"},"referencedDeclaration":7254,"src":"12221:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"12220:24:33"},"returnParameters":{"id":7314,"nodeType":"ParameterList","parameters":[],"src":"12254:0:33"},"scope":8279,"src":"12206:83:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7347,"nodeType":"Block","src":"12456:79:33","statements":[{"expression":{"arguments":[{"expression":{"id":7333,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7325,"src":"12483:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12487:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7253,"src":"12483:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"arguments":[{"arguments":[{"id":7341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7327,"src":"12519:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12511:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7339,"name":"uint160","nodeType":"ElementaryTypeName","src":"12511:7:33","typeDescriptions":{}}},"id":7342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12511:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12503:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7337,"name":"uint256","nodeType":"ElementaryTypeName","src":"12503:7:33","typeDescriptions":{}}},"id":7343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12503:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12495:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7335,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12495:7:33","typeDescriptions":{}}},"id":7344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12495:32:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7332,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6956,"src":"12473:9:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":7345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12473:55:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7331,"id":7346,"nodeType":"Return","src":"12466:62:33"}]},"documentation":{"id":7322,"nodeType":"StructuredDocumentation","src":"12295:70:33","text":" @dev Returns true if the value is in the set. O(1)."},"id":7348,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"12379:8:33","nodeType":"FunctionDefinition","parameters":{"id":7328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7325,"mutability":"mutable","name":"set","nameLocation":"12407:3:33","nodeType":"VariableDeclaration","scope":7348,"src":"12388:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7324,"nodeType":"UserDefinedTypeName","pathNode":{"id":7323,"name":"AddressSet","nameLocations":["12388:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7254,"src":"12388:10:33"},"referencedDeclaration":7254,"src":"12388:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7327,"mutability":"mutable","name":"value","nameLocation":"12420:5:33","nodeType":"VariableDeclaration","scope":7348,"src":"12412:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7326,"name":"address","nodeType":"ElementaryTypeName","src":"12412:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12387:39:33"},"returnParameters":{"id":7331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7330,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7348,"src":"12450:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7329,"name":"bool","nodeType":"ElementaryTypeName","src":"12450:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12449:6:33"},"scope":8279,"src":"12370:165:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7362,"nodeType":"Block","src":"12688:43:33","statements":[{"expression":{"arguments":[{"expression":{"id":7358,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7352,"src":"12713:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12717:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7253,"src":"12713:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7357,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6970,"src":"12705:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":7360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12705:19:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7356,"id":7361,"nodeType":"Return","src":"12698:26:33"}]},"documentation":{"id":7349,"nodeType":"StructuredDocumentation","src":"12541:70:33","text":" @dev Returns the number of values in the set. O(1)."},"id":7363,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"12625:6:33","nodeType":"FunctionDefinition","parameters":{"id":7353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7352,"mutability":"mutable","name":"set","nameLocation":"12651:3:33","nodeType":"VariableDeclaration","scope":7363,"src":"12632:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7351,"nodeType":"UserDefinedTypeName","pathNode":{"id":7350,"name":"AddressSet","nameLocations":["12632:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7254,"src":"12632:10:33"},"referencedDeclaration":7254,"src":"12632:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"12631:24:33"},"returnParameters":{"id":7356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7355,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7363,"src":"12679:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7354,"name":"uint256","nodeType":"ElementaryTypeName","src":"12679:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12678:9:33"},"scope":8279,"src":"12616:115:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7389,"nodeType":"Block","src":"13156:73:33","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":7381,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7367,"src":"13201:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13205:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7253,"src":"13201:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7383,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7369,"src":"13213:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7380,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6987,"src":"13197:3:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":7384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13197:22:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13189:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7378,"name":"uint256","nodeType":"ElementaryTypeName","src":"13189:7:33","typeDescriptions":{}}},"id":7385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13189:31:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13181:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7376,"name":"uint160","nodeType":"ElementaryTypeName","src":"13181:7:33","typeDescriptions":{}}},"id":7386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13181:40:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13173:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7374,"name":"address","nodeType":"ElementaryTypeName","src":"13173:7:33","typeDescriptions":{}}},"id":7387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13173:49:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7373,"id":7388,"nodeType":"Return","src":"13166:56:33"}]},"documentation":{"id":7364,"nodeType":"StructuredDocumentation","src":"12737:331:33","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7390,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"13082:2:33","nodeType":"FunctionDefinition","parameters":{"id":7370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7367,"mutability":"mutable","name":"set","nameLocation":"13104:3:33","nodeType":"VariableDeclaration","scope":7390,"src":"13085:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7366,"nodeType":"UserDefinedTypeName","pathNode":{"id":7365,"name":"AddressSet","nameLocations":["13085:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7254,"src":"13085:10:33"},"referencedDeclaration":7254,"src":"13085:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7369,"mutability":"mutable","name":"index","nameLocation":"13117:5:33","nodeType":"VariableDeclaration","scope":7390,"src":"13109:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7368,"name":"uint256","nodeType":"ElementaryTypeName","src":"13109:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13084:39:33"},"returnParameters":{"id":7373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7372,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7390,"src":"13147:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7371,"name":"address","nodeType":"ElementaryTypeName","src":"13147:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13146:9:33"},"scope":8279,"src":"13073:156:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7419,"nodeType":"Block","src":"13850:192:33","statements":[{"assignments":[7404],"declarations":[{"constant":false,"id":7404,"mutability":"mutable","name":"store","nameLocation":"13877:5:33","nodeType":"VariableDeclaration","scope":7419,"src":"13860:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7402,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13860:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7403,"nodeType":"ArrayTypeName","src":"13860:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7409,"initialValue":{"arguments":[{"expression":{"id":7406,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7394,"src":"13893:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7407,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13897:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7253,"src":"13893:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7405,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[7001,7080],"referencedDeclaration":7001,"src":"13885:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"}},"id":7408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13885:19:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"13860:44:33"},{"assignments":[7414],"declarations":[{"constant":false,"id":7414,"mutability":"mutable","name":"result","nameLocation":"13931:6:33","nodeType":"VariableDeclaration","scope":7419,"src":"13914:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7412,"name":"address","nodeType":"ElementaryTypeName","src":"13914:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7413,"nodeType":"ArrayTypeName","src":"13914:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":7415,"nodeType":"VariableDeclarationStatement","src":"13914:23:33"},{"AST":{"nativeSrc":"13973:39:33","nodeType":"YulBlock","src":"13973:39:33","statements":[{"nativeSrc":"13987:15:33","nodeType":"YulAssignment","src":"13987:15:33","value":{"name":"store","nativeSrc":"13997:5:33","nodeType":"YulIdentifier","src":"13997:5:33"},"variableNames":[{"name":"result","nativeSrc":"13987:6:33","nodeType":"YulIdentifier","src":"13987:6:33"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7414,"isOffset":false,"isSlot":false,"src":"13987:6:33","valueSize":1},{"declaration":7404,"isOffset":false,"isSlot":false,"src":"13997:5:33","valueSize":1}],"flags":["memory-safe"],"id":7416,"nodeType":"InlineAssembly","src":"13948:64:33"},{"expression":{"id":7417,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7414,"src":"14029:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":7399,"id":7418,"nodeType":"Return","src":"14022:13:33"}]},"documentation":{"id":7391,"nodeType":"StructuredDocumentation","src":"13235:529:33","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7420,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"13778:6:33","nodeType":"FunctionDefinition","parameters":{"id":7395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7394,"mutability":"mutable","name":"set","nameLocation":"13804:3:33","nodeType":"VariableDeclaration","scope":7420,"src":"13785:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7393,"nodeType":"UserDefinedTypeName","pathNode":{"id":7392,"name":"AddressSet","nameLocations":["13785:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7254,"src":"13785:10:33"},"referencedDeclaration":7254,"src":"13785:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"13784:24:33"},"returnParameters":{"id":7399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7420,"src":"13832:16:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7396,"name":"address","nodeType":"ElementaryTypeName","src":"13832:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7397,"nodeType":"ArrayTypeName","src":"13832:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13831:18:33"},"scope":8279,"src":"13769:273:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7455,"nodeType":"Block","src":"14695:204:33","statements":[{"assignments":[7438],"declarations":[{"constant":false,"id":7438,"mutability":"mutable","name":"store","nameLocation":"14722:5:33","nodeType":"VariableDeclaration","scope":7455,"src":"14705:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7436,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14705:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7437,"nodeType":"ArrayTypeName","src":"14705:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7445,"initialValue":{"arguments":[{"expression":{"id":7440,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7424,"src":"14738:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14742:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7253,"src":"14738:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7442,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7426,"src":"14750:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7443,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7428,"src":"14757:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7439,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[7001,7080],"referencedDeclaration":7080,"src":"14730:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256,uint256) view returns (bytes32[] memory)"}},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14730:31:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"14705:56:33"},{"assignments":[7450],"declarations":[{"constant":false,"id":7450,"mutability":"mutable","name":"result","nameLocation":"14788:6:33","nodeType":"VariableDeclaration","scope":7455,"src":"14771:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7448,"name":"address","nodeType":"ElementaryTypeName","src":"14771:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7449,"nodeType":"ArrayTypeName","src":"14771:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":7451,"nodeType":"VariableDeclarationStatement","src":"14771:23:33"},{"AST":{"nativeSrc":"14830:39:33","nodeType":"YulBlock","src":"14830:39:33","statements":[{"nativeSrc":"14844:15:33","nodeType":"YulAssignment","src":"14844:15:33","value":{"name":"store","nativeSrc":"14854:5:33","nodeType":"YulIdentifier","src":"14854:5:33"},"variableNames":[{"name":"result","nativeSrc":"14844:6:33","nodeType":"YulIdentifier","src":"14844:6:33"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7450,"isOffset":false,"isSlot":false,"src":"14844:6:33","valueSize":1},{"declaration":7438,"isOffset":false,"isSlot":false,"src":"14854:5:33","valueSize":1}],"flags":["memory-safe"],"id":7452,"nodeType":"InlineAssembly","src":"14805:64:33"},{"expression":{"id":7453,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7450,"src":"14886:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":7433,"id":7454,"nodeType":"Return","src":"14879:13:33"}]},"documentation":{"id":7421,"nodeType":"StructuredDocumentation","src":"14048:533:33","text":" @dev Return a slice of the set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7456,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"14595:6:33","nodeType":"FunctionDefinition","parameters":{"id":7429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7424,"mutability":"mutable","name":"set","nameLocation":"14621:3:33","nodeType":"VariableDeclaration","scope":7456,"src":"14602:22:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7423,"nodeType":"UserDefinedTypeName","pathNode":{"id":7422,"name":"AddressSet","nameLocations":["14602:10:33"],"nodeType":"IdentifierPath","referencedDeclaration":7254,"src":"14602:10:33"},"referencedDeclaration":7254,"src":"14602:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7254_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7426,"mutability":"mutable","name":"start","nameLocation":"14634:5:33","nodeType":"VariableDeclaration","scope":7456,"src":"14626:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7425,"name":"uint256","nodeType":"ElementaryTypeName","src":"14626:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7428,"mutability":"mutable","name":"end","nameLocation":"14649:3:33","nodeType":"VariableDeclaration","scope":7456,"src":"14641:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7427,"name":"uint256","nodeType":"ElementaryTypeName","src":"14641:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14601:52:33"},"returnParameters":{"id":7433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7432,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7456,"src":"14677:16:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7430,"name":"address","nodeType":"ElementaryTypeName","src":"14677:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7431,"nodeType":"ArrayTypeName","src":"14677:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"14676:18:33"},"scope":8279,"src":"14586:313:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.UintSet","id":7460,"members":[{"constant":false,"id":7459,"mutability":"mutable","name":"_inner","nameLocation":"14950:6:33","nodeType":"VariableDeclaration","scope":7460,"src":"14946:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"},"typeName":{"id":7458,"nodeType":"UserDefinedTypeName","pathNode":{"id":7457,"name":"Set","nameLocations":["14946:3:33"],"nodeType":"IdentifierPath","referencedDeclaration":6768,"src":"14946:3:33"},"referencedDeclaration":6768,"src":"14946:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage_ptr","typeString":"struct EnumerableSet.Set"}},"visibility":"internal"}],"name":"UintSet","nameLocation":"14928:7:33","nodeType":"StructDefinition","scope":8279,"src":"14921:42:33","visibility":"public"},{"body":{"id":7480,"nodeType":"Block","src":"15206:56:33","statements":[{"expression":{"arguments":[{"expression":{"id":7472,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7464,"src":"15228:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7473,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15232:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7459,"src":"15228:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":7476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7466,"src":"15248:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15240:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7474,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15240:7:33","typeDescriptions":{}}},"id":7477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15240:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7471,"name":"_add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6810,"src":"15223:4:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6768_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15223:32:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7470,"id":7479,"nodeType":"Return","src":"15216:39:33"}]},"documentation":{"id":7461,"nodeType":"StructuredDocumentation","src":"14969:159:33","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":7481,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"15142:3:33","nodeType":"FunctionDefinition","parameters":{"id":7467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7464,"mutability":"mutable","name":"set","nameLocation":"15162:3:33","nodeType":"VariableDeclaration","scope":7481,"src":"15146:19:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7463,"nodeType":"UserDefinedTypeName","pathNode":{"id":7462,"name":"UintSet","nameLocations":["15146:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":7460,"src":"15146:7:33"},"referencedDeclaration":7460,"src":"15146:7:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":7466,"mutability":"mutable","name":"value","nameLocation":"15175:5:33","nodeType":"VariableDeclaration","scope":7481,"src":"15167:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7465,"name":"uint256","nodeType":"ElementaryTypeName","src":"15167:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15145:36:33"},"returnParameters":{"id":7470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7481,"src":"15200:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7468,"name":"bool","nodeType":"ElementaryTypeName","src":"15200:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15199:6:33"},"scope":8279,"src":"15133:129:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7501,"nodeType":"Block","src":"15506:59:33","statements":[{"expression":{"arguments":[{"expression":{"id":7493,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"15531:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15535:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7459,"src":"15531:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":7497,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7487,"src":"15551:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15543:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7495,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15543:7:33","typeDescriptions":{}}},"id":7498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15543:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7492,"name":"_remove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6894,"src":"15523:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6768_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"}},"id":7499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15523:35:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7491,"id":7500,"nodeType":"Return","src":"15516:42:33"}]},"documentation":{"id":7482,"nodeType":"StructuredDocumentation","src":"15268:157:33","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":7502,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"15439:6:33","nodeType":"FunctionDefinition","parameters":{"id":7488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7485,"mutability":"mutable","name":"set","nameLocation":"15462:3:33","nodeType":"VariableDeclaration","scope":7502,"src":"15446:19:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7484,"nodeType":"UserDefinedTypeName","pathNode":{"id":7483,"name":"UintSet","nameLocations":["15446:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":7460,"src":"15446:7:33"},"referencedDeclaration":7460,"src":"15446:7:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":7487,"mutability":"mutable","name":"value","nameLocation":"15475:5:33","nodeType":"VariableDeclaration","scope":7502,"src":"15467:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7486,"name":"uint256","nodeType":"ElementaryTypeName","src":"15467:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15445:36:33"},"returnParameters":{"id":7491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7490,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7502,"src":"15500:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7489,"name":"bool","nodeType":"ElementaryTypeName","src":"15500:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15499:6:33"},"scope":8279,"src":"15430:135:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7514,"nodeType":"Block","src":"15924:35:33","statements":[{"expression":{"arguments":[{"expression":{"id":7510,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"15941:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7511,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15945:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7459,"src":"15941:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7509,"name":"_clear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"15934:6:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Set_$6768_storage_ptr_$returns$__$","typeString":"function (struct EnumerableSet.Set storage pointer)"}},"id":7512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15934:18:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7513,"nodeType":"ExpressionStatement","src":"15934:18:33"}]},"documentation":{"id":7503,"nodeType":"StructuredDocumentation","src":"15571:303:33","text":" @dev Removes all the values from a set. O(n).\n WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the\n function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block."},"id":7515,"implemented":true,"kind":"function","modifiers":[],"name":"clear","nameLocation":"15888:5:33","nodeType":"FunctionDefinition","parameters":{"id":7507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7506,"mutability":"mutable","name":"set","nameLocation":"15910:3:33","nodeType":"VariableDeclaration","scope":7515,"src":"15894:19:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7505,"nodeType":"UserDefinedTypeName","pathNode":{"id":7504,"name":"UintSet","nameLocations":["15894:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":7460,"src":"15894:7:33"},"referencedDeclaration":7460,"src":"15894:7:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"}],"src":"15893:21:33"},"returnParameters":{"id":7508,"nodeType":"ParameterList","parameters":[],"src":"15924:0:33"},"scope":8279,"src":"15879:80:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7535,"nodeType":"Block","src":"16123:61:33","statements":[{"expression":{"arguments":[{"expression":{"id":7527,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7519,"src":"16150:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7528,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16154:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7459,"src":"16150:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"arguments":[{"id":7531,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7521,"src":"16170:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16162:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16162:7:33","typeDescriptions":{}}},"id":7532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16162:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7526,"name":"_contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6956,"src":"16140:9:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"}},"id":7533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16140:37:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7525,"id":7534,"nodeType":"Return","src":"16133:44:33"}]},"documentation":{"id":7516,"nodeType":"StructuredDocumentation","src":"15965:70:33","text":" @dev Returns true if the value is in the set. O(1)."},"id":7536,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"16049:8:33","nodeType":"FunctionDefinition","parameters":{"id":7522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7519,"mutability":"mutable","name":"set","nameLocation":"16074:3:33","nodeType":"VariableDeclaration","scope":7536,"src":"16058:19:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7518,"nodeType":"UserDefinedTypeName","pathNode":{"id":7517,"name":"UintSet","nameLocations":["16058:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":7460,"src":"16058:7:33"},"referencedDeclaration":7460,"src":"16058:7:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":7521,"mutability":"mutable","name":"value","nameLocation":"16087:5:33","nodeType":"VariableDeclaration","scope":7536,"src":"16079:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7520,"name":"uint256","nodeType":"ElementaryTypeName","src":"16079:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16057:36:33"},"returnParameters":{"id":7525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7524,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7536,"src":"16117:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7523,"name":"bool","nodeType":"ElementaryTypeName","src":"16117:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16116:6:33"},"scope":8279,"src":"16040:144:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7550,"nodeType":"Block","src":"16334:43:33","statements":[{"expression":{"arguments":[{"expression":{"id":7546,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7540,"src":"16359:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16363:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7459,"src":"16359:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7545,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6970,"src":"16351:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (uint256)"}},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16351:19:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7544,"id":7549,"nodeType":"Return","src":"16344:26:33"}]},"documentation":{"id":7537,"nodeType":"StructuredDocumentation","src":"16190:70:33","text":" @dev Returns the number of values in the set. O(1)."},"id":7551,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"16274:6:33","nodeType":"FunctionDefinition","parameters":{"id":7541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7540,"mutability":"mutable","name":"set","nameLocation":"16297:3:33","nodeType":"VariableDeclaration","scope":7551,"src":"16281:19:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7539,"nodeType":"UserDefinedTypeName","pathNode":{"id":7538,"name":"UintSet","nameLocations":["16281:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":7460,"src":"16281:7:33"},"referencedDeclaration":7460,"src":"16281:7:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"}],"src":"16280:21:33"},"returnParameters":{"id":7544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7551,"src":"16325:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7542,"name":"uint256","nodeType":"ElementaryTypeName","src":"16325:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16324:9:33"},"scope":8279,"src":"16265:112:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7571,"nodeType":"Block","src":"16799:55:33","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":7565,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7555,"src":"16828:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7566,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16832:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7459,"src":"16828:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7567,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7557,"src":"16840:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7564,"name":"_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6987,"src":"16824:3:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"}},"id":7568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16824:22:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16816:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7562,"name":"uint256","nodeType":"ElementaryTypeName","src":"16816:7:33","typeDescriptions":{}}},"id":7569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16816:31:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7561,"id":7570,"nodeType":"Return","src":"16809:38:33"}]},"documentation":{"id":7552,"nodeType":"StructuredDocumentation","src":"16383:331:33","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7572,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"16728:2:33","nodeType":"FunctionDefinition","parameters":{"id":7558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7555,"mutability":"mutable","name":"set","nameLocation":"16747:3:33","nodeType":"VariableDeclaration","scope":7572,"src":"16731:19:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7554,"nodeType":"UserDefinedTypeName","pathNode":{"id":7553,"name":"UintSet","nameLocations":["16731:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":7460,"src":"16731:7:33"},"referencedDeclaration":7460,"src":"16731:7:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":7557,"mutability":"mutable","name":"index","nameLocation":"16760:5:33","nodeType":"VariableDeclaration","scope":7572,"src":"16752:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7556,"name":"uint256","nodeType":"ElementaryTypeName","src":"16752:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16730:36:33"},"returnParameters":{"id":7561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7560,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7572,"src":"16790:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7559,"name":"uint256","nodeType":"ElementaryTypeName","src":"16790:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16789:9:33"},"scope":8279,"src":"16719:135:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7601,"nodeType":"Block","src":"17472:192:33","statements":[{"assignments":[7586],"declarations":[{"constant":false,"id":7586,"mutability":"mutable","name":"store","nameLocation":"17499:5:33","nodeType":"VariableDeclaration","scope":7601,"src":"17482:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7584,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17482:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7585,"nodeType":"ArrayTypeName","src":"17482:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7591,"initialValue":{"arguments":[{"expression":{"id":7588,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7576,"src":"17515:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17519:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7459,"src":"17515:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}],"id":7587,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[7001,7080],"referencedDeclaration":7001,"src":"17507:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"}},"id":7590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17507:19:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17482:44:33"},{"assignments":[7596],"declarations":[{"constant":false,"id":7596,"mutability":"mutable","name":"result","nameLocation":"17553:6:33","nodeType":"VariableDeclaration","scope":7601,"src":"17536:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7594,"name":"uint256","nodeType":"ElementaryTypeName","src":"17536:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7595,"nodeType":"ArrayTypeName","src":"17536:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":7597,"nodeType":"VariableDeclarationStatement","src":"17536:23:33"},{"AST":{"nativeSrc":"17595:39:33","nodeType":"YulBlock","src":"17595:39:33","statements":[{"nativeSrc":"17609:15:33","nodeType":"YulAssignment","src":"17609:15:33","value":{"name":"store","nativeSrc":"17619:5:33","nodeType":"YulIdentifier","src":"17619:5:33"},"variableNames":[{"name":"result","nativeSrc":"17609:6:33","nodeType":"YulIdentifier","src":"17609:6:33"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7596,"isOffset":false,"isSlot":false,"src":"17609:6:33","valueSize":1},{"declaration":7586,"isOffset":false,"isSlot":false,"src":"17619:5:33","valueSize":1}],"flags":["memory-safe"],"id":7598,"nodeType":"InlineAssembly","src":"17570:64:33"},{"expression":{"id":7599,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7596,"src":"17651:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":7581,"id":7600,"nodeType":"Return","src":"17644:13:33"}]},"documentation":{"id":7573,"nodeType":"StructuredDocumentation","src":"16860:529:33","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7602,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"17403:6:33","nodeType":"FunctionDefinition","parameters":{"id":7577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7576,"mutability":"mutable","name":"set","nameLocation":"17426:3:33","nodeType":"VariableDeclaration","scope":7602,"src":"17410:19:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7575,"nodeType":"UserDefinedTypeName","pathNode":{"id":7574,"name":"UintSet","nameLocations":["17410:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":7460,"src":"17410:7:33"},"referencedDeclaration":7460,"src":"17410:7:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"}],"src":"17409:21:33"},"returnParameters":{"id":7581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7580,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7602,"src":"17454:16:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7578,"name":"uint256","nodeType":"ElementaryTypeName","src":"17454:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7579,"nodeType":"ArrayTypeName","src":"17454:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"17453:18:33"},"scope":8279,"src":"17394:270:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7637,"nodeType":"Block","src":"18314:204:33","statements":[{"assignments":[7620],"declarations":[{"constant":false,"id":7620,"mutability":"mutable","name":"store","nameLocation":"18341:5:33","nodeType":"VariableDeclaration","scope":7637,"src":"18324:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7618,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18324:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7619,"nodeType":"ArrayTypeName","src":"18324:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":7627,"initialValue":{"arguments":[{"expression":{"id":7622,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"18357:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet storage pointer"}},"id":7623,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18361:6:33","memberName":"_inner","nodeType":"MemberAccess","referencedDeclaration":7459,"src":"18357:10:33","typeDescriptions":{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"}},{"id":7624,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7608,"src":"18369:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7625,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"18376:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Set_$6768_storage","typeString":"struct EnumerableSet.Set storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7621,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[7001,7080],"referencedDeclaration":7080,"src":"18349:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Set_$6768_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (struct EnumerableSet.Set storage pointer,uint256,uint256) view returns (bytes32[] memory)"}},"id":7626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18349:31:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"18324:56:33"},{"assignments":[7632],"declarations":[{"constant":false,"id":7632,"mutability":"mutable","name":"result","nameLocation":"18407:6:33","nodeType":"VariableDeclaration","scope":7637,"src":"18390:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7630,"name":"uint256","nodeType":"ElementaryTypeName","src":"18390:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7631,"nodeType":"ArrayTypeName","src":"18390:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":7633,"nodeType":"VariableDeclarationStatement","src":"18390:23:33"},{"AST":{"nativeSrc":"18449:39:33","nodeType":"YulBlock","src":"18449:39:33","statements":[{"nativeSrc":"18463:15:33","nodeType":"YulAssignment","src":"18463:15:33","value":{"name":"store","nativeSrc":"18473:5:33","nodeType":"YulIdentifier","src":"18473:5:33"},"variableNames":[{"name":"result","nativeSrc":"18463:6:33","nodeType":"YulIdentifier","src":"18463:6:33"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7632,"isOffset":false,"isSlot":false,"src":"18463:6:33","valueSize":1},{"declaration":7620,"isOffset":false,"isSlot":false,"src":"18473:5:33","valueSize":1}],"flags":["memory-safe"],"id":7634,"nodeType":"InlineAssembly","src":"18424:64:33"},{"expression":{"id":7635,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7632,"src":"18505:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":7615,"id":7636,"nodeType":"Return","src":"18498:13:33"}]},"documentation":{"id":7603,"nodeType":"StructuredDocumentation","src":"17670:533:33","text":" @dev Return a slice of the set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7638,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"18217:6:33","nodeType":"FunctionDefinition","parameters":{"id":7611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7606,"mutability":"mutable","name":"set","nameLocation":"18240:3:33","nodeType":"VariableDeclaration","scope":7638,"src":"18224:19:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"},"typeName":{"id":7605,"nodeType":"UserDefinedTypeName","pathNode":{"id":7604,"name":"UintSet","nameLocations":["18224:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":7460,"src":"18224:7:33"},"referencedDeclaration":7460,"src":"18224:7:33","typeDescriptions":{"typeIdentifier":"t_struct$_UintSet_$7460_storage_ptr","typeString":"struct EnumerableSet.UintSet"}},"visibility":"internal"},{"constant":false,"id":7608,"mutability":"mutable","name":"start","nameLocation":"18253:5:33","nodeType":"VariableDeclaration","scope":7638,"src":"18245:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7607,"name":"uint256","nodeType":"ElementaryTypeName","src":"18245:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7610,"mutability":"mutable","name":"end","nameLocation":"18268:3:33","nodeType":"VariableDeclaration","scope":7638,"src":"18260:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7609,"name":"uint256","nodeType":"ElementaryTypeName","src":"18260:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18223:49:33"},"returnParameters":{"id":7615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7638,"src":"18296:16:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7612,"name":"uint256","nodeType":"ElementaryTypeName","src":"18296:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7613,"nodeType":"ArrayTypeName","src":"18296:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"18295:18:33"},"scope":8279,"src":"18208:310:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.StringSet","id":7646,"members":[{"constant":false,"id":7641,"mutability":"mutable","name":"_values","nameLocation":"18593:7:33","nodeType":"VariableDeclaration","scope":7646,"src":"18584:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":7639,"name":"string","nodeType":"ElementaryTypeName","src":"18584:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":7640,"nodeType":"ArrayTypeName","src":"18584:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":7645,"mutability":"mutable","name":"_positions","nameLocation":"18784:10:33","nodeType":"VariableDeclaration","scope":7646,"src":"18751:43:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string => uint256)"},"typeName":{"id":7644,"keyName":"value","keyNameLocation":"18766:5:33","keyType":{"id":7642,"name":"string","nodeType":"ElementaryTypeName","src":"18759:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"18751:32:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7643,"name":"uint256","nodeType":"ElementaryTypeName","src":"18775:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"StringSet","nameLocation":"18531:9:33","nodeType":"StructDefinition","scope":8279,"src":"18524:277:33","visibility":"public"},{"body":{"id":7687,"nodeType":"Block","src":"19052:336:33","statements":[{"condition":{"id":7661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19066:21:33","subExpression":{"arguments":[{"id":7658,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7650,"src":"19076:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},{"id":7659,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"19081:5:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7657,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[7151,7348,7536,7834,8154],"referencedDeclaration":7834,"src":"19067:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_StringSet_$7646_storage_ptr_$_t_string_memory_ptr_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.StringSet storage pointer,string memory) view returns (bool)"}},"id":7660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19067:20:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7685,"nodeType":"Block","src":"19345:37:33","statements":[{"expression":{"hexValue":"66616c7365","id":7683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19366:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7656,"id":7684,"nodeType":"Return","src":"19359:12:33"}]},"id":7686,"nodeType":"IfStatement","src":"19062:320:33","trueBody":{"id":7682,"nodeType":"Block","src":"19089:250:33","statements":[{"expression":{"arguments":[{"id":7667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"19120:5:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"expression":{"id":7662,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7650,"src":"19103:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19107:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"19103:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":7666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19115:4:33","memberName":"push","nodeType":"MemberAccess","src":"19103:16:33","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_string_storage_$dyn_storage_ptr_$_t_string_storage_$returns$__$attached_to$_t_array$_t_string_storage_$dyn_storage_ptr_$","typeString":"function (string storage ref[] storage pointer,string storage ref)"}},"id":7668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19103:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7669,"nodeType":"ExpressionStatement","src":"19103:23:33"},{"expression":{"id":7678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7670,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7650,"src":"19261:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7673,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19265:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7645,"src":"19261:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string memory => uint256)"}},"id":7674,"indexExpression":{"id":7672,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7652,"src":"19276:5:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19261:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":7675,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7650,"src":"19285:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19289:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"19285:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":7677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19297:6:33","memberName":"length","nodeType":"MemberAccess","src":"19285:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19261:42:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7679,"nodeType":"ExpressionStatement","src":"19261:42:33"},{"expression":{"hexValue":"74727565","id":7680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19324:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7656,"id":7681,"nodeType":"Return","src":"19317:11:33"}]}}]},"documentation":{"id":7647,"nodeType":"StructuredDocumentation","src":"18807:159:33","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":7688,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"18980:3:33","nodeType":"FunctionDefinition","parameters":{"id":7653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7650,"mutability":"mutable","name":"set","nameLocation":"19002:3:33","nodeType":"VariableDeclaration","scope":7688,"src":"18984:21:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"},"typeName":{"id":7649,"nodeType":"UserDefinedTypeName","pathNode":{"id":7648,"name":"StringSet","nameLocations":["18984:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":7646,"src":"18984:9:33"},"referencedDeclaration":7646,"src":"18984:9:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"}},"visibility":"internal"},{"constant":false,"id":7652,"mutability":"mutable","name":"value","nameLocation":"19021:5:33","nodeType":"VariableDeclaration","scope":7688,"src":"19007:19:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7651,"name":"string","nodeType":"ElementaryTypeName","src":"19007:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"18983:44:33"},"returnParameters":{"id":7656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7655,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7688,"src":"19046:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7654,"name":"bool","nodeType":"ElementaryTypeName","src":"19046:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19045:6:33"},"scope":8279,"src":"18971:417:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7771,"nodeType":"Block","src":"19640:1302:33","statements":[{"assignments":[7700],"declarations":[{"constant":false,"id":7700,"mutability":"mutable","name":"position","nameLocation":"19752:8:33","nodeType":"VariableDeclaration","scope":7771,"src":"19744:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7699,"name":"uint256","nodeType":"ElementaryTypeName","src":"19744:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7705,"initialValue":{"baseExpression":{"expression":{"id":7701,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7692,"src":"19763:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19767:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7645,"src":"19763:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string memory => uint256)"}},"id":7704,"indexExpression":{"id":7703,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7694,"src":"19778:5:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19763:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19744:40:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7706,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7700,"src":"19799:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19811:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19799:13:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7769,"nodeType":"Block","src":"20899:37:33","statements":[{"expression":{"hexValue":"66616c7365","id":7767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20920:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7698,"id":7768,"nodeType":"Return","src":"20913:12:33"}]},"id":7770,"nodeType":"IfStatement","src":"19795:1141:33","trueBody":{"id":7766,"nodeType":"Block","src":"19814:1079:33","statements":[{"assignments":[7710],"declarations":[{"constant":false,"id":7710,"mutability":"mutable","name":"valueIndex","nameLocation":"20174:10:33","nodeType":"VariableDeclaration","scope":7766,"src":"20166:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7709,"name":"uint256","nodeType":"ElementaryTypeName","src":"20166:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7714,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7711,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7700,"src":"20187:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20198:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20187:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20166:33:33"},{"assignments":[7716],"declarations":[{"constant":false,"id":7716,"mutability":"mutable","name":"lastIndex","nameLocation":"20221:9:33","nodeType":"VariableDeclaration","scope":7766,"src":"20213:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7715,"name":"uint256","nodeType":"ElementaryTypeName","src":"20213:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7722,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7717,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7692,"src":"20233:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20237:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"20233:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":7719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20245:6:33","memberName":"length","nodeType":"MemberAccess","src":"20233:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20254:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20233:22:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20213:42:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7723,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7710,"src":"20274:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7724,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7716,"src":"20288:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20274:23:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7750,"nodeType":"IfStatement","src":"20270:384:33","trueBody":{"id":7749,"nodeType":"Block","src":"20299:355:33","statements":[{"assignments":[7727],"declarations":[{"constant":false,"id":7727,"mutability":"mutable","name":"lastValue","nameLocation":"20331:9:33","nodeType":"VariableDeclaration","scope":7749,"src":"20317:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7726,"name":"string","nodeType":"ElementaryTypeName","src":"20317:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":7732,"initialValue":{"baseExpression":{"expression":{"id":7728,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7692,"src":"20343:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7729,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20347:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"20343:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":7731,"indexExpression":{"id":7730,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7716,"src":"20355:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20343:22:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"20317:48:33"},{"expression":{"id":7739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7733,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7692,"src":"20464:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7736,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20468:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"20464:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":7737,"indexExpression":{"id":7735,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7710,"src":"20476:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20464:23:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7738,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7727,"src":"20490:9:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"20464:35:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7740,"nodeType":"ExpressionStatement","src":"20464:35:33"},{"expression":{"id":7747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7741,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7692,"src":"20603:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7744,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20607:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7645,"src":"20603:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string memory => uint256)"}},"id":7745,"indexExpression":{"id":7743,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7727,"src":"20618:9:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20603:25:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7746,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7700,"src":"20631:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20603:36:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7748,"nodeType":"ExpressionStatement","src":"20603:36:33"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7751,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7692,"src":"20732:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20736:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"20732:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":7755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20744:3:33","memberName":"pop","nodeType":"MemberAccess","src":"20732:15:33","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_string_storage_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_string_storage_$dyn_storage_ptr_$","typeString":"function (string storage ref[] storage pointer)"}},"id":7756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20732:17:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7757,"nodeType":"ExpressionStatement","src":"20732:17:33"},{"expression":{"id":7762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"20828:28:33","subExpression":{"baseExpression":{"expression":{"id":7758,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7692,"src":"20835:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20839:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7645,"src":"20835:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string memory => uint256)"}},"id":7761,"indexExpression":{"id":7760,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7694,"src":"20850:5:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20835:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7763,"nodeType":"ExpressionStatement","src":"20828:28:33"},{"expression":{"hexValue":"74727565","id":7764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20878:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7698,"id":7765,"nodeType":"Return","src":"20871:11:33"}]}}]},"documentation":{"id":7689,"nodeType":"StructuredDocumentation","src":"19394:157:33","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":7772,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"19565:6:33","nodeType":"FunctionDefinition","parameters":{"id":7695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7692,"mutability":"mutable","name":"set","nameLocation":"19590:3:33","nodeType":"VariableDeclaration","scope":7772,"src":"19572:21:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"},"typeName":{"id":7691,"nodeType":"UserDefinedTypeName","pathNode":{"id":7690,"name":"StringSet","nameLocations":["19572:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":7646,"src":"19572:9:33"},"referencedDeclaration":7646,"src":"19572:9:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"}},"visibility":"internal"},{"constant":false,"id":7694,"mutability":"mutable","name":"value","nameLocation":"19609:5:33","nodeType":"VariableDeclaration","scope":7772,"src":"19595:19:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7693,"name":"string","nodeType":"ElementaryTypeName","src":"19595:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"19571:44:33"},"returnParameters":{"id":7698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7697,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7772,"src":"19634:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7696,"name":"bool","nodeType":"ElementaryTypeName","src":"19634:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19633:6:33"},"scope":8279,"src":"19556:1386:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7814,"nodeType":"Block","src":"21303:195:33","statements":[{"assignments":[7780],"declarations":[{"constant":false,"id":7780,"mutability":"mutable","name":"len","nameLocation":"21321:3:33","nodeType":"VariableDeclaration","scope":7814,"src":"21313:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7779,"name":"uint256","nodeType":"ElementaryTypeName","src":"21313:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7784,"initialValue":{"arguments":[{"id":7782,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"21334:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}],"id":7781,"name":"length","nodeType":"Identifier","overloadedDeclarations":[7166,7363,7551,7848,8168],"referencedDeclaration":7848,"src":"21327:6:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_StringSet_$7646_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.StringSet storage pointer) view returns (uint256)"}},"id":7783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21327:11:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21313:25:33"},{"body":{"id":7804,"nodeType":"Block","src":"21382:62:33","statements":[{"expression":{"id":7802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"21396:37:33","subExpression":{"baseExpression":{"expression":{"id":7795,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"21403:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21407:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7645,"src":"21403:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string memory => uint256)"}},"id":7801,"indexExpression":{"baseExpression":{"expression":{"id":7797,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"21418:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21422:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"21418:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":7800,"indexExpression":{"id":7799,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7786,"src":"21430:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21418:14:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21403:30:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7803,"nodeType":"ExpressionStatement","src":"21396:37:33"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7789,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7786,"src":"21368:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7790,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7780,"src":"21372:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21368:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7805,"initializationExpression":{"assignments":[7786],"declarations":[{"constant":false,"id":7786,"mutability":"mutable","name":"i","nameLocation":"21361:1:33","nodeType":"VariableDeclaration","scope":7805,"src":"21353:9:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7785,"name":"uint256","nodeType":"ElementaryTypeName","src":"21353:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7788,"initialValue":{"hexValue":"30","id":7787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21365:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21353:13:33"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"21377:3:33","subExpression":{"id":7792,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7786,"src":"21379:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7794,"nodeType":"ExpressionStatement","src":"21377:3:33"},"nodeType":"ForStatement","src":"21348:96:33"},{"expression":{"arguments":[{"expression":{"id":7809,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7776,"src":"21476:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21480:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"21476:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},{"hexValue":"30","id":7811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21489:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":7806,"name":"Arrays","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"21453:6:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Arrays_$2725_$","typeString":"type(library Arrays)"}},"id":7808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21460:15:33","memberName":"unsafeSetLength","nodeType":"MemberAccess","referencedDeclaration":2724,"src":"21453:22:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_string_storage_$dyn_storage_ptr_$_t_uint256_$returns$__$","typeString":"function (string storage ref[] storage pointer,uint256)"}},"id":7812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21453:38:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7813,"nodeType":"ExpressionStatement","src":"21453:38:33"}]},"documentation":{"id":7773,"nodeType":"StructuredDocumentation","src":"20948:303:33","text":" @dev Removes all the values from a set. O(n).\n WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the\n function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block."},"id":7815,"implemented":true,"kind":"function","modifiers":[],"name":"clear","nameLocation":"21265:5:33","nodeType":"FunctionDefinition","parameters":{"id":7777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7776,"mutability":"mutable","name":"set","nameLocation":"21289:3:33","nodeType":"VariableDeclaration","scope":7815,"src":"21271:21:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"},"typeName":{"id":7775,"nodeType":"UserDefinedTypeName","pathNode":{"id":7774,"name":"StringSet","nameLocations":["21271:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":7646,"src":"21271:9:33"},"referencedDeclaration":7646,"src":"21271:9:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"}},"visibility":"internal"}],"src":"21270:23:33"},"returnParameters":{"id":7778,"nodeType":"ParameterList","parameters":[],"src":"21303:0:33"},"scope":8279,"src":"21256:242:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7833,"nodeType":"Block","src":"21670:50:33","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7826,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7819,"src":"21687:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21691:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7645,"src":"21687:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_uint256_$","typeString":"mapping(string memory => uint256)"}},"id":7829,"indexExpression":{"id":7828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7821,"src":"21702:5:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21687:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21712:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21687:26:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7825,"id":7832,"nodeType":"Return","src":"21680:33:33"}]},"documentation":{"id":7816,"nodeType":"StructuredDocumentation","src":"21504:70:33","text":" @dev Returns true if the value is in the set. O(1)."},"id":7834,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"21588:8:33","nodeType":"FunctionDefinition","parameters":{"id":7822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7819,"mutability":"mutable","name":"set","nameLocation":"21615:3:33","nodeType":"VariableDeclaration","scope":7834,"src":"21597:21:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"},"typeName":{"id":7818,"nodeType":"UserDefinedTypeName","pathNode":{"id":7817,"name":"StringSet","nameLocations":["21597:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":7646,"src":"21597:9:33"},"referencedDeclaration":7646,"src":"21597:9:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"}},"visibility":"internal"},{"constant":false,"id":7821,"mutability":"mutable","name":"value","nameLocation":"21634:5:33","nodeType":"VariableDeclaration","scope":7834,"src":"21620:19:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7820,"name":"string","nodeType":"ElementaryTypeName","src":"21620:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"21596:44:33"},"returnParameters":{"id":7825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7834,"src":"21664:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7823,"name":"bool","nodeType":"ElementaryTypeName","src":"21664:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21663:6:33"},"scope":8279,"src":"21579:141:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7847,"nodeType":"Block","src":"21872:42:33","statements":[{"expression":{"expression":{"expression":{"id":7843,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7838,"src":"21889:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21893:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"21889:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":7845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21901:6:33","memberName":"length","nodeType":"MemberAccess","src":"21889:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7842,"id":7846,"nodeType":"Return","src":"21882:25:33"}]},"documentation":{"id":7835,"nodeType":"StructuredDocumentation","src":"21726:70:33","text":" @dev Returns the number of values on the set. O(1)."},"id":7848,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"21810:6:33","nodeType":"FunctionDefinition","parameters":{"id":7839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7838,"mutability":"mutable","name":"set","nameLocation":"21835:3:33","nodeType":"VariableDeclaration","scope":7848,"src":"21817:21:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"},"typeName":{"id":7837,"nodeType":"UserDefinedTypeName","pathNode":{"id":7836,"name":"StringSet","nameLocations":["21817:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":7646,"src":"21817:9:33"},"referencedDeclaration":7646,"src":"21817:9:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"}},"visibility":"internal"}],"src":"21816:23:33"},"returnParameters":{"id":7842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7841,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7848,"src":"21863:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7840,"name":"uint256","nodeType":"ElementaryTypeName","src":"21863:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21862:9:33"},"scope":8279,"src":"21801:113:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7864,"nodeType":"Block","src":"22344:42:33","statements":[{"expression":{"baseExpression":{"expression":{"id":7859,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7852,"src":"22361:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22365:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"22361:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"id":7862,"indexExpression":{"id":7861,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7854,"src":"22373:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22361:18:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7858,"id":7863,"nodeType":"Return","src":"22354:25:33"}]},"documentation":{"id":7849,"nodeType":"StructuredDocumentation","src":"21920:331:33","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7865,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"22265:2:33","nodeType":"FunctionDefinition","parameters":{"id":7855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7852,"mutability":"mutable","name":"set","nameLocation":"22286:3:33","nodeType":"VariableDeclaration","scope":7865,"src":"22268:21:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"},"typeName":{"id":7851,"nodeType":"UserDefinedTypeName","pathNode":{"id":7850,"name":"StringSet","nameLocations":["22268:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":7646,"src":"22268:9:33"},"referencedDeclaration":7646,"src":"22268:9:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"}},"visibility":"internal"},{"constant":false,"id":7854,"mutability":"mutable","name":"index","nameLocation":"22299:5:33","nodeType":"VariableDeclaration","scope":7865,"src":"22291:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7853,"name":"uint256","nodeType":"ElementaryTypeName","src":"22291:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22267:38:33"},"returnParameters":{"id":7858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7865,"src":"22329:13:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7856,"name":"string","nodeType":"ElementaryTypeName","src":"22329:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"22328:15:33"},"scope":8279,"src":"22256:130:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7878,"nodeType":"Block","src":"23005:35:33","statements":[{"expression":{"expression":{"id":7875,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7869,"src":"23022:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7876,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23026:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"23022:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},"functionReturnParameters":7874,"id":7877,"nodeType":"Return","src":"23015:18:33"}]},"documentation":{"id":7866,"nodeType":"StructuredDocumentation","src":"22392:529:33","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7879,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"22935:6:33","nodeType":"FunctionDefinition","parameters":{"id":7870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7869,"mutability":"mutable","name":"set","nameLocation":"22960:3:33","nodeType":"VariableDeclaration","scope":7879,"src":"22942:21:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"},"typeName":{"id":7868,"nodeType":"UserDefinedTypeName","pathNode":{"id":7867,"name":"StringSet","nameLocations":["22942:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":7646,"src":"22942:9:33"},"referencedDeclaration":7646,"src":"22942:9:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"}},"visibility":"internal"}],"src":"22941:23:33"},"returnParameters":{"id":7874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7879,"src":"22988:15:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":7871,"name":"string","nodeType":"ElementaryTypeName","src":"22988:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":7872,"nodeType":"ArrayTypeName","src":"22988:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"22987:17:33"},"scope":8279,"src":"22926:114:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7957,"nodeType":"Block","src":"23691:389:33","statements":[{"id":7956,"nodeType":"UncheckedBlock","src":"23701:373:33","statements":[{"expression":{"id":7901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7893,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"23725:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7896,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"23740:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7898,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7883,"src":"23752:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}],"id":7897,"name":"length","nodeType":"Identifier","overloadedDeclarations":[7166,7363,7551,7848,8168],"referencedDeclaration":7848,"src":"23745:6:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_StringSet_$7646_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.StringSet storage pointer) view returns (uint256)"}},"id":7899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23745:11:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7894,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"23731:4:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":7895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23736:3:33","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":3694,"src":"23731:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23731:26:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23725:32:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7902,"nodeType":"ExpressionStatement","src":"23725:32:33"},{"expression":{"id":7909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7903,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7885,"src":"23771:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7906,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7885,"src":"23788:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7907,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"23795:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7904,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"23779:4:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":7905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23784:3:33","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":3694,"src":"23779:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23779:20:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23771:28:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7910,"nodeType":"ExpressionStatement","src":"23771:28:33"},{"assignments":[7912],"declarations":[{"constant":false,"id":7912,"mutability":"mutable","name":"len","nameLocation":"23822:3:33","nodeType":"VariableDeclaration","scope":7956,"src":"23814:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7911,"name":"uint256","nodeType":"ElementaryTypeName","src":"23814:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7916,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7913,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7887,"src":"23828:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7914,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7885,"src":"23834:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23828:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23814:25:33"},{"assignments":[7921],"declarations":[{"constant":false,"id":7921,"mutability":"mutable","name":"result","nameLocation":"23869:6:33","nodeType":"VariableDeclaration","scope":7956,"src":"23853:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":7919,"name":"string","nodeType":"ElementaryTypeName","src":"23853:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":7920,"nodeType":"ArrayTypeName","src":"23853:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"id":7927,"initialValue":{"arguments":[{"id":7925,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"23891:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23878:12:33","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (string memory[] memory)"},"typeName":{"baseType":{"id":7922,"name":"string","nodeType":"ElementaryTypeName","src":"23882:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":7923,"nodeType":"ArrayTypeName","src":"23882:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}}},"id":7926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23878:17:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"23853:42:33"},{"body":{"id":7952,"nodeType":"Block","src":"23943:94:33","statements":[{"expression":{"id":7950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7938,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7921,"src":"23961:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":7940,"indexExpression":{"id":7939,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7929,"src":"23968:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23961:9:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"expression":{"id":7943,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7883,"src":"23993:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet storage pointer"}},"id":7944,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23997:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7641,"src":"23993:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7945,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7885,"src":"24006:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7946,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7929,"src":"24014:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24006:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage","typeString":"string storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7941,"name":"Arrays","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"23973:6:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Arrays_$2725_$","typeString":"type(library Arrays)"}},"id":7942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23980:12:33","memberName":"unsafeAccess","nodeType":"MemberAccess","referencedDeclaration":2604,"src":"23973:19:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_string_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_StringSlot_$3029_storage_ptr_$","typeString":"function (string storage ref[] storage pointer,uint256) pure returns (struct StorageSlot.StringSlot storage pointer)"}},"id":7948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23973:43:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3029_storage_ptr","typeString":"struct StorageSlot.StringSlot storage pointer"}},"id":7949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24017:5:33","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3028,"src":"23973:49:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"src":"23961:61:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":7951,"nodeType":"ExpressionStatement","src":"23961:61:33"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7932,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7929,"src":"23929:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7933,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"23933:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23929:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7953,"initializationExpression":{"assignments":[7929],"declarations":[{"constant":false,"id":7929,"mutability":"mutable","name":"i","nameLocation":"23922:1:33","nodeType":"VariableDeclaration","scope":7953,"src":"23914:9:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7928,"name":"uint256","nodeType":"ElementaryTypeName","src":"23914:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7931,"initialValue":{"hexValue":"30","id":7930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23926:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23914:13:33"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"23938:3:33","subExpression":{"id":7935,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7929,"src":"23940:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7937,"nodeType":"ExpressionStatement","src":"23938:3:33"},"nodeType":"ForStatement","src":"23909:128:33"},{"expression":{"id":7954,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7921,"src":"24057:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"functionReturnParameters":7892,"id":7955,"nodeType":"Return","src":"24050:13:33"}]}]},"documentation":{"id":7880,"nodeType":"StructuredDocumentation","src":"23046:533:33","text":" @dev Return a slice of the set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":7958,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"23593:6:33","nodeType":"FunctionDefinition","parameters":{"id":7888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7883,"mutability":"mutable","name":"set","nameLocation":"23618:3:33","nodeType":"VariableDeclaration","scope":7958,"src":"23600:21:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"},"typeName":{"id":7882,"nodeType":"UserDefinedTypeName","pathNode":{"id":7881,"name":"StringSet","nameLocations":["23600:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":7646,"src":"23600:9:33"},"referencedDeclaration":7646,"src":"23600:9:33","typeDescriptions":{"typeIdentifier":"t_struct$_StringSet_$7646_storage_ptr","typeString":"struct EnumerableSet.StringSet"}},"visibility":"internal"},{"constant":false,"id":7885,"mutability":"mutable","name":"start","nameLocation":"23631:5:33","nodeType":"VariableDeclaration","scope":7958,"src":"23623:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7884,"name":"uint256","nodeType":"ElementaryTypeName","src":"23623:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7887,"mutability":"mutable","name":"end","nameLocation":"23646:3:33","nodeType":"VariableDeclaration","scope":7958,"src":"23638:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7886,"name":"uint256","nodeType":"ElementaryTypeName","src":"23638:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23599:51:33"},"returnParameters":{"id":7892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7891,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7958,"src":"23674:15:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":7889,"name":"string","nodeType":"ElementaryTypeName","src":"23674:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":7890,"nodeType":"ArrayTypeName","src":"23674:8:33","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"23673:17:33"},"scope":8279,"src":"23584:496:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.BytesSet","id":7966,"members":[{"constant":false,"id":7961,"mutability":"mutable","name":"_values","nameLocation":"24153:7:33","nodeType":"VariableDeclaration","scope":7966,"src":"24145:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":7959,"name":"bytes","nodeType":"ElementaryTypeName","src":"24145:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":7960,"nodeType":"ArrayTypeName","src":"24145:7:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":7965,"mutability":"mutable","name":"_positions","nameLocation":"24343:10:33","nodeType":"VariableDeclaration","scope":7966,"src":"24311:42:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes => uint256)"},"typeName":{"id":7964,"keyName":"value","keyNameLocation":"24325:5:33","keyType":{"id":7962,"name":"bytes","nodeType":"ElementaryTypeName","src":"24319:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"nodeType":"Mapping","src":"24311:31:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7963,"name":"uint256","nodeType":"ElementaryTypeName","src":"24334:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"BytesSet","nameLocation":"24093:8:33","nodeType":"StructDefinition","scope":8279,"src":"24086:274:33","visibility":"public"},{"body":{"id":8007,"nodeType":"Block","src":"24609:336:33","statements":[{"condition":{"id":7981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"24623:21:33","subExpression":{"arguments":[{"id":7978,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7970,"src":"24633:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},{"id":7979,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7972,"src":"24638:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7977,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[7151,7348,7536,7834,8154],"referencedDeclaration":8154,"src":"24624:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_BytesSet_$7966_storage_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.BytesSet storage pointer,bytes memory) view returns (bool)"}},"id":7980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24624:20:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8005,"nodeType":"Block","src":"24902:37:33","statements":[{"expression":{"hexValue":"66616c7365","id":8003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24923:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7976,"id":8004,"nodeType":"Return","src":"24916:12:33"}]},"id":8006,"nodeType":"IfStatement","src":"24619:320:33","trueBody":{"id":8002,"nodeType":"Block","src":"24646:250:33","statements":[{"expression":{"arguments":[{"id":7987,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7972,"src":"24677:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"expression":{"id":7982,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7970,"src":"24660:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":7985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24664:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"24660:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":7986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24672:4:33","memberName":"push","nodeType":"MemberAccess","src":"24660:16:33","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_bytes_storage_$dyn_storage_ptr_$_t_bytes_storage_$returns$__$attached_to$_t_array$_t_bytes_storage_$dyn_storage_ptr_$","typeString":"function (bytes storage ref[] storage pointer,bytes storage ref)"}},"id":7988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24660:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7989,"nodeType":"ExpressionStatement","src":"24660:23:33"},{"expression":{"id":7998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7990,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7970,"src":"24818:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":7993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24822:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7965,"src":"24818:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes memory => uint256)"}},"id":7994,"indexExpression":{"id":7992,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7972,"src":"24833:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24818:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":7995,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7970,"src":"24842:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":7996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24846:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"24842:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":7997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24854:6:33","memberName":"length","nodeType":"MemberAccess","src":"24842:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24818:42:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7999,"nodeType":"ExpressionStatement","src":"24818:42:33"},{"expression":{"hexValue":"74727565","id":8000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24881:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7976,"id":8001,"nodeType":"Return","src":"24874:11:33"}]}}]},"documentation":{"id":7967,"nodeType":"StructuredDocumentation","src":"24366:159:33","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":8008,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"24539:3:33","nodeType":"FunctionDefinition","parameters":{"id":7973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7970,"mutability":"mutable","name":"set","nameLocation":"24560:3:33","nodeType":"VariableDeclaration","scope":8008,"src":"24543:20:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"},"typeName":{"id":7969,"nodeType":"UserDefinedTypeName","pathNode":{"id":7968,"name":"BytesSet","nameLocations":["24543:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7966,"src":"24543:8:33"},"referencedDeclaration":7966,"src":"24543:8:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"}},"visibility":"internal"},{"constant":false,"id":7972,"mutability":"mutable","name":"value","nameLocation":"24578:5:33","nodeType":"VariableDeclaration","scope":8008,"src":"24565:18:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7971,"name":"bytes","nodeType":"ElementaryTypeName","src":"24565:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"24542:42:33"},"returnParameters":{"id":7976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8008,"src":"24603:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7974,"name":"bool","nodeType":"ElementaryTypeName","src":"24603:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24602:6:33"},"scope":8279,"src":"24530:415:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8091,"nodeType":"Block","src":"25195:1301:33","statements":[{"assignments":[8020],"declarations":[{"constant":false,"id":8020,"mutability":"mutable","name":"position","nameLocation":"25307:8:33","nodeType":"VariableDeclaration","scope":8091,"src":"25299:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8019,"name":"uint256","nodeType":"ElementaryTypeName","src":"25299:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8025,"initialValue":{"baseExpression":{"expression":{"id":8021,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8012,"src":"25318:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25322:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7965,"src":"25318:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes memory => uint256)"}},"id":8024,"indexExpression":{"id":8023,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"25333:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25318:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25299:40:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8026,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"25354:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25366:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25354:13:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8089,"nodeType":"Block","src":"26453:37:33","statements":[{"expression":{"hexValue":"66616c7365","id":8087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26474:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8018,"id":8088,"nodeType":"Return","src":"26467:12:33"}]},"id":8090,"nodeType":"IfStatement","src":"25350:1140:33","trueBody":{"id":8086,"nodeType":"Block","src":"25369:1078:33","statements":[{"assignments":[8030],"declarations":[{"constant":false,"id":8030,"mutability":"mutable","name":"valueIndex","nameLocation":"25729:10:33","nodeType":"VariableDeclaration","scope":8086,"src":"25721:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8029,"name":"uint256","nodeType":"ElementaryTypeName","src":"25721:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8034,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8031,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"25742:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25753:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25742:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25721:33:33"},{"assignments":[8036],"declarations":[{"constant":false,"id":8036,"mutability":"mutable","name":"lastIndex","nameLocation":"25776:9:33","nodeType":"VariableDeclaration","scope":8086,"src":"25768:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8035,"name":"uint256","nodeType":"ElementaryTypeName","src":"25768:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8042,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8037,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8012,"src":"25788:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25792:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"25788:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":8039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25800:6:33","memberName":"length","nodeType":"MemberAccess","src":"25788:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25809:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25788:22:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25768:42:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8043,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8030,"src":"25829:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8044,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8036,"src":"25843:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25829:23:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8070,"nodeType":"IfStatement","src":"25825:383:33","trueBody":{"id":8069,"nodeType":"Block","src":"25854:354:33","statements":[{"assignments":[8047],"declarations":[{"constant":false,"id":8047,"mutability":"mutable","name":"lastValue","nameLocation":"25885:9:33","nodeType":"VariableDeclaration","scope":8069,"src":"25872:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8046,"name":"bytes","nodeType":"ElementaryTypeName","src":"25872:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":8052,"initialValue":{"baseExpression":{"expression":{"id":8048,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8012,"src":"25897:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8049,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25901:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"25897:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":8051,"indexExpression":{"id":8050,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8036,"src":"25909:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25897:22:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"VariableDeclarationStatement","src":"25872:47:33"},{"expression":{"id":8059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8053,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8012,"src":"26018:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26022:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"26018:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":8057,"indexExpression":{"id":8055,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8030,"src":"26030:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26018:23:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8058,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8047,"src":"26044:9:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"26018:35:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":8060,"nodeType":"ExpressionStatement","src":"26018:35:33"},{"expression":{"id":8067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8061,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8012,"src":"26157:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26161:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7965,"src":"26157:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes memory => uint256)"}},"id":8065,"indexExpression":{"id":8063,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8047,"src":"26172:9:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26157:25:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8066,"name":"position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"26185:8:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26157:36:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8068,"nodeType":"ExpressionStatement","src":"26157:36:33"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":8071,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8012,"src":"26286:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26290:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"26286:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":8075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26298:3:33","memberName":"pop","nodeType":"MemberAccess","src":"26286:15:33","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_bytes_storage_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes_storage_$dyn_storage_ptr_$","typeString":"function (bytes storage ref[] storage pointer)"}},"id":8076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26286:17:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8077,"nodeType":"ExpressionStatement","src":"26286:17:33"},{"expression":{"id":8082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"26382:28:33","subExpression":{"baseExpression":{"expression":{"id":8078,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8012,"src":"26389:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26393:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7965,"src":"26389:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes memory => uint256)"}},"id":8081,"indexExpression":{"id":8080,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"26404:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26389:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8083,"nodeType":"ExpressionStatement","src":"26382:28:33"},{"expression":{"hexValue":"74727565","id":8084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26432:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8018,"id":8085,"nodeType":"Return","src":"26425:11:33"}]}}]},"documentation":{"id":8009,"nodeType":"StructuredDocumentation","src":"24951:157:33","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":8092,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"25122:6:33","nodeType":"FunctionDefinition","parameters":{"id":8015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8012,"mutability":"mutable","name":"set","nameLocation":"25146:3:33","nodeType":"VariableDeclaration","scope":8092,"src":"25129:20:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"},"typeName":{"id":8011,"nodeType":"UserDefinedTypeName","pathNode":{"id":8010,"name":"BytesSet","nameLocations":["25129:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7966,"src":"25129:8:33"},"referencedDeclaration":7966,"src":"25129:8:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"}},"visibility":"internal"},{"constant":false,"id":8014,"mutability":"mutable","name":"value","nameLocation":"25164:5:33","nodeType":"VariableDeclaration","scope":8092,"src":"25151:18:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8013,"name":"bytes","nodeType":"ElementaryTypeName","src":"25151:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25128:42:33"},"returnParameters":{"id":8018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8017,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8092,"src":"25189:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8016,"name":"bool","nodeType":"ElementaryTypeName","src":"25189:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25188:6:33"},"scope":8279,"src":"25113:1383:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8134,"nodeType":"Block","src":"26856:195:33","statements":[{"assignments":[8100],"declarations":[{"constant":false,"id":8100,"mutability":"mutable","name":"len","nameLocation":"26874:3:33","nodeType":"VariableDeclaration","scope":8134,"src":"26866:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8099,"name":"uint256","nodeType":"ElementaryTypeName","src":"26866:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8104,"initialValue":{"arguments":[{"id":8102,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"26887:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}],"id":8101,"name":"length","nodeType":"Identifier","overloadedDeclarations":[7166,7363,7551,7848,8168],"referencedDeclaration":8168,"src":"26880:6:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_BytesSet_$7966_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.BytesSet storage pointer) view returns (uint256)"}},"id":8103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26880:11:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26866:25:33"},{"body":{"id":8124,"nodeType":"Block","src":"26935:62:33","statements":[{"expression":{"id":8122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"26949:37:33","subExpression":{"baseExpression":{"expression":{"id":8115,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"26956:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26960:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7965,"src":"26956:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes memory => uint256)"}},"id":8121,"indexExpression":{"baseExpression":{"expression":{"id":8117,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"26971:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8118,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26975:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"26971:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":8120,"indexExpression":{"id":8119,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8106,"src":"26983:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26971:14:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26956:30:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8123,"nodeType":"ExpressionStatement","src":"26949:37:33"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8109,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8106,"src":"26921:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8110,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8100,"src":"26925:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26921:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8125,"initializationExpression":{"assignments":[8106],"declarations":[{"constant":false,"id":8106,"mutability":"mutable","name":"i","nameLocation":"26914:1:33","nodeType":"VariableDeclaration","scope":8125,"src":"26906:9:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8105,"name":"uint256","nodeType":"ElementaryTypeName","src":"26906:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8108,"initialValue":{"hexValue":"30","id":8107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26918:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26906:13:33"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"26930:3:33","subExpression":{"id":8112,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8106,"src":"26932:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8114,"nodeType":"ExpressionStatement","src":"26930:3:33"},"nodeType":"ForStatement","src":"26901:96:33"},{"expression":{"arguments":[{"expression":{"id":8129,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"27029:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27033:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"27029:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},{"hexValue":"30","id":8131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27042:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":8126,"name":"Arrays","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"27006:6:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Arrays_$2725_$","typeString":"type(library Arrays)"}},"id":8128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27013:15:33","memberName":"unsafeSetLength","nodeType":"MemberAccess","referencedDeclaration":2713,"src":"27006:22:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_bytes_storage_$dyn_storage_ptr_$_t_uint256_$returns$__$","typeString":"function (bytes storage ref[] storage pointer,uint256)"}},"id":8132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27006:38:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8133,"nodeType":"ExpressionStatement","src":"27006:38:33"}]},"documentation":{"id":8093,"nodeType":"StructuredDocumentation","src":"26502:303:33","text":" @dev Removes all the values from a set. O(n).\n WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the\n function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block."},"id":8135,"implemented":true,"kind":"function","modifiers":[],"name":"clear","nameLocation":"26819:5:33","nodeType":"FunctionDefinition","parameters":{"id":8097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8096,"mutability":"mutable","name":"set","nameLocation":"26842:3:33","nodeType":"VariableDeclaration","scope":8135,"src":"26825:20:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"},"typeName":{"id":8095,"nodeType":"UserDefinedTypeName","pathNode":{"id":8094,"name":"BytesSet","nameLocations":["26825:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7966,"src":"26825:8:33"},"referencedDeclaration":7966,"src":"26825:8:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"}},"visibility":"internal"}],"src":"26824:22:33"},"returnParameters":{"id":8098,"nodeType":"ParameterList","parameters":[],"src":"26856:0:33"},"scope":8279,"src":"26810:241:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8153,"nodeType":"Block","src":"27221:50:33","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8146,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8139,"src":"27238:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8147,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27242:10:33","memberName":"_positions","nodeType":"MemberAccess","referencedDeclaration":7965,"src":"27238:14:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_uint256_$","typeString":"mapping(bytes memory => uint256)"}},"id":8149,"indexExpression":{"id":8148,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8141,"src":"27253:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27238:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27263:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"27238:26:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8145,"id":8152,"nodeType":"Return","src":"27231:33:33"}]},"documentation":{"id":8136,"nodeType":"StructuredDocumentation","src":"27057:70:33","text":" @dev Returns true if the value is in the set. O(1)."},"id":8154,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"27141:8:33","nodeType":"FunctionDefinition","parameters":{"id":8142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8139,"mutability":"mutable","name":"set","nameLocation":"27167:3:33","nodeType":"VariableDeclaration","scope":8154,"src":"27150:20:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"},"typeName":{"id":8138,"nodeType":"UserDefinedTypeName","pathNode":{"id":8137,"name":"BytesSet","nameLocations":["27150:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7966,"src":"27150:8:33"},"referencedDeclaration":7966,"src":"27150:8:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"}},"visibility":"internal"},{"constant":false,"id":8141,"mutability":"mutable","name":"value","nameLocation":"27185:5:33","nodeType":"VariableDeclaration","scope":8154,"src":"27172:18:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8140,"name":"bytes","nodeType":"ElementaryTypeName","src":"27172:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27149:42:33"},"returnParameters":{"id":8145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8144,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8154,"src":"27215:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8143,"name":"bool","nodeType":"ElementaryTypeName","src":"27215:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"27214:6:33"},"scope":8279,"src":"27132:139:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8167,"nodeType":"Block","src":"27422:42:33","statements":[{"expression":{"expression":{"expression":{"id":8163,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8158,"src":"27439:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27443:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"27439:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":8165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27451:6:33","memberName":"length","nodeType":"MemberAccess","src":"27439:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8162,"id":8166,"nodeType":"Return","src":"27432:25:33"}]},"documentation":{"id":8155,"nodeType":"StructuredDocumentation","src":"27277:70:33","text":" @dev Returns the number of values on the set. O(1)."},"id":8168,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"27361:6:33","nodeType":"FunctionDefinition","parameters":{"id":8159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8158,"mutability":"mutable","name":"set","nameLocation":"27385:3:33","nodeType":"VariableDeclaration","scope":8168,"src":"27368:20:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"},"typeName":{"id":8157,"nodeType":"UserDefinedTypeName","pathNode":{"id":8156,"name":"BytesSet","nameLocations":["27368:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7966,"src":"27368:8:33"},"referencedDeclaration":7966,"src":"27368:8:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"}},"visibility":"internal"}],"src":"27367:22:33"},"returnParameters":{"id":8162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8168,"src":"27413:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8160,"name":"uint256","nodeType":"ElementaryTypeName","src":"27413:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27412:9:33"},"scope":8279,"src":"27352:112:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8184,"nodeType":"Block","src":"27892:42:33","statements":[{"expression":{"baseExpression":{"expression":{"id":8179,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8172,"src":"27909:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8180,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27913:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"27909:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"id":8182,"indexExpression":{"id":8181,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"27921:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27909:18:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":8178,"id":8183,"nodeType":"Return","src":"27902:25:33"}]},"documentation":{"id":8169,"nodeType":"StructuredDocumentation","src":"27470:331:33","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":8185,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"27815:2:33","nodeType":"FunctionDefinition","parameters":{"id":8175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8172,"mutability":"mutable","name":"set","nameLocation":"27835:3:33","nodeType":"VariableDeclaration","scope":8185,"src":"27818:20:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"},"typeName":{"id":8171,"nodeType":"UserDefinedTypeName","pathNode":{"id":8170,"name":"BytesSet","nameLocations":["27818:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7966,"src":"27818:8:33"},"referencedDeclaration":7966,"src":"27818:8:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"}},"visibility":"internal"},{"constant":false,"id":8174,"mutability":"mutable","name":"index","nameLocation":"27848:5:33","nodeType":"VariableDeclaration","scope":8185,"src":"27840:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8173,"name":"uint256","nodeType":"ElementaryTypeName","src":"27840:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27817:37:33"},"returnParameters":{"id":8178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8185,"src":"27878:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8176,"name":"bytes","nodeType":"ElementaryTypeName","src":"27878:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27877:14:33"},"scope":8279,"src":"27806:128:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8198,"nodeType":"Block","src":"28551:35:33","statements":[{"expression":{"expression":{"id":8195,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8189,"src":"28568:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28572:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"28568:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},"functionReturnParameters":8194,"id":8197,"nodeType":"Return","src":"28561:18:33"}]},"documentation":{"id":8186,"nodeType":"StructuredDocumentation","src":"27940:529:33","text":" @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":8199,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"28483:6:33","nodeType":"FunctionDefinition","parameters":{"id":8190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8189,"mutability":"mutable","name":"set","nameLocation":"28507:3:33","nodeType":"VariableDeclaration","scope":8199,"src":"28490:20:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"},"typeName":{"id":8188,"nodeType":"UserDefinedTypeName","pathNode":{"id":8187,"name":"BytesSet","nameLocations":["28490:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7966,"src":"28490:8:33"},"referencedDeclaration":7966,"src":"28490:8:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"}},"visibility":"internal"}],"src":"28489:22:33"},"returnParameters":{"id":8194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8193,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8199,"src":"28535:14:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":8191,"name":"bytes","nodeType":"ElementaryTypeName","src":"28535:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8192,"nodeType":"ArrayTypeName","src":"28535:7:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"28534:16:33"},"scope":8279,"src":"28474:112:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8277,"nodeType":"Block","src":"29235:387:33","statements":[{"id":8276,"nodeType":"UncheckedBlock","src":"29245:371:33","statements":[{"expression":{"id":8221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8213,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8207,"src":"29269:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8216,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8207,"src":"29284:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":8218,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8203,"src":"29296:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}],"id":8217,"name":"length","nodeType":"Identifier","overloadedDeclarations":[7166,7363,7551,7848,8168],"referencedDeclaration":8168,"src":"29289:6:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_BytesSet_$7966_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct EnumerableSet.BytesSet storage pointer) view returns (uint256)"}},"id":8219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29289:11:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8214,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"29275:4:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":8215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29280:3:33","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":3694,"src":"29275:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29275:26:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29269:32:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8222,"nodeType":"ExpressionStatement","src":"29269:32:33"},{"expression":{"id":8229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8223,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8205,"src":"29315:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8226,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8205,"src":"29332:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8227,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8207,"src":"29339:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8224,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"29323:4:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4988_$","typeString":"type(library Math)"}},"id":8225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29328:3:33","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":3694,"src":"29323:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29323:20:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29315:28:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8230,"nodeType":"ExpressionStatement","src":"29315:28:33"},{"assignments":[8232],"declarations":[{"constant":false,"id":8232,"mutability":"mutable","name":"len","nameLocation":"29366:3:33","nodeType":"VariableDeclaration","scope":8276,"src":"29358:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8231,"name":"uint256","nodeType":"ElementaryTypeName","src":"29358:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8236,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8233,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8207,"src":"29372:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8234,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8205,"src":"29378:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29372:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29358:25:33"},{"assignments":[8241],"declarations":[{"constant":false,"id":8241,"mutability":"mutable","name":"result","nameLocation":"29412:6:33","nodeType":"VariableDeclaration","scope":8276,"src":"29397:21:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":8239,"name":"bytes","nodeType":"ElementaryTypeName","src":"29397:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8240,"nodeType":"ArrayTypeName","src":"29397:7:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"id":8247,"initialValue":{"arguments":[{"id":8245,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8232,"src":"29433:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"29421:11:33","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":8242,"name":"bytes","nodeType":"ElementaryTypeName","src":"29425:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8243,"nodeType":"ArrayTypeName","src":"29425:7:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":8246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29421:16:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"29397:40:33"},{"body":{"id":8272,"nodeType":"Block","src":"29485:94:33","statements":[{"expression":{"id":8270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8258,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8241,"src":"29503:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":8260,"indexExpression":{"id":8259,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8249,"src":"29510:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"29503:9:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"expression":{"id":8263,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8203,"src":"29535:3:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet storage pointer"}},"id":8264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29539:7:33","memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7961,"src":"29535:11:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8265,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8205,"src":"29548:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8266,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8249,"src":"29556:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29548:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage","typeString":"bytes storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8261,"name":"Arrays","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"29515:6:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Arrays_$2725_$","typeString":"type(library Arrays)"}},"id":8262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29522:12:33","memberName":"unsafeAccess","nodeType":"MemberAccess","referencedDeclaration":2578,"src":"29515:19:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_bytes_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_BytesSlot_$3032_storage_ptr_$","typeString":"function (bytes storage ref[] storage pointer,uint256) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":8268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29515:43:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3032_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":8269,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29559:5:33","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3031,"src":"29515:49:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"src":"29503:61:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8271,"nodeType":"ExpressionStatement","src":"29503:61:33"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8252,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8249,"src":"29471:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8253,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8232,"src":"29475:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29471:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8273,"initializationExpression":{"assignments":[8249],"declarations":[{"constant":false,"id":8249,"mutability":"mutable","name":"i","nameLocation":"29464:1:33","nodeType":"VariableDeclaration","scope":8273,"src":"29456:9:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8248,"name":"uint256","nodeType":"ElementaryTypeName","src":"29456:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8251,"initialValue":{"hexValue":"30","id":8250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29468:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29456:13:33"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"29480:3:33","subExpression":{"id":8255,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8249,"src":"29482:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8257,"nodeType":"ExpressionStatement","src":"29480:3:33"},"nodeType":"ForStatement","src":"29451:128:33"},{"expression":{"id":8274,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8241,"src":"29599:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"functionReturnParameters":8212,"id":8275,"nodeType":"Return","src":"29592:13:33"}]}]},"documentation":{"id":8200,"nodeType":"StructuredDocumentation","src":"28592:533:33","text":" @dev Return a slice of the set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"id":8278,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"29139:6:33","nodeType":"FunctionDefinition","parameters":{"id":8208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8203,"mutability":"mutable","name":"set","nameLocation":"29163:3:33","nodeType":"VariableDeclaration","scope":8278,"src":"29146:20:33","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"},"typeName":{"id":8202,"nodeType":"UserDefinedTypeName","pathNode":{"id":8201,"name":"BytesSet","nameLocations":["29146:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7966,"src":"29146:8:33"},"referencedDeclaration":7966,"src":"29146:8:33","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSet_$7966_storage_ptr","typeString":"struct EnumerableSet.BytesSet"}},"visibility":"internal"},{"constant":false,"id":8205,"mutability":"mutable","name":"start","nameLocation":"29176:5:33","nodeType":"VariableDeclaration","scope":8278,"src":"29168:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8204,"name":"uint256","nodeType":"ElementaryTypeName","src":"29168:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8207,"mutability":"mutable","name":"end","nameLocation":"29191:3:33","nodeType":"VariableDeclaration","scope":8278,"src":"29183:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8206,"name":"uint256","nodeType":"ElementaryTypeName","src":"29183:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29145:50:33"},"returnParameters":{"id":8212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8211,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8278,"src":"29219:14:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":8209,"name":"bytes","nodeType":"ElementaryTypeName","src":"29219:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8210,"nodeType":"ArrayTypeName","src":"29219:7:33","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"29218:16:33"},"scope":8279,"src":"29130:492:33","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8280,"src":"1586:28038:33","usedErrors":[],"usedEvents":[]}],"src":"205:29420:33"},"id":33},"project/contracts/allocate/DirectAllocation.sol":{"ast":{"absolutePath":"project/contracts/allocate/DirectAllocation.sol","exportedSymbols":{"BaseUpgradeable":[10867],"DirectAllocation":[8418],"ERC165Upgradeable":[1560],"IIssuanceTarget":[289],"ISendTokens":[301]},"id":8419,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8281,"literals":["solidity","0.8",".33"],"nodeType":"PragmaDirective","src":"46:23:34"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceTarget.sol","id":8283,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8419,"sourceUnit":290,"src":"71:108:34","symbolAliases":[{"foreign":{"id":8282,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"80:15:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/ISendTokens.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/ISendTokens.sol","id":8285,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8419,"sourceUnit":302,"src":"180:100:34","symbolAliases":[{"foreign":{"id":8284,"name":"ISendTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":301,"src":"189:11:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"project/contracts/common/BaseUpgradeable.sol","file":"../common/BaseUpgradeable.sol","id":8287,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8419,"sourceUnit":10868,"src":"281:64:34","symbolAliases":[{"foreign":{"id":8286,"name":"BaseUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"290:15:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":8289,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8419,"sourceUnit":1561,"src":"393:114:34","symbolAliases":[{"foreign":{"id":8288,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"402:17:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8291,"name":"BaseUpgradeable","nameLocations":["1223:15:34"],"nodeType":"IdentifierPath","referencedDeclaration":10867,"src":"1223:15:34"},"id":8292,"nodeType":"InheritanceSpecifier","src":"1223:15:34"},{"baseName":{"id":8293,"name":"IIssuanceTarget","nameLocations":["1240:15:34"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"1240:15:34"},"id":8294,"nodeType":"InheritanceSpecifier","src":"1240:15:34"},{"baseName":{"id":8295,"name":"ISendTokens","nameLocations":["1257:11:34"],"nodeType":"IdentifierPath","referencedDeclaration":301,"src":"1257:11:34"},"id":8296,"nodeType":"InheritanceSpecifier","src":"1257:11:34"}],"canonicalName":"DirectAllocation","contractDependencies":[],"contractKind":"contract","documentation":{"id":8290,"nodeType":"StructuredDocumentation","src":"532:661:34","text":" @title DirectAllocation\n @author Edge & Node\n @notice A simple contract that receives tokens from the IssuanceAllocator and allows\n an authorized operator to withdraw them.\n @dev This contract is designed to be an allocator-minting target in the IssuanceAllocator.\n The IssuanceAllocator will mint tokens directly to this contract, and the authorized\n operator can send them to individual addresses as needed.\n This contract is pausable by the PAUSE_ROLE. When paused, tokens cannot be sent.\n @custom:security-contact Please email security+contracts@thegraph.com if you find any bugs. We might have an active bug bounty program."},"fullyImplemented":true,"id":8418,"linearizedBaseContracts":[8418,301,289,10867,319,1520,1046,820,1560,3367,1669,1643,1360,1314],"name":"DirectAllocation","nameLocation":"1203:16:34","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8297,"nodeType":"StructuredDocumentation","src":"1303:176:34","text":"@notice Thrown when token transfer fails\n @param to The address that the transfer was attempted to\n @param amount The amount of tokens that failed to transfer"},"errorSelector":"6e4cad27","id":8303,"name":"SendTokensFailed","nameLocation":"1490:16:34","nodeType":"ErrorDefinition","parameters":{"id":8302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8299,"mutability":"mutable","name":"to","nameLocation":"1515:2:34","nodeType":"VariableDeclaration","scope":8303,"src":"1507:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8298,"name":"address","nodeType":"ElementaryTypeName","src":"1507:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8301,"mutability":"mutable","name":"amount","nameLocation":"1527:6:34","nodeType":"VariableDeclaration","scope":8303,"src":"1519:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8300,"name":"uint256","nodeType":"ElementaryTypeName","src":"1519:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1506:28:34"},"src":"1484:51:34"},{"anonymous":false,"documentation":{"id":8304,"nodeType":"StructuredDocumentation","src":"1562:143:34","text":"@notice Emitted when tokens are sent\n @param to The address that received the tokens\n @param amount The amount of tokens sent"},"eventSelector":"f18d5a93c62c1d0c761ed52107f11d20bc2071851206b79c4dd3283bd9f006f1","id":8310,"name":"TokensSent","nameLocation":"1716:10:34","nodeType":"EventDefinition","parameters":{"id":8309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8306,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"1743:2:34","nodeType":"VariableDeclaration","scope":8310,"src":"1727:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8305,"name":"address","nodeType":"ElementaryTypeName","src":"1727:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8308,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"1763:6:34","nodeType":"VariableDeclaration","scope":8310,"src":"1747:22:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8307,"name":"uint256","nodeType":"ElementaryTypeName","src":"1747:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1726:44:34"},"src":"1710:61:34"},{"anonymous":false,"documentation":{"id":8311,"nodeType":"StructuredDocumentation","src":"1850:58:34","text":"@notice Emitted before the issuance allocation changes"},"eventSelector":"a3b917c02656dce72578274a2691b36a801594defb0373242b11f7f302119406","id":8313,"name":"BeforeIssuanceAllocationChange","nameLocation":"1919:30:34","nodeType":"EventDefinition","parameters":{"id":8312,"nodeType":"ParameterList","parameters":[],"src":"1949:2:34"},"src":"1913:39:34"},{"body":{"id":8322,"nodeType":"Block","src":"2364:2:34","statements":[]},"documentation":{"id":8314,"nodeType":"StructuredDocumentation","src":"1984:315:34","text":" @notice Constructor for the DirectAllocation contract\n @dev This contract is upgradeable, but we use the constructor to pass the Graph Token address\n to the base contract.\n @param graphToken Address of the Graph Token contract\n @custom:oz-upgrades-unsafe-allow constructor"},"id":8323,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8319,"name":"graphToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8316,"src":"2352:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":8320,"kind":"baseConstructorSpecifier","modifierName":{"id":8318,"name":"BaseUpgradeable","nameLocations":["2336:15:34"],"nodeType":"IdentifierPath","referencedDeclaration":10867,"src":"2336:15:34"},"nodeType":"ModifierInvocation","src":"2336:27:34"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8316,"mutability":"mutable","name":"graphToken","nameLocation":"2324:10:34","nodeType":"VariableDeclaration","scope":8323,"src":"2316:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8315,"name":"address","nodeType":"ElementaryTypeName","src":"2316:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2315:20:34"},"returnParameters":{"id":8321,"nodeType":"ParameterList","parameters":[],"src":"2364:0:34"},"scope":8418,"src":"2304:62:34","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8335,"nodeType":"Block","src":"2604:49:34","statements":[{"expression":{"arguments":[{"id":8332,"name":"governor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"2637:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8331,"name":"__BaseUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10768,"src":"2614:22:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2614:32:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8334,"nodeType":"ExpressionStatement","src":"2614:32:34"}]},"documentation":{"id":8324,"nodeType":"StructuredDocumentation","src":"2401:131:34","text":" @notice Initialize the DirectAllocation contract\n @param governor Address that will have the GOVERNOR_ROLE"},"functionSelector":"c4d66de8","id":8336,"implemented":true,"kind":"function","modifiers":[{"id":8329,"kind":"modifierInvocation","modifierName":{"id":8328,"name":"initializer","nameLocations":["2592:11:34"],"nodeType":"IdentifierPath","referencedDeclaration":1154,"src":"2592:11:34"},"nodeType":"ModifierInvocation","src":"2592:11:34"}],"name":"initialize","nameLocation":"2546:10:34","nodeType":"FunctionDefinition","parameters":{"id":8327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8326,"mutability":"mutable","name":"governor","nameLocation":"2565:8:34","nodeType":"VariableDeclaration","scope":8336,"src":"2557:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8325,"name":"address","nodeType":"ElementaryTypeName","src":"2557:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2556:18:34"},"returnParameters":{"id":8330,"nodeType":"ParameterList","parameters":[],"src":"2604:0:34"},"scope":8418,"src":"2537:116:34","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[10866],"body":{"id":8364,"nodeType":"Block","src":"2824:196:34","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8345,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8339,"src":"2853:11:34","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":8347,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"2873:15:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}],"id":8346,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2868:4:34","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2868:21:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IIssuanceTarget_$289","typeString":"type(contract IIssuanceTarget)"}},"id":8349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2890:11:34","memberName":"interfaceId","nodeType":"MemberAccess","src":"2868:33:34","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2853:48:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8351,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8339,"src":"2917:11:34","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":8353,"name":"ISendTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":301,"src":"2937:11:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISendTokens_$301_$","typeString":"type(contract ISendTokens)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ISendTokens_$301_$","typeString":"type(contract ISendTokens)"}],"id":8352,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2932:4:34","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2932:17:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ISendTokens_$301","typeString":"type(contract ISendTokens)"}},"id":8355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2950:11:34","memberName":"interfaceId","nodeType":"MemberAccess","src":"2932:29:34","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2917:44:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2853:108:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":8360,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8339,"src":"3001:11:34","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":8358,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2977:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_DirectAllocation_$8418_$","typeString":"type(contract super DirectAllocation)"}},"id":8359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2983:17:34","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":10866,"src":"2977:23:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":8361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2977:36:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2853:160:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8344,"id":8363,"nodeType":"Return","src":"2834:179:34"}]},"documentation":{"id":8337,"nodeType":"StructuredDocumentation","src":"2680:48:34","text":" @inheritdoc ERC165Upgradeable"},"functionSelector":"01ffc9a7","id":8365,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2742:17:34","nodeType":"FunctionDefinition","overrides":{"id":8341,"nodeType":"OverrideSpecifier","overrides":[],"src":"2800:8:34"},"parameters":{"id":8340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8339,"mutability":"mutable","name":"interfaceId","nameLocation":"2767:11:34","nodeType":"VariableDeclaration","scope":8365,"src":"2760:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8338,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2760:6:34","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2759:20:34"},"returnParameters":{"id":8344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8365,"src":"2818:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8342,"name":"bool","nodeType":"ElementaryTypeName","src":"2818:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2817:6:34"},"scope":8418,"src":"2733:287:34","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[300],"body":{"id":8396,"nodeType":"Block","src":"3210:125:34","statements":[{"expression":{"arguments":[{"arguments":[{"id":8382,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"3249:2:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8383,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8370,"src":"3253:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8380,"name":"GRAPH_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10718,"src":"3228:11:34","typeDescriptions":{"typeIdentifier":"t_contract$_IGraphToken_$10883","typeString":"contract IGraphToken"}},"id":8381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3240:8:34","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1714,"src":"3228:20:34","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3228:32:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":8386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"3279:2:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8387,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8370,"src":"3283:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8385,"name":"SendTokensFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8303,"src":"3262:16:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256) pure returns (error)"}},"id":8388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3262:28:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":8379,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3220:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":8389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3220:71:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8390,"nodeType":"ExpressionStatement","src":"3220:71:34"},{"eventCall":{"arguments":[{"id":8392,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"3317:2:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8393,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8370,"src":"3321:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8391,"name":"TokensSent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8310,"src":"3306:10:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3306:22:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8395,"nodeType":"EmitStatement","src":"3301:27:34"}]},"documentation":{"id":8366,"nodeType":"StructuredDocumentation","src":"3059:42:34","text":" @inheritdoc ISendTokens"},"functionSelector":"05ab421d","id":8397,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":8374,"name":"OPERATOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"3181:13:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8375,"kind":"modifierInvocation","modifierName":{"id":8373,"name":"onlyRole","nameLocations":["3172:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"3172:8:34"},"nodeType":"ModifierInvocation","src":"3172:23:34"},{"id":8377,"kind":"modifierInvocation","modifierName":{"id":8376,"name":"whenNotPaused","nameLocations":["3196:13:34"],"nodeType":"IdentifierPath","referencedDeclaration":1410,"src":"3196:13:34"},"nodeType":"ModifierInvocation","src":"3196:13:34"}],"name":"sendTokens","nameLocation":"3115:10:34","nodeType":"FunctionDefinition","overrides":{"id":8372,"nodeType":"OverrideSpecifier","overrides":[],"src":"3163:8:34"},"parameters":{"id":8371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8368,"mutability":"mutable","name":"to","nameLocation":"3134:2:34","nodeType":"VariableDeclaration","scope":8397,"src":"3126:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8367,"name":"address","nodeType":"ElementaryTypeName","src":"3126:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8370,"mutability":"mutable","name":"amount","nameLocation":"3146:6:34","nodeType":"VariableDeclaration","scope":8397,"src":"3138:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8369,"name":"uint256","nodeType":"ElementaryTypeName","src":"3138:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3125:28:34"},"returnParameters":{"id":8378,"nodeType":"ParameterList","parameters":[],"src":"3210:0:34"},"scope":8418,"src":"3106:229:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[282],"body":{"id":8405,"nodeType":"Block","src":"3647:54:34","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8402,"name":"BeforeIssuanceAllocationChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8313,"src":"3662:30:34","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3662:32:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8404,"nodeType":"EmitStatement","src":"3657:37:34"}]},"documentation":{"id":8398,"nodeType":"StructuredDocumentation","src":"3341:233:34","text":" @dev For DirectAllocation, this is a no-op since we don't need to perform any calculations\n before an allocation change. We simply receive tokens from the IssuanceAllocator.\n @inheritdoc IIssuanceTarget"},"functionSelector":"3df8d682","id":8406,"implemented":true,"kind":"function","modifiers":[],"name":"beforeIssuanceAllocationChange","nameLocation":"3588:30:34","nodeType":"FunctionDefinition","overrides":{"id":8400,"nodeType":"OverrideSpecifier","overrides":[],"src":"3638:8:34"},"parameters":{"id":8399,"nodeType":"ParameterList","parameters":[],"src":"3618:2:34"},"returnParameters":{"id":8401,"nodeType":"ParameterList","parameters":[],"src":"3647:0:34"},"scope":8418,"src":"3579:122:34","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[288],"body":{"id":8416,"nodeType":"Block","src":"3938:2:34","statements":[]},"documentation":{"id":8407,"nodeType":"StructuredDocumentation","src":"3707:119:34","text":" @dev No-op for DirectAllocation; issuanceAllocator is not stored.\n @inheritdoc IIssuanceTarget"},"functionSelector":"931c0ac1","id":8417,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":8413,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"3923:13:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8414,"kind":"modifierInvocation","modifierName":{"id":8412,"name":"onlyRole","nameLocations":["3914:8:34"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"3914:8:34"},"nodeType":"ModifierInvocation","src":"3914:23:34"}],"name":"setIssuanceAllocator","nameLocation":"3840:20:34","nodeType":"FunctionDefinition","overrides":{"id":8411,"nodeType":"OverrideSpecifier","overrides":[],"src":"3905:8:34"},"parameters":{"id":8410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8409,"mutability":"mutable","name":"issuanceAllocator","nameLocation":"3869:17:34","nodeType":"VariableDeclaration","scope":8417,"src":"3861:25:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8408,"name":"address","nodeType":"ElementaryTypeName","src":"3861:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3860:27:34"},"returnParameters":{"id":8415,"nodeType":"ParameterList","parameters":[],"src":"3938:0:34"},"scope":8418,"src":"3831:109:34","stateMutability":"nonpayable","virtual":true,"visibility":"external"}],"scope":8419,"src":"1194:2748:34","usedErrors":[1063,1066,1399,1402,1570,1573,8303,10721,10724],"usedEvents":[278,1071,1391,1396,1582,1591,1600,8310,8313]}],"src":"46:3897:34"},"id":34},"project/contracts/allocate/IssuanceAllocator.sol":{"ast":{"absolutePath":"project/contracts/allocate/IssuanceAllocator.sol","exportedSymbols":{"Allocation":[252],"AllocationTarget":[260],"BaseUpgradeable":[10867],"DistributionState":[268],"ERC165Upgradeable":[1560],"IERC165":[3367],"IIssuanceAllocationAdministration":[130],"IIssuanceAllocationData":[146],"IIssuanceAllocationDistribution":[168],"IIssuanceAllocationStatus":[226],"IIssuanceTarget":[289],"IssuanceAllocator":[10671],"ReentrancyGuardTransient":[2878],"SelfMintingEventMode":[234],"TargetIssuancePerBlock":[244]},"id":10672,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8420,"literals":["solidity","0.8",".33"],"nodeType":"PragmaDirective","src":"46:23:35"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceAllocatorTypes.sol","id":8426,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10672,"sourceUnit":269,"src":"71:214:35","symbolAliases":[{"foreign":{"id":8421,"name":"TargetIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"84:22:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8422,"name":"Allocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"112:10:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8423,"name":"AllocationTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"128:16:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8424,"name":"DistributionState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"150:17:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8425,"name":"SelfMintingEventMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"173:20:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol","id":8428,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10672,"sourceUnit":169,"src":"286:140:35","symbolAliases":[{"foreign":{"id":8427,"name":"IIssuanceAllocationDistribution","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"295:31:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol","id":8430,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10672,"sourceUnit":131,"src":"427:144:35","symbolAliases":[{"foreign":{"id":8429,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"436:33:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationStatus.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceAllocationStatus.sol","id":8432,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10672,"sourceUnit":227,"src":"572:128:35","symbolAliases":[{"foreign":{"id":8431,"name":"IIssuanceAllocationStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"581:25:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationData.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceAllocationData.sol","id":8434,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10672,"sourceUnit":147,"src":"701:124:35","symbolAliases":[{"foreign":{"id":8433,"name":"IIssuanceAllocationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"710:23:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceTarget.sol","id":8436,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10672,"sourceUnit":290,"src":"826:108:35","symbolAliases":[{"foreign":{"id":8435,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"835:15:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"project/contracts/common/BaseUpgradeable.sol","file":"../common/BaseUpgradeable.sol","id":8438,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10672,"sourceUnit":10868,"src":"935:64:35","symbolAliases":[{"foreign":{"id":8437,"name":"BaseUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"944:15:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","id":8440,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10672,"sourceUnit":2879,"src":"1000:102:35","symbolAliases":[{"foreign":{"id":8439,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2878,"src":"1009:24:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":8442,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10672,"sourceUnit":3368,"src":"1103:82:35","symbolAliases":[{"foreign":{"id":8441,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"1112:7:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":8444,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10672,"sourceUnit":1561,"src":"1233:114:35","symbolAliases":[{"foreign":{"id":8443,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"1242:17:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8446,"name":"BaseUpgradeable","nameLocations":["9290:15:35"],"nodeType":"IdentifierPath","referencedDeclaration":10867,"src":"9290:15:35"},"id":8447,"nodeType":"InheritanceSpecifier","src":"9290:15:35"},{"baseName":{"id":8448,"name":"ReentrancyGuardTransient","nameLocations":["9311:24:35"],"nodeType":"IdentifierPath","referencedDeclaration":2878,"src":"9311:24:35"},"id":8449,"nodeType":"InheritanceSpecifier","src":"9311:24:35"},{"baseName":{"id":8450,"name":"IIssuanceAllocationDistribution","nameLocations":["9341:31:35"],"nodeType":"IdentifierPath","referencedDeclaration":168,"src":"9341:31:35"},"id":8451,"nodeType":"InheritanceSpecifier","src":"9341:31:35"},{"baseName":{"id":8452,"name":"IIssuanceAllocationAdministration","nameLocations":["9378:33:35"],"nodeType":"IdentifierPath","referencedDeclaration":130,"src":"9378:33:35"},"id":8453,"nodeType":"InheritanceSpecifier","src":"9378:33:35"},{"baseName":{"id":8454,"name":"IIssuanceAllocationStatus","nameLocations":["9417:25:35"],"nodeType":"IdentifierPath","referencedDeclaration":226,"src":"9417:25:35"},"id":8455,"nodeType":"InheritanceSpecifier","src":"9417:25:35"},{"baseName":{"id":8456,"name":"IIssuanceAllocationData","nameLocations":["9448:23:35"],"nodeType":"IdentifierPath","referencedDeclaration":146,"src":"9448:23:35"},"id":8457,"nodeType":"InheritanceSpecifier","src":"9448:23:35"}],"canonicalName":"IssuanceAllocator","contractDependencies":[],"contractKind":"contract","documentation":{"id":8445,"nodeType":"StructuredDocumentation","src":"1372:7883:35","text":" @title IssuanceAllocator\n @author Edge & Node\n @notice This contract is responsible for allocating token issuance to different components\n of the protocol. It calculates issuance for all targets based on their configured rates\n (tokens per block) and handles minting for allocator-minting targets.\n @dev The contract maintains a 100% allocation invariant through a default target mechanism:\n - A default target exists at targetAddresses[0] (initialized to address(0))\n - The default target automatically receives any unallocated portion of issuance\n - Total allocation across all targets always equals issuancePerBlock (tracked as absolute rates)\n - The default target address can be changed via setDefaultTarget()\n - When the default address is address(0), this 'unallocated' portion is not minted\n - Regular targets cannot be set as the default target address\n @dev The contract supports two types of allocation for each target:\n 1. Allocator-minting allocation: The IssuanceAllocator calculates and mints tokens directly to targets\n    for this portion of their allocation.\n 2. Self-minting allocation: The IssuanceAllocator calculates issuance but does not mint tokens directly.\n    Instead, targets are expected to call `getTargetIssuancePerBlock` to determine their self-minting\n    issuance amount and mint tokens themselves. This feature is primarily intended for backwards\n    compatibility with existing contracts like the RewardsManager.\n Each target can have both allocator-minting and self-minting allocations. New targets are expected\n to use allocator-minting allocation to provide more robust control over token issuance through\n the IssuanceAllocator. The self-minting allocation is intended only for backwards compatibility\n with existing contracts.\n @dev Pause Behavior:\n - Allocator-minting: Completely suspended during pause. No tokens minted, lastDistributionBlock frozen.\n   When unpaused, distributes retroactively using current rates for entire undistributed period. (Distribution will be triggered by calling distributeIssuance() when not paused.)\n - Self-minting: Continues tracking via events and accumulation during pause. Accumulated self-minting\n   reduces allocator-minting budget when distribution resumes, ensuring total issuance conservation.\n - Ongoing accumulation: Once accumulation starts (during pause), continues through any unpaused\n   periods until distribution clears it, preventing loss of self-minting allowances across pause cycles.\n - Tracking divergence: lastSelfMintingBlock advances during pause (for allowance tracking) while\n   lastDistributionBlock stays frozen (no allocator-minting). This is intentional and correct.\n @dev Issuance Accounting Invariants:\n The contract maintains strict accounting to ensure total token issuance never exceeds the configured\n issuancePerBlock rate over any time period. This section provides the mathematical foundation for\n understanding the relationship between self-minting and allocator-minting.\n Key Invariants:\n 1. Allocation Completeness: For all blocks b, totalAllocatorRate_b + totalSelfMintingRate_b = issuancePerBlock_b\n    This ensures 100% of issuance is always allocated across all targets.\n 2. Self-Minting Accumulation: For any undistributed block range [fromBlock, toBlock]:\n    selfMintingOffset = Σ(totalSelfMintingRate_b) for all b in range\n    where totalSelfMintingRate_b is the end-state rate for block b.\n 3. Rate Constraint: For all blocks b, totalSelfMintingRate_b ≤ issuancePerBlock_b\n    This follows from invariant (1) since 0 ≤ totalAllocatorRate_b.\n 4. Issuance Upper Bound: For any distribution period with blocks = toBlock - fromBlock + 1:\n    Let issuancePerBlock_final = current issuancePerBlock at distribution time\n    From invariants (2) and (3):\n      selfMintingOffset ≤ Σ(issuancePerBlock_b)\n    Allocator-minting budget for period:\n      available = max(0, issuancePerBlock_final * blocks - selfMintingOffset)\n    Total minted (self + allocator) for period:\n      ≤ max(selfMintingOffset, issuancePerBlock_final * blocks)\n      ≤ Σ(issuancePerBlock_b)\n    Therefore, total issuance never exceeds the sum of configured rates during the period.\n 5. Offset Reconciliation: During pending distribution, selfMintingOffset is adjusted to account for\n    the period's issuance budget. When distribution catches up to current block, the offset is cleared.\n    Any remaining offset when cleared represents self-minting that occurred beyond what the final\n    issuancePerBlock rate would allow for the period. This is acceptable because:\n    a) Self-minting targets were operating under rates that were valid at the time\n    b) The total minted still respects the Σ(issuancePerBlock_b) bound (invariant 4)\n    c) Clearing the offset prevents it from affecting future distributions\n    d) The SelfMintingOffsetReconciled event provides visibility into all offset adjustments\n This design ensures that even when issuancePerBlock or allocation rates change over time, and even\n when self-minting targets mint independently, the total tokens minted never exceeds the sum of\n configured issuance rates during the period.\n @dev There are a number of scenarios where the IssuanceAllocator could run into issues, including:\n 1. The targetAddresses array could grow large enough that it exceeds the gas limit when calling distributeIssuance.\n 2. When notifying targets of allocation changes the calls to `beforeIssuanceAllocationChange` could exceed the gas limit.\n 3. Target contracts could revert when notifying them of changes via `beforeIssuanceAllocationChange`.\n While in practice the IssuanceAllocator is expected to have a relatively small number of trusted targets, and the\n gas limit is expected to be high enough to handle the above scenarios, the following would allow recovery:\n 1. The contract can be paused, which can help make the recovery process easier to manage.\n 2. The GOVERNOR_ROLE can directly trigger change notification to individual targets. As there is per target\n    tracking of the lastChangeNotifiedBlock, this can reduce the gas cost of other operations and allow\n    for graceful recovery.\n 3. If a target reverts when notifying it of changes or notifying it is too expensive, the GOVERNOR_ROLE can use `forceTargetNoChangeNotificationBlock()`\n    to skip notifying that particular target of changes.\n In combination these should allow recovery from gas limit issues or malfunctioning targets, with fine-grained control over\n which targets are notified of changes and when.\n @dev Reentrancy Protection:\n The contract code is designed to be reentrant-safe and should be carefully reviewed and maintained\n to preserve this property. However, reentrancy guards (using transient storage per EIP-1153) are\n applied to governance functions that modify configuration or state as an additional layer of defense.\n This provides protection against potential issues if the multi-sig governor role were to have known\n signatures that could be exploited by malicious actors to trigger reentrant calls.\n The `distributeIssuance()` function intentionally does NOT have a reentrancy guard to allow\n legitimate use cases where targets call it during notifications (e.g., to claim pending issuance\n before allocation changes). This is safe because distributeIssuance() has built-in block-tracking\n protection (preventing double-distribution in the same block), makes no external calls that could\n expose inconsistent state, and does not modify allocations.\n @custom:security-contact Please email security+contracts@thegraph.com if you find any bugs. We might have an active bug bounty program."},"fullyImplemented":true,"id":10671,"linearizedBaseContracts":[10671,146,226,130,168,2878,10867,319,1520,1046,820,1560,3367,1669,1643,1360,1314],"name":"IssuanceAllocator","nameLocation":"9265:17:35","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":8458,"nodeType":"StructuredDocumentation","src":"9511:59:35","text":"@notice ERC-7201 storage location for IssuanceAllocator"},"id":8482,"mutability":"constant","name":"ISSUANCE_ALLOCATOR_STORAGE_LOCATION","nameLocation":"9600:35:35","nodeType":"VariableDeclaration","scope":10671,"src":"9575:252:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9575:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":8481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"677261706870726f746f636f6c2e73746f726167652e49737375616e6365416c6c6f6361746f72","id":8466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9740:41:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_109cdeb08b6fcb52a0f8a35af1bf023afdacdc6e602b08424b2171d0f4fa3cd5","typeString":"literal_string \"graphprotocol.storage.IssuanceAllocator\""},"value":"graphprotocol.storage.IssuanceAllocator"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_109cdeb08b6fcb52a0f8a35af1bf023afdacdc6e602b08424b2171d0f4fa3cd5","typeString":"literal_string \"graphprotocol.storage.IssuanceAllocator\""}],"id":8465,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9730:9:35","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9730:52:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8464,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9722:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8463,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:35","typeDescriptions":{}}},"id":8468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9722:61:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9786:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9722:65:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8461,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9711:3:35","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9715:6:35","memberName":"encode","nodeType":"MemberAccess","src":"9711:10:35","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9711:77:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8460,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9701:9:35","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9701:88:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":8480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"9804:23:35","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":8477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9821:4:35","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":8476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9813:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8475,"name":"uint256","nodeType":"ElementaryTypeName","src":"9813:7:35","typeDescriptions":{}}},"id":8478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9813:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9805:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":8473,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9805:7:35","typeDescriptions":{}}},"id":8479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9805:22:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9701:126:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"canonicalName":"IssuanceAllocator.IssuanceAllocatorData","documentation":{"id":8483,"nodeType":"StructuredDocumentation","src":"9834:1363:35","text":"@notice Main storage structure for IssuanceAllocator using ERC-7201 namespaced storage\n @param issuancePerBlock Total issuance per block across all targets\n @param lastDistributionBlock Last block when allocator-minting issuance was distributed\n @param lastSelfMintingBlock Last block when self-minting was advanced\n @param selfMintingOffset Self-minting that offsets allocator-minting budget (accumulates during pause, clears on distribution)\n @param allocationTargets Mapping of target addresses to their allocation data\n @param targetAddresses Array of all target addresses (including default target at index 0)\n @param totalSelfMintingRate Total self-minting rate (tokens per block) across all targets\n @param selfMintingEventMode Controls self-minting event emission behavior (PerTarget, Aggregate, or None)\n @dev Design invariant: totalAllocatorRate + totalSelfMintingRate == issuancePerBlock (always 100% allocated)\n @dev Design invariant: targetAddresses[0] is always the default target address\n @dev Design invariant: 1 <= targetAddresses.length (default target always exists)\n @dev Design invariant: default target (targetAddresses[0]) is automatically adjusted to maintain 100% total\n @custom:storage-location erc7201:graphprotocol.storage.IssuanceAllocator"},"id":8505,"members":[{"constant":false,"id":8485,"mutability":"mutable","name":"issuancePerBlock","nameLocation":"11249:16:35","nodeType":"VariableDeclaration","scope":8505,"src":"11241:24:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8484,"name":"uint256","nodeType":"ElementaryTypeName","src":"11241:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8487,"mutability":"mutable","name":"lastDistributionBlock","nameLocation":"11283:21:35","nodeType":"VariableDeclaration","scope":8505,"src":"11275:29:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8486,"name":"uint256","nodeType":"ElementaryTypeName","src":"11275:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8489,"mutability":"mutable","name":"lastSelfMintingBlock","nameLocation":"11322:20:35","nodeType":"VariableDeclaration","scope":8505,"src":"11314:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8488,"name":"uint256","nodeType":"ElementaryTypeName","src":"11314:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8491,"mutability":"mutable","name":"selfMintingOffset","nameLocation":"11360:17:35","nodeType":"VariableDeclaration","scope":8505,"src":"11352:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8490,"name":"uint256","nodeType":"ElementaryTypeName","src":"11352:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8496,"mutability":"mutable","name":"allocationTargets","nameLocation":"11424:17:35","nodeType":"VariableDeclaration","scope":8505,"src":"11387:54:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget)"},"typeName":{"id":8495,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8492,"name":"address","nodeType":"ElementaryTypeName","src":"11395:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"11387:36:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8494,"nodeType":"UserDefinedTypeName","pathNode":{"id":8493,"name":"AllocationTarget","nameLocations":["11406:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"11406:16:35"},"referencedDeclaration":260,"src":"11406:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}}},"visibility":"internal"},{"constant":false,"id":8499,"mutability":"mutable","name":"targetAddresses","nameLocation":"11461:15:35","nodeType":"VariableDeclaration","scope":8505,"src":"11451:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":8497,"name":"address","nodeType":"ElementaryTypeName","src":"11451:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8498,"nodeType":"ArrayTypeName","src":"11451:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":8501,"mutability":"mutable","name":"totalSelfMintingRate","nameLocation":"11494:20:35","nodeType":"VariableDeclaration","scope":8505,"src":"11486:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8500,"name":"uint256","nodeType":"ElementaryTypeName","src":"11486:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8504,"mutability":"mutable","name":"selfMintingEventMode","nameLocation":"11545:20:35","nodeType":"VariableDeclaration","scope":8505,"src":"11524:41:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"typeName":{"id":8503,"nodeType":"UserDefinedTypeName","pathNode":{"id":8502,"name":"SelfMintingEventMode","nameLocations":["11524:20:35"],"nodeType":"IdentifierPath","referencedDeclaration":234,"src":"11524:20:35"},"referencedDeclaration":234,"src":"11524:20:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"visibility":"internal"}],"name":"IssuanceAllocatorData","nameLocation":"11209:21:35","nodeType":"StructDefinition","scope":10671,"src":"11202:370:35","visibility":"public"},{"body":{"id":8517,"nodeType":"Block","src":"11787:298:35","statements":[{"assignments":[8513],"declarations":[{"constant":false,"id":8513,"mutability":"mutable","name":"slot","nameLocation":"11924:4:35","nodeType":"VariableDeclaration","scope":8517,"src":"11916:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8512,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11916:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8515,"initialValue":{"id":8514,"name":"ISSUANCE_ALLOCATOR_STORAGE_LOCATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8482,"src":"11931:35:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11916:50:35"},{"AST":{"nativeSrc":"12041:38:35","nodeType":"YulBlock","src":"12041:38:35","statements":[{"nativeSrc":"12055:14:35","nodeType":"YulAssignment","src":"12055:14:35","value":{"name":"slot","nativeSrc":"12065:4:35","nodeType":"YulIdentifier","src":"12065:4:35"},"variableNames":[{"name":"$.slot","nativeSrc":"12055:6:35","nodeType":"YulIdentifier","src":"12055:6:35"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8510,"isOffset":false,"isSlot":true,"src":"12055:6:35","suffix":"slot","valueSize":1},{"declaration":8513,"isOffset":false,"isSlot":false,"src":"12065:4:35","valueSize":1}],"id":8516,"nodeType":"InlineAssembly","src":"12032:47:35"}]},"documentation":{"id":8506,"nodeType":"StructuredDocumentation","src":"11578:109:35","text":" @notice Returns the storage struct for IssuanceAllocator\n @return $ contract storage"},"id":8518,"implemented":true,"kind":"function","modifiers":[],"name":"_getIssuanceAllocatorStorage","nameLocation":"11701:28:35","nodeType":"FunctionDefinition","parameters":{"id":8507,"nodeType":"ParameterList","parameters":[],"src":"11729:2:35"},"returnParameters":{"id":8511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8510,"mutability":"mutable","name":"$","nameLocation":"11784:1:35","nodeType":"VariableDeclaration","scope":8518,"src":"11754:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":8509,"nodeType":"UserDefinedTypeName","pathNode":{"id":8508,"name":"IssuanceAllocatorData","nameLocations":["11754:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"11754:21:35"},"referencedDeclaration":8505,"src":"11754:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"src":"11753:33:35"},"scope":10671,"src":"11692:393:35","stateMutability":"pure","virtual":false,"visibility":"private"},{"documentation":{"id":8519,"nodeType":"StructuredDocumentation","src":"12119:68:35","text":"@notice Thrown when attempting to add a target with zero address"},"errorSelector":"4549d8f6","id":8521,"name":"TargetAddressCannotBeZero","nameLocation":"12198:25:35","nodeType":"ErrorDefinition","parameters":{"id":8520,"nodeType":"ParameterList","parameters":[],"src":"12223:2:35"},"src":"12192:34:35"},{"documentation":{"id":8522,"nodeType":"StructuredDocumentation","src":"12232:219:35","text":"@notice Thrown when the total allocation would exceed available budget\n @param requested The total requested allocation (allocator + self minting)\n @param available The available budget for this target"},"errorSelector":"2c5261c6","id":8528,"name":"InsufficientAllocationAvailable","nameLocation":"12462:31:35","nodeType":"ErrorDefinition","parameters":{"id":8527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8524,"mutability":"mutable","name":"requested","nameLocation":"12502:9:35","nodeType":"VariableDeclaration","scope":8528,"src":"12494:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8523,"name":"uint256","nodeType":"ElementaryTypeName","src":"12494:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8526,"mutability":"mutable","name":"available","nameLocation":"12521:9:35","nodeType":"VariableDeclaration","scope":8528,"src":"12513:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8525,"name":"uint256","nodeType":"ElementaryTypeName","src":"12513:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12493:38:35"},"src":"12456:76:35"},{"documentation":{"id":8529,"nodeType":"StructuredDocumentation","src":"12538:284:35","text":"@notice Thrown when attempting to decrease issuance rate without sufficient unallocated budget\n @param oldRate The current issuance rate\n @param newRate The proposed new issuance rate\n @param unallocated The unallocated budget available to absorb the decrease"},"errorSelector":"b1087cac","id":8537,"name":"InsufficientUnallocatedForRateDecrease","nameLocation":"12833:38:35","nodeType":"ErrorDefinition","parameters":{"id":8536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8531,"mutability":"mutable","name":"oldRate","nameLocation":"12880:7:35","nodeType":"VariableDeclaration","scope":8537,"src":"12872:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8530,"name":"uint256","nodeType":"ElementaryTypeName","src":"12872:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8533,"mutability":"mutable","name":"newRate","nameLocation":"12897:7:35","nodeType":"VariableDeclaration","scope":8537,"src":"12889:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8532,"name":"uint256","nodeType":"ElementaryTypeName","src":"12889:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8535,"mutability":"mutable","name":"unallocated","nameLocation":"12914:11:35","nodeType":"VariableDeclaration","scope":8537,"src":"12906:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8534,"name":"uint256","nodeType":"ElementaryTypeName","src":"12906:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12871:55:35"},"src":"12827:100:35"},{"documentation":{"id":8538,"nodeType":"StructuredDocumentation","src":"12933:155:35","text":"@notice Thrown when a target does not support the IIssuanceTarget interface\n @param target The target address that doesn't support the interface"},"errorSelector":"a5fe8615","id":8542,"name":"TargetDoesNotSupportIIssuanceTarget","nameLocation":"13099:35:35","nodeType":"ErrorDefinition","parameters":{"id":8541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8540,"mutability":"mutable","name":"target","nameLocation":"13143:6:35","nodeType":"VariableDeclaration","scope":8542,"src":"13135:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8539,"name":"address","nodeType":"ElementaryTypeName","src":"13135:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13134:16:35"},"src":"13093:58:35"},{"documentation":{"id":8543,"nodeType":"StructuredDocumentation","src":"13157:283:35","text":"@notice Thrown when toBlockNumber is out of valid range for accumulation\n @param toBlock The invalid block number provided\n @param minBlock The minimum valid block number (lastDistributionBlock)\n @param maxBlock The maximum valid block number (current block)"},"errorSelector":"a0d2b9db","id":8551,"name":"ToBlockOutOfRange","nameLocation":"13451:17:35","nodeType":"ErrorDefinition","parameters":{"id":8550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8545,"mutability":"mutable","name":"toBlock","nameLocation":"13477:7:35","nodeType":"VariableDeclaration","scope":8551,"src":"13469:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8544,"name":"uint256","nodeType":"ElementaryTypeName","src":"13469:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8547,"mutability":"mutable","name":"minBlock","nameLocation":"13494:8:35","nodeType":"VariableDeclaration","scope":8551,"src":"13486:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8546,"name":"uint256","nodeType":"ElementaryTypeName","src":"13486:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8549,"mutability":"mutable","name":"maxBlock","nameLocation":"13512:8:35","nodeType":"VariableDeclaration","scope":8551,"src":"13504:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8548,"name":"uint256","nodeType":"ElementaryTypeName","src":"13504:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13468:53:35"},"src":"13445:77:35"},{"documentation":{"id":8552,"nodeType":"StructuredDocumentation","src":"13528:138:35","text":"@notice Thrown when attempting to set allocation for the default target\n @param defaultTarget The address of the default target"},"errorSelector":"fda6c187","id":8556,"name":"CannotSetAllocationForDefaultTarget","nameLocation":"13677:35:35","nodeType":"ErrorDefinition","parameters":{"id":8555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8554,"mutability":"mutable","name":"defaultTarget","nameLocation":"13721:13:35","nodeType":"VariableDeclaration","scope":8556,"src":"13713:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8553,"name":"address","nodeType":"ElementaryTypeName","src":"13713:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13712:23:35"},"src":"13671:65:35"},{"documentation":{"id":8557,"nodeType":"StructuredDocumentation","src":"13742:167:35","text":"@notice Thrown when attempting to set default target address to a normally allocated target\n @param target The target address that already has an allocation"},"errorSelector":"f158185d","id":8561,"name":"CannotSetDefaultToAllocatedTarget","nameLocation":"13920:33:35","nodeType":"ErrorDefinition","parameters":{"id":8560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8559,"mutability":"mutable","name":"target","nameLocation":"13962:6:35","nodeType":"VariableDeclaration","scope":8561,"src":"13954:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8558,"name":"address","nodeType":"ElementaryTypeName","src":"13954:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13953:16:35"},"src":"13914:56:35"},{"anonymous":false,"documentation":{"id":8562,"nodeType":"StructuredDocumentation","src":"13997:372:35","text":"@notice Emitted when issuance is distributed to a target\n @param target The address of the target that received issuance\n @param amount The amount of tokens distributed\n @param fromBlock First block included in this distribution (inclusive)\n @param toBlock Last block included in this distribution (inclusive). Range is [fromBlock, toBlock]"},"eventSelector":"0c56d855d8df534c916b78eac3522e5fafd59f48799c4a97d42e80f6e0898960","id":8572,"name":"IssuanceDistributed","nameLocation":"14380:19:35","nodeType":"EventDefinition","parameters":{"id":8571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8564,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"14425:6:35","nodeType":"VariableDeclaration","scope":8572,"src":"14409:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8563,"name":"address","nodeType":"ElementaryTypeName","src":"14409:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8566,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"14449:6:35","nodeType":"VariableDeclaration","scope":8572,"src":"14441:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8565,"name":"uint256","nodeType":"ElementaryTypeName","src":"14441:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8568,"indexed":true,"mutability":"mutable","name":"fromBlock","nameLocation":"14481:9:35","nodeType":"VariableDeclaration","scope":8572,"src":"14465:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8567,"name":"uint256","nodeType":"ElementaryTypeName","src":"14465:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8570,"indexed":true,"mutability":"mutable","name":"toBlock","nameLocation":"14516:7:35","nodeType":"VariableDeclaration","scope":8572,"src":"14500:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8569,"name":"uint256","nodeType":"ElementaryTypeName","src":"14500:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14399:130:35"},"src":"14374:156:35"},{"anonymous":false,"documentation":{"id":8573,"nodeType":"StructuredDocumentation","src":"14579:332:35","text":"@notice Emitted when a target's allocation is updated\n @param target The address of the target whose allocation was updated\n @param newAllocatorMintingRate The new allocator-minting rate (tokens per block) for the target\n @param newSelfMintingRate The new self-minting rate (tokens per block) for the target"},"eventSelector":"1bd3f0d2f1001a856d81215ceb86c548bdbc3bf52480a08978f8c3ea6e2bd421","id":8581,"name":"TargetAllocationUpdated","nameLocation":"14922:23:35","nodeType":"EventDefinition","parameters":{"id":8580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8575,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"14962:6:35","nodeType":"VariableDeclaration","scope":8581,"src":"14946:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8574,"name":"address","nodeType":"ElementaryTypeName","src":"14946:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8577,"indexed":false,"mutability":"mutable","name":"newAllocatorMintingRate","nameLocation":"14978:23:35","nodeType":"VariableDeclaration","scope":8581,"src":"14970:31:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8576,"name":"uint256","nodeType":"ElementaryTypeName","src":"14970:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8579,"indexed":false,"mutability":"mutable","name":"newSelfMintingRate","nameLocation":"15011:18:35","nodeType":"VariableDeclaration","scope":8581,"src":"15003:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8578,"name":"uint256","nodeType":"ElementaryTypeName","src":"15003:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14945:85:35"},"src":"14916:115:35"},{"anonymous":false,"documentation":{"id":8582,"nodeType":"StructuredDocumentation","src":"15120:201:35","text":"@notice Emitted when the issuance per block is updated\n @param oldIssuancePerBlock The previous issuance per block amount\n @param newIssuancePerBlock The new issuance per block amount"},"eventSelector":"2925be3e6d4b2cbcec6c06d5060fb3b53f160410555e45ee0a1f6dc7ae9b24c0","id":8588,"name":"IssuancePerBlockUpdated","nameLocation":"15332:23:35","nodeType":"EventDefinition","parameters":{"id":8587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8584,"indexed":false,"mutability":"mutable","name":"oldIssuancePerBlock","nameLocation":"15364:19:35","nodeType":"VariableDeclaration","scope":8588,"src":"15356:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8583,"name":"uint256","nodeType":"ElementaryTypeName","src":"15356:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8586,"indexed":false,"mutability":"mutable","name":"newIssuancePerBlock","nameLocation":"15393:19:35","nodeType":"VariableDeclaration","scope":8588,"src":"15385:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8585,"name":"uint256","nodeType":"ElementaryTypeName","src":"15385:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15355:58:35"},"src":"15326:88:35"},{"anonymous":false,"documentation":{"id":8589,"nodeType":"StructuredDocumentation","src":"15517:173:35","text":"@notice Emitted when the default target is updated\n @param oldAddress The previous default target address\n @param newAddress The new default target address"},"eventSelector":"00f06471e88e0bc1db6b6126efdb09f80b597e6ddc145ff0dcabd12afab4ec57","id":8595,"name":"DefaultTargetUpdated","nameLocation":"15701:20:35","nodeType":"EventDefinition","parameters":{"id":8594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8591,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"15738:10:35","nodeType":"VariableDeclaration","scope":8595,"src":"15722:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8590,"name":"address","nodeType":"ElementaryTypeName","src":"15722:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8593,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"15766:10:35","nodeType":"VariableDeclaration","scope":8595,"src":"15750:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8592,"name":"address","nodeType":"ElementaryTypeName","src":"15750:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15721:56:35"},"src":"15695:83:35"},{"anonymous":false,"documentation":{"id":8596,"nodeType":"StructuredDocumentation","src":"15784:415:35","text":"@notice Emitted when self-minting allowance is calculated for a target\n @param target The address of the target with self-minting allocation\n @param amount The amount of tokens available for self-minting\n @param fromBlock First block included in this allowance period (inclusive)\n @param toBlock Last block included in this allowance period (inclusive). Range is [fromBlock, toBlock]"},"eventSelector":"a34db09d4126dd8dcd1d29f3df65c01dcac405127546e380add77fedca459ba7","id":8606,"name":"IssuanceSelfMintAllowance","nameLocation":"16210:25:35","nodeType":"EventDefinition","parameters":{"id":8605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8598,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"16261:6:35","nodeType":"VariableDeclaration","scope":8606,"src":"16245:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8597,"name":"address","nodeType":"ElementaryTypeName","src":"16245:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8600,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"16285:6:35","nodeType":"VariableDeclaration","scope":8606,"src":"16277:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8599,"name":"uint256","nodeType":"ElementaryTypeName","src":"16277:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8602,"indexed":true,"mutability":"mutable","name":"fromBlock","nameLocation":"16317:9:35","nodeType":"VariableDeclaration","scope":8606,"src":"16301:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8601,"name":"uint256","nodeType":"ElementaryTypeName","src":"16301:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8604,"indexed":true,"mutability":"mutable","name":"toBlock","nameLocation":"16352:7:35","nodeType":"VariableDeclaration","scope":8606,"src":"16336:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8603,"name":"uint256","nodeType":"ElementaryTypeName","src":"16336:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16235:130:35"},"src":"16204:162:35"},{"anonymous":false,"documentation":{"id":8607,"nodeType":"StructuredDocumentation","src":"16460:859:35","text":"@notice Emitted when self-minting offset is reconciled during pending distribution\n @param offsetBefore The self-minting offset before reconciliation\n @param offsetAfter The self-minting offset after reconciliation (0 when caught up to current block)\n @param totalForPeriod The total issuance budget for the distributed period\n @param fromBlock First block in the distribution period (inclusive)\n @param toBlock Last block in the distribution period (inclusive)\n @dev This event provides visibility into the accounting reconciliation between self-minting\n and allocator-minting budgets during pending distribution. When offsetAfter is 0, the contract\n has fully caught up with distribution. When offsetAfter > 0, there remains accumulated offset\n that will be applied to future distributions."},"eventSelector":"1a45018bdab6039c806fac73d617b3bc5c6a2a0f22f6f90d2ca202b083087f99","id":8619,"name":"SelfMintingOffsetReconciled","nameLocation":"17330:27:35","nodeType":"EventDefinition","parameters":{"id":8618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8609,"indexed":false,"mutability":"mutable","name":"offsetBefore","nameLocation":"17375:12:35","nodeType":"VariableDeclaration","scope":8619,"src":"17367:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8608,"name":"uint256","nodeType":"ElementaryTypeName","src":"17367:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8611,"indexed":false,"mutability":"mutable","name":"offsetAfter","nameLocation":"17405:11:35","nodeType":"VariableDeclaration","scope":8619,"src":"17397:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8610,"name":"uint256","nodeType":"ElementaryTypeName","src":"17397:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8613,"indexed":false,"mutability":"mutable","name":"totalForPeriod","nameLocation":"17434:14:35","nodeType":"VariableDeclaration","scope":8619,"src":"17426:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8612,"name":"uint256","nodeType":"ElementaryTypeName","src":"17426:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8615,"indexed":true,"mutability":"mutable","name":"fromBlock","nameLocation":"17474:9:35","nodeType":"VariableDeclaration","scope":8619,"src":"17458:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8614,"name":"uint256","nodeType":"ElementaryTypeName","src":"17458:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8617,"indexed":true,"mutability":"mutable","name":"toBlock","nameLocation":"17509:7:35","nodeType":"VariableDeclaration","scope":8619,"src":"17493:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8616,"name":"uint256","nodeType":"ElementaryTypeName","src":"17493:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17357:165:35"},"src":"17324:199:35"},{"anonymous":false,"documentation":{"id":8620,"nodeType":"StructuredDocumentation","src":"17618:603:35","text":"@notice Emitted when self-minting offset accumulates during pause or catch-up\n @param offsetBefore The self-minting offset before accumulation\n @param offsetAfter The self-minting offset after accumulation\n @param fromBlock First block in the accumulation period (inclusive)\n @param toBlock Last block in the accumulation period (inclusive)\n @dev This event provides visibility into offset growth during pause periods or while catching up\n after unpause. Together with SelfMintingOffsetReconciled, provides complete accounting of all\n offset changes."},"eventSelector":"0539ce444a515b8aa8769802297761fbec80b5b543c617714bf5e0611cf669db","id":8630,"name":"SelfMintingOffsetAccumulated","nameLocation":"18232:28:35","nodeType":"EventDefinition","parameters":{"id":8629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8622,"indexed":false,"mutability":"mutable","name":"offsetBefore","nameLocation":"18278:12:35","nodeType":"VariableDeclaration","scope":8630,"src":"18270:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8621,"name":"uint256","nodeType":"ElementaryTypeName","src":"18270:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8624,"indexed":false,"mutability":"mutable","name":"offsetAfter","nameLocation":"18308:11:35","nodeType":"VariableDeclaration","scope":8630,"src":"18300:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8623,"name":"uint256","nodeType":"ElementaryTypeName","src":"18300:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8626,"indexed":true,"mutability":"mutable","name":"fromBlock","nameLocation":"18345:9:35","nodeType":"VariableDeclaration","scope":8630,"src":"18329:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8625,"name":"uint256","nodeType":"ElementaryTypeName","src":"18329:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8628,"indexed":true,"mutability":"mutable","name":"toBlock","nameLocation":"18380:7:35","nodeType":"VariableDeclaration","scope":8630,"src":"18364:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8627,"name":"uint256","nodeType":"ElementaryTypeName","src":"18364:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18260:133:35"},"src":"18226:168:35"},{"anonymous":false,"documentation":{"id":8631,"nodeType":"StructuredDocumentation","src":"18444:499:35","text":"@notice Emitted when self-minting allowance is calculated in aggregate mode\n @param totalAmount The total amount of tokens available for self-minting across all targets\n @param fromBlock First block included in this allowance period (inclusive)\n @param toBlock Last block included in this allowance period (inclusive)\n @dev This event is emitted when selfMintingEventMode is Aggregate, providing a single event\n instead of per-target events to reduce gas costs"},"eventSelector":"cef44ce1a1fc7ca1f3078daf79d3b60646d0e751bc72a69bff12f66c4aef3b8d","id":8639,"name":"IssuanceSelfMintAllowanceAggregate","nameLocation":"18954:34:35","nodeType":"EventDefinition","parameters":{"id":8638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8633,"indexed":false,"mutability":"mutable","name":"totalAmount","nameLocation":"18997:11:35","nodeType":"VariableDeclaration","scope":8639,"src":"18989:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8632,"name":"uint256","nodeType":"ElementaryTypeName","src":"18989:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8635,"indexed":true,"mutability":"mutable","name":"fromBlock","nameLocation":"19026:9:35","nodeType":"VariableDeclaration","scope":8639,"src":"19010:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8634,"name":"uint256","nodeType":"ElementaryTypeName","src":"19010:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8637,"indexed":true,"mutability":"mutable","name":"toBlock","nameLocation":"19053:7:35","nodeType":"VariableDeclaration","scope":8639,"src":"19037:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8636,"name":"uint256","nodeType":"ElementaryTypeName","src":"19037:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18988:73:35"},"src":"18948:114:35"},{"anonymous":false,"documentation":{"id":8640,"nodeType":"StructuredDocumentation","src":"19111:166:35","text":"@notice Emitted when self-minting event mode is changed\n @param oldMode The previous event emission mode\n @param newMode The new event emission mode"},"eventSelector":"3f59746e46bfb9af931035055d53b82d1b70968466065162b7dbf8e998aee629","id":8648,"name":"SelfMintingEventModeUpdated","nameLocation":"19288:27:35","nodeType":"EventDefinition","parameters":{"id":8647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8643,"indexed":false,"mutability":"mutable","name":"oldMode","nameLocation":"19337:7:35","nodeType":"VariableDeclaration","scope":8648,"src":"19316:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"typeName":{"id":8642,"nodeType":"UserDefinedTypeName","pathNode":{"id":8641,"name":"SelfMintingEventMode","nameLocations":["19316:20:35"],"nodeType":"IdentifierPath","referencedDeclaration":234,"src":"19316:20:35"},"referencedDeclaration":234,"src":"19316:20:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"visibility":"internal"},{"constant":false,"id":8646,"indexed":false,"mutability":"mutable","name":"newMode","nameLocation":"19367:7:35","nodeType":"VariableDeclaration","scope":8648,"src":"19346:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"typeName":{"id":8645,"nodeType":"UserDefinedTypeName","pathNode":{"id":8644,"name":"SelfMintingEventMode","nameLocations":["19346:20:35"],"nodeType":"IdentifierPath","referencedDeclaration":234,"src":"19346:20:35"},"referencedDeclaration":234,"src":"19346:20:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"visibility":"internal"}],"src":"19315:60:35"},"src":"19282:94:35"},{"body":{"id":8657,"nodeType":"Block","src":"19792:2:35","statements":[]},"documentation":{"id":8649,"nodeType":"StructuredDocumentation","src":"19408:317:35","text":" @notice Constructor for the IssuanceAllocator contract\n @dev This contract is upgradeable, but we use the constructor to pass the Graph Token address\n to the base contract.\n @param _graphToken Address of the Graph Token contract\n @custom:oz-upgrades-unsafe-allow constructor"},"id":8658,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8654,"name":"_graphToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8651,"src":"19779:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":8655,"kind":"baseConstructorSpecifier","modifierName":{"id":8653,"name":"BaseUpgradeable","nameLocations":["19763:15:35"],"nodeType":"IdentifierPath","referencedDeclaration":10867,"src":"19763:15:35"},"nodeType":"ModifierInvocation","src":"19763:28:35"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8651,"mutability":"mutable","name":"_graphToken","nameLocation":"19750:11:35","nodeType":"VariableDeclaration","scope":8658,"src":"19742:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8650,"name":"address","nodeType":"ElementaryTypeName","src":"19742:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19741:21:35"},"returnParameters":{"id":8656,"nodeType":"ParameterList","parameters":[],"src":"19792:0:35"},"scope":10671,"src":"19730:64:35","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8701,"nodeType":"Block","src":"20642:689:35","statements":[{"expression":{"arguments":[{"id":8667,"name":"_governor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"20675:9:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8666,"name":"__BaseUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10768,"src":"20652:22:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20652:33:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8669,"nodeType":"ExpressionStatement","src":"20652:33:35"},{"assignments":[8672],"declarations":[{"constant":false,"id":8672,"mutability":"mutable","name":"$","nameLocation":"20726:1:35","nodeType":"VariableDeclaration","scope":8701,"src":"20696:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":8671,"nodeType":"UserDefinedTypeName","pathNode":{"id":8670,"name":"IssuanceAllocatorData","nameLocations":["20696:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"20696:21:35"},"referencedDeclaration":8505,"src":"20696:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":8675,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8673,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"20730:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":8674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20730:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"20696:64:35"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":8683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20952:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20944:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8681,"name":"address","nodeType":"ElementaryTypeName","src":"20944:7:35","typeDescriptions":{}}},"id":8684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20944:10:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":8676,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8672,"src":"20921:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20923:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"20921:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20939:4:35","memberName":"push","nodeType":"MemberAccess","src":"20921:22:35","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":8685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20921:34:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8686,"nodeType":"ExpressionStatement","src":"20921:34:35"},{"expression":{"id":8692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8687,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8672,"src":"20966:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20968:20:35","memberName":"selfMintingEventMode","nodeType":"MemberAccess","referencedDeclaration":8504,"src":"20966:22:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8690,"name":"SelfMintingEventMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"20991:20:35","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SelfMintingEventMode_$234_$","typeString":"type(enum SelfMintingEventMode)"}},"id":8691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21012:9:35","memberName":"PerTarget","nodeType":"MemberAccess","referencedDeclaration":233,"src":"20991:30:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"src":"20966:55:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"id":8693,"nodeType":"ExpressionStatement","src":"20966:55:35"},{"expression":{"id":8699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8694,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8672,"src":"21286:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21288:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"21286:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8697,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"21312:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21318:6:35","memberName":"number","nodeType":"MemberAccess","src":"21312:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21286:38:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8700,"nodeType":"ExpressionStatement","src":"21286:38:35"}]},"documentation":{"id":8659,"nodeType":"StructuredDocumentation","src":"19829:740:35","text":" @notice Initialize the IssuanceAllocator contract\n @param _governor Address that will have the GOVERNOR_ROLE\n @dev Initializes with a default target at index 0 set to address(0)\n @dev Default target will receive all unallocated issuance (initially 0 until rate is set)\n @dev lastDistributionBlock is set to block.number as a safety guard against pausing before\n configuration. lastSelfMintingBlock defaults to 0. issuancePerBlock is 0. Once\n setIssuancePerBlock() is called, it triggers _distributeIssuance() which updates\n lastDistributionBlock to current block, establishing the starting point for issuance tracking.\n @dev selfMintingEventMode is initialized to PerTarget"},"functionSelector":"c4d66de8","id":8702,"implemented":true,"kind":"function","modifiers":[{"id":8664,"kind":"modifierInvocation","modifierName":{"id":8663,"name":"initializer","nameLocations":["20630:11:35"],"nodeType":"IdentifierPath","referencedDeclaration":1154,"src":"20630:11:35"},"nodeType":"ModifierInvocation","src":"20630:11:35"}],"name":"initialize","nameLocation":"20583:10:35","nodeType":"FunctionDefinition","parameters":{"id":8662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8661,"mutability":"mutable","name":"_governor","nameLocation":"20602:9:35","nodeType":"VariableDeclaration","scope":8702,"src":"20594:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8660,"name":"address","nodeType":"ElementaryTypeName","src":"20594:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20593:19:35"},"returnParameters":{"id":8665,"nodeType":"ParameterList","parameters":[],"src":"20642:0:35"},"scope":10671,"src":"20574:757:35","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[10866],"body":{"id":8744,"nodeType":"Block","src":"21577:380:35","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8711,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8705,"src":"21606:11:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":8713,"name":"IIssuanceAllocationDistribution","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"21626:31:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationDistribution_$168_$","typeString":"type(contract IIssuanceAllocationDistribution)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationDistribution_$168_$","typeString":"type(contract IIssuanceAllocationDistribution)"}],"id":8712,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"21621:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21621:37:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IIssuanceAllocationDistribution_$168","typeString":"type(contract IIssuanceAllocationDistribution)"}},"id":8715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21659:11:35","memberName":"interfaceId","nodeType":"MemberAccess","src":"21621:49:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"21606:64:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8717,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8705,"src":"21686:11:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":8719,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"21706:33:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}],"id":8718,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"21701:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21701:39:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IIssuanceAllocationAdministration_$130","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":8721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21741:11:35","memberName":"interfaceId","nodeType":"MemberAccess","src":"21701:51:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"21686:66:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21606:146:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8724,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8705,"src":"21768:11:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":8726,"name":"IIssuanceAllocationStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"21788:25:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationStatus_$226_$","typeString":"type(contract IIssuanceAllocationStatus)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationStatus_$226_$","typeString":"type(contract IIssuanceAllocationStatus)"}],"id":8725,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"21783:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21783:31:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IIssuanceAllocationStatus_$226","typeString":"type(contract IIssuanceAllocationStatus)"}},"id":8728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21815:11:35","memberName":"interfaceId","nodeType":"MemberAccess","src":"21783:43:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"21768:58:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21606:220:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8731,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8705,"src":"21842:11:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":8733,"name":"IIssuanceAllocationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"21862:23:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationData_$146_$","typeString":"type(contract IIssuanceAllocationData)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationData_$146_$","typeString":"type(contract IIssuanceAllocationData)"}],"id":8732,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"21857:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21857:29:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IIssuanceAllocationData_$146","typeString":"type(contract IIssuanceAllocationData)"}},"id":8735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21887:11:35","memberName":"interfaceId","nodeType":"MemberAccess","src":"21857:41:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"21842:56:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21606:292:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":8740,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8705,"src":"21938:11:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":8738,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"21914:5:35","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_IssuanceAllocator_$10671_$","typeString":"type(contract super IssuanceAllocator)"}},"id":8739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21920:17:35","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":10866,"src":"21914:23:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":8741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21914:36:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21606:344:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8710,"id":8743,"nodeType":"Return","src":"21587:363:35"}]},"documentation":{"id":8703,"nodeType":"StructuredDocumentation","src":"21370:111:35","text":" @inheritdoc ERC165Upgradeable\n @dev Supports the four IssuanceAllocator sub-interfaces"},"functionSelector":"01ffc9a7","id":8745,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"21495:17:35","nodeType":"FunctionDefinition","overrides":{"id":8707,"nodeType":"OverrideSpecifier","overrides":[],"src":"21553:8:35"},"parameters":{"id":8706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8705,"mutability":"mutable","name":"interfaceId","nameLocation":"21520:11:35","nodeType":"VariableDeclaration","scope":8745,"src":"21513:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8704,"name":"bytes4","nodeType":"ElementaryTypeName","src":"21513:6:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"21512:20:35"},"returnParameters":{"id":8710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8745,"src":"21571:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8708,"name":"bool","nodeType":"ElementaryTypeName","src":"21571:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21570:6:35"},"scope":10671,"src":"21486:471:35","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[158],"body":{"id":8769,"nodeType":"Block","src":"23760:385:35","statements":[{"assignments":[8754],"declarations":[{"constant":false,"id":8754,"mutability":"mutable","name":"$","nameLocation":"23800:1:35","nodeType":"VariableDeclaration","scope":8769,"src":"23770:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":8753,"nodeType":"UserDefinedTypeName","pathNode":{"id":8752,"name":"IssuanceAllocatorData","nameLocations":["23770:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"23770:21:35"},"referencedDeclaration":8505,"src":"23770:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":8757,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8755,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"23804:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":8756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23804:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"23770:64:35"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8758,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8754,"src":"24060:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24062:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"24060:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8760,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24087:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24093:6:35","memberName":"number","nodeType":"MemberAccess","src":"24087:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24060:39:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8765,"name":"_distributeIssuance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8967,"src":"24117:19:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":8766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24117:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24060:78:35","trueExpression":{"expression":{"id":8763,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24102:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24108:6:35","memberName":"number","nodeType":"MemberAccess","src":"24102:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8751,"id":8768,"nodeType":"Return","src":"24053:85:35"}]},"documentation":{"id":8746,"nodeType":"StructuredDocumentation","src":"21963:1726:35","text":" @inheritdoc IIssuanceAllocationDistribution\n @dev Implementation details:\n - For allocator-minting targets, tokens are minted and transferred directly to targets based on their allocation rate\n - For self-minting targets (like the legacy RewardsManager), it does not mint tokens directly. Instead, these contracts are expected to handle minting themselves\n - The self-minting allocation is intended only for backwards compatibility with existing contracts and should not be used for new targets. New targets should use allocator-minting allocation to ensure robust control of token issuance by the IssuanceAllocator\n @dev Pause behavior:\n - When paused: Self-minting allowances tracked via events/accumulation, but no allocator-minting tokens distributed.\n   Returns lastDistributionBlock (frozen at pause point). lastSelfMintingBlock advances to current block.\n - When unpaused: Normal distribution if no accumulated self-minting, otherwise retroactive distribution\n   using current rates for entire undistributed period, with accumulated self-minting reducing allocator budget.\n - Unless paused, always advances lastDistributionBlock to block.number, even if no issuance to distribute.\n @dev Reentrancy: This function intentionally does NOT have a reentrancy guard to allow targets to\n legitimately call it during notifications (e.g., to claim pending issuance before their allocation changes).\n This is safe because the function has built-in block-tracking protection that prevents double-distribution\n within the same block, makes no external calls that could expose inconsistent state, and does not modify allocations."},"functionSelector":"49bdfcb0","id":8770,"implemented":true,"kind":"function","modifiers":[],"name":"distributeIssuance","nameLocation":"23703:18:35","nodeType":"FunctionDefinition","overrides":{"id":8748,"nodeType":"OverrideSpecifier","overrides":[],"src":"23733:8:35"},"parameters":{"id":8747,"nodeType":"ParameterList","parameters":[],"src":"23721:2:35"},"returnParameters":{"id":8751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8770,"src":"23751:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8749,"name":"uint256","nodeType":"ElementaryTypeName","src":"23751:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23750:9:35"},"scope":10671,"src":"23694:451:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8932,"nodeType":"Block","src":"24703:2251:35","statements":[{"assignments":[8776],"declarations":[{"constant":false,"id":8776,"mutability":"mutable","name":"$","nameLocation":"24743:1:35","nodeType":"VariableDeclaration","scope":8932,"src":"24713:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":8775,"nodeType":"UserDefinedTypeName","pathNode":{"id":8774,"name":"IssuanceAllocatorData","nameLocations":["24713:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"24713:21:35"},"referencedDeclaration":8505,"src":"24713:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":8779,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8777,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"24747:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":8778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24747:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"24713:64:35"},{"assignments":[8781],"declarations":[{"constant":false,"id":8781,"mutability":"mutable","name":"previousBlock","nameLocation":"24796:13:35","nodeType":"VariableDeclaration","scope":8932,"src":"24788:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8780,"name":"uint256","nodeType":"ElementaryTypeName","src":"24788:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8784,"initialValue":{"expression":{"id":8782,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"24812:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24814:20:35","memberName":"lastSelfMintingBlock","nodeType":"MemberAccess","referencedDeclaration":8489,"src":"24812:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24788:46:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8785,"name":"previousBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8781,"src":"24848:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8786,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24865:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24871:6:35","memberName":"number","nodeType":"MemberAccess","src":"24865:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24848:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8790,"nodeType":"IfStatement","src":"24844:42:35","trueBody":{"functionReturnParameters":8773,"id":8789,"nodeType":"Return","src":"24879:7:35"}},{"assignments":[8792],"declarations":[{"constant":false,"id":8792,"mutability":"mutable","name":"blocks","nameLocation":"24904:6:35","nodeType":"VariableDeclaration","scope":8932,"src":"24896:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8791,"name":"uint256","nodeType":"ElementaryTypeName","src":"24896:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8797,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8793,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24913:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24919:6:35","memberName":"number","nodeType":"MemberAccess","src":"24913:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8795,"name":"previousBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8781,"src":"24928:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24913:28:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24896:45:35"},{"assignments":[8799],"declarations":[{"constant":false,"id":8799,"mutability":"mutable","name":"fromBlock","nameLocation":"24959:9:35","nodeType":"VariableDeclaration","scope":8932,"src":"24951:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8798,"name":"uint256","nodeType":"ElementaryTypeName","src":"24951:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8803,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8800,"name":"previousBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8781,"src":"24971:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":8801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24987:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24971:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24951:37:35"},{"assignments":[8805],"declarations":[{"constant":false,"id":8805,"mutability":"mutable","name":"offsetBefore","nameLocation":"25356:12:35","nodeType":"VariableDeclaration","scope":8932,"src":"25348:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8804,"name":"uint256","nodeType":"ElementaryTypeName","src":"25348:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8808,"initialValue":{"expression":{"id":8806,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"25371:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8807,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25373:17:35","memberName":"selfMintingOffset","nodeType":"MemberAccess","referencedDeclaration":8491,"src":"25371:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25348:42:35"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8809,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[10844],"referencedDeclaration":10844,"src":"25404:6:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":8810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25404:8:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":8811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25416:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8812,"name":"offsetBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8805,"src":"25420:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25416:16:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25404:28:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8840,"nodeType":"IfStatement","src":"25400:357:35","trueBody":{"id":8839,"nodeType":"Block","src":"25434:323:35","statements":[{"expression":{"id":8822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8815,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"25448:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"25450:17:35","memberName":"selfMintingOffset","nodeType":"MemberAccess","referencedDeclaration":8491,"src":"25448:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8818,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"25471:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25473:20:35","memberName":"totalSelfMintingRate","nodeType":"MemberAccess","referencedDeclaration":8501,"src":"25471:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8820,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"25496:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25471:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25448:54:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8823,"nodeType":"ExpressionStatement","src":"25448:54:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8824,"name":"offsetBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8805,"src":"25584:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":8825,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"25600:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25602:17:35","memberName":"selfMintingOffset","nodeType":"MemberAccess","referencedDeclaration":8491,"src":"25600:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25584:35:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8838,"nodeType":"IfStatement","src":"25580:167:35","trueBody":{"id":8837,"nodeType":"Block","src":"25621:126:35","statements":[{"eventCall":{"arguments":[{"id":8829,"name":"offsetBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8805,"src":"25673:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8830,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"25687:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25689:17:35","memberName":"selfMintingOffset","nodeType":"MemberAccess","referencedDeclaration":8491,"src":"25687:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8832,"name":"fromBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"25708:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8833,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"25719:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25725:6:35","memberName":"number","nodeType":"MemberAccess","src":"25719:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8828,"name":"SelfMintingOffsetAccumulated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"25644:28:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":8835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25644:88:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8836,"nodeType":"EmitStatement","src":"25639:93:35"}]}}]}},{"expression":{"id":8846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":8841,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"25766:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"25768:20:35","memberName":"lastSelfMintingBlock","nodeType":"MemberAccess","referencedDeclaration":8489,"src":"25766:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8844,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"25791:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25797:6:35","memberName":"number","nodeType":"MemberAccess","src":"25791:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25766:37:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8847,"nodeType":"ExpressionStatement","src":"25766:37:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":8848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25878:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8849,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"25882:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8850,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25884:20:35","memberName":"totalSelfMintingRate","nodeType":"MemberAccess","referencedDeclaration":8501,"src":"25882:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25878:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8931,"nodeType":"IfStatement","src":"25874:1074:35","trueBody":{"id":8930,"nodeType":"Block","src":"25906:1042:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"id":8856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8852,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"25924:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25926:20:35","memberName":"selfMintingEventMode","nodeType":"MemberAccess","referencedDeclaration":8504,"src":"25924:22:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8854,"name":"SelfMintingEventMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"25950:20:35","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SelfMintingEventMode_$234_$","typeString":"type(enum SelfMintingEventMode)"}},"id":8855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25971:9:35","memberName":"PerTarget","nodeType":"MemberAccess","referencedDeclaration":233,"src":"25950:30:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"src":"25924:56:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"id":8912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8908,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"26561:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26563:20:35","memberName":"selfMintingEventMode","nodeType":"MemberAccess","referencedDeclaration":8504,"src":"26561:22:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8910,"name":"SelfMintingEventMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"26587:20:35","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SelfMintingEventMode_$234_$","typeString":"type(enum SelfMintingEventMode)"}},"id":8911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26608:9:35","memberName":"Aggregate","nodeType":"MemberAccess","referencedDeclaration":232,"src":"26587:30:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"src":"26561:56:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8928,"nodeType":"IfStatement","src":"26557:308:35","trueBody":{"id":8927,"nodeType":"Block","src":"26619:246:35","statements":[{"assignments":[8914],"declarations":[{"constant":false,"id":8914,"mutability":"mutable","name":"totalAmount","nameLocation":"26710:11:35","nodeType":"VariableDeclaration","scope":8927,"src":"26702:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8913,"name":"uint256","nodeType":"ElementaryTypeName","src":"26702:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8919,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8915,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"26724:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8916,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26726:20:35","memberName":"totalSelfMintingRate","nodeType":"MemberAccess","referencedDeclaration":8501,"src":"26724:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8917,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"26749:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26724:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26702:53:35"},{"eventCall":{"arguments":[{"id":8921,"name":"totalAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8914,"src":"26813:11:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8922,"name":"fromBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"26826:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8923,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26837:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26843:6:35","memberName":"number","nodeType":"MemberAccess","src":"26837:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8920,"name":"IssuanceSelfMintAllowanceAggregate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8639,"src":"26778:34:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":8925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26778:72:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8926,"nodeType":"EmitStatement","src":"26773:77:35"}]}},"id":8929,"nodeType":"IfStatement","src":"25920:945:35","trueBody":{"id":8907,"nodeType":"Block","src":"25982:569:35","statements":[{"body":{"id":8905,"nodeType":"Block","src":"26116:421:35","statements":[{"assignments":[8870],"declarations":[{"constant":false,"id":8870,"mutability":"mutable","name":"target","nameLocation":"26146:6:35","nodeType":"VariableDeclaration","scope":8905,"src":"26138:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8869,"name":"address","nodeType":"ElementaryTypeName","src":"26138:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8875,"initialValue":{"baseExpression":{"expression":{"id":8871,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"26155:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8872,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26157:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"26155:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8874,"indexExpression":{"id":8873,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"26173:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26155:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"26138:37:35"},{"assignments":[8878],"declarations":[{"constant":false,"id":8878,"mutability":"mutable","name":"targetData","nameLocation":"26222:10:35","nodeType":"VariableDeclaration","scope":8905,"src":"26197:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":8877,"nodeType":"UserDefinedTypeName","pathNode":{"id":8876,"name":"AllocationTarget","nameLocations":["26197:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"26197:16:35"},"referencedDeclaration":260,"src":"26197:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":8883,"initialValue":{"baseExpression":{"expression":{"id":8879,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"26235:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8880,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26237:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"26235:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":8882,"indexExpression":{"id":8881,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8870,"src":"26255:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26235:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"26197:65:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":8884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26289:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8885,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8878,"src":"26293:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":8886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26304:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":257,"src":"26293:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26289:30:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8904,"nodeType":"IfStatement","src":"26285:234:35","trueBody":{"id":8903,"nodeType":"Block","src":"26321:198:35","statements":[{"assignments":[8889],"declarations":[{"constant":false,"id":8889,"mutability":"mutable","name":"amount","nameLocation":"26355:6:35","nodeType":"VariableDeclaration","scope":8903,"src":"26347:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8888,"name":"uint256","nodeType":"ElementaryTypeName","src":"26347:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8894,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8890,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8878,"src":"26364:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":8891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26375:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":257,"src":"26364:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8892,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"26393:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26364:35:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26347:52:35"},{"eventCall":{"arguments":[{"id":8896,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8870,"src":"26456:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8897,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8889,"src":"26464:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8898,"name":"fromBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"26472:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8899,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26483:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26489:6:35","memberName":"number","nodeType":"MemberAccess","src":"26483:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8895,"name":"IssuanceSelfMintAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8606,"src":"26430:25:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":8901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26430:66:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8902,"nodeType":"EmitStatement","src":"26425:71:35"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8861,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"26081:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":8862,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"26085:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26087:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"26085:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26103:6:35","memberName":"length","nodeType":"MemberAccess","src":"26085:24:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26081:28:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8906,"initializationExpression":{"assignments":[8858],"declarations":[{"constant":false,"id":8858,"mutability":"mutable","name":"i","nameLocation":"26074:1:35","nodeType":"VariableDeclaration","scope":8906,"src":"26066:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8857,"name":"uint256","nodeType":"ElementaryTypeName","src":"26066:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8860,"initialValue":{"hexValue":"30","id":8859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26078:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26066:13:35"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"26111:3:35","subExpression":{"id":8866,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"26113:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8868,"nodeType":"ExpressionStatement","src":"26111:3:35"},"nodeType":"ForStatement","src":"26061:476:35"}]}}]}}]},"documentation":{"id":8771,"nodeType":"StructuredDocumentation","src":"24151:503:35","text":" @notice Advances self-minting block and emits allowance events\n @dev When paused, accumulates self-minting amounts. This accumulation reduces the allocator-minting\n budget when distribution resumes, ensuring total issuance stays within bounds.\n When not paused, emits self-minting allowance events based on selfMintingEventMode.\n Called by _distributeIssuance() which anyone can call.\n Optimized for no-op cases: very cheap when already at current block."},"id":8933,"implemented":true,"kind":"function","modifiers":[],"name":"_advanceSelfMintingBlock","nameLocation":"24668:24:35","nodeType":"FunctionDefinition","parameters":{"id":8772,"nodeType":"ParameterList","parameters":[],"src":"24692:2:35"},"returnParameters":{"id":8773,"nodeType":"ParameterList","parameters":[],"src":"24703:0:35"},"scope":10671,"src":"24659:2295:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8966,"nodeType":"Block","src":"27690:287:35","statements":[{"assignments":[8941],"declarations":[{"constant":false,"id":8941,"mutability":"mutable","name":"$","nameLocation":"27730:1:35","nodeType":"VariableDeclaration","scope":8966,"src":"27700:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":8940,"nodeType":"UserDefinedTypeName","pathNode":{"id":8939,"name":"IssuanceAllocatorData","nameLocations":["27700:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"27700:21:35"},"referencedDeclaration":8505,"src":"27700:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":8944,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8942,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"27734:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":8943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27734:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"27700:64:35"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8945,"name":"_advanceSelfMintingBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8933,"src":"27774:24:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27774:26:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8947,"nodeType":"ExpressionStatement","src":"27774:26:35"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":8948,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[10844],"referencedDeclaration":10844,"src":"27815:6:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":8949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27815:8:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8953,"nodeType":"IfStatement","src":"27811:44:35","trueBody":{"expression":{"expression":{"id":8950,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8941,"src":"27832:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27834:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"27832:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8938,"id":8952,"nodeType":"Return","src":"27825:30:35"}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":8954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27873:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8955,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8941,"src":"27877:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27879:17:35","memberName":"selfMintingOffset","nodeType":"MemberAccess","referencedDeclaration":8491,"src":"27877:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27873:23:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8962,"name":"_performNormalDistribution","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9077,"src":"27942:26:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":8963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27942:28:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"27873:97:35","trueExpression":{"arguments":[{"expression":{"id":8959,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"27926:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27932:6:35","memberName":"number","nodeType":"MemberAccess","src":"27926:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8958,"name":"_distributePendingIssuance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9256,"src":"27899:26:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":8961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27899:40:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8938,"id":8965,"nodeType":"Return","src":"27866:104:35"}]},"documentation":{"id":8934,"nodeType":"StructuredDocumentation","src":"26960:668:35","text":" @notice Internal implementation for `distributeIssuance`\n @dev Handles the actual distribution logic.\n @dev Always calls _advanceSelfMintingBlock() first (advances lastSelfMintingBlock, tracks self-minting).\n @dev If paused: Returns lastDistributionBlock without distributing allocator-minting (frozen state).\n @dev If unpaused: Chooses distribution path based on accumulated self-minting:\n      - With accumulation: retroactive distribution path (current rates, reduced allocator budget)\n      - Without accumulation: normal distribution path (simple per-block minting)\n @return Block number distributed to"},"id":8967,"implemented":true,"kind":"function","modifiers":[],"name":"_distributeIssuance","nameLocation":"27642:19:35","nodeType":"FunctionDefinition","parameters":{"id":8935,"nodeType":"ParameterList","parameters":[],"src":"27661:2:35"},"returnParameters":{"id":8938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8937,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8967,"src":"27681:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8936,"name":"uint256","nodeType":"ElementaryTypeName","src":"27681:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27680:9:35"},"scope":10671,"src":"27633:344:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9076,"nodeType":"Block","src":"28353:872:35","statements":[{"assignments":[8975],"declarations":[{"constant":false,"id":8975,"mutability":"mutable","name":"$","nameLocation":"28393:1:35","nodeType":"VariableDeclaration","scope":9076,"src":"28363:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":8974,"nodeType":"UserDefinedTypeName","pathNode":{"id":8973,"name":"IssuanceAllocatorData","nameLocations":["28363:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"28363:21:35"},"referencedDeclaration":8505,"src":"28363:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":8978,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8976,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"28397:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":8977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28397:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"28363:64:35"},{"assignments":[8980],"declarations":[{"constant":false,"id":8980,"mutability":"mutable","name":"blocks","nameLocation":"28446:6:35","nodeType":"VariableDeclaration","scope":9076,"src":"28438:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8979,"name":"uint256","nodeType":"ElementaryTypeName","src":"28438:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8986,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8981,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"28455:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28461:6:35","memberName":"number","nodeType":"MemberAccess","src":"28455:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":8983,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"28470:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28472:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"28470:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28455:38:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28438:55:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8987,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8980,"src":"28507:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28517:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"28507:11:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8993,"nodeType":"IfStatement","src":"28503:47:35","trueBody":{"expression":{"expression":{"id":8990,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"28527:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8991,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28529:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"28527:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8972,"id":8992,"nodeType":"Return","src":"28520:30:35"}},{"assignments":[8995],"declarations":[{"constant":false,"id":8995,"mutability":"mutable","name":"fromBlock","nameLocation":"28569:9:35","nodeType":"VariableDeclaration","scope":9076,"src":"28561:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8994,"name":"uint256","nodeType":"ElementaryTypeName","src":"28561:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9000,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8996,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"28581:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":8997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28583:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"28581:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":8998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28607:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"28581:27:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28561:47:35"},{"body":{"id":9064,"nodeType":"Block","src":"28674:467:35","statements":[{"assignments":[9014],"declarations":[{"constant":false,"id":9014,"mutability":"mutable","name":"target","nameLocation":"28696:6:35","nodeType":"VariableDeclaration","scope":9064,"src":"28688:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9013,"name":"address","nodeType":"ElementaryTypeName","src":"28688:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9019,"initialValue":{"baseExpression":{"expression":{"id":9015,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"28705:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28707:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"28705:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9018,"indexExpression":{"id":9017,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"28723:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28705:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"28688:37:35"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9020,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9014,"src":"28743:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28761:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9022,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28753:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9021,"name":"address","nodeType":"ElementaryTypeName","src":"28753:7:35","typeDescriptions":{}}},"id":9024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28753:10:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"28743:20:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9027,"nodeType":"IfStatement","src":"28739:34:35","trueBody":{"id":9026,"nodeType":"Continue","src":"28765:8:35"}},{"assignments":[9030],"declarations":[{"constant":false,"id":9030,"mutability":"mutable","name":"targetData","nameLocation":"28813:10:35","nodeType":"VariableDeclaration","scope":9064,"src":"28788:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":9029,"nodeType":"UserDefinedTypeName","pathNode":{"id":9028,"name":"AllocationTarget","nameLocations":["28788:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"28788:16:35"},"referencedDeclaration":260,"src":"28788:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":9035,"initialValue":{"baseExpression":{"expression":{"id":9031,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"28826:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9032,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28828:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"28826:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":9034,"indexExpression":{"id":9033,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9014,"src":"28846:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28826:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"28788:65:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":9036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28871:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9037,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9030,"src":"28875:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28886:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"28875:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28871:35:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9063,"nodeType":"IfStatement","src":"28867:264:35","trueBody":{"id":9062,"nodeType":"Block","src":"28908:223:35","statements":[{"assignments":[9041],"declarations":[{"constant":false,"id":9041,"mutability":"mutable","name":"amount","nameLocation":"28934:6:35","nodeType":"VariableDeclaration","scope":9062,"src":"28926:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9040,"name":"uint256","nodeType":"ElementaryTypeName","src":"28926:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9046,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9042,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9030,"src":"28943:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9043,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28954:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"28943:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9044,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8980,"src":"28977:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28943:40:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28926:57:35"},{"expression":{"arguments":[{"id":9050,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9014,"src":"29018:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9051,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9041,"src":"29026:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9047,"name":"GRAPH_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10718,"src":"29001:11:35","typeDescriptions":{"typeIdentifier":"t_contract$_IGraphToken_$10883","typeString":"contract IGraphToken"}},"id":9049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29013:4:35","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":10882,"src":"29001:16:35","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":9052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29001:32:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9053,"nodeType":"ExpressionStatement","src":"29001:32:35"},{"eventCall":{"arguments":[{"id":9055,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9014,"src":"29076:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9056,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9041,"src":"29084:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9057,"name":"fromBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8995,"src":"29092:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9058,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"29103:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29109:6:35","memberName":"number","nodeType":"MemberAccess","src":"29103:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9054,"name":"IssuanceDistributed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8572,"src":"29056:19:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":9060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29056:60:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9061,"nodeType":"EmitStatement","src":"29051:65:35"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9005,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"28639:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":9006,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"28643:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9007,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28645:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"28643:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28661:6:35","memberName":"length","nodeType":"MemberAccess","src":"28643:24:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28639:28:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9065,"initializationExpression":{"assignments":[9002],"declarations":[{"constant":false,"id":9002,"mutability":"mutable","name":"i","nameLocation":"28632:1:35","nodeType":"VariableDeclaration","scope":9065,"src":"28624:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9001,"name":"uint256","nodeType":"ElementaryTypeName","src":"28624:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9004,"initialValue":{"hexValue":"30","id":9003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28636:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"28624:13:35"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"28669:3:35","subExpression":{"id":9010,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"28671:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9012,"nodeType":"ExpressionStatement","src":"28669:3:35"},"nodeType":"ForStatement","src":"28619:522:35"},{"expression":{"id":9071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9066,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"29151:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"29153:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"29151:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9069,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"29177:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29183:6:35","memberName":"number","nodeType":"MemberAccess","src":"29177:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29151:38:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9072,"nodeType":"ExpressionStatement","src":"29151:38:35"},{"expression":{"expression":{"id":9073,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"29206:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29212:6:35","memberName":"number","nodeType":"MemberAccess","src":"29206:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8972,"id":9075,"nodeType":"Return","src":"29199:19:35"}]},"documentation":{"id":8968,"nodeType":"StructuredDocumentation","src":"27983:301:35","text":" @notice Performs normal (non-pending) issuance distribution\n @dev Distributes allocator-minting issuance to all targets based on their rates\n @dev Assumes contract is not paused and pending issuance has already been distributed\n @return Block number distributed to"},"id":9077,"implemented":true,"kind":"function","modifiers":[],"name":"_performNormalDistribution","nameLocation":"28298:26:35","nodeType":"FunctionDefinition","parameters":{"id":8969,"nodeType":"ParameterList","parameters":[],"src":"28324:2:35"},"returnParameters":{"id":8972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9077,"src":"28344:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8970,"name":"uint256","nodeType":"ElementaryTypeName","src":"28344:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28343:9:35"},"scope":10671,"src":"28289:936:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[105],"body":{"id":9094,"nodeType":"Block","src":"29410:64:35","statements":[{"expression":{"arguments":[{"expression":{"id":9090,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"29454:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29460:6:35","memberName":"number","nodeType":"MemberAccess","src":"29454:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9089,"name":"_distributePendingIssuance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9256,"src":"29427:26:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":9092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29427:40:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9088,"id":9093,"nodeType":"Return","src":"29420:47:35"}]},"documentation":{"id":9078,"nodeType":"StructuredDocumentation","src":"29231:64:35","text":" @inheritdoc IIssuanceAllocationAdministration"},"functionSelector":"3af5b073","id":9095,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9082,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"29364:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9083,"kind":"modifierInvocation","modifierName":{"id":9081,"name":"onlyRole","nameLocations":["29355:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"29355:8:35"},"nodeType":"ModifierInvocation","src":"29355:23:35"},{"id":9085,"kind":"modifierInvocation","modifierName":{"id":9084,"name":"nonReentrant","nameLocations":["29379:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"29379:12:35"},"nodeType":"ModifierInvocation","src":"29379:12:35"}],"name":"distributePendingIssuance","nameLocation":"29309:25:35","nodeType":"FunctionDefinition","overrides":{"id":9080,"nodeType":"OverrideSpecifier","overrides":[],"src":"29346:8:35"},"parameters":{"id":9079,"nodeType":"ParameterList","parameters":[],"src":"29334:2:35"},"returnParameters":{"id":9088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9095,"src":"29401:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9086,"name":"uint256","nodeType":"ElementaryTypeName","src":"29401:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29400:9:35"},"scope":10671,"src":"29300:174:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[113],"body":{"id":9113,"nodeType":"Block","src":"29694:65:35","statements":[{"expression":{"arguments":[{"id":9110,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9098,"src":"29738:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9109,"name":"_distributePendingIssuance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9256,"src":"29711:26:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":9111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29711:41:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9108,"id":9112,"nodeType":"Return","src":"29704:48:35"}]},"documentation":{"id":9096,"nodeType":"StructuredDocumentation","src":"29480:64:35","text":" @inheritdoc IIssuanceAllocationAdministration"},"functionSelector":"52c0e18c","id":9114,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9102,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"29648:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9103,"kind":"modifierInvocation","modifierName":{"id":9101,"name":"onlyRole","nameLocations":["29639:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"29639:8:35"},"nodeType":"ModifierInvocation","src":"29639:23:35"},{"id":9105,"kind":"modifierInvocation","modifierName":{"id":9104,"name":"nonReentrant","nameLocations":["29663:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"29663:12:35"},"nodeType":"ModifierInvocation","src":"29663:12:35"}],"name":"distributePendingIssuance","nameLocation":"29558:25:35","nodeType":"FunctionDefinition","overrides":{"id":9100,"nodeType":"OverrideSpecifier","overrides":[],"src":"29630:8:35"},"parameters":{"id":9099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9098,"mutability":"mutable","name":"toBlockNumber","nameLocation":"29601:13:35","nodeType":"VariableDeclaration","scope":9114,"src":"29593:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9097,"name":"uint256","nodeType":"ElementaryTypeName","src":"29593:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29583:37:35"},"returnParameters":{"id":9108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9107,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9114,"src":"29685:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9106,"name":"uint256","nodeType":"ElementaryTypeName","src":"29685:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29684:9:35"},"scope":10671,"src":"29549:210:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9255,"nodeType":"Block","src":"30753:2184:35","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9122,"name":"_advanceSelfMintingBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8933,"src":"30763:24:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30763:26:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9124,"nodeType":"ExpressionStatement","src":"30763:26:35"},{"assignments":[9127],"declarations":[{"constant":false,"id":9127,"mutability":"mutable","name":"$","nameLocation":"30829:1:35","nodeType":"VariableDeclaration","scope":9255,"src":"30799:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":9126,"nodeType":"UserDefinedTypeName","pathNode":{"id":9125,"name":"IssuanceAllocatorData","nameLocations":["30799:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"30799:21:35"},"referencedDeclaration":8505,"src":"30799:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":9130,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9128,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"30833:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":9129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30833:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"30799:64:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9132,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"30895:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30897:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"30895:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9134,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"30922:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30895:40:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9136,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"30939:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":9137,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"30956:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30962:6:35","memberName":"number","nodeType":"MemberAccess","src":"30956:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30939:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30895:73:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":9142,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"31048:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9143,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"31063:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31065:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"31063:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9145,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"31088:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31094:6:35","memberName":"number","nodeType":"MemberAccess","src":"31088:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9141,"name":"ToBlockOutOfRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8551,"src":"31030:17:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256,uint256) pure returns (error)"}},"id":9147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31030:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9131,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"30874:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30874:237:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9149,"nodeType":"ExpressionStatement","src":"30874:237:35"},{"assignments":[9151],"declarations":[{"constant":false,"id":9151,"mutability":"mutable","name":"blocks","nameLocation":"31130:6:35","nodeType":"VariableDeclaration","scope":9255,"src":"31122:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9150,"name":"uint256","nodeType":"ElementaryTypeName","src":"31122:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9156,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9152,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"31139:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":9153,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"31155:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9154,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31157:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"31155:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31139:39:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31122:56:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9157,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9151,"src":"31192:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31202:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31192:11:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9162,"nodeType":"IfStatement","src":"31188:37:35","trueBody":{"expression":{"id":9160,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"31212:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9121,"id":9161,"nodeType":"Return","src":"31205:20:35"}},{"assignments":[9164],"declarations":[{"constant":false,"id":9164,"mutability":"mutable","name":"totalForPeriod","nameLocation":"31601:14:35","nodeType":"VariableDeclaration","scope":9255,"src":"31593:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9163,"name":"uint256","nodeType":"ElementaryTypeName","src":"31593:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9169,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9165,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"31618:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31620:16:35","memberName":"issuancePerBlock","nodeType":"MemberAccess","referencedDeclaration":8485,"src":"31618:18:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9167,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9151,"src":"31639:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31618:27:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31593:52:35"},{"assignments":[9171],"declarations":[{"constant":false,"id":9171,"mutability":"mutable","name":"selfMintingOffset","nameLocation":"31663:17:35","nodeType":"VariableDeclaration","scope":9255,"src":"31655:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9170,"name":"uint256","nodeType":"ElementaryTypeName","src":"31655:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9174,"initialValue":{"expression":{"id":9172,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"31683:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31685:17:35","memberName":"selfMintingOffset","nodeType":"MemberAccess","referencedDeclaration":8491,"src":"31683:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31655:47:35"},{"assignments":[9176],"declarations":[{"constant":false,"id":9176,"mutability":"mutable","name":"available","nameLocation":"31721:9:35","nodeType":"VariableDeclaration","scope":9255,"src":"31713:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9175,"name":"uint256","nodeType":"ElementaryTypeName","src":"31713:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9185,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9177,"name":"selfMintingOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9171,"src":"31733:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9178,"name":"totalForPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9164,"src":"31753:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31733:34:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":9183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31807:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":9184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"31733:75:35","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9180,"name":"totalForPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9164,"src":"31770:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9181,"name":"selfMintingOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9171,"src":"31787:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31770:34:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31713:95:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":9186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31823:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9187,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9176,"src":"31827:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31823:13:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9239,"nodeType":"IfStatement","src":"31819:937:35","trueBody":{"id":9238,"nodeType":"Block","src":"31838:918:35","statements":[{"assignments":[9190],"declarations":[{"constant":false,"id":9190,"mutability":"mutable","name":"defaultAddress","nameLocation":"32219:14:35","nodeType":"VariableDeclaration","scope":9238,"src":"32211:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9189,"name":"address","nodeType":"ElementaryTypeName","src":"32211:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9195,"initialValue":{"baseExpression":{"expression":{"id":9191,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"32236:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32238:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"32236:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9194,"indexExpression":{"hexValue":"30","id":9193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32254:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32236:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"32211:45:35"},{"assignments":[9198],"declarations":[{"constant":false,"id":9198,"mutability":"mutable","name":"defaultTarget","nameLocation":"32295:13:35","nodeType":"VariableDeclaration","scope":9238,"src":"32270:38:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":9197,"nodeType":"UserDefinedTypeName","pathNode":{"id":9196,"name":"AllocationTarget","nameLocations":["32270:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"32270:16:35"},"referencedDeclaration":260,"src":"32270:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":9203,"initialValue":{"baseExpression":{"expression":{"id":9199,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"32311:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9200,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32313:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"32311:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":9202,"indexExpression":{"id":9201,"name":"defaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9190,"src":"32331:14:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32311:35:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"32270:76:35"},{"assignments":[9205],"declarations":[{"constant":false,"id":9205,"mutability":"mutable","name":"allocatedRate","nameLocation":"32368:13:35","nodeType":"VariableDeclaration","scope":9238,"src":"32360:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9204,"name":"uint256","nodeType":"ElementaryTypeName","src":"32360:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9214,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9206,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"32384:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32386:16:35","memberName":"issuancePerBlock","nodeType":"MemberAccess","referencedDeclaration":8485,"src":"32384:18:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":9208,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"32405:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32407:20:35","memberName":"totalSelfMintingRate","nodeType":"MemberAccess","referencedDeclaration":8501,"src":"32405:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32384:43:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":9211,"name":"defaultTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9198,"src":"32430:13:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32444:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"32430:34:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32384:80:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32360:104:35"},{"assignments":[9216],"declarations":[{"constant":false,"id":9216,"mutability":"mutable","name":"allocatedTotal","nameLocation":"32487:14:35","nodeType":"VariableDeclaration","scope":9238,"src":"32479:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9215,"name":"uint256","nodeType":"ElementaryTypeName","src":"32479:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9220,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9217,"name":"allocatedRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9205,"src":"32504:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9218,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9151,"src":"32520:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32504:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32479:47:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9221,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9176,"src":"32545:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9222,"name":"allocatedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9216,"src":"32557:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32545:26:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[{"id":9231,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9151,"src":"32696:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9232,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9176,"src":"32704:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9233,"name":"allocatedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9216,"src":"32715:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9234,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"32731:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9230,"name":"_distributePendingWithFullRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9438,"src":"32665:30:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":9235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32665:80:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9236,"nodeType":"ExpressionStatement","src":"32665:80:35"},"id":9237,"nodeType":"IfStatement","src":"32541:204:35","trueBody":{"expression":{"arguments":[{"id":9225,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9176,"src":"32606:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9226,"name":"allocatedRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9205,"src":"32617:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9227,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"32632:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9224,"name":"_distributePendingProportionally","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9530,"src":"32573:32:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":9228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32573:73:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9229,"nodeType":"ExpressionStatement","src":"32573:73:35"}}]}},{"expression":{"id":9244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9240,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"32766:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"32768:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"32766:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9243,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"32792:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32766:39:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9245,"nodeType":"ExpressionStatement","src":"32766:39:35"},{"expression":{"arguments":[{"id":9247,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"32843:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9248,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9151,"src":"32858:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9249,"name":"totalForPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9164,"src":"32866:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9250,"name":"selfMintingOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9171,"src":"32882:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9246,"name":"_reconcileSelfMintingOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9316,"src":"32815:27:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":9251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32815:85:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9252,"nodeType":"ExpressionStatement","src":"32815:85:35"},{"expression":{"id":9253,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9117,"src":"32917:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9121,"id":9254,"nodeType":"Return","src":"32910:20:35"}]},"documentation":{"id":9115,"nodeType":"StructuredDocumentation","src":"29765:898:35","text":" @notice Internal implementation for distributing pending accumulated allocator-minting issuance\n @param toBlockNumber Block number to distribute up to\n @dev Distributes allocator-minting issuance for undistributed period using current rates,\n retroactively applied from lastDistributionBlock to toBlockNumber (inclusive).\n Called when 0 < selfMintingOffset, which occurs after pause periods or delayed distribution.\n @dev Available budget = max(0, issuancePerBlock * blocks - selfMintingOffset).\n Distribution cases:\n (1) available < allocatedTotal: proportional distribution to non-default, default gets zero\n (2) allocatedTotal <= available: full rates to non-default, remainder to default\n Where allocatedTotal is sum of non-default allocator rates * blocks.\n @return Block number that issuance was distributed up to"},"id":9256,"implemented":true,"kind":"function","modifiers":[],"name":"_distributePendingIssuance","nameLocation":"30677:26:35","nodeType":"FunctionDefinition","parameters":{"id":9118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9117,"mutability":"mutable","name":"toBlockNumber","nameLocation":"30712:13:35","nodeType":"VariableDeclaration","scope":9256,"src":"30704:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9116,"name":"uint256","nodeType":"ElementaryTypeName","src":"30704:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30703:23:35"},"returnParameters":{"id":9121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9256,"src":"30744:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9119,"name":"uint256","nodeType":"ElementaryTypeName","src":"30744:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30743:9:35"},"scope":10671,"src":"30668:2269:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9315,"nodeType":"Block","src":"33719:666:35","statements":[{"assignments":[9270],"declarations":[{"constant":false,"id":9270,"mutability":"mutable","name":"$","nameLocation":"33759:1:35","nodeType":"VariableDeclaration","scope":9315,"src":"33729:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":9269,"nodeType":"UserDefinedTypeName","pathNode":{"id":9268,"name":"IssuanceAllocatorData","nameLocations":["33729:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"33729:21:35"},"referencedDeclaration":8505,"src":"33729:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":9273,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9271,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"33763:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":9272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33763:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"33729:64:35"},{"assignments":[9275],"declarations":[{"constant":false,"id":9275,"mutability":"mutable","name":"newOffset","nameLocation":"33812:9:35","nodeType":"VariableDeclaration","scope":9315,"src":"33804:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9274,"name":"uint256","nodeType":"ElementaryTypeName","src":"33804:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9291,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9276,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9259,"src":"33824:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9277,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"33841:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33847:6:35","memberName":"number","nodeType":"MemberAccess","src":"33841:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33824:29:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9281,"name":"totalForPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9263,"src":"33885:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9282,"name":"selfMintingOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"33902:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33885:34:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":9287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33959:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":9288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33885:75:35","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9284,"name":"selfMintingOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"33922:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9285,"name":"totalForPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9263,"src":"33942:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33922:34:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9289,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"33884:77:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33824:137:35","trueExpression":{"hexValue":"30","id":9280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33868:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"33804:157:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9292,"name":"selfMintingOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"34065:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9293,"name":"newOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9275,"src":"34086:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34065:30:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9308,"nodeType":"IfStatement","src":"34061:276:35","trueBody":{"id":9307,"nodeType":"Block","src":"34097:240:35","statements":[{"eventCall":{"arguments":[{"id":9296,"name":"selfMintingOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"34161:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9297,"name":"newOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9275,"src":"34196:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9298,"name":"totalForPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9263,"src":"34223:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9299,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9259,"src":"34255:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9300,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9261,"src":"34271:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34255:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34280:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"34255:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9304,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9259,"src":"34299:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9295,"name":"SelfMintingOffsetReconciled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8619,"src":"34116:27:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256,uint256)"}},"id":9305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34116:210:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9306,"nodeType":"EmitStatement","src":"34111:215:35"}]}},{"expression":{"id":9313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9309,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9270,"src":"34347:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9311,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"34349:17:35","memberName":"selfMintingOffset","nodeType":"MemberAccess","referencedDeclaration":8491,"src":"34347:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9312,"name":"newOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9275,"src":"34369:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34347:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9314,"nodeType":"ExpressionStatement","src":"34347:31:35"}]},"documentation":{"id":9257,"nodeType":"StructuredDocumentation","src":"32943:598:35","text":" @notice Reconciles self-minting offset after distribution and emits event if changed\n @param toBlockNumber Block number distributed to\n @param blocks Number of blocks in the distribution period\n @param totalForPeriod Total issuance budget for the period\n @param selfMintingOffset Self-minting offset before reconciliation\n @dev Updates accumulated self-minting after distribution.\n Subtracts the period budget used (min of accumulated and totalForPeriod).\n When caught up to current block, clears all since nothing remains to distribute."},"id":9316,"implemented":true,"kind":"function","modifiers":[],"name":"_reconcileSelfMintingOffset","nameLocation":"33555:27:35","nodeType":"FunctionDefinition","parameters":{"id":9266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9259,"mutability":"mutable","name":"toBlockNumber","nameLocation":"33600:13:35","nodeType":"VariableDeclaration","scope":9316,"src":"33592:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9258,"name":"uint256","nodeType":"ElementaryTypeName","src":"33592:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9261,"mutability":"mutable","name":"blocks","nameLocation":"33631:6:35","nodeType":"VariableDeclaration","scope":9316,"src":"33623:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9260,"name":"uint256","nodeType":"ElementaryTypeName","src":"33623:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9263,"mutability":"mutable","name":"totalForPeriod","nameLocation":"33655:14:35","nodeType":"VariableDeclaration","scope":9316,"src":"33647:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9262,"name":"uint256","nodeType":"ElementaryTypeName","src":"33647:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9265,"mutability":"mutable","name":"selfMintingOffset","nameLocation":"33687:17:35","nodeType":"VariableDeclaration","scope":9316,"src":"33679:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9264,"name":"uint256","nodeType":"ElementaryTypeName","src":"33679:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33582:128:35"},"returnParameters":{"id":9267,"nodeType":"ParameterList","parameters":[],"src":"33719:0:35"},"scope":10671,"src":"33546:839:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9437,"nodeType":"Block","src":"35038:1161:35","statements":[{"assignments":[9330],"declarations":[{"constant":false,"id":9330,"mutability":"mutable","name":"$","nameLocation":"35078:1:35","nodeType":"VariableDeclaration","scope":9437,"src":"35048:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":9329,"nodeType":"UserDefinedTypeName","pathNode":{"id":9328,"name":"IssuanceAllocatorData","nameLocations":["35048:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"35048:21:35"},"referencedDeclaration":8505,"src":"35048:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":9333,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9331,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"35082:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":9332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35082:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"35048:64:35"},{"assignments":[9335],"declarations":[{"constant":false,"id":9335,"mutability":"mutable","name":"fromBlock","nameLocation":"35131:9:35","nodeType":"VariableDeclaration","scope":9437,"src":"35123:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9334,"name":"uint256","nodeType":"ElementaryTypeName","src":"35123:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9340,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9336,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"35143:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35145:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"35143:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35169:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"35143:27:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"35123:47:35"},{"body":{"id":9395,"nodeType":"Block","src":"35289:420:35","statements":[{"assignments":[9354],"declarations":[{"constant":false,"id":9354,"mutability":"mutable","name":"target","nameLocation":"35311:6:35","nodeType":"VariableDeclaration","scope":9395,"src":"35303:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9353,"name":"address","nodeType":"ElementaryTypeName","src":"35303:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9359,"initialValue":{"baseExpression":{"expression":{"id":9355,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"35320:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35322:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"35320:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9358,"indexExpression":{"id":9357,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"35338:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35320:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"35303:37:35"},{"assignments":[9362],"declarations":[{"constant":false,"id":9362,"mutability":"mutable","name":"targetData","nameLocation":"35379:10:35","nodeType":"VariableDeclaration","scope":9395,"src":"35354:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":9361,"nodeType":"UserDefinedTypeName","pathNode":{"id":9360,"name":"AllocationTarget","nameLocations":["35354:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"35354:16:35"},"referencedDeclaration":260,"src":"35354:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":9367,"initialValue":{"baseExpression":{"expression":{"id":9363,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"35392:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9364,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35394:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"35392:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":9366,"indexExpression":{"id":9365,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9354,"src":"35412:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35392:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"35354:65:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":9368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35438:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9369,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9362,"src":"35442:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35453:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"35442:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35438:35:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9394,"nodeType":"IfStatement","src":"35434:265:35","trueBody":{"id":9393,"nodeType":"Block","src":"35475:224:35","statements":[{"assignments":[9373],"declarations":[{"constant":false,"id":9373,"mutability":"mutable","name":"amount","nameLocation":"35501:6:35","nodeType":"VariableDeclaration","scope":9393,"src":"35493:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9372,"name":"uint256","nodeType":"ElementaryTypeName","src":"35493:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9378,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9374,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9362,"src":"35510:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9375,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35521:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"35510:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9376,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9319,"src":"35544:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35510:40:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"35493:57:35"},{"expression":{"arguments":[{"id":9382,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9354,"src":"35585:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9383,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9373,"src":"35593:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9379,"name":"GRAPH_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10718,"src":"35568:11:35","typeDescriptions":{"typeIdentifier":"t_contract$_IGraphToken_$10883","typeString":"contract IGraphToken"}},"id":9381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35580:4:35","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":10882,"src":"35568:16:35","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":9384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35568:32:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9385,"nodeType":"ExpressionStatement","src":"35568:32:35"},{"eventCall":{"arguments":[{"id":9387,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9354,"src":"35643:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9388,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9373,"src":"35651:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9389,"name":"fromBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9335,"src":"35659:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9390,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9325,"src":"35670:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9386,"name":"IssuanceDistributed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8572,"src":"35623:19:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":9391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35623:61:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9392,"nodeType":"EmitStatement","src":"35618:66:35"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9345,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"35254:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":9346,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"35258:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35260:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"35258:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35276:6:35","memberName":"length","nodeType":"MemberAccess","src":"35258:24:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35254:28:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9396,"initializationExpression":{"assignments":[9342],"declarations":[{"constant":false,"id":9342,"mutability":"mutable","name":"i","nameLocation":"35247:1:35","nodeType":"VariableDeclaration","scope":9396,"src":"35239:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9341,"name":"uint256","nodeType":"ElementaryTypeName","src":"35239:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9344,"initialValue":{"hexValue":"31","id":9343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35251:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"35239:13:35"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"35284:3:35","subExpression":{"id":9350,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"35286:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9352,"nodeType":"ExpressionStatement","src":"35284:3:35"},"nodeType":"ForStatement","src":"35234:475:35"},{"assignments":[9398],"declarations":[{"constant":false,"id":9398,"mutability":"mutable","name":"remainingForDefault","nameLocation":"35798:19:35","nodeType":"VariableDeclaration","scope":9437,"src":"35790:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9397,"name":"uint256","nodeType":"ElementaryTypeName","src":"35790:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9402,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9399,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9321,"src":"35820:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9400,"name":"allocatedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9323,"src":"35832:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35820:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"35790:56:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":9403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35860:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9404,"name":"remainingForDefault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9398,"src":"35864:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35860:23:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9436,"nodeType":"IfStatement","src":"35856:337:35","trueBody":{"id":9435,"nodeType":"Block","src":"35885:308:35","statements":[{"assignments":[9407],"declarations":[{"constant":false,"id":9407,"mutability":"mutable","name":"defaultAddress","nameLocation":"35907:14:35","nodeType":"VariableDeclaration","scope":9435,"src":"35899:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9406,"name":"address","nodeType":"ElementaryTypeName","src":"35899:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9412,"initialValue":{"baseExpression":{"expression":{"id":9408,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"35924:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9409,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35926:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"35924:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9411,"indexExpression":{"hexValue":"30","id":9410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35942:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35924:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"35899:45:35"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9413,"name":"defaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9407,"src":"35962:14:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35988:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35980:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9414,"name":"address","nodeType":"ElementaryTypeName","src":"35980:7:35","typeDescriptions":{}}},"id":9417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35980:10:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"35962:28:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9434,"nodeType":"IfStatement","src":"35958:225:35","trueBody":{"id":9433,"nodeType":"Block","src":"35992:191:35","statements":[{"expression":{"arguments":[{"id":9422,"name":"defaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9407,"src":"36027:14:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9423,"name":"remainingForDefault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9398,"src":"36043:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9419,"name":"GRAPH_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10718,"src":"36010:11:35","typeDescriptions":{"typeIdentifier":"t_contract$_IGraphToken_$10883","typeString":"contract IGraphToken"}},"id":9421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36022:4:35","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":10882,"src":"36010:16:35","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":9424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36010:53:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9425,"nodeType":"ExpressionStatement","src":"36010:53:35"},{"eventCall":{"arguments":[{"id":9427,"name":"defaultAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9407,"src":"36106:14:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9428,"name":"remainingForDefault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9398,"src":"36122:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9429,"name":"fromBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9335,"src":"36143:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9430,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9325,"src":"36154:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9426,"name":"IssuanceDistributed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8572,"src":"36086:19:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":9431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36086:82:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9432,"nodeType":"EmitStatement","src":"36081:87:35"}]}}]}}]},"documentation":{"id":9317,"nodeType":"StructuredDocumentation","src":"34391:473:35","text":" @notice Distribute pending issuance with full rates to non-default targets\n @param blocks Number of blocks in the distribution period\n @param available Total available allocator-minting budget for the period\n @param allocatedTotal Total amount allocated to non-default targets at full rate\n @param toBlockNumber Block number distributing to\n @dev Sufficient budget: non-default targets get full rates, default gets remainder"},"id":9438,"implemented":true,"kind":"function","modifiers":[],"name":"_distributePendingWithFullRate","nameLocation":"34878:30:35","nodeType":"FunctionDefinition","parameters":{"id":9326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9319,"mutability":"mutable","name":"blocks","nameLocation":"34926:6:35","nodeType":"VariableDeclaration","scope":9438,"src":"34918:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9318,"name":"uint256","nodeType":"ElementaryTypeName","src":"34918:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9321,"mutability":"mutable","name":"available","nameLocation":"34950:9:35","nodeType":"VariableDeclaration","scope":9438,"src":"34942:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9320,"name":"uint256","nodeType":"ElementaryTypeName","src":"34942:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9323,"mutability":"mutable","name":"allocatedTotal","nameLocation":"34977:14:35","nodeType":"VariableDeclaration","scope":9438,"src":"34969:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9322,"name":"uint256","nodeType":"ElementaryTypeName","src":"34969:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9325,"mutability":"mutable","name":"toBlockNumber","nameLocation":"35009:13:35","nodeType":"VariableDeclaration","scope":9438,"src":"35001:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9324,"name":"uint256","nodeType":"ElementaryTypeName","src":"35001:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34908:120:35"},"returnParameters":{"id":9327,"nodeType":"ParameterList","parameters":[],"src":"35038:0:35"},"scope":10671,"src":"34869:1330:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9529,"nodeType":"Block","src":"36850:1605:35","statements":[{"assignments":[9450],"declarations":[{"constant":false,"id":9450,"mutability":"mutable","name":"$","nameLocation":"36890:1:35","nodeType":"VariableDeclaration","scope":9529,"src":"36860:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":9449,"nodeType":"UserDefinedTypeName","pathNode":{"id":9448,"name":"IssuanceAllocatorData","nameLocations":["36860:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"36860:21:35"},"referencedDeclaration":8505,"src":"36860:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":9453,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9451,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"36894:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":9452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36894:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"36860:64:35"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9454,"name":"allocatedRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9443,"src":"37148:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37165:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37148:18:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9457,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9441,"src":"37170:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37183:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37170:14:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"37148:36:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9462,"nodeType":"IfStatement","src":"37144:49:35","trueBody":{"functionReturnParameters":9447,"id":9461,"nodeType":"Return","src":"37186:7:35"}},{"assignments":[9464],"declarations":[{"constant":false,"id":9464,"mutability":"mutable","name":"fromBlock","nameLocation":"37211:9:35","nodeType":"VariableDeclaration","scope":9529,"src":"37203:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9463,"name":"uint256","nodeType":"ElementaryTypeName","src":"37203:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9469,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9465,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9450,"src":"37223:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37225:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"37223:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37249:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"37223:27:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"37203:47:35"},{"body":{"id":9527,"nodeType":"Block","src":"37436:1013:35","statements":[{"assignments":[9483],"declarations":[{"constant":false,"id":9483,"mutability":"mutable","name":"target","nameLocation":"37458:6:35","nodeType":"VariableDeclaration","scope":9527,"src":"37450:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9482,"name":"address","nodeType":"ElementaryTypeName","src":"37450:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9488,"initialValue":{"baseExpression":{"expression":{"id":9484,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9450,"src":"37467:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37469:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"37467:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9487,"indexExpression":{"id":9486,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9471,"src":"37485:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37467:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"37450:37:35"},{"assignments":[9491],"declarations":[{"constant":false,"id":9491,"mutability":"mutable","name":"targetData","nameLocation":"37526:10:35","nodeType":"VariableDeclaration","scope":9527,"src":"37501:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":9490,"nodeType":"UserDefinedTypeName","pathNode":{"id":9489,"name":"AllocationTarget","nameLocations":["37501:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"37501:16:35"},"referencedDeclaration":260,"src":"37501:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":9496,"initialValue":{"baseExpression":{"expression":{"id":9492,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9450,"src":"37539:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9493,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37541:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"37539:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":9495,"indexExpression":{"id":9494,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9483,"src":"37559:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37539:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"37501:65:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":9497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37585:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9498,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9491,"src":"37589:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9499,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37600:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"37589:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37585:35:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9526,"nodeType":"IfStatement","src":"37581:858:35","trueBody":{"id":9525,"nodeType":"Block","src":"37622:817:35","statements":[{"assignments":[9502],"declarations":[{"constant":false,"id":9502,"mutability":"mutable","name":"amount","nameLocation":"38220:6:35","nodeType":"VariableDeclaration","scope":9525,"src":"38212:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9501,"name":"uint256","nodeType":"ElementaryTypeName","src":"38212:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9510,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9503,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9441,"src":"38230:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":9504,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9491,"src":"38242:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38253:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"38242:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38230:43:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9507,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"38229:45:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9508,"name":"allocatedRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9443,"src":"38277:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"38229:61:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"38212:78:35"},{"expression":{"arguments":[{"id":9514,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9483,"src":"38325:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9515,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9502,"src":"38333:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9511,"name":"GRAPH_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10718,"src":"38308:11:35","typeDescriptions":{"typeIdentifier":"t_contract$_IGraphToken_$10883","typeString":"contract IGraphToken"}},"id":9513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38320:4:35","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":10882,"src":"38308:16:35","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":9516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38308:32:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9517,"nodeType":"ExpressionStatement","src":"38308:32:35"},{"eventCall":{"arguments":[{"id":9519,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9483,"src":"38383:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9520,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9502,"src":"38391:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9521,"name":"fromBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9464,"src":"38399:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9522,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9445,"src":"38410:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9518,"name":"IssuanceDistributed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8572,"src":"38363:19:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":9523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38363:61:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9524,"nodeType":"EmitStatement","src":"38358:66:35"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9474,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9471,"src":"37401:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":9475,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9450,"src":"37405:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9476,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37407:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"37405:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37423:6:35","memberName":"length","nodeType":"MemberAccess","src":"37405:24:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"37401:28:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9528,"initializationExpression":{"assignments":[9471],"declarations":[{"constant":false,"id":9471,"mutability":"mutable","name":"i","nameLocation":"37394:1:35","nodeType":"VariableDeclaration","scope":9528,"src":"37386:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9470,"name":"uint256","nodeType":"ElementaryTypeName","src":"37386:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9473,"initialValue":{"hexValue":"31","id":9472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37398:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"37386:13:35"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"37431:3:35","subExpression":{"id":9479,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9471,"src":"37433:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9481,"nodeType":"ExpressionStatement","src":"37431:3:35"},"nodeType":"ForStatement","src":"37381:1068:35"}]},"documentation":{"id":9439,"nodeType":"StructuredDocumentation","src":"36205:494:35","text":" @notice Distribute pending issuance proportionally among non-default targets\n @param available Total available allocator-minting budget for the period\n @param allocatedRate Total rate allocated to non-default targets\n @param toBlockNumber Block number distributing to\n @dev Insufficient budget: non-default targets get proportional shares, default gets zero\n @dev Proportional distribution may result in rounding loss (dust), which is acceptable"},"id":9530,"implemented":true,"kind":"function","modifiers":[],"name":"_distributePendingProportionally","nameLocation":"36713:32:35","nodeType":"FunctionDefinition","parameters":{"id":9446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9441,"mutability":"mutable","name":"available","nameLocation":"36763:9:35","nodeType":"VariableDeclaration","scope":9530,"src":"36755:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9440,"name":"uint256","nodeType":"ElementaryTypeName","src":"36755:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9443,"mutability":"mutable","name":"allocatedRate","nameLocation":"36790:13:35","nodeType":"VariableDeclaration","scope":9530,"src":"36782:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9442,"name":"uint256","nodeType":"ElementaryTypeName","src":"36782:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9445,"mutability":"mutable","name":"toBlockNumber","nameLocation":"36821:13:35","nodeType":"VariableDeclaration","scope":9530,"src":"36813:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9444,"name":"uint256","nodeType":"ElementaryTypeName","src":"36813:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"36745:95:35"},"returnParameters":{"id":9447,"nodeType":"ParameterList","parameters":[],"src":"36850:0:35"},"scope":10671,"src":"36704:1751:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[14],"body":{"id":9550,"nodeType":"Block","src":"38672:79:35","statements":[{"expression":{"arguments":[{"id":9545,"name":"newIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9533,"src":"38710:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9546,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"38731:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38737:6:35","memberName":"number","nodeType":"MemberAccess","src":"38731:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9544,"name":"_setIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"38689:20:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) returns (bool)"}},"id":9548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38689:55:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9543,"id":9549,"nodeType":"Return","src":"38682:62:35"}]},"documentation":{"id":9531,"nodeType":"StructuredDocumentation","src":"38461:64:35","text":" @inheritdoc IIssuanceAllocationAdministration"},"functionSelector":"1156bdc1","id":9551,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9537,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"38629:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9538,"kind":"modifierInvocation","modifierName":{"id":9536,"name":"onlyRole","nameLocations":["38620:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"38620:8:35"},"nodeType":"ModifierInvocation","src":"38620:23:35"},{"id":9540,"kind":"modifierInvocation","modifierName":{"id":9539,"name":"nonReentrant","nameLocations":["38644:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"38644:12:35"},"nodeType":"ModifierInvocation","src":"38644:12:35"}],"name":"setIssuancePerBlock","nameLocation":"38539:19:35","nodeType":"FunctionDefinition","overrides":{"id":9535,"nodeType":"OverrideSpecifier","overrides":[],"src":"38611:8:35"},"parameters":{"id":9534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9533,"mutability":"mutable","name":"newIssuancePerBlock","nameLocation":"38576:19:35","nodeType":"VariableDeclaration","scope":9551,"src":"38568:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9532,"name":"uint256","nodeType":"ElementaryTypeName","src":"38568:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"38558:43:35"},"returnParameters":{"id":9543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9542,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9551,"src":"38666:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9541,"name":"bool","nodeType":"ElementaryTypeName","src":"38666:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38665:6:35"},"scope":10671,"src":"38530:221:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[24],"body":{"id":9572,"nodeType":"Block","src":"39927:86:35","statements":[{"expression":{"arguments":[{"id":9568,"name":"newIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9554,"src":"39965:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9569,"name":"minDistributedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9556,"src":"39986:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9567,"name":"_setIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"39944:20:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) returns (bool)"}},"id":9570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39944:62:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9566,"id":9571,"nodeType":"Return","src":"39937:69:35"}]},"documentation":{"id":9552,"nodeType":"StructuredDocumentation","src":"38757:986:35","text":" @inheritdoc IIssuanceAllocationAdministration\n @dev Implementation details:\n - Requires distribution to have reached at least minDistributedBlock\n - This allows configuration changes after calling distributePendingIssuance(blockNumber) while paused\n - Only the default target is notified (target rates don't change, only default target changes)\n - Target rates stay fixed; default target absorbs the change\n - Whenever the rate is changed, the updateL2MintAllowance function _must_ be called on the L1GraphTokenGateway in L1, to ensure the bridge can mint the right amount of tokens\n @dev Rate changes while paused: The new rate applies retroactively to the entire undistributed\n period when distribution resumes. Governance must exercise caution to ensure rates are applied\n to the correct block range. Use distributePendingIssuance(blockNumber) to control precisely\n which block the new rate applies from."},"functionSelector":"c627b7a4","id":9573,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9560,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"39884:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9561,"kind":"modifierInvocation","modifierName":{"id":9559,"name":"onlyRole","nameLocations":["39875:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"39875:8:35"},"nodeType":"ModifierInvocation","src":"39875:23:35"},{"id":9563,"kind":"modifierInvocation","modifierName":{"id":9562,"name":"nonReentrant","nameLocations":["39899:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"39899:12:35"},"nodeType":"ModifierInvocation","src":"39899:12:35"}],"name":"setIssuancePerBlock","nameLocation":"39757:19:35","nodeType":"FunctionDefinition","overrides":{"id":9558,"nodeType":"OverrideSpecifier","overrides":[],"src":"39866:8:35"},"parameters":{"id":9557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9554,"mutability":"mutable","name":"newIssuancePerBlock","nameLocation":"39794:19:35","nodeType":"VariableDeclaration","scope":9573,"src":"39786:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9553,"name":"uint256","nodeType":"ElementaryTypeName","src":"39786:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9556,"mutability":"mutable","name":"minDistributedBlock","nameLocation":"39831:19:35","nodeType":"VariableDeclaration","scope":9573,"src":"39823:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9555,"name":"uint256","nodeType":"ElementaryTypeName","src":"39823:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39776:80:35"},"returnParameters":{"id":9566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9565,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9573,"src":"39921:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9564,"name":"bool","nodeType":"ElementaryTypeName","src":"39921:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39920:6:35"},"scope":10671,"src":"39748:265:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9666,"nodeType":"Block","src":"40408:994:35","statements":[{"assignments":[9585],"declarations":[{"constant":false,"id":9585,"mutability":"mutable","name":"$","nameLocation":"40448:1:35","nodeType":"VariableDeclaration","scope":9666,"src":"40418:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":9584,"nodeType":"UserDefinedTypeName","pathNode":{"id":9583,"name":"IssuanceAllocatorData","nameLocations":["40418:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"40418:21:35"},"referencedDeclaration":8505,"src":"40418:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":9588,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9586,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"40452:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":9587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40452:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"40418:64:35"},{"assignments":[9590],"declarations":[{"constant":false,"id":9590,"mutability":"mutable","name":"oldIssuancePerBlock","nameLocation":"40500:19:35","nodeType":"VariableDeclaration","scope":9666,"src":"40492:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9589,"name":"uint256","nodeType":"ElementaryTypeName","src":"40492:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9593,"initialValue":{"expression":{"id":9591,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9585,"src":"40522:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40524:16:35","memberName":"issuancePerBlock","nodeType":"MemberAccess","referencedDeclaration":8485,"src":"40522:18:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"40492:48:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9594,"name":"newIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9576,"src":"40554:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9595,"name":"oldIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9590,"src":"40577:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40554:42:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9599,"nodeType":"IfStatement","src":"40550:59:35","trueBody":{"expression":{"hexValue":"74727565","id":9597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"40605:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9582,"id":9598,"nodeType":"Return","src":"40598:11:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9600,"name":"_distributeIssuance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8967,"src":"40624:19:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":9601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40624:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9602,"name":"minDistributedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9578,"src":"40648:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40624:43:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9606,"nodeType":"IfStatement","src":"40620:61:35","trueBody":{"expression":{"hexValue":"66616c7365","id":9604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"40676:5:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":9582,"id":9605,"nodeType":"Return","src":"40669:12:35"}},{"expression":{"arguments":[{"baseExpression":{"expression":{"id":9608,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9585,"src":"40706:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40708:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"40706:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9611,"indexExpression":{"hexValue":"30","id":9610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40724:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40706:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9607,"name":"_notifyTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9779,"src":"40692:13:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) returns (bool)"}},"id":9612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40692:35:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9613,"nodeType":"ExpressionStatement","src":"40692:35:35"},{"assignments":[9616],"declarations":[{"constant":false,"id":9616,"mutability":"mutable","name":"defaultTarget","nameLocation":"40763:13:35","nodeType":"VariableDeclaration","scope":9666,"src":"40738:38:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":9615,"nodeType":"UserDefinedTypeName","pathNode":{"id":9614,"name":"AllocationTarget","nameLocations":["40738:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"40738:16:35"},"referencedDeclaration":260,"src":"40738:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":9624,"initialValue":{"baseExpression":{"expression":{"id":9617,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9585,"src":"40779:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9618,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40781:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"40779:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":9623,"indexExpression":{"baseExpression":{"expression":{"id":9619,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9585,"src":"40799:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9620,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40801:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"40799:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9622,"indexExpression":{"hexValue":"30","id":9621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40817:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40799:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40779:41:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"40738:82:35"},{"assignments":[9626],"declarations":[{"constant":false,"id":9626,"mutability":"mutable","name":"unallocated","nameLocation":"40838:11:35","nodeType":"VariableDeclaration","scope":9666,"src":"40830:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9625,"name":"uint256","nodeType":"ElementaryTypeName","src":"40830:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9629,"initialValue":{"expression":{"id":9627,"name":"defaultTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9616,"src":"40852:13:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9628,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40866:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"40852:34:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"40830:56:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9631,"name":"oldIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9590,"src":"40918:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9632,"name":"newIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9576,"src":"40941:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9633,"name":"unallocated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9626,"src":"40963:11:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40941:33:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40918:56:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":9637,"name":"oldIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9590,"src":"41075:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9638,"name":"newIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9576,"src":"41096:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9639,"name":"unallocated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9626,"src":"41117:11:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9636,"name":"InsufficientUnallocatedForRateDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8537,"src":"41036:38:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256,uint256) pure returns (error)"}},"id":9640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41036:93:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9630,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"40897:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40897:242:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9642,"nodeType":"ExpressionStatement","src":"40897:242:35"},{"expression":{"id":9651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9643,"name":"defaultTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9616,"src":"41150:13:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9645,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"41164:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"41150:34:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9646,"name":"unallocated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9626,"src":"41187:11:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9647,"name":"newIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9576,"src":"41201:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41187:33:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9649,"name":"oldIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9590,"src":"41223:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41187:55:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41150:92:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9652,"nodeType":"ExpressionStatement","src":"41150:92:35"},{"expression":{"id":9657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9653,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9585,"src":"41252:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"41254:16:35","memberName":"issuancePerBlock","nodeType":"MemberAccess","referencedDeclaration":8485,"src":"41252:18:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9656,"name":"newIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9576,"src":"41273:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41252:40:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9658,"nodeType":"ExpressionStatement","src":"41252:40:35"},{"eventCall":{"arguments":[{"id":9660,"name":"oldIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9590,"src":"41332:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9661,"name":"newIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9576,"src":"41353:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9659,"name":"IssuancePerBlockUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8588,"src":"41308:23:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":9662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41308:65:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9663,"nodeType":"EmitStatement","src":"41303:70:35"},{"expression":{"hexValue":"74727565","id":9664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"41391:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9582,"id":9665,"nodeType":"Return","src":"41384:11:35"}]},"documentation":{"id":9574,"nodeType":"StructuredDocumentation","src":"40019:273:35","text":" @notice Internal implementation for setting issuance per block\n @param newIssuancePerBlock New issuance per block\n @param minDistributedBlock Minimum block number that distribution must have reached\n @return True if the value is applied"},"id":9667,"implemented":true,"kind":"function","modifiers":[],"name":"_setIssuancePerBlock","nameLocation":"40306:20:35","nodeType":"FunctionDefinition","parameters":{"id":9579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9576,"mutability":"mutable","name":"newIssuancePerBlock","nameLocation":"40335:19:35","nodeType":"VariableDeclaration","scope":9667,"src":"40327:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9575,"name":"uint256","nodeType":"ElementaryTypeName","src":"40327:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9578,"mutability":"mutable","name":"minDistributedBlock","nameLocation":"40364:19:35","nodeType":"VariableDeclaration","scope":9667,"src":"40356:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9577,"name":"uint256","nodeType":"ElementaryTypeName","src":"40356:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40326:58:35"},"returnParameters":{"id":9582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9667,"src":"40402:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9580,"name":"bool","nodeType":"ElementaryTypeName","src":"40402:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"40401:6:35"},"scope":10671,"src":"40297:1105:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[122],"body":{"id":9710,"nodeType":"Block","src":"41588:315:35","statements":[{"assignments":[9681],"declarations":[{"constant":false,"id":9681,"mutability":"mutable","name":"$","nameLocation":"41628:1:35","nodeType":"VariableDeclaration","scope":9710,"src":"41598:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":9680,"nodeType":"UserDefinedTypeName","pathNode":{"id":9679,"name":"IssuanceAllocatorData","nameLocations":["41598:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"41598:21:35"},"referencedDeclaration":8505,"src":"41598:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":9684,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9682,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"41632:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":9683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41632:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"41598:64:35"},{"assignments":[9687],"declarations":[{"constant":false,"id":9687,"mutability":"mutable","name":"oldMode","nameLocation":"41693:7:35","nodeType":"VariableDeclaration","scope":9710,"src":"41672:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"typeName":{"id":9686,"nodeType":"UserDefinedTypeName","pathNode":{"id":9685,"name":"SelfMintingEventMode","nameLocations":["41672:20:35"],"nodeType":"IdentifierPath","referencedDeclaration":234,"src":"41672:20:35"},"referencedDeclaration":234,"src":"41672:20:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"visibility":"internal"}],"id":9690,"initialValue":{"expression":{"id":9688,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9681,"src":"41703:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41705:20:35","memberName":"selfMintingEventMode","nodeType":"MemberAccess","referencedDeclaration":8504,"src":"41703:22:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"nodeType":"VariableDeclarationStatement","src":"41672:53:35"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"id":9693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9691,"name":"newMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"41740:7:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9692,"name":"oldMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9687,"src":"41751:7:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"src":"41740:18:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9696,"nodeType":"IfStatement","src":"41736:35:35","trueBody":{"expression":{"hexValue":"74727565","id":9694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"41767:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9678,"id":9695,"nodeType":"Return","src":"41760:11:35"}},{"expression":{"id":9701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9697,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9681,"src":"41782:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9699,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"41784:20:35","memberName":"selfMintingEventMode","nodeType":"MemberAccess","referencedDeclaration":8504,"src":"41782:22:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9700,"name":"newMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"41807:7:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"src":"41782:32:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"id":9702,"nodeType":"ExpressionStatement","src":"41782:32:35"},{"eventCall":{"arguments":[{"id":9704,"name":"oldMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9687,"src":"41857:7:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},{"id":9705,"name":"newMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"41866:7:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}],"id":9703,"name":"SelfMintingEventModeUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8648,"src":"41829:27:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_enum$_SelfMintingEventMode_$234_$_t_enum$_SelfMintingEventMode_$234_$returns$__$","typeString":"function (enum SelfMintingEventMode,enum SelfMintingEventMode)"}},"id":9706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41829:45:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9707,"nodeType":"EmitStatement","src":"41824:50:35"},{"expression":{"hexValue":"74727565","id":9708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"41892:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9678,"id":9709,"nodeType":"Return","src":"41885:11:35"}]},"documentation":{"id":9668,"nodeType":"StructuredDocumentation","src":"41408:64:35","text":" @inheritdoc IIssuanceAllocationAdministration"},"functionSelector":"13a7855d","id":9711,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9674,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"41558:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9675,"kind":"modifierInvocation","modifierName":{"id":9673,"name":"onlyRole","nameLocations":["41549:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"41549:8:35"},"nodeType":"ModifierInvocation","src":"41549:23:35"}],"name":"setSelfMintingEventMode","nameLocation":"41486:23:35","nodeType":"FunctionDefinition","parameters":{"id":9672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9671,"mutability":"mutable","name":"newMode","nameLocation":"41531:7:35","nodeType":"VariableDeclaration","scope":9711,"src":"41510:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"typeName":{"id":9670,"nodeType":"UserDefinedTypeName","pathNode":{"id":9669,"name":"SelfMintingEventMode","nameLocations":["41510:20:35"],"nodeType":"IdentifierPath","referencedDeclaration":234,"src":"41510:20:35"},"referencedDeclaration":234,"src":"41510:20:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"visibility":"internal"}],"src":"41509:30:35"},"returnParameters":{"id":9678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9677,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9711,"src":"41582:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9676,"name":"bool","nodeType":"ElementaryTypeName","src":"41582:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41581:6:35"},"scope":10671,"src":"41477:426:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[129],"body":{"id":9723,"nodeType":"Block","src":"42067:75:35","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9719,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"42084:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":9720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42084:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9721,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42115:20:35","memberName":"selfMintingEventMode","nodeType":"MemberAccess","referencedDeclaration":8504,"src":"42084:51:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"functionReturnParameters":9718,"id":9722,"nodeType":"Return","src":"42077:58:35"}]},"documentation":{"id":9712,"nodeType":"StructuredDocumentation","src":"41909:64:35","text":" @inheritdoc IIssuanceAllocationAdministration"},"functionSelector":"93c911a8","id":9724,"implemented":true,"kind":"function","modifiers":[],"name":"getSelfMintingEventMode","nameLocation":"41987:23:35","nodeType":"FunctionDefinition","overrides":{"id":9714,"nodeType":"OverrideSpecifier","overrides":[],"src":"42027:8:35"},"parameters":{"id":9713,"nodeType":"ParameterList","parameters":[],"src":"42010:2:35"},"returnParameters":{"id":9718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9717,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9724,"src":"42045:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"},"typeName":{"id":9716,"nodeType":"UserDefinedTypeName","pathNode":{"id":9715,"name":"SelfMintingEventMode","nameLocations":["42045:20:35"],"nodeType":"IdentifierPath","referencedDeclaration":234,"src":"42045:20:35"},"referencedDeclaration":234,"src":"42045:20:35","typeDescriptions":{"typeIdentifier":"t_enum$_SelfMintingEventMode_$234","typeString":"enum SelfMintingEventMode"}},"visibility":"internal"}],"src":"42044:22:35"},"scope":10671,"src":"41978:164:35","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9778,"nodeType":"Block","src":"42822:847:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9732,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9727,"src":"42910:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42928:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42920:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9733,"name":"address","nodeType":"ElementaryTypeName","src":"42920:7:35","typeDescriptions":{}}},"id":9736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42920:10:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42910:20:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9740,"nodeType":"IfStatement","src":"42906:37:35","trueBody":{"expression":{"hexValue":"74727565","id":9738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"42939:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9731,"id":9739,"nodeType":"Return","src":"42932:11:35"}},{"assignments":[9743],"declarations":[{"constant":false,"id":9743,"mutability":"mutable","name":"$","nameLocation":"42984:1:35","nodeType":"VariableDeclaration","scope":9778,"src":"42954:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":9742,"nodeType":"UserDefinedTypeName","pathNode":{"id":9741,"name":"IssuanceAllocatorData","nameLocations":["42954:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"42954:21:35"},"referencedDeclaration":8505,"src":"42954:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":9746,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9744,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"42988:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":9745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42988:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"42954:64:35"},{"assignments":[9749],"declarations":[{"constant":false,"id":9749,"mutability":"mutable","name":"targetData","nameLocation":"43053:10:35","nodeType":"VariableDeclaration","scope":9778,"src":"43028:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":9748,"nodeType":"UserDefinedTypeName","pathNode":{"id":9747,"name":"AllocationTarget","nameLocations":["43028:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"43028:16:35"},"referencedDeclaration":260,"src":"43028:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":9754,"initialValue":{"baseExpression":{"expression":{"id":9750,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"43066:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43068:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"43066:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":9753,"indexExpression":{"id":9752,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9727,"src":"43086:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"43066:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"43028:65:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9755,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"43253:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43259:6:35","memberName":"number","nodeType":"MemberAccess","src":"43253:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":9757,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9749,"src":"43269:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43280:23:35","memberName":"lastChangeNotifiedBlock","nodeType":"MemberAccess","referencedDeclaration":259,"src":"43269:34:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43253:50:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9762,"nodeType":"IfStatement","src":"43249:67:35","trueBody":{"expression":{"hexValue":"74727565","id":9760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43312:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9731,"id":9761,"nodeType":"Return","src":"43305:11:35"}},{"expression":{"id":9768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9763,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9749,"src":"43398:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"43409:23:35","memberName":"lastChangeNotifiedBlock","nodeType":"MemberAccess","referencedDeclaration":259,"src":"43398:34:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9766,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"43435:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43441:6:35","memberName":"number","nodeType":"MemberAccess","src":"43435:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43398:49:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9769,"nodeType":"ExpressionStatement","src":"43398:49:35"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":9771,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9727,"src":"43601:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9770,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"43585:15:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}},"id":9772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43585:23:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}},"id":9773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43609:30:35","memberName":"beforeIssuanceAllocationChange","nodeType":"MemberAccess","referencedDeclaration":282,"src":"43585:54:35","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":9774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43585:56:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9775,"nodeType":"ExpressionStatement","src":"43585:56:35"},{"expression":{"hexValue":"74727565","id":9776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43658:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9731,"id":9777,"nodeType":"Return","src":"43651:11:35"}]},"documentation":{"id":9725,"nodeType":"StructuredDocumentation","src":"42180:575:35","text":" @notice Internal function to notify a target about an upcoming allocation change\n @dev Uses per-target lastChangeNotifiedBlock to prevent reentrancy and duplicate notifications.\n Will revert if the target's beforeIssuanceAllocationChange call fails.\n Use forceTargetNoChangeNotificationBlock to skip notification for malfunctioning targets.\n @param target Address of the target to notify\n @return True if notification was sent or already sent for this block. Always returns true for address(0) without notifying."},"id":9779,"implemented":true,"kind":"function","modifiers":[],"name":"_notifyTarget","nameLocation":"42769:13:35","nodeType":"FunctionDefinition","parameters":{"id":9728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9727,"mutability":"mutable","name":"target","nameLocation":"42791:6:35","nodeType":"VariableDeclaration","scope":9779,"src":"42783:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9726,"name":"address","nodeType":"ElementaryTypeName","src":"42783:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"42782:16:35"},"returnParameters":{"id":9731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9730,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9779,"src":"42816:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9729,"name":"bool","nodeType":"ElementaryTypeName","src":"42816:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"42815:6:35"},"scope":10671,"src":"42760:909:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[71],"body":{"id":9797,"nodeType":"Block","src":"44030:45:35","statements":[{"expression":{"arguments":[{"id":9794,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9782,"src":"44061:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9793,"name":"_notifyTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9779,"src":"44047:13:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) returns (bool)"}},"id":9795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44047:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9792,"id":9796,"nodeType":"Return","src":"44040:28:35"}]},"documentation":{"id":9780,"nodeType":"StructuredDocumentation","src":"43675:242:35","text":" @inheritdoc IIssuanceAllocationAdministration\n @dev Implementation details:\n - The target will be notified at most once per block to prevent reentrancy looping\n - Will revert if target notification reverts"},"functionSelector":"4887693c","id":9798,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9786,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"43987:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9787,"kind":"modifierInvocation","modifierName":{"id":9785,"name":"onlyRole","nameLocations":["43978:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"43978:8:35"},"nodeType":"ModifierInvocation","src":"43978:23:35"},{"id":9789,"kind":"modifierInvocation","modifierName":{"id":9788,"name":"nonReentrant","nameLocations":["44002:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"44002:12:35"},"nodeType":"ModifierInvocation","src":"44002:12:35"}],"name":"notifyTarget","nameLocation":"43931:12:35","nodeType":"FunctionDefinition","overrides":{"id":9784,"nodeType":"OverrideSpecifier","overrides":[],"src":"43969:8:35"},"parameters":{"id":9783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9782,"mutability":"mutable","name":"target","nameLocation":"43952:6:35","nodeType":"VariableDeclaration","scope":9798,"src":"43944:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9781,"name":"address","nodeType":"ElementaryTypeName","src":"43944:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"43943:16:35"},"returnParameters":{"id":9792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9798,"src":"44024:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9790,"name":"bool","nodeType":"ElementaryTypeName","src":"44024:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"44023:6:35"},"scope":10671,"src":"43922:153:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[81],"body":{"id":9834,"nodeType":"Block","src":"44636:522:35","statements":[{"assignments":[9814],"declarations":[{"constant":false,"id":9814,"mutability":"mutable","name":"$","nameLocation":"44676:1:35","nodeType":"VariableDeclaration","scope":9834,"src":"44646:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":9813,"nodeType":"UserDefinedTypeName","pathNode":{"id":9812,"name":"IssuanceAllocatorData","nameLocations":["44646:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"44646:21:35"},"referencedDeclaration":8505,"src":"44646:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":9817,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9815,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"44680:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":9816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44680:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"44646:64:35"},{"assignments":[9820],"declarations":[{"constant":false,"id":9820,"mutability":"mutable","name":"targetData","nameLocation":"44745:10:35","nodeType":"VariableDeclaration","scope":9834,"src":"44720:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":9819,"nodeType":"UserDefinedTypeName","pathNode":{"id":9818,"name":"AllocationTarget","nameLocations":["44720:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"44720:16:35"},"referencedDeclaration":260,"src":"44720:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":9825,"initialValue":{"baseExpression":{"expression":{"id":9821,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9814,"src":"44758:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9822,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44760:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"44758:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":9824,"indexExpression":{"id":9823,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9801,"src":"44778:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"44758:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"44720:65:35"},{"expression":{"id":9830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9826,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9820,"src":"45075:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":9828,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"45086:23:35","memberName":"lastChangeNotifiedBlock","nodeType":"MemberAccess","referencedDeclaration":259,"src":"45075:34:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9829,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9803,"src":"45112:11:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"45075:48:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9831,"nodeType":"ExpressionStatement","src":"45075:48:35"},{"expression":{"id":9832,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9803,"src":"45140:11:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9811,"id":9833,"nodeType":"Return","src":"45133:18:35"}]},"documentation":{"id":9799,"nodeType":"StructuredDocumentation","src":"44081:385:35","text":" @inheritdoc IIssuanceAllocationAdministration\n @dev Implementation details:\n - This can be used to enable notification to be sent again (by setting to a past block) or to prevent notification until a future block (by setting to current or future block)\n - Returns the block number that was set, always equal to blockNumber in current implementation"},"functionSelector":"7c92330b","id":9835,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9807,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"44603:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9808,"kind":"modifierInvocation","modifierName":{"id":9806,"name":"onlyRole","nameLocations":["44594:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"44594:8:35"},"nodeType":"ModifierInvocation","src":"44594:23:35"}],"name":"forceTargetNoChangeNotificationBlock","nameLocation":"44480:36:35","nodeType":"FunctionDefinition","overrides":{"id":9805,"nodeType":"OverrideSpecifier","overrides":[],"src":"44585:8:35"},"parameters":{"id":9804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9801,"mutability":"mutable","name":"target","nameLocation":"44534:6:35","nodeType":"VariableDeclaration","scope":9835,"src":"44526:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9800,"name":"address","nodeType":"ElementaryTypeName","src":"44526:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9803,"mutability":"mutable","name":"blockNumber","nameLocation":"44558:11:35","nodeType":"VariableDeclaration","scope":9835,"src":"44550:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9802,"name":"uint256","nodeType":"ElementaryTypeName","src":"44550:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"44516:59:35"},"returnParameters":{"id":9811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9835,"src":"44627:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9809,"name":"uint256","nodeType":"ElementaryTypeName","src":"44627:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"44626:9:35"},"scope":10671,"src":"44471:687:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[35],"body":{"id":9863,"nodeType":"Block","src":"45408:100:35","statements":[{"expression":{"arguments":[{"arguments":[{"id":9855,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9839,"src":"45454:6:35","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}],"id":9854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45446:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9853,"name":"address","nodeType":"ElementaryTypeName","src":"45446:7:35","typeDescriptions":{}}},"id":9856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45446:15:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9857,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"45463:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":9858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45485:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":9859,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"45488:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45494:6:35","memberName":"number","nodeType":"MemberAccess","src":"45488:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9852,"name":"_setTargetAllocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10153,"src":"45425:20:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256,uint256) returns (bool)"}},"id":9861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45425:76:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9851,"id":9862,"nodeType":"Return","src":"45418:83:35"}]},"documentation":{"id":9836,"nodeType":"StructuredDocumentation","src":"45164:64:35","text":" @inheritdoc IIssuanceAllocationAdministration"},"functionSelector":"443990fa","id":9864,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9845,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"45365:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9846,"kind":"modifierInvocation","modifierName":{"id":9844,"name":"onlyRole","nameLocations":["45356:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"45356:8:35"},"nodeType":"ModifierInvocation","src":"45356:23:35"},{"id":9848,"kind":"modifierInvocation","modifierName":{"id":9847,"name":"nonReentrant","nameLocations":["45380:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"45380:12:35"},"nodeType":"ModifierInvocation","src":"45380:12:35"}],"name":"setTargetAllocation","nameLocation":"45242:19:35","nodeType":"FunctionDefinition","overrides":{"id":9843,"nodeType":"OverrideSpecifier","overrides":[],"src":"45347:8:35"},"parameters":{"id":9842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9839,"mutability":"mutable","name":"target","nameLocation":"45287:6:35","nodeType":"VariableDeclaration","scope":9864,"src":"45271:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"},"typeName":{"id":9838,"nodeType":"UserDefinedTypeName","pathNode":{"id":9837,"name":"IIssuanceTarget","nameLocations":["45271:15:35"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"45271:15:35"},"referencedDeclaration":289,"src":"45271:15:35","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}},"visibility":"internal"},{"constant":false,"id":9841,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"45311:20:35","nodeType":"VariableDeclaration","scope":9864,"src":"45303:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9840,"name":"uint256","nodeType":"ElementaryTypeName","src":"45303:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45261:76:35"},"returnParameters":{"id":9851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9850,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9864,"src":"45402:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9849,"name":"bool","nodeType":"ElementaryTypeName","src":"45402:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"45401:6:35"},"scope":10671,"src":"45233:275:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[48],"body":{"id":9894,"nodeType":"Block","src":"45791:114:35","statements":[{"expression":{"arguments":[{"arguments":[{"id":9886,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9868,"src":"45837:6:35","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}],"id":9885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45829:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9884,"name":"address","nodeType":"ElementaryTypeName","src":"45829:7:35","typeDescriptions":{}}},"id":9887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45829:15:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9888,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9870,"src":"45846:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9889,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9872,"src":"45868:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9890,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"45885:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45891:6:35","memberName":"number","nodeType":"MemberAccess","src":"45885:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9883,"name":"_setTargetAllocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10153,"src":"45808:20:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256,uint256) returns (bool)"}},"id":9892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45808:90:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9882,"id":9893,"nodeType":"Return","src":"45801:97:35"}]},"documentation":{"id":9865,"nodeType":"StructuredDocumentation","src":"45514:64:35","text":" @inheritdoc IIssuanceAllocationAdministration"},"functionSelector":"647b3682","id":9895,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9876,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"45748:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9877,"kind":"modifierInvocation","modifierName":{"id":9875,"name":"onlyRole","nameLocations":["45739:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"45739:8:35"},"nodeType":"ModifierInvocation","src":"45739:23:35"},{"id":9879,"kind":"modifierInvocation","modifierName":{"id":9878,"name":"nonReentrant","nameLocations":["45763:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"45763:12:35"},"nodeType":"ModifierInvocation","src":"45763:12:35"}],"name":"setTargetAllocation","nameLocation":"45592:19:35","nodeType":"FunctionDefinition","overrides":{"id":9874,"nodeType":"OverrideSpecifier","overrides":[],"src":"45730:8:35"},"parameters":{"id":9873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9868,"mutability":"mutable","name":"target","nameLocation":"45637:6:35","nodeType":"VariableDeclaration","scope":9895,"src":"45621:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"},"typeName":{"id":9867,"nodeType":"UserDefinedTypeName","pathNode":{"id":9866,"name":"IIssuanceTarget","nameLocations":["45621:15:35"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"45621:15:35"},"referencedDeclaration":289,"src":"45621:15:35","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}},"visibility":"internal"},{"constant":false,"id":9870,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"45661:20:35","nodeType":"VariableDeclaration","scope":9895,"src":"45653:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9869,"name":"uint256","nodeType":"ElementaryTypeName","src":"45653:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9872,"mutability":"mutable","name":"selfMintingRate","nameLocation":"45699:15:35","nodeType":"VariableDeclaration","scope":9895,"src":"45691:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9871,"name":"uint256","nodeType":"ElementaryTypeName","src":"45691:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"45611:109:35"},"returnParameters":{"id":9882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9881,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9895,"src":"45785:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9880,"name":"bool","nodeType":"ElementaryTypeName","src":"45785:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"45784:6:35"},"scope":10671,"src":"45583:322:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[63],"body":{"id":9926,"nodeType":"Block","src":"47258:121:35","statements":[{"expression":{"arguments":[{"arguments":[{"id":9919,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9899,"src":"47304:6:35","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}],"id":9918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"47296:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9917,"name":"address","nodeType":"ElementaryTypeName","src":"47296:7:35","typeDescriptions":{}}},"id":9920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47296:15:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9921,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9901,"src":"47313:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9922,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9903,"src":"47335:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9923,"name":"minDistributedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9905,"src":"47352:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9916,"name":"_setTargetAllocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10153,"src":"47275:20:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256,uint256) returns (bool)"}},"id":9924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47275:97:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9915,"id":9925,"nodeType":"Return","src":"47268:104:35"}]},"documentation":{"id":9896,"nodeType":"StructuredDocumentation","src":"45911:1097:35","text":" @inheritdoc IIssuanceAllocationAdministration\n @dev Implementation details:\n - Requires distribution has reached at least minDistributedBlock issuance to change allocation\n - This allows configuration changes while paused by being deliberate about which block to distribute to\n - If the new allocations are the same as the current allocations, this function is a no-op\n - If both allocations are 0 and the target doesn't exist, this function is a no-op\n - If both allocations are 0 and the target exists, the target will be removed\n - If any allocation is non-zero and the target doesn't exist, the target will be added\n - Will revert if the total allocation would exceed available capacity (default target + current target allocation)\n - Will revert if attempting to add a target that doesn't support IIssuanceTarget\n @dev Self-minting targets must call getTargetIssuancePerBlock to determine their issuance and mint\n accordingly. See contract header for details on self-minting vs allocator-minting allocation."},"functionSelector":"c2cb3544","id":9927,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9909,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"47215:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9910,"kind":"modifierInvocation","modifierName":{"id":9908,"name":"onlyRole","nameLocations":["47206:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"47206:8:35"},"nodeType":"ModifierInvocation","src":"47206:23:35"},{"id":9912,"kind":"modifierInvocation","modifierName":{"id":9911,"name":"nonReentrant","nameLocations":["47230:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"47230:12:35"},"nodeType":"ModifierInvocation","src":"47230:12:35"}],"name":"setTargetAllocation","nameLocation":"47022:19:35","nodeType":"FunctionDefinition","overrides":{"id":9907,"nodeType":"OverrideSpecifier","overrides":[],"src":"47197:8:35"},"parameters":{"id":9906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9899,"mutability":"mutable","name":"target","nameLocation":"47067:6:35","nodeType":"VariableDeclaration","scope":9927,"src":"47051:22:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"},"typeName":{"id":9898,"nodeType":"UserDefinedTypeName","pathNode":{"id":9897,"name":"IIssuanceTarget","nameLocations":["47051:15:35"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"47051:15:35"},"referencedDeclaration":289,"src":"47051:15:35","typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}},"visibility":"internal"},{"constant":false,"id":9901,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"47091:20:35","nodeType":"VariableDeclaration","scope":9927,"src":"47083:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9900,"name":"uint256","nodeType":"ElementaryTypeName","src":"47083:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9903,"mutability":"mutable","name":"selfMintingRate","nameLocation":"47129:15:35","nodeType":"VariableDeclaration","scope":9927,"src":"47121:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9902,"name":"uint256","nodeType":"ElementaryTypeName","src":"47121:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9905,"mutability":"mutable","name":"minDistributedBlock","nameLocation":"47162:19:35","nodeType":"VariableDeclaration","scope":9927,"src":"47154:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9904,"name":"uint256","nodeType":"ElementaryTypeName","src":"47154:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47041:146:35"},"returnParameters":{"id":9915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9914,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9927,"src":"47252:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9913,"name":"bool","nodeType":"ElementaryTypeName","src":"47252:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"47251:6:35"},"scope":10671,"src":"47013:366:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[89],"body":{"id":9947,"nodeType":"Block","src":"47584:67:35","statements":[{"expression":{"arguments":[{"id":9942,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9930,"src":"47619:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9943,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"47631:5:35","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47637:6:35","memberName":"number","nodeType":"MemberAccess","src":"47631:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9941,"name":"_setDefaultTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10090,"src":"47601:17:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) returns (bool)"}},"id":9945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47601:43:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9940,"id":9946,"nodeType":"Return","src":"47594:50:35"}]},"documentation":{"id":9928,"nodeType":"StructuredDocumentation","src":"47385:64:35","text":" @inheritdoc IIssuanceAllocationAdministration"},"functionSelector":"697cf322","id":9948,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9934,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"47541:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9935,"kind":"modifierInvocation","modifierName":{"id":9933,"name":"onlyRole","nameLocations":["47532:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"47532:8:35"},"nodeType":"ModifierInvocation","src":"47532:23:35"},{"id":9937,"kind":"modifierInvocation","modifierName":{"id":9936,"name":"nonReentrant","nameLocations":["47556:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"47556:12:35"},"nodeType":"ModifierInvocation","src":"47556:12:35"}],"name":"setDefaultTarget","nameLocation":"47463:16:35","nodeType":"FunctionDefinition","overrides":{"id":9932,"nodeType":"OverrideSpecifier","overrides":[],"src":"47523:8:35"},"parameters":{"id":9931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9930,"mutability":"mutable","name":"newAddress","nameLocation":"47497:10:35","nodeType":"VariableDeclaration","scope":9948,"src":"47489:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9929,"name":"address","nodeType":"ElementaryTypeName","src":"47489:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"47479:34:35"},"returnParameters":{"id":9940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9948,"src":"47578:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9938,"name":"bool","nodeType":"ElementaryTypeName","src":"47578:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"47577:6:35"},"scope":10671,"src":"47454:197:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[99],"body":{"id":9969,"nodeType":"Block","src":"47893:74:35","statements":[{"expression":{"arguments":[{"id":9965,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9951,"src":"47928:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9966,"name":"minDistributedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9953,"src":"47940:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9964,"name":"_setDefaultTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10090,"src":"47910:17:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) returns (bool)"}},"id":9967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47910:50:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9963,"id":9968,"nodeType":"Return","src":"47903:57:35"}]},"documentation":{"id":9949,"nodeType":"StructuredDocumentation","src":"47657:64:35","text":" @inheritdoc IIssuanceAllocationAdministration"},"functionSelector":"d012a15b","id":9970,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9957,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"47850:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9958,"kind":"modifierInvocation","modifierName":{"id":9956,"name":"onlyRole","nameLocations":["47841:8:35"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"47841:8:35"},"nodeType":"ModifierInvocation","src":"47841:23:35"},{"id":9960,"kind":"modifierInvocation","modifierName":{"id":9959,"name":"nonReentrant","nameLocations":["47865:12:35"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"47865:12:35"},"nodeType":"ModifierInvocation","src":"47865:12:35"}],"name":"setDefaultTarget","nameLocation":"47735:16:35","nodeType":"FunctionDefinition","overrides":{"id":9955,"nodeType":"OverrideSpecifier","overrides":[],"src":"47832:8:35"},"parameters":{"id":9954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9951,"mutability":"mutable","name":"newAddress","nameLocation":"47769:10:35","nodeType":"VariableDeclaration","scope":9970,"src":"47761:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9950,"name":"address","nodeType":"ElementaryTypeName","src":"47761:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9953,"mutability":"mutable","name":"minDistributedBlock","nameLocation":"47797:19:35","nodeType":"VariableDeclaration","scope":9970,"src":"47789:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9952,"name":"uint256","nodeType":"ElementaryTypeName","src":"47789:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"47751:71:35"},"returnParameters":{"id":9963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9962,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9970,"src":"47887:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9961,"name":"bool","nodeType":"ElementaryTypeName","src":"47887:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"47886:6:35"},"scope":10671,"src":"47726:241:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10089,"nodeType":"Block","src":"48897:1795:35","statements":[{"assignments":[9982],"declarations":[{"constant":false,"id":9982,"mutability":"mutable","name":"$","nameLocation":"48937:1:35","nodeType":"VariableDeclaration","scope":10089,"src":"48907:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":9981,"nodeType":"UserDefinedTypeName","pathNode":{"id":9980,"name":"IssuanceAllocatorData","nameLocations":["48907:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"48907:21:35"},"referencedDeclaration":8505,"src":"48907:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":9985,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":9983,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"48941:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":9984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48941:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"48907:64:35"},{"assignments":[9987],"declarations":[{"constant":false,"id":9987,"mutability":"mutable","name":"oldAddress","nameLocation":"48990:10:35","nodeType":"VariableDeclaration","scope":10089,"src":"48982:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9986,"name":"address","nodeType":"ElementaryTypeName","src":"48982:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9992,"initialValue":{"baseExpression":{"expression":{"id":9988,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"49003:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":9989,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49005:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"49003:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9991,"indexExpression":{"hexValue":"30","id":9990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49021:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"49003:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"48982:41:35"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9993,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"49037:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9994,"name":"oldAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"49051:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"49037:24:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9998,"nodeType":"IfStatement","src":"49033:41:35","trueBody":{"expression":{"hexValue":"74727565","id":9996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49070:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9979,"id":9997,"nodeType":"Return","src":"49063:11:35"}},{"body":{"id":10023,"nodeType":"Block","src":"49562:115:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":10012,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"49584:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10013,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49586:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"49584:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10015,"indexExpression":{"id":10014,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10000,"src":"49602:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"49584:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10016,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"49608:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"49584:34:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":10019,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"49654:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10018,"name":"CannotSetDefaultToAllocatedTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"49620:33:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49620:45:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10011,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"49576:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49576:90:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10022,"nodeType":"ExpressionStatement","src":"49576:90:35"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10000,"src":"49527:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":10004,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"49531:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49533:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"49531:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"49549:6:35","memberName":"length","nodeType":"MemberAccess","src":"49531:24:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"49527:28:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10024,"initializationExpression":{"assignments":[10000],"declarations":[{"constant":false,"id":10000,"mutability":"mutable","name":"i","nameLocation":"49520:1:35","nodeType":"VariableDeclaration","scope":10024,"src":"49512:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9999,"name":"uint256","nodeType":"ElementaryTypeName","src":"49512:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10002,"initialValue":{"hexValue":"31","id":10001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49524:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"49512:13:35"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":10009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"49557:3:35","subExpression":{"id":10008,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10000,"src":"49559:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10010,"nodeType":"ExpressionStatement","src":"49557:3:35"},"nodeType":"ForStatement","src":"49507:170:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10025,"name":"_distributeIssuance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8967,"src":"49691:19:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":10026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49691:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10027,"name":"minDistributedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9975,"src":"49715:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"49691:43:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10031,"nodeType":"IfStatement","src":"49687:61:35","trueBody":{"expression":{"hexValue":"66616c7365","id":10029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"49743:5:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":9979,"id":10030,"nodeType":"Return","src":"49736:12:35"}},{"expression":{"arguments":[{"id":10033,"name":"oldAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"49843:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10032,"name":"_notifyTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9779,"src":"49829:13:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) returns (bool)"}},"id":10034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49829:25:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10035,"nodeType":"ExpressionStatement","src":"49829:25:35"},{"expression":{"arguments":[{"id":10037,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"49878:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10036,"name":"_notifyTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9779,"src":"49864:13:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) returns (bool)"}},"id":10038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49864:25:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10039,"nodeType":"ExpressionStatement","src":"49864:25:35"},{"assignments":[10041],"declarations":[{"constant":false,"id":10041,"mutability":"mutable","name":"newAddressNotificationBlock","nameLocation":"49997:27:35","nodeType":"VariableDeclaration","scope":10089,"src":"49989:35:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10040,"name":"uint256","nodeType":"ElementaryTypeName","src":"49989:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10047,"initialValue":{"expression":{"baseExpression":{"expression":{"id":10042,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"50027:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10043,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"50029:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"50027:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10045,"indexExpression":{"id":10044,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"50047:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50027:31:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"id":10046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"50059:23:35","memberName":"lastChangeNotifiedBlock","nodeType":"MemberAccess","referencedDeclaration":259,"src":"50027:55:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"49989:93:35"},{"expression":{"id":10054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":10048,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"50248:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"50250:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"50248:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10052,"indexExpression":{"hexValue":"30","id":10050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50266:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50248:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10053,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"50271:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"50248:33:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10055,"nodeType":"ExpressionStatement","src":"50248:33:35"},{"expression":{"id":10065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":10056,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"50291:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"50293:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"50291:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10060,"indexExpression":{"id":10058,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"50311:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50291:31:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"id":10061,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"50325:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10062,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"50327:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"50325:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10064,"indexExpression":{"id":10063,"name":"oldAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"50345:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50325:31:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"src":"50291:65:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"id":10066,"nodeType":"ExpressionStatement","src":"50291:65:35"},{"expression":{"id":10071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"50366:38:35","subExpression":{"baseExpression":{"expression":{"id":10067,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"50373:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"50375:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"50373:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10070,"indexExpression":{"id":10069,"name":"oldAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"50393:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"50373:31:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10072,"nodeType":"ExpressionStatement","src":"50366:38:35"},{"expression":{"id":10080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":10073,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9982,"src":"50519:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"50521:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"50519:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10077,"indexExpression":{"id":10075,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"50539:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"50519:31:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"id":10078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"50551:23:35","memberName":"lastChangeNotifiedBlock","nodeType":"MemberAccess","referencedDeclaration":259,"src":"50519:55:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10079,"name":"newAddressNotificationBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10041,"src":"50577:27:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"50519:85:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10081,"nodeType":"ExpressionStatement","src":"50519:85:35"},{"eventCall":{"arguments":[{"id":10083,"name":"oldAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"50641:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10084,"name":"newAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"50653:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10082,"name":"DefaultTargetUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8595,"src":"50620:20:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":10085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50620:44:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10086,"nodeType":"EmitStatement","src":"50615:49:35"},{"expression":{"hexValue":"74727565","id":10087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"50681:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9979,"id":10088,"nodeType":"Return","src":"50674:11:35"}]},"documentation":{"id":9971,"nodeType":"StructuredDocumentation","src":"47973:819:35","text":" @notice Internal implementation for setting default target\n @param newAddress The address to set as the new default target\n @param minDistributedBlock Minimum block number that distribution must have reached\n @return True if the value is applied (including if already the case), false if not applied due to paused state\n @dev The default target automatically receives the portion of issuance not allocated to other targets\n @dev This maintains the invariant that total allocation always equals issuancePerBlock\n @dev Reverts if attempting to set to an address that has a normal (non-default) allocation\n @dev Allocation data is copied from the old default to the new default, including lastChangeNotifiedBlock\n @dev No-op if setting to the same address"},"id":10090,"implemented":true,"kind":"function","modifiers":[],"name":"_setDefaultTarget","nameLocation":"48806:17:35","nodeType":"FunctionDefinition","parameters":{"id":9976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9973,"mutability":"mutable","name":"newAddress","nameLocation":"48832:10:35","nodeType":"VariableDeclaration","scope":10090,"src":"48824:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9972,"name":"address","nodeType":"ElementaryTypeName","src":"48824:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9975,"mutability":"mutable","name":"minDistributedBlock","nameLocation":"48852:19:35","nodeType":"VariableDeclaration","scope":10090,"src":"48844:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9974,"name":"uint256","nodeType":"ElementaryTypeName","src":"48844:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"48823:49:35"},"returnParameters":{"id":9979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9978,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10090,"src":"48891:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9977,"name":"bool","nodeType":"ElementaryTypeName","src":"48891:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"48890:6:35"},"scope":10671,"src":"48797:1895:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10152,"nodeType":"Block","src":"51411:1178:35","statements":[{"condition":{"id":10109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"51425:73:35","subExpression":{"arguments":[{"id":10105,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"51452:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10106,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10095,"src":"51460:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10107,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10097,"src":"51482:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10104,"name":"_validateAllocationChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10243,"src":"51426:25:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view returns (bool)"}},"id":10108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51426:72:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10112,"nodeType":"IfStatement","src":"51421:90:35","trueBody":{"expression":{"hexValue":"74727565","id":10110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"51507:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":10103,"id":10111,"nodeType":"Return","src":"51500:11:35"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10113,"name":"_distributeIssuance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8967,"src":"51526:19:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":10114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51526:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10115,"name":"minDistributedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10099,"src":"51550:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"51526:43:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10119,"nodeType":"IfStatement","src":"51522:61:35","trueBody":{"expression":{"hexValue":"66616c7365","id":10117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"51578:5:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":10103,"id":10118,"nodeType":"Return","src":"51571:12:35"}},{"expression":{"arguments":[{"id":10121,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"51608:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10120,"name":"_notifyTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9779,"src":"51594:13:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) returns (bool)"}},"id":10122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51594:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10123,"nodeType":"ExpressionStatement","src":"51594:21:35"},{"expression":{"arguments":[{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10125,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"51639:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51639:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"51670:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"51639:46:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10129,"indexExpression":{"hexValue":"30","id":10128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51686:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"51639:49:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10124,"name":"_notifyTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9779,"src":"51625:13:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) returns (bool)"}},"id":10130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51625:64:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10131,"nodeType":"ExpressionStatement","src":"51625:64:35"},{"expression":{"arguments":[{"id":10133,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"52292:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10134,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10095,"src":"52300:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10135,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10097,"src":"52322:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10132,"name":"_validateAndUpdateTotalAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"52257:34:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":10136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52257:81:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10137,"nodeType":"ExpressionStatement","src":"52257:81:35"},{"expression":{"arguments":[{"id":10139,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"52429:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10140,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10095,"src":"52437:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10141,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10097,"src":"52459:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10138,"name":"_updateTargetAllocationData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10395,"src":"52401:27:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":10142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52401:74:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10143,"nodeType":"ExpressionStatement","src":"52401:74:35"},{"eventCall":{"arguments":[{"id":10145,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"52515:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10146,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10095,"src":"52523:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10147,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10097,"src":"52545:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10144,"name":"TargetAllocationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8581,"src":"52491:23:35","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":10148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52491:70:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10149,"nodeType":"EmitStatement","src":"52486:75:35"},{"expression":{"hexValue":"74727565","id":10150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"52578:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":10103,"id":10151,"nodeType":"Return","src":"52571:11:35"}]},"documentation":{"id":10091,"nodeType":"StructuredDocumentation","src":"50698:516:35","text":" @notice Internal implementation for setting target allocation\n @param target Address of the target to update\n @param allocatorMintingRate Allocator-minting rate for the target (tokens per block)\n @param selfMintingRate Self-minting rate for the target (tokens per block)\n @param minDistributedBlock Minimum block number that distribution must have reached\n @return True if the value is applied (including if already the case), false if not applied due to paused state"},"id":10153,"implemented":true,"kind":"function","modifiers":[],"name":"_setTargetAllocation","nameLocation":"51228:20:35","nodeType":"FunctionDefinition","parameters":{"id":10100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10093,"mutability":"mutable","name":"target","nameLocation":"51266:6:35","nodeType":"VariableDeclaration","scope":10153,"src":"51258:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10092,"name":"address","nodeType":"ElementaryTypeName","src":"51258:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10095,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"51290:20:35","nodeType":"VariableDeclaration","scope":10153,"src":"51282:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10094,"name":"uint256","nodeType":"ElementaryTypeName","src":"51282:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10097,"mutability":"mutable","name":"selfMintingRate","nameLocation":"51328:15:35","nodeType":"VariableDeclaration","scope":10153,"src":"51320:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10096,"name":"uint256","nodeType":"ElementaryTypeName","src":"51320:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10099,"mutability":"mutable","name":"minDistributedBlock","nameLocation":"51361:19:35","nodeType":"VariableDeclaration","scope":10153,"src":"51353:27:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10098,"name":"uint256","nodeType":"ElementaryTypeName","src":"51353:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"51248:138:35"},"returnParameters":{"id":10103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10153,"src":"51405:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10101,"name":"bool","nodeType":"ElementaryTypeName","src":"51405:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"51404:6:35"},"scope":10671,"src":"51219:1370:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10242,"nodeType":"Block","src":"53302:768:35","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10166,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10156,"src":"53320:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53338:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53330:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10167,"name":"address","nodeType":"ElementaryTypeName","src":"53330:7:35","typeDescriptions":{}}},"id":10170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53330:10:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"53320:20:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10172,"name":"TargetAddressCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"53342:25:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53342:27:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10165,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"53312:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53312:58:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10175,"nodeType":"ExpressionStatement","src":"53312:58:35"},{"assignments":[10178],"declarations":[{"constant":false,"id":10178,"mutability":"mutable","name":"$","nameLocation":"53411:1:35","nodeType":"VariableDeclaration","scope":10242,"src":"53381:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":10177,"nodeType":"UserDefinedTypeName","pathNode":{"id":10176,"name":"IssuanceAllocatorData","nameLocations":["53381:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"53381:21:35"},"referencedDeclaration":8505,"src":"53381:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":10181,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10179,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"53415:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53415:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"53381:64:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10183,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10156,"src":"53464:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"expression":{"id":10184,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10178,"src":"53474:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10185,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"53476:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"53474:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10187,"indexExpression":{"hexValue":"30","id":10186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53492:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53474:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"53464:30:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"baseExpression":{"expression":{"id":10190,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10178,"src":"53532:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"53534:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"53532:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10193,"indexExpression":{"hexValue":"30","id":10192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53550:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53532:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10189,"name":"CannotSetAllocationForDefaultTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8556,"src":"53496:35:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53496:57:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10182,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"53456:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53456:98:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10196,"nodeType":"ExpressionStatement","src":"53456:98:35"},{"assignments":[10199],"declarations":[{"constant":false,"id":10199,"mutability":"mutable","name":"targetData","nameLocation":"53590:10:35","nodeType":"VariableDeclaration","scope":10242,"src":"53565:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":10198,"nodeType":"UserDefinedTypeName","pathNode":{"id":10197,"name":"AllocationTarget","nameLocations":["53565:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"53565:16:35"},"referencedDeclaration":260,"src":"53565:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":10204,"initialValue":{"baseExpression":{"expression":{"id":10200,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10178,"src":"53603:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10201,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"53605:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"53603:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10203,"indexExpression":{"id":10202,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10156,"src":"53623:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53603:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"53565:65:35"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10205,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10199,"src":"53645:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"53656:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"53645:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10207,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"53680:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53645:55:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10209,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10199,"src":"53704:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10210,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"53715:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":257,"src":"53704:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10211,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10160,"src":"53734:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"53704:45:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"53645:104:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10216,"nodeType":"IfStatement","src":"53641:134:35","trueBody":{"expression":{"hexValue":"66616c7365","id":10214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53770:5:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":10164,"id":10215,"nodeType":"Return","src":"53763:12:35"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10217,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"53810:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53834:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"53810:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10220,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10160,"src":"53839:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53858:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"53839:20:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"53810:49:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10239,"nodeType":"IfStatement","src":"53806:235:35","trueBody":{"expression":{"arguments":[{"arguments":[{"expression":{"arguments":[{"id":10230,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"53937:15:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}],"id":10229,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"53932:4:35","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53932:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IIssuanceTarget_$289","typeString":"type(contract IIssuanceTarget)"}},"id":10232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53954:11:35","memberName":"interfaceId","nodeType":"MemberAccess","src":"53932:33:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"arguments":[{"id":10226,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10156,"src":"53906:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10225,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"53898:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$3367_$","typeString":"type(contract IERC165)"}},"id":10227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53898:15:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC165_$3367","typeString":"contract IERC165"}},"id":10228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53914:17:35","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3366,"src":"53898:33:35","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view external returns (bool)"}},"id":10233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53898:68:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":10235,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10156,"src":"54020:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10234,"name":"TargetDoesNotSupportIIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8542,"src":"53984:35:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53984:43:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10224,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"53873:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53873:168:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10238,"nodeType":"ExpressionStatement","src":"53873:168:35"}},{"expression":{"hexValue":"74727565","id":10240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"54059:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":10164,"id":10241,"nodeType":"Return","src":"54052:11:35"}]},"documentation":{"id":10154,"nodeType":"StructuredDocumentation","src":"52595:538:35","text":" @notice Validates allocation change for a target\n @param target Address of the target to validate\n @param allocatorMintingRate Allocator-minting rate for the target (tokens per block)\n @param selfMintingRate Self-minting rate for the target (tokens per block)\n @return True if validation passes and allocation change is needed, false if allocation is already set to these values\n @dev Reverts if target is address(0), default target, or doesn't support IIssuanceTarget (for non-zero rates)"},"id":10243,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAllocationChange","nameLocation":"53147:25:35","nodeType":"FunctionDefinition","parameters":{"id":10161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10156,"mutability":"mutable","name":"target","nameLocation":"53190:6:35","nodeType":"VariableDeclaration","scope":10243,"src":"53182:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10155,"name":"address","nodeType":"ElementaryTypeName","src":"53182:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10158,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"53214:20:35","nodeType":"VariableDeclaration","scope":10243,"src":"53206:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10157,"name":"uint256","nodeType":"ElementaryTypeName","src":"53206:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10160,"mutability":"mutable","name":"selfMintingRate","nameLocation":"53252:15:35","nodeType":"VariableDeclaration","scope":10243,"src":"53244:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10159,"name":"uint256","nodeType":"ElementaryTypeName","src":"53244:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53172:101:35"},"returnParameters":{"id":10164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10163,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10243,"src":"53296:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10162,"name":"bool","nodeType":"ElementaryTypeName","src":"53296:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"53295:6:35"},"scope":10671,"src":"53138:932:35","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":10325,"nodeType":"Block","src":"54838:1306:35","statements":[{"assignments":[10255],"declarations":[{"constant":false,"id":10255,"mutability":"mutable","name":"$","nameLocation":"54878:1:35","nodeType":"VariableDeclaration","scope":10325,"src":"54848:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":10254,"nodeType":"UserDefinedTypeName","pathNode":{"id":10253,"name":"IssuanceAllocatorData","nameLocations":["54848:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"54848:21:35"},"referencedDeclaration":8505,"src":"54848:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":10258,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10256,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"54882:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54882:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"54848:64:35"},{"assignments":[10261],"declarations":[{"constant":false,"id":10261,"mutability":"mutable","name":"targetData","nameLocation":"54947:10:35","nodeType":"VariableDeclaration","scope":10325,"src":"54922:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":10260,"nodeType":"UserDefinedTypeName","pathNode":{"id":10259,"name":"AllocationTarget","nameLocations":["54922:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"54922:16:35"},"referencedDeclaration":260,"src":"54922:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":10266,"initialValue":{"baseExpression":{"expression":{"id":10262,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10255,"src":"54960:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10263,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"54962:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"54960:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10265,"indexExpression":{"id":10264,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10246,"src":"54980:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"54960:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"54922:65:35"},{"assignments":[10269],"declarations":[{"constant":false,"id":10269,"mutability":"mutable","name":"defaultTarget","nameLocation":"55022:13:35","nodeType":"VariableDeclaration","scope":10325,"src":"54997:38:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":10268,"nodeType":"UserDefinedTypeName","pathNode":{"id":10267,"name":"AllocationTarget","nameLocations":["54997:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"54997:16:35"},"referencedDeclaration":260,"src":"54997:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":10277,"initialValue":{"baseExpression":{"expression":{"id":10270,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10255,"src":"55038:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55040:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"55038:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10276,"indexExpression":{"baseExpression":{"expression":{"id":10272,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10255,"src":"55058:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55060:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"55058:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10275,"indexExpression":{"hexValue":"30","id":10274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55076:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"55058:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"55038:41:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"54997:82:35"},{"assignments":[10279],"declarations":[{"constant":false,"id":10279,"mutability":"mutable","name":"availableRate","nameLocation":"55550:13:35","nodeType":"VariableDeclaration","scope":10325,"src":"55542:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10278,"name":"uint256","nodeType":"ElementaryTypeName","src":"55542:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10288,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10280,"name":"defaultTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10269,"src":"55566:13:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55580:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"55566:34:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":10282,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10261,"src":"55615:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55626:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"55615:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55566:80:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":10285,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10261,"src":"55661:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10286,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55672:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":257,"src":"55661:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55566:121:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"55542:145:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10290,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"55718:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10291,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"55741:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55718:38:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":10293,"name":"availableRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10279,"src":"55760:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55718:55:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10296,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"55867:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10297,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"55890:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55867:38:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10299,"name":"availableRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10279,"src":"55907:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10295,"name":"InsufficientAllocationAvailable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"55835:31:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":10300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55835:86:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10289,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"55697:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55697:234:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10302,"nodeType":"ExpressionStatement","src":"55697:234:35"},{"expression":{"id":10311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10303,"name":"defaultTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10269,"src":"55942:13:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"55956:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"55942:34:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10306,"name":"availableRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10279,"src":"55979:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10307,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"55995:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55979:36:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10309,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"56018:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55979:54:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55942:91:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10312,"nodeType":"ExpressionStatement","src":"55942:91:35"},{"expression":{"id":10323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10313,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10255,"src":"56043:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"56045:20:35","memberName":"totalSelfMintingRate","nodeType":"MemberAccess","referencedDeclaration":8501,"src":"56043:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10316,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10255,"src":"56068:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"56070:20:35","memberName":"totalSelfMintingRate","nodeType":"MemberAccess","referencedDeclaration":8501,"src":"56068:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":10318,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10261,"src":"56093:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"56104:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":257,"src":"56093:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56068:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10321,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10250,"src":"56122:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56068:69:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56043:94:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10324,"nodeType":"ExpressionStatement","src":"56043:94:35"}]},"documentation":{"id":10244,"nodeType":"StructuredDocumentation","src":"54076:604:35","text":" @notice Updates global allocation totals and auto-adjusts default target to maintain 100% invariant\n @param target Address of the target being updated\n @param allocatorMintingRate New allocator-minting rate for the target (tokens per block)\n @param selfMintingRate New self-minting rate for the target (tokens per block)\n @dev The default target (at targetAddresses[0]) is automatically adjusted to ensure total allocation equals issuancePerBlock\n @dev This function is called BEFORE the target's allocation data has been updated so we can read old values"},"id":10326,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAndUpdateTotalAllocations","nameLocation":"54694:34:35","nodeType":"FunctionDefinition","parameters":{"id":10251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10246,"mutability":"mutable","name":"target","nameLocation":"54746:6:35","nodeType":"VariableDeclaration","scope":10326,"src":"54738:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10245,"name":"address","nodeType":"ElementaryTypeName","src":"54738:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10248,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"54770:20:35","nodeType":"VariableDeclaration","scope":10326,"src":"54762:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10247,"name":"uint256","nodeType":"ElementaryTypeName","src":"54762:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10250,"mutability":"mutable","name":"selfMintingRate","nameLocation":"54808:15:35","nodeType":"VariableDeclaration","scope":10326,"src":"54800:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10249,"name":"uint256","nodeType":"ElementaryTypeName","src":"54800:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"54728:101:35"},"returnParameters":{"id":10252,"nodeType":"ParameterList","parameters":[],"src":"54838:0:35"},"scope":10671,"src":"54685:1459:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10394,"nodeType":"Block","src":"56744:1648:35","statements":[{"assignments":[10338],"declarations":[{"constant":false,"id":10338,"mutability":"mutable","name":"$","nameLocation":"56784:1:35","nodeType":"VariableDeclaration","scope":10394,"src":"56754:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":10337,"nodeType":"UserDefinedTypeName","pathNode":{"id":10336,"name":"IssuanceAllocatorData","nameLocations":["56754:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"56754:21:35"},"referencedDeclaration":8505,"src":"56754:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":10341,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10339,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"56788:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56788:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"56754:64:35"},{"assignments":[10344],"declarations":[{"constant":false,"id":10344,"mutability":"mutable","name":"targetData","nameLocation":"56853:10:35","nodeType":"VariableDeclaration","scope":10394,"src":"56828:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":10343,"nodeType":"UserDefinedTypeName","pathNode":{"id":10342,"name":"AllocationTarget","nameLocations":["56828:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"56828:16:35"},"referencedDeclaration":260,"src":"56828:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":10349,"initialValue":{"baseExpression":{"expression":{"id":10345,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10338,"src":"56866:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"56868:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"56866:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10348,"indexExpression":{"id":10347,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10329,"src":"56886:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"56866:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"56828:65:35"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10350,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10331,"src":"57901:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57925:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"57901:25:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10353,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10333,"src":"57930:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57949:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"57930:20:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"57901:49:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10392,"nodeType":"Block","src":"58276:110:35","statements":[{"expression":{"arguments":[{"id":10389,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10329,"src":"58368:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10388,"name":"_removeTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10459,"src":"58354:13:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58354:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10391,"nodeType":"ExpressionStatement","src":"58354:21:35"}]},"id":10393,"nodeType":"IfStatement","src":"57897:489:35","trueBody":{"id":10387,"nodeType":"Block","src":"57952:318:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10357,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10344,"src":"58029:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"58040:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"58029:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58064:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"58029:36:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10361,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10344,"src":"58069:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"58080:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":257,"src":"58069:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58099:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"58069:31:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"58029:71:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10374,"nodeType":"IfStatement","src":"58025:107:35","trueBody":{"expression":{"arguments":[{"id":10371,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10329,"src":"58125:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":10366,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10338,"src":"58102:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"58104:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"58102:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58120:4:35","memberName":"push","nodeType":"MemberAccess","src":"58102:22:35","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":10372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58102:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10373,"nodeType":"ExpressionStatement","src":"58102:30:35"}},{"expression":{"id":10379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10375,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10344,"src":"58147:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10377,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"58158:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"58147:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10378,"name":"allocatorMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10331,"src":"58181:20:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"58147:54:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10380,"nodeType":"ExpressionStatement","src":"58147:54:35"},{"expression":{"id":10385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10381,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10344,"src":"58215:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"58226:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":257,"src":"58215:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10384,"name":"selfMintingRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10333,"src":"58244:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"58215:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10386,"nodeType":"ExpressionStatement","src":"58215:44:35"}]}}]},"documentation":{"id":10327,"nodeType":"StructuredDocumentation","src":"56150:443:35","text":" @notice Sets target allocation values and adds/removes target from active list\n @param target Address of the target being updated\n @param allocatorMintingRate New allocator-minting rate for the target (tokens per block)\n @param selfMintingRate New self-minting rate for the target (tokens per block)\n @dev This function is never called for the default target (at index 0), which is handled separately"},"id":10395,"implemented":true,"kind":"function","modifiers":[],"name":"_updateTargetAllocationData","nameLocation":"56607:27:35","nodeType":"FunctionDefinition","parameters":{"id":10334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10329,"mutability":"mutable","name":"target","nameLocation":"56652:6:35","nodeType":"VariableDeclaration","scope":10395,"src":"56644:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10328,"name":"address","nodeType":"ElementaryTypeName","src":"56644:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10331,"mutability":"mutable","name":"allocatorMintingRate","nameLocation":"56676:20:35","nodeType":"VariableDeclaration","scope":10395,"src":"56668:28:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10330,"name":"uint256","nodeType":"ElementaryTypeName","src":"56668:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10333,"mutability":"mutable","name":"selfMintingRate","nameLocation":"56714:15:35","nodeType":"VariableDeclaration","scope":10395,"src":"56706:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10332,"name":"uint256","nodeType":"ElementaryTypeName","src":"56706:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"56634:101:35"},"returnParameters":{"id":10335,"nodeType":"ParameterList","parameters":[],"src":"56744:0:35"},"scope":10671,"src":"56598:1794:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10458,"nodeType":"Block","src":"58753:425:35","statements":[{"assignments":[10403],"declarations":[{"constant":false,"id":10403,"mutability":"mutable","name":"$","nameLocation":"58793:1:35","nodeType":"VariableDeclaration","scope":10458,"src":"58763:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":10402,"nodeType":"UserDefinedTypeName","pathNode":{"id":10401,"name":"IssuanceAllocatorData","nameLocations":["58763:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"58763:21:35"},"referencedDeclaration":8505,"src":"58763:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":10406,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10404,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"58797:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58797:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"58763:64:35"},{"body":{"id":10456,"nodeType":"Block","src":"58893:279:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":10419,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10403,"src":"58911:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10420,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"58913:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"58911:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10422,"indexExpression":{"id":10421,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10408,"src":"58929:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"58911:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10423,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"58935:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58911:30:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10455,"nodeType":"IfStatement","src":"58907:255:35","trueBody":{"id":10454,"nodeType":"Block","src":"58943:219:35","statements":[{"expression":{"id":10438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":10425,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10403,"src":"58961:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10428,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"58963:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"58961:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10429,"indexExpression":{"id":10427,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10408,"src":"58979:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"58961:20:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"id":10430,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10403,"src":"58984:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"58986:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"58984:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10437,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10432,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10403,"src":"59002:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10433,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"59004:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"59002:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"59020:6:35","memberName":"length","nodeType":"MemberAccess","src":"59002:24:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"59029:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"59002:28:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"58984:47:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58961:70:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10439,"nodeType":"ExpressionStatement","src":"58961:70:35"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":10440,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10403,"src":"59049:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"59051:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"59049:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"59067:3:35","memberName":"pop","nodeType":"MemberAccess","src":"59049:21:35","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":10445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"59049:23:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10446,"nodeType":"ExpressionStatement","src":"59049:23:35"},{"expression":{"id":10451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"59090:34:35","subExpression":{"baseExpression":{"expression":{"id":10447,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10403,"src":"59097:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"59099:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"59097:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10450,"indexExpression":{"id":10449,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"59117:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"59097:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10452,"nodeType":"ExpressionStatement","src":"59090:34:35"},{"id":10453,"nodeType":"Break","src":"59142:5:35"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10411,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10408,"src":"58858:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":10412,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10403,"src":"58862:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10413,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"58864:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"58862:17:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58880:6:35","memberName":"length","nodeType":"MemberAccess","src":"58862:24:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"58858:28:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10457,"initializationExpression":{"assignments":[10408],"declarations":[{"constant":false,"id":10408,"mutability":"mutable","name":"i","nameLocation":"58851:1:35","nodeType":"VariableDeclaration","scope":10457,"src":"58843:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10407,"name":"uint256","nodeType":"ElementaryTypeName","src":"58843:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10410,"initialValue":{"hexValue":"31","id":10409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58855:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"58843:13:35"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":10417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"58888:3:35","subExpression":{"id":10416,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10408,"src":"58890:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10418,"nodeType":"ExpressionStatement","src":"58888:3:35"},"nodeType":"ForStatement","src":"58838:334:35"}]},"documentation":{"id":10396,"nodeType":"StructuredDocumentation","src":"58398:303:35","text":" @notice Removes target from targetAddresses array and deletes its allocation data\n @param target Address of the target to remove\n @dev Starts at index 1 since index 0 is always the default target and should never be removed\n @dev Uses swap-and-pop for gas efficiency"},"id":10459,"implemented":true,"kind":"function","modifiers":[],"name":"_removeTarget","nameLocation":"58715:13:35","nodeType":"FunctionDefinition","parameters":{"id":10399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10398,"mutability":"mutable","name":"target","nameLocation":"58737:6:35","nodeType":"VariableDeclaration","scope":10459,"src":"58729:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10397,"name":"address","nodeType":"ElementaryTypeName","src":"58729:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"58728:16:35"},"returnParameters":{"id":10400,"nodeType":"ParameterList","parameters":[],"src":"58753:0:35"},"scope":10671,"src":"58706:472:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[218],"body":{"id":10470,"nodeType":"Block","src":"59346:71:35","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10466,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"59363:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"59363:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"59394:16:35","memberName":"issuancePerBlock","nodeType":"MemberAccess","referencedDeclaration":8485,"src":"59363:47:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10465,"id":10469,"nodeType":"Return","src":"59356:54:35"}]},"documentation":{"id":10460,"nodeType":"StructuredDocumentation","src":"59213:56:35","text":" @inheritdoc IIssuanceAllocationStatus"},"functionSelector":"79d5fc54","id":10471,"implemented":true,"kind":"function","modifiers":[],"name":"getIssuancePerBlock","nameLocation":"59283:19:35","nodeType":"FunctionDefinition","overrides":{"id":10462,"nodeType":"OverrideSpecifier","overrides":[],"src":"59319:8:35"},"parameters":{"id":10461,"nodeType":"ParameterList","parameters":[],"src":"59302:2:35"},"returnParameters":{"id":10465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10464,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10471,"src":"59337:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10463,"name":"uint256","nodeType":"ElementaryTypeName","src":"59337:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"59336:9:35"},"scope":10671,"src":"59274:143:35","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[225],"body":{"id":10494,"nodeType":"Block","src":"59574:325:35","statements":[{"assignments":[10481],"declarations":[{"constant":false,"id":10481,"mutability":"mutable","name":"$","nameLocation":"59614:1:35","nodeType":"VariableDeclaration","scope":10494,"src":"59584:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":10480,"nodeType":"UserDefinedTypeName","pathNode":{"id":10479,"name":"IssuanceAllocatorData","nameLocations":["59584:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"59584:21:35"},"referencedDeclaration":8505,"src":"59584:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":10484,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10482,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"59618:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"59618:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"59584:64:35"},{"expression":{"arguments":[{"expression":{"id":10486,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10481,"src":"59736:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"59738:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"59736:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10488,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10481,"src":"59799:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"59801:20:35","memberName":"lastSelfMintingBlock","nodeType":"MemberAccess","referencedDeclaration":8489,"src":"59799:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10490,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10481,"src":"59858:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"59860:17:35","memberName":"selfMintingOffset","nodeType":"MemberAccess","referencedDeclaration":8491,"src":"59858:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10485,"name":"DistributionState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"59677:17:35","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DistributionState_$268_storage_ptr_$","typeString":"type(struct DistributionState storage pointer)"}},"id":10492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["59713:21:35","59777:20:35","59839:17:35"],"names":["lastDistributionBlock","lastSelfMintingBlock","selfMintingOffset"],"nodeType":"FunctionCall","src":"59677:215:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DistributionState_$268_memory_ptr","typeString":"struct DistributionState memory"}},"functionReturnParameters":10478,"id":10493,"nodeType":"Return","src":"59658:234:35"}]},"documentation":{"id":10472,"nodeType":"StructuredDocumentation","src":"59423:56:35","text":" @inheritdoc IIssuanceAllocationStatus"},"functionSelector":"ee56977e","id":10495,"implemented":true,"kind":"function","modifiers":[],"name":"getDistributionState","nameLocation":"59493:20:35","nodeType":"FunctionDefinition","overrides":{"id":10474,"nodeType":"OverrideSpecifier","overrides":[],"src":"59530:8:35"},"parameters":{"id":10473,"nodeType":"ParameterList","parameters":[],"src":"59513:2:35"},"returnParameters":{"id":10478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10477,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10495,"src":"59548:24:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DistributionState_$268_memory_ptr","typeString":"struct DistributionState"},"typeName":{"id":10476,"nodeType":"UserDefinedTypeName","pathNode":{"id":10475,"name":"DistributionState","nameLocations":["59548:17:35"],"nodeType":"IdentifierPath","referencedDeclaration":268,"src":"59548:17:35"},"referencedDeclaration":268,"src":"59548:17:35","typeDescriptions":{"typeIdentifier":"t_struct$_DistributionState_$268_storage_ptr","typeString":"struct DistributionState"}},"visibility":"internal"}],"src":"59547:26:35"},"scope":10671,"src":"59484:415:35","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[212],"body":{"id":10507,"nodeType":"Block","src":"60033:77:35","statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10502,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"60050:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"60050:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"60081:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"60050:46:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"60097:6:35","memberName":"length","nodeType":"MemberAccess","src":"60050:53:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10501,"id":10506,"nodeType":"Return","src":"60043:60:35"}]},"documentation":{"id":10496,"nodeType":"StructuredDocumentation","src":"59905:56:35","text":" @inheritdoc IIssuanceAllocationStatus"},"functionSelector":"4a1293b7","id":10508,"implemented":true,"kind":"function","modifiers":[],"name":"getTargetCount","nameLocation":"59975:14:35","nodeType":"FunctionDefinition","overrides":{"id":10498,"nodeType":"OverrideSpecifier","overrides":[],"src":"60006:8:35"},"parameters":{"id":10497,"nodeType":"ParameterList","parameters":[],"src":"59989:2:35"},"returnParameters":{"id":10501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10500,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10508,"src":"60024:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10499,"name":"uint256","nodeType":"ElementaryTypeName","src":"60024:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"60023:9:35"},"scope":10671,"src":"59966:144:35","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[198],"body":{"id":10520,"nodeType":"Block","src":"60249:70:35","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10516,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"60266:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"60266:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"60297:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"60266:46:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":10515,"id":10519,"nodeType":"Return","src":"60259:53:35"}]},"documentation":{"id":10509,"nodeType":"StructuredDocumentation","src":"60116:56:35","text":" @inheritdoc IIssuanceAllocationStatus"},"functionSelector":"63fe3b56","id":10521,"implemented":true,"kind":"function","modifiers":[],"name":"getTargets","nameLocation":"60186:10:35","nodeType":"FunctionDefinition","overrides":{"id":10511,"nodeType":"OverrideSpecifier","overrides":[],"src":"60213:8:35"},"parameters":{"id":10510,"nodeType":"ParameterList","parameters":[],"src":"60196:2:35"},"returnParameters":{"id":10515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10521,"src":"60231:16:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10512,"name":"address","nodeType":"ElementaryTypeName","src":"60231:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10513,"nodeType":"ArrayTypeName","src":"60231:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"60230:18:35"},"scope":10671,"src":"60177:142:35","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[206],"body":{"id":10536,"nodeType":"Block","src":"60463:77:35","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10530,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"60480:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"60480:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10532,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"60511:15:35","memberName":"targetAddresses","nodeType":"MemberAccess","referencedDeclaration":8499,"src":"60480:46:35","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10534,"indexExpression":{"id":10533,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10524,"src":"60527:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"60480:53:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10529,"id":10535,"nodeType":"Return","src":"60473:60:35"}]},"documentation":{"id":10522,"nodeType":"StructuredDocumentation","src":"60325:56:35","text":" @inheritdoc IIssuanceAllocationStatus"},"functionSelector":"87ee921c","id":10537,"implemented":true,"kind":"function","modifiers":[],"name":"getTargetAt","nameLocation":"60395:11:35","nodeType":"FunctionDefinition","overrides":{"id":10526,"nodeType":"OverrideSpecifier","overrides":[],"src":"60436:8:35"},"parameters":{"id":10525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10524,"mutability":"mutable","name":"index","nameLocation":"60415:5:35","nodeType":"VariableDeclaration","scope":10537,"src":"60407:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10523,"name":"uint256","nodeType":"ElementaryTypeName","src":"60407:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"60406:15:35"},"returnParameters":{"id":10529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10537,"src":"60454:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10527,"name":"address","nodeType":"ElementaryTypeName","src":"60454:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"60453:9:35"},"scope":10671,"src":"60386:154:35","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[145],"body":{"id":10553,"nodeType":"Block","src":"60701:80:35","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10547,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"60718:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"60718:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"60749:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"60718:48:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10551,"indexExpression":{"id":10550,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10540,"src":"60767:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"60718:56:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"functionReturnParameters":10546,"id":10552,"nodeType":"Return","src":"60711:63:35"}]},"documentation":{"id":10538,"nodeType":"StructuredDocumentation","src":"60546:54:35","text":" @inheritdoc IIssuanceAllocationData"},"functionSelector":"48c3c62e","id":10554,"implemented":true,"kind":"function","modifiers":[],"name":"getTargetData","nameLocation":"60614:13:35","nodeType":"FunctionDefinition","overrides":{"id":10542,"nodeType":"OverrideSpecifier","overrides":[],"src":"60658:8:35"},"parameters":{"id":10541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10540,"mutability":"mutable","name":"target","nameLocation":"60636:6:35","nodeType":"VariableDeclaration","scope":10554,"src":"60628:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10539,"name":"address","nodeType":"ElementaryTypeName","src":"60628:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"60627:16:35"},"returnParameters":{"id":10546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10554,"src":"60676:23:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_memory_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":10544,"nodeType":"UserDefinedTypeName","pathNode":{"id":10543,"name":"AllocationTarget","nameLocations":["60676:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"60676:16:35"},"referencedDeclaration":260,"src":"60676:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"src":"60675:25:35"},"scope":10671,"src":"60605:176:35","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[184],"body":{"id":10585,"nodeType":"Block","src":"61238:397:35","statements":[{"assignments":[10566],"declarations":[{"constant":false,"id":10566,"mutability":"mutable","name":"targetData","nameLocation":"61273:10:35","nodeType":"VariableDeclaration","scope":10585,"src":"61248:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":10565,"nodeType":"UserDefinedTypeName","pathNode":{"id":10564,"name":"AllocationTarget","nameLocations":["61248:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"61248:16:35"},"referencedDeclaration":260,"src":"61248:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":10572,"initialValue":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10567,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"61286:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"61286:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"61317:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"61286:48:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10571,"indexExpression":{"id":10570,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10557,"src":"61335:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"61286:56:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"61248:94:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10574,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10566,"src":"61421:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10575,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"61432:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"61421:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":10576,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10566,"src":"61455:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"61466:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":257,"src":"61455:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"61421:60:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10579,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10566,"src":"61521:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10580,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"61532:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"61521:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10581,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10566,"src":"61587:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"61598:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":257,"src":"61587:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10573,"name":"Allocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"61371:10:35","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Allocation_$252_storage_ptr_$","typeString":"type(struct Allocation storage pointer)"}},"id":10583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["61400:19:35","61499:20:35","61570:15:35"],"names":["totalAllocationRate","allocatorMintingRate","selfMintingRate"],"nodeType":"FunctionCall","src":"61371:257:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_memory_ptr","typeString":"struct Allocation memory"}},"functionReturnParameters":10563,"id":10584,"nodeType":"Return","src":"61352:276:35"}]},"documentation":{"id":10555,"nodeType":"StructuredDocumentation","src":"60787:350:35","text":" @inheritdoc IIssuanceAllocationStatus\n @dev Returns assigned allocation regardless of whether target is address(0) or the default.\n @dev For address(0), no minting occurs but the allocation represents the unallocated portion.\n @dev For effective allocations excluding unmintable portion, use getTotalAllocation()."},"functionSelector":"84c48422","id":10586,"implemented":true,"kind":"function","modifiers":[],"name":"getTargetAllocation","nameLocation":"61151:19:35","nodeType":"FunctionDefinition","overrides":{"id":10559,"nodeType":"OverrideSpecifier","overrides":[],"src":"61201:8:35"},"parameters":{"id":10558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10557,"mutability":"mutable","name":"target","nameLocation":"61179:6:35","nodeType":"VariableDeclaration","scope":10586,"src":"61171:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10556,"name":"address","nodeType":"ElementaryTypeName","src":"61171:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"61170:16:35"},"returnParameters":{"id":10563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10586,"src":"61219:17:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_memory_ptr","typeString":"struct Allocation"},"typeName":{"id":10561,"nodeType":"UserDefinedTypeName","pathNode":{"id":10560,"name":"Allocation","nameLocations":["61219:10:35"],"nodeType":"IdentifierPath","referencedDeclaration":252,"src":"61219:10:35"},"referencedDeclaration":252,"src":"61219:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_storage_ptr","typeString":"struct Allocation"}},"visibility":"internal"}],"src":"61218:19:35"},"scope":10671,"src":"61142:493:35","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[167],"body":{"id":10621,"nodeType":"Block","src":"62239:500:35","statements":[{"assignments":[10598],"declarations":[{"constant":false,"id":10598,"mutability":"mutable","name":"$","nameLocation":"62279:1:35","nodeType":"VariableDeclaration","scope":10621,"src":"62249:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":10597,"nodeType":"UserDefinedTypeName","pathNode":{"id":10596,"name":"IssuanceAllocatorData","nameLocations":["62249:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"62249:21:35"},"referencedDeclaration":8505,"src":"62249:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":10601,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10599,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"62283:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"62283:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"62249:64:35"},{"assignments":[10604],"declarations":[{"constant":false,"id":10604,"mutability":"mutable","name":"targetData","nameLocation":"62348:10:35","nodeType":"VariableDeclaration","scope":10621,"src":"62323:35:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"},"typeName":{"id":10603,"nodeType":"UserDefinedTypeName","pathNode":{"id":10602,"name":"AllocationTarget","nameLocations":["62323:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":260,"src":"62323:16:35"},"referencedDeclaration":260,"src":"62323:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget"}},"visibility":"internal"}],"id":10609,"initialValue":{"baseExpression":{"expression":{"id":10605,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10598,"src":"62361:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"62363:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"62361:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10608,"indexExpression":{"id":10607,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10589,"src":"62381:6:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"62361:27:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"nodeType":"VariableDeclarationStatement","src":"62323:65:35"},{"expression":{"arguments":[{"expression":{"id":10611,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"62482:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10612,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"62493:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"62482:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10613,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10598,"src":"62564:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10614,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"62566:21:35","memberName":"lastDistributionBlock","nodeType":"MemberAccess","referencedDeclaration":8487,"src":"62564:23:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10615,"name":"targetData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"62623:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage_ptr","typeString":"struct AllocationTarget storage pointer"}},"id":10616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"62634:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":257,"src":"62623:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10617,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10598,"src":"62695:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10618,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"62697:20:35","memberName":"lastSelfMintingBlock","nodeType":"MemberAccess","referencedDeclaration":8489,"src":"62695:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10610,"name":"TargetIssuancePerBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"62418:22:35","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TargetIssuancePerBlock_$244_storage_ptr_$","typeString":"type(struct TargetIssuancePerBlock storage pointer)"}},"id":10619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["62459:21:35","62531:31:35","62605:16:35","62667:26:35"],"names":["allocatorIssuanceRate","allocatorIssuanceBlockAppliedTo","selfIssuanceRate","selfIssuanceBlockAppliedTo"],"nodeType":"FunctionCall","src":"62418:314:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TargetIssuancePerBlock_$244_memory_ptr","typeString":"struct TargetIssuancePerBlock memory"}},"functionReturnParameters":10595,"id":10620,"nodeType":"Return","src":"62399:333:35"}]},"documentation":{"id":10587,"nodeType":"StructuredDocumentation","src":"61641:479:35","text":" @inheritdoc IIssuanceAllocationDistribution\n @dev Returns assigned issuance rates regardless of whether target is address(0) or the default.\n @dev For address(0), no minting occurs but rates reflect what would be issued if mintable.\n @dev selfIssuanceBlockAppliedTo reflects the last block for which self-minting allowances have been\n calculated and emitted (lastSelfMintingBlock). This advances continuously, unaffected by pause state."},"functionSelector":"3067cb4c","id":10622,"implemented":true,"kind":"function","modifiers":[],"name":"getTargetIssuancePerBlock","nameLocation":"62134:25:35","nodeType":"FunctionDefinition","overrides":{"id":10591,"nodeType":"OverrideSpecifier","overrides":[],"src":"62190:8:35"},"parameters":{"id":10590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10589,"mutability":"mutable","name":"target","nameLocation":"62168:6:35","nodeType":"VariableDeclaration","scope":10622,"src":"62160:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10588,"name":"address","nodeType":"ElementaryTypeName","src":"62160:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"62159:16:35"},"returnParameters":{"id":10595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10594,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10622,"src":"62208:29:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TargetIssuancePerBlock_$244_memory_ptr","typeString":"struct TargetIssuancePerBlock"},"typeName":{"id":10593,"nodeType":"UserDefinedTypeName","pathNode":{"id":10592,"name":"TargetIssuancePerBlock","nameLocations":["62208:22:35"],"nodeType":"IdentifierPath","referencedDeclaration":244,"src":"62208:22:35"},"referencedDeclaration":244,"src":"62208:22:35","typeDescriptions":{"typeIdentifier":"t_struct$_TargetIssuancePerBlock_$244_storage_ptr","typeString":"struct TargetIssuancePerBlock"}},"visibility":"internal"}],"src":"62207:31:35"},"scope":10671,"src":"62125:614:35","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[191],"body":{"id":10669,"nodeType":"Block","src":"63364:675:35","statements":[{"assignments":[10632],"declarations":[{"constant":false,"id":10632,"mutability":"mutable","name":"$","nameLocation":"63404:1:35","nodeType":"VariableDeclaration","scope":10669,"src":"63374:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"},"typeName":{"id":10631,"nodeType":"UserDefinedTypeName","pathNode":{"id":10630,"name":"IssuanceAllocatorData","nameLocations":["63374:21:35"],"nodeType":"IdentifierPath","referencedDeclaration":8505,"src":"63374:21:35"},"referencedDeclaration":8505,"src":"63374:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData"}},"visibility":"internal"}],"id":10635,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10633,"name":"_getIssuanceAllocatorStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"63408:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_IssuanceAllocatorData_$8505_storage_ptr_$","typeString":"function () pure returns (struct IssuanceAllocator.IssuanceAllocatorData storage pointer)"}},"id":10634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"63408:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"63374:64:35"},{"expression":{"id":10650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10636,"name":"allocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10628,"src":"63762:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_memory_ptr","typeString":"struct Allocation memory"}},"id":10638,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"63773:19:35","memberName":"totalAllocationRate","nodeType":"MemberAccess","referencedDeclaration":247,"src":"63762:30:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10639,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10632,"src":"63795:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"63797:16:35","memberName":"issuancePerBlock","nodeType":"MemberAccess","referencedDeclaration":8485,"src":"63795:18:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"baseExpression":{"expression":{"id":10641,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10632,"src":"63816:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10642,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"63818:17:35","memberName":"allocationTargets","nodeType":"MemberAccess","referencedDeclaration":8496,"src":"63816:19:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AllocationTarget_$260_storage_$","typeString":"mapping(address => struct AllocationTarget storage ref)"}},"id":10647,"indexExpression":{"arguments":[{"hexValue":"30","id":10645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"63844:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"63836:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10643,"name":"address","nodeType":"ElementaryTypeName","src":"63836:7:35","typeDescriptions":{}}},"id":10646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"63836:10:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"63816:31:35","typeDescriptions":{"typeIdentifier":"t_struct$_AllocationTarget_$260_storage","typeString":"struct AllocationTarget storage ref"}},"id":10648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"63848:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":255,"src":"63816:52:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"63795:73:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"63762:106:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10651,"nodeType":"ExpressionStatement","src":"63762:106:35"},{"expression":{"id":10657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10652,"name":"allocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10628,"src":"63878:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_memory_ptr","typeString":"struct Allocation memory"}},"id":10654,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"63889:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":251,"src":"63878:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10655,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10632,"src":"63907:1:35","typeDescriptions":{"typeIdentifier":"t_struct$_IssuanceAllocatorData_$8505_storage_ptr","typeString":"struct IssuanceAllocator.IssuanceAllocatorData storage pointer"}},"id":10656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"63909:20:35","memberName":"totalSelfMintingRate","nodeType":"MemberAccess","referencedDeclaration":8501,"src":"63907:22:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"63878:51:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10658,"nodeType":"ExpressionStatement","src":"63878:51:35"},{"expression":{"id":10667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10659,"name":"allocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10628,"src":"63939:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_memory_ptr","typeString":"struct Allocation memory"}},"id":10661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"63950:20:35","memberName":"allocatorMintingRate","nodeType":"MemberAccess","referencedDeclaration":249,"src":"63939:31:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10662,"name":"allocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10628,"src":"63973:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_memory_ptr","typeString":"struct Allocation memory"}},"id":10663,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"63984:19:35","memberName":"totalAllocationRate","nodeType":"MemberAccess","referencedDeclaration":247,"src":"63973:30:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":10664,"name":"allocation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10628,"src":"64006:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_memory_ptr","typeString":"struct Allocation memory"}},"id":10665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"64017:15:35","memberName":"selfMintingRate","nodeType":"MemberAccess","referencedDeclaration":251,"src":"64006:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"63973:59:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"63939:93:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10668,"nodeType":"ExpressionStatement","src":"63939:93:35"}]},"documentation":{"id":10623,"nodeType":"StructuredDocumentation","src":"62745:522:35","text":" @inheritdoc IIssuanceAllocationStatus\n @dev For reporting purposes, if the default target is address(0), its allocation\n @dev is treated as \"unallocated\" since address(0) cannot receive minting.\n @dev When default is address(0): returns actual allocated amounts (may be less than issuancePerBlock)\n @dev When default is a real address: returns issuancePerBlock\n @dev Note: Internally, the contract always maintains 100% allocation invariant, even when default is address(0)"},"functionSelector":"15d3b5d8","id":10670,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalAllocation","nameLocation":"63281:18:35","nodeType":"FunctionDefinition","overrides":{"id":10625,"nodeType":"OverrideSpecifier","overrides":[],"src":"63316:8:35"},"parameters":{"id":10624,"nodeType":"ParameterList","parameters":[],"src":"63299:2:35"},"returnParameters":{"id":10629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10628,"mutability":"mutable","name":"allocation","nameLocation":"63352:10:35","nodeType":"VariableDeclaration","scope":10670,"src":"63334:28:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_memory_ptr","typeString":"struct Allocation"},"typeName":{"id":10627,"nodeType":"UserDefinedTypeName","pathNode":{"id":10626,"name":"Allocation","nameLocations":["63334:10:35"],"nodeType":"IdentifierPath","referencedDeclaration":252,"src":"63334:10:35"},"referencedDeclaration":252,"src":"63334:10:35","typeDescriptions":{"typeIdentifier":"t_struct$_Allocation_$252_storage_ptr","typeString":"struct Allocation"}},"visibility":"internal"}],"src":"63333:30:35"},"scope":10671,"src":"63272:767:35","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10672,"src":"9256:54785:35","usedErrors":[1063,1066,1399,1402,1570,1573,2822,8521,8528,8537,8542,8551,8556,8561,10721,10724],"usedEvents":[1071,1391,1396,1582,1591,1600,8572,8581,8588,8595,8606,8619,8630,8639,8648]}],"src":"46:63996:35"},"id":35},"project/contracts/common/BaseUpgradeable.sol":{"ast":{"absolutePath":"project/contracts/common/BaseUpgradeable.sol","exportedSymbols":{"AccessControlEnumerableUpgradeable":[1046],"BaseUpgradeable":[10867],"IGraphToken":[10883],"IPausableControl":[319],"Initializable":[1314],"PausableUpgradeable":[1520]},"id":10868,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10673,"literals":["solidity","0.8",".33"],"nodeType":"PragmaDirective","src":"46:23:36"},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":10675,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10868,"sourceUnit":1315,"src":"71:98:36","symbolAliases":[{"foreign":{"id":10674,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"80:13:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","id":10677,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10868,"sourceUnit":1521,"src":"170:104:36","symbolAliases":[{"foreign":{"id":10676,"name":"PausableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"179:19:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts-upgradeable@5.4.0/access/extensions/AccessControlEnumerableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol","id":10679,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10868,"sourceUnit":1047,"src":"275:146:36","symbolAliases":[{"foreign":{"id":10678,"name":"AccessControlEnumerableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"284:34:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"project/contracts/common/IGraphToken.sol","file":"./IGraphToken.sol","id":10681,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10868,"sourceUnit":10884,"src":"422:48:36","symbolAliases":[{"foreign":{"id":10680,"name":"IGraphToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10883,"src":"431:11:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/common/IPausableControl.sol","file":"@graphprotocol/interfaces/contracts/issuance/common/IPausableControl.sol","id":10683,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10868,"sourceUnit":320,"src":"471:108:36","symbolAliases":[{"foreign":{"id":10682,"name":"IPausableControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":319,"src":"480:16:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10685,"name":"Initializable","nameLocations":["1446:13:36"],"nodeType":"IdentifierPath","referencedDeclaration":1314,"src":"1446:13:36"},"id":10686,"nodeType":"InheritanceSpecifier","src":"1446:13:36"},{"baseName":{"id":10687,"name":"AccessControlEnumerableUpgradeable","nameLocations":["1465:34:36"],"nodeType":"IdentifierPath","referencedDeclaration":1046,"src":"1465:34:36"},"id":10688,"nodeType":"InheritanceSpecifier","src":"1465:34:36"},{"baseName":{"id":10689,"name":"PausableUpgradeable","nameLocations":["1505:19:36"],"nodeType":"IdentifierPath","referencedDeclaration":1520,"src":"1505:19:36"},"id":10690,"nodeType":"InheritanceSpecifier","src":"1505:19:36"},{"baseName":{"id":10691,"name":"IPausableControl","nameLocations":["1530:16:36"],"nodeType":"IdentifierPath","referencedDeclaration":319,"src":"1530:16:36"},"id":10692,"nodeType":"InheritanceSpecifier","src":"1530:16:36"}],"canonicalName":"BaseUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":10684,"nodeType":"StructuredDocumentation","src":"581:823:36","text":" @title BaseUpgradeable\n @author Edge & Node\n @notice A base contract that provides role-based access control and pausability.\n @dev This contract combines OpenZeppelin's AccessControlEnumerable and Pausable\n to provide a standardized way to manage access control and pausing functionality.\n Using AccessControlEnumerable (rather than base AccessControl) enables on-chain\n enumeration of role members via getRoleMemberCount() and getRoleMember(), which\n is useful for deployment verification and auditing.\n It uses ERC-7201 namespaced storage pattern for better storage isolation.\n This contract is abstract and meant to be inherited by other contracts.\n @custom:security-contact Please email security+contracts@thegraph.com if you find any bugs. We might have an active bug bounty program."},"fullyImplemented":true,"id":10867,"linearizedBaseContracts":[10867,319,1520,1046,820,1560,3367,1669,1643,1360,1314],"name":"BaseUpgradeable","nameLocation":"1423:15:36","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":10693,"nodeType":"StructuredDocumentation","src":"1577:320:36","text":"@notice One million - used as the denominator for values provided as Parts Per Million (PPM)\n @dev This constant represents 1,000,000 and serves as the denominator when working with\n PPM values. For example, 50% would be represented as 500,000 PPM, calculated as\n (500,000 / MILLION) = 0.5 = 50%"},"functionSelector":"32bc934c","id":10696,"mutability":"constant","name":"MILLION","nameLocation":"1926:7:36","nodeType":"VariableDeclaration","scope":10867,"src":"1902:43:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10694,"name":"uint256","nodeType":"ElementaryTypeName","src":"1902:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":10695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1936:9:36","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"public"},{"constant":true,"documentation":{"id":10697,"nodeType":"StructuredDocumentation","src":"1981:373:36","text":" @notice Role identifier for governor accounts\n @dev Governors have the highest level of access and can:\n - Grant and revoke roles within the established hierarchy\n - Perform administrative functions and system configuration\n - Set critical parameters and upgrade contracts\n Admin of: GOVERNOR_ROLE, PAUSE_ROLE, OPERATOR_ROLE"},"functionSelector":"ccc57490","id":10702,"mutability":"constant","name":"GOVERNOR_ROLE","nameLocation":"2383:13:36","nodeType":"VariableDeclaration","scope":10867,"src":"2359:66:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10698,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2359:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"474f5645524e4f525f524f4c45","id":10700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2409:15:36","typeDescriptions":{"typeIdentifier":"t_stringliteral_7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f55","typeString":"literal_string \"GOVERNOR_ROLE\""},"value":"GOVERNOR_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f55","typeString":"literal_string \"GOVERNOR_ROLE\""}],"id":10699,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2399:9:36","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2399:26:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"documentation":{"id":10703,"nodeType":"StructuredDocumentation","src":"2432:440:36","text":" @notice Role identifier for pause accounts\n @dev Pause role holders can:\n - Pause and unpause contract operations for emergency situations\n Typically granted to automated monitoring systems or emergency responders.\n Pausing is intended for quick response to potential threats, and giving time for investigation and resolution (potentially with governance intervention).\n Admin: GOVERNOR_ROLE"},"functionSelector":"389ed267","id":10708,"mutability":"constant","name":"PAUSE_ROLE","nameLocation":"2901:10:36","nodeType":"VariableDeclaration","scope":10867,"src":"2877:60:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10704,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2877:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"50415553455f524f4c45","id":10706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2924:12:36","typeDescriptions":{"typeIdentifier":"t_stringliteral_139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d","typeString":"literal_string \"PAUSE_ROLE\""},"value":"PAUSE_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d","typeString":"literal_string \"PAUSE_ROLE\""}],"id":10705,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2914:9:36","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2914:23:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"documentation":{"id":10709,"nodeType":"StructuredDocumentation","src":"2944:256:36","text":" @notice Role identifier for operator accounts\n @dev Operators can:\n - Perform operational tasks as defined by inheriting contracts\n - Manage roles that are designated as operator-administered\n Admin: GOVERNOR_ROLE"},"functionSelector":"f5b541a6","id":10714,"mutability":"constant","name":"OPERATOR_ROLE","nameLocation":"3229:13:36","nodeType":"VariableDeclaration","scope":10867,"src":"3205:66:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10710,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3205:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4f50455241544f525f524f4c45","id":10712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3255:15:36","typeDescriptions":{"typeIdentifier":"t_stringliteral_97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929","typeString":"literal_string \"OPERATOR_ROLE\""},"value":"OPERATOR_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929","typeString":"literal_string \"OPERATOR_ROLE\""}],"id":10711,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3245:9:36","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3245:26:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"documentation":{"id":10715,"nodeType":"StructuredDocumentation","src":"3312:102:36","text":"@notice The Graph Token contract\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":10718,"mutability":"immutable","name":"GRAPH_TOKEN","nameLocation":"3450:11:36","nodeType":"VariableDeclaration","scope":10867,"src":"3419:42:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGraphToken_$10883","typeString":"contract IGraphToken"},"typeName":{"id":10717,"nodeType":"UserDefinedTypeName","pathNode":{"id":10716,"name":"IGraphToken","nameLocations":["3419:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":10883,"src":"3419:11:36"},"referencedDeclaration":10883,"src":"3419:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_IGraphToken_$10883","typeString":"contract IGraphToken"}},"visibility":"internal"},{"documentation":{"id":10719,"nodeType":"StructuredDocumentation","src":"3496:77:36","text":"@notice Thrown when attempting to set the Graph Token to the zero address"},"errorSelector":"69e4eeb3","id":10721,"name":"GraphTokenCannotBeZeroAddress","nameLocation":"3584:29:36","nodeType":"ErrorDefinition","parameters":{"id":10720,"nodeType":"ParameterList","parameters":[],"src":"3613:2:36"},"src":"3578:38:36"},{"documentation":{"id":10722,"nodeType":"StructuredDocumentation","src":"3622:74:36","text":"@notice Thrown when attempting to set the governor to the zero address"},"errorSelector":"395d0535","id":10724,"name":"GovernorCannotBeZeroAddress","nameLocation":"3707:27:36","nodeType":"ErrorDefinition","parameters":{"id":10723,"nodeType":"ParameterList","parameters":[],"src":"3734:2:36"},"src":"3701:36:36"},{"body":{"id":10750,"nodeType":"Block","src":"4181:162:36","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10731,"name":"graphToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10727,"src":"4199:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4221:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4213:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10732,"name":"address","nodeType":"ElementaryTypeName","src":"4213:7:36","typeDescriptions":{}}},"id":10735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4213:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4199:24:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10737,"name":"GraphTokenCannotBeZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10721,"src":"4225:29:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4225:31:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10730,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4191:7:36","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:66:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10740,"nodeType":"ExpressionStatement","src":"4191:66:36"},{"expression":{"id":10745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10741,"name":"GRAPH_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10718,"src":"4267:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_IGraphToken_$10883","typeString":"contract IGraphToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10743,"name":"graphToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10727,"src":"4293:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10742,"name":"IGraphToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10883,"src":"4281:11:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IGraphToken_$10883_$","typeString":"type(contract IGraphToken)"}},"id":10744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4281:23:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IGraphToken_$10883","typeString":"contract IGraphToken"}},"src":"4267:37:36","typeDescriptions":{"typeIdentifier":"t_contract$_IGraphToken_$10883","typeString":"contract IGraphToken"}},"id":10746,"nodeType":"ExpressionStatement","src":"4267:37:36"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10747,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1268,"src":"4314:20:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4314:22:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10749,"nodeType":"ExpressionStatement","src":"4314:22:36"}]},"documentation":{"id":10725,"nodeType":"StructuredDocumentation","src":"3769:375:36","text":" @notice Constructor for the BaseUpgradeable contract\n @dev This contract is upgradeable, but we use the constructor to set immutable variables\n and disable initializers to prevent the implementation contract from being initialized.\n @param graphToken Address of the Graph Token contract\n @custom:oz-upgrades-unsafe-allow constructor"},"id":10751,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10727,"mutability":"mutable","name":"graphToken","nameLocation":"4169:10:36","nodeType":"VariableDeclaration","scope":10751,"src":"4161:18:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10726,"name":"address","nodeType":"ElementaryTypeName","src":"4161:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4160:20:36"},"returnParameters":{"id":10729,"nodeType":"ParameterList","parameters":[],"src":"4181:0:36"},"scope":10867,"src":"4149:194:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10767,"nodeType":"Block","src":"4800:129:36","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10757,"name":"__AccessControlEnumerable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"4810:30:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4810:32:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10759,"nodeType":"ExpressionStatement","src":"4810:32:36"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10760,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1424,"src":"4852:15:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4852:17:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10762,"nodeType":"ExpressionStatement","src":"4852:17:36"},{"expression":{"arguments":[{"id":10764,"name":"governor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10754,"src":"4913:8:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10763,"name":"__BaseUpgradeable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10806,"src":"4880:32:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4880:42:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10766,"nodeType":"ExpressionStatement","src":"4880:42:36"}]},"documentation":{"id":10752,"nodeType":"StructuredDocumentation","src":"4489:247:36","text":" @notice Internal function to initialize the BaseUpgradeable contract\n @dev This function is used by child contracts to initialize the BaseUpgradeable contract\n @param governor Address that will have the GOVERNOR_ROLE"},"id":10768,"implemented":true,"kind":"function","modifiers":[],"name":"__BaseUpgradeable_init","nameLocation":"4750:22:36","nodeType":"FunctionDefinition","parameters":{"id":10755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10754,"mutability":"mutable","name":"governor","nameLocation":"4781:8:36","nodeType":"VariableDeclaration","scope":10768,"src":"4773:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10753,"name":"address","nodeType":"ElementaryTypeName","src":"4773:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4772:18:36"},"returnParameters":{"id":10756,"nodeType":"ParameterList","parameters":[],"src":"4800:0:36"},"scope":10867,"src":"4741:188:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10805,"nodeType":"Block","src":"5297:491:36","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10775,"name":"governor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10771,"src":"5377:8:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5397:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5389:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10776,"name":"address","nodeType":"ElementaryTypeName","src":"5389:7:36","typeDescriptions":{}}},"id":10779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5377:22:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10781,"name":"GovernorCannotBeZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10724,"src":"5401:27:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5401:29:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10774,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5369:7:36","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5369:62:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10784,"nodeType":"ExpressionStatement","src":"5369:62:36"},{"expression":{"arguments":[{"id":10786,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"5564:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10787,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"5579:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10785,"name":"_setRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"5550:13:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":10788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5550:43:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10789,"nodeType":"ExpressionStatement","src":"5550:43:36"},{"expression":{"arguments":[{"id":10791,"name":"PAUSE_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10708,"src":"5617:10:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10792,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"5629:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10790,"name":"_setRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"5603:13:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":10793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5603:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10794,"nodeType":"ExpressionStatement","src":"5603:40:36"},{"expression":{"arguments":[{"id":10796,"name":"OPERATOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"5667:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10797,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"5682:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10795,"name":"_setRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"5653:13:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":10798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5653:43:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10799,"nodeType":"ExpressionStatement","src":"5653:43:36"},{"expression":{"arguments":[{"id":10801,"name":"GOVERNOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"5757:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10802,"name":"governor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10771,"src":"5772:8:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10800,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[1005],"referencedDeclaration":1005,"src":"5746:10:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":10803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5746:35:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10804,"nodeType":"ExpressionStatement","src":"5746:35:36"}]},"documentation":{"id":10769,"nodeType":"StructuredDocumentation","src":"4935:230:36","text":" @notice Internal unchained initialization function for BaseUpgradeable\n @dev This function sets up the governor role and role admin hierarchy\n @param governor Address that will have the GOVERNOR_ROLE"},"id":10806,"implemented":true,"kind":"function","modifiers":[],"name":"__BaseUpgradeable_init_unchained","nameLocation":"5237:32:36","nodeType":"FunctionDefinition","parameters":{"id":10772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10771,"mutability":"mutable","name":"governor","nameLocation":"5278:8:36","nodeType":"VariableDeclaration","scope":10806,"src":"5270:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10770,"name":"address","nodeType":"ElementaryTypeName","src":"5270:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5269:18:36"},"returnParameters":{"id":10773,"nodeType":"ParameterList","parameters":[],"src":"5297:0:36"},"scope":10867,"src":"5228:560:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[308],"body":{"id":10817,"nodeType":"Block","src":"5935:25:36","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10814,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"5945:6:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5945:8:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10816,"nodeType":"ExpressionStatement","src":"5945:8:36"}]},"documentation":{"id":10807,"nodeType":"StructuredDocumentation","src":"5827:47:36","text":" @inheritdoc IPausableControl"},"functionSelector":"8456cb59","id":10818,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":10811,"name":"PAUSE_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10708,"src":"5923:10:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":10812,"kind":"modifierInvocation","modifierName":{"id":10810,"name":"onlyRole","nameLocations":["5914:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"5914:8:36"},"nodeType":"ModifierInvocation","src":"5914:20:36"}],"name":"pause","nameLocation":"5888:5:36","nodeType":"FunctionDefinition","overrides":{"id":10809,"nodeType":"OverrideSpecifier","overrides":[],"src":"5905:8:36"},"parameters":{"id":10808,"nodeType":"ParameterList","parameters":[],"src":"5893:2:36"},"returnParameters":{"id":10813,"nodeType":"ParameterList","parameters":[],"src":"5935:0:36"},"scope":10867,"src":"5879:81:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[312],"body":{"id":10829,"nodeType":"Block","src":"6076:27:36","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10826,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1519,"src":"6086:8:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6086:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10828,"nodeType":"ExpressionStatement","src":"6086:10:36"}]},"documentation":{"id":10819,"nodeType":"StructuredDocumentation","src":"5966:47:36","text":" @inheritdoc IPausableControl"},"functionSelector":"3f4ba83a","id":10830,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":10823,"name":"PAUSE_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10708,"src":"6064:10:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":10824,"kind":"modifierInvocation","modifierName":{"id":10822,"name":"onlyRole","nameLocations":["6055:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"6055:8:36"},"nodeType":"ModifierInvocation","src":"6055:20:36"}],"name":"unpause","nameLocation":"6027:7:36","nodeType":"FunctionDefinition","overrides":{"id":10821,"nodeType":"OverrideSpecifier","overrides":[],"src":"6046:8:36"},"parameters":{"id":10820,"nodeType":"ParameterList","parameters":[],"src":"6034:2:36"},"returnParameters":{"id":10825,"nodeType":"ParameterList","parameters":[],"src":"6076:0:36"},"scope":10867,"src":"6018:85:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[318,1446],"body":{"id":10843,"nodeType":"Block","src":"6262:38:36","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10839,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6279:5:36","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_BaseUpgradeable_$10867_$","typeString":"type(contract super BaseUpgradeable)"}},"id":10840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6285:6:36","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":1446,"src":"6279:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6279:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10838,"id":10842,"nodeType":"Return","src":"6272:21:36"}]},"documentation":{"id":10831,"nodeType":"StructuredDocumentation","src":"6109:47:36","text":" @inheritdoc IPausableControl"},"functionSelector":"5c975abb","id":10844,"implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"6170:6:36","nodeType":"FunctionDefinition","overrides":{"id":10835,"nodeType":"OverrideSpecifier","overrides":[{"id":10833,"name":"PausableUpgradeable","nameLocations":["6208:19:36"],"nodeType":"IdentifierPath","referencedDeclaration":1520,"src":"6208:19:36"},{"id":10834,"name":"IPausableControl","nameLocations":["6229:16:36"],"nodeType":"IdentifierPath","referencedDeclaration":319,"src":"6229:16:36"}],"src":"6199:47:36"},"parameters":{"id":10832,"nodeType":"ParameterList","parameters":[],"src":"6176:2:36"},"returnParameters":{"id":10838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10837,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10844,"src":"6256:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10836,"name":"bool","nodeType":"ElementaryTypeName","src":"6256:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6255:6:36"},"scope":10867,"src":"6161:139:36","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[895],"body":{"id":10865,"nodeType":"Block","src":"6670:113:36","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":10858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10853,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10847,"src":"6687:11:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":10855,"name":"IPausableControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":319,"src":"6707:16:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPausableControl_$319_$","typeString":"type(contract IPausableControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPausableControl_$319_$","typeString":"type(contract IPausableControl)"}],"id":10854,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6702:4:36","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6702:22:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPausableControl_$319","typeString":"type(contract IPausableControl)"}},"id":10857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6725:11:36","memberName":"interfaceId","nodeType":"MemberAccess","src":"6702:34:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"6687:49:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":10861,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10847,"src":"6764:11:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":10859,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6740:5:36","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_BaseUpgradeable_$10867_$","typeString":"type(contract super BaseUpgradeable)"}},"id":10860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6746:17:36","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":895,"src":"6740:23:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":10862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6740:36:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6687:89:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10852,"id":10864,"nodeType":"Return","src":"6680:96:36"}]},"documentation":{"id":10845,"nodeType":"StructuredDocumentation","src":"6306:268:36","text":" @notice Check if this contract supports a given interface\n @dev Adds support for IPausableControl interface\n @param interfaceId The interface identifier to check\n @return True if the contract supports the interface, false otherwise"},"functionSelector":"01ffc9a7","id":10866,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"6588:17:36","nodeType":"FunctionDefinition","overrides":{"id":10849,"nodeType":"OverrideSpecifier","overrides":[],"src":"6646:8:36"},"parameters":{"id":10848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10847,"mutability":"mutable","name":"interfaceId","nameLocation":"6613:11:36","nodeType":"VariableDeclaration","scope":10866,"src":"6606:18:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10846,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6606:6:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6605:20:36"},"returnParameters":{"id":10852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10866,"src":"6664:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10850,"name":"bool","nodeType":"ElementaryTypeName","src":"6664:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6663:6:36"},"scope":10867,"src":"6579:204:36","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":10868,"src":"1405:5380:36","usedErrors":[1063,1066,1399,1402,1570,1573,10721,10724],"usedEvents":[1071,1391,1396,1582,1591,1600]}],"src":"46:6740:36"},"id":36},"project/contracts/common/IGraphToken.sol":{"ast":{"absolutePath":"project/contracts/common/IGraphToken.sol","exportedSymbols":{"IERC20":[1747],"IGraphToken":[10883]},"id":10884,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10869,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:23:37"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":10871,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10884,"sourceUnit":1748,"src":"71:72:37","symbolAliases":[{"foreign":{"id":10870,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"80:6:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10873,"name":"IERC20","nameLocations":["395:6:37"],"nodeType":"IdentifierPath","referencedDeclaration":1747,"src":"395:6:37"},"id":10874,"nodeType":"InheritanceSpecifier","src":"395:6:37"}],"canonicalName":"IGraphToken","contractDependencies":[],"contractKind":"interface","documentation":{"id":10872,"nodeType":"StructuredDocumentation","src":"145:224:37","text":" @title IGraphToken\n @author Edge & Node\n @notice Minimal interface for the Graph Token contract used by issuance contracts\n @dev Extends IERC20 with mint capability. This interface is compatible with OZ 5.x."},"fullyImplemented":false,"id":10883,"linearizedBaseContracts":[10883,1747],"name":"IGraphToken","nameLocation":"380:11:37","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10875,"nodeType":"StructuredDocumentation","src":"408:218:37","text":" @notice Mints new tokens to a specified account\n @dev Only callable by accounts with minter role\n @param to The account to mint tokens to\n @param amount The amount of tokens to mint"},"functionSelector":"40c10f19","id":10882,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"640:4:37","nodeType":"FunctionDefinition","parameters":{"id":10880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10877,"mutability":"mutable","name":"to","nameLocation":"653:2:37","nodeType":"VariableDeclaration","scope":10882,"src":"645:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10876,"name":"address","nodeType":"ElementaryTypeName","src":"645:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10879,"mutability":"mutable","name":"amount","nameLocation":"665:6:37","nodeType":"VariableDeclaration","scope":10882,"src":"657:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10878,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"644:28:37"},"returnParameters":{"id":10881,"nodeType":"ParameterList","parameters":[],"src":"681:0:37"},"scope":10883,"src":"631:51:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10884,"src":"370:314:37","usedErrors":[],"usedEvents":[1681,1690]}],"src":"46:639:37"},"id":37},"project/contracts/eligibility/RewardsEligibilityOracle.sol":{"ast":{"absolutePath":"project/contracts/eligibility/RewardsEligibilityOracle.sol","exportedSymbols":{"BaseUpgradeable":[10867],"IRewardsEligibility":[331],"IRewardsEligibilityAdministration":[363],"IRewardsEligibilityReporting":[419],"IRewardsEligibilityStatus":[455],"RewardsEligibilityOracle":[11390]},"id":11391,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10885,"literals":["solidity","0.8",".33"],"nodeType":"PragmaDirective","src":"46:23:38"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibility.sol","file":"@graphprotocol/interfaces/contracts/issuance/eligibility/IRewardsEligibility.sol","id":10887,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11391,"sourceUnit":332,"src":"71:119:38","symbolAliases":[{"foreign":{"id":10886,"name":"IRewardsEligibility","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"80:19:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityAdministration.sol","file":"@graphprotocol/interfaces/contracts/issuance/eligibility/IRewardsEligibilityAdministration.sol","id":10889,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11391,"sourceUnit":364,"src":"191:147:38","symbolAliases":[{"foreign":{"id":10888,"name":"IRewardsEligibilityAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"200:33:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityReporting.sol","file":"@graphprotocol/interfaces/contracts/issuance/eligibility/IRewardsEligibilityReporting.sol","id":10891,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11391,"sourceUnit":420,"src":"339:137:38","symbolAliases":[{"foreign":{"id":10890,"name":"IRewardsEligibilityReporting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"348:28:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/eligibility/IRewardsEligibilityStatus.sol","file":"@graphprotocol/interfaces/contracts/issuance/eligibility/IRewardsEligibilityStatus.sol","id":10893,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11391,"sourceUnit":456,"src":"477:131:38","symbolAliases":[{"foreign":{"id":10892,"name":"IRewardsEligibilityStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":455,"src":"486:25:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"project/contracts/common/BaseUpgradeable.sol","file":"../common/BaseUpgradeable.sol","id":10895,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11391,"sourceUnit":10868,"src":"609:64:38","symbolAliases":[{"foreign":{"id":10894,"name":"BaseUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"618:15:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10897,"name":"BaseUpgradeable","nameLocations":["2049:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":10867,"src":"2049:15:38"},"id":10898,"nodeType":"InheritanceSpecifier","src":"2049:15:38"},{"baseName":{"id":10899,"name":"IRewardsEligibility","nameLocations":["2070:19:38"],"nodeType":"IdentifierPath","referencedDeclaration":331,"src":"2070:19:38"},"id":10900,"nodeType":"InheritanceSpecifier","src":"2070:19:38"},{"baseName":{"id":10901,"name":"IRewardsEligibilityAdministration","nameLocations":["2095:33:38"],"nodeType":"IdentifierPath","referencedDeclaration":363,"src":"2095:33:38"},"id":10902,"nodeType":"InheritanceSpecifier","src":"2095:33:38"},{"baseName":{"id":10903,"name":"IRewardsEligibilityReporting","nameLocations":["2134:28:38"],"nodeType":"IdentifierPath","referencedDeclaration":419,"src":"2134:28:38"},"id":10904,"nodeType":"InheritanceSpecifier","src":"2134:28:38"},{"baseName":{"id":10905,"name":"IRewardsEligibilityStatus","nameLocations":["2168:25:38"],"nodeType":"IdentifierPath","referencedDeclaration":455,"src":"2168:25:38"},"id":10906,"nodeType":"InheritanceSpecifier","src":"2168:25:38"}],"canonicalName":"RewardsEligibilityOracle","contractDependencies":[],"contractKind":"contract","documentation":{"id":10896,"nodeType":"StructuredDocumentation","src":"675:1332:38","text":" @title RewardsEligibilityOracle\n @author Edge & Node\n @notice This contract allows authorized oracles to mark indexers as eligible to receive rewards\n with an expiration mechanism. Under normal configuration with reasonable eligibility periods, indexers\n are denied by default until they are explicitly marked as eligible, and their eligibility expires after\n a configurable eligibility period. The contract also includes a global eligibility check toggle and an\n oracle update timeout mechanism.\n @dev Note: If the eligibility period is set to an extremely large value that exceeds the current\n block timestamp, all indexers (including those never registered) will be eligible.\n @custom:security-contact Please email security+contracts@thegraph.com if you find any bugs. We might have an active bug bounty program.\n @custom:security-warning Configuration changes (eligibility period, validation toggle) can create race\n conditions with in-flight reward claim transactions. When configuration changes make an indexer ineligible\n between transaction submission and execution, the indexer permanently loses those rewards.\n Operators should announce configuration changes in advance and consider implementing\n a two-step process (announce delay, then execute) for changes that reduce eligibility."},"fullyImplemented":true,"id":11390,"linearizedBaseContracts":[11390,455,419,363,400,331,10867,319,1520,1046,820,1560,3367,1669,1643,1360,1314],"name":"RewardsEligibilityOracle","nameLocation":"2017:24:38","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":10907,"nodeType":"StructuredDocumentation","src":"2229:322:38","text":" @notice Oracle role identifier\n @dev Oracle role holders can:\n - Mark indexers as eligible to receive rewards (based on off-chain quality assessment)\n This role is typically granted to automated quality assessment systems\n Admin: OPERATOR_ROLE (operators can manage oracle roles)"},"functionSelector":"07e2cea5","id":10912,"mutability":"constant","name":"ORACLE_ROLE","nameLocation":"2580:11:38","nodeType":"VariableDeclaration","scope":11390,"src":"2556:62:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10908,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2556:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4f5241434c455f524f4c45","id":10910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2604:13:38","typeDescriptions":{"typeIdentifier":"t_stringliteral_68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1","typeString":"literal_string \"ORACLE_ROLE\""},"value":"ORACLE_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1","typeString":"literal_string \"ORACLE_ROLE\""}],"id":10909,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2594:9:38","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2594:24:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"documentation":{"id":10913,"nodeType":"StructuredDocumentation","src":"2657:66:38","text":"@notice ERC-7201 storage location for RewardsEligibilityOracle"},"id":10937,"mutability":"constant","name":"REWARDS_ELIGIBILITY_ORACLE_STORAGE_LOCATION","nameLocation":"2753:43:38","nodeType":"VariableDeclaration","scope":11390,"src":"2728:318:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10914,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2728:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"677261706870726f746f636f6c2e73746f726167652e52657761726473456c69676962696c6974794f7261636c65","id":10921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2952:48:38","typeDescriptions":{"typeIdentifier":"t_stringliteral_184a2e1f5ac858f350c972782613691e99e2ecf211fb412a0fc1d0f7f16e0642","typeString":"literal_string \"graphprotocol.storage.RewardsEligibilityOracle\""},"value":"graphprotocol.storage.RewardsEligibilityOracle"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_184a2e1f5ac858f350c972782613691e99e2ecf211fb412a0fc1d0f7f16e0642","typeString":"literal_string \"graphprotocol.storage.RewardsEligibilityOracle\""}],"id":10920,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2942:9:38","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2942:59:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2934:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10918,"name":"uint256","nodeType":"ElementaryTypeName","src":"2934:7:38","typeDescriptions":{}}},"id":10923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2934:68:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3005:1:38","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2934:72:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10916,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2923:3:38","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2927:6:38","memberName":"encode","nodeType":"MemberAccess","src":"2923:10:38","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2923:84:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10915,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2913:9:38","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2913:95:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":10935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3023:23:38","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":10932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3040:4:38","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":10931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3032:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10930,"name":"uint256","nodeType":"ElementaryTypeName","src":"3032:7:38","typeDescriptions":{}}},"id":10933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3032:13:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3024:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":10928,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3024:7:38","typeDescriptions":{}}},"id":10934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3024:22:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2913:133:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"canonicalName":"RewardsEligibilityOracle.RewardsEligibilityOracleData","documentation":{"id":10938,"nodeType":"StructuredDocumentation","src":"3053:663:38","text":"@notice Main storage structure for RewardsEligibilityOracle using ERC-7201 namespaced storage\n @param indexerEligibilityTimestamps Mapping of indexers to their eligibility renewal timestamps\n @param eligibilityPeriod Period in seconds for which indexer eligibility status lasts\n @param eligibilityValidationEnabled Flag to enable/disable eligibility validation\n @param oracleUpdateTimeout Timeout period in seconds after which isEligible returns true if no oracle updates\n @param lastOracleUpdateTime Timestamp of the last oracle update\n @custom:storage-location erc7201:graphprotocol.storage.RewardsEligibilityOracle"},"id":10956,"members":[{"constant":false,"id":10943,"mutability":"mutable","name":"indexerEligibilityTimestamps","nameLocation":"3872:28:38","nodeType":"VariableDeclaration","scope":10956,"src":"3844:56:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":10942,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10940,"name":"address","nodeType":"ElementaryTypeName","src":"3852:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3844:27:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10941,"name":"uint256","nodeType":"ElementaryTypeName","src":"3863:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":10946,"mutability":"mutable","name":"eligibilityPeriod","nameLocation":"3996:17:38","nodeType":"VariableDeclaration","scope":10956,"src":"3988:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10945,"name":"uint256","nodeType":"ElementaryTypeName","src":"3988:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10949,"mutability":"mutable","name":"eligibilityValidationEnabled","nameLocation":"4091:28:38","nodeType":"VariableDeclaration","scope":10956,"src":"4086:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10948,"name":"bool","nodeType":"ElementaryTypeName","src":"4086:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10952,"mutability":"mutable","name":"oracleUpdateTimeout","nameLocation":"4237:19:38","nodeType":"VariableDeclaration","scope":10956,"src":"4229:27:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10951,"name":"uint256","nodeType":"ElementaryTypeName","src":"4229:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10955,"mutability":"mutable","name":"lastOracleUpdateTime","nameLocation":"4327:20:38","nodeType":"VariableDeclaration","scope":10956,"src":"4319:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10954,"name":"uint256","nodeType":"ElementaryTypeName","src":"4319:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"RewardsEligibilityOracleData","nameLocation":"3728:28:38","nodeType":"StructDefinition","scope":11390,"src":"3721:633:38","visibility":"public"},{"body":{"id":10968,"nodeType":"Block","src":"4590:305:38","statements":[{"assignments":[10964],"declarations":[{"constant":false,"id":10964,"mutability":"mutable","name":"slot","nameLocation":"4726:4:38","nodeType":"VariableDeclaration","scope":10968,"src":"4718:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10963,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4718:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":10966,"initialValue":{"id":10965,"name":"REWARDS_ELIGIBILITY_ORACLE_STORAGE_LOCATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10937,"src":"4733:43:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4718:58:38"},{"AST":{"nativeSrc":"4851:38:38","nodeType":"YulBlock","src":"4851:38:38","statements":[{"nativeSrc":"4865:14:38","nodeType":"YulAssignment","src":"4865:14:38","value":{"name":"slot","nativeSrc":"4875:4:38","nodeType":"YulIdentifier","src":"4875:4:38"},"variableNames":[{"name":"$.slot","nativeSrc":"4865:6:38","nodeType":"YulIdentifier","src":"4865:6:38"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":10961,"isOffset":false,"isSlot":true,"src":"4865:6:38","suffix":"slot","valueSize":1},{"declaration":10964,"isOffset":false,"isSlot":false,"src":"4875:4:38","valueSize":1}],"id":10967,"nodeType":"InlineAssembly","src":"4842:47:38"}]},"documentation":{"id":10957,"nodeType":"StructuredDocumentation","src":"4360:116:38","text":" @notice Returns the storage struct for RewardsEligibilityOracle\n @return $ contract storage"},"id":10969,"implemented":true,"kind":"function","modifiers":[],"name":"_getRewardsEligibilityOracleStorage","nameLocation":"4490:35:38","nodeType":"FunctionDefinition","parameters":{"id":10958,"nodeType":"ParameterList","parameters":[],"src":"4525:2:38"},"returnParameters":{"id":10962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10961,"mutability":"mutable","name":"$","nameLocation":"4587:1:38","nodeType":"VariableDeclaration","scope":10969,"src":"4550:38:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"},"typeName":{"id":10960,"nodeType":"UserDefinedTypeName","pathNode":{"id":10959,"name":"RewardsEligibilityOracleData","nameLocations":["4550:28:38"],"nodeType":"IdentifierPath","referencedDeclaration":10956,"src":"4550:28:38"},"referencedDeclaration":10956,"src":"4550:28:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"}},"visibility":"internal"}],"src":"4549:40:38"},"scope":11390,"src":"4481:414:38","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":10978,"nodeType":"Block","src":"5315:2:38","statements":[]},"documentation":{"id":10970,"nodeType":"StructuredDocumentation","src":"4927:323:38","text":" @notice Constructor for the RewardsEligibilityOracle contract\n @dev This contract is upgradeable, but we use the constructor to pass the Graph Token address\n to the base contract.\n @param graphToken Address of the Graph Token contract\n @custom:oz-upgrades-unsafe-allow constructor"},"id":10979,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10975,"name":"graphToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10972,"src":"5303:10:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":10976,"kind":"baseConstructorSpecifier","modifierName":{"id":10974,"name":"BaseUpgradeable","nameLocations":["5287:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":10867,"src":"5287:15:38"},"nodeType":"ModifierInvocation","src":"5287:27:38"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10972,"mutability":"mutable","name":"graphToken","nameLocation":"5275:10:38","nodeType":"VariableDeclaration","scope":10979,"src":"5267:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10971,"name":"address","nodeType":"ElementaryTypeName","src":"5267:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5266:20:38"},"returnParameters":{"id":10977,"nodeType":"ParameterList","parameters":[],"src":"5315:0:38"},"scope":11390,"src":"5255:62:38","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11020,"nodeType":"Block","src":"5618:483:38","statements":[{"expression":{"arguments":[{"id":10988,"name":"governor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10982,"src":"5651:8:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10987,"name":"__BaseUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10768,"src":"5628:22:38","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5628:32:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10990,"nodeType":"ExpressionStatement","src":"5628:32:38"},{"expression":{"arguments":[{"id":10992,"name":"ORACLE_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10912,"src":"5729:11:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10993,"name":"OPERATOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"5742:13:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10991,"name":"_setRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"5715:13:38","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":10994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5715:41:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10995,"nodeType":"ExpressionStatement","src":"5715:41:38"},{"assignments":[10998],"declarations":[{"constant":false,"id":10998,"mutability":"mutable","name":"$","nameLocation":"5834:1:38","nodeType":"VariableDeclaration","scope":11020,"src":"5797:38:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"},"typeName":{"id":10997,"nodeType":"UserDefinedTypeName","pathNode":{"id":10996,"name":"RewardsEligibilityOracleData","nameLocations":["5797:28:38"],"nodeType":"IdentifierPath","referencedDeclaration":10956,"src":"5797:28:38"},"referencedDeclaration":10956,"src":"5797:28:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"}},"visibility":"internal"}],"id":11001,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10999,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"5838:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5838:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5797:78:38"},{"expression":{"id":11006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11002,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10998,"src":"5885:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11004,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5887:17:38","memberName":"eligibilityPeriod","nodeType":"MemberAccess","referencedDeclaration":10946,"src":"5885:19:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3134","id":11005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5907:7:38","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_1209600_by_1","typeString":"int_const 1209600"},"value":"14"},"src":"5885:29:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11007,"nodeType":"ExpressionStatement","src":"5885:29:38"},{"expression":{"id":11012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11008,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10998,"src":"5924:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5926:19:38","memberName":"oracleUpdateTimeout","nodeType":"MemberAccess","referencedDeclaration":10952,"src":"5924:21:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"37","id":11011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5948:6:38","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"7"},"src":"5924:30:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11013,"nodeType":"ExpressionStatement","src":"5924:30:38"},{"expression":{"id":11018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11014,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10998,"src":"5964:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5966:28:38","memberName":"eligibilityValidationEnabled","nodeType":"MemberAccess","referencedDeclaration":10949,"src":"5964:30:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":11017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5997:5:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5964:38:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11019,"nodeType":"ExpressionStatement","src":"5964:38:38"}]},"documentation":{"id":10980,"nodeType":"StructuredDocumentation","src":"5352:194:38","text":" @notice Initialize the RewardsEligibilityOracle contract\n @param governor Address that will have the GOVERNOR_ROLE\n @dev Also sets OPERATOR as admin of ORACLE role"},"functionSelector":"c4d66de8","id":11021,"implemented":true,"kind":"function","modifiers":[{"id":10985,"kind":"modifierInvocation","modifierName":{"id":10984,"name":"initializer","nameLocations":["5606:11:38"],"nodeType":"IdentifierPath","referencedDeclaration":1154,"src":"5606:11:38"},"nodeType":"ModifierInvocation","src":"5606:11:38"}],"name":"initialize","nameLocation":"5560:10:38","nodeType":"FunctionDefinition","parameters":{"id":10983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10982,"mutability":"mutable","name":"governor","nameLocation":"5579:8:38","nodeType":"VariableDeclaration","scope":11021,"src":"5571:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10981,"name":"address","nodeType":"ElementaryTypeName","src":"5571:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5570:18:38"},"returnParameters":{"id":10986,"nodeType":"ParameterList","parameters":[],"src":"5618:0:38"},"scope":11390,"src":"5551:550:38","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[10866],"body":{"id":11063,"nodeType":"Block","src":"6491:373:38","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11030,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"6520:11:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11032,"name":"IRewardsEligibility","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"6540:19:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRewardsEligibility_$331_$","typeString":"type(contract IRewardsEligibility)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IRewardsEligibility_$331_$","typeString":"type(contract IRewardsEligibility)"}],"id":11031,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6535:4:38","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6535:25:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IRewardsEligibility_$331","typeString":"type(contract IRewardsEligibility)"}},"id":11034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6561:11:38","memberName":"interfaceId","nodeType":"MemberAccess","src":"6535:37:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"6520:52:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11036,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"6588:11:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11038,"name":"IRewardsEligibilityAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"6608:33:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRewardsEligibilityAdministration_$363_$","typeString":"type(contract IRewardsEligibilityAdministration)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IRewardsEligibilityAdministration_$363_$","typeString":"type(contract IRewardsEligibilityAdministration)"}],"id":11037,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6603:4:38","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6603:39:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IRewardsEligibilityAdministration_$363","typeString":"type(contract IRewardsEligibilityAdministration)"}},"id":11040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6643:11:38","memberName":"interfaceId","nodeType":"MemberAccess","src":"6603:51:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"6588:66:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6520:134:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11043,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"6670:11:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11045,"name":"IRewardsEligibilityReporting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"6690:28:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRewardsEligibilityReporting_$419_$","typeString":"type(contract IRewardsEligibilityReporting)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IRewardsEligibilityReporting_$419_$","typeString":"type(contract IRewardsEligibilityReporting)"}],"id":11044,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6685:4:38","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6685:34:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IRewardsEligibilityReporting_$419","typeString":"type(contract IRewardsEligibilityReporting)"}},"id":11047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6720:11:38","memberName":"interfaceId","nodeType":"MemberAccess","src":"6685:46:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"6670:61:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6520:211:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11050,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"6747:11:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11052,"name":"IRewardsEligibilityStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":455,"src":"6767:25:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRewardsEligibilityStatus_$455_$","typeString":"type(contract IRewardsEligibilityStatus)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IRewardsEligibilityStatus_$455_$","typeString":"type(contract IRewardsEligibilityStatus)"}],"id":11051,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6762:4:38","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6762:31:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IRewardsEligibilityStatus_$455","typeString":"type(contract IRewardsEligibilityStatus)"}},"id":11054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6794:11:38","memberName":"interfaceId","nodeType":"MemberAccess","src":"6762:43:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"6747:58:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6520:285:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":11059,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"6845:11:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":11057,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6821:5:38","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_RewardsEligibilityOracle_$11390_$","typeString":"type(contract super RewardsEligibilityOracle)"}},"id":11058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6827:17:38","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":10866,"src":"6821:23:38","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":11060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6821:36:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6520:337:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11029,"id":11062,"nodeType":"Return","src":"6501:356:38"}]},"documentation":{"id":11022,"nodeType":"StructuredDocumentation","src":"6107:288:38","text":" @notice Check if this contract supports a given interface\n @dev Overrides the supportsInterface function from ERC165Upgradeable\n @param interfaceId The interface identifier to check\n @return True if the contract supports the interface, false otherwise"},"functionSelector":"01ffc9a7","id":11064,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"6409:17:38","nodeType":"FunctionDefinition","overrides":{"id":11026,"nodeType":"OverrideSpecifier","overrides":[],"src":"6467:8:38"},"parameters":{"id":11025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11024,"mutability":"mutable","name":"interfaceId","nameLocation":"6434:11:38","nodeType":"VariableDeclaration","scope":11064,"src":"6427:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11023,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6427:6:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6426:20:38"},"returnParameters":{"id":11029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11028,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11064,"src":"6485:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11027,"name":"bool","nodeType":"ElementaryTypeName","src":"6485:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6484:6:38"},"scope":11390,"src":"6400:464:38","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[346],"body":{"id":11105,"nodeType":"Block","src":"7740:382:38","statements":[{"assignments":[11078],"declarations":[{"constant":false,"id":11078,"mutability":"mutable","name":"$","nameLocation":"7787:1:38","nodeType":"VariableDeclaration","scope":11105,"src":"7750:38:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"},"typeName":{"id":11077,"nodeType":"UserDefinedTypeName","pathNode":{"id":11076,"name":"RewardsEligibilityOracleData","nameLocations":["7750:28:38"],"nodeType":"IdentifierPath","referencedDeclaration":10956,"src":"7750:28:38"},"referencedDeclaration":10956,"src":"7750:28:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"}},"visibility":"internal"}],"id":11081,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11079,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"7791:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7791:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7750:78:38"},{"assignments":[11083],"declarations":[{"constant":false,"id":11083,"mutability":"mutable","name":"oldEligibilityPeriod","nameLocation":"7846:20:38","nodeType":"VariableDeclaration","scope":11105,"src":"7838:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11082,"name":"uint256","nodeType":"ElementaryTypeName","src":"7838:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11086,"initialValue":{"expression":{"id":11084,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11078,"src":"7869:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7871:17:38","memberName":"eligibilityPeriod","nodeType":"MemberAccess","referencedDeclaration":10946,"src":"7869:19:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7838:50:38"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11087,"name":"eligibilityPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11067,"src":"7903:17:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11088,"name":"oldEligibilityPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11083,"src":"7924:20:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7903:41:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11102,"nodeType":"IfStatement","src":"7899:195:38","trueBody":{"id":11101,"nodeType":"Block","src":"7946:148:38","statements":[{"expression":{"id":11094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11090,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11078,"src":"7960:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7962:17:38","memberName":"eligibilityPeriod","nodeType":"MemberAccess","referencedDeclaration":10946,"src":"7960:19:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11093,"name":"eligibilityPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11067,"src":"7982:17:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7960:39:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11095,"nodeType":"ExpressionStatement","src":"7960:39:38"},{"eventCall":{"arguments":[{"id":11097,"name":"oldEligibilityPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11083,"src":"8043:20:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11098,"name":"eligibilityPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11067,"src":"8065:17:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11096,"name":"EligibilityPeriodUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"8018:24:38","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8018:65:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11100,"nodeType":"EmitStatement","src":"8013:70:38"}]}},{"expression":{"hexValue":"74727565","id":11103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8111:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11075,"id":11104,"nodeType":"Return","src":"8104:11:38"}]},"documentation":{"id":11065,"nodeType":"StructuredDocumentation","src":"6905:716:38","text":" @notice Set the eligibility period for indexers\n @dev Only callable by accounts with the OPERATOR_ROLE\n @param eligibilityPeriod New eligibility period in seconds\n @return True if the state is as requested (eligibility period is set to the specified value)\n @custom:warning Configuration changes can affect in-flight reward claim transactions. Reducing the\n eligibility period may cause indexers to lose rewards if their claim transactions execute after\n they become ineligible due to the configuration change. Consider announcing configuration changes\n in advance and using a two-step process (announce, then execute) for changes that reduce eligibility."},"functionSelector":"5fd772d5","id":11106,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11071,"name":"OPERATOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"7710:13:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":11072,"kind":"modifierInvocation","modifierName":{"id":11070,"name":"onlyRole","nameLocations":["7701:8:38"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"7701:8:38"},"nodeType":"ModifierInvocation","src":"7701:23:38"}],"name":"setEligibilityPeriod","nameLocation":"7635:20:38","nodeType":"FunctionDefinition","overrides":{"id":11069,"nodeType":"OverrideSpecifier","overrides":[],"src":"7692:8:38"},"parameters":{"id":11068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11067,"mutability":"mutable","name":"eligibilityPeriod","nameLocation":"7664:17:38","nodeType":"VariableDeclaration","scope":11106,"src":"7656:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11066,"name":"uint256","nodeType":"ElementaryTypeName","src":"7656:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7655:27:38"},"returnParameters":{"id":11075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11074,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11106,"src":"7734:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11073,"name":"bool","nodeType":"ElementaryTypeName","src":"7734:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7733:6:38"},"scope":11390,"src":"7626:496:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[354],"body":{"id":11147,"nodeType":"Block","src":"8535:364:38","statements":[{"assignments":[11120],"declarations":[{"constant":false,"id":11120,"mutability":"mutable","name":"$","nameLocation":"8582:1:38","nodeType":"VariableDeclaration","scope":11147,"src":"8545:38:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"},"typeName":{"id":11119,"nodeType":"UserDefinedTypeName","pathNode":{"id":11118,"name":"RewardsEligibilityOracleData","nameLocations":["8545:28:38"],"nodeType":"IdentifierPath","referencedDeclaration":10956,"src":"8545:28:38"},"referencedDeclaration":10956,"src":"8545:28:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"}},"visibility":"internal"}],"id":11123,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11121,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"8586:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8586:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8545:78:38"},{"assignments":[11125],"declarations":[{"constant":false,"id":11125,"mutability":"mutable","name":"oldTimeout","nameLocation":"8641:10:38","nodeType":"VariableDeclaration","scope":11147,"src":"8633:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11124,"name":"uint256","nodeType":"ElementaryTypeName","src":"8633:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11128,"initialValue":{"expression":{"id":11126,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11120,"src":"8654:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8656:19:38","memberName":"oracleUpdateTimeout","nodeType":"MemberAccess","referencedDeclaration":10952,"src":"8654:21:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8633:42:38"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11129,"name":"oracleUpdateTimeout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11109,"src":"8690:19:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11130,"name":"oldTimeout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11125,"src":"8713:10:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8690:33:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11144,"nodeType":"IfStatement","src":"8686:185:38","trueBody":{"id":11143,"nodeType":"Block","src":"8725:146:38","statements":[{"expression":{"id":11136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11132,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11120,"src":"8739:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8741:19:38","memberName":"oracleUpdateTimeout","nodeType":"MemberAccess","referencedDeclaration":10952,"src":"8739:21:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11135,"name":"oracleUpdateTimeout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11109,"src":"8763:19:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8739:43:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11137,"nodeType":"ExpressionStatement","src":"8739:43:38"},{"eventCall":{"arguments":[{"id":11139,"name":"oldTimeout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11125,"src":"8828:10:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11140,"name":"oracleUpdateTimeout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11109,"src":"8840:19:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11138,"name":"OracleUpdateTimeoutUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":399,"src":"8801:26:38","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8801:59:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11142,"nodeType":"EmitStatement","src":"8796:64:38"}]}},{"expression":{"hexValue":"74727565","id":11145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8888:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11117,"id":11146,"nodeType":"Return","src":"8881:11:38"}]},"documentation":{"id":11107,"nodeType":"StructuredDocumentation","src":"8128:270:38","text":" @notice Set the oracle update timeout\n @dev Only callable by accounts with the OPERATOR_ROLE\n @param oracleUpdateTimeout New timeout period in seconds\n @return True if the state is as requested (timeout is set to the specified value)"},"functionSelector":"924ace83","id":11148,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11113,"name":"OPERATOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"8505:13:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":11114,"kind":"modifierInvocation","modifierName":{"id":11112,"name":"onlyRole","nameLocations":["8496:8:38"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"8496:8:38"},"nodeType":"ModifierInvocation","src":"8496:23:38"}],"name":"setOracleUpdateTimeout","nameLocation":"8412:22:38","nodeType":"FunctionDefinition","overrides":{"id":11111,"nodeType":"OverrideSpecifier","overrides":[],"src":"8487:8:38"},"parameters":{"id":11110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11109,"mutability":"mutable","name":"oracleUpdateTimeout","nameLocation":"8452:19:38","nodeType":"VariableDeclaration","scope":11148,"src":"8444:27:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11108,"name":"uint256","nodeType":"ElementaryTypeName","src":"8444:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8434:43:38"},"returnParameters":{"id":11117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11116,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11148,"src":"8529:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11115,"name":"bool","nodeType":"ElementaryTypeName","src":"8529:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8528:6:38"},"scope":11390,"src":"8403:496:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[362],"body":{"id":11184,"nodeType":"Block","src":"9693:295:38","statements":[{"assignments":[11162],"declarations":[{"constant":false,"id":11162,"mutability":"mutable","name":"$","nameLocation":"9740:1:38","nodeType":"VariableDeclaration","scope":11184,"src":"9703:38:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"},"typeName":{"id":11161,"nodeType":"UserDefinedTypeName","pathNode":{"id":11160,"name":"RewardsEligibilityOracleData","nameLocations":["9703:28:38"],"nodeType":"IdentifierPath","referencedDeclaration":10956,"src":"9703:28:38"},"referencedDeclaration":10956,"src":"9703:28:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"}},"visibility":"internal"}],"id":11165,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11163,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"9744:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9744:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9703:78:38"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11166,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11162,"src":"9796:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9798:28:38","memberName":"eligibilityValidationEnabled","nodeType":"MemberAccess","referencedDeclaration":10949,"src":"9796:30:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11168,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11151,"src":"9830:7:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9796:41:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11181,"nodeType":"IfStatement","src":"9792:168:38","trueBody":{"id":11180,"nodeType":"Block","src":"9839:121:38","statements":[{"expression":{"id":11174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11170,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11162,"src":"9853:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9855:28:38","memberName":"eligibilityValidationEnabled","nodeType":"MemberAccess","referencedDeclaration":10949,"src":"9853:30:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11173,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11151,"src":"9886:7:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9853:40:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11175,"nodeType":"ExpressionStatement","src":"9853:40:38"},{"eventCall":{"arguments":[{"id":11177,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11151,"src":"9941:7:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11176,"name":"EligibilityValidationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"9912:28:38","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":11178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9912:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11179,"nodeType":"EmitStatement","src":"9907:42:38"}]}},{"expression":{"hexValue":"74727565","id":11182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9977:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11159,"id":11183,"nodeType":"Return","src":"9970:11:38"}]},"documentation":{"id":11149,"nodeType":"StructuredDocumentation","src":"8905:678:38","text":" @notice Set eligibility validation state\n @dev Only callable by accounts with the OPERATOR_ROLE\n @param enabled True to enable eligibility validation, false to disable\n @return True if successfully set (always the case for current code)\n @custom:warning Enabling eligibility validation can affect in-flight reward claim transactions.\n Indexers who submitted claim transactions while validation was disabled may lose rewards if\n validation is enabled before their transactions execute and they are not marked as eligible.\n Consider announcing this change in advance to allow indexers to adjust their claiming behavior."},"functionSelector":"57f44afc","id":11185,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11155,"name":"OPERATOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"9663:13:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":11156,"kind":"modifierInvocation","modifierName":{"id":11154,"name":"onlyRole","nameLocations":["9654:8:38"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"9654:8:38"},"nodeType":"ModifierInvocation","src":"9654:23:38"}],"name":"setEligibilityValidation","nameLocation":"9597:24:38","nodeType":"FunctionDefinition","overrides":{"id":11153,"nodeType":"OverrideSpecifier","overrides":[],"src":"9645:8:38"},"parameters":{"id":11152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11151,"mutability":"mutable","name":"enabled","nameLocation":"9627:7:38","nodeType":"VariableDeclaration","scope":11185,"src":"9622:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11150,"name":"bool","nodeType":"ElementaryTypeName","src":"9622:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9621:14:38"},"returnParameters":{"id":11159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11158,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11185,"src":"9687:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11157,"name":"bool","nodeType":"ElementaryTypeName","src":"9687:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9686:6:38"},"scope":11390,"src":"9588:400:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[418],"body":{"id":11280,"nodeType":"Block","src":"10468:768:38","statements":[{"eventCall":{"arguments":[{"expression":{"id":11201,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10506:3:38","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10510:6:38","memberName":"sender","nodeType":"MemberAccess","src":"10506:10:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11203,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11191,"src":"10518:4:38","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":11200,"name":"IndexerEligibilityData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":373,"src":"10483:22:38","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":11204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10483:40:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11205,"nodeType":"EmitStatement","src":"10478:45:38"},{"assignments":[11207],"declarations":[{"constant":false,"id":11207,"mutability":"mutable","name":"updatedCount","nameLocation":"10542:12:38","nodeType":"VariableDeclaration","scope":11280,"src":"10534:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11206,"name":"uint256","nodeType":"ElementaryTypeName","src":"10534:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11209,"initialValue":{"hexValue":"30","id":11208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10557:1:38","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10534:24:38"},{"assignments":[11211],"declarations":[{"constant":false,"id":11211,"mutability":"mutable","name":"blockTimestamp","nameLocation":"10576:14:38","nodeType":"VariableDeclaration","scope":11280,"src":"10568:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11210,"name":"uint256","nodeType":"ElementaryTypeName","src":"10568:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11214,"initialValue":{"expression":{"id":11212,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"10593:5:38","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10599:9:38","memberName":"timestamp","nodeType":"MemberAccess","src":"10593:15:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10568:40:38"},{"assignments":[11217],"declarations":[{"constant":false,"id":11217,"mutability":"mutable","name":"$","nameLocation":"10656:1:38","nodeType":"VariableDeclaration","scope":11280,"src":"10619:38:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"},"typeName":{"id":11216,"nodeType":"UserDefinedTypeName","pathNode":{"id":11215,"name":"RewardsEligibilityOracleData","nameLocations":["10619:28:38"],"nodeType":"IdentifierPath","referencedDeclaration":10956,"src":"10619:28:38"},"referencedDeclaration":10956,"src":"10619:28:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"}},"visibility":"internal"}],"id":11220,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11218,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"10660:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10660:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10619:78:38"},{"expression":{"id":11225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11221,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11217,"src":"10707:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11223,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10709:20:38","memberName":"lastOracleUpdateTime","nodeType":"MemberAccess","referencedDeclaration":10955,"src":"10707:22:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11224,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11211,"src":"10732:14:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10707:39:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11226,"nodeType":"ExpressionStatement","src":"10707:39:38"},{"body":{"id":11276,"nodeType":"Block","src":"10855:345:38","statements":[{"assignments":[11239],"declarations":[{"constant":false,"id":11239,"mutability":"mutable","name":"indexer","nameLocation":"10877:7:38","nodeType":"VariableDeclaration","scope":11276,"src":"10869:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11238,"name":"address","nodeType":"ElementaryTypeName","src":"10869:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11243,"initialValue":{"baseExpression":{"id":11240,"name":"indexers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11189,"src":"10887:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":11242,"indexExpression":{"id":11241,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11228,"src":"10896:1:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10887:11:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10869:29:38"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11244,"name":"indexer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11239,"src":"10917:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":11247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10936:1:38","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10928:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11245,"name":"address","nodeType":"ElementaryTypeName","src":"10928:7:38","typeDescriptions":{}}},"id":11248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10928:10:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10917:21:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":11250,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11217,"src":"10942:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10944:28:38","memberName":"indexerEligibilityTimestamps","nodeType":"MemberAccess","referencedDeclaration":10943,"src":"10942:30:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11253,"indexExpression":{"id":11252,"name":"indexer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11239,"src":"10973:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10942:39:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11254,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11211,"src":"10984:14:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10942:56:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10917:81:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11275,"nodeType":"IfStatement","src":"10913:277:38","trueBody":{"id":11274,"nodeType":"Block","src":"11000:190:38","statements":[{"expression":{"id":11263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":11257,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11217,"src":"11018:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11020:28:38","memberName":"indexerEligibilityTimestamps","nodeType":"MemberAccess","referencedDeclaration":10943,"src":"11018:30:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11261,"indexExpression":{"id":11259,"name":"indexer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11239,"src":"11049:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11018:39:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11262,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11211,"src":"11060:14:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11018:56:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11264,"nodeType":"ExpressionStatement","src":"11018:56:38"},{"eventCall":{"arguments":[{"id":11266,"name":"indexer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11239,"src":"11123:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11267,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11132:3:38","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11136:6:38","memberName":"sender","nodeType":"MemberAccess","src":"11132:10:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11265,"name":"IndexerEligibilityRenewed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"11097:25:38","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":11269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11097:46:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11270,"nodeType":"EmitStatement","src":"11092:51:38"},{"expression":{"id":11272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11161:14:38","subExpression":{"id":11271,"name":"updatedCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11207,"src":"11163:12:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11273,"nodeType":"ExpressionStatement","src":"11161:14:38"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11231,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11228,"src":"10829:1:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11232,"name":"indexers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11189,"src":"10833:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":11233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10842:6:38","memberName":"length","nodeType":"MemberAccess","src":"10833:15:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10829:19:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11277,"initializationExpression":{"assignments":[11228],"declarations":[{"constant":false,"id":11228,"mutability":"mutable","name":"i","nameLocation":"10822:1:38","nodeType":"VariableDeclaration","scope":11277,"src":"10814:9:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11227,"name":"uint256","nodeType":"ElementaryTypeName","src":"10814:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11230,"initialValue":{"hexValue":"30","id":11229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10826:1:38","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10814:13:38"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":11236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10850:3:38","subExpression":{"id":11235,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11228,"src":"10852:1:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11237,"nodeType":"ExpressionStatement","src":"10850:3:38"},"nodeType":"ForStatement","src":"10809:391:38"},{"expression":{"id":11278,"name":"updatedCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11207,"src":"11217:12:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11199,"id":11279,"nodeType":"Return","src":"11210:19:38"}]},"documentation":{"id":11186,"nodeType":"StructuredDocumentation","src":"9994:306:38","text":" @notice Renew eligibility for provided indexers to receive rewards\n @param indexers Array of indexer addresses. Zero addresses are ignored.\n @param data Arbitrary calldata for future extensions\n @return Number of indexers whose eligibility renewal timestamp was updated"},"functionSelector":"38b7c077","id":11281,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11195,"name":"ORACLE_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10912,"src":"10437:11:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":11196,"kind":"modifierInvocation","modifierName":{"id":11194,"name":"onlyRole","nameLocations":["10428:8:38"],"nodeType":"IdentifierPath","referencedDeclaration":515,"src":"10428:8:38"},"nodeType":"ModifierInvocation","src":"10428:21:38"}],"name":"renewIndexerEligibility","nameLocation":"10314:23:38","nodeType":"FunctionDefinition","overrides":{"id":11193,"nodeType":"OverrideSpecifier","overrides":[],"src":"10419:8:38"},"parameters":{"id":11192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11189,"mutability":"mutable","name":"indexers","nameLocation":"10366:8:38","nodeType":"VariableDeclaration","scope":11281,"src":"10347:27:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11187,"name":"address","nodeType":"ElementaryTypeName","src":"10347:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11188,"nodeType":"ArrayTypeName","src":"10347:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":11191,"mutability":"mutable","name":"data","nameLocation":"10399:4:38","nodeType":"VariableDeclaration","scope":11281,"src":"10384:19:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11190,"name":"bytes","nodeType":"ElementaryTypeName","src":"10384:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10337:72:38"},"returnParameters":{"id":11199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11198,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11281,"src":"10459:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11197,"name":"uint256","nodeType":"ElementaryTypeName","src":"10459:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10458:9:38"},"scope":11390,"src":"10305:931:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[330],"body":{"id":11324,"nodeType":"Block","src":"12019:527:38","statements":[{"assignments":[11292],"declarations":[{"constant":false,"id":11292,"mutability":"mutable","name":"$","nameLocation":"12066:1:38","nodeType":"VariableDeclaration","scope":11324,"src":"12029:38:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"},"typeName":{"id":11291,"nodeType":"UserDefinedTypeName","pathNode":{"id":11290,"name":"RewardsEligibilityOracleData","nameLocations":["12029:28:38"],"nodeType":"IdentifierPath","referencedDeclaration":10956,"src":"12029:28:38"},"referencedDeclaration":10956,"src":"12029:28:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData"}},"visibility":"internal"}],"id":11295,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11293,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"12070:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12070:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12029:78:38"},{"condition":{"id":11298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12203:31:38","subExpression":{"expression":{"id":11296,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11292,"src":"12204:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11297,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12206:28:38","memberName":"eligibilityValidationEnabled","nodeType":"MemberAccess","referencedDeclaration":10949,"src":"12204:30:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11301,"nodeType":"IfStatement","src":"12199:48:38","trueBody":{"expression":{"hexValue":"74727565","id":11299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12243:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11289,"id":11300,"nodeType":"Return","src":"12236:11:38"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11302,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11292,"src":"12365:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12367:20:38","memberName":"lastOracleUpdateTime","nodeType":"MemberAccess","referencedDeclaration":10955,"src":"12365:22:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":11304,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11292,"src":"12390:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12392:19:38","memberName":"oracleUpdateTimeout","nodeType":"MemberAccess","referencedDeclaration":10952,"src":"12390:21:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12365:46:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11307,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12414:5:38","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12420:9:38","memberName":"timestamp","nodeType":"MemberAccess","src":"12414:15:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12365:64:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11312,"nodeType":"IfStatement","src":"12361:81:38","trueBody":{"expression":{"hexValue":"74727565","id":11310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12438:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11289,"id":11311,"nodeType":"Return","src":"12431:11:38"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11313,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12460:5:38","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12466:9:38","memberName":"timestamp","nodeType":"MemberAccess","src":"12460:15:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":11315,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11292,"src":"12478:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12480:28:38","memberName":"indexerEligibilityTimestamps","nodeType":"MemberAccess","referencedDeclaration":10943,"src":"12478:30:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11318,"indexExpression":{"id":11317,"name":"indexer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11284,"src":"12509:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12478:39:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":11319,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11292,"src":"12520:1:38","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11320,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12522:17:38","memberName":"eligibilityPeriod","nodeType":"MemberAccess","referencedDeclaration":10946,"src":"12520:19:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12478:61:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12460:79:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11289,"id":11323,"nodeType":"Return","src":"12453:86:38"}]},"documentation":{"id":11282,"nodeType":"StructuredDocumentation","src":"11271:668:38","text":" @inheritdoc IRewardsEligibility\n @dev Returns true if any of the following conditions are met:\n 1. Eligibility validation is disabled globally\n 2. Oracle timeout has been exceeded (fail-safe to allow all indexers)\n 3. block.timestamp < indexerEligibilityTimestamps[indexer] + eligibilityPeriod\n Note on condition 3: For indexers who have never been registered, indexerEligibilityTimestamps[indexer]\n is 0. If eligibilityPeriod is set to an extremely large value exceeding block.timestamp, the check\n becomes (block.timestamp < 0 + eligibilityPeriod), which will be true, making all indexers eligible."},"functionSelector":"66e305fd","id":11325,"implemented":true,"kind":"function","modifiers":[],"name":"isEligible","nameLocation":"11953:10:38","nodeType":"FunctionDefinition","overrides":{"id":11286,"nodeType":"OverrideSpecifier","overrides":[],"src":"11995:8:38"},"parameters":{"id":11285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11284,"mutability":"mutable","name":"indexer","nameLocation":"11972:7:38","nodeType":"VariableDeclaration","scope":11325,"src":"11964:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11283,"name":"address","nodeType":"ElementaryTypeName","src":"11964:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11963:17:38"},"returnParameters":{"id":11289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11288,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11325,"src":"12013:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11287,"name":"bool","nodeType":"ElementaryTypeName","src":"12013:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12012:6:38"},"scope":11390,"src":"11944:602:38","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[430],"body":{"id":11340,"nodeType":"Block","src":"12891:99:38","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11334,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"12908:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12908:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12946:28:38","memberName":"indexerEligibilityTimestamps","nodeType":"MemberAccess","referencedDeclaration":10943,"src":"12908:66:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11338,"indexExpression":{"id":11337,"name":"indexer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11328,"src":"12975:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12908:75:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11333,"id":11339,"nodeType":"Return","src":"12901:82:38"}]},"documentation":{"id":11326,"nodeType":"StructuredDocumentation","src":"12552:241:38","text":" @notice Get the last eligibility renewal timestamp for an indexer\n @param indexer Address of the indexer\n @return The last eligibility renewal timestamp, or 0 if the indexer's eligibility has never been renewed"},"functionSelector":"d353402d","id":11341,"implemented":true,"kind":"function","modifiers":[],"name":"getEligibilityRenewalTime","nameLocation":"12807:25:38","nodeType":"FunctionDefinition","overrides":{"id":11330,"nodeType":"OverrideSpecifier","overrides":[],"src":"12864:8:38"},"parameters":{"id":11329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11328,"mutability":"mutable","name":"indexer","nameLocation":"12841:7:38","nodeType":"VariableDeclaration","scope":11341,"src":"12833:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11327,"name":"address","nodeType":"ElementaryTypeName","src":"12833:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12832:17:38"},"returnParameters":{"id":11333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11341,"src":"12882:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11331,"name":"uint256","nodeType":"ElementaryTypeName","src":"12882:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12881:9:38"},"scope":11390,"src":"12798:192:38","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[436],"body":{"id":11352,"nodeType":"Block","src":"13184:79:38","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11348,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"13201:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13201:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13239:17:38","memberName":"eligibilityPeriod","nodeType":"MemberAccess","referencedDeclaration":10946,"src":"13201:55:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11347,"id":11351,"nodeType":"Return","src":"13194:62:38"}]},"documentation":{"id":11342,"nodeType":"StructuredDocumentation","src":"12996:110:38","text":" @notice Get the eligibility period\n @return The current eligibility period in seconds"},"functionSelector":"d0a5379e","id":11353,"implemented":true,"kind":"function","modifiers":[],"name":"getEligibilityPeriod","nameLocation":"13120:20:38","nodeType":"FunctionDefinition","overrides":{"id":11344,"nodeType":"OverrideSpecifier","overrides":[],"src":"13157:8:38"},"parameters":{"id":11343,"nodeType":"ParameterList","parameters":[],"src":"13140:2:38"},"returnParameters":{"id":11347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11353,"src":"13175:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11345,"name":"uint256","nodeType":"ElementaryTypeName","src":"13175:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13174:9:38"},"scope":11390,"src":"13111:152:38","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[442],"body":{"id":11364,"nodeType":"Block","src":"13465:81:38","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11360,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"13482:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13482:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13520:19:38","memberName":"oracleUpdateTimeout","nodeType":"MemberAccess","referencedDeclaration":10952,"src":"13482:57:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11359,"id":11363,"nodeType":"Return","src":"13475:64:38"}]},"documentation":{"id":11354,"nodeType":"StructuredDocumentation","src":"13269:116:38","text":" @notice Get the oracle update timeout\n @return The current oracle update timeout in seconds"},"functionSelector":"20ea3509","id":11365,"implemented":true,"kind":"function","modifiers":[],"name":"getOracleUpdateTimeout","nameLocation":"13399:22:38","nodeType":"FunctionDefinition","overrides":{"id":11356,"nodeType":"OverrideSpecifier","overrides":[],"src":"13438:8:38"},"parameters":{"id":11355,"nodeType":"ParameterList","parameters":[],"src":"13421:2:38"},"returnParameters":{"id":11359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11365,"src":"13456:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11357,"name":"uint256","nodeType":"ElementaryTypeName","src":"13456:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13455:9:38"},"scope":11390,"src":"13390:156:38","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[448],"body":{"id":11376,"nodeType":"Block","src":"13746:82:38","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11372,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"13763:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13763:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13801:20:38","memberName":"lastOracleUpdateTime","nodeType":"MemberAccess","referencedDeclaration":10955,"src":"13763:58:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11371,"id":11375,"nodeType":"Return","src":"13756:65:38"}]},"documentation":{"id":11366,"nodeType":"StructuredDocumentation","src":"13552:113:38","text":" @notice Get the last oracle update time\n @return The timestamp of the last oracle update"},"functionSelector":"be626dd2","id":11377,"implemented":true,"kind":"function","modifiers":[],"name":"getLastOracleUpdateTime","nameLocation":"13679:23:38","nodeType":"FunctionDefinition","overrides":{"id":11368,"nodeType":"OverrideSpecifier","overrides":[],"src":"13719:8:38"},"parameters":{"id":11367,"nodeType":"ParameterList","parameters":[],"src":"13702:2:38"},"returnParameters":{"id":11371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11370,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11377,"src":"13737:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11369,"name":"uint256","nodeType":"ElementaryTypeName","src":"13737:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13736:9:38"},"scope":11390,"src":"13670:158:38","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[454],"body":{"id":11388,"nodeType":"Block","src":"14046:90:38","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11384,"name":"_getRewardsEligibilityOracleStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"14063:35:38","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr_$","typeString":"function () pure returns (struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer)"}},"id":11385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14063:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardsEligibilityOracleData_$10956_storage_ptr","typeString":"struct RewardsEligibilityOracle.RewardsEligibilityOracleData storage pointer"}},"id":11386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14101:28:38","memberName":"eligibilityValidationEnabled","nodeType":"MemberAccess","referencedDeclaration":10949,"src":"14063:66:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11383,"id":11387,"nodeType":"Return","src":"14056:73:38"}]},"documentation":{"id":11378,"nodeType":"StructuredDocumentation","src":"13834:133:38","text":" @notice Get eligibility validation state\n @return True if eligibility validation is enabled, false otherwise"},"functionSelector":"ce0a2071","id":11389,"implemented":true,"kind":"function","modifiers":[],"name":"getEligibilityValidation","nameLocation":"13981:24:38","nodeType":"FunctionDefinition","overrides":{"id":11380,"nodeType":"OverrideSpecifier","overrides":[],"src":"14022:8:38"},"parameters":{"id":11379,"nodeType":"ParameterList","parameters":[],"src":"14005:2:38"},"returnParameters":{"id":11383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11389,"src":"14040:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11381,"name":"bool","nodeType":"ElementaryTypeName","src":"14040:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14039:6:38"},"scope":11390,"src":"13972:164:38","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11391,"src":"2008:12130:38","usedErrors":[1063,1066,1399,1402,1570,1573,10721,10724],"usedEvents":[373,380,387,392,399,1071,1391,1396,1582,1591,1600]}],"src":"46:14093:38"},"id":38},"project/contracts/test/allocate/IssuanceAllocatorTestHarness.sol":{"ast":{"absolutePath":"project/contracts/test/allocate/IssuanceAllocatorTestHarness.sol","exportedSymbols":{"IssuanceAllocator":[10671],"IssuanceAllocatorTestHarness":[11445]},"id":11446,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11392,"literals":["solidity","0.8",".33"],"nodeType":"PragmaDirective","src":"46:23:39"},{"absolutePath":"project/contracts/allocate/IssuanceAllocator.sol","file":"../../allocate/IssuanceAllocator.sol","id":11394,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11446,"sourceUnit":10672,"src":"71:73:39","symbolAliases":[{"foreign":{"id":11393,"name":"IssuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"80:17:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11396,"name":"IssuanceAllocator","nameLocations":["436:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":10671,"src":"436:17:39"},"id":11397,"nodeType":"InheritanceSpecifier","src":"436:17:39"}],"canonicalName":"IssuanceAllocatorTestHarness","contractDependencies":[],"contractKind":"contract","documentation":{"id":11395,"nodeType":"StructuredDocumentation","src":"146:248:39","text":" @title IssuanceAllocatorTestHarness\n @author Edge & Node\n @notice Test harness to expose internal functions for white-box testing\n @dev This contract allows direct testing of internal distribution functions to achieve 100% coverage"},"fullyImplemented":true,"id":11445,"linearizedBaseContracts":[11445,10671,146,226,130,168,2878,10867,319,1520,1046,820,1560,3367,1669,1643,1360,1314],"name":"IssuanceAllocatorTestHarness","nameLocation":"404:28:39","nodeType":"ContractDefinition","nodes":[{"body":{"id":11406,"nodeType":"Block","src":"702:2:39","statements":[]},"documentation":{"id":11398,"nodeType":"StructuredDocumentation","src":"460:173:39","text":" @notice Constructor for the test harness\n @param _graphToken Address of the Graph Token contract\n @custom:oz-upgrades-unsafe-allow constructor"},"id":11407,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11403,"name":"_graphToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11400,"src":"689:11:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11404,"kind":"baseConstructorSpecifier","modifierName":{"id":11402,"name":"IssuanceAllocator","nameLocations":["671:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":10671,"src":"671:17:39"},"nodeType":"ModifierInvocation","src":"671:30:39"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11400,"mutability":"mutable","name":"_graphToken","nameLocation":"658:11:39","nodeType":"VariableDeclaration","scope":11407,"src":"650:19:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11399,"name":"address","nodeType":"ElementaryTypeName","src":"650:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"649:21:39"},"returnParameters":{"id":11405,"nodeType":"ParameterList","parameters":[],"src":"702:0:39"},"scope":11445,"src":"638:66:39","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11423,"nodeType":"Block","src":"1217:90:39","statements":[{"expression":{"arguments":[{"id":11418,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11410,"src":"1260:9:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11419,"name":"allocatedRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"1271:13:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11420,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11414,"src":"1286:13:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11417,"name":"_distributePendingProportionally","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9530,"src":"1227:32:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":11421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1227:73:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11422,"nodeType":"ExpressionStatement","src":"1227:73:39"}]},"documentation":{"id":11408,"nodeType":"StructuredDocumentation","src":"710:350:39","text":" @notice Exposes _distributePendingProportionally for testing\n @dev Allows testing of defensive checks and edge cases\n @param available Total available allocator-minting budget for the period\n @param allocatedRate Total rate allocated to non-default targets\n @param toBlockNumber Block number distributing to"},"functionSelector":"e038978e","id":11424,"implemented":true,"kind":"function","modifiers":[],"name":"exposedDistributePendingProportionally","nameLocation":"1074:38:39","nodeType":"FunctionDefinition","parameters":{"id":11415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11410,"mutability":"mutable","name":"available","nameLocation":"1130:9:39","nodeType":"VariableDeclaration","scope":11424,"src":"1122:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11409,"name":"uint256","nodeType":"ElementaryTypeName","src":"1122:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11412,"mutability":"mutable","name":"allocatedRate","nameLocation":"1157:13:39","nodeType":"VariableDeclaration","scope":11424,"src":"1149:21:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11411,"name":"uint256","nodeType":"ElementaryTypeName","src":"1149:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11414,"mutability":"mutable","name":"toBlockNumber","nameLocation":"1188:13:39","nodeType":"VariableDeclaration","scope":11424,"src":"1180:21:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11413,"name":"uint256","nodeType":"ElementaryTypeName","src":"1180:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1112:95:39"},"returnParameters":{"id":11416,"nodeType":"ParameterList","parameters":[],"src":"1217:0:39"},"scope":11445,"src":"1065:242:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11443,"nodeType":"Block","src":"1927:97:39","statements":[{"expression":{"arguments":[{"id":11437,"name":"blocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11427,"src":"1968:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11438,"name":"available","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11429,"src":"1976:9:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11439,"name":"allocatedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11431,"src":"1987:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11440,"name":"toBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"2003:13:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11436,"name":"_distributePendingWithFullRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9438,"src":"1937:30:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":11441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1937:80:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11442,"nodeType":"ExpressionStatement","src":"1937:80:39"}]},"documentation":{"id":11425,"nodeType":"StructuredDocumentation","src":"1313:434:39","text":" @notice Exposes _distributePendingWithFullRate for testing\n @dev Allows testing of edge cases in full rate distribution\n @param blocks Number of blocks in the distribution period\n @param available Total available allocator-minting budget for the period\n @param allocatedTotal Total amount allocated to non-default targets at full rate\n @param toBlockNumber Block number distributing to"},"functionSelector":"d48beb1b","id":11444,"implemented":true,"kind":"function","modifiers":[],"name":"exposedDistributePendingWithFullRate","nameLocation":"1761:36:39","nodeType":"FunctionDefinition","parameters":{"id":11434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11427,"mutability":"mutable","name":"blocks","nameLocation":"1815:6:39","nodeType":"VariableDeclaration","scope":11444,"src":"1807:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11426,"name":"uint256","nodeType":"ElementaryTypeName","src":"1807:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11429,"mutability":"mutable","name":"available","nameLocation":"1839:9:39","nodeType":"VariableDeclaration","scope":11444,"src":"1831:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11428,"name":"uint256","nodeType":"ElementaryTypeName","src":"1831:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11431,"mutability":"mutable","name":"allocatedTotal","nameLocation":"1866:14:39","nodeType":"VariableDeclaration","scope":11444,"src":"1858:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11430,"name":"uint256","nodeType":"ElementaryTypeName","src":"1858:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11433,"mutability":"mutable","name":"toBlockNumber","nameLocation":"1898:13:39","nodeType":"VariableDeclaration","scope":11444,"src":"1890:21:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11432,"name":"uint256","nodeType":"ElementaryTypeName","src":"1890:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1797:120:39"},"returnParameters":{"id":11435,"nodeType":"ParameterList","parameters":[],"src":"1927:0:39"},"scope":11445,"src":"1752:272:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11446,"src":"395:1631:39","usedErrors":[1063,1066,1399,1402,1570,1573,2822,8521,8528,8537,8542,8551,8556,8561,10721,10724],"usedEvents":[1071,1391,1396,1582,1591,1600,8572,8581,8588,8595,8606,8619,8630,8639,8648]}],"src":"46:1981:39"},"id":39},"project/contracts/test/allocate/MockERC165.sol":{"ast":{"absolutePath":"project/contracts/test/allocate/MockERC165.sol","exportedSymbols":{"IERC165":[3367],"MockERC165":[11470]},"id":11471,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11447,"literals":["solidity","^","0.8",".27"],"nodeType":"PragmaDirective","src":"46:24:40"},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":11449,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11471,"sourceUnit":3368,"src":"72:82:40","symbolAliases":[{"foreign":{"id":11448,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"81:7:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11451,"name":"IERC165","nameLocations":["378:7:40"],"nodeType":"IdentifierPath","referencedDeclaration":3367,"src":"378:7:40"},"id":11452,"nodeType":"InheritanceSpecifier","src":"378:7:40"}],"canonicalName":"MockERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":11450,"nodeType":"StructuredDocumentation","src":"156:198:40","text":" @title MockERC165\n @author Edge & Node\n @dev Minimal implementation of IERC165 for testing\n @notice Used to test interface validation - supports only ERC165, not specific interfaces"},"fullyImplemented":true,"id":11470,"linearizedBaseContracts":[11470,3367],"name":"MockERC165","nameLocation":"364:10:40","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[3366],"body":{"id":11468,"nodeType":"Block","src":"518:64:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11461,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11455,"src":"535:11:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11463,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"555:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$3367_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$3367_$","typeString":"type(contract IERC165)"}],"id":11462,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"550:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"550:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$3367","typeString":"type(contract IERC165)"}},"id":11465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"564:11:40","memberName":"interfaceId","nodeType":"MemberAccess","src":"550:25:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"535:40:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11460,"id":11467,"nodeType":"Return","src":"528:47:40"}]},"documentation":{"id":11453,"nodeType":"StructuredDocumentation","src":"392:38:40","text":" @inheritdoc IERC165"},"functionSelector":"01ffc9a7","id":11469,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"444:17:40","nodeType":"FunctionDefinition","overrides":{"id":11457,"nodeType":"OverrideSpecifier","overrides":[],"src":"494:8:40"},"parameters":{"id":11456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11455,"mutability":"mutable","name":"interfaceId","nameLocation":"469:11:40","nodeType":"VariableDeclaration","scope":11469,"src":"462:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11454,"name":"bytes4","nodeType":"ElementaryTypeName","src":"462:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"461:20:40"},"returnParameters":{"id":11460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11469,"src":"512:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11458,"name":"bool","nodeType":"ElementaryTypeName","src":"512:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"511:6:40"},"scope":11470,"src":"435:147:40","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":11471,"src":"355:229:40","usedErrors":[],"usedEvents":[]}],"src":"46:539:40"},"id":40},"project/contracts/test/allocate/MockNotificationTracker.sol":{"ast":{"absolutePath":"project/contracts/test/allocate/MockNotificationTracker.sol","exportedSymbols":{"ERC165":[3355],"IIssuanceTarget":[289],"MockNotificationTracker":[11558]},"id":11559,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11472,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"32:24:41"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceTarget.sol","id":11474,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11559,"sourceUnit":290,"src":"58:108:41","symbolAliases":[{"foreign":{"id":11473,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"67:15:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":11476,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11559,"sourceUnit":3356,"src":"167:80:41","symbolAliases":[{"foreign":{"id":11475,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3355,"src":"176:6:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11478,"name":"IIssuanceTarget","nameLocations":["482:15:41"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"482:15:41"},"id":11479,"nodeType":"InheritanceSpecifier","src":"482:15:41"},{"baseName":{"id":11480,"name":"ERC165","nameLocations":["499:6:41"],"nodeType":"IdentifierPath","referencedDeclaration":3355,"src":"499:6:41"},"id":11481,"nodeType":"InheritanceSpecifier","src":"499:6:41"}],"canonicalName":"MockNotificationTracker","contractDependencies":[],"contractKind":"contract","documentation":{"id":11477,"nodeType":"StructuredDocumentation","src":"249:196:41","text":" @title MockNotificationTracker\n @author Edge & Node\n @notice A mock contract that tracks notification calls for testing\n @dev Records when beforeIssuanceAllocationChange is called"},"fullyImplemented":true,"id":11558,"linearizedBaseContracts":[11558,3355,3367,289],"name":"MockNotificationTracker","nameLocation":"455:23:41","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":11482,"nodeType":"StructuredDocumentation","src":"512:58:41","text":"@notice Number of times the contract has been notified"},"functionSelector":"71342f0c","id":11484,"mutability":"mutable","name":"notificationCount","nameLocation":"590:17:41","nodeType":"VariableDeclaration","scope":11558,"src":"575:32:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11483,"name":"uint256","nodeType":"ElementaryTypeName","src":"575:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"documentation":{"id":11485,"nodeType":"StructuredDocumentation","src":"614:58:41","text":"@notice Block number of the last notification received"},"functionSelector":"6251b205","id":11487,"mutability":"mutable","name":"lastNotificationBlock","nameLocation":"692:21:41","nodeType":"VariableDeclaration","scope":11558,"src":"677:36:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11486,"name":"uint256","nodeType":"ElementaryTypeName","src":"677:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"anonymous":false,"documentation":{"id":11488,"nodeType":"StructuredDocumentation","src":"720:200:41","text":"@notice Emitted when a notification is received\n @param blockNumber The block number when notification was received\n @param count The total notification count after this notification"},"eventSelector":"d30d8d39ed9738fcbc30cabdfaaed97ab3319ec0f3ae4488a9b3e408a507b1c6","id":11494,"name":"NotificationReceived","nameLocation":"931:20:41","nodeType":"EventDefinition","parameters":{"id":11493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11490,"indexed":true,"mutability":"mutable","name":"blockNumber","nameLocation":"968:11:41","nodeType":"VariableDeclaration","scope":11494,"src":"952:27:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11489,"name":"uint256","nodeType":"ElementaryTypeName","src":"952:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11492,"indexed":true,"mutability":"mutable","name":"count","nameLocation":"997:5:41","nodeType":"VariableDeclaration","scope":11494,"src":"981:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11491,"name":"uint256","nodeType":"ElementaryTypeName","src":"981:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"951:52:41"},"src":"925:79:41"},{"baseFunctions":[282],"body":{"id":11513,"nodeType":"Block","src":"1149:150:41","statements":[{"expression":{"id":11500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1159:19:41","subExpression":{"id":11499,"name":"notificationCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11484,"src":"1161:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11501,"nodeType":"ExpressionStatement","src":"1159:19:41"},{"expression":{"id":11505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11502,"name":"lastNotificationBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11487,"src":"1188:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11503,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1212:5:41","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1218:6:41","memberName":"number","nodeType":"MemberAccess","src":"1212:12:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1188:36:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11506,"nodeType":"ExpressionStatement","src":"1188:36:41"},{"eventCall":{"arguments":[{"expression":{"id":11508,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1260:5:41","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1266:6:41","memberName":"number","nodeType":"MemberAccess","src":"1260:12:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11510,"name":"notificationCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11484,"src":"1274:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11507,"name":"NotificationReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11494,"src":"1239:20:41","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1239:53:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11512,"nodeType":"EmitStatement","src":"1234:58:41"}]},"documentation":{"id":11495,"nodeType":"StructuredDocumentation","src":"1053:31:41","text":"@inheritdoc IIssuanceTarget"},"functionSelector":"3df8d682","id":11514,"implemented":true,"kind":"function","modifiers":[],"name":"beforeIssuanceAllocationChange","nameLocation":"1098:30:41","nodeType":"FunctionDefinition","overrides":{"id":11497,"nodeType":"OverrideSpecifier","overrides":[],"src":"1140:8:41"},"parameters":{"id":11496,"nodeType":"ParameterList","parameters":[],"src":"1128:2:41"},"returnParameters":{"id":11498,"nodeType":"ParameterList","parameters":[],"src":"1149:0:41"},"scope":11558,"src":"1089:210:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[288],"body":{"id":11521,"nodeType":"Block","src":"1422:2:41","statements":[]},"documentation":{"id":11515,"nodeType":"StructuredDocumentation","src":"1305:31:41","text":"@inheritdoc IIssuanceTarget"},"functionSelector":"931c0ac1","id":11522,"implemented":true,"kind":"function","modifiers":[],"name":"setIssuanceAllocator","nameLocation":"1350:20:41","nodeType":"FunctionDefinition","overrides":{"id":11519,"nodeType":"OverrideSpecifier","overrides":[],"src":"1413:8:41"},"parameters":{"id":11518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11517,"mutability":"mutable","name":"_issuanceAllocator","nameLocation":"1379:18:41","nodeType":"VariableDeclaration","scope":11522,"src":"1371:26:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11516,"name":"address","nodeType":"ElementaryTypeName","src":"1371:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1370:28:41"},"returnParameters":{"id":11520,"nodeType":"ParameterList","parameters":[],"src":"1422:0:41"},"scope":11558,"src":"1341:83:41","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[3354],"body":{"id":11543,"nodeType":"Block","src":"1548:112:41","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11531,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11525,"src":"1565:11:41","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11533,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"1585:15:41","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}],"id":11532,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1580:4:41","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1580:21:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IIssuanceTarget_$289","typeString":"type(contract IIssuanceTarget)"}},"id":11535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1602:11:41","memberName":"interfaceId","nodeType":"MemberAccess","src":"1580:33:41","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1565:48:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":11539,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11525,"src":"1641:11:41","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":11537,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1617:5:41","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MockNotificationTracker_$11558_$","typeString":"type(contract super MockNotificationTracker)"}},"id":11538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1623:17:41","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3354,"src":"1617:23:41","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":11540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1617:36:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1565:88:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11530,"id":11542,"nodeType":"Return","src":"1558:95:41"}]},"documentation":{"id":11523,"nodeType":"StructuredDocumentation","src":"1430:22:41","text":"@inheritdoc ERC165"},"functionSelector":"01ffc9a7","id":11544,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1466:17:41","nodeType":"FunctionDefinition","overrides":{"id":11527,"nodeType":"OverrideSpecifier","overrides":[],"src":"1524:8:41"},"parameters":{"id":11526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11525,"mutability":"mutable","name":"interfaceId","nameLocation":"1491:11:41","nodeType":"VariableDeclaration","scope":11544,"src":"1484:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11524,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1484:6:41","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1483:20:41"},"returnParameters":{"id":11530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11529,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11544,"src":"1542:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11528,"name":"bool","nodeType":"ElementaryTypeName","src":"1542:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1541:6:41"},"scope":11558,"src":"1457:203:41","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":11556,"nodeType":"Block","src":"1780:73:41","statements":[{"expression":{"id":11550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11548,"name":"notificationCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11484,"src":"1790:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":11549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1810:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1790:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11551,"nodeType":"ExpressionStatement","src":"1790:21:41"},{"expression":{"id":11554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11552,"name":"lastNotificationBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11487,"src":"1821:21:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":11553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1845:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1821:25:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11555,"nodeType":"ExpressionStatement","src":"1821:25:41"}]},"documentation":{"id":11545,"nodeType":"StructuredDocumentation","src":"1666:66:41","text":"@notice Resets the notification counter and last block to zero"},"functionSelector":"cbe3fe62","id":11557,"implemented":true,"kind":"function","modifiers":[],"name":"resetNotificationCount","nameLocation":"1746:22:41","nodeType":"FunctionDefinition","parameters":{"id":11546,"nodeType":"ParameterList","parameters":[],"src":"1768:2:41"},"returnParameters":{"id":11547,"nodeType":"ParameterList","parameters":[],"src":"1780:0:41"},"scope":11558,"src":"1737:116:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11559,"src":"446:1409:41","usedErrors":[],"usedEvents":[278,11494]}],"src":"32:1824:41"},"id":41},"project/contracts/test/allocate/MockReentrantTarget.sol":{"ast":{"absolutePath":"project/contracts/test/allocate/MockReentrantTarget.sol","exportedSymbols":{"ERC165":[3355],"IIssuanceAllocationAdministration":[130],"IIssuanceAllocationDistribution":[168],"IIssuanceTarget":[289],"MockReentrantTarget":[11837]},"id":11838,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11560,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"32:24:42"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceTarget.sol","id":11562,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11838,"sourceUnit":290,"src":"58:108:42","symbolAliases":[{"foreign":{"id":11561,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"67:15:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceAllocationDistribution.sol","id":11564,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11838,"sourceUnit":169,"src":"167:140:42","symbolAliases":[{"foreign":{"id":11563,"name":"IIssuanceAllocationDistribution","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"176:31:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceAllocationAdministration.sol","id":11566,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11838,"sourceUnit":131,"src":"308:144:42","symbolAliases":[{"foreign":{"id":11565,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"317:33:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":11568,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11838,"sourceUnit":3356,"src":"453:80:42","symbolAliases":[{"foreign":{"id":11567,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3355,"src":"462:6:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11570,"name":"IIssuanceTarget","nameLocations":["778:15:42"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"778:15:42"},"id":11571,"nodeType":"InheritanceSpecifier","src":"778:15:42"},{"baseName":{"id":11572,"name":"ERC165","nameLocations":["795:6:42"],"nodeType":"IdentifierPath","referencedDeclaration":3355,"src":"795:6:42"},"id":11573,"nodeType":"InheritanceSpecifier","src":"795:6:42"}],"canonicalName":"MockReentrantTarget","contractDependencies":[],"contractKind":"contract","documentation":{"id":11569,"nodeType":"StructuredDocumentation","src":"535:210:42","text":" @title MockReentrantTarget\n @author Edge & Node\n @notice A malicious mock contract that attempts reentrancy attacks for testing\n @dev Used for testing reentrancy protection in IssuanceAllocator"},"fullyImplemented":true,"id":11837,"linearizedBaseContracts":[11837,3355,3367,289],"name":"MockReentrantTarget","nameLocation":"755:19:42","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":11574,"nodeType":"StructuredDocumentation","src":"808:67:42","text":"@notice The issuance allocator to target for reentrancy attacks"},"functionSelector":"c3e15de1","id":11576,"mutability":"mutable","name":"issuanceAllocator","nameLocation":"895:17:42","nodeType":"VariableDeclaration","scope":11837,"src":"880:32:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11575,"name":"address","nodeType":"ElementaryTypeName","src":"880:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"documentation":{"id":11577,"nodeType":"StructuredDocumentation","src":"918:55:42","text":"@notice The configured reentrancy action to perform"},"functionSelector":"feeeda79","id":11580,"mutability":"mutable","name":"actionToPerform","nameLocation":"1001:15:42","nodeType":"VariableDeclaration","scope":11837,"src":"978:38:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"typeName":{"id":11579,"nodeType":"UserDefinedTypeName","pathNode":{"id":11578,"name":"ReentrantAction","nameLocations":["978:15:42"],"nodeType":"IdentifierPath","referencedDeclaration":11596,"src":"978:15:42"},"referencedDeclaration":11596,"src":"978:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"visibility":"public"},{"constant":false,"documentation":{"id":11581,"nodeType":"StructuredDocumentation","src":"1022:50:42","text":"@notice Whether reentrancy should be attempted"},"functionSelector":"e4679dd2","id":11583,"mutability":"mutable","name":"shouldAttemptReentrancy","nameLocation":"1089:23:42","nodeType":"VariableDeclaration","scope":11837,"src":"1077:35:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11582,"name":"bool","nodeType":"ElementaryTypeName","src":"1077:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"canonicalName":"MockReentrantTarget.ReentrantAction","id":11596,"members":[{"id":11584,"name":"None","nameLocation":"1150:4:42","nodeType":"EnumValue","src":"1150:4:42"},{"id":11585,"name":"DistributeIssuance","nameLocation":"1164:18:42","nodeType":"EnumValue","src":"1164:18:42"},{"id":11586,"name":"SetTargetAllocation1Param","nameLocation":"1192:25:42","nodeType":"EnumValue","src":"1192:25:42"},{"id":11587,"name":"SetTargetAllocation2Param","nameLocation":"1227:25:42","nodeType":"EnumValue","src":"1227:25:42"},{"id":11588,"name":"SetTargetAllocation3Param","nameLocation":"1262:25:42","nodeType":"EnumValue","src":"1262:25:42"},{"id":11589,"name":"SetIssuancePerBlock","nameLocation":"1297:19:42","nodeType":"EnumValue","src":"1297:19:42"},{"id":11590,"name":"SetIssuancePerBlock2Param","nameLocation":"1326:25:42","nodeType":"EnumValue","src":"1326:25:42"},{"id":11591,"name":"NotifyTarget","nameLocation":"1361:12:42","nodeType":"EnumValue","src":"1361:12:42"},{"id":11592,"name":"SetDefaultTarget1Param","nameLocation":"1383:22:42","nodeType":"EnumValue","src":"1383:22:42"},{"id":11593,"name":"SetDefaultTarget2Param","nameLocation":"1415:22:42","nodeType":"EnumValue","src":"1415:22:42"},{"id":11594,"name":"DistributePendingIssuance0Param","nameLocation":"1447:31:42","nodeType":"EnumValue","src":"1447:31:42"},{"id":11595,"name":"DistributePendingIssuance1Param","nameLocation":"1488:31:42","nodeType":"EnumValue","src":"1488:31:42"}],"name":"ReentrantAction","nameLocation":"1124:15:42","nodeType":"EnumDefinition","src":"1119:406:42"},{"body":{"id":11614,"nodeType":"Block","src":"1720:109:42","statements":[{"expression":{"id":11605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11603,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"1730:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11604,"name":"_action","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11600,"src":"1748:7:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"1730:25:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"id":11606,"nodeType":"ExpressionStatement","src":"1730:25:42"},{"expression":{"id":11612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11607,"name":"shouldAttemptReentrancy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11583,"src":"1765:23:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11608,"name":"_action","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11600,"src":"1791:7:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":11609,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"1802:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1818:4:42","memberName":"None","nodeType":"MemberAccess","referencedDeclaration":11584,"src":"1802:20:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"1791:31:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1765:57:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11613,"nodeType":"ExpressionStatement","src":"1765:57:42"}]},"documentation":{"id":11597,"nodeType":"StructuredDocumentation","src":"1531:122:42","text":"@notice Sets the action to perform during reentrancy attempt\n @param _action The reentrancy action to configure"},"functionSelector":"368b381f","id":11615,"implemented":true,"kind":"function","modifiers":[],"name":"setReentrantAction","nameLocation":"1667:18:42","nodeType":"FunctionDefinition","parameters":{"id":11601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11600,"mutability":"mutable","name":"_action","nameLocation":"1702:7:42","nodeType":"VariableDeclaration","scope":11615,"src":"1686:23:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"typeName":{"id":11599,"nodeType":"UserDefinedTypeName","pathNode":{"id":11598,"name":"ReentrantAction","nameLocations":["1686:15:42"],"nodeType":"IdentifierPath","referencedDeclaration":11596,"src":"1686:15:42"},"referencedDeclaration":11596,"src":"1686:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"visibility":"internal"}],"src":"1685:25:42"},"returnParameters":{"id":11602,"nodeType":"ParameterList","parameters":[],"src":"1720:0:42"},"scope":11837,"src":"1658:171:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[282],"body":{"id":11801,"nodeType":"Block","src":"1931:2372:42","statements":[{"condition":{"id":11621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1945:24:42","subExpression":{"id":11620,"name":"shouldAttemptReentrancy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11583,"src":"1946:23:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11623,"nodeType":"IfStatement","src":"1941:37:42","trueBody":{"functionReturnParameters":11619,"id":11622,"nodeType":"Return","src":"1971:7:42"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11624,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"2049:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11625,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"2068:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2084:18:42","memberName":"DistributeIssuance","nodeType":"MemberAccess","referencedDeclaration":11585,"src":"2068:34:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"2049:53:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11635,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"2210:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11636,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"2229:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2245:25:42","memberName":"SetTargetAllocation1Param","nodeType":"MemberAccess","referencedDeclaration":11586,"src":"2229:41:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"2210:60:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11653,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"2463:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11654,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"2482:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2498:25:42","memberName":"SetTargetAllocation2Param","nodeType":"MemberAccess","referencedDeclaration":11587,"src":"2482:41:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"2463:60:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11672,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"2735:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11673,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"2754:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2770:25:42","memberName":"SetTargetAllocation3Param","nodeType":"MemberAccess","referencedDeclaration":11588,"src":"2754:41:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"2735:60:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11693,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"3037:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11694,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"3056:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3072:19:42","memberName":"SetIssuancePerBlock","nodeType":"MemberAccess","referencedDeclaration":11589,"src":"3056:35:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"3037:54:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11705,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"3206:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11706,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"3225:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3241:25:42","memberName":"SetIssuancePerBlock2Param","nodeType":"MemberAccess","referencedDeclaration":11590,"src":"3225:41:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"3206:60:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11719,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"3395:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11720,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"3414:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3430:12:42","memberName":"NotifyTarget","nodeType":"MemberAccess","referencedDeclaration":11591,"src":"3414:28:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"3395:47:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11734,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"3559:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11735,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"3578:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3594:22:42","memberName":"SetDefaultTarget1Param","nodeType":"MemberAccess","referencedDeclaration":11592,"src":"3578:38:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"3559:57:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11749,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"3737:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11750,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"3756:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3772:22:42","memberName":"SetDefaultTarget2Param","nodeType":"MemberAccess","referencedDeclaration":11593,"src":"3756:38:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"3737:57:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11766,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"3929:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11767,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"3948:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3964:31:42","memberName":"DistributePendingIssuance0Param","nodeType":"MemberAccess","referencedDeclaration":11594,"src":"3948:47:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"3929:66:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"},"id":11780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11777,"name":"actionToPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11580,"src":"4112:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11778,"name":"ReentrantAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11596,"src":"4131:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ReentrantAction_$11596_$","typeString":"type(enum MockReentrantTarget.ReentrantAction)"}},"id":11779,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4147:31:42","memberName":"DistributePendingIssuance1Param","nodeType":"MemberAccess","referencedDeclaration":11595,"src":"4131:47:42","typeDescriptions":{"typeIdentifier":"t_enum$_ReentrantAction_$11596","typeString":"enum MockReentrantTarget.ReentrantAction"}},"src":"4112:66:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11790,"nodeType":"IfStatement","src":"4108:189:42","trueBody":{"id":11789,"nodeType":"Block","src":"4180:117:42","statements":[{"expression":{"arguments":[{"expression":{"id":11785,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4273:5:42","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4279:6:42","memberName":"number","nodeType":"MemberAccess","src":"4273:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11782,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"4228:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11781,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"4194:33:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":11783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4194:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationAdministration_$130","typeString":"contract IIssuanceAllocationAdministration"}},"id":11784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4247:25:42","memberName":"distributePendingIssuance","nodeType":"MemberAccess","referencedDeclaration":113,"src":"4194:78:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":11787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4194:92:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11788,"nodeType":"ExpressionStatement","src":"4194:92:42"}]}},"id":11791,"nodeType":"IfStatement","src":"3925:372:42","trueBody":{"id":11776,"nodeType":"Block","src":"3997:105:42","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11771,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"4045:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11770,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"4011:33:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":11772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4011:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationAdministration_$130","typeString":"contract IIssuanceAllocationAdministration"}},"id":11773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4064:25:42","memberName":"distributePendingIssuance","nodeType":"MemberAccess","referencedDeclaration":105,"src":"4011:78:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":11774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4011:80:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11775,"nodeType":"ExpressionStatement","src":"4011:80:42"}]}},"id":11792,"nodeType":"IfStatement","src":"3733:564:42","trueBody":{"id":11765,"nodeType":"Block","src":"3796:123:42","statements":[{"expression":{"arguments":[{"arguments":[{"id":11759,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3888:4:42","typeDescriptions":{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}],"id":11758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3880:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11757,"name":"address","nodeType":"ElementaryTypeName","src":"3880:7:42","typeDescriptions":{}}},"id":11760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3880:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11761,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3895:5:42","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3901:6:42","memberName":"number","nodeType":"MemberAccess","src":"3895:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11754,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"3844:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11753,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"3810:33:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":11755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3810:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationAdministration_$130","typeString":"contract IIssuanceAllocationAdministration"}},"id":11756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3863:16:42","memberName":"setDefaultTarget","nodeType":"MemberAccess","referencedDeclaration":99,"src":"3810:69:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3810:98:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11764,"nodeType":"ExpressionStatement","src":"3810:98:42"}]}},"id":11793,"nodeType":"IfStatement","src":"3555:742:42","trueBody":{"id":11748,"nodeType":"Block","src":"3618:109:42","statements":[{"expression":{"arguments":[{"arguments":[{"id":11744,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3710:4:42","typeDescriptions":{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}],"id":11743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3702:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11742,"name":"address","nodeType":"ElementaryTypeName","src":"3702:7:42","typeDescriptions":{}}},"id":11745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3702:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":11739,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"3666:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11738,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"3632:33:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":11740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3632:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationAdministration_$130","typeString":"contract IIssuanceAllocationAdministration"}},"id":11741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3685:16:42","memberName":"setDefaultTarget","nodeType":"MemberAccess","referencedDeclaration":89,"src":"3632:69:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) external returns (bool)"}},"id":11746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3632:84:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11747,"nodeType":"ExpressionStatement","src":"3632:84:42"}]}},"id":11794,"nodeType":"IfStatement","src":"3391:906:42","trueBody":{"id":11733,"nodeType":"Block","src":"3444:105:42","statements":[{"expression":{"arguments":[{"arguments":[{"id":11729,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3532:4:42","typeDescriptions":{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}],"id":11728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3524:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11727,"name":"address","nodeType":"ElementaryTypeName","src":"3524:7:42","typeDescriptions":{}}},"id":11730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3524:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":11724,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"3492:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11723,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"3458:33:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":11725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3458:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationAdministration_$130","typeString":"contract IIssuanceAllocationAdministration"}},"id":11726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3511:12:42","memberName":"notifyTarget","nodeType":"MemberAccess","referencedDeclaration":71,"src":"3458:65:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) external returns (bool)"}},"id":11731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3458:80:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11732,"nodeType":"ExpressionStatement","src":"3458:80:42"}]}},"id":11795,"nodeType":"IfStatement","src":"3202:1095:42","trueBody":{"id":11718,"nodeType":"Block","src":"3268:117:42","statements":[{"expression":{"arguments":[{"hexValue":"31303030","id":11713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3355:4:42","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},{"expression":{"id":11714,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3361:5:42","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3367:6:42","memberName":"number","nodeType":"MemberAccess","src":"3361:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11710,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"3316:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11709,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"3282:33:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":11711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3282:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationAdministration_$130","typeString":"contract IIssuanceAllocationAdministration"}},"id":11712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3335:19:42","memberName":"setIssuancePerBlock","nodeType":"MemberAccess","referencedDeclaration":24,"src":"3282:72:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) external returns (bool)"}},"id":11716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3282:92:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11717,"nodeType":"ExpressionStatement","src":"3282:92:42"}]}},"id":11796,"nodeType":"IfStatement","src":"3033:1264:42","trueBody":{"id":11704,"nodeType":"Block","src":"3093:103:42","statements":[{"expression":{"arguments":[{"hexValue":"31303030","id":11701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3180:4:42","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"}],"expression":{"arguments":[{"id":11698,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"3141:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11697,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"3107:33:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":11699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3107:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationAdministration_$130","typeString":"contract IIssuanceAllocationAdministration"}},"id":11700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3160:19:42","memberName":"setIssuancePerBlock","nodeType":"MemberAccess","referencedDeclaration":14,"src":"3107:72:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) external returns (bool)"}},"id":11702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3107:78:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11703,"nodeType":"ExpressionStatement","src":"3107:78:42"}]}},"id":11797,"nodeType":"IfStatement","src":"2731:1566:42","trueBody":{"id":11692,"nodeType":"Block","src":"2797:230:42","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":11683,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2925:4:42","typeDescriptions":{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}],"id":11682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2917:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11681,"name":"address","nodeType":"ElementaryTypeName","src":"2917:7:42","typeDescriptions":{}}},"id":11684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2917:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11680,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"2901:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}},"id":11685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:30:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}},{"hexValue":"31303030","id":11686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2949:4:42","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},{"hexValue":"30","id":11687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2971:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":11688,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2990:5:42","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2996:6:42","memberName":"number","nodeType":"MemberAccess","src":"2990:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"},{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11677,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"2845:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11676,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2811:33:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":11678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2811:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationAdministration_$130","typeString":"contract IIssuanceAllocationAdministration"}},"id":11679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:19:42","memberName":"setTargetAllocation","nodeType":"MemberAccess","referencedDeclaration":63,"src":"2811:72:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IIssuanceTarget_$289_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (contract IIssuanceTarget,uint256,uint256,uint256) external returns (bool)"}},"id":11690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2811:205:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11691,"nodeType":"ExpressionStatement","src":"2811:205:42"}]}},"id":11798,"nodeType":"IfStatement","src":"2459:1838:42","trueBody":{"id":11671,"nodeType":"Block","src":"2525:200:42","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":11664,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2653:4:42","typeDescriptions":{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}],"id":11663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2645:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11662,"name":"address","nodeType":"ElementaryTypeName","src":"2645:7:42","typeDescriptions":{}}},"id":11665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2645:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11661,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"2629:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}},"id":11666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2629:30:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}},{"hexValue":"31303030","id":11667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2677:4:42","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},{"hexValue":"30","id":11668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2699:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"},{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":11658,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"2573:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11657,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2539:33:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":11659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2539:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationAdministration_$130","typeString":"contract IIssuanceAllocationAdministration"}},"id":11660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2592:19:42","memberName":"setTargetAllocation","nodeType":"MemberAccess","referencedDeclaration":48,"src":"2539:72:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IIssuanceTarget_$289_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (contract IIssuanceTarget,uint256,uint256) external returns (bool)"}},"id":11669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2539:175:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11670,"nodeType":"ExpressionStatement","src":"2539:175:42"}]}},"id":11799,"nodeType":"IfStatement","src":"2206:2091:42","trueBody":{"id":11652,"nodeType":"Block","src":"2272:181:42","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":11646,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2400:4:42","typeDescriptions":{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockReentrantTarget_$11837","typeString":"contract MockReentrantTarget"}],"id":11645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2392:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11644,"name":"address","nodeType":"ElementaryTypeName","src":"2392:7:42","typeDescriptions":{}}},"id":11647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2392:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11643,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"2376:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}},"id":11648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:30:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"}},{"hexValue":"31303030","id":11649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2424:4:42","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IIssuanceTarget_$289","typeString":"contract IIssuanceTarget"},{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"}],"expression":{"arguments":[{"id":11640,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"2320:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11639,"name":"IIssuanceAllocationAdministration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"2286:33:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationAdministration_$130_$","typeString":"type(contract IIssuanceAllocationAdministration)"}},"id":11641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2286:52:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationAdministration_$130","typeString":"contract IIssuanceAllocationAdministration"}},"id":11642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2339:19:42","memberName":"setTargetAllocation","nodeType":"MemberAccess","referencedDeclaration":35,"src":"2286:72:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IIssuanceTarget_$289_$_t_uint256_$returns$_t_bool_$","typeString":"function (contract IIssuanceTarget,uint256) external returns (bool)"}},"id":11650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2286:156:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11651,"nodeType":"ExpressionStatement","src":"2286:156:42"}]}},"id":11800,"nodeType":"IfStatement","src":"2045:2252:42","trueBody":{"id":11634,"nodeType":"Block","src":"2104:96:42","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11629,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"2150:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11628,"name":"IIssuanceAllocationDistribution","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"2118:31:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceAllocationDistribution_$168_$","typeString":"type(contract IIssuanceAllocationDistribution)"}},"id":11630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2118:50:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IIssuanceAllocationDistribution_$168","typeString":"contract IIssuanceAllocationDistribution"}},"id":11631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2169:18:42","memberName":"distributeIssuance","nodeType":"MemberAccess","referencedDeclaration":158,"src":"2118:69:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":11632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2118:71:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11633,"nodeType":"ExpressionStatement","src":"2118:71:42"}]}}]},"documentation":{"id":11616,"nodeType":"StructuredDocumentation","src":"1835:31:42","text":"@inheritdoc IIssuanceTarget"},"functionSelector":"3df8d682","id":11802,"implemented":true,"kind":"function","modifiers":[],"name":"beforeIssuanceAllocationChange","nameLocation":"1880:30:42","nodeType":"FunctionDefinition","overrides":{"id":11618,"nodeType":"OverrideSpecifier","overrides":[],"src":"1922:8:42"},"parameters":{"id":11617,"nodeType":"ParameterList","parameters":[],"src":"1910:2:42"},"returnParameters":{"id":11619,"nodeType":"ParameterList","parameters":[],"src":"1931:0:42"},"scope":11837,"src":"1871:2432:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[288],"body":{"id":11813,"nodeType":"Block","src":"4421:55:42","statements":[{"expression":{"id":11811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11809,"name":"issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11576,"src":"4431:17:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11810,"name":"_issuanceAllocator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11805,"src":"4451:18:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4431:38:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11812,"nodeType":"ExpressionStatement","src":"4431:38:42"}]},"documentation":{"id":11803,"nodeType":"StructuredDocumentation","src":"4309:31:42","text":"@inheritdoc IIssuanceTarget"},"functionSelector":"931c0ac1","id":11814,"implemented":true,"kind":"function","modifiers":[],"name":"setIssuanceAllocator","nameLocation":"4354:20:42","nodeType":"FunctionDefinition","overrides":{"id":11807,"nodeType":"OverrideSpecifier","overrides":[],"src":"4412:8:42"},"parameters":{"id":11806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11805,"mutability":"mutable","name":"_issuanceAllocator","nameLocation":"4383:18:42","nodeType":"VariableDeclaration","scope":11814,"src":"4375:26:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11804,"name":"address","nodeType":"ElementaryTypeName","src":"4375:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4374:28:42"},"returnParameters":{"id":11808,"nodeType":"ParameterList","parameters":[],"src":"4421:0:42"},"scope":11837,"src":"4345:131:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3354],"body":{"id":11835,"nodeType":"Block","src":"4600:112:42","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11823,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11817,"src":"4617:11:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11825,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"4637:15:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}],"id":11824,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4632:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4632:21:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IIssuanceTarget_$289","typeString":"type(contract IIssuanceTarget)"}},"id":11827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4654:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"4632:33:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4617:48:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":11831,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11817,"src":"4693:11:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":11829,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4669:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MockReentrantTarget_$11837_$","typeString":"type(contract super MockReentrantTarget)"}},"id":11830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4675:17:42","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3354,"src":"4669:23:42","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":11832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4669:36:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4617:88:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11822,"id":11834,"nodeType":"Return","src":"4610:95:42"}]},"documentation":{"id":11815,"nodeType":"StructuredDocumentation","src":"4482:22:42","text":"@inheritdoc ERC165"},"functionSelector":"01ffc9a7","id":11836,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"4518:17:42","nodeType":"FunctionDefinition","overrides":{"id":11819,"nodeType":"OverrideSpecifier","overrides":[],"src":"4576:8:42"},"parameters":{"id":11818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11817,"mutability":"mutable","name":"interfaceId","nameLocation":"4543:11:42","nodeType":"VariableDeclaration","scope":11836,"src":"4536:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11816,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4536:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4535:20:42"},"returnParameters":{"id":11822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11836,"src":"4594:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11820,"name":"bool","nodeType":"ElementaryTypeName","src":"4594:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4593:6:42"},"scope":11837,"src":"4509:203:42","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":11838,"src":"746:3968:42","usedErrors":[],"usedEvents":[278]}],"src":"32:4683:42"},"id":42},"project/contracts/test/allocate/MockRevertingTarget.sol":{"ast":{"absolutePath":"project/contracts/test/allocate/MockRevertingTarget.sol","exportedSymbols":{"ERC165":[3355],"IIssuanceTarget":[289],"MockRevertingTarget":[11891]},"id":11892,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11839,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"32:24:43"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceTarget.sol","id":11841,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11892,"sourceUnit":290,"src":"58:108:43","symbolAliases":[{"foreign":{"id":11840,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"67:15:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":11843,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11892,"sourceUnit":3356,"src":"167:80:43","symbolAliases":[{"foreign":{"id":11842,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3355,"src":"176:6:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11845,"name":"IIssuanceTarget","nameLocations":["489:15:43"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"489:15:43"},"id":11846,"nodeType":"InheritanceSpecifier","src":"489:15:43"},{"baseName":{"id":11847,"name":"ERC165","nameLocations":["506:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":3355,"src":"506:6:43"},"id":11848,"nodeType":"InheritanceSpecifier","src":"506:6:43"}],"canonicalName":"MockRevertingTarget","contractDependencies":[],"contractKind":"contract","documentation":{"id":11844,"nodeType":"StructuredDocumentation","src":"249:207:43","text":" @title MockRevertingTarget\n @author Edge & Node\n @notice A mock contract that reverts when beforeIssuanceAllocationChange is called\n @dev Used for testing error handling in IssuanceAllocator"},"fullyImplemented":true,"id":11891,"linearizedBaseContracts":[11891,3355,3367,289],"name":"MockRevertingTarget","nameLocation":"466:19:43","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":11849,"nodeType":"StructuredDocumentation","src":"519:62:43","text":"@notice Error thrown when the target reverts intentionally"},"errorSelector":"6af64104","id":11851,"name":"TargetRevertsIntentionally","nameLocation":"592:26:43","nodeType":"ErrorDefinition","parameters":{"id":11850,"nodeType":"ParameterList","parameters":[],"src":"618:2:43"},"src":"586:35:43"},{"baseFunctions":[282],"body":{"id":11859,"nodeType":"Block","src":"742:52:43","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11856,"name":"TargetRevertsIntentionally","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11851,"src":"759:26:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":11857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"759:28:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11858,"nodeType":"RevertStatement","src":"752:35:43"}]},"documentation":{"id":11852,"nodeType":"StructuredDocumentation","src":"626:46:43","text":" @inheritdoc IIssuanceTarget"},"functionSelector":"3df8d682","id":11860,"implemented":true,"kind":"function","modifiers":[],"name":"beforeIssuanceAllocationChange","nameLocation":"686:30:43","nodeType":"FunctionDefinition","overrides":{"id":11854,"nodeType":"OverrideSpecifier","overrides":[],"src":"733:8:43"},"parameters":{"id":11853,"nodeType":"ParameterList","parameters":[],"src":"716:2:43"},"returnParameters":{"id":11855,"nodeType":"ParameterList","parameters":[],"src":"742:0:43"},"scope":11891,"src":"677:117:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[288],"body":{"id":11867,"nodeType":"Block","src":"932:24:43","statements":[]},"documentation":{"id":11861,"nodeType":"StructuredDocumentation","src":"800:46:43","text":" @inheritdoc IIssuanceTarget"},"functionSelector":"931c0ac1","id":11868,"implemented":true,"kind":"function","modifiers":[],"name":"setIssuanceAllocator","nameLocation":"860:20:43","nodeType":"FunctionDefinition","overrides":{"id":11865,"nodeType":"OverrideSpecifier","overrides":[],"src":"923:8:43"},"parameters":{"id":11864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11863,"mutability":"mutable","name":"_issuanceAllocator","nameLocation":"889:18:43","nodeType":"VariableDeclaration","scope":11868,"src":"881:26:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11862,"name":"address","nodeType":"ElementaryTypeName","src":"881:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"880:28:43"},"returnParameters":{"id":11866,"nodeType":"ParameterList","parameters":[],"src":"932:0:43"},"scope":11891,"src":"851:105:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[3354],"body":{"id":11889,"nodeType":"Block","src":"1080:112:43","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11877,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11871,"src":"1097:11:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11879,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"1117:15:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}],"id":11878,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1112:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1112:21:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IIssuanceTarget_$289","typeString":"type(contract IIssuanceTarget)"}},"id":11881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1134:11:43","memberName":"interfaceId","nodeType":"MemberAccess","src":"1112:33:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1097:48:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":11885,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11871,"src":"1173:11:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":11883,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1149:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MockRevertingTarget_$11891_$","typeString":"type(contract super MockRevertingTarget)"}},"id":11884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1155:17:43","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3354,"src":"1149:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":11886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1149:36:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1097:88:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11876,"id":11888,"nodeType":"Return","src":"1090:95:43"}]},"documentation":{"id":11869,"nodeType":"StructuredDocumentation","src":"962:22:43","text":"@inheritdoc ERC165"},"functionSelector":"01ffc9a7","id":11890,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"998:17:43","nodeType":"FunctionDefinition","overrides":{"id":11873,"nodeType":"OverrideSpecifier","overrides":[],"src":"1056:8:43"},"parameters":{"id":11872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11871,"mutability":"mutable","name":"interfaceId","nameLocation":"1023:11:43","nodeType":"VariableDeclaration","scope":11890,"src":"1016:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11870,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1016:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1015:20:43"},"returnParameters":{"id":11876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11890,"src":"1074:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11874,"name":"bool","nodeType":"ElementaryTypeName","src":"1074:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1073:6:43"},"scope":11891,"src":"989:203:43","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":11892,"src":"457:737:43","usedErrors":[11851],"usedEvents":[278]}],"src":"32:1163:43"},"id":43},"project/contracts/test/allocate/MockSimpleTarget.sol":{"ast":{"absolutePath":"project/contracts/test/allocate/MockSimpleTarget.sol","exportedSymbols":{"ERC165":[3355],"IIssuanceTarget":[289],"MockSimpleTarget":[11939]},"id":11940,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11893,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"32:24:44"},{"absolutePath":"npm/@graphprotocol/interfaces@local/contracts/issuance/allocate/IIssuanceTarget.sol","file":"@graphprotocol/interfaces/contracts/issuance/allocate/IIssuanceTarget.sol","id":11895,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11940,"sourceUnit":290,"src":"58:108:44","symbolAliases":[{"foreign":{"id":11894,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"67:15:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.4.0/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":11897,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11940,"sourceUnit":3356,"src":"167:80:44","symbolAliases":[{"foreign":{"id":11896,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3355,"src":"176:6:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11899,"name":"IIssuanceTarget","nameLocations":["480:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":289,"src":"480:15:44"},"id":11900,"nodeType":"InheritanceSpecifier","src":"480:15:44"},{"baseName":{"id":11901,"name":"ERC165","nameLocations":["497:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":3355,"src":"497:6:44"},"id":11902,"nodeType":"InheritanceSpecifier","src":"497:6:44"}],"canonicalName":"MockSimpleTarget","contractDependencies":[],"contractKind":"contract","documentation":{"id":11898,"nodeType":"StructuredDocumentation","src":"249:201:44","text":" @title MockSimpleTarget\n @author Edge & Node\n @notice A simple mock contract that implements IIssuanceTarget for testing\n @dev Used for testing basic functionality in IssuanceAllocator"},"fullyImplemented":true,"id":11939,"linearizedBaseContracts":[11939,3355,3367,289],"name":"MockSimpleTarget","nameLocation":"460:16:44","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[282],"body":{"id":11907,"nodeType":"Block","src":"611:2:44","statements":[]},"documentation":{"id":11903,"nodeType":"StructuredDocumentation","src":"510:31:44","text":"@inheritdoc IIssuanceTarget"},"functionSelector":"3df8d682","id":11908,"implemented":true,"kind":"function","modifiers":[],"name":"beforeIssuanceAllocationChange","nameLocation":"555:30:44","nodeType":"FunctionDefinition","overrides":{"id":11905,"nodeType":"OverrideSpecifier","overrides":[],"src":"602:8:44"},"parameters":{"id":11904,"nodeType":"ParameterList","parameters":[],"src":"585:2:44"},"returnParameters":{"id":11906,"nodeType":"ParameterList","parameters":[],"src":"611:0:44"},"scope":11939,"src":"546:67:44","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[288],"body":{"id":11915,"nodeType":"Block","src":"736:2:44","statements":[]},"documentation":{"id":11909,"nodeType":"StructuredDocumentation","src":"619:31:44","text":"@inheritdoc IIssuanceTarget"},"functionSelector":"931c0ac1","id":11916,"implemented":true,"kind":"function","modifiers":[],"name":"setIssuanceAllocator","nameLocation":"664:20:44","nodeType":"FunctionDefinition","overrides":{"id":11913,"nodeType":"OverrideSpecifier","overrides":[],"src":"727:8:44"},"parameters":{"id":11912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11911,"mutability":"mutable","name":"_issuanceAllocator","nameLocation":"693:18:44","nodeType":"VariableDeclaration","scope":11916,"src":"685:26:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11910,"name":"address","nodeType":"ElementaryTypeName","src":"685:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"684:28:44"},"returnParameters":{"id":11914,"nodeType":"ParameterList","parameters":[],"src":"736:0:44"},"scope":11939,"src":"655:83:44","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[3354],"body":{"id":11937,"nodeType":"Block","src":"862:112:44","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":11930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11925,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11919,"src":"879:11:44","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":11927,"name":"IIssuanceTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"899:15:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IIssuanceTarget_$289_$","typeString":"type(contract IIssuanceTarget)"}],"id":11926,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"894:4:44","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"894:21:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IIssuanceTarget_$289","typeString":"type(contract IIssuanceTarget)"}},"id":11929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"916:11:44","memberName":"interfaceId","nodeType":"MemberAccess","src":"894:33:44","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"879:48:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":11933,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11919,"src":"955:11:44","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":11931,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"931:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MockSimpleTarget_$11939_$","typeString":"type(contract super MockSimpleTarget)"}},"id":11932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"937:17:44","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3354,"src":"931:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":11934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"931:36:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"879:88:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11924,"id":11936,"nodeType":"Return","src":"872:95:44"}]},"documentation":{"id":11917,"nodeType":"StructuredDocumentation","src":"744:22:44","text":"@inheritdoc ERC165"},"functionSelector":"01ffc9a7","id":11938,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"780:17:44","nodeType":"FunctionDefinition","overrides":{"id":11921,"nodeType":"OverrideSpecifier","overrides":[],"src":"838:8:44"},"parameters":{"id":11920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11919,"mutability":"mutable","name":"interfaceId","nameLocation":"805:11:44","nodeType":"VariableDeclaration","scope":11938,"src":"798:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11918,"name":"bytes4","nodeType":"ElementaryTypeName","src":"798:6:44","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"797:20:44"},"returnParameters":{"id":11924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11923,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11938,"src":"856:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11922,"name":"bool","nodeType":"ElementaryTypeName","src":"856:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"855:6:44"},"scope":11939,"src":"771:203:44","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":11940,"src":"451:525:44","usedErrors":[],"usedEvents":[278]}],"src":"32:945:44"},"id":44}}}}