Subject: bug#56869: closed (Re: bug#56869: 29.0.50; segfault, "assertion 'GDK_IS_DEVICE (device)' failed")

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 03 Sep 2023 09:14:02 +0000

Your bug report

#56869: 29.0.50; segfault, "assertion 'GDK_IS_DEVICE (device)' failed"

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
56869: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=56869
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#56869: 29.0.50; segfault, "assertion 'GDK_IS_DEVICE (device)' failed"
From: Stefan Kangas <[email-masked]>
To: Po Lu <[email-masked]>
Cc: Joe Corneli <[email-masked]>, [email-masked]
Date: Sun, 3 Sep 2023 02:13:35 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Po Lu <[email-masked]> writes:

> tags 56869 wontfix
> thanks
>
> Joe Corneli <[email-masked]> writes:
>
>> OK, here’s the info:
>>
>> (gdb) p xev->sourceid
>> $1 = 12
>>
>> $ xinput list
>> ⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
>> ⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
>> ⎜   ↳ MSFT0001:01 06CB:CD64 Mouse             	id=11	[slave  pointer  (2)]
>> ⎜   ↳ MSFT0001:01 06CB:CD64 Touchpad          	id=12	[slave  pointer  (2)]
>> ⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
>>     ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
>>     ↳ Power Button                            	id=6	[slave  keyboard (3)]
>>     ↳ Video Bus                               	id=7	[slave  keyboard (3)]
>>     ↳ Power Button                            	id=8	[slave  keyboard (3)]
>>     ↳ Sleep Button                            	id=9	[slave  keyboard (3)]
>>     ↳ Intel HID events                        	id=13	[slave  keyboard (3)]
>>     ↳ AT Translated Set 2 keyboard            	id=14	[slave  keyboard (3)]
>>     ↳ Chicony USB2.0 Camera: Chicony          	id=10	[slave  keyboard (3)]
>>
>>
>> ... and another possible clue, which is that I’m running Touchpad
>> Indicator, https://github.com/atareao/Touchpad-Indicator
>>
>> and I have it set up to disable the trackpad _while typing_.  Perhaps
>> the way it enables and disables the trackpad is currently interacting
>> with Emacs in a glitchy way.
>
> Right, I think I know what this is now.  GTK fails to read information
> about the trackpad due to it being disabled between the
> XI_HierarchyChange event being sent and and it being handled.  GTK then
> segfaults trying to access a field in a device it doesn't know about.
>
> This only shows up in Emacs, because most other GTK programs do not make
> people rapidly alternate between trackpad and keyboard use.
>
> I suggest using a build of Emacs without GTK.  If you have to use GTK,
> turn off '--with-xinput2', but as a result several features will no
> longer work.
>
> Thanks.
>
> BTW, the quality of the GDK X11 backend has lately dropped to a very low
> level.  I'm going to push for the Emacs build to default to the Motif or
> no-toolkit build instead.

Thanks, so it seems like the solution is to use a build without GTK or
'--with-xinput2'.  I'm therefore closing this bug report.

Subject: 29.0.50; segfault, "assertion 'GDK_IS_DEVICE (device)' failed"
From: Joe Corneli <[email-masked]>
To: [email-masked]
Date: Mon, 01 Aug 2022 14:08:30 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

I’m not sure what has triggered the segfault, but it happens fairly
predictably with the latest version of Emacs.  I didn’t see anything
like this when I was using the previous stable version, however.

If I can provide further useful information please let me know.  Note
that xbacktrace doesn’t print anything.  I’m running Emacs under the
regolith WM (2.123-1focal), in case that’s relevant.

joe@Proteus:~/emacs/src$ gdb emacs
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
...
(gdb) source /home/joe/emacs/src/.gdbinit
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) [answered Y; input not from terminal]
DISPLAY = :0
TERM = xterm-256color
Breakpoint 1 at 0x55555573899d: file emacs.c, line 420.
Breakpoint 2 at 0x5555556f4c86: file xterm.c, line 23862.
...
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/joe/emacs/src/emacs 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff1406700 (LWP 2218237)]
[New Thread 0x7ffff09fb700 (LWP 2218325)]
[New Thread 0x7fffebf10700 (LWP 2218328)]
[Detaching after vfork from child process 2218469]

...

(emacs:2218133): Gdk-CRITICAL **: 13:45:08.589: gdk_device_get_n_axes: assertion 'GDK_IS_DEVICE (device)' failed

(emacs:2218133): Gdk-CRITICAL **: 13:45:08.589: gdk_event_set_source_device: assertion 'GDK_IS_DEVICE (device)' failed

