úÎ=[;$     SafeSafe!"State of reaper.No reaper threadThe current jobs%A data structure to hold reaper APIs.Adding an item to the workloadReading workload.JStopping the reaper thread if exists. The current workload is returned.0Killing the reaper thread immediately if exists.?Settings for creating a reaper. This type has two parameters: workload$ gives the entire workload, whereas itemG gives an individual piece of the queue. A common approach is to have workload be a list of items. This is encouraged by   and .ÿThe action to perform on a workload. The result of this is a "workload modifying" function. In the common case of using lists, the result should be a difference list that prepends the remaining workload to the temporary workload. For help with setting up such an action, see . Default: do nothing with the workload, and then prepend it to the temporary workload. This is incredibly useless; you should definitely override this default.1Number of microseconds to delay between calls of .Default: 30 seconds. Add an item onto a workload.Default: list consing. NCheck if a workload is empty, in which case the worker thread will shut down. Default: . An empty workload.Default: empty list. Default ReaperSettings4 value, biased towards having a list of work items. ¢Create a reaper addition function. This function can be used to add new items to the workload. Spawning of reaper threads will be handled for you automatically.A helper function for creating ‚ functions. You would provide this function with a function to process a single work item and return either a new work item, or Nothing if the work item is expired.  !"#        !"#SafeT/Settings to control how debouncing should work.!This should be constructed using ! and record update syntax, e.g.: let settings =  {  = flushLog } MMicroseconds lag required between subsequence calls to the debounced action.Default: 1 second (1000000)Action to be performed.FNote: all exceptions thrown by this action will be silently discarded.Default: does nothing.Default value for creating a .°Generate an action which will trigger the debounced action to be performed. The action will either be performed immediately, or after the current cooldown period has expired.$%$%Safe+Settings to control how values are updated.!This should be constructed using ! and record update syntax, e.g.: let settings =  {  =  } ;Microseconds between update calls. Same considerations as & apply.Default: 1 second (1000000)lNOTE: This value no longer has any effect, since worker threads are dedicated instead of spawned on demand.tPreviously, this determined how many times the data must be requested before we decide to spawn a dedicated thread. Default: 30Action to be performed to get the current value.Default: does nothing.Default value for creating an .Generate an action which will either read from an automatically updated value, or run the update action in the current thread.»Generate an action which will either read from an automatically updated value, or run the update action in the current thread if the first time or the provided modify action after that.'?Turn a runtime exception into an impure exception, so that all (b actions will complete successfully. This simply defers the exception until the value is forced. )*' )*'+      !"#$%&!'( )*+,!-./01234(auto-update-0.1.4-GAesfFmqoZzBz6e09kRyzbControl.ReaperControl.DebounceControl.AutoUpdateControl.AutoUpdate.UtilData.Time.ClockgetCurrentTimeReaper reaperAdd reaperRead reaperStop reaperKillReaperSettings reaperAction reaperDelay reaperCons reaperNull reaperEmptydefaultReaperSettingsmkReaper mkListActionDebounceSettings debounceFreqdebounceActiondefaultDebounceSettings mkDebounceUpdateSettings updateFrequpdateSpawnThreshold updateActiondefaultUpdateSettings mkAutoUpdatemkAutoUpdateWithModifybase Data.IORefatomicModifyIORef'StateNoReaperWorkload Data.Foldablenulladdspawnreaper ignoreExc GHC.Conc.IO threadDelay catchSomeghc-prim GHC.TypesIOmkAutoUpdateHelper