sbuild (Debian sbuild) 0.90.2 (26 August 2025) on carme.larted.org.uk +==============================================================================+ | libfirefox-marionette-perl 1.68-1 (amd64) Sat, 04 Oct 2025 04:01:55 +0000 | +==============================================================================+ Package: libfirefox-marionette-perl Version: 1.68-1 Source Version: 1.68-1 Distribution: perl-5.42-throwaway Machine Architecture: amd64 Host Architecture: amd64 Build Architecture: amd64 Build Type: full I: Setting up the chroot... I: Creating chroot session... I: Setting up log color... +------------------------------------------------------------------------------+ | Chroot Setup Commands Sat, 04 Oct 2025 04:01:55 +0000 | +------------------------------------------------------------------------------+ /usr/share/debomatic/sbuildcommands/chroot-setup-commands/dpkg-speedup libfirefox-marionette-perl_1.68-1 perl-5.42-throwaway amd64 ---------------------------------------------------------------------------------------------------------------------------------- I: Finished running '/usr/share/debomatic/sbuildcommands/chroot-setup-commands/dpkg-speedup libfirefox-marionette-perl_1.68-1 perl-5.42-throwaway amd64'. Finished processing commands. -------------------------------------------------------------------------------- I: Setting up apt archive... +------------------------------------------------------------------------------+ | Update chroot Sat, 04 Oct 2025 04:01:55 +0000 | +------------------------------------------------------------------------------+ Get:1 file:/srv/reprepro perl-5.42 InRelease [3042 B] Hit:2 http://deb.debian.org/debian unstable InRelease Hit:3 http://deb.debian.org/debian sid InRelease Get:1 file:/srv/reprepro perl-5.42 InRelease [3042 B] Get:4 file:/srv/reprepro perl-5.42/main amd64 Packages [625 kB] Reading package lists... Reading package lists... Building dependency tree... Reading state information... Calculating upgrade... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +------------------------------------------------------------------------------+ | Fetch source files Sat, 04 Oct 2025 04:01:57 +0000 | +------------------------------------------------------------------------------+ Local sources ------------- /srv/debomatic/incoming/libfirefox-marionette-perl_1.68-1.dsc exists in /srv/debomatic/incoming; copying to chroot +------------------------------------------------------------------------------+ | Install package build dependencies Sat, 04 Oct 2025 04:01:57 +0000 | +------------------------------------------------------------------------------+ Setup apt archive ----------------- Merged Build-Depends: debhelper-compat (= 13), build-essential, dbus-daemon, firefox-esr | firefox, libarchive-zip-perl, libconfig-ini-perl, libcrypt-passwdmd5-perl, libcrypt-urandom-perl, libdigest-sha-perl, libencode-perl, libfile-homedir-perl, libhttp-daemon-perl, libhttp-message-perl, libio-compress-perl, libio-socket-ip-perl, libio-socket-ssl-perl, libjson-perl, libpdf-api2-perl, libpod-simple-perl, libscalar-list-utils-perl, libsocket-perl, libterm-readkey-perl, libtest-simple-perl, libtext-csv-xs-perl, liburi-perl, libxml-parser-perl, perl, xauth, xvfb Filtered Build-Depends: debhelper-compat (= 13), build-essential, dbus-daemon, firefox-esr, libarchive-zip-perl, libconfig-ini-perl, libcrypt-passwdmd5-perl, libcrypt-urandom-perl, libdigest-sha-perl, libencode-perl, libfile-homedir-perl, libhttp-daemon-perl, libhttp-message-perl, libio-compress-perl, libio-socket-ip-perl, libio-socket-ssl-perl, libjson-perl, libpdf-api2-perl, libpod-simple-perl, libscalar-list-utils-perl, libsocket-perl, libterm-readkey-perl, libtest-simple-perl, libtext-csv-xs-perl, liburi-perl, libxml-parser-perl, perl, xauth, xvfb dpkg-deb: building package 'sbuild-build-depends-main-dummy' in '/build/libfirefox-marionette-perl-CMaEfi/resolver-jZzNvs/apt_archive/sbuild-build-depends-main-dummy.deb'. Ign:1 copy:/build/libfirefox-marionette-perl-CMaEfi/resolver-jZzNvs/apt_archive ./ InRelease Get:2 copy:/build/libfirefox-marionette-perl-CMaEfi/resolver-jZzNvs/apt_archive ./ Release [615 B] Ign:3 copy:/build/libfirefox-marionette-perl-CMaEfi/resolver-jZzNvs/apt_archive ./ Release.gpg Get:4 copy:/build/libfirefox-marionette-perl-CMaEfi/resolver-jZzNvs/apt_archive ./ Sources [1401 B] Get:5 copy:/build/libfirefox-marionette-perl-CMaEfi/resolver-jZzNvs/apt_archive ./ Packages [1133 B] Fetched 3149 B in 0s (0 B/s) Reading package lists... Reading package lists... Install main build dependencies (apt-based resolver) ---------------------------------------------------- Installing build dependencies Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: adwaita-icon-theme at-spi2-common autoconf automake autopoint autotools-dev bsdextrautils ca-certificates dbus dbus-bin dbus-daemon dbus-session-bus-common dbus-system-bus-common dbus-user-session dconf-gsettings-backend dconf-service debhelper dh-autoreconf dh-strip-nondeterminism dwz file firefox-esr fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-mono gettext gettext-base groff-base gtk-update-icon-cache hicolor-icon-theme intltool-debian libapparmor1 libarchive-zip-perl libasound2-data libasound2t64 libatk-bridge2.0-0t64 libatk1.0-0t64 libatspi2.0-0t64 libavahi-client3 libavahi-common-data libavahi-common3 libbrotli1 libcairo-gobject2 libcairo2 libclone-perl libcloudproviders0 libcolord2 libcom-err2 libconfig-ini-perl libcrypt-passwdmd5-perl libcrypt-urandom-perl libcups2t64 libdata-optlist-perl libdatrie1 libdbus-1-3 libdconf1 libdebhelper-perl libdeflate0 libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm2 libedit2 libelf1t64 libencode-locale-perl libepoxy0 libevent-2.1-7t64 libexpat1 libfile-homedir-perl libfile-listing-perl libfile-stripnondeterminism-perl libfile-which-perl libfont-ttf-perl libfontconfig1 libfontenc1 libfreetype6 libfribidi0 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-common libgl1 libgl1-mesa-dri libglib2.0-0t64 libglvnd0 libglx-mesa0 libglx0 libgraphite2-3 libgssapi-krb5-2 libgtk-3-0t64 libgtk-3-common libharfbuzz0b libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libice6 libio-html-perl libio-socket-ssl-perl libio-string-perl libjbig0 libjpeg62-turbo libjson-perl libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblcms2-2 liblerc4 libllvm19 liblwp-mediatypes-perl liblwp-protocol-https-perl libmagic-mgc libmagic1t64 libmixin-linewise-perl libnet-http-perl libnet-ssleay-perl libnspr4 libnss3 libpam-systemd libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-util-perl libpciaccess0 libpdf-api2-perl libperlio-utf8-strict-perl libpipeline1 libpixman-1-0 libpng16-16t64 libproc2-0 libsensors-config libsensors5 libsharpyuv0 libsm6 libsub-exporter-perl libsub-install-perl libsystemd-shared libterm-readkey-perl libtext-csv-xs-perl libthai-data libthai0 libtiff6 libtimedate-perl libtool libtry-tiny-perl libuchardet0 libunwind8 liburi-perl libvpx11 libvulkan1 libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp7 libwww-perl libwww-robotrules-perl libx11-6 libx11-data libx11-xcb1 libxau6 libxaw7 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-render0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxfont2 libxi6 libxinerama1 libxkbcommon0 libxkbfile1 libxml-parser-perl libxml2-16 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxshmfence1 libxt6t64 libxxf86vm1 libz3-4 m4 man-db mesa-libgallium mount netbase openssl perl-openssl-defaults po-debconf procps sensible-utils shared-mime-info systemd systemd-sysv x11-common x11-xkb-utils xauth xkb-data xserver-common xvfb Suggested packages: adwaita-icon-theme-legacy autoconf-archive gnu-standards autoconf-doc dh-make fonts-stix | otf-stix fonts-lmodern libcanberra0 pulseaudio gettext-doc libasprintf-dev libgettextpo-dev gnulib-l10n groff alsa-utils libasound2-plugins colord cups-common low-memory-monitor krb5-doc krb5-user gvfs libdata-dump-perl liblcms2-utils libcrypt-ssleay-perl libcryptsetup12 libtss2-rc0t64 pciutils lm-sensors libarchive13t64 libbpf1 libdw1t64 libfido2-1 libip4tc2 libpwquality1 libqrencode4 libtool-doc gfortran | fortran95-compiler libsub-name-perl libbusiness-isbn-perl libmime-base32-perl libregexp-ipv6-perl libauthen-ntlm-perl m4-doc apparmor less nfs-common libmail-box-perl systemd-container systemd-homed systemd-userdbd systemd-boot systemd-resolved systemd-repart libtss2-tcti-device0 polkitd Recommended packages: librsvg2-common libavcodec61 | libavcodec-extra61 | libavcodec60 | libavcodec-extra60 | libavcodec59 | libavcodec-extra59 | libavcodec58 | libavcodec-extra58 | libavcodec57 | libavcodec-extra57 | libavcodec56 | libavcodec-extra56 | libavcodec55 | libavcodec-extra55 | libavcodec54 | libavcodec-extra54 | libavcodec53 | libavcodec-extra53 curl | wget | lynx alsa-ucm-conf alsa-topology-conf at-spi2-core libarchive-cpio-perl libgdk-pixbuf2.0-bin libglib2.0-data xdg-user-dirs libgtk-3-bin libhtml-format-perl libio-compress-brotli-perl libjson-xs-perl krb5-locales libimage-png-libpng-perl libpdf-api2-xs-perl libkmod2 libltdl-dev mesa-vulkan-drivers | vulkan-icd libdata-dump-perl libhtml-form-perl libmailtools-perl libmail-sendmail-perl psmisc linux-sysctl-defaults systemd-timesyncd | time-daemon systemd-cryptsetup libnss-systemd xfonts-base The following NEW packages will be installed: adwaita-icon-theme at-spi2-common autoconf automake autopoint autotools-dev bsdextrautils ca-certificates dbus dbus-bin dbus-daemon dbus-session-bus-common dbus-system-bus-common dbus-user-session dconf-gsettings-backend dconf-service debhelper dh-autoreconf dh-strip-nondeterminism dwz file firefox-esr fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-mono gettext gettext-base groff-base gtk-update-icon-cache hicolor-icon-theme intltool-debian libapparmor1 libarchive-zip-perl libasound2-data libasound2t64 libatk-bridge2.0-0t64 libatk1.0-0t64 libatspi2.0-0t64 libavahi-client3 libavahi-common-data libavahi-common3 libbrotli1 libcairo-gobject2 libcairo2 libclone-perl libcloudproviders0 libcolord2 libcom-err2 libconfig-ini-perl libcrypt-passwdmd5-perl libcrypt-urandom-perl libcups2t64 libdata-optlist-perl libdatrie1 libdbus-1-3 libdconf1 libdebhelper-perl libdeflate0 libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm2 libedit2 libelf1t64 libencode-locale-perl libepoxy0 libevent-2.1-7t64 libexpat1 libfile-homedir-perl libfile-listing-perl libfile-stripnondeterminism-perl libfile-which-perl libfont-ttf-perl libfontconfig1 libfontenc1 libfreetype6 libfribidi0 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-common libgl1 libgl1-mesa-dri libglib2.0-0t64 libglvnd0 libglx-mesa0 libglx0 libgraphite2-3 libgssapi-krb5-2 libgtk-3-0t64 libgtk-3-common libharfbuzz0b libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libice6 libio-html-perl libio-socket-ssl-perl libio-string-perl libjbig0 libjpeg62-turbo libjson-perl libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblcms2-2 liblerc4 libllvm19 liblwp-mediatypes-perl liblwp-protocol-https-perl libmagic-mgc libmagic1t64 libmixin-linewise-perl libnet-http-perl libnet-ssleay-perl libnspr4 libnss3 libpam-systemd libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-util-perl libpciaccess0 libpdf-api2-perl libperlio-utf8-strict-perl libpipeline1 libpixman-1-0 libpng16-16t64 libproc2-0 libsensors-config libsensors5 libsharpyuv0 libsm6 libsub-exporter-perl libsub-install-perl libsystemd-shared libterm-readkey-perl libtext-csv-xs-perl libthai-data libthai0 libtiff6 libtimedate-perl libtool libtry-tiny-perl libuchardet0 libunwind8 liburi-perl libvpx11 libvulkan1 libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp7 libwww-perl libwww-robotrules-perl libx11-6 libx11-data libx11-xcb1 libxau6 libxaw7 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-render0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxfont2 libxi6 libxinerama1 libxkbcommon0 libxkbfile1 libxml-parser-perl libxml2-16 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxshmfence1 libxt6t64 libxxf86vm1 libz3-4 m4 man-db mesa-libgallium mount netbase openssl perl-openssl-defaults po-debconf procps sbuild-build-depends-main-dummy sensible-utils shared-mime-info systemd systemd-sysv x11-common x11-xkb-utils xauth xkb-data xserver-common xvfb 0 upgraded, 217 newly installed, 0 to remove and 0 not upgraded. Need to get 174 MB/175 MB of archives. After this operation, 703 MB of additional disk space will be used. Get:1 file:/srv/reprepro perl-5.42/main amd64 libclone-perl amd64 0.47-1+b2 [13.9 kB] Get:2 copy:/build/libfirefox-marionette-perl-CMaEfi/resolver-jZzNvs/apt_archive ./ sbuild-build-depends-main-dummy 0.invalid.0 [1056 B] Get:3 file:/srv/reprepro perl-5.42/main amd64 libperlio-utf8-strict-perl amd64 0.010-1+b4 [11.4 kB] Get:4 file:/srv/reprepro perl-5.42/main amd64 libparams-util-perl amd64 1.102-3+b2 [24.4 kB] Get:5 http://deb.debian.org/debian unstable/main amd64 mount amd64 2.41.2-3 [163 kB] Get:6 file:/srv/reprepro perl-5.42/main amd64 libcrypt-urandom-perl amd64 0.54-1+b1 [15.8 kB] Get:7 file:/srv/reprepro perl-5.42/main amd64 libhtml-parser-perl amd64 3.83-1+b3 [100 kB] Get:8 http://deb.debian.org/debian unstable/main amd64 libsystemd-shared amd64 258-1 [2253 kB] Get:9 file:/srv/reprepro perl-5.42/main amd64 libnet-ssleay-perl amd64 1.94-3+b1 [341 kB] Get:10 file:/srv/reprepro perl-5.42/main amd64 libterm-readkey-perl amd64 2.38-2+b5 [24.6 kB] Get:11 file:/srv/reprepro perl-5.42/main amd64 libtext-csv-xs-perl amd64 1.61-1+b1 [140 kB] Get:12 file:/srv/reprepro perl-5.42/main amd64 libxml-parser-perl amd64 2.47-1+b4 [199 kB] Get:13 http://deb.debian.org/debian unstable/main amd64 systemd amd64 258-1 [3228 kB] Get:14 http://deb.debian.org/debian unstable/main amd64 systemd-sysv amd64 258-1 [62.9 kB] Get:15 http://deb.debian.org/debian unstable/main amd64 libdbus-1-3 amd64 1.16.2-2 [178 kB] Get:16 http://deb.debian.org/debian unstable/main amd64 dbus-bin amd64 1.16.2-2 [80.0 kB] Get:17 http://deb.debian.org/debian unstable/main amd64 dbus-session-bus-common all 1.16.2-2 [52.3 kB] Get:18 http://deb.debian.org/debian unstable/main amd64 libapparmor1 amd64 4.1.0-1 [43.7 kB] Get:19 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.7.3-1 [112 kB] Get:20 http://deb.debian.org/debian unstable/main amd64 dbus-daemon amd64 1.16.2-2 [159 kB] Get:21 http://deb.debian.org/debian unstable/main amd64 dbus-system-bus-common all 1.16.2-2 [53.5 kB] Get:22 http://deb.debian.org/debian unstable/main amd64 dbus amd64 1.16.2-2 [71.6 kB] Get:23 http://deb.debian.org/debian unstable/main amd64 netbase all 6.5 [12.4 kB] Get:24 http://deb.debian.org/debian unstable/main amd64 libproc2-0 amd64 2:4.0.4-9 [65.6 kB] Get:25 http://deb.debian.org/debian unstable/main amd64 procps amd64 2:4.0.4-9 [882 kB] Get:26 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.26 [27.0 kB] Get:27 http://deb.debian.org/debian unstable/main amd64 openssl amd64 3.5.4-1 [1496 kB] Get:28 http://deb.debian.org/debian unstable/main amd64 ca-certificates all 20250419 [162 kB] Get:29 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.46-5 [338 kB] Get:30 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.46-5 [109 kB] Get:31 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.46-5 [43.6 kB] Get:32 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.23.1-2+b1 [244 kB] Get:33 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-2 [68.5 kB] Get:34 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-9 [1187 kB] Get:35 http://deb.debian.org/debian unstable/main amd64 libpam-systemd amd64 258-1 [311 kB] Get:36 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.41.2-3 [98.3 kB] Get:37 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get:38 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.1-1 [1469 kB] Get:39 http://deb.debian.org/debian unstable/main amd64 libgdk-pixbuf2.0-common all 2.44.3+dfsg-3 [313 kB] Get:40 http://deb.debian.org/debian unstable/main amd64 libglib2.0-0t64 amd64 2.84.4-3 [1518 kB] Get:41 http://deb.debian.org/debian unstable/main amd64 libxml2-16 amd64 2.14.5+dfsg-0.2 [638 kB] Get:42 http://deb.debian.org/debian unstable/main amd64 shared-mime-info amd64 2.4-5+b3 [758 kB] Get:43 http://deb.debian.org/debian unstable/main amd64 libjpeg62-turbo amd64 1:2.1.5-4 [168 kB] Get:44 http://deb.debian.org/debian unstable/main amd64 libpng16-16t64 amd64 1.6.50-1 [282 kB] Get:45 http://deb.debian.org/debian unstable/main amd64 libdeflate0 amd64 1.23-2 [47.3 kB] Get:46 http://deb.debian.org/debian unstable/main amd64 libjbig0 amd64 2.1-6.1+b2 [32.1 kB] Get:47 http://deb.debian.org/debian unstable/main amd64 liblerc4 amd64 4.0.0+ds-5 [183 kB] Get:48 http://deb.debian.org/debian unstable/main amd64 libsharpyuv0 amd64 1.5.0-0.1 [116 kB] Get:49 http://deb.debian.org/debian unstable/main amd64 libwebp7 amd64 1.5.0-0.1 [318 kB] Get:50 http://deb.debian.org/debian unstable/main amd64 libtiff6 amd64 4.7.1-1 [361 kB] Get:51 http://deb.debian.org/debian unstable/main amd64 libgdk-pixbuf-2.0-0 amd64 2.44.3+dfsg-3 [144 kB] Get:52 http://deb.debian.org/debian unstable/main amd64 gtk-update-icon-cache amd64 4.20.1+ds-2 [53.4 kB] Get:53 http://deb.debian.org/debian unstable/main amd64 hicolor-icon-theme all 0.18-2 [11.8 kB] Get:54 http://deb.debian.org/debian unstable/main amd64 adwaita-icon-theme all 49.0-1 [507 kB] Get:55 http://deb.debian.org/debian unstable/main amd64 at-spi2-common all 2.58.0-1 [173 kB] Get:56 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.20-1 [324 kB] Get:57 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3.1 [494 kB] Get:58 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20240727.1 [60.2 kB] Get:59 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.17-4 [862 kB] Get:60 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.23.1-2 [770 kB] Get:61 http://deb.debian.org/debian unstable/main amd64 dbus-user-session amd64 1.16.2-2 [52.1 kB] Get:62 http://deb.debian.org/debian unstable/main amd64 libdconf1 amd64 0.49.0-1 [43.6 kB] Get:63 http://deb.debian.org/debian unstable/main amd64 dconf-service amd64 0.49.0-1 [33.7 kB] Get:64 http://deb.debian.org/debian unstable/main amd64 dconf-gsettings-backend amd64 0.49.0-1 [29.8 kB] Get:65 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.28 [92.4 kB] Get:66 http://deb.debian.org/debian unstable/main amd64 libtool all 2.5.4-5 [540 kB] Get:67 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 21 [12.2 kB] Get:68 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get:69 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.15.0-1 [19.9 kB] Get:70 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.15.0-1 [8812 B] Get:71 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.193-3 [192 kB] Get:72 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.16-2 [108 kB] Get:73 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.23.1-2+b1 [1680 kB] Get:74 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get:75 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get:76 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.28 [941 kB] Get:77 http://deb.debian.org/debian unstable/main amd64 libasound2-data all 1.2.14-2 [21.1 kB] Get:78 http://deb.debian.org/debian unstable/main amd64 libasound2t64 amd64 1.2.14-2 [420 kB] Get:79 http://deb.debian.org/debian unstable/main amd64 libatk1.0-0t64 amd64 2.58.0-1 [57.9 kB] Get:80 http://deb.debian.org/debian unstable/main amd64 libbrotli1 amd64 1.1.0-2+b7 [307 kB] Get:81 http://deb.debian.org/debian unstable/main amd64 libfreetype6 amd64 2.13.3+dfsg-1 [452 kB] Get:82 http://deb.debian.org/debian unstable/main amd64 fonts-dejavu-mono all 2.37-8 [489 kB] Get:83 http://deb.debian.org/debian unstable/main amd64 fonts-dejavu-core all 2.37-8 [840 kB] Get:84 http://deb.debian.org/debian unstable/main amd64 fontconfig-config amd64 2.15.0-2.4 [318 kB] Get:85 http://deb.debian.org/debian unstable/main amd64 libfontconfig1 amd64 2.15.0-2.4 [401 kB] Get:86 http://deb.debian.org/debian unstable/main amd64 libpixman-1-0 amd64 0.46.4-1 [259 kB] Get:87 http://deb.debian.org/debian unstable/main amd64 libxau6 amd64 1:1.0.11-1 [20.4 kB] Get:88 http://deb.debian.org/debian unstable/main amd64 libxdmcp6 amd64 1:1.1.5-1 [27.8 kB] Get:89 http://deb.debian.org/debian unstable/main amd64 libxcb1 amd64 1.17.0-2+b1 [144 kB] Get:90 http://deb.debian.org/debian unstable/main amd64 libx11-data all 2:1.8.12-1 [343 kB] Get:91 http://deb.debian.org/debian unstable/main amd64 libx11-6 amd64 2:1.8.12-1 [815 kB] Get:92 http://deb.debian.org/debian unstable/main amd64 libxcb-render0 amd64 1.17.0-2+b1 [115 kB] Get:93 http://deb.debian.org/debian unstable/main amd64 libxcb-shm0 amd64 1.17.0-2+b1 [105 kB] Get:94 http://deb.debian.org/debian unstable/main amd64 libxext6 amd64 2:1.3.4-1+b3 [50.4 kB] Get:95 http://deb.debian.org/debian unstable/main amd64 libxrender1 amd64 1:0.9.12-1 [27.9 kB] Get:96 http://deb.debian.org/debian unstable/main amd64 libcairo2 amd64 1.18.4-1+b1 [538 kB] Get:97 http://deb.debian.org/debian unstable/main amd64 libcairo-gobject2 amd64 1.18.4-1+b1 [130 kB] Get:98 http://deb.debian.org/debian unstable/main amd64 libevent-2.1-7t64 amd64 2.1.12-stable-10+b1 [182 kB] Get:99 http://deb.debian.org/debian unstable/main amd64 libxi6 amd64 2:1.8.2-1 [78.9 kB] Get:100 http://deb.debian.org/debian unstable/main amd64 libatspi2.0-0t64 amd64 2.58.0-1 [89.8 kB] Get:101 http://deb.debian.org/debian unstable/main amd64 libatk-bridge2.0-0t64 amd64 2.58.0-1 [76.4 kB] Get:102 http://deb.debian.org/debian unstable/main amd64 libcloudproviders0 amd64 0.3.6-3 [32.9 kB] Get:103 http://deb.debian.org/debian unstable/main amd64 liblcms2-2 amd64 2.16-2 [160 kB] Get:104 http://deb.debian.org/debian unstable/main amd64 libcolord2 amd64 1.4.8-1 [152 kB] Get:105 http://deb.debian.org/debian unstable/main amd64 libavahi-common-data amd64 0.8-17 [112 kB] Get:106 http://deb.debian.org/debian unstable/main amd64 libavahi-common3 amd64 0.8-17 [47.3 kB] Get:107 http://deb.debian.org/debian unstable/main amd64 libavahi-client3 amd64 0.8-17 [52.1 kB] Get:108 http://deb.debian.org/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-5 [33.0 kB] Get:109 http://deb.debian.org/debian unstable/main amd64 libcom-err2 amd64 1.47.2-3+b3 [25.0 kB] Get:110 http://deb.debian.org/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-5 [81.5 kB] Get:111 http://deb.debian.org/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-6 [9456 B] Get:112 http://deb.debian.org/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-5 [326 kB] Get:113 http://deb.debian.org/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-5 [138 kB] Get:114 http://deb.debian.org/debian unstable/main amd64 libcups2t64 amd64 2.4.10-4 [267 kB] Get:115 http://deb.debian.org/debian unstable/main amd64 libepoxy0 amd64 1.5.10-2 [193 kB] Get:116 http://deb.debian.org/debian unstable/main amd64 libfribidi0 amd64 1.0.16-3 [26.6 kB] Get:117 http://deb.debian.org/debian unstable/main amd64 libgraphite2-3 amd64 1.3.14-9 [76.5 kB] Get:118 http://deb.debian.org/debian unstable/main amd64 libharfbuzz0b amd64 12.1.0-1 [530 kB] Get:119 http://deb.debian.org/debian unstable/main amd64 fontconfig amd64 2.15.0-2.4 [464 kB] Get:120 http://deb.debian.org/debian unstable/main amd64 libthai-data all 0.1.29-2 [168 kB] Get:121 http://deb.debian.org/debian unstable/main amd64 libdatrie1 amd64 0.2.13-4 [38.0 kB] Get:122 http://deb.debian.org/debian unstable/main amd64 libthai0 amd64 0.1.29-2+b1 [49.4 kB] Get:123 http://deb.debian.org/debian unstable/main amd64 libpango-1.0-0 amd64 1.56.3-2 [239 kB] Get:124 http://deb.debian.org/debian unstable/main amd64 libpangoft2-1.0-0 amd64 1.56.3-2 [62.0 kB] Get:125 http://deb.debian.org/debian unstable/main amd64 libpangocairo-1.0-0 amd64 1.56.3-2 [38.1 kB] Get:126 http://deb.debian.org/debian unstable/main amd64 libwayland-client0 amd64 1.24.0-2+b1 [28.5 kB] Get:127 http://deb.debian.org/debian unstable/main amd64 libwayland-cursor0 amd64 1.24.0-2+b1 [12.3 kB] Get:128 http://deb.debian.org/debian unstable/main amd64 libwayland-egl1 amd64 1.24.0-2+b1 [6224 B] Get:129 http://deb.debian.org/debian unstable/main amd64 libxcomposite1 amd64 1:0.4.6-1 [16.3 kB] Get:130 http://deb.debian.org/debian unstable/main amd64 libxfixes3 amd64 1:6.0.0-2+b4 [20.2 kB] Get:131 http://deb.debian.org/debian unstable/main amd64 libxcursor1 amd64 1:1.2.3-1 [39.7 kB] Get:132 http://deb.debian.org/debian unstable/main amd64 libxdamage1 amd64 1:1.1.6-1+b2 [15.5 kB] Get:133 http://deb.debian.org/debian unstable/main amd64 libxinerama1 amd64 2:1.1.4-3+b4 [16.0 kB] Get:134 http://deb.debian.org/debian unstable/main amd64 xkb-data all 2.42-1 [790 kB] Get:135 http://deb.debian.org/debian unstable/main amd64 libxkbcommon0 amd64 1.7.0-2.1 [113 kB] Get:136 http://deb.debian.org/debian unstable/main amd64 libxrandr2 amd64 2:1.5.4-1+b3 [36.3 kB] Get:137 http://deb.debian.org/debian unstable/main amd64 libgtk-3-common all 3.24.50-2 [4914 kB] Get:138 http://deb.debian.org/debian unstable/main amd64 libgtk-3-0t64 amd64 3.24.50-2 [2908 kB] Get:139 http://deb.debian.org/debian unstable/main amd64 libnspr4 amd64 2:4.37-1 [111 kB] Get:140 http://deb.debian.org/debian unstable/main amd64 libnss3 amd64 2:3.116-1 [1422 kB] Get:141 http://deb.debian.org/debian unstable/main amd64 libvpx11 amd64 1.15.2-2 [1111 kB] Get:142 http://deb.debian.org/debian unstable/main amd64 libx11-xcb1 amd64 2:1.8.12-1 [247 kB] Get:143 http://deb.debian.org/debian unstable/main amd64 firefox-esr amd64 140.3.1esr-2 [71.0 MB] Get:144 http://deb.debian.org/debian unstable/main amd64 libsub-install-perl all 0.929-1 [10.5 kB] Get:145 http://deb.debian.org/debian unstable/main amd64 libdata-optlist-perl all 0.114-1 [10.6 kB] Get:146 http://deb.debian.org/debian unstable/main amd64 libsub-exporter-perl all 0.990-1 [50.6 kB] Get:147 http://deb.debian.org/debian unstable/main amd64 libmixin-linewise-perl all 0.111-1 [14.4 kB] Get:148 http://deb.debian.org/debian unstable/main amd64 libconfig-ini-perl all 1:0.029-1 [23.7 kB] Get:149 http://deb.debian.org/debian unstable/main amd64 libcrypt-passwdmd5-perl all 1.42-2 [8448 B] Get:150 http://deb.debian.org/debian unstable/main amd64 libdrm-common all 2.4.125-2 [8576 B] Get:151 http://deb.debian.org/debian unstable/main amd64 libdrm2 amd64 2.4.125-2 [39.1 kB] Get:152 http://deb.debian.org/debian unstable/main amd64 libdrm-amdgpu1 amd64 2.4.125-2 [23.2 kB] Get:153 http://deb.debian.org/debian unstable/main amd64 libpciaccess0 amd64 0.17-3+b3 [51.9 kB] Get:154 http://deb.debian.org/debian unstable/main amd64 libdrm-intel1 amd64 2.4.125-2 [64.1 kB] Get:155 http://deb.debian.org/debian unstable/main amd64 libedit2 amd64 3.1-20250104-1 [93.8 kB] Get:156 http://deb.debian.org/debian unstable/main amd64 libencode-locale-perl all 1.05-3 [12.9 kB] Get:157 http://deb.debian.org/debian unstable/main amd64 libfile-which-perl all 1.27-2 [15.1 kB] Get:158 http://deb.debian.org/debian unstable/main amd64 libfile-homedir-perl all 1.006-2 [42.4 kB] Get:159 http://deb.debian.org/debian unstable/main amd64 libtimedate-perl all 2.3300-2 [39.3 kB] Get:160 http://deb.debian.org/debian unstable/main amd64 libhttp-date-perl all 6.06-1 [10.7 kB] Get:161 http://deb.debian.org/debian unstable/main amd64 libfile-listing-perl all 6.16-1 [12.4 kB] Get:162 http://deb.debian.org/debian unstable/main amd64 libio-string-perl all 1.08-4 [12.1 kB] Get:163 http://deb.debian.org/debian unstable/main amd64 libfont-ttf-perl all 1.06-2 [318 kB] Get:164 http://deb.debian.org/debian unstable/main amd64 libfontenc1 amd64 1:1.1.8-1+b2 [23.3 kB] Get:165 http://deb.debian.org/debian unstable/main amd64 libz3-4 amd64 4.13.3-1 [8560 kB] Get:166 http://deb.debian.org/debian unstable/main amd64 libllvm19 amd64 1:19.1.7-7 [25.9 MB] Get:167 http://deb.debian.org/debian unstable/main amd64 libsensors-config all 1:3.6.2-2 [16.2 kB] Get:168 http://deb.debian.org/debian unstable/main amd64 libsensors5 amd64 1:3.6.2-2 [37.5 kB] Get:169 http://deb.debian.org/debian unstable/main amd64 libxcb-dri3-0 amd64 1.17.0-2+b1 [107 kB] Get:170 http://deb.debian.org/debian unstable/main amd64 libxcb-present0 amd64 1.17.0-2+b1 [106 kB] Get:171 http://deb.debian.org/debian unstable/main amd64 libxcb-randr0 amd64 1.17.0-2+b1 [117 kB] Get:172 http://deb.debian.org/debian unstable/main amd64 libxcb-sync1 amd64 1.17.0-2+b1 [109 kB] Get:173 http://deb.debian.org/debian unstable/main amd64 libxcb-xfixes0 amd64 1.17.0-2+b1 [109 kB] Get:174 http://deb.debian.org/debian unstable/main amd64 libxshmfence1 amd64 1.3.3-1 [10.9 kB] Get:175 http://deb.debian.org/debian unstable/main amd64 mesa-libgallium amd64 25.2.4-1 [10.3 MB] Get:176 http://deb.debian.org/debian unstable/main amd64 libgbm1 amd64 25.2.4-1 [45.9 kB] Get:177 http://deb.debian.org/debian unstable/main amd64 libglvnd0 amd64 1.7.0-1+b2 [52.0 kB] Get:178 http://deb.debian.org/debian unstable/main amd64 libxcb-glx0 amd64 1.17.0-2+b1 [122 kB] Get:179 http://deb.debian.org/debian unstable/main amd64 libxxf86vm1 amd64 1:1.1.4-1+b4 [19.3 kB] Get:180 http://deb.debian.org/debian unstable/main amd64 libvulkan1 amd64 1.4.321.0-1 [133 kB] Get:181 http://deb.debian.org/debian unstable/main amd64 libgl1-mesa-dri amd64 25.2.4-1 [47.6 kB] Get:182 http://deb.debian.org/debian unstable/main amd64 libglx-mesa0 amd64 25.2.4-1 [116 kB] Get:183 http://deb.debian.org/debian unstable/main amd64 libglx0 amd64 1.7.0-1+b2 [34.9 kB] Get:184 http://deb.debian.org/debian unstable/main amd64 libgl1 amd64 1.7.0-1+b2 [89.5 kB] Get:185 http://deb.debian.org/debian unstable/main amd64 libhtml-tagset-perl all 3.24-1 [14.7 kB] Get:186 http://deb.debian.org/debian unstable/main amd64 liburi-perl all 5.34-1 [111 kB] Get:187 http://deb.debian.org/debian unstable/main amd64 libhtml-tree-perl all 5.07-3 [211 kB] Get:188 http://deb.debian.org/debian unstable/main amd64 libio-html-perl all 1.004-3 [16.2 kB] Get:189 http://deb.debian.org/debian unstable/main amd64 liblwp-mediatypes-perl all 6.04-2 [20.2 kB] Get:190 http://deb.debian.org/debian unstable/main amd64 libhttp-message-perl all 7.00-2 [79.8 kB] Get:191 http://deb.debian.org/debian unstable/main amd64 libhttp-cookies-perl all 6.11-1 [19.1 kB] Get:192 http://deb.debian.org/debian unstable/main amd64 libhttp-daemon-perl all 6.16-1 [23.5 kB] Get:193 http://deb.debian.org/debian unstable/main amd64 libhttp-negotiate-perl all 6.01-2 [13.1 kB] Get:194 http://deb.debian.org/debian unstable/main amd64 x11-common all 1:7.7+25 [217 kB] Get:195 http://deb.debian.org/debian unstable/main amd64 libice6 amd64 2:1.1.1-1 [65.4 kB] Get:196 http://deb.debian.org/debian unstable/main amd64 perl-openssl-defaults amd64 7+b2 [6724 B] Get:197 http://deb.debian.org/debian unstable/main amd64 libio-socket-ssl-perl all 2.095-1 [226 kB] Get:198 http://deb.debian.org/debian unstable/main amd64 libjson-perl all 4.10000-1 [87.5 kB] Get:199 http://deb.debian.org/debian unstable/main amd64 libnet-http-perl all 6.23-1 [23.9 kB] Get:200 http://deb.debian.org/debian unstable/main amd64 libtry-tiny-perl all 0.32-1 [22.9 kB] Get:201 http://deb.debian.org/debian unstable/main amd64 libwww-robotrules-perl all 6.02-1 [12.9 kB] Get:202 http://deb.debian.org/debian unstable/main amd64 libwww-perl all 6.80-1 [184 kB] Get:203 http://deb.debian.org/debian unstable/main amd64 liblwp-protocol-https-perl all 6.14-1 [10.8 kB] Get:204 http://deb.debian.org/debian unstable/main amd64 libpdf-api2-perl all 2.048-1 [1342 kB] Get:205 http://deb.debian.org/debian unstable/main amd64 libsm6 amd64 2:1.2.6-1 [37.3 kB] Get:206 http://deb.debian.org/debian unstable/main amd64 libunwind8 amd64 1.8.1-0.1 [56.3 kB] Get:207 http://deb.debian.org/debian unstable/main amd64 libxt6t64 amd64 1:1.2.1-1.3 [208 kB] Get:208 http://deb.debian.org/debian unstable/main amd64 libxmu6 amd64 2:1.1.3-3+b4 [59.0 kB] Get:209 http://deb.debian.org/debian unstable/main amd64 libxpm4 amd64 1:3.5.17-1+b3 [56.2 kB] Get:210 http://deb.debian.org/debian unstable/main amd64 libxaw7 amd64 2:1.0.16-1 [212 kB] Get:211 http://deb.debian.org/debian unstable/main amd64 libxfont2 amd64 1:2.0.6-1+b3 [132 kB] Get:212 http://deb.debian.org/debian unstable/main amd64 libxkbfile1 amd64 1:1.1.0-1+b4 [76.5 kB] Get:213 http://deb.debian.org/debian unstable/main amd64 libxmuu1 amd64 2:1.1.3-3+b4 [21.9 kB] Get:214 http://deb.debian.org/debian unstable/main amd64 x11-xkb-utils amd64 7.7+9 [159 kB] Get:215 http://deb.debian.org/debian unstable/main amd64 xauth amd64 1:1.1.2-1.1 [35.9 kB] Get:216 http://deb.debian.org/debian unstable/main amd64 xserver-common all 2:21.1.18-2 [2417 kB] Get:217 http://deb.debian.org/debian unstable/main amd64 xvfb amd64 2:21.1.18-2 [3204 kB] Preconfiguring packages ... Fetched 174 MB in 5s (38.5 MB/s) Selecting previously unselected package mount. (Reading database ... 23301 files and directories currently installed.) Preparing to unpack .../mount_2.41.2-3_amd64.deb ... Unpacking mount (2.41.2-3) ... Selecting previously unselected package libsystemd-shared:amd64. Preparing to unpack .../libsystemd-shared_258-1_amd64.deb ... Unpacking libsystemd-shared:amd64 (258-1) ... Setting up libsystemd-shared:amd64 (258-1) ... Selecting previously unselected package systemd. (Reading database ... 23336 files and directories currently installed.) Preparing to unpack .../systemd_258-1_amd64.deb ... Unpacking systemd (258-1) ... Setting up mount (2.41.2-3) ... Setting up systemd (258-1) ... Created symlink '/etc/systemd/system/getty.target.wants/getty@tty1.service' → '/usr/lib/systemd/system/getty@.service'. Created symlink '/etc/systemd/system/multi-user.target.wants/remote-fs.target' → '/usr/lib/systemd/system/remote-fs.target'. Created symlink '/etc/systemd/system/sysinit.target.wants/systemd-pstore.service' → '/usr/lib/systemd/system/systemd-pstore.service'. Initializing machine ID from random generator. Selecting previously unselected package systemd-sysv. (Reading database ... 24333 files and directories currently installed.) Preparing to unpack .../000-systemd-sysv_258-1_amd64.deb ... Unpacking systemd-sysv (258-1) ... Selecting previously unselected package libdbus-1-3:amd64. Preparing to unpack .../001-libdbus-1-3_1.16.2-2_amd64.deb ... Unpacking libdbus-1-3:amd64 (1.16.2-2) ... Selecting previously unselected package dbus-bin. Preparing to unpack .../002-dbus-bin_1.16.2-2_amd64.deb ... Unpacking dbus-bin (1.16.2-2) ... Selecting previously unselected package dbus-session-bus-common. Preparing to unpack .../003-dbus-session-bus-common_1.16.2-2_all.deb ... Unpacking dbus-session-bus-common (1.16.2-2) ... Selecting previously unselected package libapparmor1:amd64. Preparing to unpack .../004-libapparmor1_4.1.0-1_amd64.deb ... Unpacking libapparmor1:amd64 (4.1.0-1) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../005-libexpat1_2.7.3-1_amd64.deb ... Unpacking libexpat1:amd64 (2.7.3-1) ... Selecting previously unselected package dbus-daemon. Preparing to unpack .../006-dbus-daemon_1.16.2-2_amd64.deb ... Unpacking dbus-daemon (1.16.2-2) ... Selecting previously unselected package dbus-system-bus-common. Preparing to unpack .../007-dbus-system-bus-common_1.16.2-2_all.deb ... Unpacking dbus-system-bus-common (1.16.2-2) ... Selecting previously unselected package dbus. Preparing to unpack .../008-dbus_1.16.2-2_amd64.deb ... Unpacking dbus (1.16.2-2) ... Selecting previously unselected package netbase. Preparing to unpack .../009-netbase_6.5_all.deb ... Unpacking netbase (6.5) ... Selecting previously unselected package libproc2-0:amd64. Preparing to unpack .../010-libproc2-0_2%3a4.0.4-9_amd64.deb ... Unpacking libproc2-0:amd64 (2:4.0.4-9) ... Selecting previously unselected package procps. Preparing to unpack .../011-procps_2%3a4.0.4-9_amd64.deb ... Unpacking procps (2:4.0.4-9) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../012-sensible-utils_0.0.26_all.deb ... Unpacking sensible-utils (0.0.26) ... Selecting previously unselected package openssl. Preparing to unpack .../013-openssl_3.5.4-1_amd64.deb ... Unpacking openssl (3.5.4-1) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../014-ca-certificates_20250419_all.deb ... Unpacking ca-certificates (20250419) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../015-libmagic-mgc_1%3a5.46-5_amd64.deb ... Unpacking libmagic-mgc (1:5.46-5) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../016-libmagic1t64_1%3a5.46-5_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.46-5) ... Selecting previously unselected package file. Preparing to unpack .../017-file_1%3a5.46-5_amd64.deb ... Unpacking file (1:5.46-5) ... Selecting previously unselected package gettext-base. Preparing to unpack .../018-gettext-base_0.23.1-2+b1_amd64.deb ... Unpacking gettext-base (0.23.1-2+b1) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../019-libuchardet0_0.0.8-2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-2) ... Selecting previously unselected package groff-base. Preparing to unpack .../020-groff-base_1.23.0-9_amd64.deb ... Unpacking groff-base (1.23.0-9) ... Selecting previously unselected package libpam-systemd:amd64. Preparing to unpack .../021-libpam-systemd_258-1_amd64.deb ... Unpacking libpam-systemd:amd64 (258-1) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../022-bsdextrautils_2.41.2-3_amd64.deb ... Unpacking bsdextrautils (2.41.2-3) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../023-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../024-man-db_2.13.1-1_amd64.deb ... Unpacking man-db (2.13.1-1) ... Selecting previously unselected package libgdk-pixbuf2.0-common. Preparing to unpack .../025-libgdk-pixbuf2.0-common_2.44.3+dfsg-3_all.deb ... Unpacking libgdk-pixbuf2.0-common (2.44.3+dfsg-3) ... Selecting previously unselected package libglib2.0-0t64:amd64. Preparing to unpack .../026-libglib2.0-0t64_2.84.4-3_amd64.deb ... Unpacking libglib2.0-0t64:amd64 (2.84.4-3) ... Selecting previously unselected package libxml2-16:amd64. Preparing to unpack .../027-libxml2-16_2.14.5+dfsg-0.2_amd64.deb ... Unpacking libxml2-16:amd64 (2.14.5+dfsg-0.2) ... Selecting previously unselected package shared-mime-info. Preparing to unpack .../028-shared-mime-info_2.4-5+b3_amd64.deb ... Unpacking shared-mime-info (2.4-5+b3) ... Selecting previously unselected package libjpeg62-turbo:amd64. Preparing to unpack .../029-libjpeg62-turbo_1%3a2.1.5-4_amd64.deb ... Unpacking libjpeg62-turbo:amd64 (1:2.1.5-4) ... Selecting previously unselected package libpng16-16t64:amd64. Preparing to unpack .../030-libpng16-16t64_1.6.50-1_amd64.deb ... Unpacking libpng16-16t64:amd64 (1.6.50-1) ... Selecting previously unselected package libdeflate0:amd64. Preparing to unpack .../031-libdeflate0_1.23-2_amd64.deb ... Unpacking libdeflate0:amd64 (1.23-2) ... Selecting previously unselected package libjbig0:amd64. Preparing to unpack .../032-libjbig0_2.1-6.1+b2_amd64.deb ... Unpacking libjbig0:amd64 (2.1-6.1+b2) ... Selecting previously unselected package liblerc4:amd64. Preparing to unpack .../033-liblerc4_4.0.0+ds-5_amd64.deb ... Unpacking liblerc4:amd64 (4.0.0+ds-5) ... Selecting previously unselected package libsharpyuv0:amd64. Preparing to unpack .../034-libsharpyuv0_1.5.0-0.1_amd64.deb ... Unpacking libsharpyuv0:amd64 (1.5.0-0.1) ... Selecting previously unselected package libwebp7:amd64. Preparing to unpack .../035-libwebp7_1.5.0-0.1_amd64.deb ... Unpacking libwebp7:amd64 (1.5.0-0.1) ... Selecting previously unselected package libtiff6:amd64. Preparing to unpack .../036-libtiff6_4.7.1-1_amd64.deb ... Unpacking libtiff6:amd64 (4.7.1-1) ... Selecting previously unselected package libgdk-pixbuf-2.0-0:amd64. Preparing to unpack .../037-libgdk-pixbuf-2.0-0_2.44.3+dfsg-3_amd64.deb ... Unpacking libgdk-pixbuf-2.0-0:amd64 (2.44.3+dfsg-3) ... Selecting previously unselected package gtk-update-icon-cache. Preparing to unpack .../038-gtk-update-icon-cache_4.20.1+ds-2_amd64.deb ... No diversion 'diversion of /usr/sbin/update-icon-caches to /usr/sbin/update-icon-caches.gtk2 by libgtk-3-bin', none removed. No diversion 'diversion of /usr/share/man/man8/update-icon-caches.8.gz to /usr/share/man/man8/update-icon-caches.gtk2.8.gz by libgtk-3-bin', none removed. Unpacking gtk-update-icon-cache (4.20.1+ds-2) ... Selecting previously unselected package hicolor-icon-theme. Preparing to unpack .../039-hicolor-icon-theme_0.18-2_all.deb ... Unpacking hicolor-icon-theme (0.18-2) ... Selecting previously unselected package adwaita-icon-theme. Preparing to unpack .../040-adwaita-icon-theme_49.0-1_all.deb ... Unpacking adwaita-icon-theme (49.0-1) ... Selecting previously unselected package at-spi2-common. Preparing to unpack .../041-at-spi2-common_2.58.0-1_all.deb ... Unpacking at-spi2-common (2.58.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../042-m4_1.4.20-1_amd64.deb ... Unpacking m4 (1.4.20-1) ... Selecting previously unselected package autoconf. Preparing to unpack .../043-autoconf_2.72-3.1_all.deb ... Unpacking autoconf (2.72-3.1) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../044-autotools-dev_20240727.1_all.deb ... Unpacking autotools-dev (20240727.1) ... Selecting previously unselected package automake. Preparing to unpack .../045-automake_1%3a1.17-4_all.deb ... Unpacking automake (1:1.17-4) ... Selecting previously unselected package autopoint. Preparing to unpack .../046-autopoint_0.23.1-2_all.deb ... Unpacking autopoint (0.23.1-2) ... Selecting previously unselected package dbus-user-session. Preparing to unpack .../047-dbus-user-session_1.16.2-2_amd64.deb ... Unpacking dbus-user-session (1.16.2-2) ... Selecting previously unselected package libdconf1:amd64. Preparing to unpack .../048-libdconf1_0.49.0-1_amd64.deb ... Unpacking libdconf1:amd64 (0.49.0-1) ... Selecting previously unselected package dconf-service. Preparing to unpack .../049-dconf-service_0.49.0-1_amd64.deb ... Unpacking dconf-service (0.49.0-1) ... Selecting previously unselected package dconf-gsettings-backend:amd64. Preparing to unpack .../050-dconf-gsettings-backend_0.49.0-1_amd64.deb ... Unpacking dconf-gsettings-backend:amd64 (0.49.0-1) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../051-libdebhelper-perl_13.28_all.deb ... Unpacking libdebhelper-perl (13.28) ... Selecting previously unselected package libtool. Preparing to unpack .../052-libtool_2.5.4-5_all.deb ... Unpacking libtool (2.5.4-5) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../053-dh-autoreconf_21_all.deb ... Unpacking dh-autoreconf (21) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../054-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../055-libfile-stripnondeterminism-perl_1.15.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.15.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../056-dh-strip-nondeterminism_1.15.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.15.0-1) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../057-libelf1t64_0.193-3_amd64.deb ... Unpacking libelf1t64:amd64 (0.193-3) ... Selecting previously unselected package dwz. Preparing to unpack .../058-dwz_0.16-2_amd64.deb ... Unpacking dwz (0.16-2) ... Selecting previously unselected package gettext. Preparing to unpack .../059-gettext_0.23.1-2+b1_amd64.deb ... Unpacking gettext (0.23.1-2+b1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../060-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../061-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../062-debhelper_13.28_all.deb ... Unpacking debhelper (13.28) ... Selecting previously unselected package libasound2-data. Preparing to unpack .../063-libasound2-data_1.2.14-2_all.deb ... Unpacking libasound2-data (1.2.14-2) ... Selecting previously unselected package libasound2t64:amd64. Preparing to unpack .../064-libasound2t64_1.2.14-2_amd64.deb ... Unpacking libasound2t64:amd64 (1.2.14-2) ... Selecting previously unselected package libatk1.0-0t64:amd64. Preparing to unpack .../065-libatk1.0-0t64_2.58.0-1_amd64.deb ... Unpacking libatk1.0-0t64:amd64 (2.58.0-1) ... Selecting previously unselected package libbrotli1:amd64. Preparing to unpack .../066-libbrotli1_1.1.0-2+b7_amd64.deb ... Unpacking libbrotli1:amd64 (1.1.0-2+b7) ... Selecting previously unselected package libfreetype6:amd64. Preparing to unpack .../067-libfreetype6_2.13.3+dfsg-1_amd64.deb ... Unpacking libfreetype6:amd64 (2.13.3+dfsg-1) ... Selecting previously unselected package fonts-dejavu-mono. Preparing to unpack .../068-fonts-dejavu-mono_2.37-8_all.deb ... Unpacking fonts-dejavu-mono (2.37-8) ... Selecting previously unselected package fonts-dejavu-core. Preparing to unpack .../069-fonts-dejavu-core_2.37-8_all.deb ... Unpacking fonts-dejavu-core (2.37-8) ... Selecting previously unselected package fontconfig-config. Preparing to unpack .../070-fontconfig-config_2.15.0-2.4_amd64.deb ... Unpacking fontconfig-config (2.15.0-2.4) ... Selecting previously unselected package libfontconfig1:amd64. Preparing to unpack .../071-libfontconfig1_2.15.0-2.4_amd64.deb ... Unpacking libfontconfig1:amd64 (2.15.0-2.4) ... Selecting previously unselected package libpixman-1-0:amd64. Preparing to unpack .../072-libpixman-1-0_0.46.4-1_amd64.deb ... Unpacking libpixman-1-0:amd64 (0.46.4-1) ... Selecting previously unselected package libxau6:amd64. Preparing to unpack .../073-libxau6_1%3a1.0.11-1_amd64.deb ... Unpacking libxau6:amd64 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp6:amd64. Preparing to unpack .../074-libxdmcp6_1%3a1.1.5-1_amd64.deb ... Unpacking libxdmcp6:amd64 (1:1.1.5-1) ... Selecting previously unselected package libxcb1:amd64. Preparing to unpack .../075-libxcb1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libx11-data. Preparing to unpack .../076-libx11-data_2%3a1.8.12-1_all.deb ... Unpacking libx11-data (2:1.8.12-1) ... Selecting previously unselected package libx11-6:amd64. Preparing to unpack .../077-libx11-6_2%3a1.8.12-1_amd64.deb ... Unpacking libx11-6:amd64 (2:1.8.12-1) ... Selecting previously unselected package libxcb-render0:amd64. Preparing to unpack .../078-libxcb-render0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-render0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-shm0:amd64. Preparing to unpack .../079-libxcb-shm0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-shm0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxext6:amd64. Preparing to unpack .../080-libxext6_2%3a1.3.4-1+b3_amd64.deb ... Unpacking libxext6:amd64 (2:1.3.4-1+b3) ... Selecting previously unselected package libxrender1:amd64. Preparing to unpack .../081-libxrender1_1%3a0.9.12-1_amd64.deb ... Unpacking libxrender1:amd64 (1:0.9.12-1) ... Selecting previously unselected package libcairo2:amd64. Preparing to unpack .../082-libcairo2_1.18.4-1+b1_amd64.deb ... Unpacking libcairo2:amd64 (1.18.4-1+b1) ... Selecting previously unselected package libcairo-gobject2:amd64. Preparing to unpack .../083-libcairo-gobject2_1.18.4-1+b1_amd64.deb ... Unpacking libcairo-gobject2:amd64 (1.18.4-1+b1) ... Selecting previously unselected package libevent-2.1-7t64:amd64. Preparing to unpack .../084-libevent-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libxi6:amd64. Preparing to unpack .../085-libxi6_2%3a1.8.2-1_amd64.deb ... Unpacking libxi6:amd64 (2:1.8.2-1) ... Selecting previously unselected package libatspi2.0-0t64:amd64. Preparing to unpack .../086-libatspi2.0-0t64_2.58.0-1_amd64.deb ... Unpacking libatspi2.0-0t64:amd64 (2.58.0-1) ... Selecting previously unselected package libatk-bridge2.0-0t64:amd64. Preparing to unpack .../087-libatk-bridge2.0-0t64_2.58.0-1_amd64.deb ... Unpacking libatk-bridge2.0-0t64:amd64 (2.58.0-1) ... Selecting previously unselected package libcloudproviders0:amd64. Preparing to unpack .../088-libcloudproviders0_0.3.6-3_amd64.deb ... Unpacking libcloudproviders0:amd64 (0.3.6-3) ... Selecting previously unselected package liblcms2-2:amd64. Preparing to unpack .../089-liblcms2-2_2.16-2_amd64.deb ... Unpacking liblcms2-2:amd64 (2.16-2) ... Selecting previously unselected package libcolord2:amd64. Preparing to unpack .../090-libcolord2_1.4.8-1_amd64.deb ... Unpacking libcolord2:amd64 (1.4.8-1) ... Selecting previously unselected package libavahi-common-data:amd64. Preparing to unpack .../091-libavahi-common-data_0.8-17_amd64.deb ... Unpacking libavahi-common-data:amd64 (0.8-17) ... Selecting previously unselected package libavahi-common3:amd64. Preparing to unpack .../092-libavahi-common3_0.8-17_amd64.deb ... Unpacking libavahi-common3:amd64 (0.8-17) ... Selecting previously unselected package libavahi-client3:amd64. Preparing to unpack .../093-libavahi-client3_0.8-17_amd64.deb ... Unpacking libavahi-client3:amd64 (0.8-17) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../094-libkrb5support0_1.21.3-5_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-5) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../095-libcom-err2_1.47.2-3+b3_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.2-3+b3) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../096-libk5crypto3_1.21.3-5_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-5) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../097-libkeyutils1_1.6.3-6_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-6) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../098-libkrb5-3_1.21.3-5_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-5) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../099-libgssapi-krb5-2_1.21.3-5_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-5) ... Selecting previously unselected package libcups2t64:amd64. Preparing to unpack .../100-libcups2t64_2.4.10-4_amd64.deb ... Unpacking libcups2t64:amd64 (2.4.10-4) ... Selecting previously unselected package libepoxy0:amd64. Preparing to unpack .../101-libepoxy0_1.5.10-2_amd64.deb ... Unpacking libepoxy0:amd64 (1.5.10-2) ... Selecting previously unselected package libfribidi0:amd64. Preparing to unpack .../102-libfribidi0_1.0.16-3_amd64.deb ... Unpacking libfribidi0:amd64 (1.0.16-3) ... Selecting previously unselected package libgraphite2-3:amd64. Preparing to unpack .../103-libgraphite2-3_1.3.14-9_amd64.deb ... Unpacking libgraphite2-3:amd64 (1.3.14-9) ... Selecting previously unselected package libharfbuzz0b:amd64. Preparing to unpack .../104-libharfbuzz0b_12.1.0-1_amd64.deb ... Unpacking libharfbuzz0b:amd64 (12.1.0-1) ... Selecting previously unselected package fontconfig. Preparing to unpack .../105-fontconfig_2.15.0-2.4_amd64.deb ... Unpacking fontconfig (2.15.0-2.4) ... Selecting previously unselected package libthai-data. Preparing to unpack .../106-libthai-data_0.1.29-2_all.deb ... Unpacking libthai-data (0.1.29-2) ... Selecting previously unselected package libdatrie1:amd64. Preparing to unpack .../107-libdatrie1_0.2.13-4_amd64.deb ... Unpacking libdatrie1:amd64 (0.2.13-4) ... Selecting previously unselected package libthai0:amd64. Preparing to unpack .../108-libthai0_0.1.29-2+b1_amd64.deb ... Unpacking libthai0:amd64 (0.1.29-2+b1) ... Selecting previously unselected package libpango-1.0-0:amd64. Preparing to unpack .../109-libpango-1.0-0_1.56.3-2_amd64.deb ... Unpacking libpango-1.0-0:amd64 (1.56.3-2) ... Selecting previously unselected package libpangoft2-1.0-0:amd64. Preparing to unpack .../110-libpangoft2-1.0-0_1.56.3-2_amd64.deb ... Unpacking libpangoft2-1.0-0:amd64 (1.56.3-2) ... Selecting previously unselected package libpangocairo-1.0-0:amd64. Preparing to unpack .../111-libpangocairo-1.0-0_1.56.3-2_amd64.deb ... Unpacking libpangocairo-1.0-0:amd64 (1.56.3-2) ... Selecting previously unselected package libwayland-client0:amd64. Preparing to unpack .../112-libwayland-client0_1.24.0-2+b1_amd64.deb ... Unpacking libwayland-client0:amd64 (1.24.0-2+b1) ... Selecting previously unselected package libwayland-cursor0:amd64. Preparing to unpack .../113-libwayland-cursor0_1.24.0-2+b1_amd64.deb ... Unpacking libwayland-cursor0:amd64 (1.24.0-2+b1) ... Selecting previously unselected package libwayland-egl1:amd64. Preparing to unpack .../114-libwayland-egl1_1.24.0-2+b1_amd64.deb ... Unpacking libwayland-egl1:amd64 (1.24.0-2+b1) ... Selecting previously unselected package libxcomposite1:amd64. Preparing to unpack .../115-libxcomposite1_1%3a0.4.6-1_amd64.deb ... Unpacking libxcomposite1:amd64 (1:0.4.6-1) ... Selecting previously unselected package libxfixes3:amd64. Preparing to unpack .../116-libxfixes3_1%3a6.0.0-2+b4_amd64.deb ... Unpacking libxfixes3:amd64 (1:6.0.0-2+b4) ... Selecting previously unselected package libxcursor1:amd64. Preparing to unpack .../117-libxcursor1_1%3a1.2.3-1_amd64.deb ... Unpacking libxcursor1:amd64 (1:1.2.3-1) ... Selecting previously unselected package libxdamage1:amd64. Preparing to unpack .../118-libxdamage1_1%3a1.1.6-1+b2_amd64.deb ... Unpacking libxdamage1:amd64 (1:1.1.6-1+b2) ... Selecting previously unselected package libxinerama1:amd64. Preparing to unpack .../119-libxinerama1_2%3a1.1.4-3+b4_amd64.deb ... Unpacking libxinerama1:amd64 (2:1.1.4-3+b4) ... Selecting previously unselected package xkb-data. Preparing to unpack .../120-xkb-data_2.42-1_all.deb ... Unpacking xkb-data (2.42-1) ... Selecting previously unselected package libxkbcommon0:amd64. Preparing to unpack .../121-libxkbcommon0_1.7.0-2.1_amd64.deb ... Unpacking libxkbcommon0:amd64 (1.7.0-2.1) ... Selecting previously unselected package libxrandr2:amd64. Preparing to unpack .../122-libxrandr2_2%3a1.5.4-1+b3_amd64.deb ... Unpacking libxrandr2:amd64 (2:1.5.4-1+b3) ... Selecting previously unselected package libgtk-3-common. Preparing to unpack .../123-libgtk-3-common_3.24.50-2_all.deb ... Unpacking libgtk-3-common (3.24.50-2) ... Selecting previously unselected package libgtk-3-0t64:amd64. Preparing to unpack .../124-libgtk-3-0t64_3.24.50-2_amd64.deb ... Unpacking libgtk-3-0t64:amd64 (3.24.50-2) ... Selecting previously unselected package libnspr4:amd64. Preparing to unpack .../125-libnspr4_2%3a4.37-1_amd64.deb ... Unpacking libnspr4:amd64 (2:4.37-1) ... Selecting previously unselected package libnss3:amd64. Preparing to unpack .../126-libnss3_2%3a3.116-1_amd64.deb ... Unpacking libnss3:amd64 (2:3.116-1) ... Selecting previously unselected package libvpx11:amd64. Preparing to unpack .../127-libvpx11_1.15.2-2_amd64.deb ... Unpacking libvpx11:amd64 (1.15.2-2) ... Selecting previously unselected package libx11-xcb1:amd64. Preparing to unpack .../128-libx11-xcb1_2%3a1.8.12-1_amd64.deb ... Unpacking libx11-xcb1:amd64 (2:1.8.12-1) ... Selecting previously unselected package firefox-esr. Preparing to unpack .../129-firefox-esr_140.3.1esr-2_amd64.deb ... Adding 'diversion of /usr/bin/firefox to /usr/bin/firefox.real by firefox-esr' Unpacking firefox-esr (140.3.1esr-2) ... Selecting previously unselected package libclone-perl:amd64. Preparing to unpack .../130-libclone-perl_0.47-1+b2_amd64.deb ... Unpacking libclone-perl:amd64 (0.47-1+b2) ... Selecting previously unselected package libperlio-utf8-strict-perl. Preparing to unpack .../131-libperlio-utf8-strict-perl_0.010-1+b4_amd64.deb ... Unpacking libperlio-utf8-strict-perl (0.010-1+b4) ... Selecting previously unselected package libparams-util-perl. Preparing to unpack .../132-libparams-util-perl_1.102-3+b2_amd64.deb ... Unpacking libparams-util-perl (1.102-3+b2) ... Selecting previously unselected package libsub-install-perl. Preparing to unpack .../133-libsub-install-perl_0.929-1_all.deb ... Unpacking libsub-install-perl (0.929-1) ... Selecting previously unselected package libdata-optlist-perl. Preparing to unpack .../134-libdata-optlist-perl_0.114-1_all.deb ... Unpacking libdata-optlist-perl (0.114-1) ... Selecting previously unselected package libsub-exporter-perl. Preparing to unpack .../135-libsub-exporter-perl_0.990-1_all.deb ... Unpacking libsub-exporter-perl (0.990-1) ... Selecting previously unselected package libmixin-linewise-perl. Preparing to unpack .../136-libmixin-linewise-perl_0.111-1_all.deb ... Unpacking libmixin-linewise-perl (0.111-1) ... Selecting previously unselected package libconfig-ini-perl. Preparing to unpack .../137-libconfig-ini-perl_1%3a0.029-1_all.deb ... Unpacking libconfig-ini-perl (1:0.029-1) ... Selecting previously unselected package libcrypt-passwdmd5-perl. Preparing to unpack .../138-libcrypt-passwdmd5-perl_1.42-2_all.deb ... Unpacking libcrypt-passwdmd5-perl (1.42-2) ... Selecting previously unselected package libcrypt-urandom-perl. Preparing to unpack .../139-libcrypt-urandom-perl_0.54-1+b1_amd64.deb ... Unpacking libcrypt-urandom-perl (0.54-1+b1) ... Selecting previously unselected package libdrm-common. Preparing to unpack .../140-libdrm-common_2.4.125-2_all.deb ... Unpacking libdrm-common (2.4.125-2) ... Selecting previously unselected package libdrm2:amd64. Preparing to unpack .../141-libdrm2_2.4.125-2_amd64.deb ... Unpacking libdrm2:amd64 (2.4.125-2) ... Selecting previously unselected package libdrm-amdgpu1:amd64. Preparing to unpack .../142-libdrm-amdgpu1_2.4.125-2_amd64.deb ... Unpacking libdrm-amdgpu1:amd64 (2.4.125-2) ... Selecting previously unselected package libpciaccess0:amd64. Preparing to unpack .../143-libpciaccess0_0.17-3+b3_amd64.deb ... Unpacking libpciaccess0:amd64 (0.17-3+b3) ... Selecting previously unselected package libdrm-intel1:amd64. Preparing to unpack .../144-libdrm-intel1_2.4.125-2_amd64.deb ... Unpacking libdrm-intel1:amd64 (2.4.125-2) ... Selecting previously unselected package libedit2:amd64. Preparing to unpack .../145-libedit2_3.1-20250104-1_amd64.deb ... Unpacking libedit2:amd64 (3.1-20250104-1) ... Selecting previously unselected package libencode-locale-perl. Preparing to unpack .../146-libencode-locale-perl_1.05-3_all.deb ... Unpacking libencode-locale-perl (1.05-3) ... Selecting previously unselected package libfile-which-perl. Preparing to unpack .../147-libfile-which-perl_1.27-2_all.deb ... Unpacking libfile-which-perl (1.27-2) ... Selecting previously unselected package libfile-homedir-perl. Preparing to unpack .../148-libfile-homedir-perl_1.006-2_all.deb ... Unpacking libfile-homedir-perl (1.006-2) ... Selecting previously unselected package libtimedate-perl. Preparing to unpack .../149-libtimedate-perl_2.3300-2_all.deb ... Unpacking libtimedate-perl (2.3300-2) ... Selecting previously unselected package libhttp-date-perl. Preparing to unpack .../150-libhttp-date-perl_6.06-1_all.deb ... Unpacking libhttp-date-perl (6.06-1) ... Selecting previously unselected package libfile-listing-perl. Preparing to unpack .../151-libfile-listing-perl_6.16-1_all.deb ... Unpacking libfile-listing-perl (6.16-1) ... Selecting previously unselected package libio-string-perl. Preparing to unpack .../152-libio-string-perl_1.08-4_all.deb ... Unpacking libio-string-perl (1.08-4) ... Selecting previously unselected package libfont-ttf-perl. Preparing to unpack .../153-libfont-ttf-perl_1.06-2_all.deb ... Unpacking libfont-ttf-perl (1.06-2) ... Selecting previously unselected package libfontenc1:amd64. Preparing to unpack .../154-libfontenc1_1%3a1.1.8-1+b2_amd64.deb ... Unpacking libfontenc1:amd64 (1:1.1.8-1+b2) ... Selecting previously unselected package libz3-4:amd64. Preparing to unpack .../155-libz3-4_4.13.3-1_amd64.deb ... Unpacking libz3-4:amd64 (4.13.3-1) ... Selecting previously unselected package libllvm19:amd64. Preparing to unpack .../156-libllvm19_1%3a19.1.7-7_amd64.deb ... Unpacking libllvm19:amd64 (1:19.1.7-7) ... Selecting previously unselected package libsensors-config. Preparing to unpack .../157-libsensors-config_1%3a3.6.2-2_all.deb ... Unpacking libsensors-config (1:3.6.2-2) ... Selecting previously unselected package libsensors5:amd64. Preparing to unpack .../158-libsensors5_1%3a3.6.2-2_amd64.deb ... Unpacking libsensors5:amd64 (1:3.6.2-2) ... Selecting previously unselected package libxcb-dri3-0:amd64. Preparing to unpack .../159-libxcb-dri3-0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-dri3-0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-present0:amd64. Preparing to unpack .../160-libxcb-present0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-present0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-randr0:amd64. Preparing to unpack .../161-libxcb-randr0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-randr0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-sync1:amd64. Preparing to unpack .../162-libxcb-sync1_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-sync1:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxcb-xfixes0:amd64. Preparing to unpack .../163-libxcb-xfixes0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-xfixes0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxshmfence1:amd64. Preparing to unpack .../164-libxshmfence1_1.3.3-1_amd64.deb ... Unpacking libxshmfence1:amd64 (1.3.3-1) ... Selecting previously unselected package mesa-libgallium:amd64. Preparing to unpack .../165-mesa-libgallium_25.2.4-1_amd64.deb ... Unpacking mesa-libgallium:amd64 (25.2.4-1) ... Selecting previously unselected package libgbm1:amd64. Preparing to unpack .../166-libgbm1_25.2.4-1_amd64.deb ... Unpacking libgbm1:amd64 (25.2.4-1) ... Selecting previously unselected package libglvnd0:amd64. Preparing to unpack .../167-libglvnd0_1.7.0-1+b2_amd64.deb ... Unpacking libglvnd0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libxcb-glx0:amd64. Preparing to unpack .../168-libxcb-glx0_1.17.0-2+b1_amd64.deb ... Unpacking libxcb-glx0:amd64 (1.17.0-2+b1) ... Selecting previously unselected package libxxf86vm1:amd64. Preparing to unpack .../169-libxxf86vm1_1%3a1.1.4-1+b4_amd64.deb ... Unpacking libxxf86vm1:amd64 (1:1.1.4-1+b4) ... Selecting previously unselected package libvulkan1:amd64. Preparing to unpack .../170-libvulkan1_1.4.321.0-1_amd64.deb ... Unpacking libvulkan1:amd64 (1.4.321.0-1) ... Selecting previously unselected package libgl1-mesa-dri:amd64. Preparing to unpack .../171-libgl1-mesa-dri_25.2.4-1_amd64.deb ... Unpacking libgl1-mesa-dri:amd64 (25.2.4-1) ... Selecting previously unselected package libglx-mesa0:amd64. Preparing to unpack .../172-libglx-mesa0_25.2.4-1_amd64.deb ... Unpacking libglx-mesa0:amd64 (25.2.4-1) ... Selecting previously unselected package libglx0:amd64. Preparing to unpack .../173-libglx0_1.7.0-1+b2_amd64.deb ... Unpacking libglx0:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libgl1:amd64. Preparing to unpack .../174-libgl1_1.7.0-1+b2_amd64.deb ... Unpacking libgl1:amd64 (1.7.0-1+b2) ... Selecting previously unselected package libhtml-tagset-perl. Preparing to unpack .../175-libhtml-tagset-perl_3.24-1_all.deb ... Unpacking libhtml-tagset-perl (3.24-1) ... Selecting previously unselected package liburi-perl. Preparing to unpack .../176-liburi-perl_5.34-1_all.deb ... Unpacking liburi-perl (5.34-1) ... Selecting previously unselected package libhtml-parser-perl:amd64. Preparing to unpack .../177-libhtml-parser-perl_3.83-1+b3_amd64.deb ... Unpacking libhtml-parser-perl:amd64 (3.83-1+b3) ... Selecting previously unselected package libhtml-tree-perl. Preparing to unpack .../178-libhtml-tree-perl_5.07-3_all.deb ... Unpacking libhtml-tree-perl (5.07-3) ... Selecting previously unselected package libio-html-perl. Preparing to unpack .../179-libio-html-perl_1.004-3_all.deb ... Unpacking libio-html-perl (1.004-3) ... Selecting previously unselected package liblwp-mediatypes-perl. Preparing to unpack .../180-liblwp-mediatypes-perl_6.04-2_all.deb ... Unpacking liblwp-mediatypes-perl (6.04-2) ... Selecting previously unselected package libhttp-message-perl. Preparing to unpack .../181-libhttp-message-perl_7.00-2_all.deb ... Unpacking libhttp-message-perl (7.00-2) ... Selecting previously unselected package libhttp-cookies-perl. Preparing to unpack .../182-libhttp-cookies-perl_6.11-1_all.deb ... Unpacking libhttp-cookies-perl (6.11-1) ... Selecting previously unselected package libhttp-daemon-perl. Preparing to unpack .../183-libhttp-daemon-perl_6.16-1_all.deb ... Unpacking libhttp-daemon-perl (6.16-1) ... Selecting previously unselected package libhttp-negotiate-perl. Preparing to unpack .../184-libhttp-negotiate-perl_6.01-2_all.deb ... Unpacking libhttp-negotiate-perl (6.01-2) ... Selecting previously unselected package x11-common. Preparing to unpack .../185-x11-common_1%3a7.7+25_all.deb ... Unpacking x11-common (1:7.7+25) ... Selecting previously unselected package libice6:amd64. Preparing to unpack .../186-libice6_2%3a1.1.1-1_amd64.deb ... Unpacking libice6:amd64 (2:1.1.1-1) ... Selecting previously unselected package perl-openssl-defaults:amd64. Preparing to unpack .../187-perl-openssl-defaults_7+b2_amd64.deb ... Unpacking perl-openssl-defaults:amd64 (7+b2) ... Selecting previously unselected package libnet-ssleay-perl:amd64. Preparing to unpack .../188-libnet-ssleay-perl_1.94-3+b1_amd64.deb ... Unpacking libnet-ssleay-perl:amd64 (1.94-3+b1) ... Selecting previously unselected package libio-socket-ssl-perl. Preparing to unpack .../189-libio-socket-ssl-perl_2.095-1_all.deb ... Unpacking libio-socket-ssl-perl (2.095-1) ... Selecting previously unselected package libjson-perl. Preparing to unpack .../190-libjson-perl_4.10000-1_all.deb ... Unpacking libjson-perl (4.10000-1) ... Selecting previously unselected package libnet-http-perl. Preparing to unpack .../191-libnet-http-perl_6.23-1_all.deb ... Unpacking libnet-http-perl (6.23-1) ... Selecting previously unselected package libtry-tiny-perl. Preparing to unpack .../192-libtry-tiny-perl_0.32-1_all.deb ... Unpacking libtry-tiny-perl (0.32-1) ... Selecting previously unselected package libwww-robotrules-perl. Preparing to unpack .../193-libwww-robotrules-perl_6.02-1_all.deb ... Unpacking libwww-robotrules-perl (6.02-1) ... Selecting previously unselected package libwww-perl. Preparing to unpack .../194-libwww-perl_6.80-1_all.deb ... Unpacking libwww-perl (6.80-1) ... Selecting previously unselected package liblwp-protocol-https-perl. Preparing to unpack .../195-liblwp-protocol-https-perl_6.14-1_all.deb ... Unpacking liblwp-protocol-https-perl (6.14-1) ... Selecting previously unselected package libpdf-api2-perl. Preparing to unpack .../196-libpdf-api2-perl_2.048-1_all.deb ... Unpacking libpdf-api2-perl (2.048-1) ... Selecting previously unselected package libsm6:amd64. Preparing to unpack .../197-libsm6_2%3a1.2.6-1_amd64.deb ... Unpacking libsm6:amd64 (2:1.2.6-1) ... Selecting previously unselected package libterm-readkey-perl. Preparing to unpack .../198-libterm-readkey-perl_2.38-2+b5_amd64.deb ... Unpacking libterm-readkey-perl (2.38-2+b5) ... Selecting previously unselected package libtext-csv-xs-perl:amd64. Preparing to unpack .../199-libtext-csv-xs-perl_1.61-1+b1_amd64.deb ... Unpacking libtext-csv-xs-perl:amd64 (1.61-1+b1) ... Selecting previously unselected package libunwind8:amd64. Preparing to unpack .../200-libunwind8_1.8.1-0.1_amd64.deb ... Unpacking libunwind8:amd64 (1.8.1-0.1) ... Selecting previously unselected package libxt6t64:amd64. Preparing to unpack .../201-libxt6t64_1%3a1.2.1-1.3_amd64.deb ... Unpacking libxt6t64:amd64 (1:1.2.1-1.3) ... Selecting previously unselected package libxmu6:amd64. Preparing to unpack .../202-libxmu6_2%3a1.1.3-3+b4_amd64.deb ... Unpacking libxmu6:amd64 (2:1.1.3-3+b4) ... Selecting previously unselected package libxpm4:amd64. Preparing to unpack .../203-libxpm4_1%3a3.5.17-1+b3_amd64.deb ... Unpacking libxpm4:amd64 (1:3.5.17-1+b3) ... Selecting previously unselected package libxaw7:amd64. Preparing to unpack .../204-libxaw7_2%3a1.0.16-1_amd64.deb ... Unpacking libxaw7:amd64 (2:1.0.16-1) ... Selecting previously unselected package libxfont2:amd64. Preparing to unpack .../205-libxfont2_1%3a2.0.6-1+b3_amd64.deb ... Unpacking libxfont2:amd64 (1:2.0.6-1+b3) ... Selecting previously unselected package libxkbfile1:amd64. Preparing to unpack .../206-libxkbfile1_1%3a1.1.0-1+b4_amd64.deb ... Unpacking libxkbfile1:amd64 (1:1.1.0-1+b4) ... Selecting previously unselected package libxml-parser-perl. Preparing to unpack .../207-libxml-parser-perl_2.47-1+b4_amd64.deb ... Unpacking libxml-parser-perl (2.47-1+b4) ... Selecting previously unselected package libxmuu1:amd64. Preparing to unpack .../208-libxmuu1_2%3a1.1.3-3+b4_amd64.deb ... Unpacking libxmuu1:amd64 (2:1.1.3-3+b4) ... Selecting previously unselected package x11-xkb-utils. Preparing to unpack .../209-x11-xkb-utils_7.7+9_amd64.deb ... Unpacking x11-xkb-utils (7.7+9) ... Selecting previously unselected package xauth. Preparing to unpack .../210-xauth_1%3a1.1.2-1.1_amd64.deb ... Unpacking xauth (1:1.1.2-1.1) ... Selecting previously unselected package xserver-common. Preparing to unpack .../211-xserver-common_2%3a21.1.18-2_all.deb ... Unpacking xserver-common (2:21.1.18-2) ... Selecting previously unselected package xvfb. Preparing to unpack .../212-xvfb_2%3a21.1.18-2_amd64.deb ... Unpacking xvfb (2:21.1.18-2) ... Selecting previously unselected package sbuild-build-depends-main-dummy. Preparing to unpack .../213-sbuild-build-depends-main-dummy_0.invalid.0_amd64.deb ... Unpacking sbuild-build-depends-main-dummy (0.invalid.0) ... Setting up libexpat1:amd64 (2.7.3-1) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libgraphite2-3:amd64 (1.3.14-9) ... Setting up liblcms2-2:amd64 (2.16-2) ... Setting up libpixman-1-0:amd64 (0.46.4-1) ... Setting up libsharpyuv0:amd64 (1.5.0-0.1) ... Setting up libpciaccess0:amd64 (0.17-3+b3) ... Setting up libfile-which-perl (1.27-2) ... Setting up systemd-sysv (258-1) ... Setting up libxau6:amd64 (1:1.0.11-1) ... Setting up libxdmcp6:amd64 (1:1.1.5-1) ... Setting up libkeyutils1:amd64 (1.6.3-6) ... Setting up libapparmor1:amd64 (4.1.0-1) ... Setting up libxcb1:amd64 (1.17.0-2+b1) ... Setting up libxcb-xfixes0:amd64 (1.17.0-2+b1) ... Setting up liblerc4:amd64 (4.0.0+ds-5) ... Setting up bsdextrautils (2.41.2-3) ... Setting up hicolor-icon-theme (0.18-2) ... Setting up libdatrie1:amd64 (0.2.13-4) ... Setting up libmagic-mgc (1:5.46-5) ... Setting up libxcb-render0:amd64 (1.17.0-2+b1) ... Setting up libclone-perl:amd64 (0.47-1+b2) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libglvnd0:amd64 (1.7.0-1+b2) ... Setting up libxml2-16:amd64 (2.14.5+dfsg-0.2) ... Setting up libhtml-tagset-perl (3.24-1) ... Setting up libxcb-glx0:amd64 (1.17.0-2+b1) ... Setting up libdebhelper-perl (13.28) ... Setting up libbrotli1:amd64 (1.1.0-2+b7) ... Setting up libedit2:amd64 (3.1-20250104-1) ... Setting up liblwp-mediatypes-perl (6.04-2) ... Setting up libgdk-pixbuf2.0-common (2.44.3+dfsg-3) ... Setting up libmagic1t64:amd64 (1:5.46-5) ... Setting up libcrypt-urandom-perl (0.54-1+b1) ... Setting up libvpx11:amd64 (1.15.2-2) ... Setting up x11-common (1:7.7+25) ... invoke-rc.d: could not determine current runlevel Setting up libtry-tiny-perl (0.32-1) ... Setting up libsensors-config (1:3.6.2-2) ... Setting up libdeflate0:amd64 (1.23-2) ... Setting up perl-openssl-defaults:amd64 (7+b2) ... Setting up gettext-base (0.23.1-2+b1) ... Setting up m4 (1.4.20-1) ... Setting up libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up xkb-data (2.42-1) ... Setting up libencode-locale-perl (1.05-3) ... Setting up libtext-csv-xs-perl:amd64 (1.61-1+b1) ... Setting up libxcb-shm0:amd64 (1.17.0-2+b1) ... Setting up libcom-err2:amd64 (1.47.2-3+b3) ... Setting up file (1:5.46-5) ... Setting up libunwind8:amd64 (1.8.1-0.1) ... Setting up libcrypt-passwdmd5-perl (1.42-2) ... Setting up libjbig0:amd64 (2.1-6.1+b2) ... Setting up libsub-install-perl (0.929-1) ... Setting up libelf1t64:amd64 (0.193-3) ... Setting up libkrb5support0:amd64 (1.21.3-5) ... Setting up libxcb-present0:amd64 (1.17.0-2+b1) ... Setting up libasound2-data (1.2.14-2) ... Setting up libio-string-perl (1.08-4) ... Setting up libfontenc1:amd64 (1:1.1.8-1+b2) ... Setting up autotools-dev (20240727.1) ... Setting up libz3-4:amd64 (4.13.3-1) ... Setting up libglib2.0-0t64:amd64 (2.84.4-3) ... Setting up libasound2t64:amd64 (1.2.14-2) ... Setting up libjpeg62-turbo:amd64 (1:2.1.5-4) ... Setting up libx11-data (2:1.8.12-1) ... Setting up libepoxy0:amd64 (1.5.10-2) ... Setting up libnspr4:amd64 (2:4.37-1) ... Setting up libxcb-sync1:amd64 (1.17.0-2+b1) ... Setting up libperlio-utf8-strict-perl (0.010-1+b4) ... Setting up libavahi-common-data:amd64 (0.8-17) ... Setting up libdbus-1-3:amd64 (1.16.2-2) ... Setting up libfribidi0:amd64 (1.0.16-3) ... Setting up shared-mime-info (2.4-5+b3) ... Setting up libproc2-0:amd64 (2:4.0.4-9) ... Setting up fonts-dejavu-mono (2.37-8) ... Setting up libpng16-16t64:amd64 (1.6.50-1) ... Setting up libio-html-perl (1.004-3) ... Setting up autopoint (0.23.1-2) ... Setting up fonts-dejavu-core (2.37-8) ... Setting up libsensors5:amd64 (1:3.6.2-2) ... Setting up libk5crypto3:amd64 (1.21.3-5) ... Setting up libparams-util-perl (1.102-3+b2) ... Setting up libvulkan1:amd64 (1.4.321.0-1) ... Setting up autoconf (2.72-3.1) ... Setting up libwebp7:amd64 (1.5.0-0.1) ... Setting up libtimedate-perl (2.3300-2) ... Setting up dwz (0.16-2) ... Setting up sensible-utils (0.0.26) ... Setting up libxshmfence1:amd64 (1.3.3-1) ... Setting up at-spi2-common (2.58.0-1) ... Setting up libtiff6:amd64 (4.7.1-1) ... Setting up libxcb-randr0:amd64 (1.17.0-2+b1) ... Setting up dbus-session-bus-common (1.16.2-2) ... Setting up libuchardet0:amd64 (0.0.8-2) ... Setting up procps (2:4.0.4-9) ... Setting up libjson-perl (4.10000-1) ... Setting up libx11-6:amd64 (2:1.8.12-1) ... Setting up libthai-data (0.1.29-2) ... Setting up libgdk-pixbuf-2.0-0:amd64 (2.44.3+dfsg-3) ... Setting up netbase (6.5) ... Configuration file '/etc/protocols' ==> File on system created by you or by a script. ==> File also in package provided by package maintainer. ==> Using current old file as you requested. Configuration file '/etc/services' ==> File on system created by you or by a script. ==> File also in package provided by package maintainer. ==> Using current old file as you requested. Setting up libkrb5-3:amd64 (1.21.3-5) ... Setting up libwayland-egl1:amd64 (1.24.0-2+b1) ... Setting up libxkbfile1:amd64 (1:1.1.0-1+b4) ... Setting up libterm-readkey-perl (2.38-2+b5) ... Setting up dbus-system-bus-common (1.16.2-2) ... Setting up libfont-ttf-perl (1.06-2) ... Setting up libfile-homedir-perl (1.006-2) ... Setting up openssl (3.5.4-1) ... Setting up libdrm-common (2.4.125-2) ... Setting up libxcomposite1:amd64 (1:0.4.6-1) ... Setting up liburi-perl (5.34-1) ... Setting up libxmuu1:amd64 (2:1.1.3-3+b4) ... Setting up dbus-bin (1.16.2-2) ... Setting up libxkbcommon0:amd64 (1.7.0-2.1) ... Setting up libwayland-client0:amd64 (1.24.0-2+b1) ... Setting up libnet-ssleay-perl:amd64 (1.94-3+b1) ... Setting up automake (1:1.17-4) ... update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.15.0-1) ... Setting up libxcb-dri3-0:amd64 (1.17.0-2+b1) ... Setting up libllvm19:amd64 (1:19.1.7-7) ... Setting up gtk-update-icon-cache (4.20.1+ds-2) ... Setting up libx11-xcb1:amd64 (2:1.8.12-1) ... Setting up libice6:amd64 (2:1.1.1-1) ... Setting up libhttp-date-perl (6.06-1) ... Setting up gettext (0.23.1-2+b1) ... Setting up libxdamage1:amd64 (1:1.1.6-1+b2) ... Setting up libatk1.0-0t64:amd64 (2.58.0-1) ... Setting up libfile-listing-perl (6.16-1) ... Setting up libxpm4:amd64 (1:3.5.17-1+b3) ... Setting up libxrender1:amd64 (1:0.9.12-1) ... Setting up libtool (2.5.4-5) ... Setting up fontconfig-config (2.15.0-2.4) ... Setting up libavahi-common3:amd64 (0.8-17) ... Setting up libcloudproviders0:amd64 (0.3.6-3) ... Setting up libxext6:amd64 (2:1.3.4-1+b3) ... Setting up libnet-http-perl (6.23-1) ... Setting up libnss3:amd64 (2:3.116-1) ... Setting up dbus-daemon (1.16.2-2) ... Setting up libcolord2:amd64 (1.4.8-1) ... Setting up libxxf86vm1:amd64 (1:1.1.4-1+b4) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up libpdf-api2-perl (2.048-1) ... Setting up libdconf1:amd64 (0.49.0-1) ... Setting up dh-autoreconf (21) ... Setting up libthai0:amd64 (0.1.29-2+b1) ... Setting up ca-certificates (20250419) ... Updating certificates in /etc/ssl/certs... 150 added, 0 removed; done. Setting up libfreetype6:amd64 (2.13.3+dfsg-1) ... Setting up adwaita-icon-theme (49.0-1) ... update-alternatives: using /usr/share/icons/Adwaita/cursor.theme to provide /usr/share/icons/default/index.theme (x-cursor-theme) in auto mode Setting up libxfixes3:amd64 (1:6.0.0-2+b4) ... Setting up dbus (1.16.2-2) ... invoke-rc.d: could not determine current runlevel Setting up libxinerama1:amd64 (2:1.1.4-3+b4) ... Setting up libgssapi-krb5-2:amd64 (1.21.3-5) ... Setting up libxrandr2:amd64 (2:1.5.4-1+b3) ... Setting up libdata-optlist-perl (0.114-1) ... Setting up dh-strip-nondeterminism (1.15.0-1) ... Setting up libwww-robotrules-perl (6.02-1) ... Setting up libdrm2:amd64 (2.4.125-2) ... Setting up xauth (1:1.1.2-1.1) ... Setting up groff-base (1.23.0-9) ... Setting up libwayland-cursor0:amd64 (1.24.0-2+b1) ... Setting up libhtml-parser-perl:amd64 (3.83-1+b3) ... Setting up libpam-systemd:amd64 (258-1) ... Setting up libharfbuzz0b:amd64 (12.1.0-1) ... Setting up libfontconfig1:amd64 (2.15.0-2.4) ... Setting up libsm6:amd64 (2:1.2.6-1) ... Setting up libxfont2:amd64 (1:2.0.6-1+b3) ... Setting up libavahi-client3:amd64 (0.8-17) ... Setting up libio-socket-ssl-perl (2.095-1) ... Setting up libsub-exporter-perl (0.990-1) ... Setting up libhttp-message-perl (7.00-2) ... Setting up libdrm-amdgpu1:amd64 (2.4.125-2) ... Setting up libhttp-negotiate-perl (6.01-2) ... Setting up fontconfig (2.15.0-2.4) ... Regenerating fonts cache... done. Setting up libxi6:amd64 (2:1.8.2-1) ... Setting up libhttp-cookies-perl (6.11-1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libhtml-tree-perl (5.07-3) ... Setting up libxcursor1:amd64 (1:1.2.3-1) ... Setting up libpango-1.0-0:amd64 (1.56.3-2) ... Setting up libdrm-intel1:amd64 (2.4.125-2) ... Setting up man-db (2.13.1-1) ... Not building database; man-db/auto-update is not 'true'. Created symlink '/etc/systemd/system/timers.target.wants/man-db.timer' → '/usr/lib/systemd/system/man-db.timer'. Setting up libmixin-linewise-perl (0.111-1) ... Setting up libcairo2:amd64 (1.18.4-1+b1) ... Setting up libconfig-ini-perl (1:0.029-1) ... Setting up dbus-user-session (1.16.2-2) ... Setting up libatspi2.0-0t64:amd64 (2.58.0-1) ... Setting up libxt6t64:amd64 (1:1.2.1-1.3) ... Setting up libhttp-daemon-perl (6.16-1) ... Setting up libcairo-gobject2:amd64 (1.18.4-1+b1) ... Setting up libpangoft2-1.0-0:amd64 (1.56.3-2) ... Setting up libcups2t64:amd64 (2.4.10-4) ... Setting up libpangocairo-1.0-0:amd64 (1.56.3-2) ... Setting up libatk-bridge2.0-0t64:amd64 (2.58.0-1) ... Setting up mesa-libgallium:amd64 (25.2.4-1) ... Setting up libxmu6:amd64 (2:1.1.3-3+b4) ... Setting up libgbm1:amd64 (25.2.4-1) ... Setting up libgl1-mesa-dri:amd64 (25.2.4-1) ... Setting up debhelper (13.28) ... Setting up dconf-service (0.49.0-1) ... Setting up libxaw7:amd64 (2:1.0.16-1) ... Setting up libglx-mesa0:amd64 (25.2.4-1) ... Setting up libglx0:amd64 (1.7.0-1+b2) ... Setting up dconf-gsettings-backend:amd64 (0.49.0-1) ... Setting up x11-xkb-utils (7.7+9) ... Setting up libgl1:amd64 (1.7.0-1+b2) ... Setting up xserver-common (2:21.1.18-2) ... Setting up libgtk-3-common (3.24.50-2) ... Setting up xvfb (2:21.1.18-2) ... Setting up libgtk-3-0t64:amd64 (3.24.50-2) ... Setting up firefox-esr (140.3.1esr-2) ... update-alternatives: using /usr/bin/firefox-esr to provide /usr/bin/x-www-browser (x-www-browser) in auto mode update-alternatives: using /usr/bin/firefox-esr to provide /usr/bin/gnome-www-browser (gnome-www-browser) in auto mode Setting up liblwp-protocol-https-perl (6.14-1) ... Setting up libwww-perl (6.80-1) ... Setting up libxml-parser-perl (2.47-1+b4) ... Setting up sbuild-build-depends-main-dummy (0.invalid.0) ... Processing triggers for libc-bin (2.41-12) ... Processing triggers for ca-certificates (20250419) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. +------------------------------------------------------------------------------+ | Check architectures Sat, 04 Oct 2025 04:02:24 +0000 | +------------------------------------------------------------------------------+ Arch check ok (amd64 included in all) +------------------------------------------------------------------------------+ | Build environment Sat, 04 Oct 2025 04:02:24 +0000 | +------------------------------------------------------------------------------+ Kernel: Linux 6.16.5+deb14-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.16.5-1 (2025-09-05) amd64 (x86_64) Toolchain package versions: binutils_2.45-7 dpkg-dev_1.22.21 g++-14_14.3.0-8 g++-15_15.2.0-4 gcc-14_14.3.0-8 gcc-15_15.2.0-4 libc6-dev_2.41-12 libstdc++-14-dev_14.3.0-8 libstdc++-15-dev_15.2.0-4 libstdc++6_15.2.0-4 linux-libc-dev_6.16.9-1 Package versions: adduser_3.153 adwaita-icon-theme_49.0-1 apt_3.1.7 at-spi2-common_2.58.0-1 autoconf_2.72-3.1 automake_1:1.17-4 autopoint_0.23.1-2 autotools-dev_20240727.1 base-files_14 base-passwd_3.6.7 bash_5.3-1 binutils_2.45-7 binutils-common_2.45-7 binutils-gold_2.44-3 binutils-gold-x86-64-linux-gnu_2.44-3 binutils-x86-64-linux-gnu_2.45-7 bsdextrautils_2.41.2-3 bsdutils_1:2.41.2-3 build-essential_12.12 bzip2_1.0.8-6 ca-certificates_20250419 coreutils_9.7-3 cpp_4:15.2.0-4 cpp-14_14.3.0-8 cpp-14-x86-64-linux-gnu_14.3.0-8 cpp-15_15.2.0-4 cpp-15-x86-64-linux-gnu_15.2.0-4 cpp-x86-64-linux-gnu_4:15.2.0-4 dash_0.5.12-12 dbus_1.16.2-2 dbus-bin_1.16.2-2 dbus-daemon_1.16.2-2 dbus-session-bus-common_1.16.2-2 dbus-system-bus-common_1.16.2-2 dbus-user-session_1.16.2-2 dconf-gsettings-backend_0.49.0-1 dconf-service_0.49.0-1 debconf_1.5.91 debhelper_13.28 debian-archive-keyring_2025.1 debianutils_5.23.2 dh-autoreconf_21 dh-strip-nondeterminism_1.15.0-1 diffutils_1:3.10-4 dirmngr_2.4.8-3 dpkg_1.22.21 dpkg-dev_1.22.21 dwz_0.16-2 eatmydata_131-2 file_1:5.46-5 findutils_4.10.0-3 firefox-esr_140.3.1esr-2 fontconfig_2.15.0-2.4 fontconfig-config_2.15.0-2.4 fonts-dejavu-core_2.37-8 fonts-dejavu-mono_2.37-8 g++_4:15.2.0-4 g++-14_14.3.0-8 g++-14-x86-64-linux-gnu_14.3.0-8 g++-15_15.2.0-4 g++-15-x86-64-linux-gnu_15.2.0-4 g++-x86-64-linux-gnu_4:15.2.0-4 gcc_4:15.2.0-4 gcc-14_14.3.0-8 gcc-14-base_14.3.0-8 gcc-14-x86-64-linux-gnu_14.3.0-8 gcc-15_15.2.0-4 gcc-15-base_15.2.0-4 gcc-15-x86-64-linux-gnu_15.2.0-4 gcc-x86-64-linux-gnu_4:15.2.0-4 gettext_0.23.1-2+b1 gettext-base_0.23.1-2+b1 gnupg_2.4.8-3 gnupg-l10n_2.4.8-3 gpg_2.4.8-3 gpg-agent_2.4.8-3 gpgconf_2.4.8-3 gpgsm_2.4.8-3 grep_3.12-1 groff-base_1.23.0-9 gtk-update-icon-cache_4.20.1+ds-2 gzip_1.13-1 hicolor-icon-theme_0.18-2 hostname_3.25 init-system-helpers_1.69 intltool-debian_0.35.0+20060710.6 libacl1_2.3.2-2+b1 libapparmor1_4.1.0-1 libapt-pkg7.0_3.1.7 libarchive-zip-perl_1.68-1 libasan8_15.2.0-4 libasound2-data_1.2.14-2 libasound2t64_1.2.14-2 libassuan9_3.0.2-2 libatk-bridge2.0-0t64_2.58.0-1 libatk1.0-0t64_2.58.0-1 libatomic1_15.2.0-4 libatspi2.0-0t64_2.58.0-1 libattr1_1:2.5.2-3 libaudit-common_1:4.1.2-1 libaudit1_1:4.1.2-1 libavahi-client3_0.8-17 libavahi-common-data_0.8-17 libavahi-common3_0.8-17 libbinutils_2.45-7 libblkid1_2.41.2-3 libbrotli1_1.1.0-2+b7 libbsd0_0.12.2-2 libbz2-1.0_1.0.8-6 libc-bin_2.41-12 libc-dev-bin_2.41-12 libc-l10n_2.41-12 libc6_2.41-12 libc6-dev_2.41-12 libcairo-gobject2_1.18.4-1+b1 libcairo2_1.18.4-1+b1 libcap-ng0_0.8.5-4+b1 libcap2_1:2.75-10+b1 libcc1-0_15.2.0-4 libclone-perl_0.47-1+b2 libcloudproviders0_0.3.6-3 libcolord2_1.4.8-1 libcom-err2_1.47.2-3+b3 libconfig-ini-perl_1:0.029-1 libcrypt-dev_1:4.4.38-1 libcrypt-passwdmd5-perl_1.42-2 libcrypt-urandom-perl_0.54-1+b1 libcrypt1_1:4.4.38-1 libctf-nobfd0_2.45-7 libctf0_2.45-7 libcups2t64_2.4.10-4 libdata-optlist-perl_0.114-1 libdatrie1_0.2.13-4 libdb5.3t64_5.3.28+dfsg2-9 libdbus-1-3_1.16.2-2 libdconf1_0.49.0-1 libdebconfclient0_0.280 libdebhelper-perl_13.28 libdeflate0_1.23-2 libdpkg-perl_1.22.21 libdrm-amdgpu1_2.4.125-2 libdrm-common_2.4.125-2 libdrm-intel1_2.4.125-2 libdrm2_2.4.125-2 libeatmydata1_131-2+b1 libedit2_3.1-20250104-1 libelf1t64_0.193-3 libencode-locale-perl_1.05-3 libepoxy0_1.5.10-2 libevent-2.1-7t64_2.1.12-stable-10+b1 libexpat1_2.7.3-1 libffi8_3.5.2-2 libfile-homedir-perl_1.006-2 libfile-listing-perl_6.16-1 libfile-stripnondeterminism-perl_1.15.0-1 libfile-which-perl_1.27-2 libfont-ttf-perl_1.06-2 libfontconfig1_2.15.0-2.4 libfontenc1_1:1.1.8-1+b2 libfreetype6_2.13.3+dfsg-1 libfribidi0_1.0.16-3 libgbm1_25.2.4-1 libgcc-14-dev_14.3.0-8 libgcc-15-dev_15.2.0-4 libgcc-s1_15.2.0-4 libgcrypt20_1.11.2-2 libgdbm-compat4t64_1.26-1 libgdbm6t64_1.26-1 libgdk-pixbuf-2.0-0_2.44.3+dfsg-3 libgdk-pixbuf2.0-common_2.44.3+dfsg-3 libgl1_1.7.0-1+b2 libgl1-mesa-dri_25.2.4-1 libglib2.0-0t64_2.84.4-3 libglvnd0_1.7.0-1+b2 libglx-mesa0_25.2.4-1 libglx0_1.7.0-1+b2 libgmp10_2:6.3.0+dfsg-5 libgnutls30t64_3.8.10-2 libgomp1_15.2.0-4 libgpg-error0_1.55-2 libgprofng0_2.45-7 libgraphite2-3_1.3.14-9 libgssapi-krb5-2_1.21.3-5 libgtk-3-0t64_3.24.50-2 libgtk-3-common_3.24.50-2 libharfbuzz0b_12.1.0-1 libhogweed6t64_3.10.2-1 libhtml-parser-perl_3.83-1+b3 libhtml-tagset-perl_3.24-1 libhtml-tree-perl_5.07-3 libhttp-cookies-perl_6.11-1 libhttp-daemon-perl_6.16-1 libhttp-date-perl_6.06-1 libhttp-message-perl_7.00-2 libhttp-negotiate-perl_6.01-2 libhwasan0_15.2.0-4 libice6_2:1.1.1-1 libidn2-0_2.3.8-4 libio-html-perl_1.004-3 libio-socket-ssl-perl_2.095-1 libio-string-perl_1.08-4 libisl23_0.27-1 libitm1_15.2.0-4 libjansson4_2.14-2+b3 libjbig0_2.1-6.1+b2 libjpeg62-turbo_1:2.1.5-4 libjson-perl_4.10000-1 libk5crypto3_1.21.3-5 libkeyutils1_1.6.3-6 libkrb5-3_1.21.3-5 libkrb5support0_1.21.3-5 libksba8_1.6.7-2+b1 liblastlog2-2_2.41.2-3 liblcms2-2_2.16-2 libldap2_2.6.10+dfsg-1+b1 liblerc4_4.0.0+ds-5 libllvm19_1:19.1.7-7 liblsan0_15.2.0-4 liblwp-mediatypes-perl_6.04-2 liblwp-protocol-https-perl_6.14-1 liblz4-1_1.10.0-4 liblzma5_5.8.1-2 libmagic-mgc_1:5.46-5 libmagic1t64_1:5.46-5 libmd0_1.1.0-2+b1 libmixin-linewise-perl_0.111-1 libmount1_2.41.2-3 libmpc3_1.3.1-2 libmpfr6_4.2.2-2 libncursesw6_6.5+20250216-2 libnet-http-perl_6.23-1 libnet-ssleay-perl_1.94-3+b1 libnettle8t64_3.10.2-1 libnpth0t64_1.8-3 libnspr4_2:4.37-1 libnss3_2:3.116-1 libp11-kit0_0.25.9-2 libpam-modules_1.7.0-5 libpam-modules-bin_1.7.0-5 libpam-runtime_1.7.0-5 libpam-systemd_258-1 libpam0g_1.7.0-5 libpango-1.0-0_1.56.3-2 libpangocairo-1.0-0_1.56.3-2 libpangoft2-1.0-0_1.56.3-2 libparams-util-perl_1.102-3+b2 libpciaccess0_0.17-3+b3 libpcre2-8-0_10.46-1 libpdf-api2-perl_2.048-1 libperl5.40_5.40.1-6 libperl5.42_5.42.0-2 libperlio-utf8-strict-perl_0.010-1+b4 libpipeline1_1.5.8-1 libpixman-1-0_0.46.4-1 libpng16-16t64_1.6.50-1 libproc2-0_2:4.0.4-9 libquadmath0_15.2.0-4 libreadline8t64_8.3-3 libsasl2-2_2.1.28+dfsg1-9 libsasl2-modules-db_2.1.28+dfsg1-9 libseccomp2_2.6.0-2 libselinux1_3.8.1-1 libsemanage-common_3.8.1-1 libsemanage2_3.8.1-1 libsensors-config_1:3.6.2-2 libsensors5_1:3.6.2-2 libsepol2_3.8.1-1 libsframe2_2.45-7 libsharpyuv0_1.5.0-0.1 libsm6_2:1.2.6-1 libsmartcols1_2.41.2-3 libsqlite3-0_3.46.1-8 libssl3t64_3.5.4-1 libstdc++-14-dev_14.3.0-8 libstdc++-15-dev_15.2.0-4 libstdc++6_15.2.0-4 libsub-exporter-perl_0.990-1 libsub-install-perl_0.929-1 libsystemd-shared_258-1 libsystemd0_258-1 libtasn1-6_4.20.0-2 libterm-readkey-perl_2.38-2+b5 libtext-csv-xs-perl_1.61-1+b1 libthai-data_0.1.29-2 libthai0_0.1.29-2+b1 libtiff6_4.7.1-1 libtimedate-perl_2.3300-2 libtinfo6_6.5+20250216-2 libtool_2.5.4-5 libtry-tiny-perl_0.32-1 libtsan2_15.2.0-4 libubsan1_15.2.0-4 libuchardet0_0.0.8-2 libudev1_258-1 libunistring5_1.3-2 libunwind8_1.8.1-0.1 liburi-perl_5.34-1 libuuid1_2.41.2-3 libvpx11_1.15.2-2 libvulkan1_1.4.321.0-1 libwayland-client0_1.24.0-2+b1 libwayland-cursor0_1.24.0-2+b1 libwayland-egl1_1.24.0-2+b1 libwebp7_1.5.0-0.1 libwww-perl_6.80-1 libwww-robotrules-perl_6.02-1 libx11-6_2:1.8.12-1 libx11-data_2:1.8.12-1 libx11-xcb1_2:1.8.12-1 libxau6_1:1.0.11-1 libxaw7_2:1.0.16-1 libxcb-dri3-0_1.17.0-2+b1 libxcb-glx0_1.17.0-2+b1 libxcb-present0_1.17.0-2+b1 libxcb-randr0_1.17.0-2+b1 libxcb-render0_1.17.0-2+b1 libxcb-shm0_1.17.0-2+b1 libxcb-sync1_1.17.0-2+b1 libxcb-xfixes0_1.17.0-2+b1 libxcb1_1.17.0-2+b1 libxcomposite1_1:0.4.6-1 libxcursor1_1:1.2.3-1 libxdamage1_1:1.1.6-1+b2 libxdmcp6_1:1.1.5-1 libxext6_2:1.3.4-1+b3 libxfixes3_1:6.0.0-2+b4 libxfont2_1:2.0.6-1+b3 libxi6_2:1.8.2-1 libxinerama1_2:1.1.4-3+b4 libxkbcommon0_1.7.0-2.1 libxkbfile1_1:1.1.0-1+b4 libxml-parser-perl_2.47-1+b4 libxml2-16_2.14.5+dfsg-0.2 libxmu6_2:1.1.3-3+b4 libxmuu1_2:1.1.3-3+b4 libxpm4_1:3.5.17-1+b3 libxrandr2_2:1.5.4-1+b3 libxrender1_1:0.9.12-1 libxshmfence1_1.3.3-1 libxt6t64_1:1.2.1-1.3 libxxf86vm1_1:1.1.4-1+b4 libxxhash0_0.8.3-2 libz3-4_4.13.3-1 libzstd1_1.5.7+dfsg-1.1 linux-libc-dev_6.16.9-1 locales-all_2.41-12 login.defs_1:4.18.0-1 m4_1.4.20-1 make_4.4.1-2 man-db_2.13.1-1 mawk_1.3.4.20250131-1 mesa-libgallium_25.2.4-1 mount_2.41.2-3 ncurses-base_6.5+20250216-2 ncurses-bin_6.5+20250216-2 netbase_6.5 openssl_3.5.4-1 openssl-provider-legacy_3.5.4-1 passwd_1:4.18.0-1 patch_2.8-2 perl_5.42.0-2 perl-base_5.42.0-2 perl-modules-5.40_5.40.1-6 perl-modules-5.42_5.42.0-2 perl-openssl-defaults_7+b2 pinentry-curses_1.3.2-3 po-debconf_1.0.21+nmu1 procps_2:4.0.4-9 readline-common_8.3-3 rpcsvc-proto_1.4.3-1 sbuild-build-depends-main-dummy_0.invalid.0 sed_4.9-2 sensible-utils_0.0.26 shared-mime-info_2.4-5+b3 sqv_1.3.0-3 systemd_258-1 systemd-sysv_258-1 sysvinit-utils_3.14-4 tar_1.35+dfsg-3.1 util-linux_2.41.2-3 x11-common_1:7.7+25 x11-xkb-utils_7.7+9 xauth_1:1.1.2-1.1 xkb-data_2.42-1 xserver-common_2:21.1.18-2 xvfb_2:21.1.18-2 xz-utils_5.8.1-2 zlib1g_1:1.3.dfsg+really1.3.1-1+b1 +------------------------------------------------------------------------------+ | Build Sat, 04 Oct 2025 04:02:24 +0000 | +------------------------------------------------------------------------------+ Unpack source ------------- -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: libfirefox-marionette-perl Binary: libfirefox-marionette-perl Architecture: all Version: 1.68-1 Maintainer: Debian Perl Group Uploaders: gregor herrmann , Homepage: https://metacpan.org/release/Firefox-Marionette Standards-Version: 4.7.2 Vcs-Browser: https://salsa.debian.org/perl-team/modules/packages/libfirefox-marionette-perl Vcs-Git: https://salsa.debian.org/perl-team/modules/packages/libfirefox-marionette-perl.git Testsuite: autopkgtest-pkg-perl Build-Depends: debhelper-compat (= 13) Build-Depends-Indep: dbus-daemon , firefox-esr | firefox, libarchive-zip-perl , libconfig-ini-perl , libcrypt-passwdmd5-perl , libcrypt-urandom-perl , libdigest-sha-perl , libencode-perl , libfile-homedir-perl , libhttp-daemon-perl , libhttp-message-perl , libio-compress-perl , libio-socket-ip-perl , libio-socket-ssl-perl , libjson-perl , libpdf-api2-perl , libpod-simple-perl , libscalar-list-utils-perl , libsocket-perl , libterm-readkey-perl , libtest-simple-perl , libtext-csv-xs-perl , liburi-perl , libxml-parser-perl , perl, xauth , xvfb Package-List: libfirefox-marionette-perl deb perl optional arch=all Checksums-Sha1: 58d824d4ba342022b8909e0ce94c6743d39448dc 430422 libfirefox-marionette-perl_1.68.orig.tar.gz ebb654b6cd81a4ee775b8cb684506775fc61c602 28772 libfirefox-marionette-perl_1.68-1.debian.tar.xz Checksums-Sha256: cfc3ace7c0a4fe4199babd7b6b71dadc93ced18616a3a4c40010d408306fdd6e 430422 libfirefox-marionette-perl_1.68.orig.tar.gz 1cd8b951133cddcdaf6fea7f5bc66db5eb2e887d4ee72a99454ebc7fe708c33d 28772 libfirefox-marionette-perl_1.68-1.debian.tar.xz Files: 1e51152a5d25ad7bf6500fb2e725f951 430422 libfirefox-marionette-perl_1.68.orig.tar.gz 17281d50167658ca6615ef21422a3c05 28772 libfirefox-marionette-perl_1.68-1.debian.tar.xz Dgit: 3019c7538d5e42fee8f296abdc2ab1282091f10e debian archive/debian/1.68-1 https://git.dgit.debian.org/libfirefox-marionette-perl -----BEGIN PGP SIGNATURE----- iQKTBAEBCgB9FiEE0eExbpOnYKgQTYX6uzpoAYZJqgYFAmjgZ+9fFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEQx RTEzMTZFOTNBNzYwQTgxMDREODVGQUJCM0E2ODAxODY0OUFBMDYACgkQuzpoAYZJ qgbIOA//bKhFFLv3JVVKSCmChNl5pA/+JHbYSNHek7xqKRWzL02x4uulCCMcRtim cj7HWGH6ykawyZ1qjCG/zCMDEpHSJvXyOlOnWJln6hxJ7ftyI6xhmiMtzNM6ao9A Ug7b6CsWlKBQjekVtSzewzjdAsUQEO5Q+EQILLy2xM+ytwL4nA9UxJgwCrGvaLK+ +wC5UXhINCHO8Cp+A1Fb5SHyvZ3qihUX7IHdNZviJnk7EzeaTXiKKUdWhxhTl4TQ lOUOevYZ2IEXsbonBW6TI8XxuUYOvG8lATcw+BG7w87R/KMiqjZv6/nrq24J9QI5 Yx8qSi/P7t+fknxyrAddu+WFm97Mb+6UVv5vQL1VzTQhkN4AmD4pCPAwklQRUtLJ UedXjJKIslmqYyLTp0p3pXwJvuSwYYeJLkldVnO7My76Y9oMKKbX34O2Hzy3W1fT FlFgiH9cEFqNqEjUeqywiNfMIqAcS0H4jhvmjMf33qkRwjx9gbDOcjnSc2z9riI4 wJjqiI1KOVX2IfsFC2lDAeK1JuC7DZcjd+tYtFamR7P4xb6D65zpgORtBzJzNvdX 270ivhnfJjNF52E0tKKdrsPPL0pt+EnAHOYjA5MrVelxysxaaLVz5bt8CspIoE9q ApX0t/QJJKUXpYcfwzoi3YOoLds/rBS0KifknenMOwRMPQ3bb/g= =Od6N -----END PGP SIGNATURE----- dpkg-source: warning: cannot verify inline signature for ./libfirefox-marionette-perl_1.68-1.dsc: no acceptable signature found dpkg-source: info: extracting libfirefox-marionette-perl in /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68 dpkg-source: info: unpacking libfirefox-marionette-perl_1.68.orig.tar.gz dpkg-source: info: unpacking libfirefox-marionette-perl_1.68-1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying no-network.patch Check disk space ---------------- Sufficient free space for build +------------------------------------------------------------------------------+ | Starting Timed Build Commands Sat, 04 Oct 2025 04:02:25 +0000 | +------------------------------------------------------------------------------+ /usr/share/debomatic/sbuildcommands/starting-build-commands/no-network libfirefox-marionette-perl_1.68-1 perl-5.42-throwaway amd64 ---------------------------------------------------------------------------------------------------------------------------------- I: Finished running '/usr/share/debomatic/sbuildcommands/starting-build-commands/no-network libfirefox-marionette-perl_1.68-1 perl-5.42-throwaway amd64'. Finished processing commands. -------------------------------------------------------------------------------- User Environment ---------------- APT_CONFIG=/var/lib/sbuild/apt.conf HOME=/sbuild-nonexistent LC_ALL=C.UTF-8 LD_LIBRARY_PATH=/usr/lib/libeatmydata LD_PRELOAD=libeatmydata.so LOGNAME=debomatic PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games PWD=/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68 SCHROOT_ALIAS_NAME=perl-5.42-throwaway-amd64-debomatic SCHROOT_CHROOT_NAME=perl-5.42-amd64-debomatic SCHROOT_COMMAND=env SCHROOT_GID=110 SCHROOT_GROUP=sbuild SCHROOT_SESSION_ID=perl-5.42-amd64-debomatic-c5026a31-0840-4da1-899f-7d9351c55726 SCHROOT_UID=1002 SCHROOT_USER=debomatic SHELL=/bin/sh USER=debomatic dpkg-buildpackage ----------------- Command: dpkg-buildpackage --sanitize-env -us -uc -Zxz dpkg-buildpackage: info: source package libfirefox-marionette-perl dpkg-buildpackage: info: source version 1.68-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by gregor herrmann dpkg-source -Zxz --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean dh_clean dpkg-source -Zxz -b . dpkg-source: info: using source format '3.0 (quilt)' dpkg-source: info: building libfirefox-marionette-perl using existing ./libfirefox-marionette-perl_1.68.orig.tar.gz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: building libfirefox-marionette-perl in libfirefox-marionette-perl_1.68-1.debian.tar.xz dpkg-source: info: building libfirefox-marionette-perl in libfirefox-marionette-perl_1.68-1.dsc debian/rules binary dh binary dh_update_autotools_config dh_autoreconf dh_auto_configure /usr/bin/perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" LD="x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro" Mozilla Firefox 140.3.1esr grep -r Mem /proc/meminfo MemTotal: 8135956 kB MemFree: 1394460 kB MemAvailable: 7393816 kB ulimit -a | grep -i mem memory(kbytes) unlimited locked memory(kbytes) 8192 vmemory(kbytes) unlimited Warning: prerequisite Test::CheckManifest 0.9 not found. Warning: prerequisite Test::Pod 1.41 not found. Warning: prerequisite Test::Pod::Coverage 1.04 not found. Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for Firefox::Marionette Writing MYMETA.yml and MYMETA.json dh_auto_build make -j2 make[1]: Entering directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68' cp lib/Firefox/Marionette/Display.pm blib/lib/Firefox/Marionette/Display.pm cp lib/Firefox/Marionette/Extension/Stealth.pm blib/lib/Firefox/Marionette/Extension/Stealth.pm cp lib/Firefox/Marionette/Exception/NoSuchAlert.pm blib/lib/Firefox/Marionette/Exception/NoSuchAlert.pm cp lib/Firefox/Marionette/Element/Rect.pm blib/lib/Firefox/Marionette/Element/Rect.pm cp lib/Firefox/Marionette/Element.pm blib/lib/Firefox/Marionette/Element.pm cp lib/Firefox/Marionette/Link.pm blib/lib/Firefox/Marionette/Link.pm cp lib/Firefox/Marionette/Certificate.pm blib/lib/Firefox/Marionette/Certificate.pm cp lib/Firefox/Marionette/Bookmark.pm blib/lib/Firefox/Marionette/Bookmark.pm cp lib/Firefox/Marionette/Login.pm blib/lib/Firefox/Marionette/Login.pm cp lib/Firefox/Marionette/Image.pm blib/lib/Firefox/Marionette/Image.pm cp lib/Firefox/Marionette/GeoLocation.pm blib/lib/Firefox/Marionette/GeoLocation.pm cp lib/Firefox/Marionette/Extension/Timezone.pm blib/lib/Firefox/Marionette/Extension/Timezone.pm cp lib/Firefox/Marionette/Exception/NotFound.pm blib/lib/Firefox/Marionette/Exception/NotFound.pm cp lib/Firefox/Marionette/Profile.pm blib/lib/Firefox/Marionette/Profile.pm cp lib/Firefox/Marionette/Extension/HarExportTrigger.pm blib/lib/Firefox/Marionette/Extension/HarExportTrigger.pm cp lib/Firefox/Marionette/Exception.pm blib/lib/Firefox/Marionette/Exception.pm cp lib/Firefox/Marionette/Exception/InsecureCertificate.pm blib/lib/Firefox/Marionette/Exception/InsecureCertificate.pm cp lib/Firefox/Marionette/Cookie.pm blib/lib/Firefox/Marionette/Cookie.pm cp lib/Firefox/Marionette/Buttons.pm blib/lib/Firefox/Marionette/Buttons.pm cp lib/Firefox/Marionette/Cache.pm blib/lib/Firefox/Marionette/Cache.pm cp lib/Firefox/Marionette/Exception/StaleElement.pm blib/lib/Firefox/Marionette/Exception/StaleElement.pm cp lib/Firefox/Marionette/Exception/Response.pm blib/lib/Firefox/Marionette/Exception/Response.pm cp lib/Firefox/Marionette/DNS.pm blib/lib/Firefox/Marionette/DNS.pm cp lib/Firefox/Marionette/Keys.pm blib/lib/Firefox/Marionette/Keys.pm cp lib/Firefox/Marionette/Capabilities.pm blib/lib/Firefox/Marionette/Capabilities.pm cp lib/Firefox/Marionette/LocalObject.pm blib/lib/Firefox/Marionette/LocalObject.pm cp lib/Firefox/Marionette.pm blib/lib/Firefox/Marionette.pm cp lib/Firefox/Marionette/Response.pm blib/lib/Firefox/Marionette/Response.pm cp lib/Firefox/Marionette/Timeouts.pm blib/lib/Firefox/Marionette/Timeouts.pm cp lib/Waterfox/Marionette/Profile.pm blib/lib/Waterfox/Marionette/Profile.pm cp lib/Firefox/Marionette/WebFrame.pm blib/lib/Firefox/Marionette/WebFrame.pm cp lib/Firefox/Marionette/Proxy.pm blib/lib/Firefox/Marionette/Proxy.pm cp lib/Firefox/Marionette/WebWindow.pm blib/lib/Firefox/Marionette/WebWindow.pm cp lib/Firefox/Marionette/Window/Rect.pm blib/lib/Firefox/Marionette/Window/Rect.pm cp lib/Firefox/Marionette/UpdateStatus.pm blib/lib/Firefox/Marionette/UpdateStatus.pm cp lib/Firefox/Marionette/WebAuthn/Authenticator.pm blib/lib/Firefox/Marionette/WebAuthn/Authenticator.pm cp lib/Waterfox/Marionette.pm blib/lib/Waterfox/Marionette.pm cp lib/Firefox/Marionette/WebAuthn/Credential.pm blib/lib/Firefox/Marionette/WebAuthn/Credential.pm cp lib/Firefox/Marionette/ShadowRoot.pm blib/lib/Firefox/Marionette/ShadowRoot.pm cp ca-bundle-for-firefox blib/script/ca-bundle-for-firefox cp check-firefox-certificate-authorities blib/script/check-firefox-certificate-authorities "/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/check-firefox-certificate-authorities "/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ca-bundle-for-firefox cp firefox-passwords blib/script/firefox-passwords "/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/firefox-passwords cp setup-for-firefox-marionette-build.sh blib/script/setup-for-firefox-marionette-build.sh "/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/setup-for-firefox-marionette-build.sh cp ssh-auth-cmd-marionette blib/script/ssh-auth-cmd-marionette "/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ssh-auth-cmd-marionette Manifying 4 pod documents Manifying 27 pod documents Manifying 12 pod documents make[1]: Leaving directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68' debian/rules override_dh_auto_test make[1]: Entering directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68' FIREFOX_DEBUG=1 NO_NETWORK=1 RES_OPTIONS=attempts:0 http_proxy= \ xvfb-run -a \ dbus-run-session -- \ dh_auto_test make -j2 test TEST_VERBOSE=1 make[2]: Entering directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68' PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t # Testing Firefox::Marionette 1.68 t/00.load.t ........... 1..1 ok 1 - use Firefox::Marionette; ok # Starting test at Sat Oct 4 04:02:28 2025 [2748468] Sandbox: CanCreateUserNamespace() clone() failure: EPERM # Version is Mozilla Firefox 140.3.1esr # XAUTHORITY is /tmp/xvfb-run.nymkFJ/Xauthority # DISPLAY is :99 Can't exec "dbus-launch": No such file or directory at t/01-marionette.t line 564. # D-Bus appears to be broken. 'dbus-launch' was unable to successfully complete:-1 # Debian Version is forky/sid # Xvfb deb version is 2:21.1.18-2 # grep -r Mem /proc/meminfo # MemTotal: 8135956 kB # MemFree: 1312624 kB # MemAvailable: 7349624 kB # ulimit -a | grep -i mem # memory(kbytes) unlimited # locked memory(kbytes) 8192 # vmemory(kbytes) unlimited # This firefox installation has 0 existing profiles '/usr/bin/perl --version' did not produce output that could be parsed. Assuming modern Marionette is available at t/01-marionette.t line 668. '/usr/bin/perl --version' did not produce output that could be parsed. Assuming modern Marionette is available at t/01-marionette.t line 668. '/usr/bin/perl --version' did not produce output that could be parsed. Assuming modern Marionette is available at t/01-marionette.t line 668. '/usr/bin/perl --version' did not produce output that could be parsed. Assuming modern Marionette is available at t/01-marionette.t line 668. # Initial tests # Testing has been running for 1 seconds at t/01-marionette.t line 786 ** firefox --version ** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_rRZ5mLfLyx7/profile --no-remote --new-instance [2748606] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] << 760:[1,1,null,{"sessionId":"0d8df3a4-44b7-4ed5-a210-eade55f952a6","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2748606,"moz:profile":"/tmp/firefox_marionette_local_rRZ5mLfLyx7/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 179:[0,2,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] << 66:[1,2,null,{"value":"X2D-MHukkRp97gwKpZMy2_vtWddV8_k6awg2YbMT6EA"}] >> 33:[0,3,"WebDriver:GetCapabilities"] << 719:[1,3,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2748606,"moz:profile":"/tmp/firefox_marionette_local_rRZ5mLfLyx7/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] >> 71:[0,4,"WebDriver:ExecuteScript",{"script":"return navigator.userAgent"}] << 93:[1,4,null,{"value":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"}] >> 29:[0,5,"Marionette:GetContext"] << 30:[1,5,null,{"value":"content"}] >> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,6,null,{"value":null}] >> 80:[0,7,"WebDriver:ExecuteScript",{"script":"return Services.appinfo.XPCOMABI;\n"}] << 34:[1,7,null,{"value":"x86_64-gcc3"}] >> 29:[0,8,"Marionette:GetContext"] << 29:[1,8,null,{"value":"chrome"}] >> 49:[0,9,"Marionette:SetContext",{"value":"content"}] << 25:[1,9,null,{"value":null}] # Browser version is 140.3.1 # Operating System is linux 6.16.5+deb14-amd64 # Profile Directory is /tmp/firefox_marionette_local_rRZ5mLfLyx7/profile # Mozilla PID is 2748606 # Firefox BuildID is 20250922173505 # Addons are disabled # User Agent is Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 # uname is linux # Arch is x86_64 >> 33:[0,10,"Marionette:GetWindowType"] << 41:[1,10,null,{"value":"navigator:browser"}] >> 32:[0,11,"WebDriver:GetWindowRect"] << 51:[1,11,null,{"x":0,"y":0,"width":1366,"height":768}] >> 72:[0,12,"WebDriver:SetWindowRect",{"height":452,"width":326,"x":3,"y":23}] << 51:[1,12,null,{"x":3,"y":23,"width":450,"height":452}] >> 32:[0,13,"WebDriver:GetWindowRect"] << 51:[1,13,null,{"x":3,"y":23,"width":450,"height":452}] >> 32:[0,14,"WebDriver:GetWindowRect"] << 51:[1,14,null,{"x":3,"y":23,"width":450,"height":452}] >> 30:[0,15,"WebDriver:GetTimeouts"] << 59:[1,15,null,{"implicit":0,"pageLoad":300000,"script":30000}] >> 81:[0,16,"WebDriver:SetTimeouts",{"implicit":41001,"pageLoad":45043,"script":48021}] << 26:[1,16,null,{"value":null}] >> 30:[0,17,"WebDriver:GetTimeouts"] << 62:[1,17,null,{"implicit":41001,"pageLoad":45043,"script":48021}] >> 30:[0,18,"WebDriver:GetTimeouts"] << 62:[1,18,null,{"implicit":41001,"pageLoad":45043,"script":48021}] >> 81:[0,19,"WebDriver:SetTimeouts",{"implicit":41001,"pageLoad":45043,"script":48021}] << 26:[1,19,null,{"value":null}] >> 72:[0,20,"WebDriver:ExecuteScript",{"script":"return navigator.webdriver"}] << 26:[1,20,null,{"value":true}] >> 87:[0,21,"WebDriver:ExecuteScript",{"script":"window.open(\"about:blank\", \"_blank\");"}] << 26:[1,21,null,{"value":null}] >> 30:[0,22,"WebDriver:CloseWindow"] << 52:[1,22,null,["61aed3e3-dca5-415a-b880-e1750f95760c"]] >> 51:[0,23,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 61:[1,23,null,{"cause":"shutdown","forced":false,"in_app":true}] # Starting new firefox for testing capabilities and accessing proxies # Using proxy port TCP/55963 # Using SOCKS port TCP/34235 # Testing has been running for 6 seconds at t/01-marionette.t line 1198 ** firefox --version ** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_Alh1pA9_yWq/profile --no-remote --new-instance --kiosk [2749614] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 836:[0,1,"WebDriver:NewSession",{"acceptInsecureCerts":true,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:55963","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:34235","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:53393"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}},"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:55963","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:34235","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:53393"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}] [Parent 2749614, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 (firefox-esr:2749614): GLib-GObject-CRITICAL **: 04:02:36.896: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed [Parent 2749614, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 (firefox-esr:2749614): GLib-GObject-CRITICAL **: 04:02:36.896: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed << 1338:[1,1,null,{"sessionId":"8cb62d91-98f6-45b6-a5b7-e7698b0c16ce","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:55963","noProxy":["local.example.org"],"sslProxy":"localhost:53393","socksProxy":"localhost:34235","socksVersion":5},"unhandledPromptBehavior":"accept and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2749614,"moz:profile":"/tmp/firefox_marionette_local_Alh1pA9_yWq/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:55963","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:34235","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:53393"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}] >> 29:[0,2,"WebDriver:GetTimeouts"] << 58:[1,2,null,{"implicit":0,"pageLoad":300000,"script":30000}] >> 78:[0,3,"WebDriver:SetTimeouts",{"implicit":6543,"pageLoad":54321,"script":4567}] << 25:[1,3,null,{"value":null}] >> 29:[0,4,"Marionette:GetContext"] << 30:[1,4,null,{"value":"content"}] >> 48:[0,5,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,5,null,{"value":null}] >> 2299:[0,6,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"toolbar_____"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 25:[1,6,null,{"value":null}] >> 29:[0,7,"Marionette:GetContext"] << 29:[1,7,null,{"value":"chrome"}] >> 49:[0,8,"Marionette:SetContext",{"value":"content"}] << 25:[1,8,null,{"value":null}] >> 29:[0,9,"Marionette:GetContext"] << 30:[1,9,null,{"value":"content"}] >> 49:[0,10,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,10,null,{"value":null}] >> 2300:[0,11,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,11,null,{"value":null}] >> 30:[0,12,"Marionette:GetContext"] << 30:[1,12,null,{"value":"chrome"}] >> 50:[0,13,"Marionette:SetContext",{"value":"content"}] << 26:[1,13,null,{"value":null}] >> 30:[0,14,"Marionette:GetContext"] << 31:[1,14,null,{"value":"content"}] >> 49:[0,15,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,15,null,{"value":null}] >> 2300:[0,16,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"yrS1Xbh_V57Z"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,16,null,{"value":null}] >> 30:[0,17,"Marionette:GetContext"] << 30:[1,17,null,{"value":"chrome"}] >> 50:[0,18,"Marionette:SetContext",{"value":"content"}] << 26:[1,18,null,{"value":null}] >> 30:[0,19,"Marionette:GetContext"] << 31:[1,19,null,{"value":"content"}] >> 49:[0,20,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,20,null,{"value":null}] >> 2300:[0,21,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"yrS1Xbh_V57Z"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,21,null,{"value":null}] >> 30:[0,22,"Marionette:GetContext"] << 30:[1,22,null,{"value":"chrome"}] >> 50:[0,23,"Marionette:SetContext",{"value":"content"}] << 26:[1,23,null,{"value":null}] >> 30:[0,24,"Marionette:GetContext"] << 31:[1,24,null,{"value":"content"}] >> 49:[0,25,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,25,null,{"value":null}] >> 2300:[0,26,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,26,null,{"value":null}] >> 30:[0,27,"Marionette:GetContext"] << 30:[1,27,null,{"value":"chrome"}] >> 50:[0,28,"Marionette:SetContext",{"value":"content"}] << 26:[1,28,null,{"value":null}] >> 30:[0,29,"Marionette:GetContext"] << 31:[1,29,null,{"value":"content"}] >> 49:[0,30,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,30,null,{"value":null}] >> 2300:[0,31,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"nSyzF75iqGdz"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,31,null,{"value":null}] >> 30:[0,32,"Marionette:GetContext"] << 30:[1,32,null,{"value":"chrome"}] >> 50:[0,33,"Marionette:SetContext",{"value":"content"}] << 26:[1,33,null,{"value":null}] >> 30:[0,34,"Marionette:GetContext"] << 31:[1,34,null,{"value":"content"}] >> 49:[0,35,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,35,null,{"value":null}] >> 2300:[0,36,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,36,null,{"value":null}] >> 30:[0,37,"Marionette:GetContext"] << 30:[1,37,null,{"value":"chrome"}] >> 50:[0,38,"Marionette:SetContext",{"value":"content"}] << 26:[1,38,null,{"value":null}] >> 30:[0,39,"Marionette:GetContext"] << 31:[1,39,null,{"value":"content"}] >> 49:[0,40,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,40,null,{"value":null}] >> 2300:[0,41,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,41,null,{"value":null}] >> 30:[0,42,"Marionette:GetContext"] << 30:[1,42,null,{"value":"chrome"}] >> 50:[0,43,"Marionette:SetContext",{"value":"content"}] << 26:[1,43,null,{"value":null}] >> 30:[0,44,"Marionette:GetContext"] << 31:[1,44,null,{"value":"content"}] >> 49:[0,45,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,45,null,{"value":null}] >> 2275:[0,46,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 139:[1,46,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1759550557,"lastModified":1759550557,"childCount":5}}] >> 30:[0,47,"Marionette:GetContext"] << 30:[1,47,null,{"value":"chrome"}] >> 50:[0,48,"Marionette:SetContext",{"value":"content"}] << 26:[1,48,null,{"value":null}] >> 30:[0,49,"Marionette:GetContext"] << 31:[1,49,null,{"value":"content"}] >> 49:[0,50,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,50,null,{"value":null}] >> 2275:[0,51,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,51,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550557,"lastModified":1759550557,"parentGuid":"root________","childCount":0}}] >> 30:[0,52,"Marionette:GetContext"] << 30:[1,52,null,{"value":"chrome"}] >> 50:[0,53,"Marionette:SetContext",{"value":"content"}] << 26:[1,53,null,{"value":null}] >> 30:[0,54,"Marionette:GetContext"] << 31:[1,54,null,{"value":"content"}] >> 49:[0,55,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,55,null,{"value":null}] >> 2275:[0,56,"WebDriver:ExecuteScript",{"args":["Hk8hAjVDsXnd"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,56,null,{"value":null}] >> 30:[0,57,"Marionette:GetContext"] << 30:[1,57,null,{"value":"chrome"}] >> 50:[0,58,"Marionette:SetContext",{"value":"content"}] << 26:[1,58,null,{"value":null}] >> 30:[0,59,"Marionette:GetContext"] << 31:[1,59,null,{"value":"content"}] >> 49:[0,60,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,60,null,{"value":null}] >> 3030:[0,61,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"Hk8hAjVDsXnd","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 262:[1,61,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"Hk8hAjVDsXnd","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0,"lastModified":"2023-06-10T02:25:42.000Z"}}] >> 30:[0,62,"Marionette:GetContext"] << 30:[1,62,null,{"value":"chrome"}] >> 50:[0,63,"Marionette:SetContext",{"value":"content"}] << 26:[1,63,null,{"value":null}] >> 30:[0,64,"Marionette:GetContext"] << 31:[1,64,null,{"value":"content"}] >> 49:[0,65,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,65,null,{"value":null}] >> 2275:[0,66,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 171:[1,66,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550557,"lastModified":1759550557,"parentGuid":"root________","childCount":0}}] >> 30:[0,67,"Marionette:GetContext"] << 30:[1,67,null,{"value":"chrome"}] >> 50:[0,68,"Marionette:SetContext",{"value":"content"}] << 26:[1,68,null,{"value":null}] >> 30:[0,69,"Marionette:GetContext"] << 31:[1,69,null,{"value":"content"}] >> 49:[0,70,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,70,null,{"value":null}] >> 2275:[0,71,"WebDriver:ExecuteScript",{"args":["yrS1Xbh_V57Z"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,71,null,{"value":null}] >> 30:[0,72,"Marionette:GetContext"] << 30:[1,72,null,{"value":"chrome"}] >> 50:[0,73,"Marionette:SetContext",{"value":"content"}] << 26:[1,73,null,{"value":null}] >> 30:[0,74,"Marionette:GetContext"] << 31:[1,74,null,{"value":"content"}] >> 49:[0,75,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,75,null,{"value":null}] >> 2956:[0,76,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686373477,"guid":"yrS1Xbh_V57Z","parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 188:[1,76,null,{"value":{"dateAdded":"2023-06-10T05:04:37.000Z","guid":"yrS1Xbh_V57Z","parentGuid":"menu________","title":"CPAN","type":2,"index":0,"lastModified":"2023-06-10T05:04:37.000Z"}}] >> 30:[0,77,"Marionette:GetContext"] << 30:[1,77,null,{"value":"chrome"}] >> 50:[0,78,"Marionette:SetContext",{"value":"content"}] << 26:[1,78,null,{"value":null}] >> 30:[0,79,"Marionette:GetContext"] << 31:[1,79,null,{"value":"content"}] >> 49:[0,80,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,80,null,{"value":null}] >> 2275:[0,81,"WebDriver:ExecuteScript",{"args":["FiSDkc1j4TAK"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,81,null,{"value":null}] >> 30:[0,82,"Marionette:GetContext"] << 30:[1,82,null,{"value":"chrome"}] >> 50:[0,83,"Marionette:SetContext",{"value":"content"}] << 26:[1,83,null,{"value":null}] >> 30:[0,84,"Marionette:GetContext"] [Parent 2749614, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 (firefox-esr:2749614): GLib-GObject-CRITICAL **: 04:02:37.941: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed << 31:[1,84,null,{"value":"content"}] >> 49:[0,85,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,85,null,{"value":null}] >> 4135:[0,86,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"FiSDkc1j4TAK","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"yrS1Xbh_V57Z","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 331:[1,86,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"FiSDkc1j4TAK","parentGuid":"yrS1Xbh_V57Z","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0,"lastModified":"2023-06-01T09:16:12.000Z"}}] >> 30:[0,87,"Marionette:GetContext"] << 30:[1,87,null,{"value":"chrome"}] >> 50:[0,88,"Marionette:SetContext",{"value":"content"}] << 26:[1,88,null,{"value":null}] >> 30:[0,89,"Marionette:GetContext"] << 31:[1,89,null,{"value":"content"}] >> 49:[0,90,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,90,null,{"value":null}] >> 2275:[0,91,"WebDriver:ExecuteScript",{"args":["l6FY2xeXhjGD"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,91,null,{"value":null}] >> 30:[0,92,"Marionette:GetContext"] << 30:[1,92,null,{"value":"chrome"}] >> 50:[0,93,"Marionette:SetContext",{"value":"content"}] << 26:[1,93,null,{"value":null}] >> 30:[0,94,"Marionette:GetContext"] << 31:[1,94,null,{"value":"content"}] >> 49:[0,95,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,95,null,{"value":null}] >> 4153:[0,96,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"l6FY2xeXhjGD","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"yrS1Xbh_V57Z","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 349:[1,96,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"l6FY2xeXhjGD","parentGuid":"yrS1Xbh_V57Z","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1,"lastModified":"2023-06-02T02:17:32.000Z"}}] >> 30:[0,97,"Marionette:GetContext"] << 30:[1,97,null,{"value":"chrome"}] >> 50:[0,98,"Marionette:SetContext",{"value":"content"}] << 26:[1,98,null,{"value":null}] >> 30:[0,99,"Marionette:GetContext"] << 31:[1,99,null,{"value":"content"}] >> 50:[0,100,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,100,null,{"value":null}] >> 2276:[0,101,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,101,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550557,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] >> 31:[0,102,"Marionette:GetContext"] << 31:[1,102,null,{"value":"chrome"}] >> 51:[0,103,"Marionette:SetContext",{"value":"content"}] << 27:[1,103,null,{"value":null}] >> 31:[0,104,"Marionette:GetContext"] << 32:[1,104,null,{"value":"content"}] >> 50:[0,105,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,105,null,{"value":null}] >> 2276:[0,106,"WebDriver:ExecuteScript",{"args":["nSyzF75iqGdz"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,106,null,{"value":null}] >> 31:[0,107,"Marionette:GetContext"] << 31:[1,107,null,{"value":"chrome"}] >> 51:[0,108,"Marionette:SetContext",{"value":"content"}] << 27:[1,108,null,{"value":null}] >> 31:[0,109,"Marionette:GetContext"] << 32:[1,109,null,{"value":"content"}] >> 50:[0,110,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,110,null,{"value":null}] >> 2961:[0,111,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686373477,"guid":"nSyzF75iqGdz","parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 193:[1,111,null,{"value":{"dateAdded":"2023-06-10T05:04:37.000Z","guid":"nSyzF75iqGdz","parentGuid":"menu________","title":"Searches","type":2,"index":1,"lastModified":"2023-06-10T05:04:37.000Z"}}] >> 31:[0,112,"Marionette:GetContext"] << 31:[1,112,null,{"value":"chrome"}] >> 51:[0,113,"Marionette:SetContext",{"value":"content"}] << 27:[1,113,null,{"value":null}] >> 31:[0,114,"Marionette:GetContext"] << 32:[1,114,null,{"value":"content"}] >> 50:[0,115,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,115,null,{"value":null}] >> 2276:[0,116,"WebDriver:ExecuteScript",{"args":["520m5TYL1kSx"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,116,null,{"value":null}] >> 31:[0,117,"Marionette:GetContext"] << 31:[1,117,null,{"value":"chrome"}] >> 51:[0,118,"Marionette:SetContext",{"value":"content"}] << 27:[1,118,null,{"value":null}] >> 31:[0,119,"Marionette:GetContext"] << 32:[1,119,null,{"value":"content"}] >> 50:[0,120,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,120,null,{"value":null}] >> 4273:[0,121,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"520m5TYL1kSx","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQklEQVQ4jaWTT0xbdQDHP+9f+17/UGAtBQIkmywDVERnZoJmISaCMcAyN5w4EndQY3bw5ElRSdBwWswOxh3mdIkeAJ0kbstwZMkuiH9QMgfbCDB0UrLSFvra0vb1vffzYDTj7Of2vXxO3w/8T6QHx3Lf/pDQPIeKknLCk88/rRVLnoKuZ12f54ZXckaMTetazXezeQnEDoEA6e7hA61SuWc4UL+vR3/hOPreR5EcB8cu4mxtYU2Nk57/YdLeMt/b0/zzrDSE+59g5diBx5RdkcnwoRNRpWk/pdgS29cukhkbQ44ECb70BsHn+2B9hY0vT6ey68s9zV/fnAaQ73Z06GrIN1w18FbUUQxiAx3YsWUq3jlN7blvUMNVmKNn+Ku/HSuTJdL3eqU/XDO00rs7CiA7dXZHoPmpHrm+ifi7r6F392O8+CYaYDzRTnjkLJ6mFggFiQ+fxAk3ENrd/Bz+SM9YH4pcRAx6u/rJTI6i1DSgvHySW4sJkps5XAHznkaSRj2qUBGKQebKKNqzR5CCwd6H51sUWcpbbWp5Jeb4ZyihcuRQGNPcJp6ykCWIxZMUaqvwP+JDb9Ip/ngVbXczsqweLAuZimoUC37FF8COJ5Cr6/FkU7S1VKPZ93BXx+mVHPKNf2KVu4gNjfQvy+AKVJnQetiV1JLmKQnhat59e7FzJvn5GaKdRyFzG2fpbVLTVTjCh1ypkZsTyKEIrrVNSYg1KyELueT3Thfu3EB/pgt3M4F989d/HuJrxwmPgDeAYWg4MQl3yyR45FXI5RC2WIhs6K6sCvfz4uWvKOvqR8pkcBbvYAEoFXjKDiP9HuHStmB13UFO5gl2HsW+fgGlWPikcWnJUtX7pYmsunjR+GOhO/rROdKnhvjtpzE+1S5jm2mSPQlWq1xGbmVoe/8MpNbYmJuZSpr3rjeAkB+amk27TnYw8e3Z+4qhUv3FJfy76rDtIpJu8IraznHRQdOpC0g+iJ//OGWtxT5om1hN72xh4PFW2aj4MNTyZLfUeYx8OESgMoq34JBZmMW5Mkpu5fb3bsYc3NM6t7OFf5nuqzNq9NqDlvAMirzVZhTzAUvzWiWfd0bDPW9Z5kTL+PzmgzX+DWN5abKzgxf8AAAAAElFTkSuQmCC","parentGuid":"nSyzF75iqGdz","title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 277:[1,121,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"520m5TYL1kSx","parentGuid":"nSyzF75iqGdz","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0,"lastModified":"2023-06-02T01:52:51.000Z"}}] >> 31:[0,122,"Marionette:GetContext"] << 31:[1,122,null,{"value":"chrome"}] >> 51:[0,123,"Marionette:SetContext",{"value":"content"}] << 27:[1,123,null,{"value":null}] >> 31:[0,124,"Marionette:GetContext"] << 32:[1,124,null,{"value":"content"}] >> 50:[0,125,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,125,null,{"value":null}] >> 2276:[0,126,"WebDriver:ExecuteScript",{"args":["w8QcgAQuii9d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,126,null,{"value":null}] >> 31:[0,127,"Marionette:GetContext"] << 31:[1,127,null,{"value":"chrome"}] >> 51:[0,128,"Marionette:SetContext",{"value":"content"}] << 27:[1,128,null,{"value":null}] >> 31:[0,129,"Marionette:GetContext"] << 32:[1,129,null,{"value":"content"}] >> 50:[0,130,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,130,null,{"value":null}] >> 4160:[0,131,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"w8QcgAQuii9d","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 373:[1,131,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"w8QcgAQuii9d","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":2,"lastModified":"1970-01-20T12:13:31.000Z"}}] >> 31:[0,132,"Marionette:GetContext"] << 31:[1,132,null,{"value":"chrome"}] >> 51:[0,133,"Marionette:SetContext",{"value":"content"}] << 27:[1,133,null,{"value":null}] >> 31:[0,134,"Marionette:GetContext"] << 32:[1,134,null,{"value":"content"}] >> 50:[0,135,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,135,null,{"value":null}] >> 2276:[0,136,"WebDriver:ExecuteScript",{"args":["8l8cVBuLinZC"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,136,null,{"value":null}] >> 31:[0,137,"Marionette:GetContext"] << 31:[1,137,null,{"value":"chrome"}] >> 51:[0,138,"Marionette:SetContext",{"value":"content"}] << 27:[1,138,null,{"value":null}] >> 31:[0,139,"Marionette:GetContext"] << 32:[1,139,null,{"value":"content"}] >> 50:[0,140,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,140,null,{"value":null}] >> 3015:[0,141,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"8l8cVBuLinZC","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 247:[1,141,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"8l8cVBuLinZC","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":3,"lastModified":"2023-06-10T02:28:01.000Z"}}] >> 31:[0,142,"Marionette:GetContext"] << 31:[1,142,null,{"value":"chrome"}] >> 51:[0,143,"Marionette:SetContext",{"value":"content"}] << 27:[1,143,null,{"value":null}] >> 181:[0,144,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] << 68:[1,144,null,{"value":"DmkQIMOrCxrWJW7IH93sgenJe6VXl0ZXyFM2jDBloc4"}] >> 31:[0,145,"Marionette:GetContext"] << 32:[1,145,null,{"value":"content"}] >> 51:[0,146,"Marionette:SetContext",{"value":"content"}] << 27:[1,146,null,{"value":null}] >> 121:[0,147,"WebDriver:ExecuteScript",{"script":"return (async function() { return await window.HAR.triggerExport() })();\n"}] << 336:[1,147,{"error":"javascript error","message":"TypeError: can't access property \"triggerExport\", window.HAR is undefined","stacktrace":"@moz-nullprincipal:{22327bfe-2eaa-402b-b9f5-3a3ec801e2d7}:2:34\n@moz-nullprincipal:{22327bfe-2eaa-402b-b9f5-3a3ec801e2d7}:2:76\n@moz-nullprincipal:{22327bfe-2eaa-402b-b9f5-3a3ec801e2d7}:4:8\n"},null] >> 31:[0,148,"Marionette:GetContext"] << 32:[1,148,null,{"value":"content"}] >> 50:[0,149,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,149,null,{"value":null}] >> 839:[0,150,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 334:[1,150,null,{"value":[{"guid":"FiSDkc1j4TAK","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"yrS1Xbh_V57Z","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 31:[0,151,"Marionette:GetContext"] << 31:[1,151,null,{"value":"chrome"}] >> 50:[0,152,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,152,null,{"value":null}] >> 2276:[0,153,"WebDriver:ExecuteScript",{"args":["FiSDkc1j4TAK"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1420:[1,153,null,{"value":{"guid":"FiSDkc1j4TAK","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610972,"parentGuid":"yrS1Xbh_V57Z","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC"}}] >> 31:[0,154,"Marionette:GetContext"] << 31:[1,154,null,{"value":"chrome"}] >> 50:[0,155,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,155,null,{"value":null}] >> 31:[0,156,"Marionette:GetContext"] << 31:[1,156,null,{"value":"chrome"}] >> 51:[0,157,"Marionette:SetContext",{"value":"content"}] << 27:[1,157,null,{"value":null}] >> 31:[0,158,"Marionette:GetContext"] << 32:[1,158,null,{"value":"content"}] >> 50:[0,159,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,159,null,{"value":null}] >> 817:[0,160,"WebDriver:ExecuteScript",{"args":[{"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 249:[1,160,null,{"value":[{"guid":"8l8cVBuLinZC","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"menu________","url":"https://perlmonks.org/"}]}] >> 31:[0,161,"Marionette:GetContext"] << 31:[1,161,null,{"value":"chrome"}] >> 50:[0,162,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,162,null,{"value":null}] >> 2276:[0,163,"WebDriver:ExecuteScript",{"args":["8l8cVBuLinZC"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 225:[1,163,null,{"value":{"guid":"8l8cVBuLinZC","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364081,"parentGuid":"menu________","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,164,"Marionette:GetContext"] << 31:[1,164,null,{"value":"chrome"}] >> 50:[0,165,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,165,null,{"value":null}] >> 31:[0,166,"Marionette:GetContext"] << 31:[1,166,null,{"value":"chrome"}] >> 51:[0,167,"Marionette:SetContext",{"value":"content"}] << 27:[1,167,null,{"value":null}] >> 35:[0,168,"WebDriver:GetCapabilities"] << 1300:[1,168,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:55963","noProxy":["local.example.org"],"sslProxy":"localhost:53393","socksProxy":"localhost:34235","socksVersion":5},"unhandledPromptBehavior":"accept and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2749614,"moz:profile":"/tmp/firefox_marionette_local_Alh1pA9_yWq/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":6543,"pageLoad":54321,"script":4567},"setWindowRect":true,"strictFileInteractability":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:55963","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:34235","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:53393"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}}] # $capabilities->moz_use_non_spec_compliant_pointer_origin is not supported for 140.3.1 # Testing has been running for 10 seconds at t/01-marionette.t line 1310 >> 35:[0,169,"WebDriver:GetCapabilities"] << 1300:[1,169,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:55963","noProxy":["local.example.org"],"sslProxy":"localhost:53393","socksProxy":"localhost:34235","socksVersion":5},"unhandledPromptBehavior":"accept and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2749614,"moz:profile":"/tmp/firefox_marionette_local_Alh1pA9_yWq/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":6543,"pageLoad":54321,"script":4567},"setWindowRect":true,"strictFileInteractability":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:55963","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:34235","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:53393"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}}] # Testing has been running for 10 seconds at t/01-marionette.t line 1340 >> 52:[0,170,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 62:[1,170,null,{"cause":"shutdown","forced":false,"in_app":true}] # Starting new firefox for testing proxies with proxy port TCP/38631 # Testing has been running for 11 seconds at t/01-marionette.t line 1461 ** firefox --version ** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_DOyZC6NOola/profile --no-remote --new-instance --devtools [2750176] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 220:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{"proxy":{"proxyAutoconfigUrl":"http://localhost:38631","proxyType":"pac"}}},"proxy":{"proxyAutoconfigUrl":"http://localhost:38631","proxyType":"pac"}}] << 939:[1,1,null,{"sessionId":"56f75539-f850-4865-bfe8-56e8ecef474a","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:38631"},"unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2750176,"moz:profile":"/tmp/firefox_marionette_local_DOyZC6NOola/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"proxy":{"proxyAutoconfigUrl":"http://localhost:38631","proxyType":"pac"}}}}}] >> 29:[0,2,"WebDriver:GetTimeouts"] << 58:[1,2,null,{"implicit":0,"pageLoad":300000,"script":30000}] >> 76:[0,3,"WebDriver:SetTimeouts",{"implicit":0,"pageLoad":65432,"script":30000}] << 25:[1,3,null,{"value":null}] >> 179:[0,4,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] << 66:[1,4,null,{"value":"aCyjmKj2KbwdC1GvIustKARevIZSeOSlcqrLnIgAgOQ"}] >> 29:[0,5,"Marionette:GetContext"] << 30:[1,5,null,{"value":"content"}] >> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,6,null,{"value":null}] >> 814:[0,7,"WebDriver:ExecuteScript",{"args":["geo.enabled",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 25:[1,7,null,{"value":null}] >> 29:[0,8,"Marionette:GetContext"] << 29:[1,8,null,{"value":"chrome"}] >> 49:[0,9,"Marionette:SetContext",{"value":"content"}] << 25:[1,9,null,{"value":null}] >> 30:[0,10,"Marionette:GetContext"] << 31:[1,10,null,{"value":"content"}] >> 49:[0,11,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,11,null,{"value":null}] >> 828:[0,12,"WebDriver:ExecuteScript",{"args":["geo.provider.use_geoclue",0],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,12,null,{"value":null}] >> 30:[0,13,"Marionette:GetContext"] << 30:[1,13,null,{"value":"chrome"}] >> 50:[0,14,"Marionette:SetContext",{"value":"content"}] << 26:[1,14,null,{"value":null}] >> 30:[0,15,"Marionette:GetContext"] << 31:[1,15,null,{"value":"content"}] >> 49:[0,16,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,16,null,{"value":null}] >> 833:[0,17,"WebDriver:ExecuteScript",{"args":["geo.provider.use_corelocation",0],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,17,null,{"value":null}] >> 30:[0,18,"Marionette:GetContext"] << 30:[1,18,null,{"value":"chrome"}] >> 50:[0,19,"Marionette:SetContext",{"value":"content"}] << 26:[1,19,null,{"value":null}] >> 30:[0,20,"Marionette:GetContext"] << 31:[1,20,null,{"value":"content"}] >> 49:[0,21,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,21,null,{"value":null}] >> 824:[0,22,"WebDriver:ExecuteScript",{"args":["geo.provider.testing",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,22,null,{"value":null}] >> 30:[0,23,"Marionette:GetContext"] << 30:[1,23,null,{"value":"chrome"}] >> 50:[0,24,"Marionette:SetContext",{"value":"content"}] << 26:[1,24,null,{"value":null}] >> 30:[0,25,"Marionette:GetContext"] << 31:[1,25,null,{"value":"content"}] >> 49:[0,26,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,26,null,{"value":null}] >> 822:[0,27,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,27,null,{"value":null}] >> 30:[0,28,"Marionette:GetContext"] << 30:[1,28,null,{"value":"chrome"}] >> 50:[0,29,"Marionette:SetContext",{"value":"content"}] << 26:[1,29,null,{"value":null}] >> 30:[0,30,"Marionette:GetContext"] << 31:[1,30,null,{"value":"content"}] >> 49:[0,31,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,31,null,{"value":null}] >> 828:[0,32,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing.allow",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,32,null,{"value":null}] >> 30:[0,33,"Marionette:GetContext"] << 30:[1,33,null,{"value":"chrome"}] >> 50:[0,34,"Marionette:SetContext",{"value":"content"}] << 26:[1,34,null,{"value":null}] >> 30:[0,35,"Marionette:GetContext"] << 31:[1,35,null,{"value":"content"}] >> 49:[0,36,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,36,null,{"value":null}] >> 830:[0,37,"WebDriver:ExecuteScript",{"args":["geo.security.allowinsecure",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,37,null,{"value":null}] >> 30:[0,38,"Marionette:GetContext"] << 30:[1,38,null,{"value":"chrome"}] >> 50:[0,39,"Marionette:SetContext",{"value":"content"}] << 26:[1,39,null,{"value":null}] >> 30:[0,40,"Marionette:GetContext"] << 31:[1,40,null,{"value":"content"}] >> 49:[0,41,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,41,null,{"value":null}] >> 817:[0,42,"WebDriver:ExecuteScript",{"args":["geo.wifi.scan",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,42,null,{"value":null}] >> 30:[0,43,"Marionette:GetContext"] << 30:[1,43,null,{"value":"chrome"}] >> 50:[0,44,"Marionette:SetContext",{"value":"content"}] << 26:[1,44,null,{"value":null}] >> 30:[0,45,"Marionette:GetContext"] << 31:[1,45,null,{"value":"content"}] >> 49:[0,46,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,46,null,{"value":null}] >> 827:[0,47,"WebDriver:ExecuteScript",{"args":["permissions.default.geo",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,47,null,{"value":null}] >> 30:[0,48,"Marionette:GetContext"] << 30:[1,48,null,{"value":"chrome"}] >> 50:[0,49,"Marionette:SetContext",{"value":"content"}] << 26:[1,49,null,{"value":null}] >> 30:[0,50,"Marionette:GetContext"] << 31:[1,50,null,{"value":"content"}] >> 49:[0,51,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,51,null,{"value":null}] >> 889:[0,52,"WebDriver:ExecuteScript",{"args":["geo.provider.network.url","data:application/json,{\"location\":{\"lat\":40,\"lng\":24}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,52,null,{"value":null}] >> 30:[0,53,"Marionette:GetContext"] << 30:[1,53,null,{"value":"chrome"}] >> 50:[0,54,"Marionette:SetContext",{"value":"content"}] << 26:[1,54,null,{"value":null}] >> 30:[0,55,"Marionette:GetContext"] << 31:[1,55,null,{"value":"content"}] >> 49:[0,56,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,56,null,{"value":null}] >> 877:[0,57,"WebDriver:ExecuteScript",{"args":["geo.wifi.uri","data:application/json,{\"location\":{\"lat\":40,\"lng\":24}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,57,null,{"value":null}] >> 30:[0,58,"Marionette:GetContext"] << 30:[1,58,null,{"value":"chrome"}] >> 50:[0,59,"Marionette:SetContext",{"value":"content"}] << 26:[1,59,null,{"value":null}] >> 34:[0,60,"WebDriver:GetCapabilities"] << 898:[1,60,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:38631"},"unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2750176,"moz:profile":"/tmp/firefox_marionette_local_DOyZC6NOola/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":65432,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"proxy":{"proxyAutoconfigUrl":"http://localhost:38631","proxyType":"pac"}}}}}}] >> 189:[0,61,"WebDriver:Navigate",{"sessionId":"56f75539-f850-4865-bfe8-56e8ecef474a","url":"file:///build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/elements.html"}] << 26:[1,61,null,{"value":null}] >> 862:[0,62,"WebDriver:ExecuteScript",{"script":"return (async function() { function getGeo() { return new Promise((resolve, reject) => { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(resolve, reject, { maximumAge: 0, enableHighAccuracy: true }); } else { reject(\"navigator.geolocation is unavailable\"); } }) }; return await getGeo().then((response) => { let d = new Date(); return { \"timezone_offset\": d.getTimezoneOffset(), \"latitude\": response[\"coords\"][\"latitude\"], \"longitude\": response[\"coords\"][\"longitude\"], \"altitude\": response[\"coords\"][\"altitude\"], \"accuracy\": response[\"coords\"][\"accuracy\"], \"altitudeAccuracy\": response[\"coords\"][\"altitudeAccuracy\"], \"heading\": response[\"coords\"][\"heading\"], \"speed\": response[\"coords\"][\"speed\"], }; }).catch((err) => { throw err.message }); })(); "}] << 153:[1,62,null,{"value":{"timezone_offset":0,"latitude":40,"longitude":24,"altitude":null,"accuracy":0,"altitudeAccuracy":null,"heading":null,"speed":null}}] >> 51:[0,63,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 61:[1,63,null,{"cause":"shutdown","forced":false,"in_app":true}] # Starting new firefox for testing proxies again using default proxy port TCP/3128 # Starting new firefox for testing PDFs and script elements # Testing has been running for 17 seconds at t/01-marionette.t line 1579 ** firefox --version ** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_7DwzVtbNgRC/profile --no-remote --new-instance [2751918] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 126:[0,1,"WebDriver:NewSession",{"acceptInsecureCerts":true,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true}}}] << 828:[1,1,null,{"sessionId":"46a0667a-1fd6-4884-8040-eef2109a2179","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2751918,"moz:profile":"/tmp/firefox_marionette_local_7DwzVtbNgRC/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true}},"proxy":{}}}] >> 29:[0,2,"Marionette:GetContext"] << 30:[1,2,null,{"value":"content"}] >> 48:[0,3,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,3,null,{"value":null}] >> 2299:[0,4,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"toolbar_____"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 25:[1,4,null,{"value":null}] >> 29:[0,5,"Marionette:GetContext"] << 29:[1,5,null,{"value":"chrome"}] >> 49:[0,6,"Marionette:SetContext",{"value":"content"}] << 25:[1,6,null,{"value":null}] >> 29:[0,7,"Marionette:GetContext"] << 30:[1,7,null,{"value":"content"}] >> 48:[0,8,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,8,null,{"value":null}] >> 2299:[0,9,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 25:[1,9,null,{"value":null}] >> 30:[0,10,"Marionette:GetContext"] << 30:[1,10,null,{"value":"chrome"}] >> 50:[0,11,"Marionette:SetContext",{"value":"content"}] << 26:[1,11,null,{"value":null}] >> 30:[0,12,"Marionette:GetContext"] << 31:[1,12,null,{"value":"content"}] >> 49:[0,13,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,13,null,{"value":null}] >> 2300:[0,14,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"Zmq07OElFGFd"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,14,null,{"value":null}] >> 30:[0,15,"Marionette:GetContext"] << 30:[1,15,null,{"value":"chrome"}] >> 50:[0,16,"Marionette:SetContext",{"value":"content"}] << 26:[1,16,null,{"value":null}] >> 30:[0,17,"Marionette:GetContext"] << 31:[1,17,null,{"value":"content"}] >> 49:[0,18,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,18,null,{"value":null}] >> 2300:[0,19,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"Zmq07OElFGFd"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,19,null,{"value":null}] >> 30:[0,20,"Marionette:GetContext"] << 30:[1,20,null,{"value":"chrome"}] >> 50:[0,21,"Marionette:SetContext",{"value":"content"}] << 26:[1,21,null,{"value":null}] >> 30:[0,22,"Marionette:GetContext"] << 31:[1,22,null,{"value":"content"}] >> 49:[0,23,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,23,null,{"value":null}] >> 2300:[0,24,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,24,null,{"value":null}] >> 30:[0,25,"Marionette:GetContext"] << 30:[1,25,null,{"value":"chrome"}] >> 50:[0,26,"Marionette:SetContext",{"value":"content"}] << 26:[1,26,null,{"value":null}] >> 30:[0,27,"Marionette:GetContext"] << 31:[1,27,null,{"value":"content"}] >> 49:[0,28,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,28,null,{"value":null}] >> 2300:[0,29,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"mf3E1itk2kJK"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,29,null,{"value":null}] >> 30:[0,30,"Marionette:GetContext"] << 30:[1,30,null,{"value":"chrome"}] >> 50:[0,31,"Marionette:SetContext",{"value":"content"}] << 26:[1,31,null,{"value":null}] >> 30:[0,32,"Marionette:GetContext"] << 31:[1,32,null,{"value":"content"}] >> 49:[0,33,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,33,null,{"value":null}] >> 2300:[0,34,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,34,null,{"value":null}] >> 30:[0,35,"Marionette:GetContext"] << 30:[1,35,null,{"value":"chrome"}] >> 50:[0,36,"Marionette:SetContext",{"value":"content"}] << 26:[1,36,null,{"value":null}] >> 30:[0,37,"Marionette:GetContext"] << 31:[1,37,null,{"value":"content"}] >> 49:[0,38,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,38,null,{"value":null}] >> 2300:[0,39,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,39,null,{"value":null}] >> 30:[0,40,"Marionette:GetContext"] << 30:[1,40,null,{"value":"chrome"}] >> 50:[0,41,"Marionette:SetContext",{"value":"content"}] << 26:[1,41,null,{"value":null}] >> 30:[0,42,"Marionette:GetContext"] << 31:[1,42,null,{"value":"content"}] >> 49:[0,43,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,43,null,{"value":null}] >> 2275:[0,44,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 139:[1,44,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1759550566,"lastModified":1759550566,"childCount":5}}] >> 30:[0,45,"Marionette:GetContext"] << 30:[1,45,null,{"value":"chrome"}] >> 50:[0,46,"Marionette:SetContext",{"value":"content"}] << 26:[1,46,null,{"value":null}] >> 30:[0,47,"Marionette:GetContext"] << 31:[1,47,null,{"value":"content"}] >> 49:[0,48,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,48,null,{"value":null}] >> 2275:[0,49,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,49,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550566,"lastModified":1759550566,"parentGuid":"root________","childCount":0}}] >> 30:[0,50,"Marionette:GetContext"] << 30:[1,50,null,{"value":"chrome"}] >> 50:[0,51,"Marionette:SetContext",{"value":"content"}] << 26:[1,51,null,{"value":null}] >> 30:[0,52,"Marionette:GetContext"] << 31:[1,52,null,{"value":"content"}] >> 49:[0,53,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,53,null,{"value":null}] >> 2275:[0,54,"WebDriver:ExecuteScript",{"args":["Fq4EMTbmntku"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,54,null,{"value":null}] >> 30:[0,55,"Marionette:GetContext"] << 30:[1,55,null,{"value":"chrome"}] >> 50:[0,56,"Marionette:SetContext",{"value":"content"}] << 26:[1,56,null,{"value":null}] >> 30:[0,57,"Marionette:GetContext"] << 31:[1,57,null,{"value":"content"}] >> 49:[0,58,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,58,null,{"value":null}] >> 3030:[0,59,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"Fq4EMTbmntku","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 262:[1,59,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"Fq4EMTbmntku","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0,"lastModified":"2023-06-10T02:25:42.000Z"}}] >> 30:[0,60,"Marionette:GetContext"] << 30:[1,60,null,{"value":"chrome"}] >> 50:[0,61,"Marionette:SetContext",{"value":"content"}] << 26:[1,61,null,{"value":null}] >> 30:[0,62,"Marionette:GetContext"] << 31:[1,62,null,{"value":"content"}] >> 49:[0,63,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,63,null,{"value":null}] >> 2275:[0,64,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 171:[1,64,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550566,"lastModified":1759550566,"parentGuid":"root________","childCount":0}}] >> 30:[0,65,"Marionette:GetContext"] << 30:[1,65,null,{"value":"chrome"}] >> 50:[0,66,"Marionette:SetContext",{"value":"content"}] << 26:[1,66,null,{"value":null}] >> 30:[0,67,"Marionette:GetContext"] << 31:[1,67,null,{"value":"content"}] >> 49:[0,68,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,68,null,{"value":null}] >> 2275:[0,69,"WebDriver:ExecuteScript",{"args":["Zmq07OElFGFd"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,69,null,{"value":null}] >> 30:[0,70,"Marionette:GetContext"] << 30:[1,70,null,{"value":"chrome"}] >> 50:[0,71,"Marionette:SetContext",{"value":"content"}] << 26:[1,71,null,{"value":null}] >> 30:[0,72,"Marionette:GetContext"] << 31:[1,72,null,{"value":"content"}] >> 49:[0,73,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,73,null,{"value":null}] >> 2956:[0,74,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364609,"guid":"Zmq07OElFGFd","parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 188:[1,74,null,{"value":{"dateAdded":"2023-06-10T02:36:49.000Z","guid":"Zmq07OElFGFd","parentGuid":"menu________","title":"CPAN","type":2,"index":0,"lastModified":"2023-06-10T02:36:49.000Z"}}] >> 30:[0,75,"Marionette:GetContext"] << 30:[1,75,null,{"value":"chrome"}] >> 50:[0,76,"Marionette:SetContext",{"value":"content"}] << 26:[1,76,null,{"value":null}] >> 30:[0,77,"Marionette:GetContext"] << 31:[1,77,null,{"value":"content"}] >> 49:[0,78,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,78,null,{"value":null}] >> 2275:[0,79,"WebDriver:ExecuteScript",{"args":["7WAc5KrxF8_i"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,79,null,{"value":null}] >> 30:[0,80,"Marionette:GetContext"] << 30:[1,80,null,{"value":"chrome"}] >> 50:[0,81,"Marionette:SetContext",{"value":"content"}] << 26:[1,81,null,{"value":null}] >> 30:[0,82,"Marionette:GetContext"] << 31:[1,82,null,{"value":"content"}] >> 49:[0,83,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,83,null,{"value":null}] >> 4135:[0,84,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"7WAc5KrxF8_i","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"Zmq07OElFGFd","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 331:[1,84,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"7WAc5KrxF8_i","parentGuid":"Zmq07OElFGFd","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0,"lastModified":"2023-06-01T09:16:12.000Z"}}] >> 30:[0,85,"Marionette:GetContext"] << 30:[1,85,null,{"value":"chrome"}] >> 50:[0,86,"Marionette:SetContext",{"value":"content"}] << 26:[1,86,null,{"value":null}] >> 30:[0,87,"Marionette:GetContext"] << 31:[1,87,null,{"value":"content"}] >> 49:[0,88,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,88,null,{"value":null}] >> 2275:[0,89,"WebDriver:ExecuteScript",{"args":["WWQiYFd2d1x4"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,89,null,{"value":null}] >> 30:[0,90,"Marionette:GetContext"] << 30:[1,90,null,{"value":"chrome"}] >> 50:[0,91,"Marionette:SetContext",{"value":"content"}] << 26:[1,91,null,{"value":null}] >> 30:[0,92,"Marionette:GetContext"] << 31:[1,92,null,{"value":"content"}] >> 49:[0,93,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,93,null,{"value":null}] >> 4153:[0,94,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"WWQiYFd2d1x4","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"Zmq07OElFGFd","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 349:[1,94,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"WWQiYFd2d1x4","parentGuid":"Zmq07OElFGFd","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1,"lastModified":"2023-06-02T02:17:32.000Z"}}] >> 30:[0,95,"Marionette:GetContext"] << 30:[1,95,null,{"value":"chrome"}] >> 50:[0,96,"Marionette:SetContext",{"value":"content"}] << 26:[1,96,null,{"value":null}] >> 30:[0,97,"Marionette:GetContext"] << 31:[1,97,null,{"value":"content"}] >> 49:[0,98,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,98,null,{"value":null}] >> 2275:[0,99,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 171:[1,99,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550566,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] >> 31:[0,100,"Marionette:GetContext"] << 31:[1,100,null,{"value":"chrome"}] >> 51:[0,101,"Marionette:SetContext",{"value":"content"}] << 27:[1,101,null,{"value":null}] >> 31:[0,102,"Marionette:GetContext"] << 32:[1,102,null,{"value":"content"}] >> 50:[0,103,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,103,null,{"value":null}] >> 2276:[0,104,"WebDriver:ExecuteScript",{"args":["mf3E1itk2kJK"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,104,null,{"value":null}] >> 31:[0,105,"Marionette:GetContext"] << 31:[1,105,null,{"value":"chrome"}] >> 51:[0,106,"Marionette:SetContext",{"value":"content"}] << 27:[1,106,null,{"value":null}] >> 31:[0,107,"Marionette:GetContext"] << 32:[1,107,null,{"value":"content"}] >> 50:[0,108,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,108,null,{"value":null}] >> 2961:[0,109,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364609,"guid":"mf3E1itk2kJK","parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 193:[1,109,null,{"value":{"dateAdded":"2023-06-10T02:36:49.000Z","guid":"mf3E1itk2kJK","parentGuid":"menu________","title":"Searches","type":2,"index":1,"lastModified":"2023-06-10T02:36:49.000Z"}}] >> 31:[0,110,"Marionette:GetContext"] << 31:[1,110,null,{"value":"chrome"}] >> 51:[0,111,"Marionette:SetContext",{"value":"content"}] << 27:[1,111,null,{"value":null}] >> 31:[0,112,"Marionette:GetContext"] << 32:[1,112,null,{"value":"content"}] >> 50:[0,113,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,113,null,{"value":null}] >> 2276:[0,114,"WebDriver:ExecuteScript",{"args":["oyBED-KgVV48"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,114,null,{"value":null}] >> 31:[0,115,"Marionette:GetContext"] << 31:[1,115,null,{"value":"chrome"}] >> 51:[0,116,"Marionette:SetContext",{"value":"content"}] << 27:[1,116,null,{"value":null}] >> 31:[0,117,"Marionette:GetContext"] << 32:[1,117,null,{"value":"content"}] >> 50:[0,118,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,118,null,{"value":null}] >> 4273:[0,119,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"oyBED-KgVV48","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQklEQVQ4jaWTT0xbdQDHP+9f+17/UGAtBQIkmywDVERnZoJmISaCMcAyN5w4EndQY3bw5ElRSdBwWswOxh3mdIkeAJ0kbstwZMkuiH9QMgfbCDB0UrLSFvra0vb1vffzYDTj7Of2vXxO3w/8T6QHx3Lf/pDQPIeKknLCk88/rRVLnoKuZ12f54ZXckaMTetazXezeQnEDoEA6e7hA61SuWc4UL+vR3/hOPreR5EcB8cu4mxtYU2Nk57/YdLeMt/b0/zzrDSE+59g5diBx5RdkcnwoRNRpWk/pdgS29cukhkbQ44ECb70BsHn+2B9hY0vT6ey68s9zV/fnAaQ73Z06GrIN1w18FbUUQxiAx3YsWUq3jlN7blvUMNVmKNn+Ku/HSuTJdL3eqU/XDO00rs7CiA7dXZHoPmpHrm+ifi7r6F392O8+CYaYDzRTnjkLJ6mFggFiQ+fxAk3ENrd/Bz+SM9YH4pcRAx6u/rJTI6i1DSgvHySW4sJkps5XAHznkaSRj2qUBGKQebKKNqzR5CCwd6H51sUWcpbbWp5Jeb4ZyihcuRQGNPcJp6ykCWIxZMUaqvwP+JDb9Ip/ngVbXczsqweLAuZimoUC37FF8COJ5Cr6/FkU7S1VKPZ93BXx+mVHPKNf2KVu4gNjfQvy+AKVJnQetiV1JLmKQnhat59e7FzJvn5GaKdRyFzG2fpbVLTVTjCh1ypkZsTyKEIrrVNSYg1KyELueT3Thfu3EB/pgt3M4F989d/HuJrxwmPgDeAYWg4MQl3yyR45FXI5RC2WIhs6K6sCvfz4uWvKOvqR8pkcBbvYAEoFXjKDiP9HuHStmB13UFO5gl2HsW+fgGlWPikcWnJUtX7pYmsunjR+GOhO/rROdKnhvjtpzE+1S5jm2mSPQlWq1xGbmVoe/8MpNbYmJuZSpr3rjeAkB+amk27TnYw8e3Z+4qhUv3FJfy76rDtIpJu8IraznHRQdOpC0g+iJ//OGWtxT5om1hN72xh4PFW2aj4MNTyZLfUeYx8OESgMoq34JBZmMW5Mkpu5fb3bsYc3NM6t7OFf5nuqzNq9NqDlvAMirzVZhTzAUvzWiWfd0bDPW9Z5kTL+PzmgzX+DWN5abKzgxf8AAAAAElFTkSuQmCC","parentGuid":"mf3E1itk2kJK","title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 277:[1,119,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"oyBED-KgVV48","parentGuid":"mf3E1itk2kJK","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0,"lastModified":"2023-06-02T01:52:51.000Z"}}] >> 31:[0,120,"Marionette:GetContext"] << 31:[1,120,null,{"value":"chrome"}] >> 51:[0,121,"Marionette:SetContext",{"value":"content"}] << 27:[1,121,null,{"value":null}] >> 31:[0,122,"Marionette:GetContext"] << 32:[1,122,null,{"value":"content"}] >> 50:[0,123,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,123,null,{"value":null}] >> 2276:[0,124,"WebDriver:ExecuteScript",{"args":["jSMWQ1PQ1DR0"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,124,null,{"value":null}] >> 31:[0,125,"Marionette:GetContext"] << 31:[1,125,null,{"value":"chrome"}] >> 51:[0,126,"Marionette:SetContext",{"value":"content"}] << 27:[1,126,null,{"value":null}] >> 31:[0,127,"Marionette:GetContext"] << 32:[1,127,null,{"value":"content"}] >> 50:[0,128,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,128,null,{"value":null}] >> 4160:[0,129,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"jSMWQ1PQ1DR0","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 373:[1,129,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"jSMWQ1PQ1DR0","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":2,"lastModified":"1970-01-20T12:13:31.000Z"}}] >> 31:[0,130,"Marionette:GetContext"] << 31:[1,130,null,{"value":"chrome"}] >> 51:[0,131,"Marionette:SetContext",{"value":"content"}] << 27:[1,131,null,{"value":null}] >> 31:[0,132,"Marionette:GetContext"] << 32:[1,132,null,{"value":"content"}] >> 50:[0,133,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,133,null,{"value":null}] >> 2276:[0,134,"WebDriver:ExecuteScript",{"args":["veUO3Z_RQ7t8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,134,null,{"value":null}] >> 31:[0,135,"Marionette:GetContext"] << 31:[1,135,null,{"value":"chrome"}] >> 51:[0,136,"Marionette:SetContext",{"value":"content"}] << 27:[1,136,null,{"value":null}] >> 31:[0,137,"Marionette:GetContext"] << 32:[1,137,null,{"value":"content"}] >> 50:[0,138,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,138,null,{"value":null}] >> 3015:[0,139,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"veUO3Z_RQ7t8","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 247:[1,139,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"veUO3Z_RQ7t8","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":3,"lastModified":"2023-06-10T02:28:01.000Z"}}] >> 31:[0,140,"Marionette:GetContext"] << 31:[1,140,null,{"value":"chrome"}] >> 51:[0,141,"Marionette:SetContext",{"value":"content"}] << 27:[1,141,null,{"value":null}] >> 73:[0,142,"WebDriver:ExecuteScript",{"script":"return navigator.userAgent"}] << 95:[1,142,null,{"value":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"}] >> 121:[0,143,"Addon:Install",{"path":"/tmp/firefox_marionette_local_7DwzVtbNgRC/extension/stealth-0.0.1.xpi","temporary":true}] << 81:[1,143,null,{"value":"83983ee391a0c846f363c0e2476eb23687f9064e@temporary-addon"}] >> 1173:[0,144,"WebDriver:ExecuteScript",{"script":"{ if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loading Firefox::Marionette::Extension::Stealth\"); } let navProto = Object.getPrototypeOf(window.navigator); let winProto = Object.getPrototypeOf(window); let fm_def_2 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return false } else { throw TypeError(decodeURIComponent(\\x27%27get webdriver%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_2.toString = function fm_def() { return \"function webdriver() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(navProto, \"webdriver\", {get: fm_def_2, enumerable: false, configurable: true}); console.clear = function() { console.log(\"Firefox::Marionette::Extension::Stealth blocked an attempt at clearing the console...\") }; console.clear.toString = function clear_def() { return \"function clear() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; let getUserMedia = navProto.mozGetUserMedia; if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loaded Firefox::Marionette::Extension::Stealth\"); } } "}] << 27:[1,144,null,{"value":null}] >> 181:[0,145,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] << 68:[1,145,null,{"value":"6Gjlwq_Ju9ru5F--QC-WqNdZqFjcYPGwPbBYVpoEStI"}] >> 31:[0,146,"Marionette:GetContext"] << 32:[1,146,null,{"value":"content"}] >> 50:[0,147,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,147,null,{"value":null}] >> 816:[0,148,"WebDriver:ExecuteScript",{"args":["geo.enabled",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,148,null,{"value":null}] >> 31:[0,149,"Marionette:GetContext"] << 31:[1,149,null,{"value":"chrome"}] >> 51:[0,150,"Marionette:SetContext",{"value":"content"}] << 27:[1,150,null,{"value":null}] >> 31:[0,151,"Marionette:GetContext"] << 32:[1,151,null,{"value":"content"}] >> 50:[0,152,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,152,null,{"value":null}] >> 829:[0,153,"WebDriver:ExecuteScript",{"args":["geo.provider.use_geoclue",0],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,153,null,{"value":null}] >> 31:[0,154,"Marionette:GetContext"] << 31:[1,154,null,{"value":"chrome"}] >> 51:[0,155,"Marionette:SetContext",{"value":"content"}] << 27:[1,155,null,{"value":null}] >> 31:[0,156,"Marionette:GetContext"] << 32:[1,156,null,{"value":"content"}] >> 50:[0,157,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,157,null,{"value":null}] >> 834:[0,158,"WebDriver:ExecuteScript",{"args":["geo.provider.use_corelocation",0],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,158,null,{"value":null}] >> 31:[0,159,"Marionette:GetContext"] << 31:[1,159,null,{"value":"chrome"}] >> 51:[0,160,"Marionette:SetContext",{"value":"content"}] << 27:[1,160,null,{"value":null}] >> 31:[0,161,"Marionette:GetContext"] << 32:[1,161,null,{"value":"content"}] >> 50:[0,162,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,162,null,{"value":null}] >> 825:[0,163,"WebDriver:ExecuteScript",{"args":["geo.provider.testing",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,163,null,{"value":null}] >> 31:[0,164,"Marionette:GetContext"] << 31:[1,164,null,{"value":"chrome"}] >> 51:[0,165,"Marionette:SetContext",{"value":"content"}] << 27:[1,165,null,{"value":null}] >> 31:[0,166,"Marionette:GetContext"] << 32:[1,166,null,{"value":"content"}] >> 50:[0,167,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,167,null,{"value":null}] >> 823:[0,168,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,168,null,{"value":null}] >> 31:[0,169,"Marionette:GetContext"] << 31:[1,169,null,{"value":"chrome"}] >> 51:[0,170,"Marionette:SetContext",{"value":"content"}] << 27:[1,170,null,{"value":null}] >> 31:[0,171,"Marionette:GetContext"] << 32:[1,171,null,{"value":"content"}] >> 50:[0,172,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,172,null,{"value":null}] >> 829:[0,173,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing.allow",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,173,null,{"value":null}] >> 31:[0,174,"Marionette:GetContext"] << 31:[1,174,null,{"value":"chrome"}] >> 51:[0,175,"Marionette:SetContext",{"value":"content"}] << 27:[1,175,null,{"value":null}] >> 31:[0,176,"Marionette:GetContext"] << 32:[1,176,null,{"value":"content"}] >> 50:[0,177,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,177,null,{"value":null}] >> 831:[0,178,"WebDriver:ExecuteScript",{"args":["geo.security.allowinsecure",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,178,null,{"value":null}] >> 31:[0,179,"Marionette:GetContext"] << 31:[1,179,null,{"value":"chrome"}] >> 51:[0,180,"Marionette:SetContext",{"value":"content"}] << 27:[1,180,null,{"value":null}] >> 31:[0,181,"Marionette:GetContext"] << 32:[1,181,null,{"value":"content"}] >> 50:[0,182,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,182,null,{"value":null}] >> 818:[0,183,"WebDriver:ExecuteScript",{"args":["geo.wifi.scan",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,183,null,{"value":null}] >> 31:[0,184,"Marionette:GetContext"] << 31:[1,184,null,{"value":"chrome"}] >> 51:[0,185,"Marionette:SetContext",{"value":"content"}] << 27:[1,185,null,{"value":null}] >> 31:[0,186,"Marionette:GetContext"] << 32:[1,186,null,{"value":"content"}] >> 50:[0,187,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,187,null,{"value":null}] >> 828:[0,188,"WebDriver:ExecuteScript",{"args":["permissions.default.geo",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,188,null,{"value":null}] >> 31:[0,189,"Marionette:GetContext"] << 31:[1,189,null,{"value":"chrome"}] >> 51:[0,190,"Marionette:SetContext",{"value":"content"}] << 27:[1,190,null,{"value":null}] >> 178:[0,191,"WebDriver:ExecuteScript",{"script":"let c = document.createElement('canvas'); return c.getContext('webgl2') ? true : c.getContext('experimental-webgl') ? true : false;"}] << 27:[1,191,null,{"value":true}] # WebGL is enabled by default when visible and addons are turned off >> 31:[0,192,"Marionette:GetContext"] << 32:[1,192,null,{"value":"content"}] >> 50:[0,193,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,193,null,{"value":null}] >> 839:[0,194,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 334:[1,194,null,{"value":[{"guid":"7WAc5KrxF8_i","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"Zmq07OElFGFd","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 31:[0,195,"Marionette:GetContext"] << 31:[1,195,null,{"value":"chrome"}] >> 50:[0,196,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,196,null,{"value":null}] >> 2276:[0,197,"WebDriver:ExecuteScript",{"args":["7WAc5KrxF8_i"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1420:[1,197,null,{"value":{"guid":"7WAc5KrxF8_i","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610972,"parentGuid":"Zmq07OElFGFd","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC"}}] >> 31:[0,198,"Marionette:GetContext"] << 31:[1,198,null,{"value":"chrome"}] >> 50:[0,199,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,199,null,{"value":null}] >> 31:[0,200,"Marionette:GetContext"] << 31:[1,200,null,{"value":"chrome"}] >> 51:[0,201,"Marionette:SetContext",{"value":"content"}] << 27:[1,201,null,{"value":null}] >> 31:[0,202,"Marionette:GetContext"] << 32:[1,202,null,{"value":"content"}] >> 50:[0,203,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,203,null,{"value":null}] >> 817:[0,204,"WebDriver:ExecuteScript",{"args":[{"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 249:[1,204,null,{"value":[{"guid":"veUO3Z_RQ7t8","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"menu________","url":"https://perlmonks.org/"}]}] >> 31:[0,205,"Marionette:GetContext"] << 31:[1,205,null,{"value":"chrome"}] >> 50:[0,206,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,206,null,{"value":null}] >> 2276:[0,207,"WebDriver:ExecuteScript",{"args":["veUO3Z_RQ7t8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 225:[1,207,null,{"value":{"guid":"veUO3Z_RQ7t8","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364081,"parentGuid":"menu________","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,208,"Marionette:GetContext"] << 31:[1,208,null,{"value":"chrome"}] >> 50:[0,209,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,209,null,{"value":null}] >> 31:[0,210,"Marionette:GetContext"] << 31:[1,210,null,{"value":"chrome"}] >> 51:[0,211,"Marionette:SetContext",{"value":"content"}] << 27:[1,211,null,{"value":null}] >> 186:[0,212,"WebDriver:Navigate",{"sessionId":"46a0667a-1fd6-4884-8040-eef2109a2179","url":"file:///build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/aria.html"}] << 27:[1,212,null,{"value":null}] >> 62:[0,213,"WebDriver:FindElement",{"using":"id","value":"close"}] << 101:[1,213,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"c30a71b7-ad86-4d18-91ea-bd77cc912261"}}] >> 82:[0,214,"WebDriver:GetComputedLabel",{"id":"c30a71b7-ad86-4d18-91ea-bd77cc912261"}] [Parent 2751918, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 (firefox-esr:2751918): GLib-GObject-CRITICAL **: 04:02:48.375: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed [Parent 2751918, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 (firefox-esr:2751918): GLib-GObject-CRITICAL **: 04:02:48.375: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed << 30:[1,214,null,{"value":"Close"}] >> 82:[0,215,"WebDriver:GetComputedLabel",{"id":"c30a71b7-ad86-4d18-91ea-bd77cc912261"}] << 30:[1,215,null,{"value":"Close"}] >> 62:[0,216,"WebDriver:FindElement",{"using":"id","value":"close"}] << 101:[1,216,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"c30a71b7-ad86-4d18-91ea-bd77cc912261"}}] >> 82:[0,217,"WebDriver:GetComputedLabel",{"id":"c30a71b7-ad86-4d18-91ea-bd77cc912261"}] << 30:[1,217,null,{"value":"Close"}] >> 62:[0,218,"WebDriver:FindElement",{"using":"id","value":"close"}] << 101:[1,218,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"c30a71b7-ad86-4d18-91ea-bd77cc912261"}}] >> 82:[0,219,"WebDriver:GetComputedLabel",{"id":"c30a71b7-ad86-4d18-91ea-bd77cc912261"}] << 30:[1,219,null,{"value":"Close"}] >> 61:[0,220,"WebDriver:FindElement",{"using":"id","value":"save"}] << 101:[1,220,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"bb337911-3895-4504-ba1e-c164694e20c9"}}] >> 81:[0,221,"WebDriver:GetComputedRole",{"id":"bb337911-3895-4504-ba1e-c164694e20c9"}] << 31:[1,221,null,{"value":"button"}] >> 81:[0,222,"WebDriver:GetComputedRole",{"id":"bb337911-3895-4504-ba1e-c164694e20c9"}] << 31:[1,222,null,{"value":"button"}] >> 61:[0,223,"WebDriver:FindElement",{"using":"id","value":"save"}] << 101:[1,223,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"bb337911-3895-4504-ba1e-c164694e20c9"}}] >> 81:[0,224,"WebDriver:GetComputedRole",{"id":"bb337911-3895-4504-ba1e-c164694e20c9"}] << 31:[1,224,null,{"value":"button"}] >> 61:[0,225,"WebDriver:FindElement",{"using":"id","value":"save"}] << 101:[1,225,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"bb337911-3895-4504-ba1e-c164694e20c9"}}] >> 81:[0,226,"WebDriver:GetComputedRole",{"id":"bb337911-3895-4504-ba1e-c164694e20c9"}] << 31:[1,226,null,{"value":"button"}] >> 73:[0,227,"WebDriver:ExecuteScript",{"script":"return navigator.languages"}] << 37:[1,227,null,{"value":["en-US","en"]}] >> 31:[0,228,"Marionette:GetContext"] << 32:[1,228,null,{"value":"content"}] >> 50:[0,229,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,229,null,{"value":null}] >> 369:[0,230,"WebDriver:ExecuteScript",{"args":["intl.accept_languages"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); return navigator.languages || branch.getComplexValue(arguments[0], Components.interfaces.nsIPrefLocalizedString).data.split(/,\\s*/)"}] << 37:[1,230,null,{"value":["en-US","en"]}] >> 31:[0,231,"Marionette:GetContext"] << 31:[1,231,null,{"value":"chrome"}] >> 51:[0,232,"Marionette:SetContext",{"value":"content"}] << 27:[1,232,null,{"value":null}] >> 31:[0,233,"Marionette:GetContext"] << 32:[1,233,null,{"value":"content"}] >> 50:[0,234,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,234,null,{"value":null}] >> 369:[0,235,"WebDriver:ExecuteScript",{"args":["intl.accept_languages"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); return navigator.languages || branch.getComplexValue(arguments[0], Components.interfaces.nsIPrefLocalizedString).data.split(/,\\s*/)"}] << 37:[1,235,null,{"value":["en-US","en"]}] >> 31:[0,236,"Marionette:GetContext"] << 31:[1,236,null,{"value":"chrome"}] >> 51:[0,237,"Marionette:SetContext",{"value":"content"}] << 27:[1,237,null,{"value":null}] >> 31:[0,238,"Marionette:GetContext"] << 32:[1,238,null,{"value":"content"}] >> 50:[0,239,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,239,null,{"value":null}] >> 843:[0,240,"WebDriver:ExecuteScript",{"args":["intl.accept_languages","en-AU, en-GB, en"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,240,null,{"value":null}] >> 31:[0,241,"Marionette:GetContext"] << 31:[1,241,null,{"value":"chrome"}] >> 51:[0,242,"Marionette:SetContext",{"value":"content"}] << 27:[1,242,null,{"value":null}] >> 73:[0,243,"WebDriver:ExecuteScript",{"script":"return navigator.languages"}] << 45:[1,243,null,{"value":["en-AU","en-GB","en"]}] >> 31:[0,244,"Marionette:GetContext"] << 32:[1,244,null,{"value":"content"}] >> 50:[0,245,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,245,null,{"value":null}] >> 369:[0,246,"WebDriver:ExecuteScript",{"args":["intl.accept_languages"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); return navigator.languages || branch.getComplexValue(arguments[0], Components.interfaces.nsIPrefLocalizedString).data.split(/,\\s*/)"}] << 45:[1,246,null,{"value":["en-AU","en-GB","en"]}] >> 31:[0,247,"Marionette:GetContext"] << 31:[1,247,null,{"value":"chrome"}] >> 51:[0,248,"Marionette:SetContext",{"value":"content"}] << 27:[1,248,null,{"value":null}] >> 31:[0,249,"Marionette:GetContext"] << 32:[1,249,null,{"value":"content"}] >> 50:[0,250,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,250,null,{"value":null}] >> 832:[0,251,"WebDriver:ExecuteScript",{"args":["intl.accept_languages","en-GB"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,251,null,{"value":null}] >> 31:[0,252,"Marionette:GetContext"] << 31:[1,252,null,{"value":"chrome"}] >> 51:[0,253,"Marionette:SetContext",{"value":"content"}] << 27:[1,253,null,{"value":null}] >> 73:[0,254,"WebDriver:ExecuteScript",{"script":"return navigator.languages"}] << 32:[1,254,null,{"value":["en-GB"]}] >> 73:[0,255,"WebDriver:ExecuteScript",{"script":"return navigator.userAgent"}] << 95:[1,255,null,{"value":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"}] >> 31:[0,256,"Marionette:GetContext"] << 32:[1,256,null,{"value":"content"}] >> 50:[0,257,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,257,null,{"value":null}] >> 868:[0,258,"WebDriver:ExecuteScript",{"args":["general.useragent.override","Firefox::Marionette v1.68 test suite"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,258,null,{"value":null}] >> 31:[0,259,"Marionette:GetContext"] << 31:[1,259,null,{"value":"chrome"}] >> 51:[0,260,"Marionette:SetContext",{"value":"content"}] << 27:[1,260,null,{"value":null}] >> 31:[0,261,"Marionette:GetContext"] << 32:[1,261,null,{"value":"content"}] >> 50:[0,262,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,262,null,{"value":null}] >> 831:[0,263,"WebDriver:ExecuteScript",{"args":["general.platform.override",""],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,263,null,{"value":null}] >> 31:[0,264,"Marionette:GetContext"] << 31:[1,264,null,{"value":"chrome"}] >> 51:[0,265,"Marionette:SetContext",{"value":"content"}] << 27:[1,265,null,{"value":null}] >> 31:[0,266,"Marionette:GetContext"] << 32:[1,266,null,{"value":"content"}] >> 50:[0,267,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,267,null,{"value":null}] >> 833:[0,268,"WebDriver:ExecuteScript",{"args":["general.appversion.override",""],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,268,null,{"value":null}] >> 31:[0,269,"Marionette:GetContext"] << 31:[1,269,null,{"value":"chrome"}] >> 51:[0,270,"Marionette:SetContext",{"value":"content"}] << 27:[1,270,null,{"value":null}] >> 31:[0,271,"Marionette:GetContext"] << 32:[1,271,null,{"value":"content"}] >> 50:[0,272,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,272,null,{"value":null}] >> 828:[0,273,"WebDriver:ExecuteScript",{"args":["general.oscpu.override",""],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,273,null,{"value":null}] >> 31:[0,274,"Marionette:GetContext"] << 31:[1,274,null,{"value":"chrome"}] >> 51:[0,275,"Marionette:SetContext",{"value":"content"}] << 27:[1,275,null,{"value":null}] >> 31:[0,276,"Marionette:GetContext"] << 32:[1,276,null,{"value":"content"}] >> 50:[0,277,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,277,null,{"value":null}] >> 271:[0,278,"WebDriver:ExecuteScript",{"args":["network.http.accept"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] << 27:[1,278,null,{"value":null}] >> 31:[0,279,"Marionette:GetContext"] << 31:[1,279,null,{"value":"chrome"}] >> 51:[0,280,"Marionette:SetContext",{"value":"content"}] << 27:[1,280,null,{"value":null}] >> 31:[0,281,"Marionette:GetContext"] << 32:[1,281,null,{"value":"content"}] >> 50:[0,282,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,282,null,{"value":null}] >> 280:[0,283,"WebDriver:ExecuteScript",{"args":["network.http.accept-encoding"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] << 27:[1,283,null,{"value":null}] >> 31:[0,284,"Marionette:GetContext"] << 31:[1,284,null,{"value":"chrome"}] >> 51:[0,285,"Marionette:SetContext",{"value":"content"}] << 27:[1,285,null,{"value":null}] >> 31:[0,286,"Marionette:GetContext"] << 32:[1,286,null,{"value":"content"}] >> 50:[0,287,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,287,null,{"value":null}] >> 287:[0,288,"WebDriver:ExecuteScript",{"args":["network.http.accept-encoding.secure"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] << 27:[1,288,null,{"value":null}] >> 31:[0,289,"Marionette:GetContext"] << 31:[1,289,null,{"value":"chrome"}] >> 51:[0,290,"Marionette:SetContext",{"value":"content"}] << 27:[1,290,null,{"value":null}] >> 31:[0,291,"Marionette:GetContext"] << 32:[1,291,null,{"value":"content"}] >> 50:[0,292,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,292,null,{"value":null}] >> 841:[0,293,"WebDriver:ExecuteScript",{"args":["privacy.donottrackheader.enabled",false],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,293,null,{"value":null}] >> 31:[0,294,"Marionette:GetContext"] << 31:[1,294,null,{"value":"chrome"}] >> 51:[0,295,"Marionette:SetContext",{"value":"content"}] << 27:[1,295,null,{"value":null}] >> 5951:[0,296,"WebDriver:ExecuteScript",{"script":"{ if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loading Firefox::Marionette::Extension::Stealth\"); } let navProto = Object.getPrototypeOf(window.navigator); let winProto = Object.getPrototypeOf(window); let fm_def_2 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return false } else { throw TypeError(decodeURIComponent(\\x27%27get webdriver%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_2.toString = function fm_def() { return \"function webdriver() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(navProto, \"webdriver\", {get: fm_def_2, enumerable: false, configurable: true}); console.clear = function() { console.log(\"Firefox::Marionette::Extension::Stealth blocked an attempt at clearing the console...\") }; console.clear.toString = function clear_def() { return \"function clear() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; let getUserMedia = navProto.mozGetUserMedia; let fm_def_3 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get appVersion%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_3.toString = function fm_def() { return \"function appVersion() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"appVersion\", {get: fm_def_3, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"appVersion\", {get: fm_def_3, enumerable: true, configurable: true}); let fm_def_4 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get oscpu%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_4.toString = function fm_def() { return \"function oscpu() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"oscpu\", {get: fm_def_4, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"oscpu\", {get: fm_def_4, enumerable: true, configurable: true}); let fm_def_5 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get platform%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_5.toString = function fm_def() { return \"function platform() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"platform\", {get: fm_def_5, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"platform\", {get: fm_def_5, enumerable: true, configurable: true}); let fm_def_6 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get product%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_6.toString = function fm_def() { return \"function product() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"product\", {get: fm_def_6, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"product\", {get: fm_def_6, enumerable: true, configurable: true}); let fm_def_7 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get productSub%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_7.toString = function fm_def() { return \"function productSub() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"productSub\", {get: fm_def_7, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"productSub\", {get: fm_def_7, enumerable: true, configurable: true}); let fm_def_8 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27Firefox%3A%3AMarionette%20v1.68%20test%20suite\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get userAgent%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_8.toString = function fm_def() { return \"function userAgent() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"userAgent\", {get: fm_def_8, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"userAgent\", {get: fm_def_8, enumerable: true, configurable: true}); let fm_def_9 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get vendor%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_9.toString = function fm_def() { return \"function vendor() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"vendor\", {get: fm_def_9, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"vendor\", {get: fm_def_9, enumerable: true, configurable: true}); let fm_def_10 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get vendorSub%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_10.toString = function fm_def() { return \"function vendorSub() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"vendorSub\", {get: fm_def_10, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"vendorSub\", {get: fm_def_10, enumerable: true, configurable: true}); if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loaded Firefox::Marionette::Extension::Stealth\"); } } "}] << 27:[1,296,null,{"value":null}] >> 91:[0,297,"Addon:Uninstall",{"id":"83983ee391a0c846f363c0e2476eb23687f9064e@temporary-addon"}] << 27:[1,297,null,{"value":null}] >> 121:[0,298,"Addon:Install",{"path":"/tmp/firefox_marionette_local_7DwzVtbNgRC/extension/stealth-0.0.1.xpi","temporary":true}] << 81:[1,298,null,{"value":"83983ee391a0c846f363c0e2476eb23687f9064e@temporary-addon"}] >> 190:[0,299,"WebDriver:Navigate",{"sessionId":"46a0667a-1fd6-4884-8040-eef2109a2179","url":"file:///build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/elements.html"}] [Parent 2751918, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 (firefox-esr:2751918): GLib-GObject-CRITICAL **: 04:02:48.744: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed << 27:[1,299,null,{"value":null}] >> 73:[0,300,"WebDriver:ExecuteScript",{"script":"return navigator.userAgent"}] << 61:[1,300,null,{"value":"Firefox::Marionette v1.68 test suite"}] >> 31:[0,301,"Marionette:GetContext"] << 32:[1,301,null,{"value":"content"}] >> 50:[0,302,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,302,null,{"value":null}] >> 902:[0,303,"WebDriver:ExecuteScript",{"args":["general.useragent.override","Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,303,null,{"value":null}] >> 31:[0,304,"Marionette:GetContext"] << 31:[1,304,null,{"value":"chrome"}] >> 51:[0,305,"Marionette:SetContext",{"value":"content"}] << 27:[1,305,null,{"value":null}] >> 31:[0,306,"Marionette:GetContext"] << 32:[1,306,null,{"value":"content"}] >> 50:[0,307,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,307,null,{"value":null}] >> 843:[0,308,"WebDriver:ExecuteScript",{"args":["general.platform.override","Linux x86_64"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,308,null,{"value":null}] >> 31:[0,309,"Marionette:GetContext"] << 31:[1,309,null,{"value":"chrome"}] >> 51:[0,310,"Marionette:SetContext",{"value":"content"}] << 27:[1,310,null,{"value":null}] >> 31:[0,311,"Marionette:GetContext"] << 32:[1,311,null,{"value":"content"}] >> 50:[0,312,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,312,null,{"value":null}] >> 842:[0,313,"WebDriver:ExecuteScript",{"args":["general.appversion.override","5.0 (X11)"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,313,null,{"value":null}] >> 31:[0,314,"Marionette:GetContext"] << 31:[1,314,null,{"value":"chrome"}] >> 51:[0,315,"Marionette:SetContext",{"value":"content"}] << 27:[1,315,null,{"value":null}] >> 31:[0,316,"Marionette:GetContext"] << 32:[1,316,null,{"value":"content"}] >> 50:[0,317,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,317,null,{"value":null}] >> 840:[0,318,"WebDriver:ExecuteScript",{"args":["general.oscpu.override","Linux x86_64"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,318,null,{"value":null}] >> 31:[0,319,"Marionette:GetContext"] << 31:[1,319,null,{"value":"chrome"}] >> 51:[0,320,"Marionette:SetContext",{"value":"content"}] << 27:[1,320,null,{"value":null}] >> 31:[0,321,"Marionette:GetContext"] << 32:[1,321,null,{"value":"content"}] >> 50:[0,322,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,322,null,{"value":null}] >> 271:[0,323,"WebDriver:ExecuteScript",{"args":["network.http.accept"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] << 27:[1,323,null,{"value":null}] >> 31:[0,324,"Marionette:GetContext"] << 31:[1,324,null,{"value":"chrome"}] >> 51:[0,325,"Marionette:SetContext",{"value":"content"}] << 27:[1,325,null,{"value":null}] >> 31:[0,326,"Marionette:GetContext"] << 32:[1,326,null,{"value":"content"}] >> 50:[0,327,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,327,null,{"value":null}] >> 280:[0,328,"WebDriver:ExecuteScript",{"args":["network.http.accept-encoding"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] << 27:[1,328,null,{"value":null}] >> 31:[0,329,"Marionette:GetContext"] << 31:[1,329,null,{"value":"chrome"}] >> 51:[0,330,"Marionette:SetContext",{"value":"content"}] << 27:[1,330,null,{"value":null}] >> 31:[0,331,"Marionette:GetContext"] << 32:[1,331,null,{"value":"content"}] >> 50:[0,332,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,332,null,{"value":null}] >> 287:[0,333,"WebDriver:ExecuteScript",{"args":["network.http.accept-encoding.secure"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] << 27:[1,333,null,{"value":null}] >> 31:[0,334,"Marionette:GetContext"] << 31:[1,334,null,{"value":"chrome"}] >> 51:[0,335,"Marionette:SetContext",{"value":"content"}] << 27:[1,335,null,{"value":null}] >> 31:[0,336,"Marionette:GetContext"] << 32:[1,336,null,{"value":"content"}] >> 50:[0,337,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,337,null,{"value":null}] >> 841:[0,338,"WebDriver:ExecuteScript",{"args":["privacy.donottrackheader.enabled",false],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 27:[1,338,null,{"value":null}] >> 31:[0,339,"Marionette:GetContext"] << 31:[1,339,null,{"value":"chrome"}] >> 51:[0,340,"Marionette:SetContext",{"value":"content"}] << 27:[1,340,null,{"value":null}] >> 7061:[0,341,"WebDriver:ExecuteScript",{"script":"{ if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loading Firefox::Marionette::Extension::Stealth\"); } let navProto = Object.getPrototypeOf(window.navigator); let winProto = Object.getPrototypeOf(window); let fm_def_2 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return false } else { throw TypeError(decodeURIComponent(\\x27%27get webdriver%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_2.toString = function fm_def() { return \"function webdriver() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(navProto, \"webdriver\", {get: fm_def_2, enumerable: false, configurable: true}); console.clear = function() { console.log(\"Firefox::Marionette::Extension::Stealth blocked an attempt at clearing the console...\") }; console.clear.toString = function clear_def() { return \"function clear() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; let getUserMedia = navProto.mozGetUserMedia; delete navigator.webkitPersistentStorage; delete navigator.webkitTemporaryStorage; delete window.webkitResolveLocalFileSystemURL; delete window.webkitMediaStream; delete window.webkitSpeechGrammar; delete window.ApplePayError; delete window.CSSPrimitiveValue; delete window.Counter; delete navigator.getStorageUpdates; delete window.WebKitMediaKeys; if (\"onmozfullscreenchange\" in window) { } else { Object.defineProperty(window, \"onmozfullscreenchange\", {value: undefined, writable: true, configurable: true}); } if (\"mozInnerScreenX\" in window) { } else { Object.defineProperty(window, \"mozInnerScreenX\", {value: 0, writable: true, configurable: true}); } if (\"CSSMozDocumentRule\" in window) { } else { Object.defineProperty(window, \"CSSMozDocumentRule\", {value: undefined, writable: true, configurable: true}); } if (\"CanvasCaptureMediaStream\" in window) { } else { Object.defineProperty(window, \"CanvasCaptureMediaStream\", {value: undefined, writable: true, configurable: true}); } let fm_def_3 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x275.0%20%28X11%29\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get appVersion%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_3.toString = function fm_def() { return \"function appVersion() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"appVersion\", {get: fm_def_3, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"appVersion\", {get: fm_def_3, enumerable: true, configurable: true}); let fm_def_4 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27Linux%20x86_64\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get oscpu%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_4.toString = function fm_def() { return \"function oscpu() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"oscpu\", {get: fm_def_4, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"oscpu\", {get: fm_def_4, enumerable: true, configurable: true}); let fm_def_5 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27Linux%20x86_64\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get platform%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_5.toString = function fm_def() { return \"function platform() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"platform\", {get: fm_def_5, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"platform\", {get: fm_def_5, enumerable: true, configurable: true}); let fm_def_6 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27Gecko\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get product%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_6.toString = function fm_def() { return \"function product() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"product\", {get: fm_def_6, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"product\", {get: fm_def_6, enumerable: true, configurable: true}); let fm_def_7 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x2720100101\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get productSub%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_7.toString = function fm_def() { return \"function productSub() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"productSub\", {get: fm_def_7, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"productSub\", {get: fm_def_7, enumerable: true, configurable: true}); let fm_def_8 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27Mozilla%2F5.0%20%28X11%3B%20Linux%20x86_64%3B%20rv%3A140.0%29%20Gecko%2F20100101%20Firefox%2F140.0\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get userAgent%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_8.toString = function fm_def() { return \"function userAgent() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"userAgent\", {get: fm_def_8, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"userAgent\", {get: fm_def_8, enumerable: true, configurable: true}); let fm_def_9 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get vendor%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_9.toString = function fm_def() { return \"function vendor() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"vendor\", {get: fm_def_9, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"vendor\", {get: fm_def_9, enumerable: true, configurable: true}); let fm_def_10 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get vendorSub%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_10.toString = function fm_def() { return \"function vendorSub() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"vendorSub\", {get: fm_def_10, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"vendorSub\", {get: fm_def_10, enumerable: true, configurable: true}); if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loaded Firefox::Marionette::Extension::Stealth\"); } } "}] << 27:[1,341,null,{"value":null}] >> 91:[0,342,"Addon:Uninstall",{"id":"83983ee391a0c846f363c0e2476eb23687f9064e@temporary-addon"}] << 27:[1,342,null,{"value":null}] >> 121:[0,343,"Addon:Install",{"path":"/tmp/firefox_marionette_local_7DwzVtbNgRC/extension/stealth-0.0.1.xpi","temporary":true}] << 81:[1,343,null,{"value":"83983ee391a0c846f363c0e2476eb23687f9064e@temporary-addon"}] >> 68:[0,344,"WebDriver:FindElement",{"using":"class name","value":"add"}] << 101:[1,344,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"0d6269b3-ba41-4c04-aa5f-913f4868c13e"}}] >> 156:[0,345,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"0d6269b3-ba41-4c04-aa5f-913f4868c13e"}],"script":"arguments[0].remove()"}] << 27:[1,345,null,{"value":null}] >> 68:[0,346,"WebDriver:FindElement",{"using":"class name","value":"add"}] << 390:[1,346,{"error":"no such element","message":"Unable to locate element: add","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nNoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5\ndom.find/> 71:[0,347,"WebDriver:FindElement",{"using":"class name","value":"update"}] << 101:[1,347,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"1d746715-d03b-4bb6-b67a-c7563c5cb0ef"}}] >> 156:[0,348,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"1d746715-d03b-4bb6-b67a-c7563c5cb0ef"}],"script":"arguments[0].remove()"}] << 27:[1,348,null,{"value":null}] >> 71:[0,349,"WebDriver:FindElement",{"using":"class name","value":"update"}] << 393:[1,349,{"error":"no such element","message":"Unable to locate element: update","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nNoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5\ndom.find/> 190:[0,350,"WebDriver:Navigate",{"sessionId":"46a0667a-1fd6-4884-8040-eef2109a2179","url":"file:///build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/elements.html"}] << 27:[1,350,null,{"value":null}] >> 73:[0,351,"WebDriver:ExecuteScript",{"script":"return navigator.userAgent"}] << 95:[1,351,null,{"value":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"}] >> 68:[0,352,"WebDriver:FindElement",{"using":"class name","value":"add"}] << 101:[1,352,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"0f2b06cd-7b36-4410-a8d6-a22c8974b9b6"}}] >> 78:[0,353,"WebDriver:ElementClick",{"id":"0f2b06cd-7b36-4410-a8d6-a22c8974b9b6"}] << 27:[1,353,null,{"value":null}] >> 67:[0,354,"WebDriver:FindElement",{"using":"tag name","value":"span"}] << 101:[1,354,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"090b4597-5309-490c-8342-2facc27a4e41"}}] >> 166:[0,355,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"090b4597-5309-490c-8342-2facc27a4e41"}],"script":"return arguments[0].children[0]"}] << 101:[1,355,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"0f2b06cd-7b36-4410-a8d6-a22c8974b9b6"}}] >> 83:[0,356,"WebDriver:GetElementTagName",{"id":"0f2b06cd-7b36-4410-a8d6-a22c8974b9b6"}] << 31:[1,356,null,{"value":"button"}] >> 76:[0,357,"WebDriver:FindElement",{"using":"tag name","value":"custom-square"}] << 101:[1,357,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"ac382b9a-4fa2-4394-ad6e-3d23da4a3547"}}] >> 177:[0,358,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"ac382b9a-4fa2-4394-ad6e-3d23da4a3547"}],"script":"return arguments[0].shadowRoot.children[0]"}] << 101:[1,358,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"3a1cc2e7-650b-4f7d-912b-984b95eea025"}}] >> 201:[0,359,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"090b4597-5309-490c-8342-2facc27a4e41"}],"script":"if (arguments[0].shadowRoot) { return true } else { return false }"}] << 28:[1,359,null,{"value":false}] >> 201:[0,360,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"ac382b9a-4fa2-4394-ad6e-3d23da4a3547"}],"script":"if (arguments[0].shadowRoot) { return true } else { return false }"}] << 27:[1,360,null,{"value":true}] >> 83:[0,361,"WebDriver:GetElementTagName",{"id":"3a1cc2e7-650b-4f7d-912b-984b95eea025"}] << 30:[1,361,null,{"value":"style"}] >> 79:[0,362,"WebDriver:GetShadowRoot",{"id":"ac382b9a-4fa2-4394-ad6e-3d23da4a3547"}] << 100:[1,362,null,{"value":{"shadow-6066-11e4-a52e-4f735466cecf":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264"}}] >> 162:[0,363,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264"}],"script":"return arguments[0].children"}] << 498:[1,363,null,{"value":[{"element-6066-11e4-a52e-4f735466cecf":"3a1cc2e7-650b-4f7d-912b-984b95eea025"},{"element-6066-11e4-a52e-4f735466cecf":"2eab47ed-d8e1-4688-9388-39665f43ccd9"},{"element-6066-11e4-a52e-4f735466cecf":"069ea9be-3ae4-43c4-8583-774d1b19225b"},{"element-6066-11e4-a52e-4f735466cecf":"a3859c02-addb-4b51-b24e-6ad71f316bef"},{"element-6066-11e4-a52e-4f735466cecf":"6bab6fb7-6723-4225-99aa-82a13465d03b"},{"element-6066-11e4-a52e-4f735466cecf":"121cf6a3-72e3-473f-ab07-be51188f2dae"}]}] >> 83:[0,364,"WebDriver:GetElementTagName",{"id":"3a1cc2e7-650b-4f7d-912b-984b95eea025"}] << 30:[1,364,null,{"value":"style"}] >> 83:[0,365,"WebDriver:GetElementTagName",{"id":"2eab47ed-d8e1-4688-9388-39665f43ccd9"}] << 28:[1,365,null,{"value":"div"}] >> 165:[0,366,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264"}],"script":"return arguments[0].children[0]"}] << 101:[1,366,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"3a1cc2e7-650b-4f7d-912b-984b95eea025"}}] >> 83:[0,367,"WebDriver:GetElementTagName",{"id":"3a1cc2e7-650b-4f7d-912b-984b95eea025"}] << 30:[1,367,null,{"value":"style"}] >> 172:[0,368,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264"}],"script":"return [ 2, arguments[0].children[0] ]"}] << 105:[1,368,null,{"value":[2,{"element-6066-11e4-a52e-4f735466cecf":"3a1cc2e7-650b-4f7d-912b-984b95eea025"}]}] >> 83:[0,369,"WebDriver:GetElementTagName",{"id":"3a1cc2e7-650b-4f7d-912b-984b95eea025"}] << 30:[1,369,null,{"value":"style"}] >> 132:[0,370,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"id","value":"outer-div"}] << 101:[1,370,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"2eab47ed-d8e1-4688-9388-39665f43ccd9"}}] >> 100:[0,371,"WebDriver:GetElementAttribute",{"id":"2eab47ed-d8e1-4688-9388-39665f43ccd9","name":"title"}] << 45:[1,371,null,{"value":"In the Shadow Realms"}] >> 134:[0,372,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"tag name","value":"span"}] << 463:[1,372,{"error":"invalid selector","message":"Given tag name expression \"span\" is invalid: TypeError: startNode.getElementsByTagName is not a function","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nInvalidSelectorError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:452:5\nfind_@chrome://remote/content/shared/DOM.sys.mjs:170:11\n"},null] >> 138:[0,373,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"css selector","value":"span"}] << 172:[1,373,null,[{"element-6066-11e4-a52e-4f735466cecf":"a3859c02-addb-4b51-b24e-6ad71f316bef"},{"element-6066-11e4-a52e-4f735466cecf":"6bab6fb7-6723-4225-99aa-82a13465d03b"}]] >> 83:[0,374,"WebDriver:GetElementTagName",{"id":"a3859c02-addb-4b51-b24e-6ad71f316bef"}] << 29:[1,374,null,{"value":"span"}] >> 83:[0,375,"WebDriver:GetElementTagName",{"id":"6bab6fb7-6723-4225-99aa-82a13465d03b"}] << 29:[1,375,null,{"value":"span"}] >> 135:[0,376,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"tag name","value":"notag"}] << 464:[1,376,{"error":"invalid selector","message":"Given tag name expression \"notag\" is invalid: TypeError: startNode.getElementsByTagName is not a function","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nInvalidSelectorError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:452:5\nfind_@chrome://remote/content/shared/DOM.sys.mjs:170:11\n"},null] >> 139:[0,377,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"css selector","value":"notag"}] << 15:[1,377,null,[]] >> 134:[0,378,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"name","value":"meta-name"}] << 450:[1,378,{"error":"invalid selector","message":"Given name expression \"meta-name\" is invalid: NotSupportedError: Operation is not supported","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nInvalidSelectorError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:452:5\nfind_@chrome://remote/content/shared/DOM.sys.mjs:170:11\n"},null] >> 152:[0,379,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"css selector","value":"[name=\"meta-name\""}] << 101:[1,379,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"069ea9be-3ae4-43c4-8583-774d1b19225b"}}] >> 100:[0,380,"WebDriver:GetElementAttribute",{"id":"069ea9be-3ae4-43c4-8583-774d1b19225b","name":"title"}] << 34:[1,380,null,{"value":"Very META"}] >> 146:[0,381,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"class name","value":"outer-div-class"}] << 478:[1,381,{"error":"invalid selector","message":"Given class name expression \"outer-div-class\" is invalid: TypeError: startNode.getElementsByClassName is not a function","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nInvalidSelectorError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:452:5\nfind_@chrome://remote/content/shared/DOM.sys.mjs:170:11\n"},null] >> 149:[0,382,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"css selector","value":".outer-div-class"}] << 101:[1,382,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"2eab47ed-d8e1-4688-9388-39665f43ccd9"}}] >> 100:[0,383,"WebDriver:GetElementAttribute",{"id":"2eab47ed-d8e1-4688-9388-39665f43ccd9","name":"title"}] << 45:[1,383,null,{"value":"In the Shadow Realms"}] >> 138:[0,384,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"link text","value":"MetaCPAN"}] << 101:[1,384,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"121cf6a3-72e3-473f-ab07-be51188f2dae"}}] >> 99:[0,385,"WebDriver:GetElementAttribute",{"id":"121cf6a3-72e3-473f-ab07-be51188f2dae","name":"href"}] << 45:[1,385,null,{"value":"https://metacpan.org"}] >> 142:[0,386,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264","using":"partial link text","value":"Meta"}] << 101:[1,386,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"121cf6a3-72e3-473f-ab07-be51188f2dae"}}] >> 99:[0,387,"WebDriver:GetElementAttribute",{"id":"121cf6a3-72e3-473f-ab07-be51188f2dae","name":"href"}] << 45:[1,387,null,{"value":"https://metacpan.org"}] >> 135:[0,388,"WebDriver:FindElement",{"using":{"shadow-6066-11e4-a52e-4f735466cecf":"1e4cc4fd-8ce3-4ad8-bf1b-50a9c8776264"},"value":"//div"}] << 782:[1,388,{"error":"invalid selector","message":"Strategy not supported: [object Object]","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nInvalidSelectorError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:452:5\nGeckoDriver.prototype.findElement@chrome://remote/content/marionette/driver.sys.mjs:1740:11\ndespatch@chrome://remote/content/marionette/server.sys.mjs:318:40\nexecute@chrome://remote/content/marionette/server.sys.mjs:289:16\nonPacket/<@chrome://remote/content/marionette/server.sys.mjs:262:20\nonPacket@chrome://remote/content/marionette/server.sys.mjs:263:9\n_onJSONObjectReady/<@chrome://remote/content/marionette/transport.sys.mjs:494:20\n"},null] >> 147:[0,389,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"090b4597-5309-490c-8342-2facc27a4e41"}],"script":"return [2,1]"}] << 28:[1,389,null,{"value":[2,1]}] >> 158:[0,390,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"090b4597-5309-490c-8342-2facc27a4e41"}],"script":"return [2,arguments[0]]"}] << 105:[1,390,null,{"value":[2,{"element-6066-11e4-a52e-4f735466cecf":"090b4597-5309-490c-8342-2facc27a4e41"}]}] >> 83:[0,391,"WebDriver:GetElementTagName",{"id":"090b4597-5309-490c-8342-2facc27a4e41"}] << 29:[1,391,null,{"value":"span"}] >> 163:[0,392,"WebDriver:ExecuteScript",{"args":[{"elem":{"element-6066-11e4-a52e-4f735466cecf":"090b4597-5309-490c-8342-2facc27a4e41"}}],"script":"return arguments[0]"}] << 110:[1,392,null,{"value":{"elem":{"element-6066-11e4-a52e-4f735466cecf":"090b4597-5309-490c-8342-2facc27a4e41"}}}] >> 83:[0,393,"WebDriver:GetElementTagName",{"id":"090b4597-5309-490c-8342-2facc27a4e41"}] << 29:[1,393,null,{"value":"span"}] >> 143:[0,394,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"090b4597-5309-490c-8342-2facc27a4e41"}],"script":"return 2"}] << 24:[1,394,null,{"value":2}] >> 154:[0,395,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"090b4597-5309-490c-8342-2facc27a4e41"}],"script":"return { value: 2 }"}] << 34:[1,395,null,{"value":{"value":2}}] >> 73:[0,396,"WebDriver:ExecuteScript",{"script":"return navigator.webdriver"}] << 28:[1,396,null,{"value":false}] >> 31:[0,397,"Marionette:GetContext"] << 32:[1,397,null,{"value":"content"}] >> 50:[0,398,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,398,null,{"value":null}] >> 300:[0,399,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIES === undefined) { return; } else { return clearDataService.CLEAR_COOKIES; } "}] << 24:[1,399,null,{"value":1}] >> 31:[0,400,"Marionette:GetContext"] << 31:[1,400,null,{"value":"chrome"}] >> 51:[0,401,"Marionette:SetContext",{"value":"content"}] << 27:[1,401,null,{"value":null}] >> 31:[0,402,"Marionette:GetContext"] << 32:[1,402,null,{"value":"content"}] >> 50:[0,403,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,403,null,{"value":null}] >> 300:[0,404,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIES === undefined) { return; } else { return clearDataService.CLEAR_COOKIES; } "}] << 24:[1,404,null,{"value":1}] >> 31:[0,405,"Marionette:GetContext"] << 31:[1,405,null,{"value":"chrome"}] >> 51:[0,406,"Marionette:SetContext",{"value":"content"}] << 27:[1,406,null,{"value":null}] >> 31:[0,407,"Marionette:GetContext"] << 32:[1,407,null,{"value":"content"}] >> 50:[0,408,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,408,null,{"value":null}] >> 312:[0,409,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_NETWORK_CACHE === undefined) { return; } else { return clearDataService.CLEAR_NETWORK_CACHE; } "}] << 24:[1,409,null,{"value":2}] >> 31:[0,410,"Marionette:GetContext"] << 31:[1,410,null,{"value":"chrome"}] >> 51:[0,411,"Marionette:SetContext",{"value":"content"}] << 27:[1,411,null,{"value":null}] >> 31:[0,412,"Marionette:GetContext"] << 32:[1,412,null,{"value":"content"}] >> 50:[0,413,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,413,null,{"value":null}] >> 308:[0,414,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_IMAGE_CACHE === undefined) { return; } else { return clearDataService.CLEAR_IMAGE_CACHE; } "}] << 24:[1,414,null,{"value":4}] >> 31:[0,415,"Marionette:GetContext"] << 31:[1,415,null,{"value":"chrome"}] >> 51:[0,416,"Marionette:SetContext",{"value":"content"}] << 27:[1,416,null,{"value":null}] >> 31:[0,417,"Marionette:GetContext"] << 32:[1,417,null,{"value":"content"}] >> 50:[0,418,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,418,null,{"value":null}] >> 302:[0,419,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_JS_CACHE === undefined) { return; } else { return clearDataService.CLEAR_JS_CACHE; } "}] << 24:[1,419,null,{"value":8}] >> 31:[0,420,"Marionette:GetContext"] << 31:[1,420,null,{"value":"chrome"}] >> 51:[0,421,"Marionette:SetContext",{"value":"content"}] << 27:[1,421,null,{"value":null}] >> 31:[0,422,"Marionette:GetContext"] << 32:[1,422,null,{"value":"content"}] >> 50:[0,423,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,423,null,{"value":null}] >> 304:[0,424,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOWNLOADS === undefined) { return; } else { return clearDataService.CLEAR_DOWNLOADS; } "}] << 25:[1,424,null,{"value":16}] >> 31:[0,425,"Marionette:GetContext"] << 31:[1,425,null,{"value":"chrome"}] >> 51:[0,426,"Marionette:SetContext",{"value":"content"}] << 27:[1,426,null,{"value":null}] >> 31:[0,427,"Marionette:GetContext"] << 32:[1,427,null,{"value":"content"}] >> 50:[0,428,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,428,null,{"value":null}] >> 312:[0,429,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_MEDIA_DEVICES === undefined) { return; } else { return clearDataService.CLEAR_MEDIA_DEVICES; } "}] << 25:[1,429,null,{"value":64}] >> 31:[0,430,"Marionette:GetContext"] << 31:[1,430,null,{"value":"chrome"}] >> 51:[0,431,"Marionette:SetContext",{"value":"content"}] << 27:[1,431,null,{"value":null}] >> 31:[0,432,"Marionette:GetContext"] << 32:[1,432,null,{"value":"content"}] >> 50:[0,433,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,433,null,{"value":null}] >> 304:[0,434,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_QUOTA === undefined) { return; } else { return clearDataService.CLEAR_DOM_QUOTA; } "}] << 26:[1,434,null,{"value":128}] >> 31:[0,435,"Marionette:GetContext"] << 31:[1,435,null,{"value":"chrome"}] >> 51:[0,436,"Marionette:SetContext",{"value":"content"}] << 27:[1,436,null,{"value":null}] >> 31:[0,437,"Marionette:GetContext"] << 32:[1,437,null,{"value":"content"}] >> 50:[0,438,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,438,null,{"value":null}] >> 330:[0,439,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PREDICTOR_NETWORK_DATA === undefined) { return; } else { return clearDataService.CLEAR_PREDICTOR_NETWORK_DATA; } "}] << 26:[1,439,null,{"value":256}] >> 31:[0,440,"Marionette:GetContext"] << 31:[1,440,null,{"value":"chrome"}] >> 51:[0,441,"Marionette:SetContext",{"value":"content"}] << 27:[1,441,null,{"value":null}] >> 31:[0,442,"Marionette:GetContext"] << 32:[1,442,null,{"value":"content"}] >> 50:[0,443,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,443,null,{"value":null}] >> 330:[0,444,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_PUSH_NOTIFICATIONS === undefined) { return; } else { return clearDataService.CLEAR_DOM_PUSH_NOTIFICATIONS; } "}] << 26:[1,444,null,{"value":512}] >> 31:[0,445,"Marionette:GetContext"] << 31:[1,445,null,{"value":"chrome"}] >> 51:[0,446,"Marionette:SetContext",{"value":"content"}] << 27:[1,446,null,{"value":null}] >> 31:[0,447,"Marionette:GetContext"] << 32:[1,447,null,{"value":"content"}] >> 50:[0,448,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,448,null,{"value":null}] >> 300:[0,449,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_HISTORY === undefined) { return; } else { return clearDataService.CLEAR_HISTORY; } "}] << 27:[1,449,null,{"value":1024}] >> 31:[0,450,"Marionette:GetContext"] << 31:[1,450,null,{"value":"chrome"}] >> 51:[0,451,"Marionette:SetContext",{"value":"content"}] << 27:[1,451,null,{"value":null}] >> 31:[0,452,"Marionette:GetContext"] << 32:[1,452,null,{"value":"content"}] >> 50:[0,453,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,453,null,{"value":null}] >> 308:[0,454,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_AUTH_TOKENS === undefined) { return; } else { return clearDataService.CLEAR_AUTH_TOKENS; } "}] << 27:[1,454,null,{"value":4096}] >> 31:[0,455,"Marionette:GetContext"] << 31:[1,455,null,{"value":"chrome"}] >> 51:[0,456,"Marionette:SetContext",{"value":"content"}] << 27:[1,456,null,{"value":null}] >> 31:[0,457,"Marionette:GetContext"] << 32:[1,457,null,{"value":"content"}] >> 50:[0,458,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,458,null,{"value":null}] >> 306:[0,459,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_AUTH_CACHE === undefined) { return; } else { return clearDataService.CLEAR_AUTH_CACHE; } "}] << 27:[1,459,null,{"value":8192}] >> 31:[0,460,"Marionette:GetContext"] << 31:[1,460,null,{"value":"chrome"}] >> 51:[0,461,"Marionette:SetContext",{"value":"content"}] << 27:[1,461,null,{"value":null}] >> 31:[0,462,"Marionette:GetContext"] << 32:[1,462,null,{"value":"content"}] >> 50:[0,463,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,463,null,{"value":null}] >> 308:[0,464,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PERMISSIONS === undefined) { return; } else { return clearDataService.CLEAR_PERMISSIONS; } "}] << 33:[1,464,null,{"value":2147500032}] >> 31:[0,465,"Marionette:GetContext"] << 31:[1,465,null,{"value":"chrome"}] >> 51:[0,466,"Marionette:SetContext",{"value":"content"}] << 27:[1,466,null,{"value":null}] >> 31:[0,467,"Marionette:GetContext"] << 32:[1,467,null,{"value":"content"}] >> 50:[0,468,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,468,null,{"value":null}] >> 324:[0,469,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CONTENT_PREFERENCES === undefined) { return; } else { return clearDataService.CLEAR_CONTENT_PREFERENCES; } "}] << 28:[1,469,null,{"value":32768}] >> 31:[0,470,"Marionette:GetContext"] << 31:[1,470,null,{"value":"chrome"}] >> 51:[0,471,"Marionette:SetContext",{"value":"content"}] << 27:[1,471,null,{"value":null}] >> 31:[0,472,"Marionette:GetContext"] << 32:[1,472,null,{"value":"content"}] >> 50:[0,473,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,473,null,{"value":null}] >> 294:[0,474,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_HSTS === undefined) { return; } else { return clearDataService.CLEAR_HSTS; } "}] << 28:[1,474,null,{"value":65536}] >> 31:[0,475,"Marionette:GetContext"] << 31:[1,475,null,{"value":"chrome"}] >> 51:[0,476,"Marionette:SetContext",{"value":"content"}] << 27:[1,476,null,{"value":null}] >> 31:[0,477,"Marionette:GetContext"] << 32:[1,477,null,{"value":"content"}] >> 50:[0,478,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,478,null,{"value":null}] >> 292:[0,479,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_EME === undefined) { return; } else { return clearDataService.CLEAR_EME; } "}] << 29:[1,479,null,{"value":131072}] >> 31:[0,480,"Marionette:GetContext"] << 31:[1,480,null,{"value":"chrome"}] >> 51:[0,481,"Marionette:SetContext",{"value":"content"}] << 27:[1,481,null,{"value":null}] >> 31:[0,482,"Marionette:GetContext"] << 32:[1,482,null,{"value":"content"}] >> 50:[0,483,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,483,null,{"value":null}] >> 300:[0,484,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_REPORTS === undefined) { return; } else { return clearDataService.CLEAR_REPORTS; } "}] << 29:[1,484,null,{"value":262144}] >> 31:[0,485,"Marionette:GetContext"] << 31:[1,485,null,{"value":"chrome"}] >> 51:[0,486,"Marionette:SetContext",{"value":"content"}] << 27:[1,486,null,{"value":null}] >> 31:[0,487,"Marionette:GetContext"] << 32:[1,487,null,{"value":"content"}] >> 50:[0,488,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,488,null,{"value":null}] >> 314:[0,489,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_STORAGE_ACCESS === undefined) { return; } else { return clearDataService.CLEAR_STORAGE_ACCESS; } "}] << 29:[1,489,null,{"value":524288}] >> 31:[0,490,"Marionette:GetContext"] << 31:[1,490,null,{"value":"chrome"}] >> 51:[0,491,"Marionette:SetContext",{"value":"content"}] << 27:[1,491,null,{"value":null}] >> 31:[0,492,"Marionette:GetContext"] << 32:[1,492,null,{"value":"content"}] >> 50:[0,493,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,493,null,{"value":null}] >> 316:[0,494,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CERT_EXCEPTIONS === undefined) { return; } else { return clearDataService.CLEAR_CERT_EXCEPTIONS; } "}] << 30:[1,494,null,{"value":1048576}] >> 31:[0,495,"Marionette:GetContext"] << 31:[1,495,null,{"value":"chrome"}] >> 51:[0,496,"Marionette:SetContext",{"value":"content"}] << 27:[1,496,null,{"value":null}] >> 31:[0,497,"Marionette:GetContext"] << 32:[1,497,null,{"value":"content"}] >> 50:[0,498,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,498,null,{"value":null}] >> 334:[0,499,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CONTENT_BLOCKING_RECORDS === undefined) { return; } else { return clearDataService.CLEAR_CONTENT_BLOCKING_RECORDS; } "}] << 30:[1,499,null,{"value":2097152}] >> 31:[0,500,"Marionette:GetContext"] << 31:[1,500,null,{"value":"chrome"}] >> 51:[0,501,"Marionette:SetContext",{"value":"content"}] << 27:[1,501,null,{"value":null}] >> 31:[0,502,"Marionette:GetContext"] << 32:[1,502,null,{"value":"content"}] >> 50:[0,503,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,503,null,{"value":null}] >> 304:[0,504,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CSS_CACHE === undefined) { return; } else { return clearDataService.CLEAR_CSS_CACHE; } "}] << 30:[1,504,null,{"value":4194304}] >> 31:[0,505,"Marionette:GetContext"] << 31:[1,505,null,{"value":"chrome"}] >> 51:[0,506,"Marionette:SetContext",{"value":"content"}] << 27:[1,506,null,{"value":null}] >> 31:[0,507,"Marionette:GetContext"] << 32:[1,507,null,{"value":"content"}] >> 50:[0,508,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,508,null,{"value":null}] >> 316:[0,509,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PREFLIGHT_CACHE === undefined) { return; } else { return clearDataService.CLEAR_PREFLIGHT_CACHE; } "}] << 30:[1,509,null,{"value":8388608}] >> 31:[0,510,"Marionette:GetContext"] << 31:[1,510,null,{"value":"chrome"}] >> 51:[0,511,"Marionette:SetContext",{"value":"content"}] << 27:[1,511,null,{"value":null}] >> 31:[0,512,"Marionette:GetContext"] << 32:[1,512,null,{"value":"content"}] >> 50:[0,513,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,513,null,{"value":null}] >> 342:[0,514,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CLIENT_AUTH_REMEMBER_SERVICE === undefined) { return; } else { return clearDataService.CLEAR_CLIENT_AUTH_REMEMBER_SERVICE; } "}] << 31:[1,514,null,{"value":16777216}] >> 31:[0,515,"Marionette:GetContext"] << 31:[1,515,null,{"value":"chrome"}] >> 51:[0,516,"Marionette:SetContext",{"value":"content"}] << 27:[1,516,null,{"value":null}] >> 31:[0,517,"Marionette:GetContext"] << 32:[1,517,null,{"value":"content"}] >> 50:[0,518,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,518,null,{"value":null}] >> 334:[0,519,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CREDENTIAL_MANAGER_STATE === undefined) { return; } else { return clearDataService.CLEAR_CREDENTIAL_MANAGER_STATE; } "}] << 31:[1,519,null,{"value":33554432}] >> 31:[0,520,"Marionette:GetContext"] << 31:[1,520,null,{"value":"chrome"}] >> 51:[0,521,"Marionette:SetContext",{"value":"content"}] << 27:[1,521,null,{"value":null}] >> 31:[0,522,"Marionette:GetContext"] << 32:[1,522,null,{"value":"content"}] >> 50:[0,523,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,523,null,{"value":null}] >> 332:[0,524,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIE_BANNER_EXCEPTION === undefined) { return; } else { return clearDataService.CLEAR_COOKIE_BANNER_EXCEPTION; } "}] << 31:[1,524,null,{"value":67108864}] >> 31:[0,525,"Marionette:GetContext"] << 31:[1,525,null,{"value":"chrome"}] >> 51:[0,526,"Marionette:SetContext",{"value":"content"}] << 27:[1,526,null,{"value":null}] >> 31:[0,527,"Marionette:GetContext"] << 32:[1,527,null,{"value":"content"}] >> 50:[0,528,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,528,null,{"value":null}] >> 344:[0,529,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD === undefined) { return; } else { return clearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD; } "}] << 32:[1,529,null,{"value":134217728}] >> 31:[0,530,"Marionette:GetContext"] << 31:[1,530,null,{"value":"chrome"}] >> 51:[0,531,"Marionette:SetContext",{"value":"content"}] << 27:[1,531,null,{"value":null}] >> 31:[0,532,"Marionette:GetContext"] << 32:[1,532,null,{"value":"content"}] >> 50:[0,533,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,533,null,{"value":null}] >> 348:[0,534,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_FINGERPRINTING_PROTECTION_STATE === undefined) { return; } else { return clearDataService.CLEAR_FINGERPRINTING_PROTECTION_STATE; } "}] << 32:[1,534,null,{"value":268435456}] >> 31:[0,535,"Marionette:GetContext"] << 31:[1,535,null,{"value":"chrome"}] >> 51:[0,536,"Marionette:SetContext",{"value":"content"}] << 27:[1,536,null,{"value":null}] >> 31:[0,537,"Marionette:GetContext"] << 32:[1,537,null,{"value":"content"}] >> 50:[0,538,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,538,null,{"value":null}] >> 350:[0,539,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_BOUNCE_TRACKING_PROTECTION_STATE === undefined) { return; } else { return clearDataService.CLEAR_BOUNCE_TRACKING_PROTECTION_STATE; } "}] << 32:[1,539,null,{"value":536870912}] >> 31:[0,540,"Marionette:GetContext"] << 31:[1,540,null,{"value":"chrome"}] >> 51:[0,541,"Marionette:SetContext",{"value":"content"}] << 27:[1,541,null,{"value":null}] >> 31:[0,542,"Marionette:GetContext"] << 32:[1,542,null,{"value":"content"}] >> 50:[0,543,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,543,null,{"value":null}] >> 346:[0,544,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_MESSAGING_LAYER_SECURITY_STATE === undefined) { return; } else { return clearDataService.CLEAR_MESSAGING_LAYER_SECURITY_STATE; } "}] << 27:[1,544,null,{"value":2048}] >> 31:[0,545,"Marionette:GetContext"] << 31:[1,545,null,{"value":"chrome"}] >> 51:[0,546,"Marionette:SetContext",{"value":"content"}] << 27:[1,546,null,{"value":null}] >> 31:[0,547,"Marionette:GetContext"] << 32:[1,547,null,{"value":"content"}] >> 50:[0,548,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,548,null,{"value":null}] >> 324:[0,549,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_STORAGE_PERMISSIONS === undefined) { return; } else { return clearDataService.CLEAR_STORAGE_PERMISSIONS; } "}] << 33:[1,549,null,{"value":1073741824}] >> 31:[0,550,"Marionette:GetContext"] << 31:[1,550,null,{"value":"chrome"}] >> 51:[0,551,"Marionette:SetContext",{"value":"content"}] << 27:[1,551,null,{"value":null}] >> 31:[0,552,"Marionette:GetContext"] << 32:[1,552,null,{"value":"content"}] >> 50:[0,553,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,553,null,{"value":null}] >> 324:[0,554,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_SHUTDOWN_EXCEPTIONS === undefined) { return; } else { return clearDataService.CLEAR_SHUTDOWN_EXCEPTIONS; } "}] << 33:[1,554,null,{"value":2147483648}] >> 31:[0,555,"Marionette:GetContext"] << 31:[1,555,null,{"value":"chrome"}] >> 51:[0,556,"Marionette:SetContext",{"value":"content"}] << 27:[1,556,null,{"value":null}] >> 31:[0,557,"Marionette:GetContext"] << 32:[1,557,null,{"value":"content"}] >> 50:[0,558,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,558,null,{"value":null}] >> 292:[0,559,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_ALL === undefined) { return; } else { return clearDataService.CLEAR_ALL; } "}] << 33:[1,559,null,{"value":4294967295}] >> 31:[0,560,"Marionette:GetContext"] << 31:[1,560,null,{"value":"chrome"}] >> 51:[0,561,"Marionette:SetContext",{"value":"content"}] << 27:[1,561,null,{"value":null}] >> 31:[0,562,"Marionette:GetContext"] << 32:[1,562,null,{"value":"content"}] >> 50:[0,563,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,563,null,{"value":null}] >> 306:[0,564,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_ALL_CACHES === undefined) { return; } else { return clearDataService.CLEAR_ALL_CACHES; } "}] << 31:[1,564,null,{"value":12648462}] >> 31:[0,565,"Marionette:GetContext"] << 31:[1,565,null,{"value":"chrome"}] >> 51:[0,566,"Marionette:SetContext",{"value":"content"}] << 27:[1,566,null,{"value":null}] >> 31:[0,567,"Marionette:GetContext"] << 32:[1,567,null,{"value":"content"}] >> 50:[0,568,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,568,null,{"value":null}] >> 310:[0,569,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_STORAGES === undefined) { return; } else { return clearDataService.CLEAR_DOM_STORAGES; } "}] << 29:[1,569,null,{"value":262784}] >> 31:[0,570,"Marionette:GetContext"] << 31:[1,570,null,{"value":"chrome"}] >> 51:[0,571,"Marionette:SetContext",{"value":"content"}] << 27:[1,571,null,{"value":null}] >> 31:[0,572,"Marionette:GetContext"] << 32:[1,572,null,{"value":"content"}] >> 50:[0,573,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,573,null,{"value":null}] >> 320:[0,574,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_FORGET_ABOUT_SITE === undefined) { return; } else { return clearDataService.CLEAR_FORGET_ABOUT_SITE; } "}] << 33:[1,574,null,{"value":3218591647}] >> 31:[0,575,"Marionette:GetContext"] << 31:[1,575,null,{"value":"chrome"}] >> 51:[0,576,"Marionette:SetContext",{"value":"content"}] << 27:[1,576,null,{"value":null}] >> 31:[0,577,"Marionette:GetContext"] << 32:[1,577,null,{"value":"content"}] >> 50:[0,578,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,578,null,{"value":null}] >> 328:[0,579,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIES_AND_SITE_DATA === undefined) { return; } else { return clearDataService.CLEAR_COOKIES_AND_SITE_DATA; } "}] << 33:[1,579,null,{"value":2013739649}] >> 31:[0,580,"Marionette:GetContext"] << 31:[1,580,null,{"value":"chrome"}] >> 51:[0,581,"Marionette:SetContext",{"value":"content"}] << 27:[1,581,null,{"value":null}] >> 31:[0,582,"Marionette:GetContext"] << 32:[1,582,null,{"value":"content"}] >> 50:[0,583,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,583,null,{"value":null}] >> 300:[0,584,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIES === undefined) { return; } else { return clearDataService.CLEAR_COOKIES; } "}] << 24:[1,584,null,{"value":1}] >> 31:[0,585,"Marionette:GetContext"] << 31:[1,585,null,{"value":"chrome"}] >> 51:[0,586,"Marionette:SetContext",{"value":"content"}] << 27:[1,586,null,{"value":null}] >> 31:[0,587,"Marionette:GetContext"] << 32:[1,587,null,{"value":"content"}] >> 50:[0,588,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,588,null,{"value":null}] >> 312:[0,589,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_NETWORK_CACHE === undefined) { return; } else { return clearDataService.CLEAR_NETWORK_CACHE; } "}] << 24:[1,589,null,{"value":2}] >> 31:[0,590,"Marionette:GetContext"] << 31:[1,590,null,{"value":"chrome"}] >> 51:[0,591,"Marionette:SetContext",{"value":"content"}] << 27:[1,591,null,{"value":null}] >> 31:[0,592,"Marionette:GetContext"] << 32:[1,592,null,{"value":"content"}] >> 50:[0,593,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,593,null,{"value":null}] >> 308:[0,594,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_IMAGE_CACHE === undefined) { return; } else { return clearDataService.CLEAR_IMAGE_CACHE; } "}] << 24:[1,594,null,{"value":4}] >> 31:[0,595,"Marionette:GetContext"] << 31:[1,595,null,{"value":"chrome"}] >> 51:[0,596,"Marionette:SetContext",{"value":"content"}] << 27:[1,596,null,{"value":null}] >> 31:[0,597,"Marionette:GetContext"] << 32:[1,597,null,{"value":"content"}] >> 50:[0,598,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,598,null,{"value":null}] >> 302:[0,599,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_JS_CACHE === undefined) { return; } else { return clearDataService.CLEAR_JS_CACHE; } "}] << 24:[1,599,null,{"value":8}] >> 31:[0,600,"Marionette:GetContext"] << 31:[1,600,null,{"value":"chrome"}] >> 51:[0,601,"Marionette:SetContext",{"value":"content"}] << 27:[1,601,null,{"value":null}] >> 31:[0,602,"Marionette:GetContext"] << 32:[1,602,null,{"value":"content"}] >> 50:[0,603,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,603,null,{"value":null}] >> 304:[0,604,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOWNLOADS === undefined) { return; } else { return clearDataService.CLEAR_DOWNLOADS; } "}] << 25:[1,604,null,{"value":16}] >> 31:[0,605,"Marionette:GetContext"] << 31:[1,605,null,{"value":"chrome"}] >> 51:[0,606,"Marionette:SetContext",{"value":"content"}] << 27:[1,606,null,{"value":null}] >> 31:[0,607,"Marionette:GetContext"] << 32:[1,607,null,{"value":"content"}] >> 50:[0,608,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,608,null,{"value":null}] >> 312:[0,609,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_MEDIA_DEVICES === undefined) { return; } else { return clearDataService.CLEAR_MEDIA_DEVICES; } "}] << 25:[1,609,null,{"value":64}] >> 31:[0,610,"Marionette:GetContext"] << 31:[1,610,null,{"value":"chrome"}] >> 51:[0,611,"Marionette:SetContext",{"value":"content"}] << 27:[1,611,null,{"value":null}] >> 31:[0,612,"Marionette:GetContext"] << 32:[1,612,null,{"value":"content"}] >> 50:[0,613,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,613,null,{"value":null}] >> 304:[0,614,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_QUOTA === undefined) { return; } else { return clearDataService.CLEAR_DOM_QUOTA; } "}] << 26:[1,614,null,{"value":128}] >> 31:[0,615,"Marionette:GetContext"] << 31:[1,615,null,{"value":"chrome"}] >> 51:[0,616,"Marionette:SetContext",{"value":"content"}] << 27:[1,616,null,{"value":null}] >> 31:[0,617,"Marionette:GetContext"] << 32:[1,617,null,{"value":"content"}] >> 50:[0,618,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,618,null,{"value":null}] >> 330:[0,619,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PREDICTOR_NETWORK_DATA === undefined) { return; } else { return clearDataService.CLEAR_PREDICTOR_NETWORK_DATA; } "}] << 26:[1,619,null,{"value":256}] >> 31:[0,620,"Marionette:GetContext"] << 31:[1,620,null,{"value":"chrome"}] >> 51:[0,621,"Marionette:SetContext",{"value":"content"}] << 27:[1,621,null,{"value":null}] >> 31:[0,622,"Marionette:GetContext"] << 32:[1,622,null,{"value":"content"}] >> 50:[0,623,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,623,null,{"value":null}] >> 330:[0,624,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_PUSH_NOTIFICATIONS === undefined) { return; } else { return clearDataService.CLEAR_DOM_PUSH_NOTIFICATIONS; } "}] << 26:[1,624,null,{"value":512}] >> 31:[0,625,"Marionette:GetContext"] << 31:[1,625,null,{"value":"chrome"}] >> 51:[0,626,"Marionette:SetContext",{"value":"content"}] << 27:[1,626,null,{"value":null}] >> 31:[0,627,"Marionette:GetContext"] << 32:[1,627,null,{"value":"content"}] >> 50:[0,628,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,628,null,{"value":null}] >> 300:[0,629,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_HISTORY === undefined) { return; } else { return clearDataService.CLEAR_HISTORY; } "}] << 27:[1,629,null,{"value":1024}] >> 31:[0,630,"Marionette:GetContext"] << 31:[1,630,null,{"value":"chrome"}] >> 51:[0,631,"Marionette:SetContext",{"value":"content"}] << 27:[1,631,null,{"value":null}] >> 31:[0,632,"Marionette:GetContext"] << 32:[1,632,null,{"value":"content"}] >> 50:[0,633,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,633,null,{"value":null}] >> 308:[0,634,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_AUTH_TOKENS === undefined) { return; } else { return clearDataService.CLEAR_AUTH_TOKENS; } "}] << 27:[1,634,null,{"value":4096}] >> 31:[0,635,"Marionette:GetContext"] << 31:[1,635,null,{"value":"chrome"}] >> 51:[0,636,"Marionette:SetContext",{"value":"content"}] << 27:[1,636,null,{"value":null}] >> 31:[0,637,"Marionette:GetContext"] << 32:[1,637,null,{"value":"content"}] >> 50:[0,638,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,638,null,{"value":null}] >> 306:[0,639,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_AUTH_CACHE === undefined) { return; } else { return clearDataService.CLEAR_AUTH_CACHE; } "}] << 27:[1,639,null,{"value":8192}] >> 31:[0,640,"Marionette:GetContext"] << 31:[1,640,null,{"value":"chrome"}] >> 51:[0,641,"Marionette:SetContext",{"value":"content"}] << 27:[1,641,null,{"value":null}] >> 31:[0,642,"Marionette:GetContext"] << 32:[1,642,null,{"value":"content"}] >> 50:[0,643,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,643,null,{"value":null}] >> 308:[0,644,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PERMISSIONS === undefined) { return; } else { return clearDataService.CLEAR_PERMISSIONS; } "}] << 33:[1,644,null,{"value":2147500032}] >> 31:[0,645,"Marionette:GetContext"] << 31:[1,645,null,{"value":"chrome"}] >> 51:[0,646,"Marionette:SetContext",{"value":"content"}] << 27:[1,646,null,{"value":null}] >> 31:[0,647,"Marionette:GetContext"] << 32:[1,647,null,{"value":"content"}] >> 50:[0,648,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,648,null,{"value":null}] >> 324:[0,649,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CONTENT_PREFERENCES === undefined) { return; } else { return clearDataService.CLEAR_CONTENT_PREFERENCES; } "}] << 28:[1,649,null,{"value":32768}] >> 31:[0,650,"Marionette:GetContext"] << 31:[1,650,null,{"value":"chrome"}] >> 51:[0,651,"Marionette:SetContext",{"value":"content"}] << 27:[1,651,null,{"value":null}] >> 31:[0,652,"Marionette:GetContext"] << 32:[1,652,null,{"value":"content"}] >> 50:[0,653,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,653,null,{"value":null}] >> 294:[0,654,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_HSTS === undefined) { return; } else { return clearDataService.CLEAR_HSTS; } "}] << 28:[1,654,null,{"value":65536}] >> 31:[0,655,"Marionette:GetContext"] << 31:[1,655,null,{"value":"chrome"}] >> 51:[0,656,"Marionette:SetContext",{"value":"content"}] << 27:[1,656,null,{"value":null}] >> 31:[0,657,"Marionette:GetContext"] << 32:[1,657,null,{"value":"content"}] >> 50:[0,658,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,658,null,{"value":null}] >> 292:[0,659,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_EME === undefined) { return; } else { return clearDataService.CLEAR_EME; } "}] << 29:[1,659,null,{"value":131072}] >> 31:[0,660,"Marionette:GetContext"] << 31:[1,660,null,{"value":"chrome"}] >> 51:[0,661,"Marionette:SetContext",{"value":"content"}] << 27:[1,661,null,{"value":null}] >> 31:[0,662,"Marionette:GetContext"] << 32:[1,662,null,{"value":"content"}] >> 50:[0,663,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,663,null,{"value":null}] >> 300:[0,664,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_REPORTS === undefined) { return; } else { return clearDataService.CLEAR_REPORTS; } "}] << 29:[1,664,null,{"value":262144}] >> 31:[0,665,"Marionette:GetContext"] << 31:[1,665,null,{"value":"chrome"}] >> 51:[0,666,"Marionette:SetContext",{"value":"content"}] << 27:[1,666,null,{"value":null}] >> 31:[0,667,"Marionette:GetContext"] << 32:[1,667,null,{"value":"content"}] >> 50:[0,668,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,668,null,{"value":null}] >> 314:[0,669,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_STORAGE_ACCESS === undefined) { return; } else { return clearDataService.CLEAR_STORAGE_ACCESS; } "}] << 29:[1,669,null,{"value":524288}] >> 31:[0,670,"Marionette:GetContext"] << 31:[1,670,null,{"value":"chrome"}] >> 51:[0,671,"Marionette:SetContext",{"value":"content"}] << 27:[1,671,null,{"value":null}] >> 31:[0,672,"Marionette:GetContext"] << 32:[1,672,null,{"value":"content"}] >> 50:[0,673,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,673,null,{"value":null}] >> 316:[0,674,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CERT_EXCEPTIONS === undefined) { return; } else { return clearDataService.CLEAR_CERT_EXCEPTIONS; } "}] << 30:[1,674,null,{"value":1048576}] >> 31:[0,675,"Marionette:GetContext"] << 31:[1,675,null,{"value":"chrome"}] >> 51:[0,676,"Marionette:SetContext",{"value":"content"}] << 27:[1,676,null,{"value":null}] >> 31:[0,677,"Marionette:GetContext"] << 32:[1,677,null,{"value":"content"}] >> 50:[0,678,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,678,null,{"value":null}] >> 334:[0,679,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CONTENT_BLOCKING_RECORDS === undefined) { return; } else { return clearDataService.CLEAR_CONTENT_BLOCKING_RECORDS; } "}] << 30:[1,679,null,{"value":2097152}] >> 31:[0,680,"Marionette:GetContext"] << 31:[1,680,null,{"value":"chrome"}] >> 51:[0,681,"Marionette:SetContext",{"value":"content"}] << 27:[1,681,null,{"value":null}] >> 31:[0,682,"Marionette:GetContext"] << 32:[1,682,null,{"value":"content"}] >> 50:[0,683,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,683,null,{"value":null}] >> 304:[0,684,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CSS_CACHE === undefined) { return; } else { return clearDataService.CLEAR_CSS_CACHE; } "}] << 30:[1,684,null,{"value":4194304}] >> 31:[0,685,"Marionette:GetContext"] << 31:[1,685,null,{"value":"chrome"}] >> 51:[0,686,"Marionette:SetContext",{"value":"content"}] << 27:[1,686,null,{"value":null}] >> 31:[0,687,"Marionette:GetContext"] << 32:[1,687,null,{"value":"content"}] >> 50:[0,688,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,688,null,{"value":null}] >> 316:[0,689,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PREFLIGHT_CACHE === undefined) { return; } else { return clearDataService.CLEAR_PREFLIGHT_CACHE; } "}] << 30:[1,689,null,{"value":8388608}] >> 31:[0,690,"Marionette:GetContext"] << 31:[1,690,null,{"value":"chrome"}] >> 51:[0,691,"Marionette:SetContext",{"value":"content"}] << 27:[1,691,null,{"value":null}] >> 31:[0,692,"Marionette:GetContext"] << 32:[1,692,null,{"value":"content"}] >> 50:[0,693,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,693,null,{"value":null}] >> 342:[0,694,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CLIENT_AUTH_REMEMBER_SERVICE === undefined) { return; } else { return clearDataService.CLEAR_CLIENT_AUTH_REMEMBER_SERVICE; } "}] << 31:[1,694,null,{"value":16777216}] >> 31:[0,695,"Marionette:GetContext"] << 31:[1,695,null,{"value":"chrome"}] >> 51:[0,696,"Marionette:SetContext",{"value":"content"}] << 27:[1,696,null,{"value":null}] >> 31:[0,697,"Marionette:GetContext"] << 32:[1,697,null,{"value":"content"}] >> 50:[0,698,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,698,null,{"value":null}] >> 334:[0,699,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CREDENTIAL_MANAGER_STATE === undefined) { return; } else { return clearDataService.CLEAR_CREDENTIAL_MANAGER_STATE; } "}] << 31:[1,699,null,{"value":33554432}] >> 31:[0,700,"Marionette:GetContext"] << 31:[1,700,null,{"value":"chrome"}] >> 51:[0,701,"Marionette:SetContext",{"value":"content"}] << 27:[1,701,null,{"value":null}] >> 31:[0,702,"Marionette:GetContext"] << 32:[1,702,null,{"value":"content"}] >> 50:[0,703,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,703,null,{"value":null}] >> 332:[0,704,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIE_BANNER_EXCEPTION === undefined) { return; } else { return clearDataService.CLEAR_COOKIE_BANNER_EXCEPTION; } "}] << 31:[1,704,null,{"value":67108864}] >> 31:[0,705,"Marionette:GetContext"] << 31:[1,705,null,{"value":"chrome"}] >> 51:[0,706,"Marionette:SetContext",{"value":"content"}] << 27:[1,706,null,{"value":null}] >> 31:[0,707,"Marionette:GetContext"] << 32:[1,707,null,{"value":"content"}] >> 50:[0,708,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,708,null,{"value":null}] >> 344:[0,709,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD === undefined) { return; } else { return clearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD; } "}] << 32:[1,709,null,{"value":134217728}] >> 31:[0,710,"Marionette:GetContext"] << 31:[1,710,null,{"value":"chrome"}] >> 51:[0,711,"Marionette:SetContext",{"value":"content"}] << 27:[1,711,null,{"value":null}] >> 31:[0,712,"Marionette:GetContext"] << 32:[1,712,null,{"value":"content"}] >> 50:[0,713,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,713,null,{"value":null}] >> 348:[0,714,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_FINGERPRINTING_PROTECTION_STATE === undefined) { return; } else { return clearDataService.CLEAR_FINGERPRINTING_PROTECTION_STATE; } "}] << 32:[1,714,null,{"value":268435456}] >> 31:[0,715,"Marionette:GetContext"] << 31:[1,715,null,{"value":"chrome"}] >> 51:[0,716,"Marionette:SetContext",{"value":"content"}] << 27:[1,716,null,{"value":null}] >> 31:[0,717,"Marionette:GetContext"] << 32:[1,717,null,{"value":"content"}] >> 50:[0,718,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,718,null,{"value":null}] >> 350:[0,719,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_BOUNCE_TRACKING_PROTECTION_STATE === undefined) { return; } else { return clearDataService.CLEAR_BOUNCE_TRACKING_PROTECTION_STATE; } "}] << 32:[1,719,null,{"value":536870912}] >> 31:[0,720,"Marionette:GetContext"] << 31:[1,720,null,{"value":"chrome"}] >> 51:[0,721,"Marionette:SetContext",{"value":"content"}] << 27:[1,721,null,{"value":null}] >> 31:[0,722,"Marionette:GetContext"] << 32:[1,722,null,{"value":"content"}] >> 50:[0,723,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,723,null,{"value":null}] >> 346:[0,724,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_MESSAGING_LAYER_SECURITY_STATE === undefined) { return; } else { return clearDataService.CLEAR_MESSAGING_LAYER_SECURITY_STATE; } "}] << 27:[1,724,null,{"value":2048}] >> 31:[0,725,"Marionette:GetContext"] << 31:[1,725,null,{"value":"chrome"}] >> 51:[0,726,"Marionette:SetContext",{"value":"content"}] << 27:[1,726,null,{"value":null}] >> 31:[0,727,"Marionette:GetContext"] << 32:[1,727,null,{"value":"content"}] >> 50:[0,728,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,728,null,{"value":null}] >> 324:[0,729,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_STORAGE_PERMISSIONS === undefined) { return; } else { return clearDataService.CLEAR_STORAGE_PERMISSIONS; } "}] << 33:[1,729,null,{"value":1073741824}] >> 31:[0,730,"Marionette:GetContext"] << 31:[1,730,null,{"value":"chrome"}] >> 51:[0,731,"Marionette:SetContext",{"value":"content"}] << 27:[1,731,null,{"value":null}] >> 31:[0,732,"Marionette:GetContext"] << 32:[1,732,null,{"value":"content"}] >> 50:[0,733,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,733,null,{"value":null}] >> 324:[0,734,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_SHUTDOWN_EXCEPTIONS === undefined) { return; } else { return clearDataService.CLEAR_SHUTDOWN_EXCEPTIONS; } "}] << 33:[1,734,null,{"value":2147483648}] >> 31:[0,735,"Marionette:GetContext"] << 31:[1,735,null,{"value":"chrome"}] >> 51:[0,736,"Marionette:SetContext",{"value":"content"}] << 27:[1,736,null,{"value":null}] >> 31:[0,737,"Marionette:GetContext"] << 32:[1,737,null,{"value":"content"}] >> 50:[0,738,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,738,null,{"value":null}] >> 292:[0,739,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_ALL === undefined) { return; } else { return clearDataService.CLEAR_ALL; } "}] << 33:[1,739,null,{"value":4294967295}] >> 31:[0,740,"Marionette:GetContext"] << 31:[1,740,null,{"value":"chrome"}] >> 51:[0,741,"Marionette:SetContext",{"value":"content"}] << 27:[1,741,null,{"value":null}] >> 31:[0,742,"Marionette:GetContext"] << 32:[1,742,null,{"value":"content"}] >> 50:[0,743,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,743,null,{"value":null}] >> 306:[0,744,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_ALL_CACHES === undefined) { return; } else { return clearDataService.CLEAR_ALL_CACHES; } "}] << 31:[1,744,null,{"value":12648462}] >> 31:[0,745,"Marionette:GetContext"] << 31:[1,745,null,{"value":"chrome"}] >> 51:[0,746,"Marionette:SetContext",{"value":"content"}] << 27:[1,746,null,{"value":null}] >> 31:[0,747,"Marionette:GetContext"] << 32:[1,747,null,{"value":"content"}] >> 50:[0,748,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,748,null,{"value":null}] >> 310:[0,749,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_STORAGES === undefined) { return; } else { return clearDataService.CLEAR_DOM_STORAGES; } "}] << 29:[1,749,null,{"value":262784}] >> 31:[0,750,"Marionette:GetContext"] << 31:[1,750,null,{"value":"chrome"}] >> 51:[0,751,"Marionette:SetContext",{"value":"content"}] << 27:[1,751,null,{"value":null}] >> 31:[0,752,"Marionette:GetContext"] << 32:[1,752,null,{"value":"content"}] >> 50:[0,753,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,753,null,{"value":null}] >> 320:[0,754,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_FORGET_ABOUT_SITE === undefined) { return; } else { return clearDataService.CLEAR_FORGET_ABOUT_SITE; } "}] << 33:[1,754,null,{"value":3218591647}] >> 31:[0,755,"Marionette:GetContext"] << 31:[1,755,null,{"value":"chrome"}] >> 51:[0,756,"Marionette:SetContext",{"value":"content"}] << 27:[1,756,null,{"value":null}] >> 31:[0,757,"Marionette:GetContext"] << 32:[1,757,null,{"value":"content"}] >> 50:[0,758,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,758,null,{"value":null}] >> 328:[0,759,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIES_AND_SITE_DATA === undefined) { return; } else { return clearDataService.CLEAR_COOKIES_AND_SITE_DATA; } "}] << 33:[1,759,null,{"value":2013739649}] >> 31:[0,760,"Marionette:GetContext"] << 31:[1,760,null,{"value":"chrome"}] >> 51:[0,761,"Marionette:SetContext",{"value":"content"}] << 27:[1,761,null,{"value":null}] >> 31:[0,762,"Marionette:GetContext"] << 32:[1,762,null,{"value":"content"}] >> 51:[0,763,"Marionette:SetContext",{"value":"content"}] << 27:[1,763,null,{"value":null}] >> 35:[0,764,"WebDriver:GetCapabilities"] << 789:[1,764,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2751918,"moz:profile":"/tmp/firefox_marionette_local_7DwzVtbNgRC/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true}},"proxy":{}}}}] # Starting new firefox for testing logins # Testing has been running for 21 seconds at t/01-marionette.t line 2132 ** firefox --version ** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_IEXnHkaOKAj/profile --no-remote --new-instance [2754897] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] << 760:[1,1,null,{"sessionId":"6294f96f-b0be-40fe-8711-e3dc2c04fb20","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2754897,"moz:profile":"/tmp/firefox_marionette_local_IEXnHkaOKAj/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 29:[0,2,"Marionette:GetContext"] << 30:[1,2,null,{"value":"content"}] >> 48:[0,3,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,3,null,{"value":null}] >> 2274:[0,4,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 138:[1,4,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1759550571,"lastModified":1759550571,"childCount":5}}] >> 29:[0,5,"Marionette:GetContext"] << 29:[1,5,null,{"value":"chrome"}] >> 49:[0,6,"Marionette:SetContext",{"value":"content"}] << 25:[1,6,null,{"value":null}] >> 29:[0,7,"Marionette:GetContext"] << 30:[1,7,null,{"value":"content"}] >> 48:[0,8,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,8,null,{"value":null}] >> 2274:[0,9,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 170:[1,9,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 30:[0,10,"Marionette:GetContext"] << 30:[1,10,null,{"value":"chrome"}] >> 50:[0,11,"Marionette:SetContext",{"value":"content"}] << 26:[1,11,null,{"value":null}] >> 30:[0,12,"Marionette:GetContext"] << 31:[1,12,null,{"value":"content"}] >> 49:[0,13,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,13,null,{"value":null}] >> 2275:[0,14,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,14,null,{"value":null}] >> 30:[0,15,"Marionette:GetContext"] << 30:[1,15,null,{"value":"chrome"}] >> 50:[0,16,"Marionette:SetContext",{"value":"content"}] << 26:[1,16,null,{"value":null}] >> 30:[0,17,"Marionette:GetContext"] << 31:[1,17,null,{"value":"content"}] >> 49:[0,18,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,18,null,{"value":null}] >> 2982:[0,19,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685611344,"guid":"ExAzkxs5efkR","lastModified":1685672402,"parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 188:[1,19,null,{"value":{"dateAdded":"2023-06-01T09:22:24.000Z","guid":"ExAzkxs5efkR","lastModified":"2023-06-02T02:20:02.000Z","parentGuid":"menu________","title":"CPAN","type":2,"index":0}}] >> 30:[0,20,"Marionette:GetContext"] << 30:[1,20,null,{"value":"chrome"}] >> 50:[0,21,"Marionette:SetContext",{"value":"content"}] << 26:[1,21,null,{"value":null}] >> 30:[0,22,"Marionette:GetContext"] << 31:[1,22,null,{"value":"content"}] >> 49:[0,23,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,23,null,{"value":null}] >> 2275:[0,24,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,24,null,{"value":null}] >> 30:[0,25,"Marionette:GetContext"] << 30:[1,25,null,{"value":"chrome"}] >> 50:[0,26,"Marionette:SetContext",{"value":"content"}] << 26:[1,26,null,{"value":null}] >> 30:[0,27,"Marionette:GetContext"] << 31:[1,27,null,{"value":"content"}] >> 49:[0,28,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,28,null,{"value":null}] >> 3199:[0,29,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"utcxPgIOG05d","iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 331:[1,29,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"utcxPgIOG05d","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0}}] >> 30:[0,30,"Marionette:GetContext"] << 30:[1,30,null,{"value":"chrome"}] >> 50:[0,31,"Marionette:SetContext",{"value":"content"}] << 26:[1,31,null,{"value":null}] >> 30:[0,32,"Marionette:GetContext"] << 31:[1,32,null,{"value":"content"}] >> 49:[0,33,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,33,null,{"value":null}] >> 2275:[0,34,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,34,null,{"value":null}] >> 30:[0,35,"Marionette:GetContext"] << 30:[1,35,null,{"value":"chrome"}] >> 50:[0,36,"Marionette:SetContext",{"value":"content"}] << 26:[1,36,null,{"value":null}] >> 30:[0,37,"Marionette:GetContext"] << 31:[1,37,null,{"value":"content"}] >> 49:[0,38,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,38,null,{"value":null}] >> 3231:[0,39,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"XiZLcg8n_B4A","iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 349:[1,39,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"XiZLcg8n_B4A","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1}}] >> 30:[0,40,"Marionette:GetContext"] << 30:[1,40,null,{"value":"chrome"}] >> 50:[0,41,"Marionette:SetContext",{"value":"content"}] << 26:[1,41,null,{"value":null}] >> 30:[0,42,"Marionette:GetContext"] << 31:[1,42,null,{"value":"content"}] >> 49:[0,43,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,43,null,{"value":null}] >> 2275:[0,44,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,44,null,{"value":null}] >> 30:[0,45,"Marionette:GetContext"] << 30:[1,45,null,{"value":"chrome"}] >> 50:[0,46,"Marionette:SetContext",{"value":"content"}] << 26:[1,46,null,{"value":null}] >> 30:[0,47,"Marionette:GetContext"] << 31:[1,47,null,{"value":"content"}] >> 49:[0,48,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,48,null,{"value":null}] >> 2986:[0,49,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670822,"guid":"eZlh-ztIYBne","lastModified":1685672383,"parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 192:[1,49,null,{"value":{"dateAdded":"2023-06-02T01:53:42.000Z","guid":"eZlh-ztIYBne","lastModified":"2023-06-02T02:19:43.000Z","parentGuid":"menu________","title":"Searches","type":2,"index":1}}] >> 30:[0,50,"Marionette:GetContext"] << 30:[1,50,null,{"value":"chrome"}] >> 50:[0,51,"Marionette:SetContext",{"value":"content"}] << 26:[1,51,null,{"value":null}] >> 30:[0,52,"Marionette:GetContext"] << 31:[1,52,null,{"value":"content"}] >> 49:[0,53,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,53,null,{"value":null}] >> 2275:[0,54,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,54,null,{"value":null}] >> 30:[0,55,"Marionette:GetContext"] << 30:[1,55,null,{"value":"chrome"}] >> 50:[0,56,"Marionette:SetContext",{"value":"content"}] << 26:[1,56,null,{"value":null}] >> 30:[0,57,"Marionette:GetContext"] << 31:[1,57,null,{"value":"content"}] >> 49:[0,58,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,58,null,{"value":null}] >> 3194:[0,59,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","tags":["perl","\ud83d\udc2b","UTF8","ddg"],"title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 276:[1,59,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"bZbedzEdrOnQ","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0}}] >> 30:[0,60,"Marionette:GetContext"] << 30:[1,60,null,{"value":"chrome"}] >> 50:[0,61,"Marionette:SetContext",{"value":"content"}] << 26:[1,61,null,{"value":null}] >> 30:[0,62,"Marionette:GetContext"] << 31:[1,62,null,{"value":"content"}] >> 49:[0,63,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,63,null,{"value":null}] >> 2275:[0,64,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,64,null,{"value":null}] >> 30:[0,65,"Marionette:GetContext"] << 30:[1,65,null,{"value":"chrome"}] >> 50:[0,66,"Marionette:SetContext",{"value":"content"}] << 26:[1,66,null,{"value":null}] >> 30:[0,67,"Marionette:GetContext"] << 31:[1,67,null,{"value":"content"}] >> 49:[0,68,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,68,null,{"value":null}] >> 2978:[0,69,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672418,"guid":"zCZX0_5lBXTS","lastModified":1685672418,"parentGuid":"menu________","title":"","type":3}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 184:[1,69,null,{"value":{"dateAdded":"2023-06-02T02:20:18.000Z","guid":"zCZX0_5lBXTS","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________","title":"","type":3,"index":2}}] >> 30:[0,70,"Marionette:GetContext"] << 30:[1,70,null,{"value":"chrome"}] >> 50:[0,71,"Marionette:SetContext",{"value":"content"}] << 26:[1,71,null,{"value":null}] >> 30:[0,72,"Marionette:GetContext"] << 31:[1,72,null,{"value":"content"}] >> 49:[0,73,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,73,null,{"value":null}] >> 2275:[0,74,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,74,null,{"value":null}] >> 30:[0,75,"Marionette:GetContext"] << 30:[1,75,null,{"value":"chrome"}] >> 50:[0,76,"Marionette:SetContext",{"value":"content"}] << 26:[1,76,null,{"value":null}] >> 30:[0,77,"Marionette:GetContext"] << 31:[1,77,null,{"value":"content"}] >> 49:[0,78,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,78,null,{"value":null}] >> 3243:[0,79,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"JTBNJdLPdYhk","iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","lastModified":1685672392,"parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 372:[1,79,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"JTBNJdLPdYhk","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":3}}] >> 30:[0,80,"Marionette:GetContext"] << 30:[1,80,null,{"value":"chrome"}] >> 50:[0,81,"Marionette:SetContext",{"value":"content"}] << 26:[1,81,null,{"value":null}] >> 30:[0,82,"Marionette:GetContext"] << 31:[1,82,null,{"value":"content"}] >> 49:[0,83,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,83,null,{"value":null}] >> 2275:[0,84,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,84,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 30:[0,85,"Marionette:GetContext"] << 30:[1,85,null,{"value":"chrome"}] >> 50:[0,86,"Marionette:SetContext",{"value":"content"}] << 26:[1,86,null,{"value":null}] >> 30:[0,87,"Marionette:GetContext"] << 31:[1,87,null,{"value":"content"}] >> 49:[0,88,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,88,null,{"value":null}] >> 2275:[0,89,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,89,null,{"value":null}] >> 30:[0,90,"Marionette:GetContext"] << 30:[1,90,null,{"value":"chrome"}] >> 50:[0,91,"Marionette:SetContext",{"value":"content"}] << 26:[1,91,null,{"value":null}] >> 30:[0,92,"Marionette:GetContext"] << 31:[1,92,null,{"value":"content"}] >> 49:[0,93,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,93,null,{"value":null}] >> 3056:[0,94,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"UjOiVVvuVdng","lastModified":1686363942,"parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 262:[1,94,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"UjOiVVvuVdng","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0}}] >> 30:[0,95,"Marionette:GetContext"] << 30:[1,95,null,{"value":"chrome"}] >> 50:[0,96,"Marionette:SetContext",{"value":"content"}] << 26:[1,96,null,{"value":null}] >> 30:[0,97,"Marionette:GetContext"] << 31:[1,97,null,{"value":"content"}] >> 49:[0,98,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,98,null,{"value":null}] >> 2275:[0,99,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,99,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 31:[0,100,"Marionette:GetContext"] << 31:[1,100,null,{"value":"chrome"}] >> 51:[0,101,"Marionette:SetContext",{"value":"content"}] << 27:[1,101,null,{"value":null}] >> 31:[0,102,"Marionette:GetContext"] << 32:[1,102,null,{"value":"content"}] >> 50:[0,103,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,103,null,{"value":null}] >> 2276:[0,104,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,104,null,{"value":null}] >> 31:[0,105,"Marionette:GetContext"] << 31:[1,105,null,{"value":"chrome"}] >> 51:[0,106,"Marionette:SetContext",{"value":"content"}] << 27:[1,106,null,{"value":null}] >> 31:[0,107,"Marionette:GetContext"] << 32:[1,107,null,{"value":"content"}] >> 50:[0,108,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,108,null,{"value":null}] >> 3041:[0,109,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"wiTkT9Zqb99b","lastModified":1686364095,"parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 247:[1,109,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"wiTkT9Zqb99b","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":0}}] >> 31:[0,110,"Marionette:GetContext"] << 31:[1,110,null,{"value":"chrome"}] >> 51:[0,111,"Marionette:SetContext",{"value":"content"}] << 27:[1,111,null,{"value":null}] >> 31:[0,112,"Marionette:GetContext"] << 32:[1,112,null,{"value":"content"}] >> 50:[0,113,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,113,null,{"value":null}] >> 2276:[0,114,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,114,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 31:[0,115,"Marionette:GetContext"] << 31:[1,115,null,{"value":"chrome"}] >> 51:[0,116,"Marionette:SetContext",{"value":"content"}] << 27:[1,116,null,{"value":null}] >> 181:[0,117,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] << 68:[1,117,null,{"value":"ZQtUVAjmbzoghHqnFWms-ZTrTdOOPasp-adlZTS6X2s"}] >> 52:[0,765,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 62:[1,765,null,{"cause":"shutdown","forced":false,"in_app":true}] >> 178:[0,118,"WebDriver:ExecuteScript",{"script":"let c = document.createElement('canvas'); return c.getContext('webgl2') ? true : c.getContext('experimental-webgl') ? true : false;"}] << 27:[1,118,null,{"value":true}] # WebGL appears to be enabled in headless mode (with addons => 1) >> 31:[0,119,"Marionette:GetContext"] << 32:[1,119,null,{"value":"content"}] >> 50:[0,120,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,120,null,{"value":null}] >> 2276:[0,121,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 140:[1,121,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1759550571,"lastModified":1686364081,"childCount":5}}] >> 31:[0,122,"Marionette:GetContext"] << 31:[1,122,null,{"value":"chrome"}] >> 51:[0,123,"Marionette:SetContext",{"value":"content"}] << 27:[1,123,null,{"value":null}] >> 31:[0,124,"Marionette:GetContext"] << 32:[1,124,null,{"value":"content"}] >> 50:[0,125,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,125,null,{"value":null}] >> 2276:[0,126,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 169:[1,126,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] >> 31:[0,127,"Marionette:GetContext"] << 31:[1,127,null,{"value":"chrome"}] >> 51:[0,128,"Marionette:SetContext",{"value":"content"}] << 27:[1,128,null,{"value":null}] >> 31:[0,129,"Marionette:GetContext"] << 32:[1,129,null,{"value":"content"}] >> 50:[0,130,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,130,null,{"value":null}] >> 2276:[0,131,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,131,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685672252,"parentGuid":"menu________","childCount":2}}] >> 31:[0,132,"Marionette:GetContext"] << 31:[1,132,null,{"value":"chrome"}] >> 51:[0,133,"Marionette:SetContext",{"value":"content"}] << 27:[1,133,null,{"value":null}] >> 31:[0,134,"Marionette:GetContext"] << 32:[1,134,null,{"value":"content"}] >> 50:[0,135,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,135,null,{"value":null}] >> 2276:[0,136,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 310:[1,136,null,{"value":{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[]}}] >> 31:[0,137,"Marionette:GetContext"] << 31:[1,137,null,{"value":"chrome"}] >> 51:[0,138,"Marionette:SetContext",{"value":"content"}] << 27:[1,138,null,{"value":null}] >> 31:[0,139,"Marionette:GetContext"] << 32:[1,139,null,{"value":"content"}] >> 50:[0,140,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,140,null,{"value":null}] >> 831:[0,141,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/pod/Firefox::Marionette"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 334:[1,141,null,{"value":[{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 31:[0,142,"Marionette:GetContext"] << 31:[1,142,null,{"value":"chrome"}] >> 50:[0,143,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,143,null,{"value":null}] >> 2276:[0,144,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 310:[1,144,null,{"value":{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[]}}] >> 31:[0,145,"Marionette:GetContext"] << 31:[1,145,null,{"value":"chrome"}] >> 50:[0,146,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,146,null,{"value":null}] >> 31:[0,147,"Marionette:GetContext"] << 31:[1,147,null,{"value":"chrome"}] >> 51:[0,148,"Marionette:SetContext",{"value":"content"}] << 27:[1,148,null,{"value":null}] >> 31:[0,149,"Marionette:GetContext"] << 32:[1,149,null,{"value":"content"}] >> 50:[0,150,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,150,null,{"value":null}] >> 2276:[0,151,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 328:[1,151,null,{"value":{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[]}}] >> 31:[0,152,"Marionette:GetContext"] << 31:[1,152,null,{"value":"chrome"}] >> 51:[0,153,"Marionette:SetContext",{"value":"content"}] << 27:[1,153,null,{"value":null}] >> 31:[0,154,"Marionette:GetContext"] << 32:[1,154,null,{"value":"content"}] >> 50:[0,155,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,155,null,{"value":null}] >> 845:[0,156,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 352:[1,156,null,{"value":[{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] >> 31:[0,157,"Marionette:GetContext"] << 31:[1,157,null,{"value":"chrome"}] >> 50:[0,158,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,158,null,{"value":null}] >> 2276:[0,159,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 328:[1,159,null,{"value":{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[]}}] >> 31:[0,160,"Marionette:GetContext"] << 31:[1,160,null,{"value":"chrome"}] >> 50:[0,161,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,161,null,{"value":null}] >> 31:[0,162,"Marionette:GetContext"] << 31:[1,162,null,{"value":"chrome"}] >> 51:[0,163,"Marionette:SetContext",{"value":"content"}] << 27:[1,163,null,{"value":null}] >> 31:[0,164,"Marionette:GetContext"] << 32:[1,164,null,{"value":"content"}] >> 50:[0,165,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,165,null,{"value":null}] >> 2276:[0,166,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,166,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 31:[0,167,"Marionette:GetContext"] << 31:[1,167,null,{"value":"chrome"}] >> 51:[0,168,"Marionette:SetContext",{"value":"content"}] << 27:[1,168,null,{"value":null}] >> 31:[0,169,"Marionette:GetContext"] << 32:[1,169,null,{"value":"content"}] >> 50:[0,170,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,170,null,{"value":null}] >> 2276:[0,171,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 298:[1,171,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"]}}] >> 31:[0,172,"Marionette:GetContext"] << 31:[1,172,null,{"value":"chrome"}] >> 51:[0,173,"Marionette:SetContext",{"value":"content"}] << 27:[1,173,null,{"value":null}] >> 31:[0,174,"Marionette:GetContext"] << 32:[1,174,null,{"value":"content"}] >> 50:[0,175,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,175,null,{"value":null}] >> 847:[0,176,"WebDriver:ExecuteScript",{"args":["https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 25:[1,176,null,{"value":[]}] >> 31:[0,177,"Marionette:GetContext"] << 31:[1,177,null,{"value":"chrome"}] >> 51:[0,178,"Marionette:SetContext",{"value":"content"}] << 27:[1,178,null,{"value":null}] >> 31:[0,179,"Marionette:GetContext"] << 32:[1,179,null,{"value":"content"}] >> 50:[0,180,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,180,null,{"value":null}] >> 3195:[0,181,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","tags":["perl","\ud83d\udc2b","UTF8","ddg"],"title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 277:[1,181,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}}] >> 31:[0,182,"Marionette:GetContext"] << 31:[1,182,null,{"value":"chrome"}] >> 51:[0,183,"Marionette:SetContext",{"value":"content"}] << 27:[1,183,null,{"value":null}] >> 31:[0,184,"Marionette:GetContext"] << 32:[1,184,null,{"value":"content"}] >> 50:[0,185,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,185,null,{"value":null}] >> 2276:[0,186,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 153:[1,186,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 31:[0,187,"Marionette:GetContext"] << 31:[1,187,null,{"value":"chrome"}] >> 51:[0,188,"Marionette:SetContext",{"value":"content"}] << 27:[1,188,null,{"value":null}] >> 31:[0,189,"Marionette:GetContext"] << 32:[1,189,null,{"value":"content"}] >> 50:[0,190,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,190,null,{"value":null}] >> 2276:[0,191,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 348:[1,191,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[]}}] >> 31:[0,192,"Marionette:GetContext"] << 31:[1,192,null,{"value":"chrome"}] >> 51:[0,193,"Marionette:SetContext",{"value":"content"}] << 27:[1,193,null,{"value":null}] >> 31:[0,194,"Marionette:GetContext"] << 32:[1,194,null,{"value":"content"}] >> 50:[0,195,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,195,null,{"value":null}] >> 835:[0,196,"WebDriver:ExecuteScript",{"args":["https://github.com/david-dick/firefox-marionette"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 375:[1,196,null,{"value":[{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"}]}] >> 31:[0,197,"Marionette:GetContext"] << 31:[1,197,null,{"value":"chrome"}] >> 50:[0,198,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,198,null,{"value":null}] >> 2276:[0,199,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 348:[1,199,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[]}}] >> 31:[0,200,"Marionette:GetContext"] << 31:[1,200,null,{"value":"chrome"}] >> 50:[0,201,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,201,null,{"value":null}] >> 31:[0,202,"Marionette:GetContext"] << 31:[1,202,null,{"value":"chrome"}] >> 51:[0,203,"Marionette:SetContext",{"value":"content"}] << 27:[1,203,null,{"value":null}] >> 31:[0,204,"Marionette:GetContext"] << 32:[1,204,null,{"value":"content"}] >> 50:[0,205,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,205,null,{"value":null}] >> 2276:[0,206,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,206,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 31:[0,207,"Marionette:GetContext"] << 31:[1,207,null,{"value":"chrome"}] >> 51:[0,208,"Marionette:SetContext",{"value":"content"}] << 27:[1,208,null,{"value":null}] >> 31:[0,209,"Marionette:GetContext"] << 32:[1,209,null,{"value":"content"}] >> 50:[0,210,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,210,null,{"value":null}] >> 2276:[0,211,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 241:[1,211,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 31:[0,212,"Marionette:GetContext"] << 31:[1,212,null,{"value":"chrome"}] >> 51:[0,213,"Marionette:SetContext",{"value":"content"}] << 27:[1,213,null,{"value":null}] >> 31:[0,214,"Marionette:GetContext"] << 32:[1,214,null,{"value":"content"}] >> 50:[0,215,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,215,null,{"value":null}] >> 821:[0,216,"WebDriver:ExecuteScript",{"args":["https://pause.perl.org/pause/query"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 265:[1,216,null,{"value":[{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"}]}] >> 31:[0,217,"Marionette:GetContext"] << 31:[1,217,null,{"value":"chrome"}] >> 50:[0,218,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,218,null,{"value":null}] >> 2276:[0,219,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 241:[1,219,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 31:[0,220,"Marionette:GetContext"] << 31:[1,220,null,{"value":"chrome"}] >> 50:[0,221,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,221,null,{"value":null}] >> 31:[0,222,"Marionette:GetContext"] << 31:[1,222,null,{"value":"chrome"}] >> 51:[0,223,"Marionette:SetContext",{"value":"content"}] << 27:[1,223,null,{"value":null}] >> 31:[0,224,"Marionette:GetContext"] << 32:[1,224,null,{"value":"content"}] >> 50:[0,225,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,225,null,{"value":null}] >> 2276:[0,226,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,226,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 31:[0,227,"Marionette:GetContext"] << 31:[1,227,null,{"value":"chrome"}] >> 51:[0,228,"Marionette:SetContext",{"value":"content"}] << 27:[1,228,null,{"value":null}] >> 31:[0,229,"Marionette:GetContext"] << 32:[1,229,null,{"value":"content"}] >> 50:[0,230,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,230,null,{"value":null}] >> 2276:[0,231,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 225:[1,231,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,232,"Marionette:GetContext"] << 31:[1,232,null,{"value":"chrome"}] >> 51:[0,233,"Marionette:SetContext",{"value":"content"}] << 27:[1,233,null,{"value":null}] >> 31:[0,234,"Marionette:GetContext"] << 32:[1,234,null,{"value":"content"}] >> 50:[0,235,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,235,null,{"value":null}] >> 809:[0,236,"WebDriver:ExecuteScript",{"args":["https://perlmonks.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 249:[1,236,null,{"value":[{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,237,"Marionette:GetContext"] << 31:[1,237,null,{"value":"chrome"}] >> 50:[0,238,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,238,null,{"value":null}] >> 2276:[0,239,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 225:[1,239,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,240,"Marionette:GetContext"] << 31:[1,240,null,{"value":"chrome"}] >> 50:[0,241,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,241,null,{"value":null}] >> 31:[0,242,"Marionette:GetContext"] << 31:[1,242,null,{"value":"chrome"}] >> 51:[0,243,"Marionette:SetContext",{"value":"content"}] << 27:[1,243,null,{"value":null}] >> 31:[0,244,"Marionette:GetContext"] << 32:[1,244,null,{"value":"content"}] >> 50:[0,245,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,245,null,{"value":null}] >> 2276:[0,246,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,246,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 31:[0,247,"Marionette:GetContext"] << 31:[1,247,null,{"value":"chrome"}] >> 51:[0,248,"Marionette:SetContext",{"value":"content"}] << 27:[1,248,null,{"value":null}] >> 31:[0,249,"Marionette:GetContext"] << 32:[1,249,null,{"value":"content"}] >> 50:[0,250,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,250,null,{"value":null}] >> 839:[0,251,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 334:[1,251,null,{"value":[{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 31:[0,252,"Marionette:GetContext"] << 31:[1,252,null,{"value":"chrome"}] >> 50:[0,253,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,253,null,{"value":null}] >> 2276:[0,254,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 310:[1,254,null,{"value":{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[]}}] >> 31:[0,255,"Marionette:GetContext"] << 31:[1,255,null,{"value":"chrome"}] >> 50:[0,256,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,256,null,{"value":null}] >> 31:[0,257,"Marionette:GetContext"] << 31:[1,257,null,{"value":"chrome"}] >> 51:[0,258,"Marionette:SetContext",{"value":"content"}] << 27:[1,258,null,{"value":null}] >> 31:[0,259,"Marionette:GetContext"] << 32:[1,259,null,{"value":"content"}] >> 50:[0,260,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,260,null,{"value":null}] >> 808:[0,261,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 662:[1,261,null,{"value":[{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] >> 31:[0,262,"Marionette:GetContext"] << 31:[1,262,null,{"value":"chrome"}] >> 50:[0,263,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,263,null,{"value":null}] >> 2276:[0,264,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 310:[1,264,null,{"value":{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[]}}] >> 31:[0,265,"Marionette:GetContext"] << 31:[1,265,null,{"value":"chrome"}] >> 50:[0,266,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,266,null,{"value":null}] >> 31:[0,267,"Marionette:GetContext"] << 31:[1,267,null,{"value":"chrome"}] >> 50:[0,268,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,268,null,{"value":null}] >> 2276:[0,269,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 328:[1,269,null,{"value":{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[]}}] >> 31:[0,270,"Marionette:GetContext"] << 31:[1,270,null,{"value":"chrome"}] >> 50:[0,271,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,271,null,{"value":null}] >> 31:[0,272,"Marionette:GetContext"] << 31:[1,272,null,{"value":"chrome"}] >> 51:[0,273,"Marionette:SetContext",{"value":"content"}] << 27:[1,273,null,{"value":null}] >> 31:[0,274,"Marionette:GetContext"] << 32:[1,274,null,{"value":"content"}] >> 50:[0,275,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,275,null,{"value":null}] >> 799:[0,276,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,276,null,{"value":null}] >> 31:[0,277,"Marionette:GetContext"] << 31:[1,277,null,{"value":"chrome"}] >> 51:[0,278,"Marionette:SetContext",{"value":"content"}] << 27:[1,278,null,{"value":null}] >> 31:[0,279,"Marionette:GetContext"] << 32:[1,279,null,{"value":"content"}] >> 50:[0,280,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,280,null,{"value":null}] >> 839:[0,281,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 25:[1,281,null,{"value":[]}] >> 31:[0,282,"Marionette:GetContext"] << 31:[1,282,null,{"value":"chrome"}] >> 51:[0,283,"Marionette:SetContext",{"value":"content"}] << 27:[1,283,null,{"value":null}] >> 31:[0,284,"Marionette:GetContext"] << 32:[1,284,null,{"value":"content"}] >> 50:[0,285,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,285,null,{"value":null}] >> 817:[0,286,"WebDriver:ExecuteScript",{"args":[{"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 249:[1,286,null,{"value":[{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,287,"Marionette:GetContext"] << 31:[1,287,null,{"value":"chrome"}] >> 50:[0,288,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,288,null,{"value":null}] >> 2276:[0,289,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 225:[1,289,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,290,"Marionette:GetContext"] << 31:[1,290,null,{"value":"chrome"}] >> 50:[0,291,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,291,null,{"value":null}] >> 31:[0,292,"Marionette:GetContext"] << 31:[1,292,null,{"value":"chrome"}] >> 51:[0,293,"Marionette:SetContext",{"value":"content"}] << 27:[1,293,null,{"value":null}] >> 31:[0,294,"Marionette:GetContext"] << 32:[1,294,null,{"value":"content"}] >> 50:[0,295,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,295,null,{"value":null}] >> 808:[0,296,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 352:[1,296,null,{"value":[{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] >> 31:[0,297,"Marionette:GetContext"] << 31:[1,297,null,{"value":"chrome"}] >> 50:[0,298,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,298,null,{"value":null}] >> 2276:[0,299,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 328:[1,299,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[]}}] >> 31:[0,300,"Marionette:GetContext"] << 31:[1,300,null,{"value":"chrome"}] >> 50:[0,301,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,301,null,{"value":null}] >> 31:[0,302,"Marionette:GetContext"] << 31:[1,302,null,{"value":"chrome"}] >> 51:[0,303,"Marionette:SetContext",{"value":"content"}] << 27:[1,303,null,{"value":null}] >> 31:[0,304,"Marionette:GetContext"] << 32:[1,304,null,{"value":"content"}] >> 50:[0,305,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,305,null,{"value":null}] >> 787:[0,306,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 2768:[1,306,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2025-10-04T04:02:53.918Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2025-10-04T04:02:52.090Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-04T04:02:51.289Z","lastModified":"2025-10-04T04:02:51.360Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2025-10-04T04:02:53.918Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,307,"Marionette:GetContext"] << 31:[1,307,null,{"value":"chrome"}] >> 50:[0,308,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,308,null,{"value":null}] >> 2276:[0,309,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,309,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1759550573,"parentGuid":"root________","childCount":4}}] >> 31:[0,310,"Marionette:GetContext"] << 31:[1,310,null,{"value":"chrome"}] >> 50:[0,311,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,311,null,{"value":null}] >> 31:[0,312,"Marionette:GetContext"] << 31:[1,312,null,{"value":"chrome"}] >> 50:[0,313,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,313,null,{"value":null}] >> 2276:[0,314,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,314,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 31:[0,315,"Marionette:GetContext"] << 31:[1,315,null,{"value":"chrome"}] >> 50:[0,316,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,316,null,{"value":null}] >> 31:[0,317,"Marionette:GetContext"] << 31:[1,317,null,{"value":"chrome"}] >> 50:[0,318,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,318,null,{"value":null}] >> 2276:[0,319,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,319,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1759550571,"lastModified":1759550572,"parentGuid":"root________","childCount":4}}] >> 31:[0,320,"Marionette:GetContext"] << 31:[1,320,null,{"value":"chrome"}] >> 50:[0,321,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,321,null,{"value":null}] >> 31:[0,322,"Marionette:GetContext"] << 31:[1,322,null,{"value":"chrome"}] >> 50:[0,323,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,323,null,{"value":null}] >> 2276:[0,324,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,324,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 31:[0,325,"Marionette:GetContext"] << 31:[1,325,null,{"value":"chrome"}] >> 50:[0,326,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,326,null,{"value":null}] >> 31:[0,327,"Marionette:GetContext"] << 31:[1,327,null,{"value":"chrome"}] >> 50:[0,328,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,328,null,{"value":null}] >> 2276:[0,329,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,329,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 31:[0,330,"Marionette:GetContext"] << 31:[1,330,null,{"value":"chrome"}] >> 50:[0,331,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,331,null,{"value":null}] >> 31:[0,332,"Marionette:GetContext"] << 31:[1,332,null,{"value":"chrome"}] >> 50:[0,333,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,333,null,{"value":null}] >> 2276:[0,334,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,334,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1759550573,"parentGuid":"menu________","childCount":1}}] >> 31:[0,335,"Marionette:GetContext"] << 31:[1,335,null,{"value":"chrome"}] >> 50:[0,336,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,336,null,{"value":null}] >> 31:[0,337,"Marionette:GetContext"] << 31:[1,337,null,{"value":"chrome"}] >> 50:[0,338,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,338,null,{"value":null}] >> 2276:[0,339,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 328:[1,339,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[]}}] >> 31:[0,340,"Marionette:GetContext"] << 31:[1,340,null,{"value":"chrome"}] >> 50:[0,341,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,341,null,{"value":null}] >> 31:[0,342,"Marionette:GetContext"] << 31:[1,342,null,{"value":"chrome"}] >> 50:[0,343,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,343,null,{"value":null}] >> 2276:[0,344,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,344,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 31:[0,345,"Marionette:GetContext"] << 31:[1,345,null,{"value":"chrome"}] >> 50:[0,346,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,346,null,{"value":null}] >> 31:[0,347,"Marionette:GetContext"] << 31:[1,347,null,{"value":"chrome"}] >> 50:[0,348,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,348,null,{"value":null}] >> 2276:[0,349,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 298:[1,349,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"]}}] >> 31:[0,350,"Marionette:GetContext"] << 31:[1,350,null,{"value":"chrome"}] >> 50:[0,351,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,351,null,{"value":null}] >> 31:[0,352,"Marionette:GetContext"] << 31:[1,352,null,{"value":"chrome"}] >> 50:[0,353,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,353,null,{"value":null}] >> 2276:[0,354,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 153:[1,354,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 31:[0,355,"Marionette:GetContext"] << 31:[1,355,null,{"value":"chrome"}] >> 50:[0,356,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,356,null,{"value":null}] >> 31:[0,357,"Marionette:GetContext"] << 31:[1,357,null,{"value":"chrome"}] >> 50:[0,358,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,358,null,{"value":null}] >> 2276:[0,359,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 348:[1,359,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[]}}] >> 31:[0,360,"Marionette:GetContext"] << 31:[1,360,null,{"value":"chrome"}] >> 50:[0,361,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,361,null,{"value":null}] >> 31:[0,362,"Marionette:GetContext"] << 31:[1,362,null,{"value":"chrome"}] >> 50:[0,363,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,363,null,{"value":null}] >> 2276:[0,364,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 241:[1,364,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 31:[0,365,"Marionette:GetContext"] << 31:[1,365,null,{"value":"chrome"}] >> 50:[0,366,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,366,null,{"value":null}] >> 31:[0,367,"Marionette:GetContext"] << 31:[1,367,null,{"value":"chrome"}] >> 50:[0,368,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,368,null,{"value":null}] >> 2276:[0,369,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 225:[1,369,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,370,"Marionette:GetContext"] << 31:[1,370,null,{"value":"chrome"}] >> 50:[0,371,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,371,null,{"value":null}] >> 31:[0,372,"Marionette:GetContext"] << 31:[1,372,null,{"value":"chrome"}] >> 51:[0,373,"Marionette:SetContext",{"value":"content"}] << 27:[1,373,null,{"value":null}] >> 31:[0,374,"Marionette:GetContext"] << 32:[1,374,null,{"value":"content"}] >> 50:[0,375,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,375,null,{"value":null}] >> 799:[0,376,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,376,null,{"value":null}] >> 31:[0,377,"Marionette:GetContext"] << 31:[1,377,null,{"value":"chrome"}] >> 51:[0,378,"Marionette:SetContext",{"value":"content"}] << 27:[1,378,null,{"value":null}] >> 31:[0,379,"Marionette:GetContext"] << 32:[1,379,null,{"value":"content"}] >> 50:[0,380,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,380,null,{"value":null}] >> 799:[0,381,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,381,null,{"value":null}] >> 31:[0,382,"Marionette:GetContext"] << 31:[1,382,null,{"value":"chrome"}] >> 51:[0,383,"Marionette:SetContext",{"value":"content"}] << 27:[1,383,null,{"value":null}] >> 31:[0,384,"Marionette:GetContext"] << 32:[1,384,null,{"value":"content"}] >> 50:[0,385,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,385,null,{"value":null}] >> 799:[0,386,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,386,null,{"value":null}] >> 31:[0,387,"Marionette:GetContext"] << 31:[1,387,null,{"value":"chrome"}] >> 51:[0,388,"Marionette:SetContext",{"value":"content"}] << 27:[1,388,null,{"value":null}] >> 31:[0,389,"Marionette:GetContext"] << 32:[1,389,null,{"value":"content"}] >> 50:[0,390,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,390,null,{"value":null}] >> 799:[0,391,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,391,null,{"value":null}] >> 31:[0,392,"Marionette:GetContext"] << 31:[1,392,null,{"value":"chrome"}] >> 51:[0,393,"Marionette:SetContext",{"value":"content"}] << 27:[1,393,null,{"value":null}] >> 31:[0,394,"Marionette:GetContext"] << 32:[1,394,null,{"value":"content"}] >> 50:[0,395,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,395,null,{"value":null}] >> 799:[0,396,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,396,null,{"value":null}] >> 31:[0,397,"Marionette:GetContext"] << 31:[1,397,null,{"value":"chrome"}] >> 51:[0,398,"Marionette:SetContext",{"value":"content"}] << 27:[1,398,null,{"value":null}] >> 31:[0,399,"Marionette:GetContext"] << 32:[1,399,null,{"value":"content"}] >> 50:[0,400,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,400,null,{"value":null}] >> 799:[0,401,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,401,null,{"value":null}] >> 31:[0,402,"Marionette:GetContext"] << 31:[1,402,null,{"value":"chrome"}] >> 51:[0,403,"Marionette:SetContext",{"value":"content"}] << 27:[1,403,null,{"value":null}] >> 31:[0,404,"Marionette:GetContext"] << 32:[1,404,null,{"value":"content"}] >> 50:[0,405,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,405,null,{"value":null}] >> 799:[0,406,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,406,null,{"value":null}] >> 31:[0,407,"Marionette:GetContext"] << 31:[1,407,null,{"value":"chrome"}] >> 51:[0,408,"Marionette:SetContext",{"value":"content"}] << 27:[1,408,null,{"value":null}] >> 31:[0,409,"Marionette:GetContext"] << 32:[1,409,null,{"value":"content"}] >> 50:[0,410,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,410,null,{"value":null}] >> 799:[0,411,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,411,null,{"value":null}] >> 31:[0,412,"Marionette:GetContext"] << 31:[1,412,null,{"value":"chrome"}] >> 51:[0,413,"Marionette:SetContext",{"value":"content"}] << 27:[1,413,null,{"value":null}] >> 31:[0,414,"Marionette:GetContext"] << 32:[1,414,null,{"value":"content"}] >> 50:[0,415,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,415,null,{"value":null}] >> 2301:[0,416,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,416,null,{"value":null}] >> 31:[0,417,"Marionette:GetContext"] << 31:[1,417,null,{"value":"chrome"}] >> 51:[0,418,"Marionette:SetContext",{"value":"content"}] << 27:[1,418,null,{"value":null}] >> 31:[0,419,"Marionette:GetContext"] << 32:[1,419,null,{"value":"content"}] >> 50:[0,420,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,420,null,{"value":null}] >> 2301:[0,421,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"xeZJM125JQv5"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,421,null,{"value":null}] >> 31:[0,422,"Marionette:GetContext"] << 31:[1,422,null,{"value":"chrome"}] >> 51:[0,423,"Marionette:SetContext",{"value":"content"}] << 27:[1,423,null,{"value":null}] >> 31:[0,424,"Marionette:GetContext"] << 32:[1,424,null,{"value":"content"}] >> 50:[0,425,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,425,null,{"value":null}] >> 2301:[0,426,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"xeZJM125JQv5"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,426,null,{"value":null}] >> 31:[0,427,"Marionette:GetContext"] << 31:[1,427,null,{"value":"chrome"}] >> 51:[0,428,"Marionette:SetContext",{"value":"content"}] << 27:[1,428,null,{"value":null}] >> 31:[0,429,"Marionette:GetContext"] << 32:[1,429,null,{"value":"content"}] >> 50:[0,430,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,430,null,{"value":null}] >> 2301:[0,431,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,431,null,{"value":null}] >> 31:[0,432,"Marionette:GetContext"] << 31:[1,432,null,{"value":"chrome"}] >> 51:[0,433,"Marionette:SetContext",{"value":"content"}] << 27:[1,433,null,{"value":null}] >> 31:[0,434,"Marionette:GetContext"] << 32:[1,434,null,{"value":"content"}] >> 50:[0,435,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,435,null,{"value":null}] >> 2301:[0,436,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"VKLG70LBZK6K"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,436,null,{"value":null}] >> 31:[0,437,"Marionette:GetContext"] << 31:[1,437,null,{"value":"chrome"}] >> 51:[0,438,"Marionette:SetContext",{"value":"content"}] << 27:[1,438,null,{"value":null}] >> 31:[0,439,"Marionette:GetContext"] << 32:[1,439,null,{"value":"content"}] >> 50:[0,440,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,440,null,{"value":null}] >> 2301:[0,441,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,441,null,{"value":null}] >> 31:[0,442,"Marionette:GetContext"] << 31:[1,442,null,{"value":"chrome"}] >> 51:[0,443,"Marionette:SetContext",{"value":"content"}] << 27:[1,443,null,{"value":null}] >> 31:[0,444,"Marionette:GetContext"] << 32:[1,444,null,{"value":"content"}] >> 50:[0,445,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,445,null,{"value":null}] >> 2301:[0,446,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,446,null,{"value":null}] >> 31:[0,447,"Marionette:GetContext"] << 31:[1,447,null,{"value":"chrome"}] >> 51:[0,448,"Marionette:SetContext",{"value":"content"}] << 27:[1,448,null,{"value":null}] >> 31:[0,449,"Marionette:GetContext"] << 32:[1,449,null,{"value":"content"}] >> 50:[0,450,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,450,null,{"value":null}] >> 2301:[0,451,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"toolbar_____"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,451,null,{"value":null}] >> 31:[0,452,"Marionette:GetContext"] << 31:[1,452,null,{"value":"chrome"}] >> 51:[0,453,"Marionette:SetContext",{"value":"content"}] << 27:[1,453,null,{"value":null}] >> 31:[0,454,"Marionette:GetContext"] << 32:[1,454,null,{"value":"content"}] >> 50:[0,455,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,455,null,{"value":null}] >> 2301:[0,456,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"unfiled_____"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,456,null,{"value":null}] >> 31:[0,457,"Marionette:GetContext"] << 31:[1,457,null,{"value":"chrome"}] >> 51:[0,458,"Marionette:SetContext",{"value":"content"}] << 27:[1,458,null,{"value":null}] >> 31:[0,459,"Marionette:GetContext"] << 32:[1,459,null,{"value":"content"}] >> 50:[0,460,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,460,null,{"value":null}] >> 2276:[0,461,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 140:[1,461,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1759550571,"lastModified":1759550574,"childCount":5}}] >> 31:[0,462,"Marionette:GetContext"] << 31:[1,462,null,{"value":"chrome"}] >> 51:[0,463,"Marionette:SetContext",{"value":"content"}] << 27:[1,463,null,{"value":null}] >> 31:[0,464,"Marionette:GetContext"] << 32:[1,464,null,{"value":"content"}] >> 50:[0,465,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,465,null,{"value":null}] >> 2276:[0,466,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,466,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":0}}] >> 31:[0,467,"Marionette:GetContext"] << 31:[1,467,null,{"value":"chrome"}] >> 51:[0,468,"Marionette:SetContext",{"value":"content"}] << 27:[1,468,null,{"value":null}] >> 31:[0,469,"Marionette:GetContext"] << 32:[1,469,null,{"value":"content"}] >> 50:[0,470,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,470,null,{"value":null}] >> 2276:[0,471,"WebDriver:ExecuteScript",{"args":["xeZJM125JQv5"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,471,null,{"value":null}] >> 31:[0,472,"Marionette:GetContext"] << 31:[1,472,null,{"value":"chrome"}] >> 51:[0,473,"Marionette:SetContext",{"value":"content"}] << 27:[1,473,null,{"value":null}] >> 31:[0,474,"Marionette:GetContext"] << 32:[1,474,null,{"value":"content"}] >> 50:[0,475,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,475,null,{"value":null}] >> 2983:[0,476,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685611344,"guid":"xeZJM125JQv5","lastModified":1685672402,"parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 189:[1,476,null,{"value":{"dateAdded":"2023-06-01T09:22:24.000Z","guid":"xeZJM125JQv5","lastModified":"2023-06-02T02:20:02.000Z","parentGuid":"menu________","title":"CPAN","type":2,"index":0}}] >> 31:[0,477,"Marionette:GetContext"] << 31:[1,477,null,{"value":"chrome"}] >> 51:[0,478,"Marionette:SetContext",{"value":"content"}] << 27:[1,478,null,{"value":null}] >> 31:[0,479,"Marionette:GetContext"] << 32:[1,479,null,{"value":"content"}] >> 50:[0,480,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,480,null,{"value":null}] >> 2276:[0,481,"WebDriver:ExecuteScript",{"args":["vJn8DKZa4fHw"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,481,null,{"value":null}] >> 31:[0,482,"Marionette:GetContext"] << 31:[1,482,null,{"value":"chrome"}] >> 51:[0,483,"Marionette:SetContext",{"value":"content"}] << 27:[1,483,null,{"value":null}] >> 31:[0,484,"Marionette:GetContext"] << 32:[1,484,null,{"value":"content"}] >> 50:[0,485,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,485,null,{"value":null}] >> 5500:[0,486,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"vJn8DKZa4fHw","icon":"data:image/png;base64,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","iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","lastModified":1685610973,"parentGuid":"xeZJM125JQv5","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 332:[1,486,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"vJn8DKZa4fHw","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"xeZJM125JQv5","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0}}] >> 31:[0,487,"Marionette:GetContext"] << 31:[1,487,null,{"value":"chrome"}] >> 51:[0,488,"Marionette:SetContext",{"value":"content"}] << 27:[1,488,null,{"value":null}] >> 31:[0,489,"Marionette:GetContext"] << 32:[1,489,null,{"value":"content"}] >> 50:[0,490,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,490,null,{"value":null}] >> 2276:[0,491,"WebDriver:ExecuteScript",{"args":["0eY38Pog9zF8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,491,null,{"value":null}] >> 31:[0,492,"Marionette:GetContext"] << 31:[1,492,null,{"value":"chrome"}] >> 51:[0,493,"Marionette:SetContext",{"value":"content"}] << 27:[1,493,null,{"value":null}] >> 31:[0,494,"Marionette:GetContext"] << 32:[1,494,null,{"value":"content"}] >> 50:[0,495,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,495,null,{"value":null}] >> 5532:[0,496,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"0eY38Pog9zF8","icon":"data:image/png;base64,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","iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","lastModified":1685672252,"parentGuid":"xeZJM125JQv5","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 350:[1,496,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"0eY38Pog9zF8","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"xeZJM125JQv5","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1}}] >> 31:[0,497,"Marionette:GetContext"] << 31:[1,497,null,{"value":"chrome"}] >> 51:[0,498,"Marionette:SetContext",{"value":"content"}] << 27:[1,498,null,{"value":null}] >> 31:[0,499,"Marionette:GetContext"] << 32:[1,499,null,{"value":"content"}] >> 50:[0,500,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,500,null,{"value":null}] >> 2276:[0,501,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,501,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] >> 31:[0,502,"Marionette:GetContext"] << 31:[1,502,null,{"value":"chrome"}] >> 51:[0,503,"Marionette:SetContext",{"value":"content"}] << 27:[1,503,null,{"value":null}] >> 31:[0,504,"Marionette:GetContext"] << 32:[1,504,null,{"value":"content"}] >> 50:[0,505,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,505,null,{"value":null}] >> 2276:[0,506,"WebDriver:ExecuteScript",{"args":["VKLG70LBZK6K"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,506,null,{"value":null}] >> 31:[0,507,"Marionette:GetContext"] << 31:[1,507,null,{"value":"chrome"}] >> 51:[0,508,"Marionette:SetContext",{"value":"content"}] << 27:[1,508,null,{"value":null}] >> 31:[0,509,"Marionette:GetContext"] << 32:[1,509,null,{"value":"content"}] >> 50:[0,510,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,510,null,{"value":null}] >> 2987:[0,511,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670822,"guid":"VKLG70LBZK6K","lastModified":1685672383,"parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 193:[1,511,null,{"value":{"dateAdded":"2023-06-02T01:53:42.000Z","guid":"VKLG70LBZK6K","lastModified":"2023-06-02T02:19:43.000Z","parentGuid":"menu________","title":"Searches","type":2,"index":1}}] >> 31:[0,512,"Marionette:GetContext"] << 31:[1,512,null,{"value":"chrome"}] >> 51:[0,513,"Marionette:SetContext",{"value":"content"}] << 27:[1,513,null,{"value":null}] >> 31:[0,514,"Marionette:GetContext"] << 32:[1,514,null,{"value":"content"}] >> 50:[0,515,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,515,null,{"value":null}] >> 2276:[0,516,"WebDriver:ExecuteScript",{"args":["sTWAWWIr3NZE"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,516,null,{"value":null}] >> 31:[0,517,"Marionette:GetContext"] << 31:[1,517,null,{"value":"chrome"}] >> 51:[0,518,"Marionette:SetContext",{"value":"content"}] << 27:[1,518,null,{"value":null}] >> 31:[0,519,"Marionette:GetContext"] << 32:[1,519,null,{"value":"content"}] >> 50:[0,520,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,520,null,{"value":null}] >> 4499:[0,521,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"sTWAWWIr3NZE","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII=","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"VKLG70LBZK6K","tags":["perl","\ud83d\udc2b","UTF8","ddg"],"title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 277:[1,521,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"sTWAWWIr3NZE","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"VKLG70LBZK6K","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0}}] >> 31:[0,522,"Marionette:GetContext"] << 31:[1,522,null,{"value":"chrome"}] >> 51:[0,523,"Marionette:SetContext",{"value":"content"}] << 27:[1,523,null,{"value":null}] >> 31:[0,524,"Marionette:GetContext"] << 32:[1,524,null,{"value":"content"}] >> 50:[0,525,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,525,null,{"value":null}] >> 2276:[0,526,"WebDriver:ExecuteScript",{"args":["cXhsCQJDcPVd"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,526,null,{"value":null}] >> 31:[0,527,"Marionette:GetContext"] << 31:[1,527,null,{"value":"chrome"}] >> 51:[0,528,"Marionette:SetContext",{"value":"content"}] << 27:[1,528,null,{"value":null}] >> 31:[0,529,"Marionette:GetContext"] << 32:[1,529,null,{"value":"content"}] >> 50:[0,530,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,530,null,{"value":null}] >> 2919:[0,531,"WebDriver:ExecuteScript",{"args":[{"guid":"cXhsCQJDcPVd","parentGuid":"menu________","type":3}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 185:[1,531,null,{"value":{"guid":"cXhsCQJDcPVd","parentGuid":"menu________","type":3,"index":2,"title":"","dateAdded":"2025-10-04T04:02:54.334Z","lastModified":"2025-10-04T04:02:54.334Z"}}] >> 31:[0,532,"Marionette:GetContext"] << 31:[1,532,null,{"value":"chrome"}] >> 51:[0,533,"Marionette:SetContext",{"value":"content"}] << 27:[1,533,null,{"value":null}] >> 31:[0,534,"Marionette:GetContext"] << 32:[1,534,null,{"value":"content"}] >> 50:[0,535,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,535,null,{"value":null}] >> 2276:[0,536,"WebDriver:ExecuteScript",{"args":["fPaOJg5lZ1AQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,536,null,{"value":null}] >> 31:[0,537,"Marionette:GetContext"] << 31:[1,537,null,{"value":"chrome"}] >> 51:[0,538,"Marionette:SetContext",{"value":"content"}] << 27:[1,538,null,{"value":null}] >> 31:[0,539,"Marionette:GetContext"] << 32:[1,539,null,{"value":"content"}] >> 50:[0,540,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,540,null,{"value":null}] >> 4264:[0,541,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"fPaOJg5lZ1AQ","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC","iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","lastModified":1685672392,"parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 373:[1,541,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"fPaOJg5lZ1AQ","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":3}}] >> 31:[0,542,"Marionette:GetContext"] << 31:[1,542,null,{"value":"chrome"}] >> 51:[0,543,"Marionette:SetContext",{"value":"content"}] << 27:[1,543,null,{"value":null}] >> 31:[0,544,"Marionette:GetContext"] << 32:[1,544,null,{"value":"content"}] >> 50:[0,545,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,545,null,{"value":null}] >> 2276:[0,546,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,546,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":0}}] >> 31:[0,547,"Marionette:GetContext"] << 31:[1,547,null,{"value":"chrome"}] >> 51:[0,548,"Marionette:SetContext",{"value":"content"}] << 27:[1,548,null,{"value":null}] >> 31:[0,549,"Marionette:GetContext"] << 32:[1,549,null,{"value":"content"}] >> 50:[0,550,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,550,null,{"value":null}] >> 2276:[0,551,"WebDriver:ExecuteScript",{"args":["pOsC6lI63mpm"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,551,null,{"value":null}] >> 31:[0,552,"Marionette:GetContext"] << 31:[1,552,null,{"value":"chrome"}] >> 51:[0,553,"Marionette:SetContext",{"value":"content"}] << 27:[1,553,null,{"value":null}] >> 31:[0,554,"Marionette:GetContext"] << 32:[1,554,null,{"value":"content"}] >> 50:[0,555,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,555,null,{"value":null}] >> 3057:[0,556,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"pOsC6lI63mpm","lastModified":1686363942,"parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 263:[1,556,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"pOsC6lI63mpm","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0}}] >> 31:[0,557,"Marionette:GetContext"] << 31:[1,557,null,{"value":"chrome"}] >> 51:[0,558,"Marionette:SetContext",{"value":"content"}] << 27:[1,558,null,{"value":null}] >> 31:[0,559,"Marionette:GetContext"] << 32:[1,559,null,{"value":"content"}] >> 50:[0,560,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,560,null,{"value":null}] >> 2276:[0,561,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,561,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":0}}] >> 31:[0,562,"Marionette:GetContext"] << 31:[1,562,null,{"value":"chrome"}] >> 51:[0,563,"Marionette:SetContext",{"value":"content"}] << 27:[1,563,null,{"value":null}] >> 31:[0,564,"Marionette:GetContext"] << 32:[1,564,null,{"value":"content"}] >> 50:[0,565,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,565,null,{"value":null}] >> 2276:[0,566,"WebDriver:ExecuteScript",{"args":["aaFVubVSjPVG"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,566,null,{"value":null}] >> 31:[0,567,"Marionette:GetContext"] << 31:[1,567,null,{"value":"chrome"}] >> 51:[0,568,"Marionette:SetContext",{"value":"content"}] << 27:[1,568,null,{"value":null}] >> 31:[0,569,"Marionette:GetContext"] << 32:[1,569,null,{"value":"content"}] >> 50:[0,570,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,570,null,{"value":null}] >> 3041:[0,571,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"aaFVubVSjPVG","lastModified":1686364095,"parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 247:[1,571,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"aaFVubVSjPVG","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":0}}] >> 31:[0,572,"Marionette:GetContext"] << 31:[1,572,null,{"value":"chrome"}] >> 51:[0,573,"Marionette:SetContext",{"value":"content"}] << 27:[1,573,null,{"value":null}] >> 31:[0,574,"Marionette:GetContext"] << 32:[1,574,null,{"value":"content"}] >> 50:[0,575,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,575,null,{"value":null}] >> 787:[0,576,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 3078:[1,576,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"1970-01-20T12:13:31.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2025-10-04T04:02:54.316Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-04T04:02:51.289Z","lastModified":"2025-10-04T04:02:51.360Z","parentGuid":"root________"},{"guid":"xeZJM125JQv5","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"menu________"},{"guid":"vJn8DKZa4fHw","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"0eY38Pog9zF8","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"VKLG70LBZK6K","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"sTWAWWIr3NZE","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"VKLG70LBZK6K","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"cXhsCQJDcPVd","index":2,"type":3,"title":"","dateAdded":"2025-10-04T04:02:54.334Z","lastModified":"2025-10-04T04:02:54.334Z","parentGuid":"menu________"},{"guid":"fPaOJg5lZ1AQ","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"pOsC6lI63mpm","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"aaFVubVSjPVG","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,577,"Marionette:GetContext"] << 31:[1,577,null,{"value":"chrome"}] >> 50:[0,578,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,578,null,{"value":null}] >> 2276:[0,579,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 169:[1,579,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] >> 31:[0,580,"Marionette:GetContext"] << 31:[1,580,null,{"value":"chrome"}] >> 50:[0,581,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,581,null,{"value":null}] >> 31:[0,582,"Marionette:GetContext"] << 31:[1,582,null,{"value":"chrome"}] >> 50:[0,583,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,583,null,{"value":null}] >> 2276:[0,584,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,584,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 31:[0,585,"Marionette:GetContext"] << 31:[1,585,null,{"value":"chrome"}] >> 50:[0,586,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,586,null,{"value":null}] >> 31:[0,587,"Marionette:GetContext"] << 31:[1,587,null,{"value":"chrome"}] >> 50:[0,588,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,588,null,{"value":null}] >> 2276:[0,589,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,589,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":4}}] >> 31:[0,590,"Marionette:GetContext"] << 31:[1,590,null,{"value":"chrome"}] >> 50:[0,591,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,591,null,{"value":null}] >> 31:[0,592,"Marionette:GetContext"] << 31:[1,592,null,{"value":"chrome"}] >> 50:[0,593,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,593,null,{"value":null}] >> 2276:[0,594,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,594,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 31:[0,595,"Marionette:GetContext"] << 31:[1,595,null,{"value":"chrome"}] >> 50:[0,596,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,596,null,{"value":null}] >> 31:[0,597,"Marionette:GetContext"] << 31:[1,597,null,{"value":"chrome"}] >> 50:[0,598,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,598,null,{"value":null}] >> 2276:[0,599,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,599,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 31:[0,600,"Marionette:GetContext"] << 31:[1,600,null,{"value":"chrome"}] >> 50:[0,601,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,601,null,{"value":null}] >> 31:[0,602,"Marionette:GetContext"] << 31:[1,602,null,{"value":"chrome"}] >> 50:[0,603,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,603,null,{"value":null}] >> 2276:[0,604,"WebDriver:ExecuteScript",{"args":["xeZJM125JQv5"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,604,null,{"value":{"guid":"xeZJM125JQv5","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685672252,"parentGuid":"menu________","childCount":2}}] >> 31:[0,605,"Marionette:GetContext"] << 31:[1,605,null,{"value":"chrome"}] >> 50:[0,606,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,606,null,{"value":null}] >> 31:[0,607,"Marionette:GetContext"] << 31:[1,607,null,{"value":"chrome"}] >> 50:[0,608,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,608,null,{"value":null}] >> 2276:[0,609,"WebDriver:ExecuteScript",{"args":["vJn8DKZa4fHw"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2684:[1,609,null,{"value":{"guid":"vJn8DKZa4fHw","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 31:[0,610,"Marionette:GetContext"] << 31:[1,610,null,{"value":"chrome"}] >> 50:[0,611,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,611,null,{"value":null}] >> 31:[0,612,"Marionette:GetContext"] << 31:[1,612,null,{"value":"chrome"}] >> 50:[0,613,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,613,null,{"value":null}] >> 2276:[0,614,"WebDriver:ExecuteScript",{"args":["0eY38Pog9zF8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2716:[1,614,null,{"value":{"guid":"0eY38Pog9zF8","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 31:[0,615,"Marionette:GetContext"] << 31:[1,615,null,{"value":"chrome"}] >> 50:[0,616,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,616,null,{"value":null}] >> 31:[0,617,"Marionette:GetContext"] << 31:[1,617,null,{"value":"chrome"}] >> 50:[0,618,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,618,null,{"value":null}] >> 2276:[0,619,"WebDriver:ExecuteScript",{"args":["VKLG70LBZK6K"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,619,null,{"value":{"guid":"VKLG70LBZK6K","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 31:[0,620,"Marionette:GetContext"] << 31:[1,620,null,{"value":"chrome"}] >> 50:[0,621,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,621,null,{"value":null}] >> 31:[0,622,"Marionette:GetContext"] << 31:[1,622,null,{"value":"chrome"}] >> 50:[0,623,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,623,null,{"value":null}] >> 2276:[0,624,"WebDriver:ExecuteScript",{"args":["sTWAWWIr3NZE"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1649:[1,624,null,{"value":{"guid":"sTWAWWIr3NZE","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"VKLG70LBZK6K","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 31:[0,625,"Marionette:GetContext"] << 31:[1,625,null,{"value":"chrome"}] >> 50:[0,626,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,626,null,{"value":null}] >> 31:[0,627,"Marionette:GetContext"] << 31:[1,627,null,{"value":"chrome"}] >> 50:[0,628,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,628,null,{"value":null}] >> 2276:[0,629,"WebDriver:ExecuteScript",{"args":["cXhsCQJDcPVd"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 153:[1,629,null,{"value":{"guid":"cXhsCQJDcPVd","index":2,"type":3,"title":"","dateAdded":1759550574,"lastModified":1759550574,"parentGuid":"menu________"}}] >> 31:[0,630,"Marionette:GetContext"] << 31:[1,630,null,{"value":"chrome"}] >> 50:[0,631,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,631,null,{"value":null}] >> 31:[0,632,"Marionette:GetContext"] << 31:[1,632,null,{"value":"chrome"}] >> 50:[0,633,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,633,null,{"value":null}] >> 2276:[0,634,"WebDriver:ExecuteScript",{"args":["fPaOJg5lZ1AQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1446:[1,634,null,{"value":{"guid":"fPaOJg5lZ1AQ","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 31:[0,635,"Marionette:GetContext"] << 31:[1,635,null,{"value":"chrome"}] >> 50:[0,636,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,636,null,{"value":null}] >> 31:[0,637,"Marionette:GetContext"] << 31:[1,637,null,{"value":"chrome"}] >> 50:[0,638,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,638,null,{"value":null}] >> 2276:[0,639,"WebDriver:ExecuteScript",{"args":["pOsC6lI63mpm"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 241:[1,639,null,{"value":{"guid":"pOsC6lI63mpm","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 31:[0,640,"Marionette:GetContext"] << 31:[1,640,null,{"value":"chrome"}] >> 50:[0,641,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,641,null,{"value":null}] >> 31:[0,642,"Marionette:GetContext"] << 31:[1,642,null,{"value":"chrome"}] >> 50:[0,643,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,643,null,{"value":null}] >> 2276:[0,644,"WebDriver:ExecuteScript",{"args":["aaFVubVSjPVG"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 225:[1,644,null,{"value":{"guid":"aaFVubVSjPVG","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,645,"Marionette:GetContext"] << 31:[1,645,null,{"value":"chrome"}] >> 50:[0,646,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,646,null,{"value":null}] >> 31:[0,647,"Marionette:GetContext"] << 31:[1,647,null,{"value":"chrome"}] >> 51:[0,648,"Marionette:SetContext",{"value":"content"}] << 27:[1,648,null,{"value":null}] >> 31:[0,649,"Marionette:GetContext"] << 32:[1,649,null,{"value":"content"}] >> 50:[0,650,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,650,null,{"value":null}] >> 839:[0,651,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 334:[1,651,null,{"value":[{"guid":"vJn8DKZa4fHw","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 31:[0,652,"Marionette:GetContext"] << 31:[1,652,null,{"value":"chrome"}] >> 50:[0,653,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,653,null,{"value":null}] >> 2276:[0,654,"WebDriver:ExecuteScript",{"args":["vJn8DKZa4fHw"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2684:[1,654,null,{"value":{"guid":"vJn8DKZa4fHw","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 31:[0,655,"Marionette:GetContext"] << 31:[1,655,null,{"value":"chrome"}] >> 50:[0,656,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,656,null,{"value":null}] >> 31:[0,657,"Marionette:GetContext"] << 31:[1,657,null,{"value":"chrome"}] >> 51:[0,658,"Marionette:SetContext",{"value":"content"}] << 27:[1,658,null,{"value":null}] >> 31:[0,659,"Marionette:GetContext"] << 32:[1,659,null,{"value":"content"}] >> 50:[0,660,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,660,null,{"value":null}] >> 808:[0,661,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 662:[1,661,null,{"value":[{"guid":"vJn8DKZa4fHw","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"0eY38Pog9zF8","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] >> 31:[0,662,"Marionette:GetContext"] << 31:[1,662,null,{"value":"chrome"}] >> 50:[0,663,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,663,null,{"value":null}] >> 2276:[0,664,"WebDriver:ExecuteScript",{"args":["vJn8DKZa4fHw"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2684:[1,664,null,{"value":{"guid":"vJn8DKZa4fHw","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGbElEQVRYhcWWTWwV1xXHf+fcO8/PNjYFTFH5MIJNJJQIDE0LwU4faRaojUQlJHaITbtglVUWjbpwF0gsk32zqCxFFUiVsijpJvIjDkppagG1RMTG1FZJRWMixd+emXtPF2/med7DJptKudLTzJt77v/8z/eFypoEzwvWd+0D3AD3YoxGB4ZUwc9B/tHQSwP7BnsvR3MNLO5B9JlKaD5dXJu4sPBoqZTbTvklCAB3jo5cJMpbIhwSs1Ww6TyGibH5mdlx0HEwwKSq/G+HT/zC0D8OJMlQIBIBBRzKUpYtCPHK6bn7t7YiUSqfGn7lqPf+Zr/6kwCx2PcoyzEH4m9Pz967biACJlXlPUnylxCNzGIKpkKLJkhMRGtOhY0s+2U3icKi+MnB4wf6vP6zz/vdqyGk0jJQSgyBZKevyWK+fu2nj+//7gY4Afho6KWBH/b3zyZOh3ILGaIJZoaIbD5j5sUlWYgL/11ZOXph4dFSaYWBCsTPj5z8eIdLzq+EbB2ROma2GWwRzKJhse68X0+z0TPz9+8owL7B3ssDSTKUWUy3Vm6GaJJZTAeSZGjfYO9lgCYNVyqfOjBy3IueXw5pAHraykWkgqWAOUCde5sixERzjUAETNsHS+XlMjMwDUSiuUb5uUlDAZy30bo6ZDPstM9XMAVxaTQC4Sc3OFbT1kbcE6slUbLuApIyqSzuAWjQjJsiDLHd6sKLGGIy8KNh198iIPpM2wlXYdz130qXiT6rWt8SYaFq/HPnK5iKYGJL/5kPKwqgEpoOBSR2uK07iZDoUFRCs/xceiHk8tl6NKzg2GFIiSkihoWaCuD+fomHqQI8XVybWMqyhUS0hsWseqBaBYlobSnLFp4urk0UyoNANNCxJ/ce5Bb/usPVHLDxnCFFFQASAAnhfQCdBH9h4dGSEK84Fby4xMxSwwIWc8OCmaVeXOJUEOKVsiNKEbXfFwavZuHXy3n6Ta9zdTNLwXKwUGIA8gPf49OQXTszf/9Ouw98r52wBPi+ZkEHwP9jGnYk4ZYY20zDCoA0aThoZXhZakXCWbf8dyn6mqYB7KUht2nG8a5afY5AaUW1xhs0o2xb5FuvcdCfVTC+pmlleF54aDsXWituL3RvISfdbq6u7guLVDdKhlMHRo4n3kZNGDJjIeTy2diTew+65bYyoHTx7f0vH6p5fUPUHY6iqzEyPTo3PQmt8JyjmbcJlKCfHDx+oC9xf/Ci5+u6SXQ9BjLix2tp+M3P//3gyVYkSuUGcvfIyHvA1T7nEymclhNZy/OHJvnVs49nPrVWDwjSUb/qv9jha7uXQxqqMTfQHa7mlvP0mzzmr47Nz8yWY7h0e3EvkLvDJ5qDPfXXF0MGFrNqaOrOeYCVLLs4Ovfgz5M0vJaWeO9v9nm/eyVk64IoogmIRzQRRFdCtt7n/W7v/c3CdW2CZdXcPTLy3mBP/fVv83TNijtEG0PUr4eQZdHwqn+a2n9q+BzNXKHVNPrVn1wNIUWk3qJcuYwAiNRXQ0j71Z+8c3TkYhnLcdBzNPPb+18+BFxdDBlAXaoYxbuIJsFsY4erJT6J70CZ1VHealllm8OnOoiKdyk7ZyEPUJZazesbfc4nWMykOv+rU7V1qfEbFkD0zTYBNQ4W/pQuqzdBWu8SC3nYbDIAou5wmXAdE7D6KxQEMyDunRoe3lVcSGytSBQ62XY+N7W15Ksriq52fKjeqKo4LRKYkPbmezdKytO++0Ky5VNiS86modVeSy/EyHROxLq92EXIsOhVwPjyx19NrypAHsPEcshMIMEstgG6LhMCyXLILI9hAuA2zVhW0ejc9ORanj+sO+etvNRUMdphlJCgYPoBgE7S8GPzM7OIvbvT1wQsYjGzYlxai3QGFnf6miD27tj8zGxRARE226tJfhXAiSZitmFYpI1jwcw2dvqkZylPb702N/2hgeg5mvk46OnZe9cX8/VrPc77PueTRFRVRBNR7XM+6XHeL+br107P3rtell7p3UsQJmn4s49nPl3JsovRYtbvkp6aOqci6kS17rwfcEnPt1l6K/mX/mozH8q0av2xz4dPnFXn3g7EV8UYNGER9AsJ4f0z8/fvFF0PthjNZXud2n9q2CfxHUTfFOLeKKQYX2L6wWtz0x9C59xor+qkusGx2tTwK7tucKy21f52q3sSTg0P7/rH/lN9FZJilSH4Pylr2D7oCD10AAAAAElFTkSuQmCC"}}] >> 31:[0,665,"Marionette:GetContext"] << 31:[1,665,null,{"value":"chrome"}] >> 50:[0,666,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,666,null,{"value":null}] >> 31:[0,667,"Marionette:GetContext"] << 31:[1,667,null,{"value":"chrome"}] >> 50:[0,668,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,668,null,{"value":null}] >> 2276:[0,669,"WebDriver:ExecuteScript",{"args":["0eY38Pog9zF8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2716:[1,669,null,{"value":{"guid":"0eY38Pog9zF8","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 31:[0,670,"Marionette:GetContext"] << 31:[1,670,null,{"value":"chrome"}] >> 50:[0,671,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,671,null,{"value":null}] >> 31:[0,672,"Marionette:GetContext"] << 31:[1,672,null,{"value":"chrome"}] >> 51:[0,673,"Marionette:SetContext",{"value":"content"}] << 27:[1,673,null,{"value":null}] >> 31:[0,674,"Marionette:GetContext"] << 32:[1,674,null,{"value":"content"}] >> 50:[0,675,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,675,null,{"value":null}] >> 799:[0,676,"WebDriver:ExecuteScript",{"args":["vJn8DKZa4fHw"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,676,null,{"value":null}] >> 31:[0,677,"Marionette:GetContext"] << 31:[1,677,null,{"value":"chrome"}] >> 51:[0,678,"Marionette:SetContext",{"value":"content"}] << 27:[1,678,null,{"value":null}] >> 31:[0,679,"Marionette:GetContext"] << 32:[1,679,null,{"value":"content"}] >> 50:[0,680,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,680,null,{"value":null}] >> 839:[0,681,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 25:[1,681,null,{"value":[]}] >> 31:[0,682,"Marionette:GetContext"] << 31:[1,682,null,{"value":"chrome"}] >> 51:[0,683,"Marionette:SetContext",{"value":"content"}] << 27:[1,683,null,{"value":null}] >> 31:[0,684,"Marionette:GetContext"] << 32:[1,684,null,{"value":"content"}] >> 50:[0,685,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,685,null,{"value":null}] >> 817:[0,686,"WebDriver:ExecuteScript",{"args":[{"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 249:[1,686,null,{"value":[{"guid":"aaFVubVSjPVG","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,687,"Marionette:GetContext"] << 31:[1,687,null,{"value":"chrome"}] >> 50:[0,688,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,688,null,{"value":null}] >> 2276:[0,689,"WebDriver:ExecuteScript",{"args":["aaFVubVSjPVG"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 225:[1,689,null,{"value":{"guid":"aaFVubVSjPVG","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,690,"Marionette:GetContext"] << 31:[1,690,null,{"value":"chrome"}] >> 50:[0,691,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,691,null,{"value":null}] >> 31:[0,692,"Marionette:GetContext"] << 31:[1,692,null,{"value":"chrome"}] >> 51:[0,693,"Marionette:SetContext",{"value":"content"}] << 27:[1,693,null,{"value":null}] >> 31:[0,694,"Marionette:GetContext"] << 32:[1,694,null,{"value":"content"}] >> 50:[0,695,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,695,null,{"value":null}] >> 808:[0,696,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 352:[1,696,null,{"value":[{"guid":"0eY38Pog9zF8","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] >> 31:[0,697,"Marionette:GetContext"] << 31:[1,697,null,{"value":"chrome"}] >> 50:[0,698,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,698,null,{"value":null}] >> 2276:[0,699,"WebDriver:ExecuteScript",{"args":["0eY38Pog9zF8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2716:[1,699,null,{"value":{"guid":"0eY38Pog9zF8","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 31:[0,700,"Marionette:GetContext"] << 31:[1,700,null,{"value":"chrome"}] >> 50:[0,701,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,701,null,{"value":null}] >> 31:[0,702,"Marionette:GetContext"] << 31:[1,702,null,{"value":"chrome"}] >> 51:[0,703,"Marionette:SetContext",{"value":"content"}] << 27:[1,703,null,{"value":null}] >> 31:[0,704,"Marionette:GetContext"] << 32:[1,704,null,{"value":"content"}] >> 50:[0,705,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,705,null,{"value":null}] >> 809:[0,706,"WebDriver:ExecuteScript",{"args":["https://duckduckgo.com"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 279:[1,706,null,{"value":[{"guid":"sTWAWWIr3NZE","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"VKLG70LBZK6K","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}]}] >> 31:[0,707,"Marionette:GetContext"] << 31:[1,707,null,{"value":"chrome"}] >> 50:[0,708,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,708,null,{"value":null}] >> 2276:[0,709,"WebDriver:ExecuteScript",{"args":["sTWAWWIr3NZE"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1649:[1,709,null,{"value":{"guid":"sTWAWWIr3NZE","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"VKLG70LBZK6K","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 31:[0,710,"Marionette:GetContext"] << 31:[1,710,null,{"value":"chrome"}] >> 50:[0,711,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,711,null,{"value":null}] >> 31:[0,712,"Marionette:GetContext"] << 31:[1,712,null,{"value":"chrome"}] >> 51:[0,713,"Marionette:SetContext",{"value":"content"}] << 27:[1,713,null,{"value":null}] >> 31:[0,714,"Marionette:GetContext"] << 32:[1,714,null,{"value":"content"}] >> 50:[0,715,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,715,null,{"value":null}] >> 787:[0,716,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 2768:[1,716,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2025-10-04T04:02:54.560Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2025-10-04T04:02:54.316Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-04T04:02:51.289Z","lastModified":"2025-10-04T04:02:51.360Z","parentGuid":"root________"},{"guid":"xeZJM125JQv5","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2025-10-04T04:02:54.560Z","parentGuid":"menu________"},{"guid":"0eY38Pog9zF8","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"VKLG70LBZK6K","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"sTWAWWIr3NZE","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"VKLG70LBZK6K","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"cXhsCQJDcPVd","index":2,"type":3,"title":"","dateAdded":"2025-10-04T04:02:54.334Z","lastModified":"2025-10-04T04:02:54.334Z","parentGuid":"menu________"},{"guid":"fPaOJg5lZ1AQ","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"pOsC6lI63mpm","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"aaFVubVSjPVG","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,717,"Marionette:GetContext"] << 31:[1,717,null,{"value":"chrome"}] >> 50:[0,718,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,718,null,{"value":null}] >> 2276:[0,719,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,719,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":4}}] >> 31:[0,720,"Marionette:GetContext"] << 31:[1,720,null,{"value":"chrome"}] >> 50:[0,721,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,721,null,{"value":null}] >> 31:[0,722,"Marionette:GetContext"] << 31:[1,722,null,{"value":"chrome"}] >> 50:[0,723,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,723,null,{"value":null}] >> 2276:[0,724,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,724,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 31:[0,725,"Marionette:GetContext"] << 31:[1,725,null,{"value":"chrome"}] >> 50:[0,726,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,726,null,{"value":null}] >> 31:[0,727,"Marionette:GetContext"] << 31:[1,727,null,{"value":"chrome"}] >> 50:[0,728,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,728,null,{"value":null}] >> 2276:[0,729,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,729,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":4}}] >> 31:[0,730,"Marionette:GetContext"] << 31:[1,730,null,{"value":"chrome"}] >> 50:[0,731,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,731,null,{"value":null}] >> 31:[0,732,"Marionette:GetContext"] << 31:[1,732,null,{"value":"chrome"}] >> 50:[0,733,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,733,null,{"value":null}] >> 2276:[0,734,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,734,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 31:[0,735,"Marionette:GetContext"] << 31:[1,735,null,{"value":"chrome"}] >> 50:[0,736,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,736,null,{"value":null}] >> 31:[0,737,"Marionette:GetContext"] << 31:[1,737,null,{"value":"chrome"}] >> 50:[0,738,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,738,null,{"value":null}] >> 2276:[0,739,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,739,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 31:[0,740,"Marionette:GetContext"] << 31:[1,740,null,{"value":"chrome"}] >> 50:[0,741,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,741,null,{"value":null}] >> 31:[0,742,"Marionette:GetContext"] << 31:[1,742,null,{"value":"chrome"}] >> 50:[0,743,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,743,null,{"value":null}] >> 2276:[0,744,"WebDriver:ExecuteScript",{"args":["xeZJM125JQv5"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,744,null,{"value":{"guid":"xeZJM125JQv5","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1759550574,"parentGuid":"menu________","childCount":1}}] >> 31:[0,745,"Marionette:GetContext"] << 31:[1,745,null,{"value":"chrome"}] >> 50:[0,746,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,746,null,{"value":null}] >> 31:[0,747,"Marionette:GetContext"] << 31:[1,747,null,{"value":"chrome"}] >> 50:[0,748,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,748,null,{"value":null}] >> 2276:[0,749,"WebDriver:ExecuteScript",{"args":["0eY38Pog9zF8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2716:[1,749,null,{"value":{"guid":"0eY38Pog9zF8","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"xeZJM125JQv5","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 31:[0,750,"Marionette:GetContext"] << 31:[1,750,null,{"value":"chrome"}] >> 50:[0,751,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,751,null,{"value":null}] >> 31:[0,752,"Marionette:GetContext"] << 31:[1,752,null,{"value":"chrome"}] >> 50:[0,753,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,753,null,{"value":null}] >> 2276:[0,754,"WebDriver:ExecuteScript",{"args":["VKLG70LBZK6K"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,754,null,{"value":{"guid":"VKLG70LBZK6K","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 31:[0,755,"Marionette:GetContext"] << 31:[1,755,null,{"value":"chrome"}] >> 50:[0,756,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,756,null,{"value":null}] >> 31:[0,757,"Marionette:GetContext"] << 31:[1,757,null,{"value":"chrome"}] >> 50:[0,758,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,758,null,{"value":null}] >> 2276:[0,759,"WebDriver:ExecuteScript",{"args":["sTWAWWIr3NZE"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1649:[1,759,null,{"value":{"guid":"sTWAWWIr3NZE","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"VKLG70LBZK6K","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 31:[0,760,"Marionette:GetContext"] << 31:[1,760,null,{"value":"chrome"}] >> 50:[0,761,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,761,null,{"value":null}] >> 31:[0,762,"Marionette:GetContext"] << 31:[1,762,null,{"value":"chrome"}] >> 50:[0,763,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,763,null,{"value":null}] >> 2276:[0,764,"WebDriver:ExecuteScript",{"args":["cXhsCQJDcPVd"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 153:[1,764,null,{"value":{"guid":"cXhsCQJDcPVd","index":2,"type":3,"title":"","dateAdded":1759550574,"lastModified":1759550574,"parentGuid":"menu________"}}] >> 31:[0,765,"Marionette:GetContext"] << 31:[1,765,null,{"value":"chrome"}] >> 50:[0,766,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,766,null,{"value":null}] >> 31:[0,767,"Marionette:GetContext"] << 31:[1,767,null,{"value":"chrome"}] >> 50:[0,768,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,768,null,{"value":null}] >> 2276:[0,769,"WebDriver:ExecuteScript",{"args":["fPaOJg5lZ1AQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1446:[1,769,null,{"value":{"guid":"fPaOJg5lZ1AQ","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 31:[0,770,"Marionette:GetContext"] << 31:[1,770,null,{"value":"chrome"}] >> 50:[0,771,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,771,null,{"value":null}] >> 31:[0,772,"Marionette:GetContext"] << 31:[1,772,null,{"value":"chrome"}] >> 50:[0,773,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,773,null,{"value":null}] >> 2276:[0,774,"WebDriver:ExecuteScript",{"args":["pOsC6lI63mpm"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 241:[1,774,null,{"value":{"guid":"pOsC6lI63mpm","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 31:[0,775,"Marionette:GetContext"] << 31:[1,775,null,{"value":"chrome"}] >> 50:[0,776,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,776,null,{"value":null}] >> 31:[0,777,"Marionette:GetContext"] << 31:[1,777,null,{"value":"chrome"}] >> 50:[0,778,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,778,null,{"value":null}] >> 2276:[0,779,"WebDriver:ExecuteScript",{"args":["aaFVubVSjPVG"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 225:[1,779,null,{"value":{"guid":"aaFVubVSjPVG","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,780,"Marionette:GetContext"] << 31:[1,780,null,{"value":"chrome"}] >> 50:[0,781,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,781,null,{"value":null}] >> 31:[0,782,"Marionette:GetContext"] << 31:[1,782,null,{"value":"chrome"}] >> 51:[0,783,"Marionette:SetContext",{"value":"content"}] << 27:[1,783,null,{"value":null}] >> 31:[0,784,"Marionette:GetContext"] << 32:[1,784,null,{"value":"content"}] >> 50:[0,785,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,785,null,{"value":null}] >> 799:[0,786,"WebDriver:ExecuteScript",{"args":["aaFVubVSjPVG"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,786,null,{"value":null}] >> 31:[0,787,"Marionette:GetContext"] << 31:[1,787,null,{"value":"chrome"}] >> 51:[0,788,"Marionette:SetContext",{"value":"content"}] << 27:[1,788,null,{"value":null}] >> 31:[0,789,"Marionette:GetContext"] << 32:[1,789,null,{"value":"content"}] >> 50:[0,790,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,790,null,{"value":null}] >> 799:[0,791,"WebDriver:ExecuteScript",{"args":["pOsC6lI63mpm"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,791,null,{"value":null}] >> 31:[0,792,"Marionette:GetContext"] << 31:[1,792,null,{"value":"chrome"}] >> 51:[0,793,"Marionette:SetContext",{"value":"content"}] << 27:[1,793,null,{"value":null}] >> 31:[0,794,"Marionette:GetContext"] << 32:[1,794,null,{"value":"content"}] >> 50:[0,795,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,795,null,{"value":null}] >> 799:[0,796,"WebDriver:ExecuteScript",{"args":["fPaOJg5lZ1AQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,796,null,{"value":null}] >> 31:[0,797,"Marionette:GetContext"] << 31:[1,797,null,{"value":"chrome"}] >> 51:[0,798,"Marionette:SetContext",{"value":"content"}] << 27:[1,798,null,{"value":null}] >> 31:[0,799,"Marionette:GetContext"] << 32:[1,799,null,{"value":"content"}] >> 50:[0,800,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,800,null,{"value":null}] >> 799:[0,801,"WebDriver:ExecuteScript",{"args":["cXhsCQJDcPVd"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,801,null,{"value":null}] >> 31:[0,802,"Marionette:GetContext"] << 31:[1,802,null,{"value":"chrome"}] >> 51:[0,803,"Marionette:SetContext",{"value":"content"}] << 27:[1,803,null,{"value":null}] >> 31:[0,804,"Marionette:GetContext"] << 32:[1,804,null,{"value":"content"}] >> 50:[0,805,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,805,null,{"value":null}] >> 799:[0,806,"WebDriver:ExecuteScript",{"args":["sTWAWWIr3NZE"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,806,null,{"value":null}] >> 31:[0,807,"Marionette:GetContext"] << 31:[1,807,null,{"value":"chrome"}] >> 51:[0,808,"Marionette:SetContext",{"value":"content"}] << 27:[1,808,null,{"value":null}] >> 31:[0,809,"Marionette:GetContext"] << 32:[1,809,null,{"value":"content"}] >> 50:[0,810,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,810,null,{"value":null}] >> 799:[0,811,"WebDriver:ExecuteScript",{"args":["VKLG70LBZK6K"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,811,null,{"value":null}] >> 31:[0,812,"Marionette:GetContext"] << 31:[1,812,null,{"value":"chrome"}] >> 51:[0,813,"Marionette:SetContext",{"value":"content"}] << 27:[1,813,null,{"value":null}] >> 31:[0,814,"Marionette:GetContext"] << 32:[1,814,null,{"value":"content"}] >> 50:[0,815,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,815,null,{"value":null}] >> 799:[0,816,"WebDriver:ExecuteScript",{"args":["0eY38Pog9zF8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,816,null,{"value":null}] >> 31:[0,817,"Marionette:GetContext"] << 31:[1,817,null,{"value":"chrome"}] >> 51:[0,818,"Marionette:SetContext",{"value":"content"}] << 27:[1,818,null,{"value":null}] >> 31:[0,819,"Marionette:GetContext"] << 32:[1,819,null,{"value":"content"}] >> 50:[0,820,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,820,null,{"value":null}] >> 799:[0,821,"WebDriver:ExecuteScript",{"args":["xeZJM125JQv5"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,821,null,{"value":null}] >> 31:[0,822,"Marionette:GetContext"] << 31:[1,822,null,{"value":"chrome"}] >> 51:[0,823,"Marionette:SetContext",{"value":"content"}] << 27:[1,823,null,{"value":null}] >> 31:[0,824,"Marionette:GetContext"] << 32:[1,824,null,{"value":"content"}] >> 50:[0,825,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,825,null,{"value":null}] >> 2276:[0,826,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 140:[1,826,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1759550571,"lastModified":1759550574,"childCount":5}}] >> 31:[0,827,"Marionette:GetContext"] << 31:[1,827,null,{"value":"chrome"}] >> 51:[0,828,"Marionette:SetContext",{"value":"content"}] << 27:[1,828,null,{"value":null}] >> 31:[0,829,"Marionette:GetContext"] << 32:[1,829,null,{"value":"content"}] >> 50:[0,830,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,830,null,{"value":null}] >> 2276:[0,831,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,831,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":0}}] >> 31:[0,832,"Marionette:GetContext"] << 31:[1,832,null,{"value":"chrome"}] >> 51:[0,833,"Marionette:SetContext",{"value":"content"}] << 27:[1,833,null,{"value":null}] >> 31:[0,834,"Marionette:GetContext"] << 32:[1,834,null,{"value":"content"}] >> 50:[0,835,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,835,null,{"value":null}] >> 2276:[0,836,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,836,null,{"value":null}] >> 31:[0,837,"Marionette:GetContext"] << 31:[1,837,null,{"value":"chrome"}] >> 51:[0,838,"Marionette:SetContext",{"value":"content"}] << 27:[1,838,null,{"value":null}] >> 31:[0,839,"Marionette:GetContext"] << 32:[1,839,null,{"value":"content"}] >> 50:[0,840,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,840,null,{"value":null}] >> 2983:[0,841,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685611344,"guid":"ExAzkxs5efkR","lastModified":1685672402,"parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 189:[1,841,null,{"value":{"dateAdded":"2023-06-01T09:22:24.000Z","guid":"ExAzkxs5efkR","lastModified":"2023-06-02T02:20:02.000Z","parentGuid":"menu________","title":"CPAN","type":2,"index":0}}] >> 31:[0,842,"Marionette:GetContext"] << 31:[1,842,null,{"value":"chrome"}] >> 51:[0,843,"Marionette:SetContext",{"value":"content"}] << 27:[1,843,null,{"value":null}] >> 31:[0,844,"Marionette:GetContext"] << 32:[1,844,null,{"value":"content"}] >> 50:[0,845,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,845,null,{"value":null}] >> 2276:[0,846,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,846,null,{"value":null}] >> 31:[0,847,"Marionette:GetContext"] << 31:[1,847,null,{"value":"chrome"}] >> 51:[0,848,"Marionette:SetContext",{"value":"content"}] << 27:[1,848,null,{"value":null}] >> 31:[0,849,"Marionette:GetContext"] << 32:[1,849,null,{"value":"content"}] >> 50:[0,850,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,850,null,{"value":null}] >> 3200:[0,851,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"utcxPgIOG05d","iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 332:[1,851,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"utcxPgIOG05d","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0}}] >> 31:[0,852,"Marionette:GetContext"] << 31:[1,852,null,{"value":"chrome"}] >> 51:[0,853,"Marionette:SetContext",{"value":"content"}] << 27:[1,853,null,{"value":null}] >> 31:[0,854,"Marionette:GetContext"] << 32:[1,854,null,{"value":"content"}] >> 50:[0,855,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,855,null,{"value":null}] >> 2276:[0,856,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,856,null,{"value":null}] >> 31:[0,857,"Marionette:GetContext"] << 31:[1,857,null,{"value":"chrome"}] >> 51:[0,858,"Marionette:SetContext",{"value":"content"}] << 27:[1,858,null,{"value":null}] >> 31:[0,859,"Marionette:GetContext"] << 32:[1,859,null,{"value":"content"}] >> 50:[0,860,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,860,null,{"value":null}] >> 3232:[0,861,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"XiZLcg8n_B4A","iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 350:[1,861,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"XiZLcg8n_B4A","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1}}] >> 31:[0,862,"Marionette:GetContext"] << 31:[1,862,null,{"value":"chrome"}] >> 51:[0,863,"Marionette:SetContext",{"value":"content"}] << 27:[1,863,null,{"value":null}] >> 31:[0,864,"Marionette:GetContext"] << 32:[1,864,null,{"value":"content"}] >> 50:[0,865,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,865,null,{"value":null}] >> 2276:[0,866,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,866,null,{"value":null}] >> 31:[0,867,"Marionette:GetContext"] << 31:[1,867,null,{"value":"chrome"}] >> 51:[0,868,"Marionette:SetContext",{"value":"content"}] << 27:[1,868,null,{"value":null}] >> 31:[0,869,"Marionette:GetContext"] << 32:[1,869,null,{"value":"content"}] >> 50:[0,870,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,870,null,{"value":null}] >> 2987:[0,871,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670822,"guid":"eZlh-ztIYBne","lastModified":1685672383,"parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 193:[1,871,null,{"value":{"dateAdded":"2023-06-02T01:53:42.000Z","guid":"eZlh-ztIYBne","lastModified":"2023-06-02T02:19:43.000Z","parentGuid":"menu________","title":"Searches","type":2,"index":1}}] >> 31:[0,872,"Marionette:GetContext"] << 31:[1,872,null,{"value":"chrome"}] >> 51:[0,873,"Marionette:SetContext",{"value":"content"}] << 27:[1,873,null,{"value":null}] >> 31:[0,874,"Marionette:GetContext"] << 32:[1,874,null,{"value":"content"}] >> 50:[0,875,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,875,null,{"value":null}] >> 2276:[0,876,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,876,null,{"value":null}] >> 31:[0,877,"Marionette:GetContext"] << 31:[1,877,null,{"value":"chrome"}] >> 51:[0,878,"Marionette:SetContext",{"value":"content"}] << 27:[1,878,null,{"value":null}] >> 31:[0,879,"Marionette:GetContext"] << 32:[1,879,null,{"value":"content"}] >> 50:[0,880,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,880,null,{"value":null}] >> 3195:[0,881,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","tags":["perl","\ud83d\udc2b","UTF8","ddg"],"title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 277:[1,881,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"bZbedzEdrOnQ","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0}}] >> 31:[0,882,"Marionette:GetContext"] << 31:[1,882,null,{"value":"chrome"}] >> 51:[0,883,"Marionette:SetContext",{"value":"content"}] << 27:[1,883,null,{"value":null}] >> 31:[0,884,"Marionette:GetContext"] << 32:[1,884,null,{"value":"content"}] >> 50:[0,885,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,885,null,{"value":null}] >> 2276:[0,886,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,886,null,{"value":null}] >> 31:[0,887,"Marionette:GetContext"] << 31:[1,887,null,{"value":"chrome"}] >> 51:[0,888,"Marionette:SetContext",{"value":"content"}] << 27:[1,888,null,{"value":null}] >> 31:[0,889,"Marionette:GetContext"] << 32:[1,889,null,{"value":"content"}] >> 50:[0,890,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,890,null,{"value":null}] >> 2979:[0,891,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672418,"guid":"zCZX0_5lBXTS","lastModified":1685672418,"parentGuid":"menu________","title":"","type":3}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 185:[1,891,null,{"value":{"dateAdded":"2023-06-02T02:20:18.000Z","guid":"zCZX0_5lBXTS","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________","title":"","type":3,"index":2}}] >> 31:[0,892,"Marionette:GetContext"] << 31:[1,892,null,{"value":"chrome"}] >> 51:[0,893,"Marionette:SetContext",{"value":"content"}] << 27:[1,893,null,{"value":null}] >> 31:[0,894,"Marionette:GetContext"] << 32:[1,894,null,{"value":"content"}] >> 50:[0,895,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,895,null,{"value":null}] >> 2276:[0,896,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,896,null,{"value":null}] >> 31:[0,897,"Marionette:GetContext"] << 31:[1,897,null,{"value":"chrome"}] >> 51:[0,898,"Marionette:SetContext",{"value":"content"}] << 27:[1,898,null,{"value":null}] >> 31:[0,899,"Marionette:GetContext"] << 32:[1,899,null,{"value":"content"}] >> 50:[0,900,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,900,null,{"value":null}] >> 3244:[0,901,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"JTBNJdLPdYhk","iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","lastModified":1685672392,"parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 373:[1,901,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"JTBNJdLPdYhk","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":3}}] >> 31:[0,902,"Marionette:GetContext"] << 31:[1,902,null,{"value":"chrome"}] >> 51:[0,903,"Marionette:SetContext",{"value":"content"}] << 27:[1,903,null,{"value":null}] >> 31:[0,904,"Marionette:GetContext"] << 32:[1,904,null,{"value":"content"}] >> 50:[0,905,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,905,null,{"value":null}] >> 2276:[0,906,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,906,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":0}}] >> 31:[0,907,"Marionette:GetContext"] << 31:[1,907,null,{"value":"chrome"}] >> 51:[0,908,"Marionette:SetContext",{"value":"content"}] << 27:[1,908,null,{"value":null}] >> 31:[0,909,"Marionette:GetContext"] << 32:[1,909,null,{"value":"content"}] >> 50:[0,910,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,910,null,{"value":null}] >> 2276:[0,911,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,911,null,{"value":null}] >> 31:[0,912,"Marionette:GetContext"] << 31:[1,912,null,{"value":"chrome"}] >> 51:[0,913,"Marionette:SetContext",{"value":"content"}] << 27:[1,913,null,{"value":null}] >> 31:[0,914,"Marionette:GetContext"] << 32:[1,914,null,{"value":"content"}] >> 50:[0,915,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,915,null,{"value":null}] >> 3057:[0,916,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"UjOiVVvuVdng","lastModified":1686363942,"parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 263:[1,916,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"UjOiVVvuVdng","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0}}] >> 31:[0,917,"Marionette:GetContext"] << 31:[1,917,null,{"value":"chrome"}] >> 51:[0,918,"Marionette:SetContext",{"value":"content"}] << 27:[1,918,null,{"value":null}] >> 31:[0,919,"Marionette:GetContext"] << 32:[1,919,null,{"value":"content"}] >> 50:[0,920,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,920,null,{"value":null}] >> 2276:[0,921,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,921,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":0}}] >> 31:[0,922,"Marionette:GetContext"] << 31:[1,922,null,{"value":"chrome"}] >> 51:[0,923,"Marionette:SetContext",{"value":"content"}] << 27:[1,923,null,{"value":null}] >> 31:[0,924,"Marionette:GetContext"] << 32:[1,924,null,{"value":"content"}] >> 50:[0,925,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,925,null,{"value":null}] >> 2276:[0,926,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,926,null,{"value":null}] >> 31:[0,927,"Marionette:GetContext"] << 31:[1,927,null,{"value":"chrome"}] >> 51:[0,928,"Marionette:SetContext",{"value":"content"}] << 27:[1,928,null,{"value":null}] >> 31:[0,929,"Marionette:GetContext"] << 32:[1,929,null,{"value":"content"}] >> 50:[0,930,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,930,null,{"value":null}] >> 3041:[0,931,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"wiTkT9Zqb99b","lastModified":1686364095,"parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 247:[1,931,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"wiTkT9Zqb99b","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":0}}] >> 31:[0,932,"Marionette:GetContext"] << 31:[1,932,null,{"value":"chrome"}] >> 51:[0,933,"Marionette:SetContext",{"value":"content"}] << 27:[1,933,null,{"value":null}] >> 31:[0,934,"Marionette:GetContext"] << 32:[1,934,null,{"value":"content"}] >> 50:[0,935,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,935,null,{"value":null}] >> 2276:[0,936,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,936,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 31:[0,937,"Marionette:GetContext"] << 31:[1,937,null,{"value":"chrome"}] >> 51:[0,938,"Marionette:SetContext",{"value":"content"}] << 27:[1,938,null,{"value":null}] >> 31:[0,939,"Marionette:GetContext"] << 32:[1,939,null,{"value":"content"}] >> 50:[0,940,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,940,null,{"value":null}] >> 787:[0,941,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 3078:[1,941,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"1970-01-20T12:13:31.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2025-10-04T04:02:54.866Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-04T04:02:51.289Z","lastModified":"2025-10-04T04:02:51.360Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"menu________"},{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,942,"Marionette:GetContext"] << 31:[1,942,null,{"value":"chrome"}] >> 50:[0,943,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,943,null,{"value":null}] >> 2276:[0,944,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 169:[1,944,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] >> 31:[0,945,"Marionette:GetContext"] << 31:[1,945,null,{"value":"chrome"}] >> 50:[0,946,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,946,null,{"value":null}] >> 31:[0,947,"Marionette:GetContext"] << 31:[1,947,null,{"value":"chrome"}] >> 50:[0,948,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,948,null,{"value":null}] >> 2276:[0,949,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,949,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 31:[0,950,"Marionette:GetContext"] << 31:[1,950,null,{"value":"chrome"}] >> 50:[0,951,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,951,null,{"value":null}] >> 31:[0,952,"Marionette:GetContext"] << 31:[1,952,null,{"value":"chrome"}] >> 50:[0,953,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,953,null,{"value":null}] >> 2276:[0,954,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,954,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":4}}] >> 31:[0,955,"Marionette:GetContext"] << 31:[1,955,null,{"value":"chrome"}] >> 50:[0,956,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,956,null,{"value":null}] >> 31:[0,957,"Marionette:GetContext"] << 31:[1,957,null,{"value":"chrome"}] >> 50:[0,958,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,958,null,{"value":null}] >> 2276:[0,959,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,959,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 31:[0,960,"Marionette:GetContext"] << 31:[1,960,null,{"value":"chrome"}] >> 50:[0,961,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,961,null,{"value":null}] >> 31:[0,962,"Marionette:GetContext"] << 31:[1,962,null,{"value":"chrome"}] >> 50:[0,963,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,963,null,{"value":null}] >> 2276:[0,964,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 174:[1,964,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 31:[0,965,"Marionette:GetContext"] << 31:[1,965,null,{"value":"chrome"}] >> 50:[0,966,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,966,null,{"value":null}] >> 31:[0,967,"Marionette:GetContext"] << 31:[1,967,null,{"value":"chrome"}] >> 50:[0,968,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,968,null,{"value":null}] >> 2276:[0,969,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 172:[1,969,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685672252,"parentGuid":"menu________","childCount":2}}] >> 31:[0,970,"Marionette:GetContext"] << 31:[1,970,null,{"value":"chrome"}] >> 50:[0,971,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,971,null,{"value":null}] >> 31:[0,972,"Marionette:GetContext"] << 31:[1,972,null,{"value":"chrome"}] >> 50:[0,973,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,973,null,{"value":null}] >> 2276:[0,974,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2684:[1,974,null,{"value":{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 31:[0,975,"Marionette:GetContext"] << 31:[1,975,null,{"value":"chrome"}] >> 50:[0,976,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,976,null,{"value":null}] >> 31:[0,977,"Marionette:GetContext"] << 31:[1,977,null,{"value":"chrome"}] >> 50:[0,978,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,978,null,{"value":null}] >> 2276:[0,979,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2716:[1,979,null,{"value":{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 31:[0,980,"Marionette:GetContext"] << 31:[1,980,null,{"value":"chrome"}] >> 50:[0,981,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,981,null,{"value":null}] >> 31:[0,982,"Marionette:GetContext"] << 31:[1,982,null,{"value":"chrome"}] >> 50:[0,983,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,983,null,{"value":null}] >> 2276:[0,984,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,984,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 31:[0,985,"Marionette:GetContext"] << 31:[1,985,null,{"value":"chrome"}] >> 50:[0,986,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,986,null,{"value":null}] >> 31:[0,987,"Marionette:GetContext"] << 31:[1,987,null,{"value":"chrome"}] >> 50:[0,988,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,988,null,{"value":null}] >> 2276:[0,989,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1649:[1,989,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 31:[0,990,"Marionette:GetContext"] << 31:[1,990,null,{"value":"chrome"}] >> 50:[0,991,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,991,null,{"value":null}] >> 31:[0,992,"Marionette:GetContext"] << 31:[1,992,null,{"value":"chrome"}] >> 50:[0,993,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,993,null,{"value":null}] >> 2276:[0,994,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 153:[1,994,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 31:[0,995,"Marionette:GetContext"] << 31:[1,995,null,{"value":"chrome"}] >> 50:[0,996,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,996,null,{"value":null}] >> 31:[0,997,"Marionette:GetContext"] << 31:[1,997,null,{"value":"chrome"}] >> 50:[0,998,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,998,null,{"value":null}] >> 2276:[0,999,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1446:[1,999,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1000,"Marionette:GetContext"] << 32:[1,1000,null,{"value":"chrome"}] >> 51:[0,1001,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1001,null,{"value":null}] >> 32:[0,1002,"Marionette:GetContext"] << 32:[1,1002,null,{"value":"chrome"}] >> 51:[0,1003,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1003,null,{"value":null}] >> 2277:[0,1004,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1004,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1005,"Marionette:GetContext"] << 32:[1,1005,null,{"value":"chrome"}] >> 51:[0,1006,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1006,null,{"value":null}] >> 32:[0,1007,"Marionette:GetContext"] << 32:[1,1007,null,{"value":"chrome"}] >> 51:[0,1008,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1008,null,{"value":null}] >> 2277:[0,1009,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1009,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1010,"Marionette:GetContext"] << 32:[1,1010,null,{"value":"chrome"}] >> 51:[0,1011,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1011,null,{"value":null}] >> 32:[0,1012,"Marionette:GetContext"] << 32:[1,1012,null,{"value":"chrome"}] >> 52:[0,1013,"Marionette:SetContext",{"value":"content"}] << 28:[1,1013,null,{"value":null}] >> 32:[0,1014,"Marionette:GetContext"] << 33:[1,1014,null,{"value":"content"}] >> 51:[0,1015,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1015,null,{"value":null}] >> 800:[0,1016,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 28:[1,1016,null,{"value":null}] >> 32:[0,1017,"Marionette:GetContext"] << 32:[1,1017,null,{"value":"chrome"}] >> 52:[0,1018,"Marionette:SetContext",{"value":"content"}] << 28:[1,1018,null,{"value":null}] >> 32:[0,1019,"Marionette:GetContext"] << 33:[1,1019,null,{"value":"content"}] >> 51:[0,1020,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1020,null,{"value":null}] >> 2277:[0,1021,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 141:[1,1021,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1759550571,"lastModified":1759550575,"childCount":5}}] >> 32:[0,1022,"Marionette:GetContext"] << 32:[1,1022,null,{"value":"chrome"}] >> 52:[0,1023,"Marionette:SetContext",{"value":"content"}] << 28:[1,1023,null,{"value":null}] >> 32:[0,1024,"Marionette:GetContext"] << 33:[1,1024,null,{"value":"content"}] >> 51:[0,1025,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1025,null,{"value":null}] >> 2277:[0,1026,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1026,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1759550575,"parentGuid":"root________","childCount":4}}] >> 32:[0,1027,"Marionette:GetContext"] << 32:[1,1027,null,{"value":"chrome"}] >> 52:[0,1028,"Marionette:SetContext",{"value":"content"}] << 28:[1,1028,null,{"value":null}] >> 32:[0,1029,"Marionette:GetContext"] << 33:[1,1029,null,{"value":"content"}] >> 51:[0,1030,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1030,null,{"value":null}] >> 2277:[0,1031,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1031,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1759550575,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1032,"Marionette:GetContext"] << 32:[1,1032,null,{"value":"chrome"}] >> 52:[0,1033,"Marionette:SetContext",{"value":"content"}] << 28:[1,1033,null,{"value":null}] >> 32:[0,1034,"Marionette:GetContext"] << 33:[1,1034,null,{"value":"content"}] >> 51:[0,1035,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1035,null,{"value":null}] >> 2277:[0,1036,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 28:[1,1036,null,{"value":null}] >> 32:[0,1037,"Marionette:GetContext"] << 32:[1,1037,null,{"value":"chrome"}] >> 52:[0,1038,"Marionette:SetContext",{"value":"content"}] << 28:[1,1038,null,{"value":null}] >> 32:[0,1039,"Marionette:GetContext"] << 33:[1,1039,null,{"value":"content"}] >> 51:[0,1040,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1040,null,{"value":null}] >> 3201:[0,1041,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"utcxPgIOG05d","iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 333:[1,1041,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"utcxPgIOG05d","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":1}}] >> 32:[0,1042,"Marionette:GetContext"] << 32:[1,1042,null,{"value":"chrome"}] >> 52:[0,1043,"Marionette:SetContext",{"value":"content"}] << 28:[1,1043,null,{"value":null}] >> 32:[0,1044,"Marionette:GetContext"] << 33:[1,1044,null,{"value":"content"}] >> 51:[0,1045,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1045,null,{"value":null}] >> 2277:[0,1046,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1046,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1047,"Marionette:GetContext"] << 32:[1,1047,null,{"value":"chrome"}] >> 52:[0,1048,"Marionette:SetContext",{"value":"content"}] << 28:[1,1048,null,{"value":null}] >> 32:[0,1049,"Marionette:GetContext"] << 33:[1,1049,null,{"value":"content"}] >> 51:[0,1050,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1050,null,{"value":null}] >> 846:[0,1051,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 353:[1,1051,null,{"value":[{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] >> 32:[0,1052,"Marionette:GetContext"] << 32:[1,1052,null,{"value":"chrome"}] >> 51:[0,1053,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1053,null,{"value":null}] >> 2277:[0,1054,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1054,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGbElEQVRYhcWWTWwV1xXHf+fcO8/PNjYFTFH5MIJNJJQIDE0LwU4faRaojUQlJHaITbtglVUWjbpwF0gsk32zqCxFFUiVsijpJvIjDkppagG1RMTG1FZJRWMixd+emXtPF2/med7DJptKudLTzJt77v/8z/eFypoEzwvWd+0D3AD3YoxGB4ZUwc9B/tHQSwP7BnsvR3MNLO5B9JlKaD5dXJu4sPBoqZTbTvklCAB3jo5cJMpbIhwSs1Ww6TyGibH5mdlx0HEwwKSq/G+HT/zC0D8OJMlQIBIBBRzKUpYtCPHK6bn7t7YiUSqfGn7lqPf+Zr/6kwCx2PcoyzEH4m9Pz967biACJlXlPUnylxCNzGIKpkKLJkhMRGtOhY0s+2U3icKi+MnB4wf6vP6zz/vdqyGk0jJQSgyBZKevyWK+fu2nj+//7gY4Afho6KWBH/b3zyZOh3ILGaIJZoaIbD5j5sUlWYgL/11ZOXph4dFSaYWBCsTPj5z8eIdLzq+EbB2ROma2GWwRzKJhse68X0+z0TPz9+8owL7B3ssDSTKUWUy3Vm6GaJJZTAeSZGjfYO9lgCYNVyqfOjBy3IueXw5pAHraykWkgqWAOUCde5sixERzjUAETNsHS+XlMjMwDUSiuUb5uUlDAZy30bo6ZDPstM9XMAVxaTQC4Sc3OFbT1kbcE6slUbLuApIyqSzuAWjQjJsiDLHd6sKLGGIy8KNh198iIPpM2wlXYdz130qXiT6rWt8SYaFq/HPnK5iKYGJL/5kPKwqgEpoOBSR2uK07iZDoUFRCs/xceiHk8tl6NKzg2GFIiSkihoWaCuD+fomHqQI8XVybWMqyhUS0hsWseqBaBYlobSnLFp4urk0UyoNANNCxJ/ce5Bb/usPVHLDxnCFFFQASAAnhfQCdBH9h4dGSEK84Fby4xMxSwwIWc8OCmaVeXOJUEOKVsiNKEbXfFwavZuHXy3n6Ta9zdTNLwXKwUGIA8gPf49OQXTszf/9Ouw98r52wBPi+ZkEHwP9jGnYk4ZYY20zDCoA0aThoZXhZakXCWbf8dyn6mqYB7KUht2nG8a5afY5AaUW1xhs0o2xb5FuvcdCfVTC+pmlleF54aDsXWituL3RvISfdbq6u7guLVDdKhlMHRo4n3kZNGDJjIeTy2diTew+65bYyoHTx7f0vH6p5fUPUHY6iqzEyPTo3PQmt8JyjmbcJlKCfHDx+oC9xf/Ci5+u6SXQ9BjLix2tp+M3P//3gyVYkSuUGcvfIyHvA1T7nEymclhNZy/OHJvnVs49nPrVWDwjSUb/qv9jha7uXQxqqMTfQHa7mlvP0mzzmr47Nz8yWY7h0e3EvkLvDJ5qDPfXXF0MGFrNqaOrOeYCVLLs4Ovfgz5M0vJaWeO9v9nm/eyVk64IoogmIRzQRRFdCtt7n/W7v/c3CdW2CZdXcPTLy3mBP/fVv83TNijtEG0PUr4eQZdHwqn+a2n9q+BzNXKHVNPrVn1wNIUWk3qJcuYwAiNRXQ0j71Z+8c3TkYhnLcdBzNPPb+18+BFxdDBlAXaoYxbuIJsFsY4erJT6J70CZ1VHealllm8OnOoiKdyk7ZyEPUJZazesbfc4nWMykOv+rU7V1qfEbFkD0zTYBNQ4W/pQuqzdBWu8SC3nYbDIAou5wmXAdE7D6KxQEMyDunRoe3lVcSGytSBQ62XY+N7W15Ksriq52fKjeqKo4LRKYkPbmezdKytO++0Ky5VNiS86modVeSy/EyHROxLq92EXIsOhVwPjyx19NrypAHsPEcshMIMEstgG6LhMCyXLILI9hAuA2zVhW0ejc9ORanj+sO+etvNRUMdphlJCgYPoBgE7S8GPzM7OIvbvT1wQsYjGzYlxai3QGFnf6miD27tj8zGxRARE226tJfhXAiSZitmFYpI1jwcw2dvqkZylPb702N/2hgeg5mvk46OnZe9cX8/VrPc77PueTRFRVRBNR7XM+6XHeL+br107P3rtell7p3UsQJmn4s49nPl3JsovRYtbvkp6aOqci6kS17rwfcEnPt1l6K/mX/mozH8q0av2xz4dPnFXn3g7EV8UYNGER9AsJ4f0z8/fvFF0PthjNZXud2n9q2CfxHUTfFOLeKKQYX2L6wWtz0x9C59xor+qkusGx2tTwK7tucKy21f52q3sSTg0P7/rH/lN9FZJilSH4Pylr2D7oCD10AAAAAElFTkSuQmCC"}}] >> 32:[0,1055,"Marionette:GetContext"] << 32:[1,1055,null,{"value":"chrome"}] >> 51:[0,1056,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1056,null,{"value":null}] >> 32:[0,1057,"Marionette:GetContext"] << 32:[1,1057,null,{"value":"chrome"}] >> 52:[0,1058,"Marionette:SetContext",{"value":"content"}] << 28:[1,1058,null,{"value":null}] >> 32:[0,1059,"Marionette:GetContext"] << 33:[1,1059,null,{"value":"content"}] >> 51:[0,1060,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1060,null,{"value":null}] >> 2277:[0,1061,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1061,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1062,"Marionette:GetContext"] << 32:[1,1062,null,{"value":"chrome"}] >> 52:[0,1063,"Marionette:SetContext",{"value":"content"}] << 28:[1,1063,null,{"value":null}] >> 32:[0,1064,"Marionette:GetContext"] << 33:[1,1064,null,{"value":"content"}] >> 51:[0,1065,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1065,null,{"value":null}] >> 2277:[0,1066,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1650:[1,1066,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 32:[0,1067,"Marionette:GetContext"] << 32:[1,1067,null,{"value":"chrome"}] >> 52:[0,1068,"Marionette:SetContext",{"value":"content"}] << 28:[1,1068,null,{"value":null}] >> 32:[0,1069,"Marionette:GetContext"] << 33:[1,1069,null,{"value":"content"}] >> 51:[0,1070,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1070,null,{"value":null}] >> 848:[0,1071,"WebDriver:ExecuteScript",{"args":["https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 26:[1,1071,null,{"value":[]}] >> 32:[0,1072,"Marionette:GetContext"] << 32:[1,1072,null,{"value":"chrome"}] >> 52:[0,1073,"Marionette:SetContext",{"value":"content"}] << 28:[1,1073,null,{"value":null}] >> 32:[0,1074,"Marionette:GetContext"] << 33:[1,1074,null,{"value":"content"}] >> 51:[0,1075,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1075,null,{"value":null}] >> 3196:[0,1076,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","tags":["perl","\ud83d\udc2b","UTF8","ddg"],"title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 278:[1,1076,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}}] >> 32:[0,1077,"Marionette:GetContext"] << 32:[1,1077,null,{"value":"chrome"}] >> 52:[0,1078,"Marionette:SetContext",{"value":"content"}] << 28:[1,1078,null,{"value":null}] >> 32:[0,1079,"Marionette:GetContext"] << 33:[1,1079,null,{"value":"content"}] >> 51:[0,1080,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1080,null,{"value":null}] >> 2277:[0,1081,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1081,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1082,"Marionette:GetContext"] << 32:[1,1082,null,{"value":"chrome"}] >> 52:[0,1083,"Marionette:SetContext",{"value":"content"}] << 28:[1,1083,null,{"value":null}] >> 32:[0,1084,"Marionette:GetContext"] << 33:[1,1084,null,{"value":"content"}] >> 51:[0,1085,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1085,null,{"value":null}] >> 2277:[0,1086,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1086,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1087,"Marionette:GetContext"] << 32:[1,1087,null,{"value":"chrome"}] >> 52:[0,1088,"Marionette:SetContext",{"value":"content"}] << 28:[1,1088,null,{"value":null}] >> 32:[0,1089,"Marionette:GetContext"] << 33:[1,1089,null,{"value":"content"}] >> 51:[0,1090,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1090,null,{"value":null}] >> 836:[0,1091,"WebDriver:ExecuteScript",{"args":["https://github.com/david-dick/firefox-marionette"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 376:[1,1091,null,{"value":[{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"}]}] >> 32:[0,1092,"Marionette:GetContext"] << 32:[1,1092,null,{"value":"chrome"}] >> 51:[0,1093,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1093,null,{"value":null}] >> 2277:[0,1094,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1094,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1095,"Marionette:GetContext"] << 32:[1,1095,null,{"value":"chrome"}] >> 51:[0,1096,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1096,null,{"value":null}] >> 32:[0,1097,"Marionette:GetContext"] << 32:[1,1097,null,{"value":"chrome"}] >> 52:[0,1098,"Marionette:SetContext",{"value":"content"}] << 28:[1,1098,null,{"value":null}] >> 32:[0,1099,"Marionette:GetContext"] << 33:[1,1099,null,{"value":"content"}] >> 51:[0,1100,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1100,null,{"value":null}] >> 2277:[0,1101,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1101,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1102,"Marionette:GetContext"] << 32:[1,1102,null,{"value":"chrome"}] >> 52:[0,1103,"Marionette:SetContext",{"value":"content"}] << 28:[1,1103,null,{"value":null}] >> 32:[0,1104,"Marionette:GetContext"] << 33:[1,1104,null,{"value":"content"}] >> 51:[0,1105,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1105,null,{"value":null}] >> 2277:[0,1106,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1106,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1107,"Marionette:GetContext"] << 32:[1,1107,null,{"value":"chrome"}] >> 52:[0,1108,"Marionette:SetContext",{"value":"content"}] << 28:[1,1108,null,{"value":null}] >> 32:[0,1109,"Marionette:GetContext"] << 33:[1,1109,null,{"value":"content"}] >> 51:[0,1110,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1110,null,{"value":null}] >> 822:[0,1111,"WebDriver:ExecuteScript",{"args":["https://pause.perl.org/pause/query"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 266:[1,1111,null,{"value":[{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"}]}] >> 32:[0,1112,"Marionette:GetContext"] << 32:[1,1112,null,{"value":"chrome"}] >> 51:[0,1113,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1113,null,{"value":null}] >> 2277:[0,1114,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1114,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1115,"Marionette:GetContext"] << 32:[1,1115,null,{"value":"chrome"}] >> 51:[0,1116,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1116,null,{"value":null}] >> 32:[0,1117,"Marionette:GetContext"] << 32:[1,1117,null,{"value":"chrome"}] >> 52:[0,1118,"Marionette:SetContext",{"value":"content"}] << 28:[1,1118,null,{"value":null}] >> 32:[0,1119,"Marionette:GetContext"] << 33:[1,1119,null,{"value":"content"}] >> 51:[0,1120,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1120,null,{"value":null}] >> 2277:[0,1121,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1121,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1122,"Marionette:GetContext"] << 32:[1,1122,null,{"value":"chrome"}] >> 52:[0,1123,"Marionette:SetContext",{"value":"content"}] << 28:[1,1123,null,{"value":null}] >> 32:[0,1124,"Marionette:GetContext"] << 33:[1,1124,null,{"value":"content"}] >> 51:[0,1125,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1125,null,{"value":null}] >> 2277:[0,1126,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1126,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1127,"Marionette:GetContext"] << 32:[1,1127,null,{"value":"chrome"}] >> 52:[0,1128,"Marionette:SetContext",{"value":"content"}] << 28:[1,1128,null,{"value":null}] >> 32:[0,1129,"Marionette:GetContext"] << 33:[1,1129,null,{"value":"content"}] >> 51:[0,1130,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1130,null,{"value":null}] >> 810:[0,1131,"WebDriver:ExecuteScript",{"args":["https://perlmonks.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 250:[1,1131,null,{"value":[{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 32:[0,1132,"Marionette:GetContext"] << 32:[1,1132,null,{"value":"chrome"}] >> 51:[0,1133,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1133,null,{"value":null}] >> 2277:[0,1134,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1134,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1135,"Marionette:GetContext"] << 32:[1,1135,null,{"value":"chrome"}] >> 51:[0,1136,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1136,null,{"value":null}] >> 32:[0,1137,"Marionette:GetContext"] << 32:[1,1137,null,{"value":"chrome"}] >> 52:[0,1138,"Marionette:SetContext",{"value":"content"}] << 28:[1,1138,null,{"value":null}] >> 32:[0,1139,"Marionette:GetContext"] << 33:[1,1139,null,{"value":"content"}] >> 51:[0,1140,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1140,null,{"value":null}] >> 2277:[0,1141,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,1141,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 32:[0,1142,"Marionette:GetContext"] << 32:[1,1142,null,{"value":"chrome"}] >> 52:[0,1143,"Marionette:SetContext",{"value":"content"}] << 28:[1,1143,null,{"value":null}] >> 32:[0,1144,"Marionette:GetContext"] << 33:[1,1144,null,{"value":"content"}] >> 51:[0,1145,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1145,null,{"value":null}] >> 788:[0,1146,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 3079:[1,1146,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2025-10-04T04:02:54.866Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-04T04:02:51.289Z","lastModified":"2025-10-04T04:02:51.360Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1147,"Marionette:GetContext"] << 32:[1,1147,null,{"value":"chrome"}] >> 51:[0,1148,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1148,null,{"value":null}] >> 2277:[0,1149,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1149,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1150,"Marionette:GetContext"] << 32:[1,1150,null,{"value":"chrome"}] >> 51:[0,1151,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1151,null,{"value":null}] >> 32:[0,1152,"Marionette:GetContext"] << 32:[1,1152,null,{"value":"chrome"}] >> 51:[0,1153,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1153,null,{"value":null}] >> 2277:[0,1154,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1154,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1155,"Marionette:GetContext"] << 32:[1,1155,null,{"value":"chrome"}] >> 51:[0,1156,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1156,null,{"value":null}] >> 32:[0,1157,"Marionette:GetContext"] << 32:[1,1157,null,{"value":"chrome"}] >> 51:[0,1158,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1158,null,{"value":null}] >> 2277:[0,1159,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1159,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":4}}] >> 32:[0,1160,"Marionette:GetContext"] << 32:[1,1160,null,{"value":"chrome"}] >> 51:[0,1161,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1161,null,{"value":null}] >> 32:[0,1162,"Marionette:GetContext"] << 32:[1,1162,null,{"value":"chrome"}] >> 51:[0,1163,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1163,null,{"value":null}] >> 2277:[0,1164,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1164,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1165,"Marionette:GetContext"] << 32:[1,1165,null,{"value":"chrome"}] >> 51:[0,1166,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1166,null,{"value":null}] >> 32:[0,1167,"Marionette:GetContext"] << 32:[1,1167,null,{"value":"chrome"}] >> 51:[0,1168,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1168,null,{"value":null}] >> 2277:[0,1169,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,1169,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 32:[0,1170,"Marionette:GetContext"] << 32:[1,1170,null,{"value":"chrome"}] >> 51:[0,1171,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1171,null,{"value":null}] >> 32:[0,1172,"Marionette:GetContext"] << 32:[1,1172,null,{"value":"chrome"}] >> 51:[0,1173,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1173,null,{"value":null}] >> 2277:[0,1174,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1174,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1175,"Marionette:GetContext"] << 32:[1,1175,null,{"value":"chrome"}] >> 51:[0,1176,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1176,null,{"value":null}] >> 32:[0,1177,"Marionette:GetContext"] << 32:[1,1177,null,{"value":"chrome"}] >> 51:[0,1178,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1178,null,{"value":null}] >> 2277:[0,1179,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1179,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1180,"Marionette:GetContext"] << 32:[1,1180,null,{"value":"chrome"}] >> 51:[0,1181,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1181,null,{"value":null}] >> 32:[0,1182,"Marionette:GetContext"] << 32:[1,1182,null,{"value":"chrome"}] >> 51:[0,1183,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1183,null,{"value":null}] >> 2277:[0,1184,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1184,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1185,"Marionette:GetContext"] << 32:[1,1185,null,{"value":"chrome"}] >> 51:[0,1186,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1186,null,{"value":null}] >> 32:[0,1187,"Marionette:GetContext"] << 32:[1,1187,null,{"value":"chrome"}] >> 51:[0,1188,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1188,null,{"value":null}] >> 2277:[0,1189,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1650:[1,1189,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 32:[0,1190,"Marionette:GetContext"] << 32:[1,1190,null,{"value":"chrome"}] >> 51:[0,1191,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1191,null,{"value":null}] >> 32:[0,1192,"Marionette:GetContext"] << 32:[1,1192,null,{"value":"chrome"}] >> 51:[0,1193,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1193,null,{"value":null}] >> 2277:[0,1194,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1194,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1195,"Marionette:GetContext"] << 32:[1,1195,null,{"value":"chrome"}] >> 51:[0,1196,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1196,null,{"value":null}] >> 32:[0,1197,"Marionette:GetContext"] << 32:[1,1197,null,{"value":"chrome"}] >> 51:[0,1198,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1198,null,{"value":null}] >> 2277:[0,1199,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1199,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1200,"Marionette:GetContext"] << 32:[1,1200,null,{"value":"chrome"}] >> 51:[0,1201,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1201,null,{"value":null}] >> 32:[0,1202,"Marionette:GetContext"] << 32:[1,1202,null,{"value":"chrome"}] >> 51:[0,1203,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1203,null,{"value":null}] >> 2277:[0,1204,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1204,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1205,"Marionette:GetContext"] << 32:[1,1205,null,{"value":"chrome"}] >> 51:[0,1206,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1206,null,{"value":null}] >> 32:[0,1207,"Marionette:GetContext"] << 32:[1,1207,null,{"value":"chrome"}] >> 51:[0,1208,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1208,null,{"value":null}] >> 2277:[0,1209,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1209,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1210,"Marionette:GetContext"] << 32:[1,1210,null,{"value":"chrome"}] >> 51:[0,1211,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1211,null,{"value":null}] >> 32:[0,1212,"Marionette:GetContext"] << 32:[1,1212,null,{"value":"chrome"}] >> 51:[0,1213,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1213,null,{"value":null}] >> 2277:[0,1214,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1214,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1215,"Marionette:GetContext"] << 32:[1,1215,null,{"value":"chrome"}] >> 51:[0,1216,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1216,null,{"value":null}] >> 32:[0,1217,"Marionette:GetContext"] << 32:[1,1217,null,{"value":"chrome"}] >> 52:[0,1218,"Marionette:SetContext",{"value":"content"}] << 28:[1,1218,null,{"value":null}] >> 32:[0,1219,"Marionette:GetContext"] << 33:[1,1219,null,{"value":"content"}] >> 51:[0,1220,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1220,null,{"value":null}] >> 840:[0,1221,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 335:[1,1221,null,{"value":[{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1222,"Marionette:GetContext"] << 32:[1,1222,null,{"value":"chrome"}] >> 51:[0,1223,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1223,null,{"value":null}] >> 2277:[0,1224,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1224,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1225,"Marionette:GetContext"] << 32:[1,1225,null,{"value":"chrome"}] >> 51:[0,1226,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1226,null,{"value":null}] >> 32:[0,1227,"Marionette:GetContext"] << 32:[1,1227,null,{"value":"chrome"}] >> 52:[0,1228,"Marionette:SetContext",{"value":"content"}] << 28:[1,1228,null,{"value":null}] >> 32:[0,1229,"Marionette:GetContext"] << 33:[1,1229,null,{"value":"content"}] >> 51:[0,1230,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1230,null,{"value":null}] >> 2302:[0,1231,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1231,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1232,"Marionette:GetContext"] << 32:[1,1232,null,{"value":"chrome"}] >> 52:[0,1233,"Marionette:SetContext",{"value":"content"}] << 28:[1,1233,null,{"value":null}] >> 32:[0,1234,"Marionette:GetContext"] << 33:[1,1234,null,{"value":"content"}] >> 51:[0,1235,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1235,null,{"value":null}] >> 2302:[0,1236,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"ExAzkxs5efkR"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1236,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1237,"Marionette:GetContext"] << 32:[1,1237,null,{"value":"chrome"}] >> 52:[0,1238,"Marionette:SetContext",{"value":"content"}] << 28:[1,1238,null,{"value":null}] >> 32:[0,1239,"Marionette:GetContext"] << 33:[1,1239,null,{"value":"content"}] >> 51:[0,1240,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1240,null,{"value":null}] >> 2302:[0,1241,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"ExAzkxs5efkR"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1241,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1242,"Marionette:GetContext"] << 32:[1,1242,null,{"value":"chrome"}] >> 52:[0,1243,"Marionette:SetContext",{"value":"content"}] << 28:[1,1243,null,{"value":null}] >> 32:[0,1244,"Marionette:GetContext"] << 33:[1,1244,null,{"value":"content"}] >> 51:[0,1245,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1245,null,{"value":null}] >> 2302:[0,1246,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"ExAzkxs5efkR"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1246,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1247,"Marionette:GetContext"] << 32:[1,1247,null,{"value":"chrome"}] >> 52:[0,1248,"Marionette:SetContext",{"value":"content"}] << 28:[1,1248,null,{"value":null}] >> 32:[0,1249,"Marionette:GetContext"] << 33:[1,1249,null,{"value":"content"}] >> 51:[0,1250,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1250,null,{"value":null}] >> 2302:[0,1251,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1251,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1252,"Marionette:GetContext"] << 32:[1,1252,null,{"value":"chrome"}] >> 52:[0,1253,"Marionette:SetContext",{"value":"content"}] << 28:[1,1253,null,{"value":null}] >> 32:[0,1254,"Marionette:GetContext"] << 33:[1,1254,null,{"value":"content"}] >> 51:[0,1255,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1255,null,{"value":null}] >> 2302:[0,1256,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1256,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1257,"Marionette:GetContext"] << 32:[1,1257,null,{"value":"chrome"}] >> 52:[0,1258,"Marionette:SetContext",{"value":"content"}] << 28:[1,1258,null,{"value":null}] >> 32:[0,1259,"Marionette:GetContext"] << 33:[1,1259,null,{"value":"content"}] >> 51:[0,1260,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1260,null,{"value":null}] >> 2302:[0,1261,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"eZlh-ztIYBne"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1650:[1,1261,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 32:[0,1262,"Marionette:GetContext"] << 32:[1,1262,null,{"value":"chrome"}] >> 52:[0,1263,"Marionette:SetContext",{"value":"content"}] << 28:[1,1263,null,{"value":null}] >> 32:[0,1264,"Marionette:GetContext"] << 33:[1,1264,null,{"value":"content"}] >> 51:[0,1265,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1265,null,{"value":null}] >> 2302:[0,1266,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1266,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1267,"Marionette:GetContext"] << 32:[1,1267,null,{"value":"chrome"}] >> 52:[0,1268,"Marionette:SetContext",{"value":"content"}] << 28:[1,1268,null,{"value":null}] >> 32:[0,1269,"Marionette:GetContext"] << 33:[1,1269,null,{"value":"content"}] >> 51:[0,1270,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1270,null,{"value":null}] >> 2302:[0,1271,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1271,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1272,"Marionette:GetContext"] << 32:[1,1272,null,{"value":"chrome"}] >> 52:[0,1273,"Marionette:SetContext",{"value":"content"}] << 28:[1,1273,null,{"value":null}] >> 32:[0,1274,"Marionette:GetContext"] << 33:[1,1274,null,{"value":"content"}] >> 51:[0,1275,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1275,null,{"value":null}] >> 2302:[0,1276,"WebDriver:ExecuteScript",{"args":[{"index":2,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1276,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1277,"Marionette:GetContext"] << 32:[1,1277,null,{"value":"chrome"}] >> 52:[0,1278,"Marionette:SetContext",{"value":"content"}] << 28:[1,1278,null,{"value":null}] >> 32:[0,1279,"Marionette:GetContext"] << 33:[1,1279,null,{"value":"content"}] >> 51:[0,1280,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1280,null,{"value":null}] >> 2302:[0,1281,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1281,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1282,"Marionette:GetContext"] << 32:[1,1282,null,{"value":"chrome"}] >> 52:[0,1283,"Marionette:SetContext",{"value":"content"}] << 28:[1,1283,null,{"value":null}] >> 32:[0,1284,"Marionette:GetContext"] << 33:[1,1284,null,{"value":"content"}] >> 51:[0,1285,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1285,null,{"value":null}] >> 2302:[0,1286,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1286,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1287,"Marionette:GetContext"] << 32:[1,1287,null,{"value":"chrome"}] >> 52:[0,1288,"Marionette:SetContext",{"value":"content"}] << 28:[1,1288,null,{"value":null}] >> 32:[0,1289,"Marionette:GetContext"] << 33:[1,1289,null,{"value":"content"}] >> 51:[0,1290,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1290,null,{"value":null}] >> 2302:[0,1291,"WebDriver:ExecuteScript",{"args":[{"index":2,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1291,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1292,"Marionette:GetContext"] << 32:[1,1292,null,{"value":"chrome"}] >> 52:[0,1293,"Marionette:SetContext",{"value":"content"}] << 28:[1,1293,null,{"value":null}] >> 32:[0,1294,"Marionette:GetContext"] << 33:[1,1294,null,{"value":"content"}] >> 51:[0,1295,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1295,null,{"value":null}] >> 2302:[0,1296,"WebDriver:ExecuteScript",{"args":[{"index":3,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1296,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1297,"Marionette:GetContext"] << 32:[1,1297,null,{"value":"chrome"}] >> 52:[0,1298,"Marionette:SetContext",{"value":"content"}] << 28:[1,1298,null,{"value":null}] >> 32:[0,1299,"Marionette:GetContext"] << 33:[1,1299,null,{"value":"content"}] >> 51:[0,1300,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1300,null,{"value":null}] >> 2302:[0,1301,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"toolbar_____"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1301,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1302,"Marionette:GetContext"] << 32:[1,1302,null,{"value":"chrome"}] >> 52:[0,1303,"Marionette:SetContext",{"value":"content"}] << 28:[1,1303,null,{"value":null}] >> 32:[0,1304,"Marionette:GetContext"] << 33:[1,1304,null,{"value":"content"}] >> 51:[0,1305,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1305,null,{"value":null}] >> 2302:[0,1306,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"unfiled_____"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1306,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1307,"Marionette:GetContext"] << 32:[1,1307,null,{"value":"chrome"}] >> 52:[0,1308,"Marionette:SetContext",{"value":"content"}] << 28:[1,1308,null,{"value":null}] >> 32:[0,1309,"Marionette:GetContext"] << 33:[1,1309,null,{"value":"content"}] >> 51:[0,1310,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1310,null,{"value":null}] >> 2277:[0,1311,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 141:[1,1311,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1759550571,"lastModified":1685610972,"childCount":5}}] >> 32:[0,1312,"Marionette:GetContext"] << 32:[1,1312,null,{"value":"chrome"}] >> 52:[0,1313,"Marionette:SetContext",{"value":"content"}] << 28:[1,1313,null,{"value":null}] >> 32:[0,1314,"Marionette:GetContext"] << 33:[1,1314,null,{"value":"content"}] >> 51:[0,1315,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1315,null,{"value":null}] >> 2277:[0,1316,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1316,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1317,"Marionette:GetContext"] << 32:[1,1317,null,{"value":"chrome"}] >> 52:[0,1318,"Marionette:SetContext",{"value":"content"}] << 28:[1,1318,null,{"value":null}] >> 32:[0,1319,"Marionette:GetContext"] << 33:[1,1319,null,{"value":"content"}] >> 51:[0,1320,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1320,null,{"value":null}] >> 2277:[0,1321,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1321,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1322,"Marionette:GetContext"] << 32:[1,1322,null,{"value":"chrome"}] >> 52:[0,1323,"Marionette:SetContext",{"value":"content"}] << 28:[1,1323,null,{"value":null}] >> 32:[0,1324,"Marionette:GetContext"] << 33:[1,1324,null,{"value":"content"}] >> 51:[0,1325,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1325,null,{"value":null}] >> 2277:[0,1326,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1326,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1327,"Marionette:GetContext"] << 32:[1,1327,null,{"value":"chrome"}] >> 52:[0,1328,"Marionette:SetContext",{"value":"content"}] << 28:[1,1328,null,{"value":null}] >> 32:[0,1329,"Marionette:GetContext"] << 33:[1,1329,null,{"value":"content"}] >> 51:[0,1330,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1330,null,{"value":null}] >> 832:[0,1331,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/pod/Firefox::Marionette"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 335:[1,1331,null,{"value":[{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1332,"Marionette:GetContext"] << 32:[1,1332,null,{"value":"chrome"}] >> 51:[0,1333,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1333,null,{"value":null}] >> 2277:[0,1334,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1334,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1335,"Marionette:GetContext"] << 32:[1,1335,null,{"value":"chrome"}] >> 51:[0,1336,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1336,null,{"value":null}] >> 32:[0,1337,"Marionette:GetContext"] << 32:[1,1337,null,{"value":"chrome"}] >> 52:[0,1338,"Marionette:SetContext",{"value":"content"}] << 28:[1,1338,null,{"value":null}] >> 32:[0,1339,"Marionette:GetContext"] << 33:[1,1339,null,{"value":"content"}] >> 51:[0,1340,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1340,null,{"value":null}] >> 2277:[0,1341,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1341,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1342,"Marionette:GetContext"] << 32:[1,1342,null,{"value":"chrome"}] >> 52:[0,1343,"Marionette:SetContext",{"value":"content"}] << 28:[1,1343,null,{"value":null}] >> 32:[0,1344,"Marionette:GetContext"] << 33:[1,1344,null,{"value":"content"}] >> 51:[0,1345,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1345,null,{"value":null}] >> 846:[0,1346,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 353:[1,1346,null,{"value":[{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] >> 32:[0,1347,"Marionette:GetContext"] << 32:[1,1347,null,{"value":"chrome"}] >> 51:[0,1348,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1348,null,{"value":null}] >> 2277:[0,1349,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1349,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1350,"Marionette:GetContext"] << 32:[1,1350,null,{"value":"chrome"}] >> 51:[0,1351,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1351,null,{"value":null}] >> 32:[0,1352,"Marionette:GetContext"] << 32:[1,1352,null,{"value":"chrome"}] >> 52:[0,1353,"Marionette:SetContext",{"value":"content"}] << 28:[1,1353,null,{"value":null}] >> 32:[0,1354,"Marionette:GetContext"] << 33:[1,1354,null,{"value":"content"}] >> 51:[0,1355,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1355,null,{"value":null}] >> 2277:[0,1356,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1356,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1357,"Marionette:GetContext"] << 32:[1,1357,null,{"value":"chrome"}] >> 52:[0,1358,"Marionette:SetContext",{"value":"content"}] << 28:[1,1358,null,{"value":null}] >> 32:[0,1359,"Marionette:GetContext"] << 33:[1,1359,null,{"value":"content"}] >> 51:[0,1360,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1360,null,{"value":null}] >> 2277:[0,1361,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1361,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1362,"Marionette:GetContext"] << 32:[1,1362,null,{"value":"chrome"}] >> 52:[0,1363,"Marionette:SetContext",{"value":"content"}] << 28:[1,1363,null,{"value":null}] >> 32:[0,1364,"Marionette:GetContext"] << 33:[1,1364,null,{"value":"content"}] >> 51:[0,1365,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1365,null,{"value":null}] >> 2277:[0,1366,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1650:[1,1366,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 32:[0,1367,"Marionette:GetContext"] << 32:[1,1367,null,{"value":"chrome"}] >> 52:[0,1368,"Marionette:SetContext",{"value":"content"}] << 28:[1,1368,null,{"value":null}] >> 32:[0,1369,"Marionette:GetContext"] << 33:[1,1369,null,{"value":"content"}] >> 51:[0,1370,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1370,null,{"value":null}] >> 848:[0,1371,"WebDriver:ExecuteScript",{"args":["https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 26:[1,1371,null,{"value":[]}] >> 32:[0,1372,"Marionette:GetContext"] << 32:[1,1372,null,{"value":"chrome"}] >> 52:[0,1373,"Marionette:SetContext",{"value":"content"}] << 28:[1,1373,null,{"value":null}] >> 32:[0,1374,"Marionette:GetContext"] << 33:[1,1374,null,{"value":"content"}] >> 51:[0,1375,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1375,null,{"value":null}] >> 4500:[0,1376,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII=","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","tags":["perl","\ud83d\udc2b","UTF8","ddg"],"title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 278:[1,1376,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}}] >> 32:[0,1377,"Marionette:GetContext"] << 32:[1,1377,null,{"value":"chrome"}] >> 52:[0,1378,"Marionette:SetContext",{"value":"content"}] << 28:[1,1378,null,{"value":null}] >> 32:[0,1379,"Marionette:GetContext"] << 33:[1,1379,null,{"value":"content"}] >> 51:[0,1380,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1380,null,{"value":null}] >> 2277:[0,1381,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1381,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1382,"Marionette:GetContext"] << 32:[1,1382,null,{"value":"chrome"}] >> 52:[0,1383,"Marionette:SetContext",{"value":"content"}] << 28:[1,1383,null,{"value":null}] >> 32:[0,1384,"Marionette:GetContext"] << 33:[1,1384,null,{"value":"content"}] >> 51:[0,1385,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1385,null,{"value":null}] >> 2277:[0,1386,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1386,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1387,"Marionette:GetContext"] << 32:[1,1387,null,{"value":"chrome"}] >> 52:[0,1388,"Marionette:SetContext",{"value":"content"}] << 28:[1,1388,null,{"value":null}] >> 32:[0,1389,"Marionette:GetContext"] << 33:[1,1389,null,{"value":"content"}] >> 51:[0,1390,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1390,null,{"value":null}] >> 836:[0,1391,"WebDriver:ExecuteScript",{"args":["https://github.com/david-dick/firefox-marionette"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 376:[1,1391,null,{"value":[{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"}]}] >> 32:[0,1392,"Marionette:GetContext"] << 32:[1,1392,null,{"value":"chrome"}] >> 51:[0,1393,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1393,null,{"value":null}] >> 2277:[0,1394,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1394,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1395,"Marionette:GetContext"] << 32:[1,1395,null,{"value":"chrome"}] >> 51:[0,1396,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1396,null,{"value":null}] >> 32:[0,1397,"Marionette:GetContext"] << 32:[1,1397,null,{"value":"chrome"}] >> 52:[0,1398,"Marionette:SetContext",{"value":"content"}] << 28:[1,1398,null,{"value":null}] >> 32:[0,1399,"Marionette:GetContext"] << 33:[1,1399,null,{"value":"content"}] >> 51:[0,1400,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1400,null,{"value":null}] >> 2277:[0,1401,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1401,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1402,"Marionette:GetContext"] << 32:[1,1402,null,{"value":"chrome"}] >> 52:[0,1403,"Marionette:SetContext",{"value":"content"}] << 28:[1,1403,null,{"value":null}] >> 32:[0,1404,"Marionette:GetContext"] << 33:[1,1404,null,{"value":"content"}] >> 51:[0,1405,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1405,null,{"value":null}] >> 2277:[0,1406,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1406,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1407,"Marionette:GetContext"] << 32:[1,1407,null,{"value":"chrome"}] >> 52:[0,1408,"Marionette:SetContext",{"value":"content"}] << 28:[1,1408,null,{"value":null}] >> 32:[0,1409,"Marionette:GetContext"] << 33:[1,1409,null,{"value":"content"}] >> 51:[0,1410,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1410,null,{"value":null}] >> 822:[0,1411,"WebDriver:ExecuteScript",{"args":["https://pause.perl.org/pause/query"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 266:[1,1411,null,{"value":[{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"}]}] >> 32:[0,1412,"Marionette:GetContext"] << 32:[1,1412,null,{"value":"chrome"}] >> 51:[0,1413,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1413,null,{"value":null}] >> 2277:[0,1414,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1414,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1415,"Marionette:GetContext"] << 32:[1,1415,null,{"value":"chrome"}] >> 51:[0,1416,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1416,null,{"value":null}] >> 32:[0,1417,"Marionette:GetContext"] << 32:[1,1417,null,{"value":"chrome"}] >> 52:[0,1418,"Marionette:SetContext",{"value":"content"}] << 28:[1,1418,null,{"value":null}] >> 32:[0,1419,"Marionette:GetContext"] << 33:[1,1419,null,{"value":"content"}] >> 51:[0,1420,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1420,null,{"value":null}] >> 2277:[0,1421,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1421,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1422,"Marionette:GetContext"] << 32:[1,1422,null,{"value":"chrome"}] >> 52:[0,1423,"Marionette:SetContext",{"value":"content"}] << 28:[1,1423,null,{"value":null}] >> 32:[0,1424,"Marionette:GetContext"] << 33:[1,1424,null,{"value":"content"}] >> 51:[0,1425,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1425,null,{"value":null}] >> 2277:[0,1426,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1426,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1427,"Marionette:GetContext"] << 32:[1,1427,null,{"value":"chrome"}] >> 52:[0,1428,"Marionette:SetContext",{"value":"content"}] << 28:[1,1428,null,{"value":null}] >> 32:[0,1429,"Marionette:GetContext"] << 33:[1,1429,null,{"value":"content"}] >> 51:[0,1430,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1430,null,{"value":null}] >> 810:[0,1431,"WebDriver:ExecuteScript",{"args":["https://perlmonks.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 250:[1,1431,null,{"value":[{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 32:[0,1432,"Marionette:GetContext"] << 32:[1,1432,null,{"value":"chrome"}] >> 51:[0,1433,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1433,null,{"value":null}] >> 2277:[0,1434,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1434,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1435,"Marionette:GetContext"] << 32:[1,1435,null,{"value":"chrome"}] >> 51:[0,1436,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1436,null,{"value":null}] >> 32:[0,1437,"Marionette:GetContext"] << 32:[1,1437,null,{"value":"chrome"}] >> 52:[0,1438,"Marionette:SetContext",{"value":"content"}] << 28:[1,1438,null,{"value":null}] >> 32:[0,1439,"Marionette:GetContext"] << 33:[1,1439,null,{"value":"content"}] >> 51:[0,1440,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1440,null,{"value":null}] >> 788:[0,1441,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 3079:[1,1441,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2025-10-04T04:02:54.866Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-04T04:02:51.289Z","lastModified":"2025-10-04T04:02:51.360Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1442,"Marionette:GetContext"] << 32:[1,1442,null,{"value":"chrome"}] >> 51:[0,1443,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1443,null,{"value":null}] >> 2277:[0,1444,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1444,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1445,"Marionette:GetContext"] << 32:[1,1445,null,{"value":"chrome"}] >> 51:[0,1446,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1446,null,{"value":null}] >> 32:[0,1447,"Marionette:GetContext"] << 32:[1,1447,null,{"value":"chrome"}] >> 51:[0,1448,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1448,null,{"value":null}] >> 2277:[0,1449,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1449,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1450,"Marionette:GetContext"] << 32:[1,1450,null,{"value":"chrome"}] >> 51:[0,1451,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1451,null,{"value":null}] >> 32:[0,1452,"Marionette:GetContext"] << 32:[1,1452,null,{"value":"chrome"}] >> 51:[0,1453,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1453,null,{"value":null}] >> 2277:[0,1454,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1454,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":4}}] >> 32:[0,1455,"Marionette:GetContext"] << 32:[1,1455,null,{"value":"chrome"}] >> 51:[0,1456,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1456,null,{"value":null}] >> 32:[0,1457,"Marionette:GetContext"] << 32:[1,1457,null,{"value":"chrome"}] >> 51:[0,1458,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1458,null,{"value":null}] >> 2277:[0,1459,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1459,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1460,"Marionette:GetContext"] << 32:[1,1460,null,{"value":"chrome"}] >> 51:[0,1461,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1461,null,{"value":null}] >> 32:[0,1462,"Marionette:GetContext"] << 32:[1,1462,null,{"value":"chrome"}] >> 51:[0,1463,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1463,null,{"value":null}] >> 2277:[0,1464,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,1464,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 32:[0,1465,"Marionette:GetContext"] << 32:[1,1465,null,{"value":"chrome"}] >> 51:[0,1466,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1466,null,{"value":null}] >> 32:[0,1467,"Marionette:GetContext"] << 32:[1,1467,null,{"value":"chrome"}] >> 51:[0,1468,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1468,null,{"value":null}] >> 2277:[0,1469,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1469,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1470,"Marionette:GetContext"] << 32:[1,1470,null,{"value":"chrome"}] >> 51:[0,1471,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1471,null,{"value":null}] >> 32:[0,1472,"Marionette:GetContext"] << 32:[1,1472,null,{"value":"chrome"}] >> 51:[0,1473,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1473,null,{"value":null}] >> 2277:[0,1474,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1474,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1475,"Marionette:GetContext"] << 32:[1,1475,null,{"value":"chrome"}] >> 51:[0,1476,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1476,null,{"value":null}] >> 32:[0,1477,"Marionette:GetContext"] << 32:[1,1477,null,{"value":"chrome"}] >> 51:[0,1478,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1478,null,{"value":null}] >> 2277:[0,1479,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1479,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1480,"Marionette:GetContext"] << 32:[1,1480,null,{"value":"chrome"}] >> 51:[0,1481,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1481,null,{"value":null}] >> 32:[0,1482,"Marionette:GetContext"] << 32:[1,1482,null,{"value":"chrome"}] >> 51:[0,1483,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1483,null,{"value":null}] >> 2277:[0,1484,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1650:[1,1484,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 32:[0,1485,"Marionette:GetContext"] << 32:[1,1485,null,{"value":"chrome"}] >> 51:[0,1486,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1486,null,{"value":null}] >> 32:[0,1487,"Marionette:GetContext"] << 32:[1,1487,null,{"value":"chrome"}] >> 51:[0,1488,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1488,null,{"value":null}] >> 2277:[0,1489,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1489,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1490,"Marionette:GetContext"] << 32:[1,1490,null,{"value":"chrome"}] >> 51:[0,1491,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1491,null,{"value":null}] >> 32:[0,1492,"Marionette:GetContext"] << 32:[1,1492,null,{"value":"chrome"}] >> 51:[0,1493,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1493,null,{"value":null}] >> 2277:[0,1494,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1494,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1495,"Marionette:GetContext"] << 32:[1,1495,null,{"value":"chrome"}] >> 51:[0,1496,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1496,null,{"value":null}] >> 32:[0,1497,"Marionette:GetContext"] << 32:[1,1497,null,{"value":"chrome"}] >> 51:[0,1498,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1498,null,{"value":null}] >> 2277:[0,1499,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1499,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1500,"Marionette:GetContext"] << 32:[1,1500,null,{"value":"chrome"}] >> 51:[0,1501,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1501,null,{"value":null}] >> 32:[0,1502,"Marionette:GetContext"] << 32:[1,1502,null,{"value":"chrome"}] >> 51:[0,1503,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1503,null,{"value":null}] >> 2277:[0,1504,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1504,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1505,"Marionette:GetContext"] << 32:[1,1505,null,{"value":"chrome"}] >> 51:[0,1506,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1506,null,{"value":null}] >> 32:[0,1507,"Marionette:GetContext"] << 32:[1,1507,null,{"value":"chrome"}] >> 51:[0,1508,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1508,null,{"value":null}] >> 2277:[0,1509,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1509,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1510,"Marionette:GetContext"] << 32:[1,1510,null,{"value":"chrome"}] >> 51:[0,1511,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1511,null,{"value":null}] >> 32:[0,1512,"Marionette:GetContext"] << 32:[1,1512,null,{"value":"chrome"}] >> 52:[0,1513,"Marionette:SetContext",{"value":"content"}] << 28:[1,1513,null,{"value":null}] >> 32:[0,1514,"Marionette:GetContext"] << 33:[1,1514,null,{"value":"content"}] >> 51:[0,1515,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1515,null,{"value":null}] >> 840:[0,1516,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 335:[1,1516,null,{"value":[{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1517,"Marionette:GetContext"] << 32:[1,1517,null,{"value":"chrome"}] >> 51:[0,1518,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1518,null,{"value":null}] >> 2277:[0,1519,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1519,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1520,"Marionette:GetContext"] << 32:[1,1520,null,{"value":"chrome"}] >> 51:[0,1521,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1521,null,{"value":null}] >> 32:[0,1522,"Marionette:GetContext"] << 32:[1,1522,null,{"value":"chrome"}] >> 52:[0,1523,"Marionette:SetContext",{"value":"content"}] << 28:[1,1523,null,{"value":null}] >> 32:[0,1524,"Marionette:GetContext"] << 33:[1,1524,null,{"value":"content"}] >> 51:[0,1525,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1525,null,{"value":null}] >> 2302:[0,1526,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1526,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1527,"Marionette:GetContext"] << 32:[1,1527,null,{"value":"chrome"}] >> 52:[0,1528,"Marionette:SetContext",{"value":"content"}] << 28:[1,1528,null,{"value":null}] >> 32:[0,1529,"Marionette:GetContext"] << 33:[1,1529,null,{"value":"content"}] >> 51:[0,1530,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1530,null,{"value":null}] >> 2302:[0,1531,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"ExAzkxs5efkR"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1531,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGbElEQVRYhcWWTWwV1xXHf+fcO8/PNjYFTFH5MIJNJJQIDE0LwU4faRaojUQlJHaITbtglVUWjbpwF0gsk32zqCxFFUiVsijpJvIjDkppagG1RMTG1FZJRWMixd+emXtPF2/med7DJptKudLTzJt77v/8z/eFypoEzwvWd+0D3AD3YoxGB4ZUwc9B/tHQSwP7BnsvR3MNLO5B9JlKaD5dXJu4sPBoqZTbTvklCAB3jo5cJMpbIhwSs1Ww6TyGibH5mdlx0HEwwKSq/G+HT/zC0D8OJMlQIBIBBRzKUpYtCPHK6bn7t7YiUSqfGn7lqPf+Zr/6kwCx2PcoyzEH4m9Pz967biACJlXlPUnylxCNzGIKpkKLJkhMRGtOhY0s+2U3icKi+MnB4wf6vP6zz/vdqyGk0jJQSgyBZKevyWK+fu2nj+//7gY4Afho6KWBH/b3zyZOh3ILGaIJZoaIbD5j5sUlWYgL/11ZOXph4dFSaYWBCsTPj5z8eIdLzq+EbB2ROma2GWwRzKJhse68X0+z0TPz9+8owL7B3ssDSTKUWUy3Vm6GaJJZTAeSZGjfYO9lgCYNVyqfOjBy3IueXw5pAHraykWkgqWAOUCde5sixERzjUAETNsHS+XlMjMwDUSiuUb5uUlDAZy30bo6ZDPstM9XMAVxaTQC4Sc3OFbT1kbcE6slUbLuApIyqSzuAWjQjJsiDLHd6sKLGGIy8KNh198iIPpM2wlXYdz130qXiT6rWt8SYaFq/HPnK5iKYGJL/5kPKwqgEpoOBSR2uK07iZDoUFRCs/xceiHk8tl6NKzg2GFIiSkihoWaCuD+fomHqQI8XVybWMqyhUS0hsWseqBaBYlobSnLFp4urk0UyoNANNCxJ/ce5Bb/usPVHLDxnCFFFQASAAnhfQCdBH9h4dGSEK84Fby4xMxSwwIWc8OCmaVeXOJUEOKVsiNKEbXfFwavZuHXy3n6Ta9zdTNLwXKwUGIA8gPf49OQXTszf/9Ouw98r52wBPi+ZkEHwP9jGnYk4ZYY20zDCoA0aThoZXhZakXCWbf8dyn6mqYB7KUht2nG8a5afY5AaUW1xhs0o2xb5FuvcdCfVTC+pmlleF54aDsXWituL3RvISfdbq6u7guLVDdKhlMHRo4n3kZNGDJjIeTy2diTew+65bYyoHTx7f0vH6p5fUPUHY6iqzEyPTo3PQmt8JyjmbcJlKCfHDx+oC9xf/Ci5+u6SXQ9BjLix2tp+M3P//3gyVYkSuUGcvfIyHvA1T7nEymclhNZy/OHJvnVs49nPrVWDwjSUb/qv9jha7uXQxqqMTfQHa7mlvP0mzzmr47Nz8yWY7h0e3EvkLvDJ5qDPfXXF0MGFrNqaOrOeYCVLLs4Ovfgz5M0vJaWeO9v9nm/eyVk64IoogmIRzQRRFdCtt7n/W7v/c3CdW2CZdXcPTLy3mBP/fVv83TNijtEG0PUr4eQZdHwqn+a2n9q+BzNXKHVNPrVn1wNIUWk3qJcuYwAiNRXQ0j71Z+8c3TkYhnLcdBzNPPb+18+BFxdDBlAXaoYxbuIJsFsY4erJT6J70CZ1VHealllm8OnOoiKdyk7ZyEPUJZazesbfc4nWMykOv+rU7V1qfEbFkD0zTYBNQ4W/pQuqzdBWu8SC3nYbDIAou5wmXAdE7D6KxQEMyDunRoe3lVcSGytSBQ62XY+N7W15Ksriq52fKjeqKo4LRKYkPbmezdKytO++0Ky5VNiS86modVeSy/EyHROxLq92EXIsOhVwPjyx19NrypAHsPEcshMIMEstgG6LhMCyXLILI9hAuA2zVhW0ejc9ORanj+sO+etvNRUMdphlJCgYPoBgE7S8GPzM7OIvbvT1wQsYjGzYlxai3QGFnf6miD27tj8zGxRARE226tJfhXAiSZitmFYpI1jwcw2dvqkZylPb702N/2hgeg5mvk46OnZe9cX8/VrPc77PueTRFRVRBNR7XM+6XHeL+br107P3rtell7p3UsQJmn4s49nPl3JsovRYtbvkp6aOqci6kS17rwfcEnPt1l6K/mX/mozH8q0av2xz4dPnFXn3g7EV8UYNGER9AsJ4f0z8/fvFF0PthjNZXud2n9q2CfxHUTfFOLeKKQYX2L6wWtz0x9C59xor+qkusGx2tTwK7tucKy21f52q3sSTg0P7/rH/lN9FZJilSH4Pylr2D7oCD10AAAAAElFTkSuQmCC"}}] >> 32:[0,1532,"Marionette:GetContext"] << 32:[1,1532,null,{"value":"chrome"}] >> 52:[0,1533,"Marionette:SetContext",{"value":"content"}] << 28:[1,1533,null,{"value":null}] >> 32:[0,1534,"Marionette:GetContext"] << 33:[1,1534,null,{"value":"content"}] >> 51:[0,1535,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1535,null,{"value":null}] >> 2302:[0,1536,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"ExAzkxs5efkR"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1536,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1537,"Marionette:GetContext"] << 32:[1,1537,null,{"value":"chrome"}] >> 52:[0,1538,"Marionette:SetContext",{"value":"content"}] << 28:[1,1538,null,{"value":null}] >> 32:[0,1539,"Marionette:GetContext"] << 33:[1,1539,null,{"value":"content"}] >> 51:[0,1540,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1540,null,{"value":null}] >> 2302:[0,1541,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"ExAzkxs5efkR"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1541,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1542,"Marionette:GetContext"] << 32:[1,1542,null,{"value":"chrome"}] >> 52:[0,1543,"Marionette:SetContext",{"value":"content"}] << 28:[1,1543,null,{"value":null}] >> 32:[0,1544,"Marionette:GetContext"] << 33:[1,1544,null,{"value":"content"}] >> 51:[0,1545,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1545,null,{"value":null}] >> 2302:[0,1546,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1546,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1547,"Marionette:GetContext"] << 32:[1,1547,null,{"value":"chrome"}] >> 52:[0,1548,"Marionette:SetContext",{"value":"content"}] << 28:[1,1548,null,{"value":null}] >> 32:[0,1549,"Marionette:GetContext"] << 33:[1,1549,null,{"value":"content"}] >> 51:[0,1550,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1550,null,{"value":null}] >> 2302:[0,1551,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1551,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1552,"Marionette:GetContext"] << 32:[1,1552,null,{"value":"chrome"}] >> 52:[0,1553,"Marionette:SetContext",{"value":"content"}] << 28:[1,1553,null,{"value":null}] >> 32:[0,1554,"Marionette:GetContext"] << 33:[1,1554,null,{"value":"content"}] >> 51:[0,1555,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1555,null,{"value":null}] >> 2302:[0,1556,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"eZlh-ztIYBne"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1650:[1,1556,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 32:[0,1557,"Marionette:GetContext"] << 32:[1,1557,null,{"value":"chrome"}] >> 52:[0,1558,"Marionette:SetContext",{"value":"content"}] << 28:[1,1558,null,{"value":null}] >> 32:[0,1559,"Marionette:GetContext"] << 33:[1,1559,null,{"value":"content"}] >> 51:[0,1560,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1560,null,{"value":null}] >> 2302:[0,1561,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1561,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1562,"Marionette:GetContext"] << 32:[1,1562,null,{"value":"chrome"}] >> 52:[0,1563,"Marionette:SetContext",{"value":"content"}] << 28:[1,1563,null,{"value":null}] >> 32:[0,1564,"Marionette:GetContext"] << 33:[1,1564,null,{"value":"content"}] >> 51:[0,1565,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1565,null,{"value":null}] >> 2302:[0,1566,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1566,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1567,"Marionette:GetContext"] << 32:[1,1567,null,{"value":"chrome"}] >> 52:[0,1568,"Marionette:SetContext",{"value":"content"}] << 28:[1,1568,null,{"value":null}] >> 32:[0,1569,"Marionette:GetContext"] << 33:[1,1569,null,{"value":"content"}] >> 51:[0,1570,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1570,null,{"value":null}] >> 2302:[0,1571,"WebDriver:ExecuteScript",{"args":[{"index":2,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1571,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1572,"Marionette:GetContext"] << 32:[1,1572,null,{"value":"chrome"}] >> 52:[0,1573,"Marionette:SetContext",{"value":"content"}] << 28:[1,1573,null,{"value":null}] >> 32:[0,1574,"Marionette:GetContext"] << 33:[1,1574,null,{"value":"content"}] >> 51:[0,1575,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1575,null,{"value":null}] >> 2302:[0,1576,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1576,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1577,"Marionette:GetContext"] << 32:[1,1577,null,{"value":"chrome"}] >> 52:[0,1578,"Marionette:SetContext",{"value":"content"}] << 28:[1,1578,null,{"value":null}] >> 32:[0,1579,"Marionette:GetContext"] << 33:[1,1579,null,{"value":"content"}] >> 51:[0,1580,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1580,null,{"value":null}] >> 2302:[0,1581,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1581,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1582,"Marionette:GetContext"] << 32:[1,1582,null,{"value":"chrome"}] >> 52:[0,1583,"Marionette:SetContext",{"value":"content"}] << 28:[1,1583,null,{"value":null}] >> 32:[0,1584,"Marionette:GetContext"] << 33:[1,1584,null,{"value":"content"}] >> 51:[0,1585,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1585,null,{"value":null}] >> 2302:[0,1586,"WebDriver:ExecuteScript",{"args":[{"index":2,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1586,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1587,"Marionette:GetContext"] << 32:[1,1587,null,{"value":"chrome"}] >> 52:[0,1588,"Marionette:SetContext",{"value":"content"}] << 28:[1,1588,null,{"value":null}] >> 32:[0,1589,"Marionette:GetContext"] << 33:[1,1589,null,{"value":"content"}] >> 51:[0,1590,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1590,null,{"value":null}] >> 2302:[0,1591,"WebDriver:ExecuteScript",{"args":[{"index":3,"parentGuid":"menu________"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1591,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1592,"Marionette:GetContext"] << 32:[1,1592,null,{"value":"chrome"}] >> 52:[0,1593,"Marionette:SetContext",{"value":"content"}] << 28:[1,1593,null,{"value":null}] >> 32:[0,1594,"Marionette:GetContext"] << 33:[1,1594,null,{"value":"content"}] >> 51:[0,1595,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1595,null,{"value":null}] >> 2302:[0,1596,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"toolbar_____"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1596,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1597,"Marionette:GetContext"] << 32:[1,1597,null,{"value":"chrome"}] >> 52:[0,1598,"Marionette:SetContext",{"value":"content"}] << 28:[1,1598,null,{"value":null}] >> 32:[0,1599,"Marionette:GetContext"] << 33:[1,1599,null,{"value":"content"}] >> 51:[0,1600,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1600,null,{"value":null}] >> 2302:[0,1601,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"unfiled_____"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1601,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1602,"Marionette:GetContext"] << 32:[1,1602,null,{"value":"chrome"}] >> 52:[0,1603,"Marionette:SetContext",{"value":"content"}] << 28:[1,1603,null,{"value":null}] >> 32:[0,1604,"Marionette:GetContext"] << 33:[1,1604,null,{"value":"content"}] >> 51:[0,1605,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1605,null,{"value":null}] >> 2277:[0,1606,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 141:[1,1606,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1759550571,"lastModified":1685610972,"childCount":5}}] >> 32:[0,1607,"Marionette:GetContext"] << 32:[1,1607,null,{"value":"chrome"}] >> 52:[0,1608,"Marionette:SetContext",{"value":"content"}] << 28:[1,1608,null,{"value":null}] >> 32:[0,1609,"Marionette:GetContext"] << 33:[1,1609,null,{"value":"content"}] >> 51:[0,1610,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1610,null,{"value":null}] >> 2277:[0,1611,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1611,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1612,"Marionette:GetContext"] << 32:[1,1612,null,{"value":"chrome"}] >> 52:[0,1613,"Marionette:SetContext",{"value":"content"}] << 28:[1,1613,null,{"value":null}] >> 32:[0,1614,"Marionette:GetContext"] << 33:[1,1614,null,{"value":"content"}] >> 51:[0,1615,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1615,null,{"value":null}] >> 2277:[0,1616,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1616,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1617,"Marionette:GetContext"] << 32:[1,1617,null,{"value":"chrome"}] >> 52:[0,1618,"Marionette:SetContext",{"value":"content"}] << 28:[1,1618,null,{"value":null}] >> 32:[0,1619,"Marionette:GetContext"] << 33:[1,1619,null,{"value":"content"}] >> 51:[0,1620,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1620,null,{"value":null}] >> 2277:[0,1621,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1621,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1622,"Marionette:GetContext"] << 32:[1,1622,null,{"value":"chrome"}] >> 52:[0,1623,"Marionette:SetContext",{"value":"content"}] << 28:[1,1623,null,{"value":null}] >> 32:[0,1624,"Marionette:GetContext"] << 33:[1,1624,null,{"value":"content"}] >> 51:[0,1625,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1625,null,{"value":null}] >> 832:[0,1626,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/pod/Firefox::Marionette"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 335:[1,1626,null,{"value":[{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1627,"Marionette:GetContext"] << 32:[1,1627,null,{"value":"chrome"}] >> 51:[0,1628,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1628,null,{"value":null}] >> 2277:[0,1629,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1629,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1630,"Marionette:GetContext"] << 32:[1,1630,null,{"value":"chrome"}] >> 51:[0,1631,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1631,null,{"value":null}] >> 32:[0,1632,"Marionette:GetContext"] << 32:[1,1632,null,{"value":"chrome"}] >> 52:[0,1633,"Marionette:SetContext",{"value":"content"}] << 28:[1,1633,null,{"value":null}] >> 32:[0,1634,"Marionette:GetContext"] << 33:[1,1634,null,{"value":"content"}] >> 51:[0,1635,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1635,null,{"value":null}] >> 2277:[0,1636,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1636,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1637,"Marionette:GetContext"] << 32:[1,1637,null,{"value":"chrome"}] >> 52:[0,1638,"Marionette:SetContext",{"value":"content"}] << 28:[1,1638,null,{"value":null}] >> 32:[0,1639,"Marionette:GetContext"] << 33:[1,1639,null,{"value":"content"}] >> 51:[0,1640,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1640,null,{"value":null}] >> 846:[0,1641,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 353:[1,1641,null,{"value":[{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] >> 32:[0,1642,"Marionette:GetContext"] << 32:[1,1642,null,{"value":"chrome"}] >> 51:[0,1643,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1643,null,{"value":null}] >> 2277:[0,1644,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1644,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1645,"Marionette:GetContext"] << 32:[1,1645,null,{"value":"chrome"}] >> 51:[0,1646,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1646,null,{"value":null}] >> 32:[0,1647,"Marionette:GetContext"] << 32:[1,1647,null,{"value":"chrome"}] >> 52:[0,1648,"Marionette:SetContext",{"value":"content"}] << 28:[1,1648,null,{"value":null}] >> 32:[0,1649,"Marionette:GetContext"] << 33:[1,1649,null,{"value":"content"}] >> 51:[0,1650,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1650,null,{"value":null}] >> 2277:[0,1651,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1651,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1652,"Marionette:GetContext"] << 32:[1,1652,null,{"value":"chrome"}] >> 52:[0,1653,"Marionette:SetContext",{"value":"content"}] << 28:[1,1653,null,{"value":null}] >> 32:[0,1654,"Marionette:GetContext"] << 33:[1,1654,null,{"value":"content"}] >> 51:[0,1655,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1655,null,{"value":null}] >> 2277:[0,1656,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1656,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1657,"Marionette:GetContext"] << 32:[1,1657,null,{"value":"chrome"}] >> 52:[0,1658,"Marionette:SetContext",{"value":"content"}] << 28:[1,1658,null,{"value":null}] >> 32:[0,1659,"Marionette:GetContext"] << 33:[1,1659,null,{"value":"content"}] >> 51:[0,1660,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1660,null,{"value":null}] >> 2277:[0,1661,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1650:[1,1661,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 32:[0,1662,"Marionette:GetContext"] << 32:[1,1662,null,{"value":"chrome"}] >> 52:[0,1663,"Marionette:SetContext",{"value":"content"}] << 28:[1,1663,null,{"value":null}] >> 32:[0,1664,"Marionette:GetContext"] << 33:[1,1664,null,{"value":"content"}] >> 51:[0,1665,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1665,null,{"value":null}] >> 848:[0,1666,"WebDriver:ExecuteScript",{"args":["https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 26:[1,1666,null,{"value":[]}] >> 32:[0,1667,"Marionette:GetContext"] << 32:[1,1667,null,{"value":"chrome"}] >> 52:[0,1668,"Marionette:SetContext",{"value":"content"}] << 28:[1,1668,null,{"value":null}] >> 32:[0,1669,"Marionette:GetContext"] << 33:[1,1669,null,{"value":"content"}] >> 51:[0,1670,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1670,null,{"value":null}] >> 4500:[0,1671,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII=","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","tags":["perl","\ud83d\udc2b","UTF8","ddg"],"title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 278:[1,1671,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}}] >> 32:[0,1672,"Marionette:GetContext"] << 32:[1,1672,null,{"value":"chrome"}] >> 52:[0,1673,"Marionette:SetContext",{"value":"content"}] << 28:[1,1673,null,{"value":null}] >> 32:[0,1674,"Marionette:GetContext"] << 33:[1,1674,null,{"value":"content"}] >> 51:[0,1675,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1675,null,{"value":null}] >> 2277:[0,1676,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1676,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1677,"Marionette:GetContext"] << 32:[1,1677,null,{"value":"chrome"}] >> 52:[0,1678,"Marionette:SetContext",{"value":"content"}] << 28:[1,1678,null,{"value":null}] >> 32:[0,1679,"Marionette:GetContext"] << 33:[1,1679,null,{"value":"content"}] >> 51:[0,1680,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1680,null,{"value":null}] >> 2277:[0,1681,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1681,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1682,"Marionette:GetContext"] << 32:[1,1682,null,{"value":"chrome"}] >> 52:[0,1683,"Marionette:SetContext",{"value":"content"}] << 28:[1,1683,null,{"value":null}] >> 32:[0,1684,"Marionette:GetContext"] << 33:[1,1684,null,{"value":"content"}] >> 51:[0,1685,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1685,null,{"value":null}] >> 836:[0,1686,"WebDriver:ExecuteScript",{"args":["https://github.com/david-dick/firefox-marionette"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 376:[1,1686,null,{"value":[{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"}]}] >> 32:[0,1687,"Marionette:GetContext"] << 32:[1,1687,null,{"value":"chrome"}] >> 51:[0,1688,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1688,null,{"value":null}] >> 2277:[0,1689,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1689,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1690,"Marionette:GetContext"] << 32:[1,1690,null,{"value":"chrome"}] >> 51:[0,1691,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1691,null,{"value":null}] >> 32:[0,1692,"Marionette:GetContext"] << 32:[1,1692,null,{"value":"chrome"}] >> 52:[0,1693,"Marionette:SetContext",{"value":"content"}] << 28:[1,1693,null,{"value":null}] >> 32:[0,1694,"Marionette:GetContext"] << 33:[1,1694,null,{"value":"content"}] >> 51:[0,1695,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1695,null,{"value":null}] >> 2277:[0,1696,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1696,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1697,"Marionette:GetContext"] << 32:[1,1697,null,{"value":"chrome"}] >> 52:[0,1698,"Marionette:SetContext",{"value":"content"}] << 28:[1,1698,null,{"value":null}] >> 32:[0,1699,"Marionette:GetContext"] << 33:[1,1699,null,{"value":"content"}] >> 51:[0,1700,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1700,null,{"value":null}] >> 2277:[0,1701,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1701,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1702,"Marionette:GetContext"] << 32:[1,1702,null,{"value":"chrome"}] >> 52:[0,1703,"Marionette:SetContext",{"value":"content"}] << 28:[1,1703,null,{"value":null}] >> 32:[0,1704,"Marionette:GetContext"] << 33:[1,1704,null,{"value":"content"}] >> 51:[0,1705,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1705,null,{"value":null}] >> 822:[0,1706,"WebDriver:ExecuteScript",{"args":["https://pause.perl.org/pause/query"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 266:[1,1706,null,{"value":[{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"}]}] >> 32:[0,1707,"Marionette:GetContext"] << 32:[1,1707,null,{"value":"chrome"}] >> 51:[0,1708,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1708,null,{"value":null}] >> 2277:[0,1709,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1709,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1710,"Marionette:GetContext"] << 32:[1,1710,null,{"value":"chrome"}] >> 51:[0,1711,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1711,null,{"value":null}] >> 32:[0,1712,"Marionette:GetContext"] << 32:[1,1712,null,{"value":"chrome"}] >> 52:[0,1713,"Marionette:SetContext",{"value":"content"}] << 28:[1,1713,null,{"value":null}] >> 32:[0,1714,"Marionette:GetContext"] << 33:[1,1714,null,{"value":"content"}] >> 51:[0,1715,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1715,null,{"value":null}] >> 2277:[0,1716,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1716,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1717,"Marionette:GetContext"] << 32:[1,1717,null,{"value":"chrome"}] >> 52:[0,1718,"Marionette:SetContext",{"value":"content"}] << 28:[1,1718,null,{"value":null}] >> 32:[0,1719,"Marionette:GetContext"] << 33:[1,1719,null,{"value":"content"}] >> 51:[0,1720,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1720,null,{"value":null}] >> 2277:[0,1721,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1721,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1722,"Marionette:GetContext"] << 32:[1,1722,null,{"value":"chrome"}] >> 52:[0,1723,"Marionette:SetContext",{"value":"content"}] << 28:[1,1723,null,{"value":null}] >> 32:[0,1724,"Marionette:GetContext"] << 33:[1,1724,null,{"value":"content"}] >> 51:[0,1725,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1725,null,{"value":null}] >> 810:[0,1726,"WebDriver:ExecuteScript",{"args":["https://perlmonks.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 250:[1,1726,null,{"value":[{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 32:[0,1727,"Marionette:GetContext"] << 32:[1,1727,null,{"value":"chrome"}] >> 51:[0,1728,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1728,null,{"value":null}] >> 2277:[0,1729,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1729,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1730,"Marionette:GetContext"] << 32:[1,1730,null,{"value":"chrome"}] >> 51:[0,1731,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1731,null,{"value":null}] >> 32:[0,1732,"Marionette:GetContext"] << 32:[1,1732,null,{"value":"chrome"}] >> 52:[0,1733,"Marionette:SetContext",{"value":"content"}] << 28:[1,1733,null,{"value":null}] >> 32:[0,1734,"Marionette:GetContext"] << 33:[1,1734,null,{"value":"content"}] >> 51:[0,1735,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1735,null,{"value":null}] >> 788:[0,1736,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 3079:[1,1736,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2025-10-04T04:02:54.866Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-04T04:02:51.289Z","lastModified":"2025-10-04T04:02:51.360Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1737,"Marionette:GetContext"] << 32:[1,1737,null,{"value":"chrome"}] >> 51:[0,1738,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1738,null,{"value":null}] >> 2277:[0,1739,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1739,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1740,"Marionette:GetContext"] << 32:[1,1740,null,{"value":"chrome"}] >> 51:[0,1741,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1741,null,{"value":null}] >> 32:[0,1742,"Marionette:GetContext"] << 32:[1,1742,null,{"value":"chrome"}] >> 51:[0,1743,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1743,null,{"value":null}] >> 2277:[0,1744,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1744,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1745,"Marionette:GetContext"] << 32:[1,1745,null,{"value":"chrome"}] >> 51:[0,1746,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1746,null,{"value":null}] >> 32:[0,1747,"Marionette:GetContext"] << 32:[1,1747,null,{"value":"chrome"}] >> 51:[0,1748,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1748,null,{"value":null}] >> 2277:[0,1749,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1749,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":4}}] >> 32:[0,1750,"Marionette:GetContext"] << 32:[1,1750,null,{"value":"chrome"}] >> 51:[0,1751,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1751,null,{"value":null}] >> 32:[0,1752,"Marionette:GetContext"] << 32:[1,1752,null,{"value":"chrome"}] >> 51:[0,1753,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1753,null,{"value":null}] >> 2277:[0,1754,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1754,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1755,"Marionette:GetContext"] << 32:[1,1755,null,{"value":"chrome"}] >> 51:[0,1756,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1756,null,{"value":null}] >> 32:[0,1757,"Marionette:GetContext"] << 32:[1,1757,null,{"value":"chrome"}] >> 51:[0,1758,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1758,null,{"value":null}] >> 2277:[0,1759,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,1759,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 32:[0,1760,"Marionette:GetContext"] << 32:[1,1760,null,{"value":"chrome"}] >> 51:[0,1761,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1761,null,{"value":null}] >> 32:[0,1762,"Marionette:GetContext"] << 32:[1,1762,null,{"value":"chrome"}] >> 51:[0,1763,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1763,null,{"value":null}] >> 2277:[0,1764,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1764,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1765,"Marionette:GetContext"] << 32:[1,1765,null,{"value":"chrome"}] >> 51:[0,1766,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1766,null,{"value":null}] >> 32:[0,1767,"Marionette:GetContext"] << 32:[1,1767,null,{"value":"chrome"}] >> 51:[0,1768,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1768,null,{"value":null}] >> 2277:[0,1769,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1769,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1770,"Marionette:GetContext"] << 32:[1,1770,null,{"value":"chrome"}] >> 51:[0,1771,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1771,null,{"value":null}] >> 32:[0,1772,"Marionette:GetContext"] << 32:[1,1772,null,{"value":"chrome"}] >> 51:[0,1773,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1773,null,{"value":null}] >> 2277:[0,1774,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1774,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1775,"Marionette:GetContext"] << 32:[1,1775,null,{"value":"chrome"}] >> 51:[0,1776,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1776,null,{"value":null}] >> 32:[0,1777,"Marionette:GetContext"] << 32:[1,1777,null,{"value":"chrome"}] >> 51:[0,1778,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1778,null,{"value":null}] >> 2277:[0,1779,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1650:[1,1779,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 32:[0,1780,"Marionette:GetContext"] << 32:[1,1780,null,{"value":"chrome"}] >> 51:[0,1781,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1781,null,{"value":null}] >> 32:[0,1782,"Marionette:GetContext"] << 32:[1,1782,null,{"value":"chrome"}] >> 51:[0,1783,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1783,null,{"value":null}] >> 2277:[0,1784,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1784,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1785,"Marionette:GetContext"] << 32:[1,1785,null,{"value":"chrome"}] >> 51:[0,1786,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1786,null,{"value":null}] >> 32:[0,1787,"Marionette:GetContext"] << 32:[1,1787,null,{"value":"chrome"}] >> 51:[0,1788,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1788,null,{"value":null}] >> 2277:[0,1789,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1789,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1790,"Marionette:GetContext"] << 32:[1,1790,null,{"value":"chrome"}] >> 51:[0,1791,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1791,null,{"value":null}] >> 32:[0,1792,"Marionette:GetContext"] << 32:[1,1792,null,{"value":"chrome"}] >> 51:[0,1793,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1793,null,{"value":null}] >> 2277:[0,1794,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1794,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1795,"Marionette:GetContext"] << 32:[1,1795,null,{"value":"chrome"}] >> 51:[0,1796,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1796,null,{"value":null}] >> 32:[0,1797,"Marionette:GetContext"] << 32:[1,1797,null,{"value":"chrome"}] >> 51:[0,1798,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1798,null,{"value":null}] >> 2277:[0,1799,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1799,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1800,"Marionette:GetContext"] << 32:[1,1800,null,{"value":"chrome"}] >> 51:[0,1801,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1801,null,{"value":null}] >> 32:[0,1802,"Marionette:GetContext"] << 32:[1,1802,null,{"value":"chrome"}] >> 51:[0,1803,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1803,null,{"value":null}] >> 2277:[0,1804,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1804,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1805,"Marionette:GetContext"] << 32:[1,1805,null,{"value":"chrome"}] >> 51:[0,1806,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1806,null,{"value":null}] >> 32:[0,1807,"Marionette:GetContext"] << 32:[1,1807,null,{"value":"chrome"}] >> 52:[0,1808,"Marionette:SetContext",{"value":"content"}] << 28:[1,1808,null,{"value":null}] >> 32:[0,1809,"Marionette:GetContext"] << 33:[1,1809,null,{"value":"content"}] >> 51:[0,1810,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1810,null,{"value":null}] >> 788:[0,1811,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 3079:[1,1811,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2025-10-04T04:02:54.866Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-04T04:02:51.286Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-04T04:02:51.289Z","lastModified":"2025-10-04T04:02:51.360Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1812,"Marionette:GetContext"] << 32:[1,1812,null,{"value":"chrome"}] >> 51:[0,1813,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1813,null,{"value":null}] >> 2277:[0,1814,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1814,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1759550571,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1815,"Marionette:GetContext"] << 32:[1,1815,null,{"value":"chrome"}] >> 51:[0,1816,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1816,null,{"value":null}] >> 32:[0,1817,"Marionette:GetContext"] << 32:[1,1817,null,{"value":"chrome"}] >> 51:[0,1818,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1818,null,{"value":null}] >> 2277:[0,1819,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1819,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1759550571,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1820,"Marionette:GetContext"] << 32:[1,1820,null,{"value":"chrome"}] >> 51:[0,1821,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1821,null,{"value":null}] >> 32:[0,1822,"Marionette:GetContext"] << 32:[1,1822,null,{"value":"chrome"}] >> 51:[0,1823,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1823,null,{"value":null}] >> 2277:[0,1824,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1824,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1759550571,"lastModified":1759550574,"parentGuid":"root________","childCount":4}}] >> 32:[0,1825,"Marionette:GetContext"] << 32:[1,1825,null,{"value":"chrome"}] >> 51:[0,1826,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1826,null,{"value":null}] >> 32:[0,1827,"Marionette:GetContext"] << 32:[1,1827,null,{"value":"chrome"}] >> 51:[0,1828,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1828,null,{"value":null}] >> 2277:[0,1829,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 176:[1,1829,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1759550571,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1830,"Marionette:GetContext"] << 32:[1,1830,null,{"value":"chrome"}] >> 51:[0,1831,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1831,null,{"value":null}] >> 32:[0,1832,"Marionette:GetContext"] << 32:[1,1832,null,{"value":"chrome"}] >> 51:[0,1833,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1833,null,{"value":null}] >> 2277:[0,1834,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 175:[1,1834,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1759550571,"lastModified":1759550571,"parentGuid":"root________","childCount":0}}] >> 32:[0,1835,"Marionette:GetContext"] << 32:[1,1835,null,{"value":"chrome"}] >> 51:[0,1836,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1836,null,{"value":null}] >> 32:[0,1837,"Marionette:GetContext"] << 32:[1,1837,null,{"value":"chrome"}] >> 51:[0,1838,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1838,null,{"value":null}] >> 2277:[0,1839,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 173:[1,1839,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] >> 32:[0,1840,"Marionette:GetContext"] << 32:[1,1840,null,{"value":"chrome"}] >> 51:[0,1841,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1841,null,{"value":null}] >> 32:[0,1842,"Marionette:GetContext"] << 32:[1,1842,null,{"value":"chrome"}] >> 51:[0,1843,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1843,null,{"value":null}] >> 2277:[0,1844,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2717:[1,1844,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 32:[0,1845,"Marionette:GetContext"] << 32:[1,1845,null,{"value":"chrome"}] >> 51:[0,1846,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1846,null,{"value":null}] >> 32:[0,1847,"Marionette:GetContext"] << 32:[1,1847,null,{"value":"chrome"}] >> 51:[0,1848,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1848,null,{"value":null}] >> 2277:[0,1849,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 177:[1,1849,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1850,"Marionette:GetContext"] << 32:[1,1850,null,{"value":"chrome"}] >> 51:[0,1851,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1851,null,{"value":null}] >> 32:[0,1852,"Marionette:GetContext"] << 32:[1,1852,null,{"value":"chrome"}] >> 51:[0,1853,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1853,null,{"value":null}] >> 2277:[0,1854,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1650:[1,1854,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 32:[0,1855,"Marionette:GetContext"] << 32:[1,1855,null,{"value":"chrome"}] >> 51:[0,1856,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1856,null,{"value":null}] >> 32:[0,1857,"Marionette:GetContext"] << 32:[1,1857,null,{"value":"chrome"}] >> 51:[0,1858,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1858,null,{"value":null}] >> 2277:[0,1859,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 154:[1,1859,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] >> 32:[0,1860,"Marionette:GetContext"] << 32:[1,1860,null,{"value":"chrome"}] >> 51:[0,1861,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1861,null,{"value":null}] >> 32:[0,1862,"Marionette:GetContext"] << 32:[1,1862,null,{"value":"chrome"}] >> 51:[0,1863,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1863,null,{"value":null}] >> 2277:[0,1864,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 1447:[1,1864,null,{"value":{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 32:[0,1865,"Marionette:GetContext"] << 32:[1,1865,null,{"value":"chrome"}] >> 51:[0,1866,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1866,null,{"value":null}] >> 32:[0,1867,"Marionette:GetContext"] << 32:[1,1867,null,{"value":"chrome"}] >> 51:[0,1868,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1868,null,{"value":null}] >> 2277:[0,1869,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 242:[1,1869,null,{"value":{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 32:[0,1870,"Marionette:GetContext"] << 32:[1,1870,null,{"value":"chrome"}] >> 51:[0,1871,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1871,null,{"value":null}] >> 32:[0,1872,"Marionette:GetContext"] << 32:[1,1872,null,{"value":"chrome"}] >> 51:[0,1873,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1873,null,{"value":null}] >> 2277:[0,1874,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 226:[1,1874,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 32:[0,1875,"Marionette:GetContext"] << 32:[1,1875,null,{"value":"chrome"}] >> 51:[0,1876,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1876,null,{"value":null}] >> 32:[0,1877,"Marionette:GetContext"] << 32:[1,1877,null,{"value":"chrome"}] >> 51:[0,1878,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1878,null,{"value":null}] >> 2277:[0,1879,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 2685:[1,1879,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 32:[0,1880,"Marionette:GetContext"] << 32:[1,1880,null,{"value":"chrome"}] >> 51:[0,1881,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1881,null,{"value":null}] >> 32:[0,1882,"Marionette:GetContext"] << 32:[1,1882,null,{"value":"chrome"}] >> 52:[0,1883,"Marionette:SetContext",{"value":"content"}] << 28:[1,1883,null,{"value":null}] >> 32:[0,1884,"Marionette:GetContext"] << 33:[1,1884,null,{"value":"content"}] >> 51:[0,1885,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1885,null,{"value":null}] >> 800:[0,1886,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 28:[1,1886,null,{"value":null}] >> 32:[0,1887,"Marionette:GetContext"] << 32:[1,1887,null,{"value":"chrome"}] >> 52:[0,1888,"Marionette:SetContext",{"value":"content"}] << 28:[1,1888,null,{"value":null}] >> 32:[0,1889,"Marionette:GetContext"] << 33:[1,1889,null,{"value":"content"}] >> 51:[0,1890,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1890,null,{"value":null}] >> 800:[0,1891,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 28:[1,1891,null,{"value":null}] >> 32:[0,1892,"Marionette:GetContext"] << 32:[1,1892,null,{"value":"chrome"}] >> 52:[0,1893,"Marionette:SetContext",{"value":"content"}] << 28:[1,1893,null,{"value":null}] >> 32:[0,1894,"Marionette:GetContext"] << 33:[1,1894,null,{"value":"content"}] >> 51:[0,1895,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1895,null,{"value":null}] >> 800:[0,1896,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 28:[1,1896,null,{"value":null}] >> 32:[0,1897,"Marionette:GetContext"] << 32:[1,1897,null,{"value":"chrome"}] >> 52:[0,1898,"Marionette:SetContext",{"value":"content"}] << 28:[1,1898,null,{"value":null}] >> 32:[0,1899,"Marionette:GetContext"] << 33:[1,1899,null,{"value":"content"}] >> 51:[0,1900,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1900,null,{"value":null}] >> 800:[0,1901,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 28:[1,1901,null,{"value":null}] >> 32:[0,1902,"Marionette:GetContext"] << 32:[1,1902,null,{"value":"chrome"}] >> 52:[0,1903,"Marionette:SetContext",{"value":"content"}] << 28:[1,1903,null,{"value":null}] >> 32:[0,1904,"Marionette:GetContext"] << 33:[1,1904,null,{"value":"content"}] >> 51:[0,1905,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1905,null,{"value":null}] >> 800:[0,1906,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 28:[1,1906,null,{"value":null}] >> 32:[0,1907,"Marionette:GetContext"] << 32:[1,1907,null,{"value":"chrome"}] >> 52:[0,1908,"Marionette:SetContext",{"value":"content"}] << 28:[1,1908,null,{"value":null}] >> 32:[0,1909,"Marionette:GetContext"] << 33:[1,1909,null,{"value":"content"}] >> 51:[0,1910,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1910,null,{"value":null}] >> 800:[0,1911,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 28:[1,1911,null,{"value":null}] >> 32:[0,1912,"Marionette:GetContext"] << 32:[1,1912,null,{"value":"chrome"}] >> 52:[0,1913,"Marionette:SetContext",{"value":"content"}] << 28:[1,1913,null,{"value":null}] >> 32:[0,1914,"Marionette:GetContext"] << 33:[1,1914,null,{"value":"content"}] >> 51:[0,1915,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1915,null,{"value":null}] >> 800:[0,1916,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 28:[1,1916,null,{"value":null}] >> 32:[0,1917,"Marionette:GetContext"] << 32:[1,1917,null,{"value":"chrome"}] >> 52:[0,1918,"Marionette:SetContext",{"value":"content"}] << 28:[1,1918,null,{"value":null}] >> 32:[0,1919,"Marionette:GetContext"] << 33:[1,1919,null,{"value":"content"}] >> 51:[0,1920,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1920,null,{"value":null}] >> 800:[0,1921,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 28:[1,1921,null,{"value":null}] >> 32:[0,1922,"Marionette:GetContext"] << 32:[1,1922,null,{"value":"chrome"}] >> 52:[0,1923,"Marionette:SetContext",{"value":"content"}] << 28:[1,1923,null,{"value":null}] >> 32:[0,1924,"Marionette:GetContext"] << 33:[1,1924,null,{"value":"content"}] >> 51:[0,1925,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1925,null,{"value":null}] >> 800:[0,1926,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 28:[1,1926,null,{"value":null}] >> 32:[0,1927,"Marionette:GetContext"] << 32:[1,1927,null,{"value":"chrome"}] >> 52:[0,1928,"Marionette:SetContext",{"value":"content"}] << 28:[1,1928,null,{"value":null}] >> 32:[0,1929,"Marionette:GetContext"] << 33:[1,1929,null,{"value":"content"}] >> 51:[0,1930,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1930,null,{"value":null}] >> 701:[0,1931,"WebDriver:ExecuteScript",{"args":["browser.history.maxStateObjectSize"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 44:[1,1931,null,{"value":[16777216,"integer"]}] >> 32:[0,1932,"Marionette:GetContext"] << 32:[1,1932,null,{"value":"chrome"}] >> 52:[0,1933,"Marionette:SetContext",{"value":"content"}] << 28:[1,1933,null,{"value":null}] >> 32:[0,1934,"Marionette:GetContext"] << 33:[1,1934,null,{"value":"content"}] >> 51:[0,1935,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1935,null,{"value":null}] >> 843:[0,1936,"WebDriver:ExecuteScript",{"args":["browser.history.maxStateObjectSize",4321],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 28:[1,1936,null,{"value":null}] >> 32:[0,1937,"Marionette:GetContext"] << 32:[1,1937,null,{"value":"chrome"}] >> 52:[0,1938,"Marionette:SetContext",{"value":"content"}] << 28:[1,1938,null,{"value":null}] >> 32:[0,1939,"Marionette:GetContext"] << 33:[1,1939,null,{"value":"content"}] >> 51:[0,1940,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1940,null,{"value":null}] >> 701:[0,1941,"WebDriver:ExecuteScript",{"args":["browser.history.maxStateObjectSize"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 40:[1,1941,null,{"value":[4321,"integer"]}] >> 32:[0,1942,"Marionette:GetContext"] << 32:[1,1942,null,{"value":"chrome"}] >> 52:[0,1943,"Marionette:SetContext",{"value":"content"}] << 28:[1,1943,null,{"value":null}] >> 32:[0,1944,"Marionette:GetContext"] << 33:[1,1944,null,{"value":"content"}] >> 51:[0,1945,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1945,null,{"value":null}] >> 847:[0,1946,"WebDriver:ExecuteScript",{"args":["browser.history.maxStateObjectSize",16777216],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 28:[1,1946,null,{"value":null}] >> 32:[0,1947,"Marionette:GetContext"] << 32:[1,1947,null,{"value":"chrome"}] >> 52:[0,1948,"Marionette:SetContext",{"value":"content"}] << 28:[1,1948,null,{"value":null}] >> 32:[0,1949,"Marionette:GetContext"] << 33:[1,1949,null,{"value":"content"}] >> 51:[0,1950,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1950,null,{"value":null}] >> 701:[0,1951,"WebDriver:ExecuteScript",{"args":["browser.history.maxStateObjectSize"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 44:[1,1951,null,{"value":[16777216,"integer"]}] >> 32:[0,1952,"Marionette:GetContext"] << 32:[1,1952,null,{"value":"chrome"}] >> 52:[0,1953,"Marionette:SetContext",{"value":"content"}] << 28:[1,1953,null,{"value":null}] >> 32:[0,1954,"Marionette:GetContext"] << 33:[1,1954,null,{"value":"content"}] >> 51:[0,1955,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1955,null,{"value":null}] >> 700:[0,1956,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 41:[1,1956,null,{"value":[false,"boolean"]}] >> 32:[0,1957,"Marionette:GetContext"] << 32:[1,1957,null,{"value":"chrome"}] >> 52:[0,1958,"Marionette:SetContext",{"value":"content"}] << 28:[1,1958,null,{"value":null}] >> 32:[0,1959,"Marionette:GetContext"] << 33:[1,1959,null,{"value":"content"}] >> 51:[0,1960,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1960,null,{"value":null}] >> 842:[0,1961,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors",true],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 28:[1,1961,null,{"value":null}] >> 32:[0,1962,"Marionette:GetContext"] << 32:[1,1962,null,{"value":"chrome"}] >> 52:[0,1963,"Marionette:SetContext",{"value":"content"}] << 28:[1,1963,null,{"value":null}] >> 32:[0,1964,"Marionette:GetContext"] << 33:[1,1964,null,{"value":"content"}] >> 51:[0,1965,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1965,null,{"value":null}] >> 700:[0,1966,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 40:[1,1966,null,{"value":[true,"boolean"]}] >> 32:[0,1967,"Marionette:GetContext"] << 32:[1,1967,null,{"value":"chrome"}] >> 52:[0,1968,"Marionette:SetContext",{"value":"content"}] << 28:[1,1968,null,{"value":null}] >> 32:[0,1969,"Marionette:GetContext"] << 33:[1,1969,null,{"value":"content"}] >> 51:[0,1970,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1970,null,{"value":null}] >> 843:[0,1971,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors",false],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 28:[1,1971,null,{"value":null}] >> 32:[0,1972,"Marionette:GetContext"] << 32:[1,1972,null,{"value":"chrome"}] >> 52:[0,1973,"Marionette:SetContext",{"value":"content"}] << 28:[1,1973,null,{"value":null}] >> 32:[0,1974,"Marionette:GetContext"] << 33:[1,1974,null,{"value":"content"}] >> 51:[0,1975,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1975,null,{"value":null}] >> 700:[0,1976,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 41:[1,1976,null,{"value":[false,"boolean"]}] >> 32:[0,1977,"Marionette:GetContext"] << 32:[1,1977,null,{"value":"chrome"}] >> 52:[0,1978,"Marionette:SetContext",{"value":"content"}] << 28:[1,1978,null,{"value":null}] >> 32:[0,1979,"Marionette:GetContext"] << 33:[1,1979,null,{"value":"content"}] >> 51:[0,1980,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1980,null,{"value":null}] >> 286:[0,1981,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] << 28:[1,1981,null,{"value":null}] >> 32:[0,1982,"Marionette:GetContext"] << 32:[1,1982,null,{"value":"chrome"}] >> 52:[0,1983,"Marionette:SetContext",{"value":"content"}] << 28:[1,1983,null,{"value":null}] >> 32:[0,1984,"Marionette:GetContext"] << 33:[1,1984,null,{"value":"content"}] >> 51:[0,1985,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1985,null,{"value":null}] >> 700:[0,1986,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 41:[1,1986,null,{"value":[false,"boolean"]}] >> 32:[0,1987,"Marionette:GetContext"] << 32:[1,1987,null,{"value":"chrome"}] >> 52:[0,1988,"Marionette:SetContext",{"value":"content"}] << 28:[1,1988,null,{"value":null}] >> 32:[0,1989,"Marionette:GetContext"] << 33:[1,1989,null,{"value":"content"}] >> 51:[0,1990,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1990,null,{"value":null}] >> 686:[0,1991,"WebDriver:ExecuteScript",{"args":["browser.no_such_key"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 30:[1,1991,null,{"value":[null]}] >> 32:[0,1992,"Marionette:GetContext"] << 32:[1,1992,null,{"value":"chrome"}] >> 52:[0,1993,"Marionette:SetContext",{"value":"content"}] << 28:[1,1993,null,{"value":null}] >> 32:[0,1994,"Marionette:GetContext"] << 33:[1,1994,null,{"value":"content"}] >> 51:[0,1995,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1995,null,{"value":null}] >> 847:[0,1996,"WebDriver:ExecuteScript",{"args":["browser.no_such_key","Can't be real:2748412"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 28:[1,1996,null,{"value":null}] >> 32:[0,1997,"Marionette:GetContext"] << 32:[1,1997,null,{"value":"chrome"}] >> 52:[0,1998,"Marionette:SetContext",{"value":"content"}] << 28:[1,1998,null,{"value":null}] >> 32:[0,1999,"Marionette:GetContext"] << 33:[1,1999,null,{"value":"content"}] >> 51:[0,2000,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,2000,null,{"value":null}] >> 686:[0,2001,"WebDriver:ExecuteScript",{"args":["browser.no_such_key"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 58:[1,2001,null,{"value":["Can't be real:2748412","string"]}] >> 32:[0,2002,"Marionette:GetContext"] << 32:[1,2002,null,{"value":"chrome"}] >> 52:[0,2003,"Marionette:SetContext",{"value":"content"}] << 28:[1,2003,null,{"value":null}] >> 32:[0,2004,"Marionette:GetContext"] << 33:[1,2004,null,{"value":"content"}] >> 51:[0,2005,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,2005,null,{"value":null}] >> 687:[0,2006,"WebDriver:ExecuteScript",{"args":["browser.active_color"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 44:[1,2006,null,{"value":["#EE0000","string"]}] >> 32:[0,2007,"Marionette:GetContext"] << 32:[1,2007,null,{"value":"chrome"}] >> 52:[0,2008,"Marionette:SetContext",{"value":"content"}] << 28:[1,2008,null,{"value":null}] >> 32:[0,2009,"Marionette:GetContext"] << 33:[1,2009,null,{"value":"content"}] >> 51:[0,2010,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,2010,null,{"value":null}] >> 687:[0,2011,"WebDriver:ExecuteScript",{"args":["browser.active_color"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 44:[1,2011,null,{"value":["#EE0000","string"]}] >> 32:[0,2012,"Marionette:GetContext"] << 32:[1,2012,null,{"value":"chrome"}] >> 52:[0,2013,"Marionette:SetContext",{"value":"content"}] << 28:[1,2013,null,{"value":null}] >> 32:[0,2014,"Marionette:GetContext"] << 33:[1,2014,null,{"value":"content"}] >> 51:[0,2015,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,2015,null,{"value":null}] >> 834:[0,2016,"WebDriver:ExecuteScript",{"args":["browser.active_color","#FFFFFF"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 28:[1,2016,null,{"value":null}] >> 32:[0,2017,"Marionette:GetContext"] << 32:[1,2017,null,{"value":"chrome"}] >> 52:[0,2018,"Marionette:SetContext",{"value":"content"}] << 28:[1,2018,null,{"value":null}] >> 32:[0,2019,"Marionette:GetContext"] << 33:[1,2019,null,{"value":"content"}] >> 51:[0,2020,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,2020,null,{"value":null}] >> 687:[0,2021,"WebDriver:ExecuteScript",{"args":["browser.active_color"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 44:[1,2021,null,{"value":["#FFFFFF","string"]}] >> 32:[0,2022,"Marionette:GetContext"] << 32:[1,2022,null,{"value":"chrome"}] >> 52:[0,2023,"Marionette:SetContext",{"value":"content"}] << 28:[1,2023,null,{"value":null}] >> 32:[0,2024,"Marionette:GetContext"] << 33:[1,2024,null,{"value":"content"}] >> 51:[0,2025,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,2025,null,{"value":null}] >> 273:[0,2026,"WebDriver:ExecuteScript",{"args":["browser.active_color"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] << 28:[1,2026,null,{"value":null}] >> 32:[0,2027,"Marionette:GetContext"] << 32:[1,2027,null,{"value":"chrome"}] >> 52:[0,2028,"Marionette:SetContext",{"value":"content"}] << 28:[1,2028,null,{"value":null}] >> 32:[0,2029,"Marionette:GetContext"] << 33:[1,2029,null,{"value":"content"}] >> 51:[0,2030,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,2030,null,{"value":null}] >> 687:[0,2031,"WebDriver:ExecuteScript",{"args":["browser.active_color"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 44:[1,2031,null,{"value":["#EE0000","string"]}] >> 32:[0,2032,"Marionette:GetContext"] << 32:[1,2032,null,{"value":"chrome"}] >> 52:[0,2033,"Marionette:SetContext",{"value":"content"}] << 28:[1,2033,null,{"value":null}] >> 36:[0,2034,"WebDriver:GetCapabilities"] << 722:[1,2034,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2754897,"moz:profile":"/tmp/firefox_marionette_local_IEXnHkaOKAj/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] # Testing has been running for 28 seconds at t/01-marionette.t line 2504 # Starting new firefox for testing custom headers # Testing has been running for 28 seconds at t/01-marionette.t line 2887 ** firefox --version ** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_UsgSlFnap7a/profile --no-remote --new-instance --devtools [2755511] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] << 760:[1,1,null,{"sessionId":"5d6006f5-2040-482a-b23f-462b294bbd00","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2755511,"moz:profile":"/tmp/firefox_marionette_local_UsgSlFnap7a/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 136:[0,2,"Addon:Install",{"path":"/tmp/firefox_marionette_local_UsgSlFnap7a/extension/har_export_trigger-0.6.1-an+fx.xpi","temporary":true}] << 54:[1,2,null,{"value":"harexporttrigger@getfirebug.com"}] >> 179:[0,3,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] << 66:[1,3,null,{"value":"PJDKSUP4SLawyFW7nZo8mT8fBrDNnKzijAaO0bO0PnQ"}] >> 29:[0,4,"Marionette:GetContext"] << 30:[1,4,null,{"value":"content"}] >> 48:[0,5,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,5,null,{"value":null}] >> 814:[0,6,"WebDriver:ExecuteScript",{"args":["geo.enabled",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 25:[1,6,null,{"value":null}] >> 29:[0,7,"Marionette:GetContext"] << 29:[1,7,null,{"value":"chrome"}] >> 49:[0,8,"Marionette:SetContext",{"value":"content"}] << 25:[1,8,null,{"value":null}] >> 29:[0,9,"Marionette:GetContext"] << 30:[1,9,null,{"value":"content"}] >> 49:[0,10,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,10,null,{"value":null}] >> 828:[0,11,"WebDriver:ExecuteScript",{"args":["geo.provider.use_geoclue",0],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,11,null,{"value":null}] >> 30:[0,12,"Marionette:GetContext"] << 30:[1,12,null,{"value":"chrome"}] >> 50:[0,13,"Marionette:SetContext",{"value":"content"}] << 26:[1,13,null,{"value":null}] >> 30:[0,14,"Marionette:GetContext"] << 31:[1,14,null,{"value":"content"}] >> 49:[0,15,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,15,null,{"value":null}] >> 833:[0,16,"WebDriver:ExecuteScript",{"args":["geo.provider.use_corelocation",0],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,16,null,{"value":null}] >> 30:[0,17,"Marionette:GetContext"] << 30:[1,17,null,{"value":"chrome"}] >> 50:[0,18,"Marionette:SetContext",{"value":"content"}] << 26:[1,18,null,{"value":null}] >> 30:[0,19,"Marionette:GetContext"] << 31:[1,19,null,{"value":"content"}] >> 49:[0,20,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,20,null,{"value":null}] >> 824:[0,21,"WebDriver:ExecuteScript",{"args":["geo.provider.testing",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,21,null,{"value":null}] >> 30:[0,22,"Marionette:GetContext"] << 30:[1,22,null,{"value":"chrome"}] >> 50:[0,23,"Marionette:SetContext",{"value":"content"}] << 26:[1,23,null,{"value":null}] >> 30:[0,24,"Marionette:GetContext"] << 31:[1,24,null,{"value":"content"}] >> 49:[0,25,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,25,null,{"value":null}] >> 822:[0,26,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,26,null,{"value":null}] >> 30:[0,27,"Marionette:GetContext"] << 30:[1,27,null,{"value":"chrome"}] >> 50:[0,28,"Marionette:SetContext",{"value":"content"}] << 26:[1,28,null,{"value":null}] >> 30:[0,29,"Marionette:GetContext"] << 31:[1,29,null,{"value":"content"}] >> 49:[0,30,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,30,null,{"value":null}] >> 828:[0,31,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing.allow",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,31,null,{"value":null}] >> 30:[0,32,"Marionette:GetContext"] << 30:[1,32,null,{"value":"chrome"}] >> 50:[0,33,"Marionette:SetContext",{"value":"content"}] << 26:[1,33,null,{"value":null}] >> 30:[0,34,"Marionette:GetContext"] << 31:[1,34,null,{"value":"content"}] >> 49:[0,35,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,35,null,{"value":null}] >> 830:[0,36,"WebDriver:ExecuteScript",{"args":["geo.security.allowinsecure",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,36,null,{"value":null}] >> 30:[0,37,"Marionette:GetContext"] << 30:[1,37,null,{"value":"chrome"}] >> 50:[0,38,"Marionette:SetContext",{"value":"content"}] << 26:[1,38,null,{"value":null}] >> 30:[0,39,"Marionette:GetContext"] << 31:[1,39,null,{"value":"content"}] >> 49:[0,40,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,40,null,{"value":null}] >> 817:[0,41,"WebDriver:ExecuteScript",{"args":["geo.wifi.scan",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,41,null,{"value":null}] >> 30:[0,42,"Marionette:GetContext"] << 30:[1,42,null,{"value":"chrome"}] >> 50:[0,43,"Marionette:SetContext",{"value":"content"}] << 26:[1,43,null,{"value":null}] >> 30:[0,44,"Marionette:GetContext"] << 31:[1,44,null,{"value":"content"}] >> 49:[0,45,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,45,null,{"value":null}] >> 827:[0,46,"WebDriver:ExecuteScript",{"args":["permissions.default.geo",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,46,null,{"value":null}] >> 30:[0,47,"Marionette:GetContext"] << 30:[1,47,null,{"value":"chrome"}] >> 50:[0,48,"Marionette:SetContext",{"value":"content"}] << 26:[1,48,null,{"value":null}] >> 30:[0,49,"Marionette:GetContext"] << 31:[1,49,null,{"value":"content"}] >> 49:[0,50,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,50,null,{"value":null}] >> 808:[0,51,"WebDriver:ExecuteScript",{"args":["data:application/json,%7B%22ipVersion%22:6,%22ipAddress%22:%222001:8001:4ab3:d800:7215:c1fe:fc85:1329%22,%22latitude%22:-37.5,%22longitude%22:144.5,%22countryName%22:%22Australia%22,%22countryCode%22:%22AU%22,%22timeZone%22:%22+11:00%22,%22zipCode%22:%223000%22,%22cityName%22:%22Melbourne%22,%22regionName%22:%22Victoria%22,%22isProxy%22:false,%22continent%22:%22Oceania%22,%22continentCode%22:%22OC%22%7D"],"script":"return (async function(url) { let response = await fetch(url, { method: \"GET\", mode: \"cors\", headers: { \"Content-Type\": \"application/json\" }, redirect: \"follow\", referrerPolicy: \"no-referrer\"}); if (response.ok) { return await response.json(); } else { throw new Error(url + \" returned a \" + response.status); } })(arguments[0]); "}] << 314:[1,51,null,{"value":{"ipVersion":6,"ipAddress":"2001:8001:4ab3:d800:7215:c1fe:fc85:1329","latitude":-37.5,"longitude":144.5,"countryName":"Australia","countryCode":"AU","timeZone":"+11:00","zipCode":"3000","cityName":"Melbourne","regionName":"Victoria","isProxy":false,"continent":"Oceania","continentCode":"OC"}}] >> 30:[0,52,"Marionette:GetContext"] << 30:[1,52,null,{"value":"chrome"}] >> 50:[0,53,"Marionette:SetContext",{"value":"content"}] << 26:[1,53,null,{"value":null}] >> 30:[0,54,"Marionette:GetContext"] << 31:[1,54,null,{"value":"content"}] >> 49:[0,55,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,55,null,{"value":null}] >> 895:[0,56,"WebDriver:ExecuteScript",{"args":["geo.provider.network.url","data:application/json,{\"location\":{\"lng\":144.5,\"lat\":-37.5}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,56,null,{"value":null}] >> 30:[0,57,"Marionette:GetContext"] << 30:[1,57,null,{"value":"chrome"}] >> 50:[0,58,"Marionette:SetContext",{"value":"content"}] << 26:[1,58,null,{"value":null}] >> 30:[0,59,"Marionette:GetContext"] << 31:[1,59,null,{"value":"content"}] >> 49:[0,60,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,60,null,{"value":null}] >> 883:[0,61,"WebDriver:ExecuteScript",{"args":["geo.wifi.uri","data:application/json,{\"location\":{\"lat\":-37.5,\"lng\":144.5}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,61,null,{"value":null}] >> 30:[0,62,"Marionette:GetContext"] << 30:[1,62,null,{"value":"chrome"}] >> 50:[0,63,"Marionette:SetContext",{"value":"content"}] << 26:[1,63,null,{"value":null}] >> 53:[0,2035,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 63:[1,2035,null,{"cause":"shutdown","forced":false,"in_app":true}] >> 30:[0,64,"Marionette:GetContext"] << 31:[1,64,null,{"value":"content"}] >> 49:[0,65,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,65,null,{"value":null}] >> 2954:[0,66,"WebDriver:ExecuteScript",{"args":[{"parentGuid":"menu________","title":"This is MetaCPAN!","type":1,"url":"https://metacpan.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] << 231:[1,66,null,{"value":{"parentGuid":"menu________","title":"This is MetaCPAN!","type":1,"url":"https://metacpan.org/","index":0,"dateAdded":"2025-10-04T04:03:00.812Z","lastModified":"2025-10-04T04:03:00.812Z","guid":"EH1HWJDJ2M3D"}}] >> 30:[0,67,"Marionette:GetContext"] << 30:[1,67,null,{"value":"chrome"}] >> 50:[0,68,"Marionette:SetContext",{"value":"content"}] << 26:[1,68,null,{"value":null}] >> 30:[0,69,"Marionette:GetContext"] << 31:[1,69,null,{"value":"content"}] >> 49:[0,70,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,70,null,{"value":null}] >> 807:[0,71,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 233:[1,71,null,{"value":[{"guid":"EH1HWJDJ2M3D","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2025-10-04T04:03:00.812Z","lastModified":"2025-10-04T04:03:00.812Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] >> 30:[0,72,"Marionette:GetContext"] << 30:[1,72,null,{"value":"chrome"}] >> 49:[0,73,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,73,null,{"value":null}] >> 2275:[0,74,"WebDriver:ExecuteScript",{"args":["EH1HWJDJ2M3D"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 209:[1,74,null,{"value":{"guid":"EH1HWJDJ2M3D","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1759550580,"lastModified":1759550580,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] >> 30:[0,75,"Marionette:GetContext"] << 30:[1,75,null,{"value":"chrome"}] >> 49:[0,76,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,76,null,{"value":null}] >> 30:[0,77,"Marionette:GetContext"] << 30:[1,77,null,{"value":"chrome"}] >> 50:[0,78,"Marionette:SetContext",{"value":"content"}] << 26:[1,78,null,{"value":null}] >> 30:[0,79,"Marionette:GetContext"] << 31:[1,79,null,{"value":"content"}] >> 49:[0,80,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,80,null,{"value":null}] >> 815:[0,81,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 233:[1,81,null,{"value":[{"guid":"EH1HWJDJ2M3D","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2025-10-04T04:03:00.812Z","lastModified":"2025-10-04T04:03:00.812Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] >> 30:[0,82,"Marionette:GetContext"] << 30:[1,82,null,{"value":"chrome"}] >> 49:[0,83,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,83,null,{"value":null}] >> 2275:[0,84,"WebDriver:ExecuteScript",{"args":["EH1HWJDJ2M3D"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 209:[1,84,null,{"value":{"guid":"EH1HWJDJ2M3D","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1759550580,"lastModified":1759550580,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] >> 30:[0,85,"Marionette:GetContext"] << 30:[1,85,null,{"value":"chrome"}] >> 49:[0,86,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,86,null,{"value":null}] >> 30:[0,87,"Marionette:GetContext"] << 30:[1,87,null,{"value":"chrome"}] >> 50:[0,88,"Marionette:SetContext",{"value":"content"}] << 26:[1,88,null,{"value":null}] >> 30:[0,89,"Marionette:GetContext"] << 31:[1,89,null,{"value":"content"}] >> 49:[0,90,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,90,null,{"value":null}] >> 815:[0,91,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 233:[1,91,null,{"value":[{"guid":"EH1HWJDJ2M3D","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2025-10-04T04:03:00.812Z","lastModified":"2025-10-04T04:03:00.812Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] >> 30:[0,92,"Marionette:GetContext"] << 30:[1,92,null,{"value":"chrome"}] >> 49:[0,93,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,93,null,{"value":null}] >> 2275:[0,94,"WebDriver:ExecuteScript",{"args":["EH1HWJDJ2M3D"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 209:[1,94,null,{"value":{"guid":"EH1HWJDJ2M3D","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1759550580,"lastModified":1759550580,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] >> 30:[0,95,"Marionette:GetContext"] << 30:[1,95,null,{"value":"chrome"}] >> 49:[0,96,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,96,null,{"value":null}] >> 30:[0,97,"Marionette:GetContext"] << 30:[1,97,null,{"value":"chrome"}] >> 50:[0,98,"Marionette:SetContext",{"value":"content"}] << 26:[1,98,null,{"value":null}] >> 30:[0,99,"Marionette:GetContext"] << 31:[1,99,null,{"value":"content"}] >> 50:[0,100,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,100,null,{"value":null}] >> 804:[0,101,"WebDriver:ExecuteScript",{"args":["This is MetaCPAN!"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 234:[1,101,null,{"value":[{"guid":"EH1HWJDJ2M3D","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2025-10-04T04:03:00.812Z","lastModified":"2025-10-04T04:03:00.812Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] >> 31:[0,102,"Marionette:GetContext"] << 31:[1,102,null,{"value":"chrome"}] >> 50:[0,103,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,103,null,{"value":null}] >> 2276:[0,104,"WebDriver:ExecuteScript",{"args":["EH1HWJDJ2M3D"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 210:[1,104,null,{"value":{"guid":"EH1HWJDJ2M3D","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1759550580,"lastModified":1759550580,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] >> 31:[0,105,"Marionette:GetContext"] << 31:[1,105,null,{"value":"chrome"}] >> 50:[0,106,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,106,null,{"value":null}] >> 31:[0,107,"Marionette:GetContext"] << 31:[1,107,null,{"value":"chrome"}] >> 51:[0,108,"Marionette:SetContext",{"value":"content"}] << 27:[1,108,null,{"value":null}] >> 31:[0,109,"Marionette:GetContext"] << 32:[1,109,null,{"value":"content"}] >> 50:[0,110,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,110,null,{"value":null}] >> 814:[0,111,"WebDriver:ExecuteScript",{"args":[{"title":"This is MetaCPAN!"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] << 234:[1,111,null,{"value":[{"guid":"EH1HWJDJ2M3D","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2025-10-04T04:03:00.812Z","lastModified":"2025-10-04T04:03:00.812Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] >> 31:[0,112,"Marionette:GetContext"] << 31:[1,112,null,{"value":"chrome"}] >> 50:[0,113,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,113,null,{"value":null}] >> 2276:[0,114,"WebDriver:ExecuteScript",{"args":["EH1HWJDJ2M3D"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 210:[1,114,null,{"value":{"guid":"EH1HWJDJ2M3D","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1759550580,"lastModified":1759550580,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] >> 31:[0,115,"Marionette:GetContext"] << 31:[1,115,null,{"value":"chrome"}] >> 50:[0,116,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,116,null,{"value":null}] >> 31:[0,117,"Marionette:GetContext"] << 31:[1,117,null,{"value":"chrome"}] >> 51:[0,118,"Marionette:SetContext",{"value":"content"}] << 27:[1,118,null,{"value":null}] >> 31:[0,119,"Marionette:GetContext"] << 32:[1,119,null,{"value":"content"}] >> 50:[0,120,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,120,null,{"value":null}] >> 208:[0,121,"WebDriver:ExecuteScript",{"script":"let loginManager = Components.classes[\"@mozilla.org/login-manager;1\"].getService(Components.interfaces.nsILoginManager); return loginManager.getAllLogins({}); "}] << 25:[1,121,null,{"value":[]}] >> 31:[0,122,"Marionette:GetContext"] << 31:[1,122,null,{"value":"chrome"}] >> 51:[0,123,"Marionette:SetContext",{"value":"content"}] << 27:[1,123,null,{"value":null}] >> 31:[0,124,"Marionette:GetContext"] << 32:[1,124,null,{"value":"content"}] >> 50:[0,125,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,125,null,{"value":null}] >> 208:[0,126,"WebDriver:ExecuteScript",{"script":"let loginManager = Components.classes[\"@mozilla.org/login-manager;1\"].getService(Components.interfaces.nsILoginManager); return loginManager.getAllLogins({}); "}] << 25:[1,126,null,{"value":[]}] >> 31:[0,127,"Marionette:GetContext"] << 31:[1,127,null,{"value":"chrome"}] >> 51:[0,128,"Marionette:SetContext",{"value":"content"}] << 27:[1,128,null,{"value":null}] >> 31:[0,129,"Marionette:GetContext"] << 32:[1,129,null,{"value":"content"}] >> 50:[0,130,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,130,null,{"value":null}] >> 1226:[0,131,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); } }).register(); "}] << 27:[1,131,null,{"value":null}] >> 31:[0,132,"Marionette:GetContext"] << 31:[1,132,null,{"value":"chrome"}] >> 51:[0,133,"Marionette:SetContext",{"value":"content"}] << 27:[1,133,null,{"value":null}] >> 31:[0,134,"Marionette:GetContext"] << 32:[1,134,null,{"value":"content"}] >> 50:[0,135,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,135,null,{"value":null}] >> 1326:[0,136,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); } }).register(); "}] << 27:[1,136,null,{"value":null}] >> 31:[0,137,"Marionette:GetContext"] << 31:[1,137,null,{"value":"chrome"}] >> 51:[0,138,"Marionette:SetContext",{"value":"content"}] << 27:[1,138,null,{"value":null}] >> 31:[0,139,"Marionette:GetContext"] << 32:[1,139,null,{"value":"content"}] >> 50:[0,140,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,140,null,{"value":null}] >> 1462:[0,141,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); } }).register(); "}] << 27:[1,141,null,{"value":null}] >> 31:[0,142,"Marionette:GetContext"] << 31:[1,142,null,{"value":"chrome"}] >> 51:[0,143,"Marionette:SetContext",{"value":"content"}] << 27:[1,143,null,{"value":null}] >> 31:[0,144,"Marionette:GetContext"] << 32:[1,144,null,{"value":"content"}] >> 50:[0,145,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,145,null,{"value":null}] >> 1665:[0,146,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } } }).register(); "}] << 27:[1,146,null,{"value":null}] >> 31:[0,147,"Marionette:GetContext"] << 31:[1,147,null,{"value":"chrome"}] >> 51:[0,148,"Marionette:SetContext",{"value":"content"}] << 27:[1,148,null,{"value":null}] >> 31:[0,149,"Marionette:GetContext"] << 32:[1,149,null,{"value":"content"}] >> 50:[0,150,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,150,null,{"value":null}] >> 1833:[0,151,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"\"), false); } } }).register(); "}] << 27:[1,151,null,{"value":null}] >> 31:[0,152,"Marionette:GetContext"] << 31:[1,152,null,{"value":"chrome"}] >> 51:[0,153,"Marionette:SetContext",{"value":"content"}] << 27:[1,153,null,{"value":null}] >> 31:[0,154,"Marionette:GetContext"] << 32:[1,154,null,{"value":"content"}] >> 50:[0,155,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,155,null,{"value":null}] >> 2038:[0,156,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"\"), false); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site2%201.68\"), true); } } }).register(); "}] << 27:[1,156,null,{"value":null}] >> 31:[0,157,"Marionette:GetContext"] << 31:[1,157,null,{"value":"chrome"}] >> 51:[0,158,"Marionette:SetContext",{"value":"content"}] << 27:[1,158,null,{"value":null}] >> 31:[0,159,"Marionette:GetContext"] << 32:[1,159,null,{"value":"content"}] >> 50:[0,160,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,160,null,{"value":null}] >> 2244:[0,161,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"\"), false); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site2%201.68\"), true); } if (host === decodeURIComponent(\"missing.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-No-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20None%201.68\"), true); } } }).register(); "}] << 27:[1,161,null,{"value":null}] >> 31:[0,162,"Marionette:GetContext"] << 31:[1,162,null,{"value":"chrome"}] >> 51:[0,163,"Marionette:SetContext",{"value":"content"}] << 27:[1,163,null,{"value":null}] >> 31:[0,164,"Marionette:GetContext"] << 32:[1,164,null,{"value":"content"}] >> 50:[0,165,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,165,null,{"value":null}] >> 2344:[0,166,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"Accept-Language\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"\"), false); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site2%201.68\"), true); } if (host === decodeURIComponent(\"missing.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-No-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20None%201.68\"), true); } } }).register(); "}] << 27:[1,166,null,{"value":null}] >> 31:[0,167,"Marionette:GetContext"] << 31:[1,167,null,{"value":"chrome"}] >> 51:[0,168,"Marionette:SetContext",{"value":"content"}] << 27:[1,168,null,{"value":null}] >> 31:[0,169,"Marionette:GetContext"] << 32:[1,169,null,{"value":"content"}] >> 50:[0,170,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,170,null,{"value":null}] >> 2505:[0,171,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"Accept-Language\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"Cache-Control\"), decodeURIComponent(\"\"), false); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"\"), false); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site2%201.68\"), true); } if (host === decodeURIComponent(\"missing.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-No-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20None%201.68\"), true); } } }).register(); "}] << 27:[1,171,null,{"value":null}] >> 31:[0,172,"Marionette:GetContext"] << 31:[1,172,null,{"value":"chrome"}] >> 51:[0,173,"Marionette:SetContext",{"value":"content"}] << 27:[1,173,null,{"value":null}] >> 35:[0,174,"WebDriver:GetCapabilities"] << 721:[1,174,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2755511,"moz:profile":"/tmp/firefox_marionette_local_UsgSlFnap7a/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] # Starting new firefox for testing metacpan and iframe, with find, downloads, extensions and actions # Testing has been running for 32 seconds at t/01-marionette.t line 3063 ** firefox --version ** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_JaC7J6JmxfP/profile --no-remote --new-instance [2755893] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 180:[0,1,"WebDriver:NewSession",{"acceptInsecureCerts":true,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"pageLoadStrategy":"eager"}},"pageLoadStrategy":"eager"}] << 800:[1,1,null,{"sessionId":"1cf432cc-d974-4835-9806-8e1a4392b228","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"libwww-perl/6.72","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2755893,"moz:profile":"/tmp/firefox_marionette_local_JaC7J6JmxfP/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"pageLoadStrategy":"eager"}},"proxy":{}}}] >> 29:[0,2,"WebDriver:GetTimeouts"] << 58:[1,2,null,{"implicit":0,"pageLoad":300000,"script":30000}] >> 76:[0,3,"WebDriver:SetTimeouts",{"implicit":0,"pageLoad":600000,"script":5432}] << 25:[1,3,null,{"value":null}] >> 179:[0,4,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] << 66:[1,4,null,{"value":"WE1hUi5wLTsRbUuEvEloBSRC696xCskbAwcvRHlXnwE"}] >> 29:[0,5,"Marionette:GetContext"] << 30:[1,5,null,{"value":"content"}] >> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,6,null,{"value":null}] >> 814:[0,7,"WebDriver:ExecuteScript",{"args":["geo.enabled",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 25:[1,7,null,{"value":null}] >> 29:[0,8,"Marionette:GetContext"] << 29:[1,8,null,{"value":"chrome"}] >> 49:[0,9,"Marionette:SetContext",{"value":"content"}] << 25:[1,9,null,{"value":null}] >> 30:[0,10,"Marionette:GetContext"] << 31:[1,10,null,{"value":"content"}] >> 49:[0,11,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,11,null,{"value":null}] >> 828:[0,12,"WebDriver:ExecuteScript",{"args":["geo.provider.use_geoclue",0],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,12,null,{"value":null}] >> 30:[0,13,"Marionette:GetContext"] << 30:[1,13,null,{"value":"chrome"}] >> 50:[0,14,"Marionette:SetContext",{"value":"content"}] << 26:[1,14,null,{"value":null}] >> 30:[0,15,"Marionette:GetContext"] << 31:[1,15,null,{"value":"content"}] >> 49:[0,16,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,16,null,{"value":null}] >> 833:[0,17,"WebDriver:ExecuteScript",{"args":["geo.provider.use_corelocation",0],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,17,null,{"value":null}] >> 30:[0,18,"Marionette:GetContext"] << 30:[1,18,null,{"value":"chrome"}] >> 50:[0,19,"Marionette:SetContext",{"value":"content"}] << 26:[1,19,null,{"value":null}] >> 30:[0,20,"Marionette:GetContext"] << 31:[1,20,null,{"value":"content"}] >> 49:[0,21,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,21,null,{"value":null}] >> 824:[0,22,"WebDriver:ExecuteScript",{"args":["geo.provider.testing",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,22,null,{"value":null}] >> 30:[0,23,"Marionette:GetContext"] << 30:[1,23,null,{"value":"chrome"}] >> 50:[0,24,"Marionette:SetContext",{"value":"content"}] << 26:[1,24,null,{"value":null}] >> 30:[0,25,"Marionette:GetContext"] << 31:[1,25,null,{"value":"content"}] >> 49:[0,26,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,26,null,{"value":null}] >> 822:[0,27,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,27,null,{"value":null}] >> 30:[0,28,"Marionette:GetContext"] << 30:[1,28,null,{"value":"chrome"}] >> 50:[0,29,"Marionette:SetContext",{"value":"content"}] << 26:[1,29,null,{"value":null}] >> 30:[0,30,"Marionette:GetContext"] << 31:[1,30,null,{"value":"content"}] >> 49:[0,31,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,31,null,{"value":null}] >> 828:[0,32,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing.allow",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,32,null,{"value":null}] >> 30:[0,33,"Marionette:GetContext"] << 30:[1,33,null,{"value":"chrome"}] >> 50:[0,34,"Marionette:SetContext",{"value":"content"}] << 26:[1,34,null,{"value":null}] >> 30:[0,35,"Marionette:GetContext"] << 31:[1,35,null,{"value":"content"}] >> 49:[0,36,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,36,null,{"value":null}] >> 830:[0,37,"WebDriver:ExecuteScript",{"args":["geo.security.allowinsecure",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,37,null,{"value":null}] >> 30:[0,38,"Marionette:GetContext"] << 30:[1,38,null,{"value":"chrome"}] >> 50:[0,39,"Marionette:SetContext",{"value":"content"}] << 26:[1,39,null,{"value":null}] >> 30:[0,40,"Marionette:GetContext"] << 31:[1,40,null,{"value":"content"}] >> 49:[0,41,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,41,null,{"value":null}] >> 817:[0,42,"WebDriver:ExecuteScript",{"args":["geo.wifi.scan",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,42,null,{"value":null}] >> 30:[0,43,"Marionette:GetContext"] << 30:[1,43,null,{"value":"chrome"}] >> 50:[0,44,"Marionette:SetContext",{"value":"content"}] << 26:[1,44,null,{"value":null}] >> 30:[0,45,"Marionette:GetContext"] << 31:[1,45,null,{"value":"content"}] >> 49:[0,46,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,46,null,{"value":null}] >> 827:[0,47,"WebDriver:ExecuteScript",{"args":["permissions.default.geo",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,47,null,{"value":null}] >> 30:[0,48,"Marionette:GetContext"] << 30:[1,48,null,{"value":"chrome"}] >> 50:[0,49,"Marionette:SetContext",{"value":"content"}] << 26:[1,49,null,{"value":null}] >> 30:[0,50,"Marionette:GetContext"] << 31:[1,50,null,{"value":"content"}] >> 49:[0,51,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,51,null,{"value":null}] >> 760:[0,52,"WebDriver:ExecuteScript",{"args":["data:application/json,{\"ipVersion\":6,\"ipAddress\":\"2001:8001:4ab3:d800:7215:c1fe:fc85:1329\",\"latitude\":-37.5,\"longitude\":144.5,\"countryName\":\"Australia\",\"countryCode\":\"AU\",\"timeZone\":\"+11:00\",\"zipCode\":\"3000\",\"cityName\":\"Melbourne\",\"regionName\":\"Victoria\",\"isProxy\":false,\"continent\":\"Oceania\",\"continentCode\":\"OC\"}"],"script":"return (async function(url) { let response = await fetch(url, { method: \"GET\", mode: \"cors\", headers: { \"Content-Type\": \"application/json\" }, redirect: \"follow\", referrerPolicy: \"no-referrer\"}); if (response.ok) { return await response.json(); } else { throw new Error(url + \" returned a \" + response.status); } })(arguments[0]); "}] << 314:[1,52,null,{"value":{"ipVersion":6,"ipAddress":"2001:8001:4ab3:d800:7215:c1fe:fc85:1329","latitude":-37.5,"longitude":144.5,"countryName":"Australia","countryCode":"AU","timeZone":"+11:00","zipCode":"3000","cityName":"Melbourne","regionName":"Victoria","isProxy":false,"continent":"Oceania","continentCode":"OC"}}] >> 30:[0,53,"Marionette:GetContext"] << 30:[1,53,null,{"value":"chrome"}] >> 50:[0,54,"Marionette:SetContext",{"value":"content"}] << 26:[1,54,null,{"value":null}] >> 30:[0,55,"Marionette:GetContext"] << 31:[1,55,null,{"value":"content"}] >> 49:[0,56,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,56,null,{"value":null}] >> 895:[0,57,"WebDriver:ExecuteScript",{"args":["geo.provider.network.url","data:application/json,{\"location\":{\"lat\":-37.5,\"lng\":144.5}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,57,null,{"value":null}] >> 30:[0,58,"Marionette:GetContext"] << 30:[1,58,null,{"value":"chrome"}] >> 50:[0,59,"Marionette:SetContext",{"value":"content"}] << 26:[1,59,null,{"value":null}] >> 30:[0,60,"Marionette:GetContext"] << 31:[1,60,null,{"value":"content"}] >> 49:[0,61,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,61,null,{"value":null}] >> 883:[0,62,"WebDriver:ExecuteScript",{"args":["geo.wifi.uri","data:application/json,{\"location\":{\"lat\":-37.5,\"lng\":144.5}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,62,null,{"value":null}] >> 30:[0,63,"Marionette:GetContext"] << 30:[1,63,null,{"value":"chrome"}] >> 50:[0,64,"Marionette:SetContext",{"value":"content"}] << 26:[1,64,null,{"value":null}] >> 52:[0,175,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 62:[1,175,null,{"cause":"shutdown","forced":false,"in_app":true}] # Starting new firefox for testing JSON from localhost and alerts and extensions # Testing has been running for 37 seconds at t/01-marionette.t line 4370 ** firefox --version ** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_ZyxTbYzPJKX/profile --no-remote --new-instance [2756257] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] << 760:[1,1,null,{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2756257,"moz:profile":"/tmp/firefox_marionette_local_ZyxTbYzPJKX/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 29:[0,2,"WebDriver:GetTimeouts"] << 58:[1,2,null,{"implicit":0,"pageLoad":300000,"script":30000}] >> 82:[0,3,"WebDriver:SetTimeouts",{"implicit":987654,"pageLoad":300000,"script":30000}] << 25:[1,3,null,{"value":null}] >> 179:[0,4,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] << 66:[1,4,null,{"value":"mbfegxWIqdy1_GEFki4qipXAkmGPWQpW9pi_O4Xeddk"}] >> 29:[0,5,"Marionette:GetContext"] << 30:[1,5,null,{"value":"content"}] >> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,6,null,{"value":null}] >> 814:[0,7,"WebDriver:ExecuteScript",{"args":["geo.enabled",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 25:[1,7,null,{"value":null}] >> 29:[0,8,"Marionette:GetContext"] << 29:[1,8,null,{"value":"chrome"}] >> 49:[0,9,"Marionette:SetContext",{"value":"content"}] << 25:[1,9,null,{"value":null}] >> 30:[0,10,"Marionette:GetContext"] << 31:[1,10,null,{"value":"content"}] >> 49:[0,11,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,11,null,{"value":null}] >> 828:[0,12,"WebDriver:ExecuteScript",{"args":["geo.provider.use_geoclue",0],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,12,null,{"value":null}] >> 30:[0,13,"Marionette:GetContext"] << 30:[1,13,null,{"value":"chrome"}] >> 50:[0,14,"Marionette:SetContext",{"value":"content"}] << 26:[1,14,null,{"value":null}] >> 30:[0,15,"Marionette:GetContext"] << 31:[1,15,null,{"value":"content"}] >> 49:[0,16,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,16,null,{"value":null}] >> 833:[0,17,"WebDriver:ExecuteScript",{"args":["geo.provider.use_corelocation",0],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,17,null,{"value":null}] >> 30:[0,18,"Marionette:GetContext"] << 30:[1,18,null,{"value":"chrome"}] >> 50:[0,19,"Marionette:SetContext",{"value":"content"}] << 26:[1,19,null,{"value":null}] >> 30:[0,20,"Marionette:GetContext"] << 31:[1,20,null,{"value":"content"}] >> 49:[0,21,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,21,null,{"value":null}] >> 824:[0,22,"WebDriver:ExecuteScript",{"args":["geo.provider.testing",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,22,null,{"value":null}] >> 30:[0,23,"Marionette:GetContext"] << 30:[1,23,null,{"value":"chrome"}] >> 50:[0,24,"Marionette:SetContext",{"value":"content"}] << 26:[1,24,null,{"value":null}] >> 30:[0,25,"Marionette:GetContext"] << 31:[1,25,null,{"value":"content"}] >> 49:[0,26,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,26,null,{"value":null}] >> 822:[0,27,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,27,null,{"value":null}] >> 30:[0,28,"Marionette:GetContext"] << 30:[1,28,null,{"value":"chrome"}] >> 50:[0,29,"Marionette:SetContext",{"value":"content"}] << 26:[1,29,null,{"value":null}] >> 30:[0,30,"Marionette:GetContext"] << 31:[1,30,null,{"value":"content"}] >> 49:[0,31,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,31,null,{"value":null}] >> 828:[0,32,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing.allow",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,32,null,{"value":null}] >> 30:[0,33,"Marionette:GetContext"] << 30:[1,33,null,{"value":"chrome"}] >> 50:[0,34,"Marionette:SetContext",{"value":"content"}] << 26:[1,34,null,{"value":null}] >> 30:[0,35,"Marionette:GetContext"] << 31:[1,35,null,{"value":"content"}] >> 49:[0,36,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,36,null,{"value":null}] >> 830:[0,37,"WebDriver:ExecuteScript",{"args":["geo.security.allowinsecure",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,37,null,{"value":null}] >> 30:[0,38,"Marionette:GetContext"] << 30:[1,38,null,{"value":"chrome"}] >> 50:[0,39,"Marionette:SetContext",{"value":"content"}] << 26:[1,39,null,{"value":null}] >> 30:[0,40,"Marionette:GetContext"] << 31:[1,40,null,{"value":"content"}] >> 49:[0,41,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,41,null,{"value":null}] >> 817:[0,42,"WebDriver:ExecuteScript",{"args":["geo.wifi.scan",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,42,null,{"value":null}] >> 30:[0,43,"Marionette:GetContext"] << 30:[1,43,null,{"value":"chrome"}] >> 50:[0,44,"Marionette:SetContext",{"value":"content"}] << 26:[1,44,null,{"value":null}] >> 30:[0,45,"Marionette:GetContext"] << 31:[1,45,null,{"value":"content"}] >> 49:[0,46,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,46,null,{"value":null}] >> 827:[0,47,"WebDriver:ExecuteScript",{"args":["permissions.default.geo",1],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,47,null,{"value":null}] >> 30:[0,48,"Marionette:GetContext"] << 30:[1,48,null,{"value":"chrome"}] >> 50:[0,49,"Marionette:SetContext",{"value":"content"}] << 26:[1,49,null,{"value":null}] >> 51:[0,65,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 61:[1,65,null,{"cause":"shutdown","forced":false,"in_app":true}] >> 34:[0,50,"WebDriver:GetCapabilities"] << 725:[1,50,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2756257,"moz:profile":"/tmp/firefox_marionette_local_ZyxTbYzPJKX/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":987654,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] # Original install path is /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/addons/borderify/manifest.json # Installing extension from /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/addons/borderify/manifest.json >> 118:[0,51,"Addon:Install",{"path":"/tmp/firefox_marionette_local_ZyxTbYzPJKX/extension/1_borderify.xpi","temporary":true}] << 80:[1,51,null,{"value":"0cccff6d2aa11cc875e1c8b66f0652bd0708b5c9@temporary-addon"}] >> 187:[0,52,"WebDriver:Navigate",{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b","url":"file:///build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/iframe.html"}] << 26:[1,52,null,{"value":null}] >> 79:[0,53,"WebDriver:ExecuteScript",{"script":"return document.body.style.border"}] << 37:[1,53,null,{"value":"5px solid red"}] >> 90:[0,54,"Addon:Uninstall",{"id":"0cccff6d2aa11cc875e1c8b66f0652bd0708b5c9@temporary-addon"}] << 26:[1,54,null,{"value":null}] >> 30:[0,55,"Marionette:GetContext"] << 31:[1,55,null,{"value":"content"}] >> 49:[0,56,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,56,null,{"value":null}] >> 899:[0,57,"WebDriver:ExecuteScript",{"args":["geo.provider.network.url","data:application/json,{\"location\":{\"lng\":144.456,\"lat\":-37.123}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,57,null,{"value":null}] >> 30:[0,58,"Marionette:GetContext"] << 30:[1,58,null,{"value":"chrome"}] >> 50:[0,59,"Marionette:SetContext",{"value":"content"}] << 26:[1,59,null,{"value":null}] >> 30:[0,60,"Marionette:GetContext"] << 31:[1,60,null,{"value":"content"}] >> 49:[0,61,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,61,null,{"value":null}] >> 887:[0,62,"WebDriver:ExecuteScript",{"args":["geo.wifi.uri","data:application/json,{\"location\":{\"lng\":144.456,\"lat\":-37.123}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,62,null,{"value":null}] >> 30:[0,63,"Marionette:GetContext"] << 30:[1,63,null,{"value":"chrome"}] >> 50:[0,64,"Marionette:SetContext",{"value":"content"}] << 26:[1,64,null,{"value":null}] >> 187:[0,65,"WebDriver:Navigate",{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b","url":"file:///build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/iframe.html"}] << 26:[1,65,null,{"value":null}] >> 862:[0,66,"WebDriver:ExecuteScript",{"script":"return (async function() { function getGeo() { return new Promise((resolve, reject) => { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(resolve, reject, { maximumAge: 0, enableHighAccuracy: true }); } else { reject(\"navigator.geolocation is unavailable\"); } }) }; return await getGeo().then((response) => { let d = new Date(); return { \"timezone_offset\": d.getTimezoneOffset(), \"latitude\": response[\"coords\"][\"latitude\"], \"longitude\": response[\"coords\"][\"longitude\"], \"altitude\": response[\"coords\"][\"altitude\"], \"accuracy\": response[\"coords\"][\"accuracy\"], \"altitudeAccuracy\": response[\"coords\"][\"altitudeAccuracy\"], \"heading\": response[\"coords\"][\"heading\"], \"speed\": response[\"coords\"][\"speed\"], }; }).catch((err) => { throw err.message }); })(); "}] << 163:[1,66,null,{"value":{"timezone_offset":0,"latitude":-37.123,"longitude":144.456,"altitude":null,"accuracy":0,"altitudeAccuracy":null,"heading":null,"speed":null}}] # Accepting connections for [Test HTTP Content Server for 2748412] >> 124:[0,67,"WebDriver:Navigate",{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b","url":"http://127.0.0.1:33725/?format=JSON"}] # Accepted connection # Accepted connection # Got request for /?format=JSON << 26:[1,67,null,{"value":null}] >> 85:[0,68,"WebDriver:GetPageSource",{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b"}] << 196:[1,68,null,{"value":"
{ \"id\": \"5\", \"value\": \"sömething\"}
"}] >> 85:[0,69,"WebDriver:GetPageSource",{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b"}] << 196:[1,69,null,{"value":"
{ \"id\": \"5\", \"value\": \"sömething\"}
"}] # { "id": "5", "value": "sömething"} >> 85:[0,70,"WebDriver:GetPageSource",{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b"}] << 196:[1,70,null,{"value":"
{ \"id\": \"5\", \"value\": \"sömething\"}
"}] >> 85:[0,71,"WebDriver:GetPageSource",{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b"}] << 196:[1,71,null,{"value":"
{ \"id\": \"5\", \"value\": \"sömething\"}
"}] >> 123:[0,72,"WebDriver:Navigate",{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b","url":"http://127.0.0.1:33725/?format=txt"}] # Accepted connection # Got request for /?format=txt << 26:[1,72,null,{"value":null}] >> 85:[0,73,"WebDriver:GetPageSource",{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b"}] << 173:[1,73,null,{"value":"
This is ordinary text
"}] >> 85:[0,74,"WebDriver:GetPageSource",{"sessionId":"4279a2e3-73e8-4bdf-8753-817bbabde43b"}] << 173:[1,74,null,{"value":"
This is ordinary text
"}] # This is ordinary text >> 30:[0,75,"Marionette:GetContext"] << 31:[1,75,null,{"value":"content"}] >> 49:[0,76,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,76,null,{"value":null}] >> 693:[0,77,"WebDriver:ExecuteScript",{"args":["browser.download.downloadDir"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 86:[1,77,null,{"value":["/tmp/firefox_marionette_local_ZyxTbYzPJKX/downloads","string"]}] >> 30:[0,78,"Marionette:GetContext"] << 30:[1,78,null,{"value":"chrome"}] >> 50:[0,79,"Marionette:SetContext",{"value":"content"}] << 26:[1,79,null,{"value":null}] >> 30:[0,80,"WebDriver:GetTimeouts"] << 64:[1,80,null,{"implicit":987654,"pageLoad":300000,"script":30000}] >> 30:[0,81,"Marionette:GetContext"] << 31:[1,81,null,{"value":"content"}] >> 49:[0,82,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,82,null,{"value":null}] >> 30:[0,83,"WebDriver:GetTimeouts"] << 64:[1,83,null,{"implicit":987654,"pageLoad":300000,"script":30000}] >> 84:[0,84,"WebDriver:SetTimeouts",{"implicit":987654,"pageLoad":300000,"script":300000}] << 26:[1,84,null,{"value":null}] >> 516:[0,85,"WebDriver:ExecuteScript",{"args":["http://127.0.0.1:33725/?format=txt","/tmp/firefox_marionette_local_ZyxTbYzPJKX/downloads/firefox_marionette_download_tnnOSJbu2Wr"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Downloads: \"resource://gre/modules/Downloads.sys.mjs\", }); } else { lazy.Downloads = ChromeUtils.import(\"resource://gre/modules/Downloads.jsm\").Downloads; } return Downloads.fetch({ url: arguments[0] }, { path: arguments[1] }); "}] # Accepted connection # Got request for /?format=txt [Parent 2756257, Main Thread] WARNING: g_object_get: assertion 'G_IS_OBJECT (object)' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 (firefox-esr:2756257): GLib-GObject-CRITICAL **: 04:03:09.890: g_object_get: assertion 'G_IS_OBJECT (object)' failed << 26:[1,85,null,{"value":null}] >> 30:[0,86,"WebDriver:GetTimeouts"] << 65:[1,86,null,{"implicit":987654,"pageLoad":300000,"script":300000}] >> 83:[0,87,"WebDriver:SetTimeouts",{"implicit":987654,"pageLoad":300000,"script":30000}] << 26:[1,87,null,{"value":null}] >> 30:[0,88,"Marionette:GetContext"] << 30:[1,88,null,{"value":"chrome"}] >> 50:[0,89,"Marionette:SetContext",{"value":"content"}] << 26:[1,89,null,{"value":null}] >> 30:[0,90,"Marionette:GetContext"] << 31:[1,90,null,{"value":"content"}] >> 49:[0,91,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,91,null,{"value":null}] >> 693:[0,92,"WebDriver:ExecuteScript",{"args":["browser.download.downloadDir"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] << 86:[1,92,null,{"value":["/tmp/firefox_marionette_local_ZyxTbYzPJKX/downloads","string"]}] >> 30:[0,93,"Marionette:GetContext"] << 30:[1,93,null,{"value":"chrome"}] >> 50:[0,94,"Marionette:SetContext",{"value":"content"}] << 26:[1,94,null,{"value":null}] >> 30:[0,95,"WebDriver:GetTimeouts"] << 64:[1,95,null,{"implicit":987654,"pageLoad":300000,"script":30000}] >> 30:[0,96,"Marionette:GetContext"] << 31:[1,96,null,{"value":"content"}] >> 49:[0,97,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,97,null,{"value":null}] >> 30:[0,98,"WebDriver:GetTimeouts"] << 64:[1,98,null,{"implicit":987654,"pageLoad":300000,"script":30000}] >> 83:[0,99,"WebDriver:SetTimeouts",{"implicit":987654,"pageLoad":300000,"script":50000}] << 26:[1,99,null,{"value":null}] >> 517:[0,100,"WebDriver:ExecuteScript",{"args":["http://127.0.0.1:33725/?format=txt","/tmp/firefox_marionette_local_ZyxTbYzPJKX/downloads/firefox_marionette_download_hQPqFBHt9HO"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Downloads: \"resource://gre/modules/Downloads.sys.mjs\", }); } else { lazy.Downloads = ChromeUtils.import(\"resource://gre/modules/Downloads.jsm\").Downloads; } return Downloads.fetch({ url: arguments[0] }, { path: arguments[1] }); "}] # Accepted connection # Got request for /?format=txt [Parent 2756257, Main Thread] WARNING: g_object_get: assertion 'G_IS_OBJECT (object)' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 (firefox-esr:2756257): GLib-GObject-CRITICAL **: 04:03:09.936: g_object_get: assertion 'G_IS_OBJECT (object)' failed << 27:[1,100,null,{"value":null}] >> 31:[0,101,"WebDriver:GetTimeouts"] << 65:[1,101,null,{"implicit":987654,"pageLoad":300000,"script":50000}] >> 84:[0,102,"WebDriver:SetTimeouts",{"implicit":987654,"pageLoad":300000,"script":30000}] << 27:[1,102,null,{"value":null}] >> 31:[0,103,"Marionette:GetContext"] << 31:[1,103,null,{"value":"chrome"}] >> 51:[0,104,"Marionette:SetContext",{"value":"content"}] << 27:[1,104,null,{"value":null}] # Caught exception in content server:Caught a TERM signal at t/01-marionette.t line 115. >> 69:[0,105,"WebDriver:ExecuteScript",{"script":"alert('testing alert')"}] << 27:[1,105,null,{"value":null}] >> 32:[0,106,"WebDriver:GetAlertText"] << 38:[1,106,null,{"value":"testing alert"}] >> 32:[0,107,"WebDriver:DismissAlert"] << 27:[1,107,null,{"value":null}] >> 102:[0,108,"WebDriver:ExecuteAsyncScript",{"script":"prompt(\"Please enter your name\", \"John Cole\");"}] << 27:[1,108,null,{"value":null}] >> 61:[0,109,"WebDriver:SendAlertText",{"text":"Roland Grelewicz"}] << 27:[1,109,null,{"value":null}] **** DEPRECATED METHOD - using accept_dialog() HAS BEEN REPLACED BY accept_alert **** at t/01-marionette.t line 4579. >> 32:[0,110,"WebDriver:AcceptDialog"] << 27:[1,110,null,{"value":null}] >> 52:[0,111,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 62:[1,111,null,{"cause":"shutdown","forced":false,"in_app":true}] # Starting new firefox for testing proxy by argument, capabilities, window switching and certificates using proxy port TCP/50217 # Starting new firefox for testing %ENV proxy, min/maxing and killing firefox # Starting new firefox for testing visibility and TLS proxy servers # Starting new firefox for shortcut TLS proxy servers # Starting new firefox for shortcut normal proxy servers # Testing has been running for 44 seconds at t/01-marionette.t line 5407 ** firefox --version ** firefox -marionette -safe-mode -headless -profile /tmp/firefox_marionette_local_NUqp2uQng0q/profile --no-remote --new-instance [2757508] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] << 760:[1,1,null,{"sessionId":"1851ccad-ba22-451a-b29c-1974f915ec77","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2757508,"moz:profile":"/tmp/firefox_marionette_local_NUqp2uQng0q/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 179:[0,2,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] << 66:[1,2,null,{"value":"ib7iX03kr7XkuQq28odefsD9Y6TT_PNtUIYkV4OgOXM"}] >> 29:[0,3,"Marionette:GetContext"] << 30:[1,3,null,{"value":"content"}] >> 49:[0,4,"Marionette:SetContext",{"value":"content"}] << 25:[1,4,null,{"value":null}] >> 29:[0,5,"Marionette:GetContext"] << 30:[1,5,null,{"value":"content"}] >> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] << 927:[1,6,{"error":"unsupported operation","message":"System access is required to switch to chrome scope. Start Firefox with \"-remote-allow-system-access\" to enable it.","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nUnsupportedOperationError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:927:5\nset@chrome://remote/content/marionette/driver.sys.mjs:357:13\nGeckoDriver.prototype.setContext@chrome://remote/content/marionette/driver.sys.mjs:830:3\ndespatch@chrome://remote/content/marionette/server.sys.mjs:318:40\nexecute@chrome://remote/content/marionette/server.sys.mjs:289:16\nonPacket/<@chrome://remote/content/marionette/server.sys.mjs:262:20\nonPacket@chrome://remote/content/marionette/server.sys.mjs:263:9\n_onJSONObjectReady/<@chrome://remote/content/marionette/transport.sys.mjs:494:20\n"},null] >> 50:[0,7,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 60:[1,7,null,{"cause":"shutdown","forced":false,"in_app":true}] # Testing has been running for 48 seconds at t/01-marionette.t line 5425 # Total runtime is 55 seconds t/01-marionette.t ..... ok 1 - Read 0 existing profiles ok 2 - No default profile ok 3 - No default waterfox profile ok 4 - Read existing profile if any ok 5 - Firefox::Marionette->new() threw an exception when launched with an incorrect path to a binary:Failed to open directory '/firefox/is/not':No such file or directory at t/01-marionette.t line 663 ok 6 - Firefox::Marionette->new() threw an exception when launched with a path to a non firefox binary:Firefox exited with a 25 at t/01-marionette.t line 668 ok 7 # skip No profile testing except for RELEASE_TESTING ok 8 # skip No profile testing except for RELEASE_TESTING ok 9 # skip No profile testing except for RELEASE_TESTING ok 10 # skip No profile testing except for RELEASE_TESTING ok 11 # skip No profile testing except for RELEASE_TESTING ok 12 # skip No profile testing except for RELEASE_TESTING ok 13 - Firefox::Marionette::Profile->new() correctly returns a new profile ok 14 - $profile->get_value('marionette.port') correctly returns 0 ok 15 - $profile->set_value('browser.link.open_newwindow', 2) to force new windows to appear ok 16 - $profile->set_value('browser.link.open_external', 2) to force new windows to appear ok 17 - $profile->set_value('browser.block.target_new_window', 'false') to force new windows to appear [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt ok 18 - $firefox->root_directory() is /tmp/firefox_marionette_local_rRZ5mLfLyx7 ok 19 - $firefox->debug() returns $ENV{FIREFOX_DEBUG}:1 ok 20 - Firefox has started in Marionette mode ok 21 - application/pkcs10 has been added to mime_types ok 22 - application/pdf was already in mime_types ok 23 - application/x-gzip was already in mime_types ok 24 - text/html should not be in mime_types ok 25 - shows an existing proxy setup ok 26 - Firefox is currently running in linux ok 27 - Firefox is currently running on x86_64 ok 28 - Firefox Platform version is 6.16.5+deb14-amd64 ok 29 - Firefox::Marionette->root_directory() returns the exising local directory:/tmp/firefox_marionette_local_rRZ5mLfLyx7 ok 30 - $firefox->application_type() returns gecko ok 31 - $firefox->marionette_protocol() returns 3 ok 32 - $firefox->window_type() returns 'navigator:browser':navigator:browser ok 33 - $firefox->sleep_time_in_ms() is 1 millisecond ok 34 - Window used to have a X position of 0 ok 35 - Window used to have a Y position of 0 ok 36 - Window used to have a width of 1366 ok 37 - Window used to have a height of 768 ok 38 - Window has a X position of 3 ok 39 - Window has a Y position of 23 ok 40 - Window has a width of 326:450 ok 41 - Window has a height of 452 not ok 42 - Window has a state of # TODO 140.3.1 probably does not have support for $firefox->window_rect()->wstate() # Failed (TODO) test 'Window has a state of ' # at t/01-marionette.t line 934. ok 43 - Window has a X position of 3 ok 44 - Window has a Y position of 23 ok 45 - Window has a width of 450 ok 46 - Window has a height of 452 ok 47 - $firefox->timeouts($new) returns a Firefox::Marionette::Timeouts object ok 48 - $firefox->timeouts() returns a Firefox::Marionette::Timeouts object ok 49 - $timeouts->page_load() is 5 minutes ok 50 - $timeouts->script() is 30 seconds ok 51 - $timeouts->implicit() is 0 milliseconds ok 52 - $timeouts->page_load() is 45043 ok 53 - $timeouts->script() is 48021 ok 54 - $timeouts->implicit() is 41001 ok 55 - navigator.webdriver returns true:1 # TODO Some installations of firefox can default to webdriver being off ok 56 - Firefox does not have a value for child_error ok 57 - Firefox is still alive ok 58 - Opening new window to about:blank via 'window.open' script ok 59 - Closed new tab/window ok 60 # skip Deleting and re-creating sessions can hang firefox for old versions ok 61 - Firefox has closed with an integer exit status of 0 ok 62 - Firefox returns 0 for the child error, matching the return value of quit():0:0 ok 63 - Firefox is not still alive ok 64 # skip No survive testing except for RELEASE_TESTING ok 65 # skip No survive testing except for RELEASE_TESTING ok 66 # skip No survive testing except for RELEASE_TESTING ok 67 # skip No survive testing except for RELEASE_TESTING ok 68 # skip No survive testing except for RELEASE_TESTING ok 69 # skip No survive testing except for RELEASE_TESTING ok 70 # skip No survive testing except for RELEASE_TESTING ok 71 # skip No survive testing except for RELEASE_TESTING [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt ok 72 - $firefox->root_directory() is /tmp/firefox_marionette_local_Alh1pA9_yWq ok 73 - Firefox has started in Marionette mode with definable capabilities set to known values ok 74 - $firefox->har() throws an exception when har has not been setup:javascript error: TypeError: can't access property "triggerExport", window.HAR is undefined at t/01-marionette.t line 1210 ok 75 - Retrieved bookmark from edge import ok 76 - $bookmark->url() returns a URI::URL object ok 77 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette ok 78 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 ok 79 - $bookmark->title() is 'Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org':Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 80 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 81 - $bookmark->parent_guid() yrS1Xbh_V57Z ok 82 - $bookmark->guid() is FiSDkc1j4TAK ok 83 - $bookmark->url() is 'https://perlmonks.org/':https://perlmonks.org/ ok 84 - $bookmark->date_added() is Sat Jun 10 02:28:01 2023 ok 85 - $bookmark->title() is 'PerlMonks - The Monastery Gates':PerlMonks - The Monastery Gates ok 86 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 87 - $bookmark->parent_guid() is menu________ ok 88 - $bookmark->guid() is 8l8cVBuLinZC ok 89 - $bookmark->icon_url() is not defined ok 90 - $bookmark->icon() is not defined ok 91 - $firefox->sleep_time_in_ms() is 5 milliseconds ok 92 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object ok 93 - $capabilities->set_window_rect() is a 0 or 1 ok 94 - $capabilities->unhandled_prompt_behavior() is 'accept and notify' ok 95 - $capabilities->moz_shutdown_timeout() is an integer ok 96 - $capabilities->strict_file_interactability() is set to true ok 97 - $capabilities->page_load_strategy() is 'eager' ok 98 - $capabilities->accept_insecure_certs() is set to true ok 99 - $capabilities->moz_webdriver_click() is set to true ok 100 - $capabilities->moz_use_non_spec_compliant_pointer_origin() is not defined ok 101 - $capabilities->moz_accessibility_checks() is set to true ok 102 - $capabilities->moz_headless() is set to false ok 103 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object ok 104 - $capabilities->proxy()->type() is 'manual' ok 105 - $capabilities->proxy()->http() is 'localhost:55963':localhost:55963 ok 106 - $capabilities->proxy()->https() is 'localhost:53393' ok 107 - $capabilities->timeouts()->page_load() is '54,321' ok 108 - $capabilities->timeouts()->script() is '4,567' ok 109 - $capabilities->timeouts()->implicit() is '6,543' ok 110 - $capabilities->proxy()->socks() is 'localhost:34235':localhost:34235 ok 111 - $capabilities->proxy()->socks_version() is 5 ok 112 - $capabilities->proxy()->none() is a reference to a list with 1 element ok 113 # skip Skipping proxy forks except for RELEASE_TESTING=1 ok 114 - Firefox has closed with an exit status of 0:0 [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing 1759550560170 Marionette INFO Listening on port 45341 [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt 1759550560901 RemoteAgent INFO Proxy settings initialized: {"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:38631"} ok 115 - $firefox->root_directory() is /tmp/firefox_marionette_local_DOyZC6NOola ok 116 - Firefox has started in Marionette mode with definable capabilities set to known values ok 117 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object ok 118 - $capabilities->proxy()->type() is 'pac' ok 119 - $capabilities->proxy()->pac()->host() is 'localhost' ok 120 - $firefox->capabilities()->timeouts()->page_load() correctly reflects the page_load shortcut timeout ok 121 - $geo2->latitude() is correctly reported as 40:40 ok 122 - $geo2->longitude() is correctly reported as 24:24 1759550563630 Marionette INFO Stopped listening on port 45341 ok 123 - Firefox has closed with an exit status of 0:0 ok 124 # skip Skipping b/c proxy seems to cause hangs ok 125 # skip Skipping b/c proxy seems to cause hangs ok 126 # skip Skipping b/c proxy seems to cause hangs ok 127 # skip Skipping b/c proxy seems to cause hangs ok 128 # skip Skipping b/c proxy seems to cause hangs ok 129 # skip Skipping b/c proxy seems to cause hangs ok 130 # skip Skipping b/c proxy seems to cause hangs [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt ok 131 - $firefox->root_directory() is /tmp/firefox_marionette_local_7DwzVtbNgRC ok 132 - Firefox has started in Marionette mode with definable capabilities set to known values ok 133 - Retrieved bookmark from chrome import as https://metacpan.org/pod/Firefox::Marionette ok 134 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette ok 135 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 ok 136 - $bookmark->title() is 'Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org':Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 137 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 138 - $bookmark->parent_guid() is Zmq07OElFGFd ok 139 - $bookmark->guid() is 7WAc5KrxF8_i ok 140 - $bookmark->url() is 'https://perlmonks.org/':https://perlmonks.org/ ok 141 - $bookmark->date_added() is Sat Jun 10 02:28:01 2023 ok 142 - $bookmark->title() is 'PerlMonks - The Monastery Gates':PerlMonks - The Monastery Gates ok 143 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 144 - $bookmark->parent_guid() is menu________ ok 145 - $bookmark->guid() is veUO3Z_RQ7t8 ok 146 - $bookmark->icon_url() is not defined ok 147 - $bookmark->icon() is not defined ok 148 - Retrieved the ARIA label correctly:Close ok 149 - Retrieved the ARIA label correctly:Close ok 150 - Retrieved the ARIA role correctly:button ok 151 - Retrieved the ARIA label correctly:button ok 152 - $firefox->languages() equals navigator.languages:'en-US, en' vs 'en-US, en' ok 153 - $firefox->languages(split q[, ], "en-AU, en-GB, en") returns correctly ok 154 - $firefox->languages() equals navigator.languages:'en-AU, en-GB, en' vs 'en-AU, en-GB, en' ok 155 - $firefox->languages("en-GB") returns correctly ok 156 - $firefox->languages() matches navigator.language b/c there is only one entry:'en-GB' vs 'en-GB' ok 157 - $firefox->agent($test_agent_string) returns the original user agent string of 'Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0' ok 158 - $firefox->go("file:///build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/elements.html") loaded successfully ok 159 - $firefox->agent(undef) returns 'Firefox::Marionette v1.68 test suite':Firefox::Marionette v1.68 test suite ok 160 - Deleted element with 'add' class ok 161 - Deleted 'add' element cannot be found in the DOM ok 162 - Deleted element with 'update' class ok 163 - Deleted 'update' element cannot be found in the DOM ok 164 - $firefox->go("file:///build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/elements.html") loaded successfully again ok 165 - $firefox->agent() returns the original user agent string 'Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0':Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 ok 166 - $firefox->has_tag('span') has children and the first child is an Firefox::Marionette::Element with a tag_name of 'button' ok 167 - $firefox->has_tag('custom-square') returns a Firefox::Marionette::Element ok 168 - $span->shadowy() returns false ok 169 - $custom_square->shadowy() returns true ok 170 - First element from scripted shadowRoot is a style tag ok 171 - $firefox->has_tag('custom-square')->shadow_root() returns a Firefox::Marionette::ShadowRoot ok 172 - First element from ShadowRoot via script is a style tag ok 173 - Second element from ShadowRoot via script is a div tag ok 174 - $firefox->has_tag('custom-square')->shadow_root() has 2 children:6 ok 175 - $firefox->has_tag('custom-square')->shadow_root() returns a Firefox::Marionette::ShadowRoot ok 176 - Element returned from ShadowRoot via script is a style tag ok 177 - First element is the numeric 2 ok 178 - Second element from ShadowRoot via script is a style tag ok 179 - $firefox->script() correctly returns an array with 2 elements ok 180 - Correctly found shadow element with find_id ok 181 - Correctly found shadow span with find_tag ok 182 - Correctly found shadow span with find_tag ok 183 - There are 2 span elements in the custom-square element ok 184 - There are 0 notag elements in the custom-square element ok 185 - Correctly found shadow element with find_name ok 186 - Correctly found shadow element with find_class ok 187 - Correctly found shadow element with find_link ok 188 - Correctly found shadow element with find_partial not ok 189 - Correctly found shadow element with find (xpath): # TODO xpath is not supported as a strategy for find in the shadow DOM # Failed (TODO) test 'Correctly found shadow element with find (xpath):' # at t/01-marionette.t line 1743. ok 190 - Value returned from script is the numeric 2 in an array ok 191 - Value returned from script is a Firefox::Marionette::Element for a 'span' in an array ok 192 - Value returned from script is a Firefox::Marionette::Element for a 'span' in a hash ok 193 - Value returned from script is the numeric 2 ok 194 - Value returned from script is the numeric 2 in a hash ok 195 - navigator.webdriver returns false when stealth is on ok 196 - $firefox->check_cache_key(CLEAR_COOKIES) eq Firefox::Marionette::Cache::CLEAR_COOKIES which should be 1 and is 1 ok 197 - $firefox->check_cache_key(CLEAR_NETWORK_CACHE) eq Firefox::Marionette::Cache::CLEAR_NETWORK_CACHE which should be 2 and is 2 ok 198 - $firefox->check_cache_key(CLEAR_IMAGE_CACHE) eq Firefox::Marionette::Cache::CLEAR_IMAGE_CACHE which should be 4 and is 4 ok 199 - $firefox->check_cache_key(CLEAR_JS_CACHE) eq Firefox::Marionette::Cache::CLEAR_JS_CACHE which should be 8 and is 8 ok 200 - $firefox->check_cache_key(CLEAR_DOWNLOADS) eq Firefox::Marionette::Cache::CLEAR_DOWNLOADS which should be 16 and is 16 ok 201 - $firefox->check_cache_key(CLEAR_MEDIA_DEVICES) eq Firefox::Marionette::Cache::CLEAR_MEDIA_DEVICES which should be 64 and is 64 ok 202 - $firefox->check_cache_key(CLEAR_DOM_QUOTA) eq Firefox::Marionette::Cache::CLEAR_DOM_QUOTA which should be 128 and is 128 ok 203 - $firefox->check_cache_key(CLEAR_PREDICTOR_NETWORK_DATA) eq Firefox::Marionette::Cache::CLEAR_PREDICTOR_NETWORK_DATA which should be 256 and is 256 ok 204 - $firefox->check_cache_key(CLEAR_DOM_PUSH_NOTIFICATIONS) eq Firefox::Marionette::Cache::CLEAR_DOM_PUSH_NOTIFICATIONS which should be 512 and is 512 ok 205 - $firefox->check_cache_key(CLEAR_HISTORY) eq Firefox::Marionette::Cache::CLEAR_HISTORY which should be 1024 and is 1024 ok 206 - $firefox->check_cache_key(CLEAR_AUTH_TOKENS) eq Firefox::Marionette::Cache::CLEAR_AUTH_TOKENS which should be 4096 and is 4096 ok 207 - $firefox->check_cache_key(CLEAR_AUTH_CACHE) eq Firefox::Marionette::Cache::CLEAR_AUTH_CACHE which should be 8192 and is 8192 ok 208 - $firefox->check_cache_key(CLEAR_PERMISSIONS) eq Firefox::Marionette::Cache::CLEAR_PERMISSIONS which should be 2147500032 and is 2147500032 ok 209 - $firefox->check_cache_key(CLEAR_CONTENT_PREFERENCES) eq Firefox::Marionette::Cache::CLEAR_CONTENT_PREFERENCES which should be 32768 and is 32768 ok 210 - $firefox->check_cache_key(CLEAR_HSTS) eq Firefox::Marionette::Cache::CLEAR_HSTS which should be 65536 and is 65536 ok 211 - $firefox->check_cache_key(CLEAR_EME) eq Firefox::Marionette::Cache::CLEAR_EME which should be 131072 and is 131072 ok 212 - $firefox->check_cache_key(CLEAR_REPORTS) eq Firefox::Marionette::Cache::CLEAR_REPORTS which should be 262144 and is 262144 ok 213 - $firefox->check_cache_key(CLEAR_STORAGE_ACCESS) eq Firefox::Marionette::Cache::CLEAR_STORAGE_ACCESS which should be 524288 and is 524288 ok 214 - $firefox->check_cache_key(CLEAR_CERT_EXCEPTIONS) eq Firefox::Marionette::Cache::CLEAR_CERT_EXCEPTIONS which should be 1048576 and is 1048576 ok 215 - $firefox->check_cache_key(CLEAR_CONTENT_BLOCKING_RECORDS) eq Firefox::Marionette::Cache::CLEAR_CONTENT_BLOCKING_RECORDS which should be 2097152 and is 2097152 ok 216 - $firefox->check_cache_key(CLEAR_CSS_CACHE) eq Firefox::Marionette::Cache::CLEAR_CSS_CACHE which should be 4194304 and is 4194304 ok 217 - $firefox->check_cache_key(CLEAR_PREFLIGHT_CACHE) eq Firefox::Marionette::Cache::CLEAR_PREFLIGHT_CACHE which should be 8388608 and is 8388608 ok 218 - $firefox->check_cache_key(CLEAR_CLIENT_AUTH_REMEMBER_SERVICE) eq Firefox::Marionette::Cache::CLEAR_CLIENT_AUTH_REMEMBER_SERVICE which should be 16777216 and is 16777216 ok 219 - $firefox->check_cache_key(CLEAR_CREDENTIAL_MANAGER_STATE) eq Firefox::Marionette::Cache::CLEAR_CREDENTIAL_MANAGER_STATE which should be 33554432 and is 33554432 ok 220 - $firefox->check_cache_key(CLEAR_COOKIE_BANNER_EXCEPTION) eq Firefox::Marionette::Cache::CLEAR_COOKIE_BANNER_EXCEPTION which should be 67108864 and is 67108864 ok 221 - $firefox->check_cache_key(CLEAR_COOKIE_BANNER_EXECUTED_RECORD) eq Firefox::Marionette::Cache::CLEAR_COOKIE_BANNER_EXECUTED_RECORD which should be 134217728 and is 134217728 ok 222 - $firefox->check_cache_key(CLEAR_FINGERPRINTING_PROTECTION_STATE) eq Firefox::Marionette::Cache::CLEAR_FINGERPRINTING_PROTECTION_STATE which should be 268435456 and is 268435456 ok 223 - $firefox->check_cache_key(CLEAR_BOUNCE_TRACKING_PROTECTION_STATE) eq Firefox::Marionette::Cache::CLEAR_BOUNCE_TRACKING_PROTECTION_STATE which should be 536870912 and is 536870912 ok 224 - $firefox->check_cache_key(CLEAR_MESSAGING_LAYER_SECURITY_STATE) eq Firefox::Marionette::Cache::CLEAR_MESSAGING_LAYER_SECURITY_STATE which should be 2048 and is 2048 ok 225 - $firefox->check_cache_key(CLEAR_STORAGE_PERMISSIONS) eq Firefox::Marionette::Cache::CLEAR_STORAGE_PERMISSIONS which should be 1073741824 and is 1073741824 ok 226 - $firefox->check_cache_key(CLEAR_SHUTDOWN_EXCEPTIONS) eq Firefox::Marionette::Cache::CLEAR_SHUTDOWN_EXCEPTIONS which should be 2147483648 and is 2147483648 ok 227 - $firefox->check_cache_key(CLEAR_ALL) eq Firefox::Marionette::Cache::CLEAR_ALL which should be 4294967295 and is 4294967295 ok 228 - $firefox->check_cache_key(CLEAR_ALL_CACHES) eq Firefox::Marionette::Cache::CLEAR_ALL_CACHES which should be 12648462 and is 12648462 ok 229 - $firefox->check_cache_key(CLEAR_DOM_STORAGES) eq Firefox::Marionette::Cache::CLEAR_DOM_STORAGES which should be 262784 and is 262784 ok 230 - $firefox->check_cache_key(CLEAR_FORGET_ABOUT_SITE) eq Firefox::Marionette::Cache::CLEAR_FORGET_ABOUT_SITE which should be 3218591647 and is 3218591647 ok 231 - $firefox->check_cache_key(CLEAR_COOKIES_AND_SITE_DATA) eq Firefox::Marionette::Cache::CLEAR_COOKIES_AND_SITE_DATA which should be 2013739649 and is 2013739649 ok 232 - $firefox->check_cache_key() throws an exception ok 233 - $firefox->check_cache_key("123!\#") throws an exception ok 234 - $firefox->content() is called in case of previous exceptions getting the context out of sync ok 235 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object ok 236 - $capabilities->accept_insecure_certs() is true ok 237 # skip Skipping network tests ok 238 # skip Skipping network tests ok 239 # skip Skipping network tests [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt ok 240 - $firefox->root_directory() is /tmp/firefox_marionette_local_IEXnHkaOKAj ok 241 - Firefox has started in Marionette mode with definable capabilities set to known values ok 242 - $firefox->import_bookmarks('/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.json') returns itself for chaining ok 243 - Retrieved bookmark from firefox export as https://metacpan.org/pod/Firefox::Marionette ok 244 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette ok 245 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 ok 246 - $bookmark->last_modified() is Thu Jun 1 09:16:13 2023 ok 247 - $bookmark->title() is 'Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org':Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 248 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 249 - $bookmark->parent_guid() is ExAzkxs5efkR ok 250 - $bookmark->guid() is 'utcxPgIOG05d':utcxPgIOG05d ok 251 - $firefox->search_bookmark('https://metacpan.org/') produces 2 results:2 ok 252 - $firefox->delete_bookmark($bookmark) returns itself for chaining ok 253 - Bookmark for https://metacpan.org/pod/Firefox::Marionette has been deleted ok 254 - $bookmark->url() is 'https://perlmonks.org/':https://perlmonks.org/ ok 255 - $bookmark->date_added() is Sat Jun 10 02:28:01 2023 ok 256 - $bookmark->last_modified() is Sat Jun 10 02:28:15 2023 ok 257 - $bookmark->title() is 'PerlMonks - The Monastery Gates':PerlMonks - The Monastery Gates ok 258 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 259 - $bookmark->parent_guid() is unfiled_____ ok 260 - $bookmark->guid() is wiTkT9Zqb99b ok 261 - $bookmark->icon_url() is not defined ok 262 - $bookmark->icon() is not defined ok 263 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a type method:1 ok 264 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a guid method:XiZLcg8n_B4A ok 265 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a url method:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 ok 266 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a title method:Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 267 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a parent_guid method:ExAzkxs5efkR ok 268 - $firefox->search_bookmark('https://metacpan.org/') produces 1 result:1 ok 269 - $firefox->search_bookmark() returns results (1) that have a type method:1 ok 270 - $firefox->search_bookmark() returns results (1) that have a guid method:wiTkT9Zqb99b ok 271 - $firefox->search_bookmark() returns results (1) that have a url method:https://perlmonks.org/ ok 272 - $firefox->search_bookmark() returns results (1) that have a title method:PerlMonks - The Monastery Gates ok 273 - $firefox->search_bookmark() returns results (1) that have a tag method that produces 0 tags ok 274 - $firefox->search_bookmark() returns results (1) that have a parent_guid method:unfiled_____ ok 275 - Deleting this bookmark ok 276 - $firefox->search_bookmark() returns results (2) that have a type method:1 ok 277 - $firefox->search_bookmark() returns results (2) that have a guid method:UjOiVVvuVdng ok 278 - $firefox->search_bookmark() returns results (2) that have a url method:https://pause.perl.org/pause/query ok 279 - $firefox->search_bookmark() returns results (2) that have a title method:PAUSE: The CPAN back stage entrance ok 280 - $firefox->search_bookmark() returns results (2) that have a tag method that produces 0 tags ok 281 - $firefox->search_bookmark() returns results (2) that have a parent_guid method:toolbar_____ ok 282 - Deleting this bookmark ok 283 - $firefox->search_bookmark() returns results (3) that have a type method:1 ok 284 - $firefox->search_bookmark() returns results (3) that have a guid method:JTBNJdLPdYhk ok 285 - $firefox->search_bookmark() returns results (3) that have a url method:https://github.com/david-dick/firefox-marionette ok 286 - $firefox->search_bookmark() returns results (3) that have a title method:GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol ok 287 - $firefox->search_bookmark() returns results (3) that have a tag method that produces 0 tags ok 288 - $firefox->search_bookmark() returns results (3) that have a parent_guid method:menu________ ok 289 - Deleting this bookmark ok 290 - $firefox->search_bookmark() returns results (4) that have a type method:3 ok 291 - $firefox->search_bookmark() returns results (4) that have a guid method:zCZX0_5lBXTS ok 292 - $firefox->search_bookmark() returns results (4) that have a tag method that produces 0 tags ok 293 - $firefox->search_bookmark() returns results (4) that have a parent_guid method:menu________ ok 294 - Deleting this bookmark ok 295 - $firefox->search_bookmark() returns results (5) that have a type method:1 ok 296 - $firefox->search_bookmark() returns results (5) that have a guid method:bZbedzEdrOnQ ok 297 - $firefox->search_bookmark() returns results (5) that have a url method:https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web ok 298 - $firefox->search_bookmark() returns results (5) that have a title method:perl 🐫 at DuckDuckGo ok 299 - $firefox->search_bookmark() returns results (5) that have a tag method that produces 4 tags ok 300 - $firefox->search_bookmark() returns results (5) that have a parent_guid method:eZlh-ztIYBne ok 301 - Deleting this bookmark ok 302 - $firefox->search_bookmark() returns results (6) that have a type method:2 ok 303 - $firefox->search_bookmark() returns results (6) that have a guid method:eZlh-ztIYBne ok 304 - $firefox->search_bookmark() returns results (6) that have a title method:Searches ok 305 - $firefox->search_bookmark() returns results (6) that have a tag method that produces 0 tags ok 306 - $firefox->search_bookmark() returns results (6) that have a parent_guid method:menu________ ok 307 - Deleting this bookmark ok 308 - $firefox->search_bookmark() returns results (7) that have a type method:1 ok 309 - $firefox->search_bookmark() returns results (7) that have a guid method:XiZLcg8n_B4A ok 310 - $firefox->search_bookmark() returns results (7) that have a url method:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 ok 311 - $firefox->search_bookmark() returns results (7) that have a title method:Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 312 - $firefox->search_bookmark() returns results (7) that have a tag method that produces 0 tags ok 313 - $firefox->search_bookmark() returns results (7) that have a parent_guid method:ExAzkxs5efkR ok 314 - Deleting this bookmark ok 315 - $firefox->search_bookmark() returns results (8) that have a type method:2 ok 316 - $firefox->search_bookmark() returns results (8) that have a guid method:ExAzkxs5efkR ok 317 - $firefox->search_bookmark() returns results (8) that have a title method:CPAN ok 318 - $firefox->search_bookmark() returns results (8) that have a tag method that produces 0 tags ok 319 - $firefox->search_bookmark() returns results (8) that have a parent_guid method:menu________ ok 320 - Deleting this bookmark ok 321 - $firefox->search_bookmark() returns results (9) that have a type method:2 ok 322 - $firefox->search_bookmark() returns results (9) that have a guid method:mobile______ ok 323 - $firefox->search_bookmark() returns results (9) that have a title method:mobile ok 324 - $firefox->search_bookmark() returns results (9) that have a tag method that produces 0 tags ok 325 - $firefox->search_bookmark() returns results (9) that have a parent_guid method:root________ ok 326 - $firefox->search_bookmark() returns results (10) that have a type method:2 ok 327 - $firefox->search_bookmark() returns results (10) that have a guid method:unfiled_____ ok 328 - $firefox->search_bookmark() returns results (10) that have a title method:unfiled ok 329 - $firefox->search_bookmark() returns results (10) that have a tag method that produces 0 tags ok 330 - $firefox->search_bookmark() returns results (10) that have a parent_guid method:root________ ok 331 - $firefox->search_bookmark() returns results (11) that have a type method:2 ok 332 - $firefox->search_bookmark() returns results (11) that have a guid method:tags________ ok 333 - $firefox->search_bookmark() returns results (11) that have a title method:tags ok 334 - $firefox->search_bookmark() returns results (11) that have a tag method that produces 0 tags ok 335 - $firefox->search_bookmark() returns results (11) that have a parent_guid method:root________ ok 336 - $firefox->search_bookmark() returns results (12) that have a type method:2 ok 337 - $firefox->search_bookmark() returns results (12) that have a guid method:toolbar_____ ok 338 - $firefox->search_bookmark() returns results (12) that have a title method:toolbar ok 339 - $firefox->search_bookmark() returns results (12) that have a tag method that produces 0 tags ok 340 - $firefox->search_bookmark() returns results (12) that have a parent_guid method:root________ ok 341 - $firefox->search_bookmark() returns results (13) that have a type method:2 ok 342 - $firefox->search_bookmark() returns results (13) that have a guid method:menu________ ok 343 - $firefox->search_bookmark() returns results (13) that have a title method:menu ok 344 - $firefox->search_bookmark() returns results (13) that have a tag method that produces 0 tags ok 345 - $firefox->search_bookmark() returns results (13) that have a parent_guid method:root________ ok 346 - $firefox->search_bookmark('https://metacpan.org/') produces more than 7 results:13 ok 347 - $firefox->import_bookmarks('/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.html') returns itself for chaining ok 348 - $firefox->search_bookmark() returns results (1) that have a type method:1 ok 349 - $firefox->search_bookmark() returns results (1) that have a guid method:aaFVubVSjPVG ok 350 - $firefox->search_bookmark() returns results (1) that have a guid method:0 ok 351 - $firefox->search_bookmark() returns results (1) that have a url method:https://perlmonks.org/ ok 352 - $firefox->search_bookmark() returns results (1) that have a title method:PerlMonks - The Monastery Gates ok 353 - $firefox->search_bookmark() returns results (1) that have a parent_guid method:unfiled_____ ok 354 - $firefox->search_bookmark() returns results (2) that have a type method:1 ok 355 - $firefox->search_bookmark() returns results (2) that have a guid method:pOsC6lI63mpm ok 356 - $firefox->search_bookmark() returns results (2) that have a guid method:0 ok 357 - $firefox->search_bookmark() returns results (2) that have a url method:https://pause.perl.org/pause/query ok 358 - $firefox->search_bookmark() returns results (2) that have a title method:PAUSE: The CPAN back stage entrance ok 359 - $firefox->search_bookmark() returns results (2) that have a parent_guid method:toolbar_____ ok 360 - $firefox->search_bookmark() returns results (3) that have a type method:1 ok 361 - $firefox->search_bookmark() returns results (3) that have a guid method:fPaOJg5lZ1AQ ok 362 - $firefox->search_bookmark() returns results (3) that have a guid method:3 ok 363 - $firefox->search_bookmark() returns results (3) that have a url method:https://github.com/david-dick/firefox-marionette ok 364 - $firefox->search_bookmark() returns results (3) that have a title method:GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol ok 365 - $firefox->search_bookmark() returns results (3) that have a parent_guid method:menu________ ok 366 - $firefox->search_bookmark() returns results (4) that have a type method:3 ok 367 - $firefox->search_bookmark() returns results (4) that have a guid method:cXhsCQJDcPVd ok 368 - $firefox->search_bookmark() returns results (4) that have a guid method:2 ok 369 - $firefox->search_bookmark() returns results (4) that have a parent_guid method:menu________ ok 370 - $firefox->search_bookmark() returns results (5) that have a type method:1 ok 371 - $firefox->search_bookmark() returns results (5) that have a guid method:sTWAWWIr3NZE ok 372 - $firefox->search_bookmark() returns results (5) that have a guid method:0 ok 373 - $firefox->search_bookmark() returns results (5) that have a url method:https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web ok 374 - $firefox->search_bookmark() returns results (5) that have a title method:perl 🐫 at DuckDuckGo ok 375 - $firefox->search_bookmark() returns results (5) that have a parent_guid method:VKLG70LBZK6K ok 376 - $firefox->search_bookmark() returns results (6) that have a type method:2 ok 377 - $firefox->search_bookmark() returns results (6) that have a guid method:VKLG70LBZK6K ok 378 - $firefox->search_bookmark() returns results (6) that have a guid method:1 ok 379 - $firefox->search_bookmark() returns results (6) that have a title method:Searches ok 380 - $firefox->search_bookmark() returns results (6) that have a parent_guid method:menu________ ok 381 - $firefox->search_bookmark() returns results (7) that have a type method:1 ok 382 - $firefox->search_bookmark() returns results (7) that have a guid method:0eY38Pog9zF8 ok 383 - $firefox->search_bookmark() returns results (7) that have a guid method:1 ok 384 - $firefox->search_bookmark() returns results (7) that have a url method:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 ok 385 - $firefox->search_bookmark() returns results (7) that have a title method:Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 386 - $firefox->search_bookmark() returns results (7) that have a parent_guid method:xeZJM125JQv5 ok 387 - $firefox->search_bookmark() returns results (8) that have a type method:1 ok 388 - $firefox->search_bookmark() returns results (8) that have a guid method:vJn8DKZa4fHw ok 389 - $firefox->search_bookmark() returns results (8) that have a guid method:0 ok 390 - $firefox->search_bookmark() returns results (8) that have a url method:https://metacpan.org/pod/Firefox::Marionette ok 391 - $firefox->search_bookmark() returns results (8) that have a title method:Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 392 - $firefox->search_bookmark() returns results (8) that have a parent_guid method:xeZJM125JQv5 ok 393 - $firefox->search_bookmark() returns results (9) that have a type method:2 ok 394 - $firefox->search_bookmark() returns results (9) that have a guid method:xeZJM125JQv5 ok 395 - $firefox->search_bookmark() returns results (9) that have a guid method:0 ok 396 - $firefox->search_bookmark() returns results (9) that have a title method:CPAN ok 397 - $firefox->search_bookmark() returns results (9) that have a parent_guid method:menu________ ok 398 - $firefox->search_bookmark() returns results (10) that have a type method:2 ok 399 - $firefox->search_bookmark() returns results (10) that have a guid method:mobile______ ok 400 - $firefox->search_bookmark() returns results (10) that have a guid method:4 ok 401 - $firefox->search_bookmark() returns results (10) that have a title method:mobile ok 402 - $firefox->search_bookmark() returns results (10) that have a parent_guid method:root________ ok 403 - $firefox->search_bookmark() returns results (11) that have a type method:2 ok 404 - $firefox->search_bookmark() returns results (11) that have a guid method:unfiled_____ ok 405 - $firefox->search_bookmark() returns results (11) that have a guid method:3 ok 406 - $firefox->search_bookmark() returns results (11) that have a title method:unfiled ok 407 - $firefox->search_bookmark() returns results (11) that have a parent_guid method:root________ ok 408 - $firefox->search_bookmark() returns results (12) that have a type method:2 ok 409 - $firefox->search_bookmark() returns results (12) that have a guid method:tags________ ok 410 - $firefox->search_bookmark() returns results (12) that have a guid method:2 ok 411 - $firefox->search_bookmark() returns results (12) that have a title method:tags ok 412 - $firefox->search_bookmark() returns results (12) that have a parent_guid method:root________ ok 413 - $firefox->search_bookmark() returns results (13) that have a type method:2 ok 414 - $firefox->search_bookmark() returns results (13) that have a guid method:toolbar_____ ok 415 - $firefox->search_bookmark() returns results (13) that have a guid method:1 ok 416 - $firefox->search_bookmark() returns results (13) that have a title method:toolbar ok 417 - $firefox->search_bookmark() returns results (13) that have a parent_guid method:root________ ok 418 - $firefox->search_bookmark() returns results (14) that have a type method:2 ok 419 - $firefox->search_bookmark() returns results (14) that have a guid method:menu________ ok 420 - $firefox->search_bookmark() returns results (14) that have a guid method:0 ok 421 - $firefox->search_bookmark() returns results (14) that have a title method:menu ok 422 - $firefox->search_bookmark() returns results (14) that have a parent_guid method:root________ ok 423 - Retrieved bookmark from firefox export as https://metacpan.org/pod/Firefox::Marionette ok 424 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette ok 425 - $bookmark->idx() is defined:0 ok 426 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 ok 427 - $bookmark->last_modified() is Thu Jun 1 09:16:13 2023 ok 428 - $bookmark->content_type() is 'text/x-moz-place':text/x-moz-place ok 429 - $bookmark->title() is 'Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org':Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 430 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 431 - $bookmark->parent_guid() is xeZJM125JQv5 ok 432 - $bookmark->guid() is 'vJn8DKZa4fHw':vJn8DKZa4fHw ok 433 - $bookmark->icon_url() is 'fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette':fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette ok 434 - $bookmark->icon() is correct:data:image/png;base64,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 ok 435 - $firefox->search_bookmark('https://metacpan.org/') produces 2 results:2 ok 436 - $firefox->delete_bookmark($bookmark) returns itself for chaining ok 437 - Bookmark for https://metacpan.org/pod/Firefox::Marionette has been deleted ok 438 - $bookmark->url() is 'https://perlmonks.org/':https://perlmonks.org/ ok 439 - $bookmark->date_added() is Sat Jun 10 02:28:01 2023 ok 440 - $bookmark->last_modified() is Sat Jun 10 02:28:15 2023 ok 441 - $bookmark->title() is 'PerlMonks - The Monastery Gates':PerlMonks - The Monastery Gates ok 442 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 443 - $bookmark->parent_guid() is unfiled_____ ok 444 - $bookmark->guid() is aaFVubVSjPVG ok 445 - $bookmark->icon_url() is not defined ok 446 - $bookmark->icon() is not defined ok 447 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a type method:1 ok 448 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a guid method:0eY38Pog9zF8 ok 449 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a url method:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 ok 450 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a title method:Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 451 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a parent_guid method:xeZJM125JQv5 ok 452 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a icon method that is correct:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGbElEQVRYhcWWTWwV1xXHf+fcO8/PNjYFTFH5MIJNJJQIDE0LwU4faRaojUQlJHaITbtglVUWjbpwF0gsk32zqCxFFUiVsijpJvIjDkppagG1RMTG1FZJRWMixd+emXtPF2/med7DJptKudLTzJt77v/8z/eFypoEzwvWd+0D3AD3YoxGB4ZUwc9B/tHQSwP7BnsvR3MNLO5B9JlKaD5dXJu4sPBoqZTbTvklCAB3jo5cJMpbIhwSs1Ww6TyGibH5mdlx0HEwwKSq/G+HT/zC0D8OJMlQIBIBBRzKUpYtCPHK6bn7t7YiUSqfGn7lqPf+Zr/6kwCx2PcoyzEH4m9Pz967biACJlXlPUnylxCNzGIKpkKLJkhMRGtOhY0s+2U3icKi+MnB4wf6vP6zz/vdqyGk0jJQSgyBZKevyWK+fu2nj+//7gY4Afho6KWBH/b3zyZOh3ILGaIJZoaIbD5j5sUlWYgL/11ZOXph4dFSaYWBCsTPj5z8eIdLzq+EbB2ROma2GWwRzKJhse68X0+z0TPz9+8owL7B3ssDSTKUWUy3Vm6GaJJZTAeSZGjfYO9lgCYNVyqfOjBy3IueXw5pAHraykWkgqWAOUCde5sixERzjUAETNsHS+XlMjMwDUSiuUb5uUlDAZy30bo6ZDPstM9XMAVxaTQC4Sc3OFbT1kbcE6slUbLuApIyqSzuAWjQjJsiDLHd6sKLGGIy8KNh198iIPpM2wlXYdz130qXiT6rWt8SYaFq/HPnK5iKYGJL/5kPKwqgEpoOBSR2uK07iZDoUFRCs/xceiHk8tl6NKzg2GFIiSkihoWaCuD+fomHqQI8XVybWMqyhUS0hsWseqBaBYlobSnLFp4urk0UyoNANNCxJ/ce5Bb/usPVHLDxnCFFFQASAAnhfQCdBH9h4dGSEK84Fby4xMxSwwIWc8OCmaVeXOJUEOKVsiNKEbXfFwavZuHXy3n6Ta9zdTNLwXKwUGIA8gPf49OQXTszf/9Ouw98r52wBPi+ZkEHwP9jGnYk4ZYY20zDCoA0aThoZXhZakXCWbf8dyn6mqYB7KUht2nG8a5afY5AaUW1xhs0o2xb5FuvcdCfVTC+pmlleF54aDsXWituL3RvISfdbq6u7guLVDdKhlMHRo4n3kZNGDJjIeTy2diTew+65bYyoHTx7f0vH6p5fUPUHY6iqzEyPTo3PQmt8JyjmbcJlKCfHDx+oC9xf/Ci5+u6SXQ9BjLix2tp+M3P//3gyVYkSuUGcvfIyHvA1T7nEymclhNZy/OHJvnVs49nPrVWDwjSUb/qv9jha7uXQxqqMTfQHa7mlvP0mzzmr47Nz8yWY7h0e3EvkLvDJ5qDPfXXF0MGFrNqaOrOeYCVLLs4Ovfgz5M0vJaWeO9v9nm/eyVk64IoogmIRzQRRFdCtt7n/W7v/c3CdW2CZdXcPTLy3mBP/fVv83TNijtEG0PUr4eQZdHwqn+a2n9q+BzNXKHVNPrVn1wNIUWk3qJcuYwAiNRXQ0j71Z+8c3TkYhnLcdBzNPPb+18+BFxdDBlAXaoYxbuIJsFsY4erJT6J70CZ1VHealllm8OnOoiKdyk7ZyEPUJZazesbfc4nWMykOv+rU7V1qfEbFkD0zTYBNQ4W/pQuqzdBWu8SC3nYbDIAou5wmXAdE7D6KxQEMyDunRoe3lVcSGytSBQ62XY+N7W15Ksriq52fKjeqKo4LRKYkPbmezdKytO++0Ky5VNiS86modVeSy/EyHROxLq92EXIsOhVwPjyx19NrypAHsPEcshMIMEstgG6LhMCyXLILI9hAuA2zVhW0ejc9ORanj+sO+etvNRUMdphlJCgYPoBgE7S8GPzM7OIvbvT1wQsYjGzYlxai3QGFnf6miD27tj8zGxRARE226tJfhXAiSZitmFYpI1jwcw2dvqkZylPb702N/2hgeg5mvk46OnZe9cX8/VrPc77PueTRFRVRBNR7XM+6XHeL+br107P3rtell7p3UsQJmn4s49nPl3JsovRYtbvkp6aOqci6kS17rwfcEnPt1l6K/mX/mozH8q0av2xz4dPnFXn3g7EV8UYNGER9AsJ4f0z8/fvFF0PthjNZXud2n9q2CfxHUTfFOLeKKQYX2L6wWtz0x9C59xor+qkusGx2tTwK7tucKy21f52q3sSTg0P7/rH/lN9FZJilSH4Pylr2D7oCD10AAAAAElFTkSuQmCC ok 453 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a icon_url method that look vaguely correct:fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 ok 454 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a keyword method that returns undefined ok 455 - $firefox->search_bookmark('https://metacpan.org/') produces 1 result:1 ok 456 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a type that is Firefox::Marionette::Bookmark::BOOKMARK()::1 ok 457 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a guid method:sTWAWWIr3NZE ok 458 - $bookmark->url() returns a URI::URL object ok 459 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a url that is 'https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web':https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web ok 460 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a title method that is 'perl 🐫 at DuckDuckGo':perl 🐫 at DuckDuckGo ok 461 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a date_added method that is Fri Jun 2 01:52:51 2023 ok 462 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a last_modified method that is Fri Jun 2 01:52:52 2023 ok 463 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a parent_guid method:VKLG70LBZK6K ok 464 - $bookmark->icon_url() returns a URI::URL object ok 465 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a icon_url method that is 'https://duckduckgo.com/favicon.ico':https://duckduckgo.com/favicon.ico ok 466 - $bookmark->icon() returns a URI::data object ok 467 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a icon method that is :data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII= ok 468 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a keyword method:🐫 ok 469 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a tag method with one of '🐫', 'ddg', 'UTF8' or 'perl':🐫 ok 470 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a tag method with one of '🐫', 'ddg', 'UTF8' or 'perl':ddg ok 471 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a tag method with one of '🐫', 'ddg', 'UTF8' or 'perl':perl ok 472 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a tag method with one of '🐫', 'ddg', 'UTF8' or 'perl':UTF8 ok 473 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a tag method with 4 tags:4 ok 474 - $firefox->search_bookmark('https://duckduckgo.com') produces 1 result:1 ok 475 - Deleting this bookmark:aaFVubVSjPVG ok 476 - Deleting this bookmark:pOsC6lI63mpm ok 477 - Deleting this bookmark:fPaOJg5lZ1AQ ok 478 - Deleting this bookmark:cXhsCQJDcPVd ok 479 - Deleting this bookmark:sTWAWWIr3NZE ok 480 - Deleting this bookmark:VKLG70LBZK6K ok 481 - Deleting this bookmark:0eY38Pog9zF8 ok 482 - Deleting this bookmark:xeZJM125JQv5 ok 483 - $firefox->import_bookmarks('/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.json') returns itself for chaining ok 484 - Deleting this bookmark:utcxPgIOG05d ok 485 - $firefox->import_bookmarks('/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.json') returns itself for chaining ok 486 - Bookmark 0 is Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 487 - Bookmark 1 is PerlMonks - The Monastery Gates ok 488 - Bookmark 2 is PAUSE: The CPAN back stage entrance ok 489 - Bookmark 3 is GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol ok 490 - Bookmark 4 is zCZX0_5lBXTS with type 3 with parent menu________ ok 491 - Bookmark 5 is perl 🐫 at DuckDuckGo ok 492 - Bookmark 6 is Searches ok 493 - Bookmark 7 is Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 494 - Bookmark 8 is CPAN ok 495 - Bookmark 9 is mobile ok 496 - Bookmark 10 is unfiled ok 497 - Bookmark 11 is tags ok 498 - Bookmark 12 is toolbar ok 499 - Bookmark 13 is menu ok 500 - Same number of bookmarks after importing the same json file:14 == 14 ok 501 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette ok 502 - $bookmark->idx() is defined:1 ok 503 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 ok 504 - $bookmark->last_modified() is Thu Jun 1 09:16:13 2023 ok 505 - $bookmark->content_type() is 'text/x-moz-place':text/x-moz-place ok 506 - $bookmark->title() is 'Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org':Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 507 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 508 - $bookmark->parent_guid() is ExAzkxs5efkR ok 509 - $bookmark->guid() is 'utcxPgIOG05d':utcxPgIOG05d ok 510 - $bookmark->icon_url() is 'fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette':fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette ok 511 - $bookmark->icon() is correct:data:image/png;base64,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 ok 512 - $firefox->import_bookmarks('/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.html') returns itself for chaining ok 513 - Bookmark 0 is Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 514 - Bookmark 1 is PerlMonks - The Monastery Gates ok 515 - Bookmark 2 is PAUSE: The CPAN back stage entrance ok 516 - Bookmark 3 is GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol ok 517 - Bookmark 4 is zCZX0_5lBXTS with type 3 with parent menu________ ok 518 - Bookmark 5 is perl 🐫 at DuckDuckGo ok 519 - Bookmark 6 is Searches ok 520 - Bookmark 7 is Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 521 - Bookmark 8 is CPAN ok 522 - Bookmark 9 is mobile ok 523 - Bookmark 10 is unfiled ok 524 - Bookmark 11 is tags ok 525 - Bookmark 12 is toolbar ok 526 - Bookmark 13 is menu ok 527 - Same number of bookmarks after importing the same json file:14 == 14 ok 528 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette ok 529 - $bookmark->idx() is defined:1 ok 530 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 ok 531 - $bookmark->last_modified() is Thu Jun 1 09:16:13 2023 ok 532 - $bookmark->content_type() is 'text/x-moz-place':text/x-moz-place ok 533 - $bookmark->title() is 'Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org':Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 534 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 535 - $bookmark->parent_guid() is ExAzkxs5efkR ok 536 - $bookmark->guid() is 'utcxPgIOG05d':utcxPgIOG05d ok 537 - $bookmark->icon_url() is 'fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette':fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette ok 538 - $bookmark->icon() is correct:data:image/png;base64,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 ok 539 - $firefox->import_bookmarks('/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.html') returns itself for chaining ok 540 - Bookmark 0 is Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 541 - Bookmark 1 is PerlMonks - The Monastery Gates ok 542 - Bookmark 2 is PAUSE: The CPAN back stage entrance ok 543 - Bookmark 3 is GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol ok 544 - Bookmark 4 is zCZX0_5lBXTS with type 3 with parent menu________ ok 545 - Bookmark 5 is perl 🐫 at DuckDuckGo ok 546 - Bookmark 6 is Searches ok 547 - Bookmark 7 is Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 548 - Bookmark 8 is CPAN ok 549 - Bookmark 9 is mobile ok 550 - Bookmark 10 is unfiled ok 551 - Bookmark 11 is tags ok 552 - Bookmark 12 is toolbar ok 553 - Bookmark 13 is menu ok 554 - Same number of bookmarks after importing the same json file:14 == 14 ok 555 - $firefox->search_bookmark() returns results (1) that have a type method:1 ok 556 - $firefox->search_bookmark() returns results (1) that have a guid method:utcxPgIOG05d ok 557 - $firefox->search_bookmark() returns results (1) that have a url method:https://metacpan.org/pod/Firefox::Marionette ok 558 - $firefox->search_bookmark() returns results (1) that have a content_type method:text/x-moz-place ok 559 - $firefox->search_bookmark() returns results (1) that have a title method:Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 560 - $firefox->search_bookmark() returns results (1) that have a icon_url method:fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette ok 561 - $firefox->search_bookmark() returns results (1) that have a icon method that is :data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGbElEQVRYhcWWTWwV1xXHf+fcO8/PNjYFTFH5MIJNJJQIDE0LwU4faRaojUQlJHaITbtglVUWjbpwF0gsk32zqCxFFUiVsijpJvIjDkppagG1RMTG1FZJRWMixd+emXtPF2/med7DJptKudLTzJt77v/8z/eFypoEzwvWd+0D3AD3YoxGB4ZUwc9B/tHQSwP7BnsvR3MNLO5B9JlKaD5dXJu4sPBoqZTbTvklCAB3jo5cJMpbIhwSs1Ww6TyGibH5mdlx0HEwwKSq/G+HT/zC0D8OJMlQIBIBBRzKUpYtCPHK6bn7t7YiUSqfGn7lqPf+Zr/6kwCx2PcoyzEH4m9Pz967biACJlXlPUnylxCNzGIKpkKLJkhMRGtOhY0s+2U3icKi+MnB4wf6vP6zz/vdqyGk0jJQSgyBZKevyWK+fu2nj+//7gY4Afho6KWBH/b3zyZOh3ILGaIJZoaIbD5j5sUlWYgL/11ZOXph4dFSaYWBCsTPj5z8eIdLzq+EbB2ROma2GWwRzKJhse68X0+z0TPz9+8owL7B3ssDSTKUWUy3Vm6GaJJZTAeSZGjfYO9lgCYNVyqfOjBy3IueXw5pAHraykWkgqWAOUCde5sixERzjUAETNsHS+XlMjMwDUSiuUb5uUlDAZy30bo6ZDPstM9XMAVxaTQC4Sc3OFbT1kbcE6slUbLuApIyqSzuAWjQjJsiDLHd6sKLGGIy8KNh198iIPpM2wlXYdz130qXiT6rWt8SYaFq/HPnK5iKYGJL/5kPKwqgEpoOBSR2uK07iZDoUFRCs/xceiHk8tl6NKzg2GFIiSkihoWaCuD+fomHqQI8XVybWMqyhUS0hsWseqBaBYlobSnLFp4urk0UyoNANNCxJ/ce5Bb/usPVHLDxnCFFFQASAAnhfQCdBH9h4dGSEK84Fby4xMxSwwIWc8OCmaVeXOJUEOKVsiNKEbXfFwavZuHXy3n6Ta9zdTNLwXKwUGIA8gPf49OQXTszf/9Ouw98r52wBPi+ZkEHwP9jGnYk4ZYY20zDCoA0aThoZXhZakXCWbf8dyn6mqYB7KUht2nG8a5afY5AaUW1xhs0o2xb5FuvcdCfVTC+pmlleF54aDsXWituL3RvISfdbq6u7guLVDdKhlMHRo4n3kZNGDJjIeTy2diTew+65bYyoHTx7f0vH6p5fUPUHY6iqzEyPTo3PQmt8JyjmbcJlKCfHDx+oC9xf/Ci5+u6SXQ9BjLix2tp+M3P//3gyVYkSuUGcvfIyHvA1T7nEymclhNZy/OHJvnVs49nPrVWDwjSUb/qv9jha7uXQxqqMTfQHa7mlvP0mzzmr47Nz8yWY7h0e3EvkLvDJ5qDPfXXF0MGFrNqaOrOeYCVLLs4Ovfgz5M0vJaWeO9v9nm/eyVk64IoogmIRzQRRFdCtt7n/W7v/c3CdW2CZdXcPTLy3mBP/fVv83TNijtEG0PUr4eQZdHwqn+a2n9q+BzNXKHVNPrVn1wNIUWk3qJcuYwAiNRXQ0j71Z+8c3TkYhnLcdBzNPPb+18+BFxdDBlAXaoYxbuIJsFsY4erJT6J70CZ1VHealllm8OnOoiKdyk7ZyEPUJZazesbfc4nWMykOv+rU7V1qfEbFkD0zTYBNQ4W/pQuqzdBWu8SC3nYbDIAou5wmXAdE7D6KxQEMyDunRoe3lVcSGytSBQ62XY+N7W15Ksriq52fKjeqKo4LRKYkPbmezdKytO++0Ky5VNiS86modVeSy/EyHROxLq92EXIsOhVwPjyx19NrypAHsPEcshMIMEstgG6LhMCyXLILI9hAuA2zVhW0ejc9ORanj+sO+etvNRUMdphlJCgYPoBgE7S8GPzM7OIvbvT1wQsYjGzYlxai3QGFnf6miD27tj8zGxRARE226tJfhXAiSZitmFYpI1jwcw2dvqkZylPb702N/2hgeg5mvk46OnZe9cX8/VrPc77PueTRFRVRBNR7XM+6XHeL+br107P3rtell7p3UsQJmn4s49nPl3JsovRYtbvkp6aOqci6kS17rwfcEnPt1l6K/mX/mozH8q0av2xz4dPnFXn3g7EV8UYNGER9AsJ4f0z8/fvFF0PthjNZXud2n9q2CfxHUTfFOLeKKQYX2L6wWtz0x9C59xor+qkusGx2tTwK7tucKy21f52q3sSTg0P7/rH/lN9FZJilSH4Pylr2D7oCD10AAAAAElFTkSuQmCC ok 562 - $firefox->search_bookmark() returns results (1) that have a parent_guid method:ExAzkxs5efkR ok 563 - Deleting this bookmark ok 564 - $firefox->search_bookmark() returns results (2) that have a type method:1 ok 565 - $firefox->search_bookmark() returns results (2) that have a guid method:wiTkT9Zqb99b ok 566 - $firefox->search_bookmark() returns results (2) that have a url method:https://perlmonks.org/ ok 567 - $firefox->search_bookmark() returns results (2) that have a content_type method:text/x-moz-place ok 568 - $firefox->search_bookmark() returns results (2) that have a title method:PerlMonks - The Monastery Gates ok 569 - $firefox->search_bookmark() returns results (2) that have a parent_guid method:unfiled_____ ok 570 - Deleting this bookmark ok 571 - $firefox->search_bookmark() returns results (3) that have a type method:1 ok 572 - $firefox->search_bookmark() returns results (3) that have a guid method:UjOiVVvuVdng ok 573 - $firefox->search_bookmark() returns results (3) that have a url method:https://pause.perl.org/pause/query ok 574 - $firefox->search_bookmark() returns results (3) that have a content_type method:text/x-moz-place ok 575 - $firefox->search_bookmark() returns results (3) that have a title method:PAUSE: The CPAN back stage entrance ok 576 - $firefox->search_bookmark() returns results (3) that have a parent_guid method:toolbar_____ ok 577 - Deleting this bookmark ok 578 - $firefox->search_bookmark() returns results (4) that have a type method:1 ok 579 - $firefox->search_bookmark() returns results (4) that have a guid method:JTBNJdLPdYhk ok 580 - $firefox->search_bookmark() returns results (4) that have a url method:https://github.com/david-dick/firefox-marionette ok 581 - $firefox->search_bookmark() returns results (4) that have a content_type method:text/x-moz-place ok 582 - $firefox->search_bookmark() returns results (4) that have a title method:GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol ok 583 - $firefox->search_bookmark() returns results (4) that have a icon_url method:fake-favicon-uri:https://github.com/david-dick/firefox-marionette ok 584 - $firefox->search_bookmark() returns results (4) that have a icon method that is :data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC ok 585 - $firefox->search_bookmark() returns results (4) that have a parent_guid method:menu________ ok 586 - Deleting this bookmark ok 587 - $firefox->search_bookmark() returns results (5) that have a type method:3 ok 588 - $firefox->search_bookmark() returns results (5) that have a guid method:zCZX0_5lBXTS ok 589 - $firefox->search_bookmark() returns results (5) that have a content_type method:text/x-moz-place-separator ok 590 - $firefox->search_bookmark() returns results (5) that have a parent_guid method:menu________ ok 591 - Deleting this bookmark ok 592 - $firefox->search_bookmark() returns results (6) that have a type method:1 ok 593 - $firefox->search_bookmark() returns results (6) that have a guid method:bZbedzEdrOnQ ok 594 - $firefox->search_bookmark() returns results (6) that have a url method:https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web ok 595 - $firefox->search_bookmark() returns results (6) that have a content_type method:text/x-moz-place ok 596 - $firefox->search_bookmark() returns results (6) that have a title method:perl 🐫 at DuckDuckGo ok 597 - $firefox->search_bookmark() returns results (6) that have a icon_url method:https://duckduckgo.com/favicon.ico ok 598 - $firefox->search_bookmark() returns results (6) that have a icon method that is :data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII= ok 599 - $firefox->search_bookmark() returns results (6) that have a parent_guid method:eZlh-ztIYBne ok 600 - Deleting this bookmark ok 601 - $firefox->search_bookmark() returns results (7) that have a type method:2 ok 602 - $firefox->search_bookmark() returns results (7) that have a guid method:eZlh-ztIYBne ok 603 - $firefox->search_bookmark() returns results (7) that have a content_type method:text/x-moz-place-container ok 604 - $firefox->search_bookmark() returns results (7) that have a title method:Searches ok 605 - $firefox->search_bookmark() returns results (7) that have a parent_guid method:menu________ ok 606 - Deleting this bookmark ok 607 - $firefox->search_bookmark() returns results (8) that have a type method:1 ok 608 - $firefox->search_bookmark() returns results (8) that have a guid method:XiZLcg8n_B4A ok 609 - $firefox->search_bookmark() returns results (8) that have a url method:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 ok 610 - $firefox->search_bookmark() returns results (8) that have a content_type method:text/x-moz-place ok 611 - $firefox->search_bookmark() returns results (8) that have a title method:Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 612 - $firefox->search_bookmark() returns results (8) that have a icon_url method:fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 ok 613 - $firefox->search_bookmark() returns results (8) that have a icon method that is :data:image/png;base64,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 ok 614 - $firefox->search_bookmark() returns results (8) that have a parent_guid method:ExAzkxs5efkR ok 615 - Deleting this bookmark ok 616 - $firefox->search_bookmark() returns results (9) that have a type method:2 ok 617 - $firefox->search_bookmark() returns results (9) that have a guid method:ExAzkxs5efkR ok 618 - $firefox->search_bookmark() returns results (9) that have a content_type method:text/x-moz-place-container ok 619 - $firefox->search_bookmark() returns results (9) that have a title method:CPAN ok 620 - $firefox->search_bookmark() returns results (9) that have a parent_guid method:menu________ ok 621 - Deleting this bookmark ok 622 - $firefox->search_bookmark() returns results (10) that have a type method:2 ok 623 - $firefox->search_bookmark() returns results (10) that have a guid method:mobile______ ok 624 - $firefox->search_bookmark() returns results (10) that have a content_type method:text/x-moz-place-container ok 625 - $firefox->search_bookmark() returns results (10) that have a title method:mobile ok 626 - $firefox->search_bookmark() returns results (10) that have a parent_guid method:root________ ok 627 - $firefox->search_bookmark() returns results (11) that have a type method:2 ok 628 - $firefox->search_bookmark() returns results (11) that have a guid method:unfiled_____ ok 629 - $firefox->search_bookmark() returns results (11) that have a content_type method:text/x-moz-place-container ok 630 - $firefox->search_bookmark() returns results (11) that have a title method:unfiled ok 631 - $firefox->search_bookmark() returns results (11) that have a parent_guid method:root________ ok 632 - $firefox->search_bookmark() returns results (12) that have a type method:2 ok 633 - $firefox->search_bookmark() returns results (12) that have a guid method:tags________ ok 634 - $firefox->search_bookmark() returns results (12) that have a content_type method:text/x-moz-place-container ok 635 - $firefox->search_bookmark() returns results (12) that have a title method:tags ok 636 - $firefox->search_bookmark() returns results (12) that have a parent_guid method:root________ ok 637 - $firefox->search_bookmark() returns results (13) that have a type method:2 ok 638 - $firefox->search_bookmark() returns results (13) that have a guid method:toolbar_____ ok 639 - $firefox->search_bookmark() returns results (13) that have a content_type method:text/x-moz-place-container ok 640 - $firefox->search_bookmark() returns results (13) that have a title method:toolbar ok 641 - $firefox->search_bookmark() returns results (13) that have a parent_guid method:root________ ok 642 - $firefox->search_bookmark() returns results (14) that have a type method:2 ok 643 - $firefox->search_bookmark() returns results (14) that have a guid method:menu________ ok 644 - $firefox->search_bookmark() returns results (14) that have a content_type method:text/x-moz-place-container ok 645 - $firefox->search_bookmark() returns results (14) that have a title method:menu ok 646 - $firefox->search_bookmark() returns results (14) that have a parent_guid method:root________ ok 647 - $firefox->search_bookmark('https://metacpan.org/') produces more than 7 results:14 ok 648 - Firefox::Marionette::Bookmark->new() produces a new bookmark ok 649 - Firefox::Marionette::Bookmark->new()->url() returns a URI::URL object ok 650 - Firefox::Marionette::Bookmark->new()->url() returns 'https://metacpan.org/' as a string ok 651 - Firefox::Marionette::Bookmark->new()->icon_url() returns a URI::URL object ok 652 - Firefox::Marionette::Bookmark->new()->icon_url() returns 'fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette' as a string ok 653 - Firefox::Marionette::Bookmark->new()->icon() returns a URI::data object ok 654 - Firefox::Marionette::Bookmark->new()->icon() returns 'data:image/png;base64,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' as a string ok 655 - Firefox::Marionette::Bookmark->new() produces a new bookmark ok 656 - Firefox::Marionette::Bookmark->new()->title() returns 'Meta Cpan for the win!' as a string ok 657 - Firefox::Marionette::Bookmark->new()->url() returns a URI::URL object ok 658 - Firefox::Marionette::Bookmark->new()->url() returns 'https://metacpan.org/' as a string ok 659 - Firefox::Marionette::Bookmark->new()->icon_url() returns a URI::URL object ok 660 - Firefox::Marionette::Bookmark->new()->icon_url() returns 'fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette' as a string ok 661 - Firefox::Marionette::Bookmark->new()->icon() returns a URI::data object ok 662 - Firefox::Marionette::Bookmark->new()->icon() returns 'data:image/png;base64,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' as a string ok 663 - Firefox::Marionette::Bookmark->new()->type() returns a bookmark if a url and title is supplied ok 664 - Firefox::Marionette::Bookmark->new()->content_type() returns 'text/x-moz-place' if a url and title is supplied ok 665 - Firefox::Marionette::Bookmark->new()->title() returns the supplied title ok 666 - Firefox::Marionette::Bookmark->new()->type() returns a folder if a title is supplied, with no url ok 667 - Firefox::Marionette::Bookmark->new()->content_type() returns 'text/x-moz-place-container' if a title is supplied, with no url ok 668 - Firefox::Marionette::Bookmark->new() produces a new bookmark with an unknown type of 4 ok 669 - If a bookmark does not have a known type, it does not have a content type ok 670 - Bookmark with bad parameters can be turned into JSON:{"parentGuid":"menu________","type":4} ok 671 - Exception correctly thrown when trying to import a truncated bookmarks file of /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/t/data/bookmarks_truncated.html:Unrecognised format for bookmark import at t/01-marionette.t line 2446 ok 672 - There is no defined type if a bookmark is created with no parameters ok 673 - There is no defined content_type if a bookmark is created with no parameters ok 674 - Firefox::Marionette::Bookmark::BOOKMARK() == BOOKMARK() after Firefox::Marionette::Bookmark->import(:all) ok 675 - Firefox::Marionette::Bookmark::FOLDER() == FOLDER() after Firefox::Marionette::Bookmark->import(:all) ok 676 - Firefox::Marionette::Bookmark::SEPARATOR() == SEPARATOR() after Firefox::Marionette::Bookmark->import(:all) ok 677 - Firefox::Marionette::Bookmark::MENU() eq MENU() after Firefox::Marionette::Bookmark->import(:all) ok 678 - Firefox::Marionette::Bookmark::ROOT() eq ROOT() after Firefox::Marionette::Bookmark->import(:all) ok 679 - Firefox::Marionette::Bookmark::TOOLBAR() eq TOOLBAR() after Firefox::Marionette::Bookmark->import(:all) ok 680 - Firefox::Marionette::Bookmark::TAGS() eq TAGS() after Firefox::Marionette::Bookmark->import(:all) ok 681 - Firefox::Marionette::Bookmark::UNFILED() eq UNFILED() after Firefox::Marionette::Bookmark->import(:all) ok 682 - Retrieved browser.history.maxStateObjectSize as a number '16777216' ok 683 - $firefox->set_pref correctly returns itself for chaining and set 'browser.history.maxStateObjectSize' to '4321' ok 684 - Retrieved browser.history.maxStateObjectSize which was equal to the previous setting of '4321' ok 685 - $firefox->set_pref correctly returns itself for chaining and set 'browser.history.maxStateObjectSize' to the original '16777216' ok 686 - Retrieved browser.history.maxStateObjectSize as a number '16777216' which was equal to the original setting of '16777216' ok 687 - Retrieved browser.display.use_system_colors as a boolean '0', and set it as true ok 688 - $firefox->set_pref correctly returns itself for chaining and set 'browser.display.use_system_colors' to 'true' ok 689 - Retrieved browser.display.use_system_colors as true '1' ok 690 - $firefox->set_pref correctly returns itself for chaining and set 'browser.display.use_system_colors' to 'false' ok 691 - Retrieved browser.display.use_system_colors as false '0' ok 692 - $firefox->clear_pref correctly returns itself for chaining and cleared 'browser.display.use_system_colors' ok 693 - Retrieved original browser.display.use_system_colors as a boolean '0' ok 694 - Returned undef when querying for a non-existant key of 'browser.no_such_key' ok 695 - $firefox->set_pref correctly returns itself for chaining and set 'browser.no_such_key' to 'Can't be real:2748412' ok 696 - Returned browser.no_such_key as a string 'Can't be real:2748412' ok 697 - Retrieved browser.active_color as a string '\#EE0000' ok 698 - Retrieved browser.active_color as a string '\#EE0000' which was equal to the original setting of '\#EE0000' ok 699 - $firefox->set_pref correctly returns itself for chaining and set 'browser.active_color' to '\#FFFFFF' ok 700 - Retrieved browser.active_color as a string '\#FFFFFF' which was equal to the new setting of '\#FFFFFF' ok 701 - $firefox->clear_pref correctly returns itself for chaining and cleared 'browser.active_color' ok 702 - Retrieved browser.active_color as a string '\#EE0000' which was equal to the original string of '\#EE0000' ok 703 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object ok 704 # skip Skipping network tests ok 705 # skip Skipping network tests [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt ok 706 - $firefox->root_directory() is /tmp/firefox_marionette_local_UsgSlFnap7a ok 707 - Firefox has started in Marionette mode with definable capabilities set to known values ok 708 - Added a new bookmark to firefox ok 709 - Retrieved the correct bookmark ok 710 - Found EH1HWJDJ2M3D as the guid of the new bookmark ok 711 - Total number of bookmarks found when searching by url is 1:1 ok 712 - Retrieved the correct bookmark ok 713 - Total number of bookmarks found when searching by (url => 'https://metacpan.org/') is 1:1 ok 714 - Retrieved the correct bookmark ok 715 - Total number of bookmarks found when searching by (url => URI->new('https://metacpan.org/')) is 1:1 ok 716 - Retrieved the correct bookmark ok 717 - Total number of bookmarks found when searching by title is 1:1 ok 718 - Retrieved the correct bookmark ok 719 - Total number of bookmarks found when searching by (title => 'This is MetaCPAN!') is 1:1 ok 720 - $firefox->logins() has no entries:0 ok 721 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object ok 722 - $capabilities->accept_insecure_certs() is false [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt ok 723 - $firefox->root_directory() is /tmp/firefox_marionette_local_JaC7J6JmxfP ok 724 # skip ok 725 # skip ok 726 # skip ok 727 # skip ok 728 # skip ok 729 # skip ok 730 # skip ok 731 # skip ok 732 # skip ok 733 # skip ok 734 # skip ok 735 # skip ok 736 # skip ok 737 # skip ok 738 # skip ok 739 # skip ok 740 # skip ok 741 # skip ok 742 # skip ok 743 # skip ok 744 # skip ok 745 # skip ok 746 # skip ok 747 # skip ok 748 # skip ok 749 # skip ok 750 # skip ok 751 # skip ok 752 # skip ok 753 # skip ok 754 # skip ok 755 # skip ok 756 # skip ok 757 # skip ok 758 # skip ok 759 # skip ok 760 # skip ok 761 # skip ok 762 # skip ok 763 # skip ok 764 # skip ok 765 # skip ok 766 # skip ok 767 # skip ok 768 # skip ok 769 # skip ok 770 # skip ok 771 # skip ok 772 # skip ok 773 # skip ok 774 # skip ok 775 # skip ok 776 # skip ok 777 # skip ok 778 # skip ok 779 # skip ok 780 # skip ok 781 # skip ok 782 # skip ok 783 # skip ok 784 # skip ok 785 # skip ok 786 # skip ok 787 # skip ok 788 # skip ok 789 # skip ok 790 # skip ok 791 # skip ok 792 # skip ok 793 # skip ok 794 # skip ok 795 # skip ok 796 # skip ok 797 # skip ok 798 # skip ok 799 # skip ok 800 # skip ok 801 # skip ok 802 # skip ok 803 # skip ok 804 # skip ok 805 # skip ok 806 # skip ok 807 # skip ok 808 # skip ok 809 # skip ok 810 # skip ok 811 # skip ok 812 # skip ok 813 # skip ok 814 # skip ok 815 # skip ok 816 # skip ok 817 # skip ok 818 # skip ok 819 # skip ok 820 # skip ok 821 # skip ok 822 # skip ok 823 # skip ok 824 # skip ok 825 # skip ok 826 # skip ok 827 # skip ok 828 # skip ok 829 # skip ok 830 # skip ok 831 # skip ok 832 # skip ok 833 # skip ok 834 # skip ok 835 # skip ok 836 # skip ok 837 # skip ok 838 # skip ok 839 # skip ok 840 # skip ok 841 # skip ok 842 # skip ok 843 # skip ok 844 # skip ok 845 # skip ok 846 # skip ok 847 # skip ok 848 # skip ok 849 # skip ok 850 # skip ok 851 # skip ok 852 # skip ok 853 # skip ok 854 # skip ok 855 # skip ok 856 # skip ok 857 # skip ok 858 # skip ok 859 # skip ok 860 # skip ok 861 # skip ok 862 # skip ok 863 # skip ok 864 # skip ok 865 # skip ok 866 # skip ok 867 # skip ok 868 # skip ok 869 # skip ok 870 # skip ok 871 # skip ok 872 # skip ok 873 # skip ok 874 # skip ok 875 # skip ok 876 # skip ok 877 # skip ok 878 # skip ok 879 # skip ok 880 # skip ok 881 # skip ok 882 # skip ok 883 # skip ok 884 # skip ok 885 # skip ok 886 # skip ok 887 # skip ok 888 # skip ok 889 # skip ok 890 # skip ok 891 # skip ok 892 # skip ok 893 # skip ok 894 # skip ok 895 # skip ok 896 # skip ok 897 # skip ok 898 # skip ok 899 # skip ok 900 # skip ok 901 # skip ok 902 # skip ok 903 # skip ok 904 # skip ok 905 # skip ok 906 # skip ok 907 # skip ok 908 # skip ok 909 # skip ok 910 # skip ok 911 # skip ok 912 # skip ok 913 # skip ok 914 # skip ok 915 # skip ok 916 # skip ok 917 # skip ok 918 # skip ok 919 # skip ok 920 # skip ok 921 # skip ok 922 # skip ok 923 # skip ok 924 # skip ok 925 # skip ok 926 # skip ok 927 # skip ok 928 # skip ok 929 # skip ok 930 # skip ok 931 # skip ok 932 # skip ok 933 # skip ok 934 # skip ok 935 # skip ok 936 # skip ok 937 # skip ok 938 # skip ok 939 # skip ok 940 # skip ok 941 # skip ok 942 # skip ok 943 # skip ok 944 # skip ok 945 # skip ok 946 # skip ok 947 # skip ok 948 # skip ok 949 # skip ok 950 # skip ok 951 # skip ok 952 # skip ok 953 # skip ok 954 # skip ok 955 # skip ok 956 # skip ok 957 # skip ok 958 # skip ok 959 # skip ok 960 # skip ok 961 # skip ok 962 # skip ok 963 # skip ok 964 # skip ok 965 # skip ok 966 # skip ok 967 # skip ok 968 # skip ok 969 # skip ok 970 # skip [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt ok 971 - $firefox->root_directory() is /tmp/firefox_marionette_local_ZyxTbYzPJKX ok 972 - Firefox has started in Marionette mode with visible set to 0 ok 973 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object ok 974 - $capabilities->moz_headless() is set to true ok 975 - $firefox->capabilities()->timeouts()->implicit() correctly reflects the implicit shortcut timeout ok 976 - Successfully installed an extension:0cccff6d2aa11cc875e1c8b66f0652bd0708b5c9@temporary-addon ok 977 - Extension is proved to be running correctly: '5px solid red' vs '5px solid red' ok 978 - Successfully uninstalled an extension ok 979 - $geo5->latitude() has changed after a call to $firefox->geo(latitude => -37.123, longitude => 144.456):-37.123 ok 980 - $geo5->longitude() has changed after a call to $firefox->geo(latitude => -37.123, longitude => 144.456):144.456 ok 981 - Correctly retrieved JSON document ok 982 - Correctly parsed JSON document ok 983 - Correctly parsed UTF-8 JSON field ok 984 - Correctly retrieved TXT document ok 985 - Correctly downloaded TXT document without timeout ok 986 - Correctly downloaded TXT document with explicit timeout ok 987 - Process 2757189 no longer exists:No such process ok 988 - $firefox->alert_text() correctly detects alert text ok 989 - $firefox->dismiss_alert() dismisses alert box ok 990 - Started async script containing a prompt ok 991 - $firefox->send_alert_text() sends alert text: ok 992 - $firefox->accept_dialog() accepts the dialog box: ok 993 - Firefox has closed with an exit status of 0:0 ok 994 # skip Skipping b/c proxy seems to cause hangs ok 995 # skip Skipping b/c proxy seems to cause hangs ok 996 # skip Skipping b/c proxy seems to cause hangs ok 997 # skip Skipping b/c proxy seems to cause hangs ok 998 # skip Skipping b/c proxy seems to cause hangs ok 999 # skip Skipping b/c proxy seems to cause hangs ok 1000 # skip Skipping b/c proxy seems to cause hangs ok 1001 # skip Skipping b/c proxy seems to cause hangs ok 1002 # skip Skipping b/c proxy seems to cause hangs ok 1003 # skip Skipping b/c proxy seems to cause hangs ok 1004 # skip Skipping b/c proxy seems to cause hangs ok 1005 # skip Skipping b/c proxy seems to cause hangs ok 1006 # skip Skipping b/c proxy seems to cause hangs ok 1007 # skip Skipping b/c proxy seems to cause hangs ok 1008 # skip Skipping b/c proxy seems to cause hangs ok 1009 # skip Skipping b/c proxy seems to cause hangs ok 1010 # skip Skipping b/c proxy seems to cause hangs ok 1011 # skip Skipping b/c proxy seems to cause hangs ok 1012 # skip Skipping b/c proxy seems to cause hangs ok 1013 # skip Skipping b/c proxy seems to cause hangs ok 1014 # skip Skipping b/c proxy seems to cause hangs ok 1015 # skip Skipping b/c proxy seems to cause hangs ok 1016 # skip Skipping b/c proxy seems to cause hangs ok 1017 # skip Skipping b/c proxy seems to cause hangs ok 1018 # skip Skipping b/c proxy seems to cause hangs ok 1019 # skip Skipping b/c proxy seems to cause hangs ok 1020 # skip Skipping b/c proxy seems to cause hangs ok 1021 # skip Skipping b/c proxy seems to cause hangs ok 1022 # skip Skipping b/c proxy seems to cause hangs ok 1023 # skip Skipping b/c proxy seems to cause hangs ok 1024 # skip Skipping b/c proxy seems to cause hangs ok 1025 # skip Skipping b/c proxy seems to cause hangs ok 1026 # skip Skipping b/c proxy seems to cause hangs ok 1027 # skip Skipping b/c proxy seems to cause hangs ok 1028 # skip Skipping b/c proxy seems to cause hangs ok 1029 # skip Skipping b/c proxy seems to cause hangs ok 1030 # skip Skipping b/c proxy seems to cause hangs ok 1031 # skip Skipping b/c proxy seems to cause hangs ok 1032 # skip Skipping b/c proxy seems to cause hangs ok 1033 # skip Skipping b/c proxy seems to cause hangs ok 1034 # skip Skipping b/c proxy seems to cause hangs ok 1035 # skip Skipping b/c proxy seems to cause hangs ok 1036 # skip Skipping b/c proxy seems to cause hangs ok 1037 # skip Skipping b/c proxy seems to cause hangs ok 1038 # skip Skipping b/c proxy seems to cause hangs ok 1039 # skip Skipping b/c proxy seems to cause hangs ok 1040 # skip Skipping b/c proxy seems to cause hangs ok 1041 # skip Skipping b/c proxy seems to cause hangs ok 1042 # skip Skipping b/c proxy seems to cause hangs ok 1043 # skip Skipping b/c proxy seems to cause hangs ok 1044 # skip Skipping b/c proxy seems to cause hangs ok 1045 # skip Skipping b/c proxy seems to cause hangs ok 1046 # skip Skipping b/c proxy seems to cause hangs ok 1047 # skip Skipping b/c proxy seems to cause hangs ok 1048 # skip Skipping b/c proxy seems to cause hangs ok 1049 # skip Skipping b/c proxy seems to cause hangs ok 1050 # skip Skipping b/c proxy seems to cause hangs ok 1051 # skip Skipping b/c proxy seems to cause hangs [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt ok 1052 - $firefox->root_directory() is /tmp/firefox_marionette_local_NUqp2uQng0q ok 1053 - $firefox->content() is called to prove we are okay ok 1054 - Unable to move to chrome mode when system_access is turned off:unsupported operation: System access is required to switch to chrome scope. Start Firefox with "-remote-allow-system-access" to enable it. at t/01-marionette.t line 5416 ok 1055 - Firefox has closed with an exit status of 0:0 ok 1056 - Firefox::Marionette doesn't alter the exit code of the parent process if it isn't closed cleanly ok 1057 - Firefox::Marionette doesn't alter the exit code of the parent process if it is 'undefed' ok 1058 - Specified profile names work ok 1059 - At least one firefox start worked ok 1060 - File::Temp::newdir is redefined to fail: ok 1061 - When File::Temp::newdir is forced to fail, a Firefox::Marionette::Exception is thrown:Failed to create temporary directory:Permission denied at t/01-marionette.t line 5472 1..1061 ok # Running taint checks with PATH set to /usr/bin:/bin:/usr/local/bin ** firefox --version ** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_gLHSk39K0r6/profile --no-remote --new-instance [2759182] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] << 760:[1,1,null,{"sessionId":"a96d89f8-cb99-49be-9125-c652d0d45fcb","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.16.5+deb14-amd64","moz:processID":2759182,"moz:profile":"/tmp/firefox_marionette_local_gLHSk39K0r6/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 179:[0,2,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] << 66:[1,2,null,{"value":"Yw2VS-VV3sp_jb5hzj_tS_TDorZrwsqTO8Xpfu1S8WQ"}] >> 50:[0,3,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 60:[1,3,null,{"cause":"shutdown","forced":false,"in_app":true}] t/02-taint.t .......... [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt ok 1 - Firefox launched okay under taint ok 2 - Firefox exited okay under taint 1..2 ok t/03-close.t .......... skipped: Author tests not required for installation t/03-closedir.t ....... skipped: Author tests not required for installation t/03-fork.t ........... skipped: Author tests not required for installation t/03-mkdir.t .......... skipped: Author tests not required for installation t/03-opendir.t ........ skipped: Author tests not required for installation t/03-read.t ........... skipped: Author tests not required for installation t/03-seek.t ........... skipped: Author tests not required for installation t/03-stat.t ........... skipped: Author tests not required for installation t/03-sysopen.t ........ skipped: Author tests not required for installation t/04-botd.t ........... skipped: Author tests not required for installation t/04-browserfeatcl.t .. skipped: Author tests not required for installation t/04-fingerprint.t .... skipped: Author tests not required for installation t/04-proxy.t .......... skipped: Author tests not required for installation t/04-timezone.t ....... skipped: Author tests not required for installation t/04-uploads.t ........ skipped: No upload tests except when RELEASE_TESTING is set t/04-webauthn.t ....... skipped: Author tests not required for installation t/manifest.t .......... skipped: Author tests not required for installation t/pod-coverage.t ...... skipped: Test::Pod::Coverage 1.04 required for testing POD coverage t/pod.t ............... skipped: Test::Pod 1.41 required for testing POD All tests successful. Test Summary Report ------------------- t/01-marionette.t (Wstat: 0 Tests: 1061 Failed: 0) TODO passed: 55 Files=22, Tests=1064, 61 wallclock secs ( 0.20 usr 0.11 sys + 44.25 cusr 10.70 csys = 55.26 CPU) Result: PASS make[2]: Leaving directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68' make[1]: Leaving directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68' create-stamp debian/debhelper-build-stamp dh_prep debian/rules override_dh_auto_install make[1]: Entering directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68' dh_auto_install make -j2 install DESTDIR=/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl AM_UPDATE_INFO_DIR=no PREFIX=/usr make[2]: Entering directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68' Manifying 4 pod documents Manifying 27 pod documents Manifying 12 pod documents Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Cache.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Element.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Link.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/ShadowRoot.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Cookie.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/WebFrame.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/DNS.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Response.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Login.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Keys.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/GeoLocation.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Profile.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Display.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Timeouts.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/WebWindow.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/LocalObject.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Bookmark.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Proxy.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Certificate.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/UpdateStatus.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Capabilities.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Image.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Buttons.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/WebAuthn/Authenticator.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/WebAuthn/Credential.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/StaleElement.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/NotFound.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/Response.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/InsecureCertificate.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/NoSuchAlert.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Element/Rect.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Window/Rect.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Extension/Timezone.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Extension/HarExportTrigger.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Extension/Stealth.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Waterfox/Marionette.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Waterfox/Marionette/Profile.pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/ca-bundle-for-firefox.1p Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/check-firefox-certificate-authorities.1p Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/ssh-auth-cmd-marionette.1p Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/firefox-passwords.1p Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Proxy.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Image.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Exception.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Link.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Extension::Stealth.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Element::Rect.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Login.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::GeoLocation.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Capabilities.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Window::Rect.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::UpdateStatus.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::LocalObject.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::DNS.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Profile.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Exception::NotFound.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Exception::StaleElement.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Cache.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Timeouts.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::WebWindow.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Extension::HarExportTrigger.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::WebAuthn::Authenticator.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::WebAuthn::Credential.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Certificate.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Exception::InsecureCertificate.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Keys.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Buttons.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Waterfox::Marionette.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::WebFrame.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Cookie.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Response.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Extension::Timezone.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Exception::Response.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Waterfox::Marionette::Profile.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::ShadowRoot.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Bookmark.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Display.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Element.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Exception::NoSuchAlert.3pm Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/setup-for-firefox-marionette-build.sh Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/ssh-auth-cmd-marionette Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/firefox-passwords Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/ca-bundle-for-firefox Installing /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/check-firefox-certificate-authorities make[2]: Leaving directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68' # installed as examples rm -f -rv /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1 removed '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/setup-for-firefox-marionette-build.sh' removed '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/ssh-auth-cmd-marionette' removed '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/firefox-passwords' removed '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/ca-bundle-for-firefox' removed '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/check-firefox-certificate-authorities' removed directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin' removed '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/ca-bundle-for-firefox.1p' removed '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/check-firefox-certificate-authorities.1p' removed '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/ssh-auth-cmd-marionette.1p' removed '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/firefox-passwords.1p' removed directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1' make[1]: Leaving directory '/build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68' dh_installdocs dh_installchangelogs dh_installexamples dh_installman dh_perl dh_link dh_strip_nondeterminism dh_compress dh_fixperms dh_missing dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package 'libfirefox-marionette-perl' in '../libfirefox-marionette-perl_1.68-1_all.deb'. dpkg-genbuildinfo -O../libfirefox-marionette-perl_1.68-1_amd64.buildinfo dpkg-genchanges -O../libfirefox-marionette-perl_1.68-1_amd64.changes dpkg-genchanges: info: including full source code in upload dpkg-source -Zxz --after-build . dpkg-buildpackage: info: full upload (original source is included) -------------------------------------------------------------------------------- Build finished at 2025-10-04T04:03:32Z Finished -------- I: Built successfully +------------------------------------------------------------------------------+ | Changes Sat, 04 Oct 2025 04:03:32 +0000 | +------------------------------------------------------------------------------+ libfirefox-marionette-perl_1.68-1_amd64.changes: ------------------------------------------------ Format: 1.8 Date: Sat, 04 Oct 2025 02:13:05 +0200 Source: libfirefox-marionette-perl Binary: libfirefox-marionette-perl Architecture: source all Version: 1.68-1 Distribution: perl-5.42-throwaway Urgency: medium Maintainer: Debian Perl Group Changed-By: gregor herrmann Description: libfirefox-marionette-perl - module to automate the Firefox browser with the Marionette protoc Closes: 1117095 Changes: libfirefox-marionette-perl (1.68-1) unstable; urgency=medium . * Import upstream version 1.66. * Revert "Skip t/04-uploads.t." The test is fixed in this release. * Refresh lintian overrides (line numbers). * Add Salsa CI config. * Add patch from upstream development releases 1.67_01 and 1.67_02 to fix a test failure. * debian/rules: set FIREFOX_DEBUG=1 for tests. . * Import upstream version 1.68. * Refresh no-network.patch (offset). * Drop processgroup.patch (taken from upstream development release). * Remove «Rules-Requires-Root: no», which is the current default. * Remove «Priority: optional», which is the current default. * Update debian/source/lintian-overrides. * Use dbus-daemon and dbus-run-session for tests. Thanks to Simon McVittie for the bug report and patch. (Closes: #1117095) Checksums-Sha1: 2195784a4235e9baf0d4279eb7d859c13412994e 2095 libfirefox-marionette-perl_1.68-1.dsc 58d824d4ba342022b8909e0ce94c6743d39448dc 430422 libfirefox-marionette-perl_1.68.orig.tar.gz 1f47e124fc4749e3bdbf1d00d9760da70ef536d2 28756 libfirefox-marionette-perl_1.68-1.debian.tar.xz 650d34d9ae1ea90ef2c72dbc4cd58fc5ccdfc001 327724 libfirefox-marionette-perl_1.68-1_all.deb f78b89e806a118c3b7b1a1c654162284d7f13c82 11125 libfirefox-marionette-perl_1.68-1_amd64.buildinfo Checksums-Sha256: 3423fac80a995e2490770859227567ff25e0c4c3bbc967e6362b393650e2f511 2095 libfirefox-marionette-perl_1.68-1.dsc cfc3ace7c0a4fe4199babd7b6b71dadc93ced18616a3a4c40010d408306fdd6e 430422 libfirefox-marionette-perl_1.68.orig.tar.gz 95bb09b64826f3269b481ed93736db0208c708ef83b9f5cec5d894fcf75abb64 28756 libfirefox-marionette-perl_1.68-1.debian.tar.xz 584193d2eaf57a9ef1599c42b931112ae8400b448c809dbb8f2e46f7e523cc8f 327724 libfirefox-marionette-perl_1.68-1_all.deb e28945f0e9f1af2a3e5f5271e068a564edd0c580f6609d719718fb2e06b03de0 11125 libfirefox-marionette-perl_1.68-1_amd64.buildinfo Files: 8764554e37b814ebbb80c284700c0bfb 2095 perl optional libfirefox-marionette-perl_1.68-1.dsc 1e51152a5d25ad7bf6500fb2e725f951 430422 perl optional libfirefox-marionette-perl_1.68.orig.tar.gz faebe5035060b85a3c4920afa1068e82 28756 perl optional libfirefox-marionette-perl_1.68-1.debian.tar.xz cdef946d94717fa0810c1de0553be455 327724 perl optional libfirefox-marionette-perl_1.68-1_all.deb 5a7b1b7546be7da317c01d28e94287c6 11125 perl optional libfirefox-marionette-perl_1.68-1_amd64.buildinfo +------------------------------------------------------------------------------+ | Buildinfo Sat, 04 Oct 2025 04:03:32 +0000 | +------------------------------------------------------------------------------+ Format: 1.0 Source: libfirefox-marionette-perl Binary: libfirefox-marionette-perl Architecture: all source Version: 1.68-1 Checksums-Md5: 8764554e37b814ebbb80c284700c0bfb 2095 libfirefox-marionette-perl_1.68-1.dsc cdef946d94717fa0810c1de0553be455 327724 libfirefox-marionette-perl_1.68-1_all.deb Checksums-Sha1: 2195784a4235e9baf0d4279eb7d859c13412994e 2095 libfirefox-marionette-perl_1.68-1.dsc 650d34d9ae1ea90ef2c72dbc4cd58fc5ccdfc001 327724 libfirefox-marionette-perl_1.68-1_all.deb Checksums-Sha256: 3423fac80a995e2490770859227567ff25e0c4c3bbc967e6362b393650e2f511 2095 libfirefox-marionette-perl_1.68-1.dsc 584193d2eaf57a9ef1599c42b931112ae8400b448c809dbb8f2e46f7e523cc8f 327724 libfirefox-marionette-perl_1.68-1_all.deb Build-Origin: Debian Build-Architecture: amd64 Build-Date: Sat, 04 Oct 2025 04:03:32 +0000 Build-Path: /build/libfirefox-marionette-perl-CMaEfi/libfirefox-marionette-perl-1.68 Build-Tainted-By: usr-local-has-programs Installed-Build-Depends: adduser (= 3.153), adwaita-icon-theme (= 49.0-1), at-spi2-common (= 2.58.0-1), autoconf (= 2.72-3.1), automake (= 1:1.17-4), autopoint (= 0.23.1-2), autotools-dev (= 20240727.1), base-files (= 14), base-passwd (= 3.6.7), bash (= 5.3-1), binutils (= 2.45-7), binutils-common (= 2.45-7), binutils-x86-64-linux-gnu (= 2.45-7), bsdextrautils (= 2.41.2-3), build-essential (= 12.12), bzip2 (= 1.0.8-6), ca-certificates (= 20250419), coreutils (= 9.7-3), cpp (= 4:15.2.0-4), cpp-14 (= 14.3.0-8), cpp-14-x86-64-linux-gnu (= 14.3.0-8), cpp-15 (= 15.2.0-4), cpp-15-x86-64-linux-gnu (= 15.2.0-4), cpp-x86-64-linux-gnu (= 4:15.2.0-4), dash (= 0.5.12-12), dbus (= 1.16.2-2), dbus-bin (= 1.16.2-2), dbus-daemon (= 1.16.2-2), dbus-session-bus-common (= 1.16.2-2), dbus-system-bus-common (= 1.16.2-2), dbus-user-session (= 1.16.2-2), dconf-gsettings-backend (= 0.49.0-1), dconf-service (= 0.49.0-1), debconf (= 1.5.91), debhelper (= 13.28), debianutils (= 5.23.2), dh-autoreconf (= 21), dh-strip-nondeterminism (= 1.15.0-1), diffutils (= 1:3.10-4), dpkg (= 1.22.21), dpkg-dev (= 1.22.21), dwz (= 0.16-2), file (= 1:5.46-5), findutils (= 4.10.0-3), firefox-esr (= 140.3.1esr-2), fontconfig (= 2.15.0-2.4), fontconfig-config (= 2.15.0-2.4), fonts-dejavu-core (= 2.37-8), fonts-dejavu-mono (= 2.37-8), g++ (= 4:15.2.0-4), g++-15 (= 15.2.0-4), g++-15-x86-64-linux-gnu (= 15.2.0-4), g++-x86-64-linux-gnu (= 4:15.2.0-4), gcc (= 4:15.2.0-4), gcc-14 (= 14.3.0-8), gcc-14-base (= 14.3.0-8), gcc-14-x86-64-linux-gnu (= 14.3.0-8), gcc-15 (= 15.2.0-4), gcc-15-base (= 15.2.0-4), gcc-15-x86-64-linux-gnu (= 15.2.0-4), gcc-x86-64-linux-gnu (= 4:15.2.0-4), gettext (= 0.23.1-2+b1), gettext-base (= 0.23.1-2+b1), grep (= 3.12-1), groff-base (= 1.23.0-9), gtk-update-icon-cache (= 4.20.1+ds-2), gzip (= 1.13-1), hicolor-icon-theme (= 0.18-2), hostname (= 3.25), init-system-helpers (= 1.69), intltool-debian (= 0.35.0+20060710.6), libacl1 (= 2.3.2-2+b1), libapparmor1 (= 4.1.0-1), libarchive-zip-perl (= 1.68-1), libasan8 (= 15.2.0-4), libasound2-data (= 1.2.14-2), libasound2t64 (= 1.2.14-2), libatk-bridge2.0-0t64 (= 2.58.0-1), libatk1.0-0t64 (= 2.58.0-1), libatomic1 (= 15.2.0-4), libatspi2.0-0t64 (= 2.58.0-1), libattr1 (= 1:2.5.2-3), libaudit-common (= 1:4.1.2-1), libaudit1 (= 1:4.1.2-1), libavahi-client3 (= 0.8-17), libavahi-common-data (= 0.8-17), libavahi-common3 (= 0.8-17), libbinutils (= 2.45-7), libblkid1 (= 2.41.2-3), libbrotli1 (= 1.1.0-2+b7), libbsd0 (= 0.12.2-2), libbz2-1.0 (= 1.0.8-6), libc-bin (= 2.41-12), libc-dev-bin (= 2.41-12), libc6 (= 2.41-12), libc6-dev (= 2.41-12), libcairo-gobject2 (= 1.18.4-1+b1), libcairo2 (= 1.18.4-1+b1), libcap-ng0 (= 0.8.5-4+b1), libcap2 (= 1:2.75-10+b1), libcc1-0 (= 15.2.0-4), libclone-perl (= 0.47-1+b2), libcloudproviders0 (= 0.3.6-3), libcolord2 (= 1.4.8-1), libcom-err2 (= 1.47.2-3+b3), libconfig-ini-perl (= 1:0.029-1), libcrypt-dev (= 1:4.4.38-1), libcrypt-passwdmd5-perl (= 1.42-2), libcrypt-urandom-perl (= 0.54-1+b1), libcrypt1 (= 1:4.4.38-1), libctf-nobfd0 (= 2.45-7), libctf0 (= 2.45-7), libcups2t64 (= 2.4.10-4), libdata-optlist-perl (= 0.114-1), libdatrie1 (= 0.2.13-4), libdb5.3t64 (= 5.3.28+dfsg2-9), libdbus-1-3 (= 1.16.2-2), libdconf1 (= 0.49.0-1), libdebconfclient0 (= 0.280), libdebhelper-perl (= 13.28), libdeflate0 (= 1.23-2), libdpkg-perl (= 1.22.21), libdrm-amdgpu1 (= 2.4.125-2), libdrm-common (= 2.4.125-2), libdrm-intel1 (= 2.4.125-2), libdrm2 (= 2.4.125-2), libedit2 (= 3.1-20250104-1), libelf1t64 (= 0.193-3), libencode-locale-perl (= 1.05-3), libepoxy0 (= 1.5.10-2), libevent-2.1-7t64 (= 2.1.12-stable-10+b1), libexpat1 (= 2.7.3-1), libffi8 (= 3.5.2-2), libfile-homedir-perl (= 1.006-2), libfile-listing-perl (= 6.16-1), libfile-stripnondeterminism-perl (= 1.15.0-1), libfile-which-perl (= 1.27-2), libfont-ttf-perl (= 1.06-2), libfontconfig1 (= 2.15.0-2.4), libfontenc1 (= 1:1.1.8-1+b2), libfreetype6 (= 2.13.3+dfsg-1), libfribidi0 (= 1.0.16-3), libgbm1 (= 25.2.4-1), libgcc-14-dev (= 14.3.0-8), libgcc-15-dev (= 15.2.0-4), libgcc-s1 (= 15.2.0-4), libgdbm-compat4t64 (= 1.26-1), libgdbm6t64 (= 1.26-1), libgdk-pixbuf-2.0-0 (= 2.44.3+dfsg-3), libgdk-pixbuf2.0-common (= 2.44.3+dfsg-3), libgl1 (= 1.7.0-1+b2), libgl1-mesa-dri (= 25.2.4-1), libglib2.0-0t64 (= 2.84.4-3), libglvnd0 (= 1.7.0-1+b2), libglx-mesa0 (= 25.2.4-1), libglx0 (= 1.7.0-1+b2), libgmp10 (= 2:6.3.0+dfsg-5), libgnutls30t64 (= 3.8.10-2), libgomp1 (= 15.2.0-4), libgprofng0 (= 2.45-7), libgraphite2-3 (= 1.3.14-9), libgssapi-krb5-2 (= 1.21.3-5), libgtk-3-0t64 (= 3.24.50-2), libgtk-3-common (= 3.24.50-2), libharfbuzz0b (= 12.1.0-1), libhogweed6t64 (= 3.10.2-1), libhtml-parser-perl (= 3.83-1+b3), libhtml-tagset-perl (= 3.24-1), libhtml-tree-perl (= 5.07-3), libhttp-cookies-perl (= 6.11-1), libhttp-daemon-perl (= 6.16-1), libhttp-date-perl (= 6.06-1), libhttp-message-perl (= 7.00-2), libhttp-negotiate-perl (= 6.01-2), libhwasan0 (= 15.2.0-4), libice6 (= 2:1.1.1-1), libidn2-0 (= 2.3.8-4), libio-html-perl (= 1.004-3), libio-socket-ssl-perl (= 2.095-1), libio-string-perl (= 1.08-4), libisl23 (= 0.27-1), libitm1 (= 15.2.0-4), libjansson4 (= 2.14-2+b3), libjbig0 (= 2.1-6.1+b2), libjpeg62-turbo (= 1:2.1.5-4), libjson-perl (= 4.10000-1), libk5crypto3 (= 1.21.3-5), libkeyutils1 (= 1.6.3-6), libkrb5-3 (= 1.21.3-5), libkrb5support0 (= 1.21.3-5), liblcms2-2 (= 2.16-2), liblerc4 (= 4.0.0+ds-5), libllvm19 (= 1:19.1.7-7), liblsan0 (= 15.2.0-4), liblwp-mediatypes-perl (= 6.04-2), liblwp-protocol-https-perl (= 6.14-1), liblzma5 (= 5.8.1-2), libmagic-mgc (= 1:5.46-5), libmagic1t64 (= 1:5.46-5), libmd0 (= 1.1.0-2+b1), libmixin-linewise-perl (= 0.111-1), libmount1 (= 2.41.2-3), libmpc3 (= 1.3.1-2), libmpfr6 (= 4.2.2-2), libncursesw6 (= 6.5+20250216-2), libnet-http-perl (= 6.23-1), libnet-ssleay-perl (= 1.94-3+b1), libnettle8t64 (= 3.10.2-1), libnspr4 (= 2:4.37-1), libnss3 (= 2:3.116-1), libp11-kit0 (= 0.25.9-2), libpam-modules (= 1.7.0-5), libpam-modules-bin (= 1.7.0-5), libpam-runtime (= 1.7.0-5), libpam-systemd (= 258-1), libpam0g (= 1.7.0-5), libpango-1.0-0 (= 1.56.3-2), libpangocairo-1.0-0 (= 1.56.3-2), libpangoft2-1.0-0 (= 1.56.3-2), libparams-util-perl (= 1.102-3+b2), libpciaccess0 (= 0.17-3+b3), libpcre2-8-0 (= 10.46-1), libpdf-api2-perl (= 2.048-1), libperl5.42 (= 5.42.0-2), libperlio-utf8-strict-perl (= 0.010-1+b4), libpipeline1 (= 1.5.8-1), libpixman-1-0 (= 0.46.4-1), libpng16-16t64 (= 1.6.50-1), libproc2-0 (= 2:4.0.4-9), libquadmath0 (= 15.2.0-4), libseccomp2 (= 2.6.0-2), libselinux1 (= 3.8.1-1), libsemanage-common (= 3.8.1-1), libsemanage2 (= 3.8.1-1), libsensors-config (= 1:3.6.2-2), libsensors5 (= 1:3.6.2-2), libsepol2 (= 3.8.1-1), libsframe2 (= 2.45-7), libsharpyuv0 (= 1.5.0-0.1), libsm6 (= 2:1.2.6-1), libsmartcols1 (= 2.41.2-3), libsqlite3-0 (= 3.46.1-8), libssl3t64 (= 3.5.4-1), libstdc++-15-dev (= 15.2.0-4), libstdc++6 (= 15.2.0-4), libsub-exporter-perl (= 0.990-1), libsub-install-perl (= 0.929-1), libsystemd-shared (= 258-1), libsystemd0 (= 258-1), libtasn1-6 (= 4.20.0-2), libterm-readkey-perl (= 2.38-2+b5), libtext-csv-xs-perl (= 1.61-1+b1), libthai-data (= 0.1.29-2), libthai0 (= 0.1.29-2+b1), libtiff6 (= 4.7.1-1), libtimedate-perl (= 2.3300-2), libtinfo6 (= 6.5+20250216-2), libtool (= 2.5.4-5), libtry-tiny-perl (= 0.32-1), libtsan2 (= 15.2.0-4), libubsan1 (= 15.2.0-4), libuchardet0 (= 0.0.8-2), libudev1 (= 258-1), libunistring5 (= 1.3-2), libunwind8 (= 1.8.1-0.1), liburi-perl (= 5.34-1), libuuid1 (= 2.41.2-3), libvpx11 (= 1.15.2-2), libvulkan1 (= 1.4.321.0-1), libwayland-client0 (= 1.24.0-2+b1), libwayland-cursor0 (= 1.24.0-2+b1), libwayland-egl1 (= 1.24.0-2+b1), libwebp7 (= 1.5.0-0.1), libwww-perl (= 6.80-1), libwww-robotrules-perl (= 6.02-1), libx11-6 (= 2:1.8.12-1), libx11-data (= 2:1.8.12-1), libx11-xcb1 (= 2:1.8.12-1), libxau6 (= 1:1.0.11-1), libxaw7 (= 2:1.0.16-1), libxcb-dri3-0 (= 1.17.0-2+b1), libxcb-glx0 (= 1.17.0-2+b1), libxcb-present0 (= 1.17.0-2+b1), libxcb-randr0 (= 1.17.0-2+b1), libxcb-render0 (= 1.17.0-2+b1), libxcb-shm0 (= 1.17.0-2+b1), libxcb-sync1 (= 1.17.0-2+b1), libxcb-xfixes0 (= 1.17.0-2+b1), libxcb1 (= 1.17.0-2+b1), libxcomposite1 (= 1:0.4.6-1), libxcursor1 (= 1:1.2.3-1), libxdamage1 (= 1:1.1.6-1+b2), libxdmcp6 (= 1:1.1.5-1), libxext6 (= 2:1.3.4-1+b3), libxfixes3 (= 1:6.0.0-2+b4), libxfont2 (= 1:2.0.6-1+b3), libxi6 (= 2:1.8.2-1), libxinerama1 (= 2:1.1.4-3+b4), libxkbcommon0 (= 1.7.0-2.1), libxkbfile1 (= 1:1.1.0-1+b4), libxml-parser-perl (= 2.47-1+b4), libxml2-16 (= 2.14.5+dfsg-0.2), libxmu6 (= 2:1.1.3-3+b4), libxmuu1 (= 2:1.1.3-3+b4), libxpm4 (= 1:3.5.17-1+b3), libxrandr2 (= 2:1.5.4-1+b3), libxrender1 (= 1:0.9.12-1), libxshmfence1 (= 1.3.3-1), libxt6t64 (= 1:1.2.1-1.3), libxxf86vm1 (= 1:1.1.4-1+b4), libz3-4 (= 4.13.3-1), libzstd1 (= 1.5.7+dfsg-1.1), linux-libc-dev (= 6.16.9-1), login.defs (= 1:4.18.0-1), m4 (= 1.4.20-1), make (= 4.4.1-2), man-db (= 2.13.1-1), mawk (= 1.3.4.20250131-1), mesa-libgallium (= 25.2.4-1), mount (= 2.41.2-3), ncurses-base (= 6.5+20250216-2), ncurses-bin (= 6.5+20250216-2), netbase (= 6.5), openssl (= 3.5.4-1), openssl-provider-legacy (= 3.5.4-1), passwd (= 1:4.18.0-1), patch (= 2.8-2), perl (= 5.42.0-2), perl-base (= 5.42.0-2), perl-modules-5.42 (= 5.42.0-2), perl-openssl-defaults (= 7+b2), po-debconf (= 1.0.21+nmu1), procps (= 2:4.0.4-9), rpcsvc-proto (= 1.4.3-1), sed (= 4.9-2), sensible-utils (= 0.0.26), shared-mime-info (= 2.4-5+b3), systemd (= 258-1), systemd-sysv (= 258-1), sysvinit-utils (= 3.14-4), tar (= 1.35+dfsg-3.1), util-linux (= 2.41.2-3), x11-common (= 1:7.7+25), x11-xkb-utils (= 7.7+9), xauth (= 1:1.1.2-1.1), xkb-data (= 2.42-1), xserver-common (= 2:21.1.18-2), xvfb (= 2:21.1.18-2), xz-utils (= 5.8.1-2), zlib1g (= 1:1.3.dfsg+really1.3.1-1+b1) Environment: DEB_BUILD_OPTIONS="parallel=2" LANG="C.UTF-8" LC_COLLATE="C.UTF-8" LC_CTYPE="C.UTF-8" LD_LIBRARY_PATH="/usr/lib/libeatmydata" SOURCE_DATE_EPOCH="1759536785" +------------------------------------------------------------------------------+ | Package contents Sat, 04 Oct 2025 04:03:32 +0000 | +------------------------------------------------------------------------------+ libfirefox-marionette-perl_1.68-1_all.deb ----------------------------------------- new Debian package, version 2.0. size 327724 bytes: control archive=3008 bytes. 832 bytes, 14 lines control 7727 bytes, 86 lines md5sums Package: libfirefox-marionette-perl Version: 1.68-1 Architecture: all Maintainer: Debian Perl Group Installed-Size: 1207 Depends: perl:any, libarchive-zip-perl, libconfig-ini-perl, libcrypt-urandom-perl, libencode-perl, libfile-homedir-perl, libjson-perl, libpod-simple-perl, libscalar-list-utils-perl, libsocket-perl, libterm-readkey-perl, libtext-csv-xs-perl, liburi-perl, libxml-parser-perl Recommends: firefox-esr | firefox Section: perl Priority: optional Homepage: https://metacpan.org/release/Firefox-Marionette Description: module to automate the Firefox browser with the Marionette protocol Firefox::Marionette is a client module to automate the Mozilla Firefox browser via the Marionette protocol (https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/Protocol). drwxr-xr-x root/root 0 2025-10-04 00:13 ./ drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/ drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/ drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/doc/ drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/doc/libfirefox-marionette-perl/ -rw-r--r-- root/root 1991 2025-10-04 00:13 ./usr/share/doc/libfirefox-marionette-perl/changelog.Debian.gz -rw-r--r-- root/root 7707 2025-09-13 23:05 ./usr/share/doc/libfirefox-marionette-perl/changelog.gz -rw-r--r-- root/root 3152 2025-10-04 00:13 ./usr/share/doc/libfirefox-marionette-perl/copyright drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/doc/libfirefox-marionette-perl/examples/ -rwxr-xr-x root/root 7523 2025-09-13 23:05 ./usr/share/doc/libfirefox-marionette-perl/examples/ca-bundle-for-firefox -rwxr-xr-x root/root 6576 2025-09-13 23:05 ./usr/share/doc/libfirefox-marionette-perl/examples/check-firefox-certificate-authorities -rwxr-xr-x root/root 18376 2025-09-13 23:05 ./usr/share/doc/libfirefox-marionette-perl/examples/firefox-passwords -rwxr-xr-x root/root 11875 2025-06-14 01:51 ./usr/share/doc/libfirefox-marionette-perl/examples/setup-for-firefox-marionette-build.sh -rwxr-xr-x root/root 22780 2025-09-13 23:05 ./usr/share/doc/libfirefox-marionette-perl/examples/ssh-auth-cmd-marionette drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/man/ drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/man/man3/ -rw-r--r-- root/root 37848 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette.3pm.gz -rw-r--r-- root/root 3938 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Bookmark.3pm.gz -rw-r--r-- root/root 2309 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Buttons.3pm.gz -rw-r--r-- root/root 3772 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Cache.3pm.gz -rw-r--r-- root/root 4564 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Capabilities.3pm.gz -rw-r--r-- root/root 3509 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Certificate.3pm.gz -rw-r--r-- root/root 2685 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Cookie.3pm.gz -rw-r--r-- root/root 3492 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::DNS.3pm.gz -rw-r--r-- root/root 2812 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Display.3pm.gz -rw-r--r-- root/root 4800 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Element.3pm.gz -rw-r--r-- root/root 2353 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Element::Rect.3pm.gz -rw-r--r-- root/root 2164 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Exception.3pm.gz -rw-r--r-- root/root 2129 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Exception::InsecureCertificate.3pm.gz -rw-r--r-- root/root 2135 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Exception::NoSuchAlert.3pm.gz -rw-r--r-- root/root 2150 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Exception::NotFound.3pm.gz -rw-r--r-- root/root 2341 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Exception::Response.3pm.gz -rw-r--r-- root/root 2151 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Exception::StaleElement.3pm.gz -rw-r--r-- root/root 2491 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Extension::HarExportTrigger.3pm.gz -rw-r--r-- root/root 2281 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Extension::Stealth.3pm.gz -rw-r--r-- root/root 2282 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Extension::Timezone.3pm.gz -rw-r--r-- root/root 2998 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::GeoLocation.3pm.gz -rw-r--r-- root/root 2570 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Image.3pm.gz -rw-r--r-- root/root 2954 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Keys.3pm.gz -rw-r--r-- root/root 2558 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Link.3pm.gz -rw-r--r-- root/root 2591 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::LocalObject.3pm.gz -rw-r--r-- root/root 3555 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Login.3pm.gz -rw-r--r-- root/root 3275 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Profile.3pm.gz -rw-r--r-- root/root 3520 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Proxy.3pm.gz -rw-r--r-- root/root 2412 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Response.3pm.gz -rw-r--r-- root/root 2394 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::ShadowRoot.3pm.gz -rw-r--r-- root/root 2379 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Timeouts.3pm.gz -rw-r--r-- root/root 4017 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::UpdateStatus.3pm.gz -rw-r--r-- root/root 3441 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::WebAuthn::Authenticator.3pm.gz -rw-r--r-- root/root 3323 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::WebAuthn::Credential.3pm.gz -rw-r--r-- root/root 2266 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::WebFrame.3pm.gz -rw-r--r-- root/root 2337 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::WebWindow.3pm.gz -rw-r--r-- root/root 2433 2025-10-04 00:13 ./usr/share/man/man3/Firefox::Marionette::Window::Rect.3pm.gz -rw-r--r-- root/root 2803 2025-10-04 00:13 ./usr/share/man/man3/Waterfox::Marionette.3pm.gz -rw-r--r-- root/root 2394 2025-10-04 00:13 ./usr/share/man/man3/Waterfox::Marionette::Profile.3pm.gz drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/perl5/ drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/perl5/Firefox/ -rw-r--r-- root/root 573275 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette.pm drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/perl5/Firefox/Marionette/ -rw-r--r-- root/root 12932 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Bookmark.pm -rw-r--r-- root/root 3264 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Buttons.pm -rw-r--r-- root/root 13577 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Cache.pm -rw-r--r-- root/root 13179 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Capabilities.pm -rw-r--r-- root/root 10284 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Certificate.pm -rw-r--r-- root/root 5238 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Cookie.pm -rw-r--r-- root/root 8311 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/DNS.pm -rw-r--r-- root/root 5550 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Display.pm -rw-r--r-- root/root 30227 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Element.pm drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/perl5/Firefox/Marionette/Element/ -rw-r--r-- root/root 3578 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Element/Rect.pm -rw-r--r-- root/root 3255 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Exception.pm drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/perl5/Firefox/Marionette/Exception/ -rw-r--r-- root/root 2912 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Exception/InsecureCertificate.pm -rw-r--r-- root/root 2876 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Exception/NoSuchAlert.pm -rw-r--r-- root/root 3042 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Exception/NotFound.pm -rw-r--r-- root/root 3677 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Exception/Response.pm -rw-r--r-- root/root 2965 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Exception/StaleElement.pm drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/perl5/Firefox/Marionette/Extension/ -rw-r--r-- root/root 46258 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Extension/HarExportTrigger.pm -rw-r--r-- root/root 36169 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Extension/Stealth.pm -rw-r--r-- root/root 11007 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Extension/Timezone.pm -rw-r--r-- root/root 10908 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/GeoLocation.pm -rw-r--r-- root/root 5141 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Image.pm -rw-r--r-- root/root 8503 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Keys.pm -rw-r--r-- root/root 4915 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Link.pm -rw-r--r-- root/root 4300 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/LocalObject.pm -rw-r--r-- root/root 10594 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Login.pm -rw-r--r-- root/root 28641 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Profile.pm -rw-r--r-- root/root 9174 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Proxy.pm -rw-r--r-- root/root 7207 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Response.pm -rw-r--r-- root/root 3246 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/ShadowRoot.pm -rw-r--r-- root/root 4191 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Timeouts.pm -rw-r--r-- root/root 12457 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/UpdateStatus.pm drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/perl5/Firefox/Marionette/WebAuthn/ -rw-r--r-- root/root 9925 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/WebAuthn/Authenticator.pm -rw-r--r-- root/root 8535 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/WebAuthn/Credential.pm -rw-r--r-- root/root 2998 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/WebFrame.pm -rw-r--r-- root/root 3154 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/WebWindow.pm drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/perl5/Firefox/Marionette/Window/ -rw-r--r-- root/root 3882 2025-09-13 23:05 ./usr/share/perl5/Firefox/Marionette/Window/Rect.pm drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/perl5/Waterfox/ -rw-r--r-- root/root 5658 2025-09-13 23:05 ./usr/share/perl5/Waterfox/Marionette.pm drwxr-xr-x root/root 0 2025-10-04 00:13 ./usr/share/perl5/Waterfox/Marionette/ -rw-r--r-- root/root 7605 2025-09-13 23:05 ./usr/share/perl5/Waterfox/Marionette/Profile.pm +------------------------------------------------------------------------------+ | Post Build Sat, 04 Oct 2025 04:03:32 +0000 | +------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+ | Cleanup Sat, 04 Oct 2025 04:03:32 +0000 | +------------------------------------------------------------------------------+ Purging /build/libfirefox-marionette-perl-CMaEfi Not cleaning session: cloned chroot in use +------------------------------------------------------------------------------+ | Summary Sat, 04 Oct 2025 04:03:33 +0000 | +------------------------------------------------------------------------------+ Build Architecture: amd64 Build Type: full Build-Space: 8464 Build-Time: 67 Distribution: perl-5.42-throwaway Host Architecture: amd64 Install-Time: 27 Job: /srv/debomatic/incoming/libfirefox-marionette-perl_1.68-1.dsc Machine Architecture: amd64 Package: libfirefox-marionette-perl Package-Time: 97 Source-Version: 1.68-1 Space: 8464 Status: successful Version: 1.68-1 -------------------------------------------------------------------------------- Finished at 2025-10-04T04:03:32Z Build needed 00:01:37, 8464k disk space