Thread 1 "emacs" received signal SIGSEGV, Segmentation fault.
0x00007ffff757464d in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
(gdb) bt full
#0  0x00007ffff757464d in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#1  0x00007ffff757e989 in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#2  0x00007ffff757e4cc in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#3  0x00007ffff75460e4 in gdk_display_get_event () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#4  0x00007ffff757e0e6 in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#5  0x00007ffff6f5617d in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#6  0x00007ffff6f56400 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#7  0x00007ffff6f564a3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#8  0x00007ffff78611d9 in gtk_main_iteration () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#9  0x00005555556f27eb in XTread_socket (terminal=0x55555627f368, hold_quit=0x7fffffffcb80) at xterm.c:22621
        count = 0
        event_found = false
        dpyinfo = 0x5555564ce400
#10 0x000055555574f5be in gobble_input () at keyboard.c:7327
        nr = 32767
        hold_quit = {
          kind = NO_EVENT,
          part = scroll_bar_nowhere,
          code = 0,
          modifiers = 0,
          x = XIL(0),
          y = XIL(0),
          timestamp = 0,
          frame_or_window = XIL(0),
          arg = XIL(0),
          device = XIL(0x30)
        }
        next = 0x0
        nread = 0
        err = false
        t = 0x55555627f368
--Type <RET> for more, q to quit, c to continue without paging--c
#11 0x000055555574fa72 in handle_async_input () at keyboard.c:7558
        nread = 21845
#12 0x000055555574fa95 in process_pending_signals () at keyboard.c:7572
#13 0x000055555574fad9 in unblock_input_to (level=0) at keyboard.c:7587
#14 0x000055555574fb01 in unblock_input () at keyboard.c:7606
#15 0x0000555555749261 in timer_check () at keyboard.c:4697
        nexttime = {
          tv_sec = 0,
          tv_nsec = 140737488342240
        }
        timers = XIL(0x5555630f0b33)
        idle_timers = XIL(0x5555630f0b63)
        tem = XIL(0)
#16 0x0000555555746c62 in readable_events (flags=1) at keyboard.c:3484
#17 0x000055555574f463 in get_input_pending (flags=1) at keyboard.c:7277
#18 0x00005555557577bd in detect_input_pending_run_timers (do_display=true) at keyboard.c:10807
        old_timers_run = 83601
#19 0x0000555555877f1d in wait_reading_process_output (time_limit=0, nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=XIL(0), wait_proc=0x0, just_wait_proc=0) at process.c:5732
        leave = false
        process_skipped = false
        wrapped = true
        channel_start = 18
        child_fd = 14
        last_read_channel = 17
        channel = 1024
        nfds = 1
        Available = {
          fds_bits = {32, 0 <repeats 15 times>}
        }
        Writeok = {
          fds_bits = {0 <repeats 16 times>}
        }
        check_write = true
        check_delay = 1
        no_avail = false
        xerrno = 11
        proc = make_fixnum(0)
        timeout = {
          tv_sec = 0,
          tv_nsec = 0
        }
        end_time = {
          tv_sec = 140737488342608,
          tv_nsec = 140737353935016
        }
        timer_delay = {
          tv_sec = 0,
          tv_nsec = 93297538
        }
        got_output_end_time = {
          tv_sec = 1659457908,
          tv_nsec = 526808075
        }
        wait = FOREVER
        got_some_output = -1
        prev_wait_proc_nbytes_read = 0
        retry_for_async = false
        count = {
          bytes = 128
        }
        now = {
          tv_sec = 0,
          tv_nsec = -1
        }
#20 0x0000555555747921 in kbd_buffer_get_event (kbp=0x7fffffffd268, used_mouse_menu=0x7fffffffd879, end_time=0x0) at keyboard.c:3963
        do_display = true
        obj = make_fixnum(0)
        str = make_fixnum(0)
        had_pending_selection_requests = false
#21 0x0000555555743532 in read_event_from_main_queue (end_time=0x0, local_getcjmp=0x7fffffffd680, used_mouse_menu=0x7fffffffd879) at keyboard.c:2230
        c = XIL(0)
        save_jump = {{
            __jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {0 <repeats 16 times>}
            }
          }}
        kb = 0x5555563b4cc0
        count = {
          bytes = 96
        }
#22 0x000055555574385f in read_decoded_event_from_main_queue (end_time=0x0, local_getcjmp=0x7fffffffd680, prev_event=XIL(0), used_mouse_menu=0x7fffffffd879) at keyboard.c:2294
        nextevt = XIL(0)
        frame = 0xad74c84ac4438e00
        terminal = 0x0
        events = {XIL(0), XIL(0x2d0c70b), XIL(0), XIL(0xffffffffffffffff), XIL(0), XIL(0x555555d54d80), XIL(0), XIL(0), XIL(0x7fffffffd448), XIL(0x55555573d5d5), XIL(0x9210), XIL(0x7fffffffd470), XIL(0x5555557409b1), XIL(0x5555630f1a33), XIL(0), XIL(0)}
        n = 0
