úÎ!*'3      !"#$%&'()*+,-./012Safe"#$%+-.;<=>?AFNV° exp-cacheThe key to lookup exp-cache-The strategy (containing any state necessary) exp-cache-The strategy + state folloiwng adding the keySafe"#$%+-.;<=>?AFNVe exp-cachemA First in First Out eviction strategy. Items are evicted based on order added, regardless of usage patterns.None"#$%+-.;<=>?AFNV i  exp-cacheÀEvict the least frequently used element from the cache. This means as an element is accessed, its "score" increases and the element is more likely to survive eviction once the cache fills up.   None"#$%+-.;<=>?AFNVÒ exp-cachevAn optimized version of an LRU cache. The least recently used element in the cache is evicted once the cache fills up. exp-cache9This is a naive and terribly slow version of an LRU cache3 exp-cache¥Transform the priorities of a PSQ by subtracting the minimum priority from all priorities in the queue. This becomes necessary when reaching the upper bound on an 4(. The ordering of priorities is retainedNone"#$%+-.;<=>?AFNVN! exp-cacheVA Most Recently Used cache. This evicts the most recently accessed item from the cache !"!" Safe"#$%+-.;<=>?AFNVi( exp-cache2Random Replacement cache. The seed is fixed to an 5» since its both easily accessible & good enough for this purpose. Random replacement means exactly what it sounds like: when the cache fills up a random element is selected and evicted.) exp-cacheGGenerate a new Random Replacement cache using the provided seed & size.()*()*None"#$%+-.;<=>?AFNV&‰0 exp-cacheqA Cache is a bounded collection of data that supports fast random access. When the cach is full, the associated E is used to discard an item from the cache. Library users should use 2) to read and replace items in the cache.1 exp-cache<Create a new cache of the specified size using the provided 2 exp-cache3Performs a read-through operation on a given cache.1 exp-cacheThe maximum cache size exp-cacheThe evictionStrategy2 exp-cacheThe current cache state exp-cacheThe key to look up in the cache exp-cache9The accessor function to evaluate if the key is not found !"()012012!"() 6      !"#$%%&'()*+,-./0123456789:;<=>?(exp-cache-0.1.0.2-Ebfqckjy4zr8O7stpZCCDf Data.CacheData.Cache.Eviction.FIFOData.Cache.Eviction.LFUData.Cache.Eviction.LRUData.Cache.Eviction.MRUData.Cache.Eviction.RRData.Cache.EvictionEvictionStrategy recordLookupevictFIFOnewFIFO$fEvictionStrategyFIFO$fEqFIFO $fShowFIFOLFUContentsOnlyEqLFUnewLFU$fEvictionStrategyLFU$fEqLFUContentsOnlyEq$fEqLFU $fShowLFU$fShowLFUContentsOnlyEqLRUContentsOnlyEqLRUSeqLRU newSeqLRUnewLRU$fEvictionStrategySeqLRU$fEvictionStrategyLRU$fEqLRUContentsOnlyEq $fEqSeqLRU $fShowSeqLRU$fEqLRU $fShowLRU$fShowLRUContentsOnlyEqMRUContentsOnlyEqMRUnewMRU$fEvictionStrategyMRU$fEqMRUContentsOnlyEq$fEqMRU $fShowMRU$fShowMRUContentsOnlyEqRRnewRR rrSizeDebug$fEvictionStrategyRR$fEqRR$fEqStupidBiMap$fShowStupidBiMap$fShowRRCachenewCache readThroughshrinkPSQPrioritiesbaseGHC.WordWord64!random-1.1-9LLJAJa4iQFLJiLXBOBXBV System.RandomStdGen