#23 0x0000555555745209 in read_char (commandflag=1, map=XIL(0x555565e41983), prev_event=XIL(0), used_mouse_menu=0x7fffffffd879, end_time=0x0) at keyboard.c:2924
        c = XIL(0)
        local_getcjmp = {{
            __jmpbuf = {0, -1990705257743999615, 93825227440109, 48, 0, 0, -1990705257385386623, -5689509733278245503},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {140737488344800, 93824995056204, 1473333584, 140737488344912, 93824995096141, 93825270028691, 96, 93825270028707, 0, 140737488344912, 93824994842298, 93825000623488, 0, 0, 12498835089305865728, 93824994362817}
            }
          }}
        save_jump = {{
            __jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {0 <repeats 16 times>}
            }
          }}
        tem = XIL(0x2aaa9c0fd850)
        save = XIL(0)
        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = true
        orig_kboard = 0x5555563b4cc0
        jmpcount = {
          bytes = 96
        }
#24 0x0000555555755ba3 in read_key_sequence (keybuf=0x7fffffffdab0, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9984
        interrupted_kboard = 0x5555563b4cc0
        interrupted_frame = 0x55555666e278
        key = XIL(0x7fffffffda18)
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = XIL(0xffffffffffffffff)
        count = {
          bytes = 96
        }
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = XIL(0x555565e41983)
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {
          parent = XIL(0x5555563086f3),
          map = XIL(0x5555563086f3),
          start = 0,
          end = 0
        }
        keytran = {
          parent = XIL(0x7ffff25688cb),
          map = XIL(0x7ffff25688cb),
          start = 0,
          end = 0
        }
        indec = {
          parent = XIL(0x5555563086e3),
          map = XIL(0x5555563086e3),
          start = 0,
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = XIL(0)
        original_uppercase = XIL(0)
        original_uppercase_position = -1
        dummyflag = false
        starting_buffer = 0x555563331430
        fake_prefixed_keys = XIL(0)
        first_event = XIL(0)
        second_event = XIL(0)
#25 0x0000555555740e2e in command_loop_1 () at keyboard.c:1382
        cmd = XIL(0x11addf0)
        keybuf = {make_fixnum(13), make_fixnum(19), XIL(0), XIL(0x60), XIL(0), XIL(0), XIL(0xb), XIL(0xe4c0), XIL(0x30), XIL(0x55555fd4078d), XIL(0), XIL(0xad74c84ac4438e00), XIL(0x55555573d5d5), XIL(0x30), XIL(0x555555d54d80), XIL(0), XIL(0), XIL(0x60), XIL(0x7fffffffdb50), XIL(0x555555ccaf00), XIL(0x7fffffffdb90), XIL(0x555555809da1), XIL(0x100000000), XIL(0x90), XIL(0x7fffffffdb00), XIL(0x555555e4b020), XIL(0), make_fixnum(0), XIL(0x7fffffffdbc0), XIL(0x555555809c8c)}
        i = 1
        prev_modiff = 39530
        prev_buffer = 0x555563331430
        already_adjusted = false
#26 0x000055555580995a in internal_condition_case (bfun=0x555555740a30 <command_loop_1>, handlers=XIL(0x90), hfun=0x55555573fff9 <cmd_error>) at eval.c:1485
        val = XIL(0x55555573d5d5)
        c = 0x555555e4b020
#27 0x00005555557406d1 in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1132
        val = make_fixnum(0)
#28 0x0000555555808f63 in internal_catch (tag=XIL(0xf360), func=0x5555557406a6 <command_loop_2>, arg=XIL(0x90)) at eval.c:1208
        val = XIL(0x51200000000)
        c = 0x555555e4aee0
#29 0x0000555555740661 in command_loop () at keyboard.c:1110
#30 0x000055555573fb82 in recursive_edit_1 () at keyboard.c:719
        count = {
          bytes = 32
        }
        val = XIL(0x55555580ef04)
#31 0x000055555573fd34 in Frecursive_edit () at keyboard.c:802
        count = {
          bytes = 0
        }
        buffer = XIL(0)
#32 0x000055555573bea4 in main (argc=1, argv=0x7fffffffdf58) at emacs.c:2517
        stack_bottom_variable = 0x5b0000006e
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 0
        temacs = 0x0
        attempt_load_pdump = true
        only_version = false
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false
(gdb) xbacktrace
(gdb) 

In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0)
 of 2022-07-27 built on Proteus
Repository revision: de863f70aa905d3a7feaedb58b65bd7f9776853b
Repository branch: master
System Description: Ubuntu 20.04.4 LTS

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LCMS2
LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG
SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM
XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: mu4e:main

Minor modes in effect:
  disable-mouse-global-mode: t
  sow-mode: t
  pdf-occur-global-minor-mode: t
  recentf-mode: t
  projectile-mode: t
  helm-cider-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  treemacs-filewatch-mode: t
  treemacs-follow-mode: t
  treemacs-git-mode: t
  treemacs-fringe-indicator-mode: t
  helm-autoresize-mode: t
  helm--remap-mouse-mode: t
  async-bytecomp-package-mode: t
  org-roam-mode: t
  shell-dirtrack-mode: t
  global-command-log-mode: t
  command-log-mode: t
  display-time-mode: t
  feebleline-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-quote-mode: t
  electric-indent-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  window-divider-mode: t
  buffer-read-only: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  overwrite-mode: overwrite-mode-binary

Load-path shadows:
/home/joe/.emacs.d/elpa/modus-operandi-theme-20201114.729/modus-operandi-theme hides /home/joe/.emacs.d/elpa/modus-themes-20220714.1115/modus-operandi-theme
/home/joe/.emacs.d/elpa/modus-vivendi-theme-0.13.2/modus-vivendi-theme hides /home/joe/.emacs.d/elpa/modus-themes-20220714.1115/modus-vivendi-theme
~/org-mode/lisp/ob-hledger hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-hledger
~/org-mode/lisp/ob-J hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-J
~/org-mode/lisp/ob-abc hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-abc
~/org-mode/lisp/ob-picolisp hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-picolisp
~/org-mode/lisp/ob-io hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-io
~/org-mode/lisp/ob-ledger hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-ledger
~/org-mode/lisp/ob-asymptote hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-asymptote
~/org-mode/lisp/ob-vala hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-vala
~/org-mode/lisp/ob-shen hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-shen
~/org-mode/lisp/ob-ebnf hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-ebnf
~/org-mode/lisp/ob-coq hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-coq
~/org-mode/lisp/ob-mscgen hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-mscgen
~/org-ref/org-ref-scifinder hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-scifinder
~/org-ref/org-ref hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref
~/org-ref/org-ref-arxiv hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-arxiv
~/org-ref/org-ref-pgk hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-pgk
~/org-ref/doi-utils hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/doi-utils
~/org-ref/org-ref-bibtex hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-bibtex
~/org-ref/org-ref-core hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-core
~/org-ref/org-ref-sci-id hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-sci-id
~/org-ref/org-ref-scopus hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-scopus
~/org-ref/org-ref-wos hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-wos
~/org-ref/org-ref-ivy hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-ivy
~/org-ref/x2bib hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/x2bib
~/org-ref/org-ref-pubmed hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-pubmed
~/org-ref/org-ref-glossary hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-glossary
~/org-ref/org-ref-worldcat hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-worldcat
~/org-ref/org-ref-pdf hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-pdf
~/org-ref/org-ref-utils hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-utils
~/org-ref/org-ref-latex hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-latex
~/org-ref/org-ref-helm hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-helm
~/org-ref/org-ref-isbn hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-isbn
~/org-ref/nist-webbook hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/nist-webbook
~/org-ref/org-ref-url-utils hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-url-utils
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-dailies hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-dailies
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-protocol hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-protocol
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-capture hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-capture
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-db hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-db
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-compat hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-compat
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-graph hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-graph
/home/joe/.emacs.d/elpa/lispy-20220209.1138/elpa hides /home/joe/.emacs.d/elpa/ivy-20220529.1130/elpa
~/mu/mu4e/mu4e-main hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-main
~/mu/mu4e/org-mu4e hides /usr/local/share/emacs/site-lisp/mu4e/org-mu4e
~/mu/mu4e/mu4e-context hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-context
~/mu/mu4e/mu4e-meta hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-meta
~/mu/mu4e/mu4e-speedbar hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-speedbar
~/mu/mu4e/mu4e-headers hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-headers
~/mu/mu4e/mu4e hides /usr/local/share/emacs/site-lisp/mu4e/mu4e
~/mu/mu4e/mu4e-contrib hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-contrib
~/mu/mu4e/mu4e-view hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-view
~/mu/mu4e/mu4e-org hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-org
~/mu/mu4e/mu4e-compose hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-compose
~/mu/mu4e/mu4e-message hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-message
~/mu/mu4e/mu4e-lists hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-lists
~/mu/mu4e/mu4e-utils hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-utils
~/mu/mu4e/mu4e-icalendar hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-icalendar
~/mu/mu4e/mu4e-mark hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-mark
~/mu/mu4e/mu4e-vars hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-vars
~/mu/mu4e/mu4e-proc hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-proc
~/mu/mu4e/mu4e-actions hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-actions
~/mu/mu4e/mu4e-draft hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-draft
/home/joe/.emacs.d/elpa/transient-20220527.2213/transient hides /home/joe/emacs/lisp/transient
~/org-mode/lisp/org-entities hides /home/joe/emacs/lisp/org/org-entities
~/org-mode/lisp/ox-beamer hides /home/joe/emacs/lisp/org/ox-beamer
~/org-mode/lisp/oc-biblatex hides /home/joe/emacs/lisp/org/oc-biblatex
~/org-mode/lisp/ob-table hides /home/joe/emacs/lisp/org/ob-table
~/org-mode/lisp/oc-natbib hides /home/joe/emacs/lisp/org/oc-natbib
~/org-mode/lisp/ob-python hides /home/joe/emacs/lisp/org/ob-python
~/org-mode/lisp/oc-csl hides /home/joe/emacs/lisp/org/oc-csl
~/org-mode/lisp/ol-doi hides /home/joe/emacs/lisp/org/ol-doi
~/org-mode/lisp/ob-js hides /home/joe/emacs/lisp/org/ob-js
~/org-mode/lisp/ob-ruby hides /home/joe/emacs/lisp/org/ob-ruby
~/org-mode/lisp/org-duration hides /home/joe/emacs/lisp/org/org-duration
~/org-mode/lisp/ob-org hides /home/joe/emacs/lisp/org/ob-org
~/org-mode/lisp/ob-haskell hides /home/joe/emacs/lisp/org/ob-haskell
~/org-mode/lisp/org-version hides /home/joe/emacs/lisp/org/org-version
~/org-mode/lisp/ob-tangle hides /home/joe/emacs/lisp/org/ob-tangle
~/org-mode/lisp/ox-latex hides /home/joe/emacs/lisp/org/ox-latex
~/org-mode/lisp/org-table hides /home/joe/emacs/lisp/org/org-table
~/org-mode/lisp/org-crypt hides /home/joe/emacs/lisp/org/org-crypt
~/org-mode/lisp/org-refile hides /home/joe/emacs/lisp/org/org-refile
~/org-mode/lisp/ob-forth hides /home/joe/emacs/lisp/org/ob-forth
~/org-mode/lisp/ox-odt hides /home/joe/emacs/lisp/org/ox-odt
~/org-mode/lisp/ob-eshell hides /home/joe/emacs/lisp/org/ob-eshell
~/org-mode/lisp/org-pcomplete hides /home/joe/emacs/lisp/org/org-pcomplete
~/org-mode/lisp/ob-maxima hides /home/joe/emacs/lisp/org/ob-maxima
~/org-mode/lisp/org-archive hides /home/joe/emacs/lisp/org/org-archive
~/org-mode/lisp/ox-publish hides /home/joe/emacs/lisp/org/ox-publish
~/org-mode/lisp/org-attach-git hides /home/joe/emacs/lisp/org/org-attach-git
~/org-mode/lisp/org-goto hides /home/joe/emacs/lisp/org/org-goto
~/org-mode/lisp/ob-sqlite hides /home/joe/emacs/lisp/org/ob-sqlite
~/org-mode/lisp/ox-man hides /home/joe/emacs/lisp/org/ox-man
~/org-mode/lisp/ob-fortran hides /home/joe/emacs/lisp/org/ob-fortran
~/org-mode/lisp/org-compat hides /home/joe/emacs/lisp/org/org-compat
~/org-mode/lisp/ol-rmail hides /home/joe/emacs/lisp/org/ol-rmail
~/org-mode/lisp/ol-eshell hides /home/joe/emacs/lisp/org/ol-eshell
~/org-mode/lisp/ob-lob hides /home/joe/emacs/lisp/org/ob-lob
~/org-mode/lisp/org-attach hides /home/joe/emacs/lisp/org/org-attach
~/org-mode/lisp/org-mobile hides /home/joe/emacs/lisp/org/org-mobile
~/org-mode/lisp/ox hides /home/joe/emacs/lisp/org/ox
~/org-mode/lisp/ob-plantuml hides /home/joe/emacs/lisp/org/ob-plantuml
~/org-mode/lisp/ob-makefile hides /home/joe/emacs/lisp/org/ob-makefile
~/org-mode/lisp/ob-ref hides /home/joe/emacs/lisp/org/ob-ref
~/org-mode/lisp/ox-org hides /home/joe/emacs/lisp/org/ox-org
~/org-mode/lisp/ob-lisp hides /home/joe/emacs/lisp/org/ob-lisp
~/org-mode/lisp/ol-mhe hides /home/joe/emacs/lisp/org/ol-mhe
~/org-mode/lisp/ob-octave hides /home/joe/emacs/lisp/org/ob-octave
~/org-mode/lisp/ox-koma-letter hides /home/joe/emacs/lisp/org/ox-koma-letter
~/org-mode/lisp/ox-texinfo hides /home/joe/emacs/lisp/org/ox-texinfo
~/org-mode/lisp/ob-matlab hides /home/joe/emacs/lisp/org/ob-matlab
~/org-mode/lisp/org-tempo hides /home/joe/emacs/lisp/org/org-tempo
~/org-mode/lisp/org-install hides /home/joe/emacs/lisp/org/org-install
~/org-mode/lisp/ob-shell hides /home/joe/emacs/lisp/org/ob-shell
~/org-mode/lisp/ob-C hides /home/joe/emacs/lisp/org/ob-C
~/org-mode/lisp/org-faces hides /home/joe/emacs/lisp/org/org-faces
~/org-mode/lisp/oc-basic hides /home/joe/emacs/lisp/org/oc-basic
~/org-mode/lisp/ol-irc hides /home/joe/emacs/lisp/org/ol-irc
~/org-mode/lisp/ob-lilypond hides /home/joe/emacs/lisp/org/ob-lilypond
~/org-mode/lisp/org-plot hides /home/joe/emacs/lisp/org/org-plot
~/org-mode/lisp/ob-core hides /home/joe/emacs/lisp/org/ob-core
~/org-mode/lisp/org-loaddefs hides /home/joe/emacs/lisp/org/org-loaddefs
~/org-mode/lisp/org-id hides /home/joe/emacs/lisp/org/org-id
~/org-mode/lisp/ob-calc hides /home/joe/emacs/lisp/org/ob-calc
~/org-mode/lisp/org-list hides /home/joe/emacs/lisp/org/org-list
~/org-mode/lisp/ob-sass hides /home/joe/emacs/lisp/org/ob-sass
~/org-mode/lisp/org-colview hides /home/joe/emacs/lisp/org/org-colview
~/org-mode/lisp/ob-exp hides /home/joe/emacs/lisp/org/ob-exp
~/org-mode/lisp/ob-eval hides /home/joe/emacs/lisp/org/ob-eval
~/org-mode/lisp/org-timer hides /home/joe/emacs/lisp/org/org-timer
~/org-mode/lisp/ol-docview hides /home/joe/emacs/lisp/org/ol-docview
~/org-mode/lisp/ol hides /home/joe/emacs/lisp/org/ol
~/org-mode/lisp/ob-perl hides /home/joe/emacs/lisp/org/ob-perl
~/org-mode/lisp/org-habit hides /home/joe/emacs/lisp/org/org-habit
~/org-mode/lisp/ob-comint hides /home/joe/emacs/lisp/org/ob-comint
~/org-mode/lisp/ol-gnus hides /home/joe/emacs/lisp/org/ol-gnus
~/org-mode/lisp/org-mouse hides /home/joe/emacs/lisp/org/org-mouse
~/org-mode/lisp/ob-gnuplot hides /home/joe/emacs/lisp/org/ob-gnuplot
~/org-mode/lisp/org-inlinetask hides /home/joe/emacs/lisp/org/org-inlinetask
~/org-mode/lisp/ox-icalendar hides /home/joe/emacs/lisp/org/ox-icalendar
~/org-mode/lisp/org-src hides /home/joe/emacs/lisp/org/org-src
~/org-mode/lisp/ox-md hides /home/joe/emacs/lisp/org/ox-md
~/org-mode/lisp/org-protocol hides /home/joe/emacs/lisp/org/org-protocol
~/org-mode/lisp/org-keys hides /home/joe/emacs/lisp/org/org-keys
~/org-mode/lisp/org-num hides /home/joe/emacs/lisp/org/org-num
~/org-mode/lisp/ol-w3m hides /home/joe/emacs/lisp/org/ol-w3m
~/org-mode/lisp/ob-ocaml hides /home/joe/emacs/lisp/org/ob-ocaml
~/org-mode/lisp/org-datetree hides /home/joe/emacs/lisp/org/org-datetree
~/org-mode/lisp/ob-ditaa hides /home/joe/emacs/lisp/org/ob-ditaa
~/org-mode/lisp/ox-ascii hides /home/joe/emacs/lisp/org/ox-ascii
~/org-mode/lisp/ob-dot hides /home/joe/emacs/lisp/org/ob-dot
~/org-mode/lisp/org-feed hides /home/joe/emacs/lisp/org/org-feed
~/org-mode/lisp/org hides /home/joe/emacs/lisp/org/org
~/org-mode/lisp/org-footnote hides /home/joe/emacs/lisp/org/org-footnote
~/org-mode/lisp/ob-R hides /home/joe/emacs/lisp/org/ob-R
~/org-mode/lisp/ol-bbdb hides /home/joe/emacs/lisp/org/ol-bbdb
~/org-mode/lisp/org-lint hides /home/joe/emacs/lisp/org/org-lint
~/org-mode/lisp/ob-sql hides /home/joe/emacs/lisp/org/ob-sql
~/org-mode/lisp/org-clock hides /home/joe/emacs/lisp/org/org-clock
~/org-mode/lisp/org-macs hides /home/joe/emacs/lisp/org/org-macs
~/org-mode/lisp/org-element hides /home/joe/emacs/lisp/org/org-element
~/org-mode/lisp/ox-html hides /home/joe/emacs/lisp/org/ox-html
~/org-mode/lisp/ob-latex hides /home/joe/emacs/lisp/org/ob-latex
~/org-mode/lisp/ob-java hides /home/joe/emacs/lisp/org/ob-java
~/org-mode/lisp/ob-scheme hides /home/joe/emacs/lisp/org/ob-scheme
~/org-mode/lisp/ol-info hides /home/joe/emacs/lisp/org/ol-info
~/org-mode/lisp/org-macro hides /home/joe/emacs/lisp/org/org-macro
~/org-mode/lisp/ob-css hides /home/joe/emacs/lisp/org/ob-css
~/org-mode/lisp/ol-eww hides /home/joe/emacs/lisp/org/ol-eww
~/org-mode/lisp/ob-processing hides /home/joe/emacs/lisp/org/ob-processing
~/org-mode/lisp/ob-clojure hides /home/joe/emacs/lisp/org/ob-clojure
~/org-mode/lisp/ob-emacs-lisp hides /home/joe/emacs/lisp/org/ob-emacs-lisp
~/org-mode/lisp/ob-sed hides /home/joe/emacs/lisp/org/ob-sed
~/org-mode/lisp/ob-screen hides /home/joe/emacs/lisp/org/ob-screen
~/org-mode/lisp/ob hides /home/joe/emacs/lisp/org/ob
~/org-mode/lisp/org-agenda hides /home/joe/emacs/lisp/org/org-agenda
~/org-mode/lisp/org-ctags hides /home/joe/emacs/lisp/org/org-ctags
~/org-mode/lisp/ob-lua hides /home/joe/emacs/lisp/org/ob-lua
~/org-mode/lisp/ob-groovy hides /home/joe/emacs/lisp/org/ob-groovy
~/org-mode/lisp/org-capture hides /home/joe/emacs/lisp/org/org-capture
~/org-mode/lisp/org-indent hides /home/joe/emacs/lisp/org/org-indent
~/org-mode/lisp/oc hides /home/joe/emacs/lisp/org/oc
~/org-mode/lisp/ol-bibtex hides /home/joe/emacs/lisp/org/ol-bibtex
~/org-mode/lisp/ob-awk hides /home/joe/emacs/lisp/org/ob-awk

Features:
(shadow emacsbug misearch multi-isearch sh-script smie executable
pcmpl-args pcmpl-linux pcmpl-unix dired-aux image-file image-converter
display-line-numbers cl-print helm-external cus-start ffap winner
tramp-archive tramp-gvfs zeroconf helm-command helm-elisp helm-eval
edebug debug backtrace helm-info vc-hg vc-git diff-mode vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs log-view pcvs-util term/xterm xterm
overseer pkg-info epl .emacs linum disable-mouse scroll-other-window
two-column hercules which-key pdf-occur tablist tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet pdf-isearch pdf-misc pdf-tools pdf-view
pdf-cache pdf-info pdf-util pdf-macs github-issues bash-completion
ac-cider ac-capf auto-complete popup elfeed-show elfeed-search
disp-table whitespace elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db
elfeed-lib xml-query recentf crdt forms forms-mode helm-projectile
projectile grep ibuf-ext ibuffer ibuffer-loaddefs helm-org helm-cider
helm-cider-spec helm-cider-repl helm-cider-cheatsheet helm-cider-util
cider-cheatsheet helm-ag helm-fd helm-mode helm-misc rainbow-delimiters
highlight-parentheses cider tramp-sh cider-debug cider-browse-ns
cider-mode cider-find cider-inspector cider-completion cider-profile
cider-eval cider-jar arc-mode archive-mode cider-repl-history cider-repl
cider-resolve cider-test cider-overlays cider-stacktrace cider-doc
cider-browse-spec cider-clojuredocs cider-eldoc cider-client
cider-common cider-connection cider-util cider-popup sesman-browser
nrepl-client queue nrepl-dict parseedn parseclj-parser parseclj-lex
parseclj-alist sesman vc vc-dispatcher clojure-mode align helm-lsp
helm-imenu lsp-treemacs lsp-treemacs-themes treemacs
treemacs-header-line treemacs-compatibility treemacs-mode
treemacs-bookmarks treemacs-interface treemacs-extensions
treemacs-mouse-interface treemacs-tags treemacs-persistence
treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom
treemacs-visuals treemacs-fringe-indicator treemacs-scope pulse
treemacs-faces treemacs-icons treemacs-themes treemacs-core-utils
pfuture treemacs-logging treemacs-customization treemacs-macros lsp-ui
lsp-ui-flycheck lsp-ui-doc goto-addr lsp-ui-imenu lsp-ui-peek
lsp-ui-sideline flycheck lsp-ui-util face-remap lsp-mode lsp-protocol
yasnippet tree-widget spinner network-stream markdown-mode imenu ht ewoc
geiser-racket geiser-repl geiser-compile geiser-debug transient compat
geiser-capf compile geiser-image geiser-doc geiser-menu geiser-autodoc
geiser-edit etags fileloop xref geiser-completion geiser-eval
geiser-connection tq geiser-syntax scheme geiser-log geiser-popup view
hypothesis request autorevert mu4e mu4e-org mu4e-main mu4e-view
mu4e-headers mu4e-compose mu4e-context mu4e-draft mu4e-actions rfc2368
smtpmail mu4e-mark mu4e-proc mu4e-utils mu4e-lists mu4e-message
flow-fill mule-util mu4e-vars mu4e-meta ox-reveal org-ref
org-ref-helm-bibtex org-ref-helm helm-config org-ref-core warnings
reftex-cite reftex reftex-loaddefs reftex-vars org-ref-glossary
org-ref-bibtex org-ref-citeproc hydra lv doi-utils org-ref-utils
org-ref-pdf htmlize helm-bibtex bibtex-completion biblio biblio-download
biblio-dissemin biblio-ieee biblio-hal biblio-dblp biblio-crossref
biblio-arxiv timezone biblio-doi biblio-core ido hl-line parsebib
helm-files image-dired helm-buffers helm-occur helm-tags helm-locate
helm-grep helm-regexp helm-utils helm-types helm-net helm-help helm
helm-global-bindings helm-core async-bytecomp helm-source
helm-multi-match helm-lib async org-roam-protocol let-alist org-protocol
org-roam org-roam-link org-roam-graph org-roam-doctor org-roam-dailies
org-roam-capture org-roam-db org-capture org-roam-completion
org-roam-buffer inline org-roam-faces org-roam-macs org-roam-compat f
f-shortdoc shortdoc s dash org-id emacsql-sqlite3 emacsql
emacsql-compiler org-habit color org-bullets edmacro org-journal
org-crypt cal-iso org-tree-slide org-timer org-clock toc-org ox-extra
org-tempo tempo ox-odt rng-loc rng-uri rng-parse rng-match rng-dt
rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex
ox-icalendar org-agenda org-refile ox-html table ox-ascii ox-publish ox
ob-calc calc-store calc-trail calc-ext calc calc-loaddefs rect calc-macs
ob-jupyter jupyter-tramp docker-tramp tramp-cache tramp tramp-loaddefs
trampver tramp-integration cus-edit cus-load files-x tramp-compat
ls-lisp jupyter-server jupyter-server-ioloop jupyter-ioloop-comm
jupyter-ioloop zmq zmq-core jupyter-rest-api url-http url-auth url-gw
nsm pcase jupyter-org-extensions jupyter-org-client jupyter-repl
jupyter-kernel-manager jupyter-channel jupyter-widget-client websocket
bindat simple-httpd jupyter-client jupyter-comm-layer jupyter-messages
hmac-def jupyter-mime jupyter-kernelspec jupyter-env jupyter-base
eieio-base ob-R ob-python python ob-scheme geiser ob-maxima ob-clojure
ob-shell shell org-element avl-tree generator ol-eww eww xdg url-queue
thingatpt mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr
pixel-fill kinsoku url-file url-dired svg dom gnus-group gnus-undo
gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7
netrc nnoo gnus-spec gnus-int gnus-range message sendmail yank-media
puny rfc822 mml mml-sec epa epg rfc6068 epg-config mailabbrev gmm-utils
mailheader gnus-win gnus nnheader gnus-util mail-utils range wid-edit
ol-docview doc-view filenotify jka-compr image-mode exif ol-bibtex
ol-bbdb ol-w3m ol-doi org-link-doi ess ess-utils ess-custom project
holidays holiday-loaddefs window-margin command-log-mode cyberpunk-theme
dream-theme ps-print ps-print-loaddefs ps-def lpr time feebleline
bookmark+ bookmark+-key kmacro derived dired-x dired dired-loaddefs
bookmark+-1 bookmark+-bmu bookmark+-lit bookmark text-property-search pp
parse-time quelpa-use-package cl-extra quelpa mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr lisp-mnt use-package use-package-ensure use-package-delight
use-package-diminish use-package-bind-key bind-key use-package-core
finder-inf org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-footnote org-src ob-comint org-pcomplete pcomplete comint ansi-color
org-list org-faces org-entities noutline outline easy-mmode org-version
ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex iso8601
time-date ol rx org-keys oc org-compat advice org-macs org-loaddefs
format-spec find-func cal-menu calendar cal-loaddefs geiser-impl
help-fns radix-tree help-mode geiser-custom geiser-base ring
helm-easymenu tex-site scholar-import-autoloads info package browse-url
url url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile cconv url-vars cl-loaddefs cl-lib
rmc iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
emacs)

Memory information:
((conses 16 1517550 1318174)
 (symbols 48 80873 50)
 (strings 32 320327 91105)
 (string-bytes 1 10311004)
 (vectors 16 136272)
 (vector-slots 8 1817562 448552)
 (floats 8 1061 1022)
 (intervals 56 56189 80742)
 (buffers 992 40))

-- 
Dr Joseph A. Corneli (https://github.com/holtzermann17)

HYPERREAL ENTERPRISES LTD is a private company limited by shares, incorporated
25th, June 2019 as Company Number 634284 on the Register of Companies for
Scotland (https://beta.companieshouse.gov.uk/company/SC634284).