Version in base suite: 140.12.0esr-1~deb13u1 Version in overlay suite: 140.13.0esr-1~deb13u1 Base version: firefox-esr_140.13.0esr-1~deb13u1 Target version: firefox-esr_140.15.0esr-1~deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/f/firefox-esr/firefox-esr_140.13.0esr-1~deb13u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/f/firefox-esr/firefox-esr_140.15.0esr-1~deb13u1.dsc /srv/release.debian.org/tmp/3owaAOKck2/firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin |binary /srv/release.debian.org/tmp/3owaAOKck2/firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin |binary firefox-esr-140.15.0esr/.lando.ini | 8 firefox-esr-140.15.0esr/CLOBBER | 2 firefox-esr-140.15.0esr/accessible/ipc/DocAccessibleParent.cpp | 2 firefox-esr-140.15.0esr/browser/app/winlauncher/freestanding/SharedSection.cpp | 20 firefox-esr-140.15.0esr/browser/app/winlauncher/freestanding/moz.build | 1 firefox-esr-140.15.0esr/browser/app/winlauncher/test/TestCrossProcessWin.cpp | 13 firefox-esr-140.15.0esr/browser/app/winlauncher/test/moz.build | 1 firefox-esr-140.15.0esr/browser/base/content/nsContextMenu.sys.mjs | 21 firefox-esr-140.15.0esr/browser/base/content/test/contextMenu/browser.toml | 3 firefox-esr-140.15.0esr/browser/base/content/test/contextMenu/browser_contextmenu_blocked_image_protocols.js | 63 firefox-esr-140.15.0esr/browser/base/content/test/contextMenu/file_blocked_image_protocols.html | 9 firefox-esr-140.15.0esr/browser/base/content/test/siteIdentity/browser_secure_transport_insecure_scheme.js | 2 firefox-esr-140.15.0esr/browser/base/content/test/static/browser_all_files_referenced.js | 5 firefox-esr-140.15.0esr/browser/base/content/test/static/browser_parsable_css.js | 8 firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/browser_asrouter_experimentsAPILoader.js | 2 firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/browser_asrouter_targeting.js | 1 firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/browser_trigger_messagesLoaded.js | 2 firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/head.js | 6 firefox-esr-140.15.0esr/browser/components/preferences/tests/head.js | 4 firefox-esr-140.15.0esr/browser/components/shell/nsWindowsShellService.cpp | 18 firefox-esr-140.15.0esr/browser/components/tabbrowser/test/browser/tabs/browser_new_tab_in_privilegedabout_process_pref.js | 7 firefox-esr-140.15.0esr/browser/config/version.txt | 2 firefox-esr-140.15.0esr/browser/config/version_display.txt | 2 firefox-esr-140.15.0esr/browser/extensions/webcompat/injections/js/bug1831007-nintendo-window-OnetrustActiveGroups.js | 4 firefox-esr-140.15.0esr/browser/extensions/webcompat/manifest.json | 2 firefox-esr-140.15.0esr/browser/modules/WindowsJumpLists.sys.mjs | 8 firefox-esr-140.15.0esr/config/milestone.txt | 2 firefox-esr-140.15.0esr/debian/changelog | 38 firefox-esr-140.15.0esr/debian/patches/debian-hacks/Set-DPI-to-system-settings.patch | 4 firefox-esr-140.15.0esr/debian/patches/fixes/Bug-1969769-Change-uses-of-ast.Str-with-ast.Constant.patch | 77 firefox-esr-140.15.0esr/debian/patches/fixes/Bug-1983713-Use-non-deprecated-ast-value.-r-firefox-.patch | 27 firefox-esr-140.15.0esr/debian/patches/fixes/Bug-1983736-Patch-jsonschema-to-work-with-Python-3.1.patch | 43 firefox-esr-140.15.0esr/debian/patches/fixes/Bug-2016618-Fix-Linux-sandbox-build-breakage-on-glib.patch | 21 firefox-esr-140.15.0esr/debian/patches/fixes/Fix-conficting-types-for-once_flag-and-call_once.patch | 56 firefox-esr-140.15.0esr/debian/patches/series | 5 firefox-esr-140.15.0esr/docshell/base/BrowsingContext.cpp | 11 firefox-esr-140.15.0esr/docshell/base/nsDocShell.cpp | 52 firefox-esr-140.15.0esr/docshell/base/nsDocShellLoadState.cpp | 122 firefox-esr-140.15.0esr/docshell/shistory/SessionHistoryEntry.cpp | 11 firefox-esr-140.15.0esr/docshell/shistory/SessionHistoryEntry.h | 4 firefox-esr-140.15.0esr/dom/base/Document.cpp | 11 firefox-esr-140.15.0esr/dom/base/nsContentUtils.cpp | 60 firefox-esr-140.15.0esr/dom/base/nsContentUtils.h | 7 firefox-esr-140.15.0esr/dom/base/nsFocusManager.cpp | 5 firefox-esr-140.15.0esr/dom/base/nsFrameLoader.cpp | 6 firefox-esr-140.15.0esr/dom/base/nsObjectLoadingContent.cpp | 11 firefox-esr-140.15.0esr/dom/broadcastchannel/BroadcastChannel.cpp | 16 firefox-esr-140.15.0esr/dom/cache/CacheStorage.cpp | 8 firefox-esr-140.15.0esr/dom/cache/DBSchema.cpp | 122 firefox-esr-140.15.0esr/dom/cache/PrincipalVerifier.cpp | 7 firefox-esr-140.15.0esr/dom/cache/TypeUtils.cpp | 3 firefox-esr-140.15.0esr/dom/cache/test/mochitest/test_chrome_constructor.html | 9 firefox-esr-140.15.0esr/dom/canvas/TexUnpackBlob.cpp | 12 firefox-esr-140.15.0esr/dom/canvas/WebGLBuffer.cpp | 21 firefox-esr-140.15.0esr/dom/canvas/WebGLContext.cpp | 18 firefox-esr-140.15.0esr/dom/canvas/WebGLContext.h | 2 firefox-esr-140.15.0esr/dom/canvas/WebGLContextDraw.cpp | 8 firefox-esr-140.15.0esr/dom/canvas/WebGLFramebuffer.cpp | 6 firefox-esr-140.15.0esr/dom/canvas/WebGLTexelConversions.cpp | 12 firefox-esr-140.15.0esr/dom/canvas/WebGLTexelConversions.h | 88 firefox-esr-140.15.0esr/dom/canvas/WebGLTransformFeedback.cpp | 9 firefox-esr-140.15.0esr/dom/canvas/test/webgl-conf/generated-mochitest.toml | 1 firefox-esr-140.15.0esr/dom/canvas/test/webgl-conf/mochitest-errata.toml | 19 firefox-esr-140.15.0esr/dom/chrome-webidl/WindowsJumpListShortcutDescription.webidl | 2 firefox-esr-140.15.0esr/dom/clients/manager/ClientManagerParent.cpp | 11 firefox-esr-140.15.0esr/dom/clients/manager/ClientManagerService.cpp | 4 firefox-esr-140.15.0esr/dom/clients/manager/ClientManagerService.h | 3 firefox-esr-140.15.0esr/dom/clients/manager/ClientNavigateOpChild.cpp | 10 firefox-esr-140.15.0esr/dom/clients/manager/ClientSource.cpp | 4 firefox-esr-140.15.0esr/dom/clients/manager/ClientSourceParent.cpp | 9 firefox-esr-140.15.0esr/dom/clients/manager/ClientSourceParent.h | 13 firefox-esr-140.15.0esr/dom/clients/manager/ClientValidation.cpp | 22 firefox-esr-140.15.0esr/dom/clients/manager/ClientValidation.h | 3 firefox-esr-140.15.0esr/dom/cookiestore/CookieStoreNotifier.cpp | 5 firefox-esr-140.15.0esr/dom/cookiestore/CookieStoreParent.cpp | 25 firefox-esr-140.15.0esr/dom/cookiestore/CookieStoreSubscriptionService.cpp | 17 firefox-esr-140.15.0esr/dom/events/EventStateManager.cpp | 11 firefox-esr-140.15.0esr/dom/events/IMEStateManager.cpp | 42 firefox-esr-140.15.0esr/dom/filesystem/FileSystemSecurity.cpp | 5 firefox-esr-140.15.0esr/dom/fs/child/FileSystemBackgroundRequestHandler.cpp | 13 firefox-esr-140.15.0esr/dom/gamepad/linux/LinuxGamepad.cpp | 20 firefox-esr-140.15.0esr/dom/html/HTMLMediaElement.cpp | 30 firefox-esr-140.15.0esr/dom/html/HTMLMediaElement.h | 6 firefox-esr-140.15.0esr/dom/html/HTMLOptionElement.h | 10 firefox-esr-140.15.0esr/dom/html/HTMLSelectElement.cpp | 7 firefox-esr-140.15.0esr/dom/html/nsGenericHTMLElement.cpp | 3 firefox-esr-140.15.0esr/dom/html/test/browser.toml | 3 firefox-esr-140.15.0esr/dom/html/test/browser_input_file_untrusted_drop.js | 174 firefox-esr-140.15.0esr/dom/html/test/file_input_file_untrusted_drop.html | 77 firefox-esr-140.15.0esr/dom/indexedDB/ActorsParent.cpp | 25 firefox-esr-140.15.0esr/dom/indexedDB/IDBFactory.cpp | 16 firefox-esr-140.15.0esr/dom/indexedDB/IndexedDBCommon.cpp | 10 firefox-esr-140.15.0esr/dom/indexedDB/IndexedDBCommon.h | 3 firefox-esr-140.15.0esr/dom/indexedDB/test/test_message_manager_ipc.html | 4 firefox-esr-140.15.0esr/dom/indexedDB/test/unit/xpcshell-head-child-process.js | 3 firefox-esr-140.15.0esr/dom/indexedDB/test/unit/xpcshell-parent-process.toml | 1 firefox-esr-140.15.0esr/dom/ipc/BrowserParent.cpp | 61 firefox-esr-140.15.0esr/dom/ipc/ContentChild.cpp | 30 firefox-esr-140.15.0esr/dom/ipc/ContentChild.h | 3 firefox-esr-140.15.0esr/dom/ipc/ContentParent.cpp | 27 firefox-esr-140.15.0esr/dom/ipc/ContentParent.h | 2 firefox-esr-140.15.0esr/dom/ipc/PContent.ipdl | 4 firefox-esr-140.15.0esr/dom/ipc/ProcessIsolation.cpp | 110 firefox-esr-140.15.0esr/dom/ipc/WindowGlobalParent.cpp | 38 firefox-esr-140.15.0esr/dom/ipc/gtest/ProcessIsolationTest.cpp | 109 firefox-esr-140.15.0esr/dom/localstorage/ActorsParent.cpp | 199 firefox-esr-140.15.0esr/dom/media/AudioPacketizer.h | 60 firefox-esr-140.15.0esr/dom/media/AudioSegment.cpp | 51 firefox-esr-140.15.0esr/dom/media/AudioSegment.h | 14 firefox-esr-140.15.0esr/dom/media/GraphDriver.cpp | 43 firefox-esr-140.15.0esr/dom/media/GraphDriver.h | 8 firefox-esr-140.15.0esr/dom/media/ImageConversion.cpp | 27 firefox-esr-140.15.0esr/dom/media/ImageConversion.h | 10 firefox-esr-140.15.0esr/dom/media/MediaData.cpp | 8 firefox-esr-140.15.0esr/dom/media/MediaInfo.h | 10 firefox-esr-140.15.0esr/dom/media/MediaTrackGraph.cpp | 8 firefox-esr-140.15.0esr/dom/media/TimedPacketizer.h | 4 firefox-esr-140.15.0esr/dom/media/gmp/GMPChild.cpp | 6 firefox-esr-140.15.0esr/dom/media/gmp/GMPPlatform.cpp | 66 firefox-esr-140.15.0esr/dom/media/gmp/GMPPlatform.h | 12 firefox-esr-140.15.0esr/dom/media/gmp/GMPVideoDecoderChild.cpp | 2 firefox-esr-140.15.0esr/dom/media/gmp/GMPVideoEncoderChild.cpp | 2 firefox-esr-140.15.0esr/dom/media/gtest/TestAudioPacketizer.cpp | 16 firefox-esr-140.15.0esr/dom/media/ipc/MFCDMChild.cpp | 4 firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineChild.cpp | 18 firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineChild.h | 4 firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineParent.cpp | 25 firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineParent.h | 6 firefox-esr-140.15.0esr/dom/media/ipc/RemoteDecoderParent.cpp | 6 firefox-esr-140.15.0esr/dom/media/ipc/RemoteDecoderParent.h | 1 firefox-esr-140.15.0esr/dom/media/mediasink/AudioDecoderInputTrack.cpp | 10 firefox-esr-140.15.0esr/dom/media/platforms/apple/AppleVTDecoder.cpp | 18 firefox-esr-140.15.0esr/dom/media/platforms/apple/AppleVTEncoder.cpp | 148 firefox-esr-140.15.0esr/dom/media/platforms/ffmpeg/FFmpegAudioEncoder.cpp | 6 firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFCDMProxy.cpp | 13 firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFCDMProxy.h | 12 firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFMediaEngineStream.cpp | 45 firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFMediaEngineStream.h | 12 firefox-esr-140.15.0esr/dom/media/platforms/wmf/WMFVideoMFTManager.cpp | 18 firefox-esr-140.15.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.cpp | 7 firefox-esr-140.15.0esr/dom/media/webm/WebMDemuxer.cpp | 26 firefox-esr-140.15.0esr/dom/media/webrtc/MediaEngineWebRTCAudio.cpp | 7 firefox-esr-140.15.0esr/dom/media/webrtc/transportbridge/MediaPipeline.cpp | 5 firefox-esr-140.15.0esr/dom/push/PushManager.cpp | 17 firefox-esr-140.15.0esr/dom/push/test/mochitest.toml | 7 firefox-esr-140.15.0esr/dom/quota/ActorsParent.cpp | 6 firefox-esr-140.15.0esr/dom/quota/PrincipalUtils.cpp | 4 firefox-esr-140.15.0esr/dom/quota/RemoteQuotaObjectParent.cpp | 5 firefox-esr-140.15.0esr/dom/quota/StorageManager.cpp | 6 firefox-esr-140.15.0esr/dom/quota/test/xpcshell/test_estimateOrigin.js | 17 firefox-esr-140.15.0esr/dom/security/nsContentSecurityManager.cpp | 29 firefox-esr-140.15.0esr/dom/security/nsContentSecurityUtils.cpp | 1 firefox-esr-140.15.0esr/dom/security/test/crashtests/1583044.html | 11 firefox-esr-140.15.0esr/dom/security/test/crashtests/crashtests.list | 1 firefox-esr-140.15.0esr/dom/security/test/general/chrome.toml | 3 firefox-esr-140.15.0esr/dom/security/test/general/test_image_protocol_document_context.html | 78 firefox-esr-140.15.0esr/dom/serviceworkers/ServiceWorkerPrivate.cpp | 36 firefox-esr-140.15.0esr/dom/simpledb/SDBConnection.cpp | 6 firefox-esr-140.15.0esr/dom/storage/LocalStorageManager.cpp | 7 firefox-esr-140.15.0esr/dom/storage/StorageActivityService.cpp | 5 firefox-esr-140.15.0esr/dom/storage/components.conf | 1 firefox-esr-140.15.0esr/dom/svg/DOMSVGLengthList.cpp | 22 firefox-esr-140.15.0esr/dom/svg/DOMSVGLengthList.h | 10 firefox-esr-140.15.0esr/dom/svg/DOMSVGNumber.cpp | 17 firefox-esr-140.15.0esr/dom/svg/DOMSVGNumber.h | 16 firefox-esr-140.15.0esr/dom/svg/DOMSVGNumberList.cpp | 22 firefox-esr-140.15.0esr/dom/svg/DOMSVGNumberList.h | 10 firefox-esr-140.15.0esr/dom/svg/DOMSVGPointList.cpp | 22 firefox-esr-140.15.0esr/dom/svg/DOMSVGPointList.h | 12 firefox-esr-140.15.0esr/dom/svg/DOMSVGTransform.cpp | 18 firefox-esr-140.15.0esr/dom/svg/DOMSVGTransform.h | 7 firefox-esr-140.15.0esr/dom/svg/DOMSVGTransformList.cpp | 22 firefox-esr-140.15.0esr/dom/svg/DOMSVGTransformList.h | 7 firefox-esr-140.15.0esr/dom/webbrowserpersist/PWebBrowserPersistDocument.ipdl | 6 firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentChild.cpp | 10 firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentParent.cpp | 17 firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentParent.h | 6 firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistRemoteDocument.cpp | 16 firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistRemoteDocument.h | 4 firefox-esr-140.15.0esr/dom/workers/RuntimeService.cpp | 133 firefox-esr-140.15.0esr/dom/workers/RuntimeService.h | 11 firefox-esr-140.15.0esr/dom/workers/WorkerPrivate.cpp | 2 firefox-esr-140.15.0esr/dom/workers/WorkerPrivate.h | 5 firefox-esr-140.15.0esr/dom/workers/sharedworkers/SharedWorker.cpp | 10 firefox-esr-140.15.0esr/dom/workers/sharedworkers/SharedWorkerService.cpp | 85 firefox-esr-140.15.0esr/dom/workers/sharedworkers/SharedWorkerService.h | 4 firefox-esr-140.15.0esr/dom/workers/test/browser.toml | 6 firefox-esr-140.15.0esr/dom/workers/test/browser_privilegedmozilla_remoteworker.js | 116 firefox-esr-140.15.0esr/dom/workers/test/browser_serviceworker_fetch_new_process.js | 43 firefox-esr-140.15.0esr/dom/workers/test/file_service_worker.js | 3 firefox-esr-140.15.0esr/dom/workers/test/file_service_worker_container.html | 15 firefox-esr-140.15.0esr/dom/xml/nsXMLContentSink.cpp | 9 firefox-esr-140.15.0esr/dom/xml/nsXMLContentSink.h | 1 firefox-esr-140.15.0esr/dom/xslt/tests/mochitest/test_bug1769155.html | 2 firefox-esr-140.15.0esr/editor/libeditor/EditorBase.cpp | 2 firefox-esr-140.15.0esr/editor/libeditor/HTMLEditor.cpp | 2 firefox-esr-140.15.0esr/editor/libeditor/HTMLEditorDataTransfer.cpp | 8 firefox-esr-140.15.0esr/editor/libeditor/HTMLEditorDeleteHandler.cpp | 2 firefox-esr-140.15.0esr/editor/libeditor/HTMLTableEditor.cpp | 2 firefox-esr-140.15.0esr/extensions/auth/nsAuthSSPI.cpp | 291 firefox-esr-140.15.0esr/extensions/auth/nsAuthSSPI.h | 6 firefox-esr-140.15.0esr/extensions/auth/nsHttpNegotiateAuth.cpp | 111 firefox-esr-140.15.0esr/gfx/2d/DataSurfaceHelpers.cpp | 7 firefox-esr-140.15.0esr/gfx/2d/DrawTargetCairo.cpp | 3 firefox-esr-140.15.0esr/gfx/2d/DrawTargetSkia.cpp | 1 firefox-esr-140.15.0esr/gfx/2d/Factory.cpp | 18 firefox-esr-140.15.0esr/gfx/2d/NativeFontResourceGDI.cpp | 52 firefox-esr-140.15.0esr/gfx/2d/NativeFontResourceGDI.h | 51 firefox-esr-140.15.0esr/gfx/2d/RecordedEventImpl.h | 5 firefox-esr-140.15.0esr/gfx/2d/ScaledFontWin.cpp | 121 firefox-esr-140.15.0esr/gfx/2d/ScaledFontWin.h | 46 firefox-esr-140.15.0esr/gfx/2d/Types.h | 1 firefox-esr-140.15.0esr/gfx/2d/UnscaledFontGDI.h | 46 firefox-esr-140.15.0esr/gfx/2d/moz.build | 3 firefox-esr-140.15.0esr/gfx/cairo/cairo/src/cairo-cff-subset.c | 35 firefox-esr-140.15.0esr/gfx/cairo/cairo/src/cairo-truetype-subset.c | 6 firefox-esr-140.15.0esr/gfx/cairo/cairo/src/cairo-type1-subset.c | 24 firefox-esr-140.15.0esr/gfx/cairo/cairo/src/win32/cairo-win32-printing-surface.c | 42 firefox-esr-140.15.0esr/gfx/cairo/patches/0042-win32-printing-linear-pattern.patch | 87 firefox-esr-140.15.0esr/gfx/cairo/patches/0044-Bug-2053599-glyph-index-bounds.patch | 60 firefox-esr-140.15.0esr/gfx/cairo/patches/0047-Bug-2050228-win32-print-tiny-dash.patch | 21 firefox-esr-140.15.0esr/gfx/cairo/patches/0047-Bug-2054626-type2-decode-integer.patch | 86 firefox-esr-140.15.0esr/gfx/cairo/patches/0048-Bug-2054627-skip-token-check.patch | 101 firefox-esr-140.15.0esr/gfx/gl/GLBlitHelper.cpp | 5 firefox-esr-140.15.0esr/gfx/gl/SharedSurfaceD3D11Interop.cpp | 22 firefox-esr-140.15.0esr/gfx/layers/GPUVideoImage.h | 13 firefox-esr-140.15.0esr/gfx/layers/ImageContainer.cpp | 7 firefox-esr-140.15.0esr/gfx/layers/d3d11/TextureD3D11.cpp | 7 firefox-esr-140.15.0esr/gfx/layers/ipc/CanvasChild.cpp | 9 firefox-esr-140.15.0esr/gfx/layers/ipc/SharedRGBImage.cpp | 23 firefox-esr-140.15.0esr/gfx/layers/ipc/SharedRGBImage.h | 3 firefox-esr-140.15.0esr/gfx/layers/wr/AsyncImagePipelineManager.cpp | 10 firefox-esr-140.15.0esr/gfx/layers/wr/WebRenderBridgeParent.cpp | 27 firefox-esr-140.15.0esr/gfx/layers/wr/WebRenderBridgeParent.h | 9 firefox-esr-140.15.0esr/gfx/metrics.yaml | 17 firefox-esr-140.15.0esr/gfx/skia/skia/src/core/SkBlitBWMaskTemplate.h | 2 firefox-esr-140.15.0esr/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp | 11 firefox-esr-140.15.0esr/gfx/thebes/CoreTextFontList.cpp | 7 firefox-esr-140.15.0esr/gfx/thebes/gfxDWriteFontList.cpp | 9 firefox-esr-140.15.0esr/gfx/thebes/gfxDWriteFonts.cpp | 38 firefox-esr-140.15.0esr/gfx/thebes/gfxDWriteFonts.h | 8 firefox-esr-140.15.0esr/gfx/thebes/gfxFT2FontList.cpp | 7 firefox-esr-140.15.0esr/gfx/thebes/gfxFont.cpp | 17 firefox-esr-140.15.0esr/gfx/thebes/gfxFont.h | 64 firefox-esr-140.15.0esr/gfx/thebes/gfxFontUtils.cpp | 6 firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFont.cpp | 553 firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFont.h | 91 firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFontList.cpp | 1162 - firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFontList.h | 366 firefox-esr-140.15.0esr/gfx/thebes/gfxGraphiteShaper.cpp | 8 firefox-esr-140.15.0esr/gfx/thebes/gfxOTSUtils.h | 4 firefox-esr-140.15.0esr/gfx/thebes/gfxTextRun.cpp | 33 firefox-esr-140.15.0esr/gfx/thebes/gfxTextRun.h | 2 firefox-esr-140.15.0esr/gfx/thebes/gfxWindowsPlatform.cpp | 36 firefox-esr-140.15.0esr/gfx/thebes/gfxWindowsPlatform.h | 3 firefox-esr-140.15.0esr/gfx/thebes/moz.build | 4 firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHost.h | 2 firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostSWGL.cpp | 21 firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostSWGL.h | 10 firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostWrapper.cpp | 6 firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostWrapper.h | 1 firefox-esr-140.15.0esr/gfx/webrender_bindings/WebRenderAPI.cpp | 10 firefox-esr-140.15.0esr/gfx/webrender_bindings/WebRenderAPI.h | 9 firefox-esr-140.15.0esr/gfx/webrender_bindings/src/bindings.rs | 6 firefox-esr-140.15.0esr/gfx/wr/example-compositor/compositor/src/main.rs | 4 firefox-esr-140.15.0esr/gfx/wr/examples/common/boilerplate.rs | 2 firefox-esr-140.15.0esr/gfx/wr/examples/document.rs | 1 firefox-esr-140.15.0esr/gfx/wr/examples/iframe.rs | 1 firefox-esr-140.15.0esr/gfx/wr/examples/multiwindow.rs | 1 firefox-esr-140.15.0esr/gfx/wr/swgl/src/swgl_ext.h | 3 firefox-esr-140.15.0esr/gfx/wr/webrender/src/render_api.rs | 9 firefox-esr-140.15.0esr/gfx/wr/webrender/src/scene.rs | 7 firefox-esr-140.15.0esr/gfx/wr/webrender/src/scene_builder_thread.rs | 2 firefox-esr-140.15.0esr/gfx/wr/webrender/src/scene_building.rs | 132 firefox-esr-140.15.0esr/gfx/wr/wrench/src/rawtest.rs | 4 firefox-esr-140.15.0esr/gfx/wr/wrench/src/wrench.rs | 29 firefox-esr-140.15.0esr/image/ImageBlocker.cpp | 4 firefox-esr-140.15.0esr/image/RasterImage.cpp | 20 firefox-esr-140.15.0esr/image/RasterImage.h | 3 firefox-esr-140.15.0esr/image/decoders/icon/components.conf | 1 firefox-esr-140.15.0esr/image/decoders/icon/nsIconProtocolHandler.cpp | 10 firefox-esr-140.15.0esr/ipc/chromium/src/base/pickle.cc | 29 firefox-esr-140.15.0esr/ipc/chromium/src/base/pickle.h | 12 firefox-esr-140.15.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.cc | 96 firefox-esr-140.15.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.h | 5 firefox-esr-140.15.0esr/ipc/chromium/src/chrome/common/ipc_message_utils.h | 3 firefox-esr-140.15.0esr/ipc/glue/BackgroundChild.h | 13 firefox-esr-140.15.0esr/ipc/glue/BackgroundImpl.cpp | 48 firefox-esr-140.15.0esr/ipc/glue/BackgroundParent.h | 12 firefox-esr-140.15.0esr/ipc/glue/BackgroundParentImpl.cpp | 57 firefox-esr-140.15.0esr/ipc/glue/BackgroundParentImpl.h | 3 firefox-esr-140.15.0esr/ipc/glue/GeckoChildProcessHost.h | 1 firefox-esr-140.15.0esr/js/src/gc/Nursery.cpp | 9 firefox-esr-140.15.0esr/js/src/irregexp/RegExpNativeMacroAssembler.cpp | 9 firefox-esr-140.15.0esr/js/src/jit/CodeGenerator.cpp | 3 firefox-esr-140.15.0esr/js/src/jit/Lowering.cpp | 60 firefox-esr-140.15.0esr/js/src/jit/MIR.h | 6 firefox-esr-140.15.0esr/js/src/proxy/Proxy.cpp | 9 firefox-esr-140.15.0esr/js/src/vm/JitActivation.cpp | 11 firefox-esr-140.15.0esr/js/src/vm/JitActivation.h | 7 firefox-esr-140.15.0esr/js/src/wasm/WasmBCFrame.cpp | 2 firefox-esr-140.15.0esr/js/src/wasm/WasmBaselineCompile.cpp | 28 firefox-esr-140.15.0esr/js/src/wasm/WasmJS.cpp | 25 firefox-esr-140.15.0esr/layout/base/PresShell.cpp | 7 firefox-esr-140.15.0esr/layout/build/components.conf | 10 firefox-esr-140.15.0esr/layout/forms/nsFileControlFrame.cpp | 5 firefox-esr-140.15.0esr/layout/generic/nsBlockFrame.cpp | 3 firefox-esr-140.15.0esr/layout/generic/nsTextFrame.cpp | 2 firefox-esr-140.15.0esr/layout/generic/nsTextRunTransformations.cpp | 4 firefox-esr-140.15.0esr/layout/mathml/nsMathMLChar.cpp | 2 firefox-esr-140.15.0esr/layout/painting/nsCSSRendering.cpp | 3 firefox-esr-140.15.0esr/media/ffvpx/README_MOZILLA | 2 firefox-esr-140.15.0esr/media/ffvpx/cbs_decoder_sync.patch | 18 firefox-esr-140.15.0esr/media/ffvpx/libavcodec/cbs_av1_syntax_template.c | 3 firefox-esr-140.15.0esr/media/libcubeb/0006-fix-loopback-separate-streams-flakiness-windows.patch | 88 firefox-esr-140.15.0esr/media/libcubeb/moz.yaml | 4 firefox-esr-140.15.0esr/media/libcubeb/src/cubeb.c | 11 firefox-esr-140.15.0esr/media/libcubeb/src/cubeb_wasapi.cpp | 32 firefox-esr-140.15.0esr/media/libcubeb/src/cubeb_winmm.c | 76 firefox-esr-140.15.0esr/media/libcubeb/test/test_loopback.cpp | 50 firefox-esr-140.15.0esr/media/libcubeb/test/test_sanity.cpp | 23 firefox-esr-140.15.0esr/media/libcubeb/wasapi-async-reconfigure-on-start.patch | 41 firefox-esr-140.15.0esr/media/libcubeb/wasapi-output-mix-channel-count.patch | 84 firefox-esr-140.15.0esr/media/libcubeb/winmm-destroy-work-item-uaf.patch | 187 firefox-esr-140.15.0esr/mfbt/BufferList.h | 3 firefox-esr-140.15.0esr/modules/libjar/components.conf | 2 firefox-esr-140.15.0esr/modules/libpref/Preferences.cpp | 5 firefox-esr-140.15.0esr/modules/libpref/init/StaticPrefList.yaml | 14 firefox-esr-140.15.0esr/mozglue/misc/NativeNt.h | 101 firefox-esr-140.15.0esr/mozglue/tests/TestNativeNt.cpp | 167 firefox-esr-140.15.0esr/netwerk/base/SimpleChannelParent.cpp | 1 firefox-esr-140.15.0esr/netwerk/base/nsSimpleNestedURI.cpp | 22 firefox-esr-140.15.0esr/netwerk/base/nsSimpleNestedURI.h | 4 firefox-esr-140.15.0esr/netwerk/base/nsStandardURL.cpp | 90 firefox-esr-140.15.0esr/netwerk/base/nsStandardURL.h | 2 firefox-esr-140.15.0esr/netwerk/build/components.conf | 13 firefox-esr-140.15.0esr/netwerk/cookie/CookieServiceParent.cpp | 42 firefox-esr-140.15.0esr/netwerk/cookie/CookieServiceParent.h | 2 firefox-esr-140.15.0esr/netwerk/dns/effective_tld_names.dat | 127 firefox-esr-140.15.0esr/netwerk/ipc/DocumentLoadListener.cpp | 27 firefox-esr-140.15.0esr/netwerk/ipc/NeckoParent.cpp | 26 firefox-esr-140.15.0esr/netwerk/ipc/NeckoParent.h | 3 firefox-esr-140.15.0esr/netwerk/protocol/about/nsAboutProtocolHandler.cpp | 23 firefox-esr-140.15.0esr/netwerk/protocol/about/nsAboutProtocolHandler.h | 1 firefox-esr-140.15.0esr/netwerk/protocol/http/InterceptedHttpChannel.cpp | 4 firefox-esr-140.15.0esr/netwerk/protocol/http/SpeculativeTransaction.cpp | 13 firefox-esr-140.15.0esr/netwerk/protocol/res/PageThumbProtocolHandler.cpp | 11 firefox-esr-140.15.0esr/netwerk/protocol/res/PageThumbProtocolHandler.h | 2 firefox-esr-140.15.0esr/netwerk/protocol/websocket/WebSocketChannelChild.cpp | 31 firefox-esr-140.15.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp | 61 firefox-esr-140.15.0esr/python/mozbuild/mozbuild/mach_commands.py | 8 firefox-esr-140.15.0esr/python/mozbuild/mozbuild/repackaging/deb.py | 3 firefox-esr-140.15.0esr/security/ct/CTKnownLogs.h | 12 firefox-esr-140.15.0esr/security/manager/ssl/StaticHPKPins.h | 20 firefox-esr-140.15.0esr/security/manager/ssl/components.conf | 1 firefox-esr-140.15.0esr/security/manager/ssl/nsSTSPreloadList.inc | 5894 ++---- firefox-esr-140.15.0esr/security/manager/tools/log_list.json | 20 firefox-esr-140.15.0esr/security/sandbox/chromium-shim/patches/55_dont_broker_dir_creation_or_write.patch | 56 firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/filesystem_dispatcher.cc | 29 firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/registry_dispatcher.cc | 12 firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/registry_policy.cc | 67 firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/registry_policy.h | 14 firefox-esr-140.15.0esr/security/sandbox/linux/broker/SandboxBrokerRealpath.cpp | 34 firefox-esr-140.15.0esr/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp | 24 firefox-esr-140.15.0esr/services/settings/RemoteSettingsClient.sys.mjs | 9 firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json | 9738 ---------- firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json | 2 firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json | 2 firefox-esr-140.15.0esr/services/settings/dumps/blocklists/gfx.json | 26 firefox-esr-140.15.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json | 454 firefox-esr-140.15.0esr/services/settings/dumps/main/search-config-icons.json | 53 firefox-esr-140.15.0esr/services/settings/dumps/main/search-config-v2.json | 26 firefox-esr-140.15.0esr/services/settings/dumps/main/search-telemetry-v2.json | 321 firefox-esr-140.15.0esr/services/settings/dumps/main/translations-models.json | 116 firefox-esr-140.15.0esr/services/settings/dumps/security-state/intermediates.json | 1416 + firefox-esr-140.15.0esr/sourcestamp.txt | 4 firefox-esr-140.15.0esr/taskcluster/gecko_taskgraph/transforms/repackage.py | 9 firefox-esr-140.15.0esr/taskcluster/gecko_taskgraph/transforms/repackage_routes.py | 5 firefox-esr-140.15.0esr/taskcluster/kinds/release-update-verify-config/kind.yml | 6 firefox-esr-140.15.0esr/testing/mochitest/runtests.py | 2 firefox-esr-140.15.0esr/testing/mozharness/configs/releases/bouncer_firefox_esr.py | 54 firefox-esr-140.15.0esr/testing/mozharness/configs/repackage/base.py | 1 firefox-esr-140.15.0esr/testing/mozharness/scripts/repackage.py | 1 firefox-esr-140.15.0esr/testing/web-platform/meta/push-api/worker-subscribe.https.window.js.ini | 4 firefox-esr-140.15.0esr/testing/web-platform/meta/service-workers/service-worker/windowclient-navigate.https.html.ini | 3 firefox-esr-140.15.0esr/testing/web-platform/tests/editing/crashtests/set-documentElement-innerHTML-when-embed-in-designMode-has-focus.html | 18 firefox-esr-140.15.0esr/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-security-check-failure.sub.html | 3 firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/cross-origin-nested.tentative.https.sub.window.js | 56 firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/cross-origin-same-site-request.tentative.https.sub.window.js | 32 firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/cross-origin-serviceworker.tentative.https.sub.window.js | 29 firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/cross-origin-nested-child.sub.html | 13 firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/cross-origin-nested-parent.sub.html | 28 firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/cross-origin-serviceworker-iframe.sub.html | 24 firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/permission-helper.js | 26 firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/permission-sw.js | 19 firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/permission-worker.js | 5 firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/worker-subscribe.https.window.js | 22 firefox-esr-140.15.0esr/testing/web-platform/tests/selection/crashtests/find-whole-word-crash.html | 9 firefox-esr-140.15.0esr/third_party/libwebrtc/api/video/rtp_video_frame_assembler.cc | 27 firefox-esr-140.15.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer.cc | 89 firefox-esr-140.15.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer.h | 32 firefox-esr-140.15.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer_unittest.cc | 10 firefox-esr-140.15.0esr/third_party/libwebrtc/video/rtp_video_stream_receiver2.cc | 31 firefox-esr-140.15.0esr/third_party/libwebrtc/video/rtp_video_stream_receiver2.h | 2 firefox-esr-140.15.0esr/toolkit/components/contentanalysis/tests/browser/browser_download_content_analysis.js | 99 firefox-esr-140.15.0esr/toolkit/components/contentanalysis/tests/browser/browser_download_save_link_as_content_analysis.js | 63 firefox-esr-140.15.0esr/toolkit/components/contentanalysis/tests/browser/head.js | 6 firefox-esr-140.15.0esr/toolkit/components/downloads/DownloadIntegration.sys.mjs | 4 firefox-esr-140.15.0esr/toolkit/components/extensions/ConduitsParent.sys.mjs | 79 firefox-esr-140.15.0esr/toolkit/components/extensions/ExtensionParent.sys.mjs | 80 firefox-esr-140.15.0esr/toolkit/components/extensions/test/xpcshell/test_ext_runtime_ports_membership.js | 110 firefox-esr-140.15.0esr/toolkit/components/extensions/test/xpcshell/xpcshell-common.toml | 2 firefox-esr-140.15.0esr/toolkit/components/find/nsFind.cpp | 2 firefox-esr-140.15.0esr/toolkit/components/gfx/SanityTest.sys.mjs | 2 firefox-esr-140.15.0esr/toolkit/components/gfx/content/gfxFrameScript.js | 2 firefox-esr-140.15.0esr/toolkit/components/gfx/content/sanitytest.html | 2 firefox-esr-140.15.0esr/toolkit/components/gfx/jar.mn | 7 firefox-esr-140.15.0esr/toolkit/components/nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs | 1 firefox-esr-140.15.0esr/toolkit/components/nimbus/test/NimbusTestUtils.sys.mjs | 30 firefox-esr-140.15.0esr/toolkit/components/nimbus/test/browser/head.js | 2 firefox-esr-140.15.0esr/toolkit/components/places/PageIconProtocolHandler.cpp | 10 firefox-esr-140.15.0esr/toolkit/components/places/nsCachedFaviconProtocolHandler.cpp | 4 firefox-esr-140.15.0esr/toolkit/components/reputationservice/ApplicationReputation.cpp | 62 firefox-esr-140.15.0esr/toolkit/components/telemetry/Histograms.json | 9 firefox-esr-140.15.0esr/toolkit/components/telemetry/histogram-allowlists.json | 2 firefox-esr-140.15.0esr/toolkit/content/tests/chrome/findbar_entireword_window.xhtml | 2 firefox-esr-140.15.0esr/toolkit/library/rust/shared/lib.rs | 2 firefox-esr-140.15.0esr/toolkit/mozapps/handling/ContentDispatchChooser.sys.mjs | 2 firefox-esr-140.15.0esr/toolkit/xre/dllservices/mozglue/Authenticode.cpp | 3 firefox-esr-140.15.0esr/tools/tryselect/push.py | 4 firefox-esr-140.15.0esr/tools/tryselect/selectors/perf.py | 6 firefox-esr-140.15.0esr/tools/tryselect/test/test_perf.py | 1 firefox-esr-140.15.0esr/uriloader/exthandler/nsExternalHelperAppService.cpp | 8 firefox-esr-140.15.0esr/widget/ClipboardWriteRequestParent.cpp | 4 firefox-esr-140.15.0esr/widget/gtk/DMABufSurface.cpp | 28 firefox-esr-140.15.0esr/widget/nsBaseDragService.cpp | 4 firefox-esr-140.15.0esr/widget/nsDragServiceProxy.cpp | 1 firefox-esr-140.15.0esr/widget/windows/DirectManipulationOwner.cpp | 141 firefox-esr-140.15.0esr/widget/windows/DirectManipulationOwner.h | 2 firefox-esr-140.15.0esr/widget/windows/JumpListBuilder.cpp | 19 firefox-esr-140.15.0esr/widget/windows/TSFEmptyTextStore.cpp | 13 firefox-esr-140.15.0esr/widget/windows/TSFTextStore.cpp | 8 firefox-esr-140.15.0esr/widget/windows/TSFTextStoreBase.cpp | 95 firefox-esr-140.15.0esr/widget/windows/TSFTextStoreBase.h | 59 firefox-esr-140.15.0esr/widget/windows/TSFUtils.cpp | 40 firefox-esr-140.15.0esr/widget/windows/TSFUtils.h | 37 firefox-esr-140.15.0esr/widget/windows/WinUtils.h | 34 firefox-esr-140.15.0esr/widget/windows/tests/gtest/TestJumpListBuilder.cpp | 18 firefox-esr-140.15.0esr/xpcom/components/StaticComponents.h | 3 firefox-esr-140.15.0esr/xpcom/components/gen_static_components.py | 2 firefox-esr-140.15.0esr/xpcom/io/moz.build | 2 firefox-esr-140.15.0esr/xpcom/io/nsBinaryStream.cpp | 29 454 files changed, 12218 insertions(+), 17860 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpwxj_se87/firefox-esr_140.13.0esr-1~deb13u1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpwxj_se87/firefox-esr_140.15.0esr-1~deb13u1.dsc: no acceptable signature found diff -Nru firefox-esr-140.13.0esr/.lando.ini firefox-esr-140.15.0esr/.lando.ini --- firefox-esr-140.13.0esr/.lando.ini 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/.lando.ini 2026-08-26 17:03:40.000000000 +0000 @@ -6,14 +6,14 @@ # Lando production Auth0 configuration. auth0_domain = auth.mozilla.auth0.com auth0_client_id = ccpmWbDAMz1pxHIWF4vqkdr0ScdgDyyM -auth0_audience = https://api.lando.services.mozilla.com +auth0_audience = https://lando.moz.tools auth0_scope = openid email profile lando https://sso.mozilla.com/claim/groups -api_domain = api.lando.services.mozilla.com +api_domain = lando.moz.tools [lando-dev] # Lando dev server Auth0 configuration. auth0_domain = auth.mozilla.auth0.com auth0_client_id = TAtuZwbJd4SRtWg0YznfS1YYCatOvvnX -auth0_audience = https://api.lando.devsvcdev.mozaws.net +auth0_audience = https://lando-dev.allizom.org auth0_scope = openid email profile lando https://sso.mozilla.com/claim/groups -api_domain = api.dev.lando.nonprod.cloudops.mozgcp.net +api_domain = lando-dev.allizom.org diff -Nru firefox-esr-140.13.0esr/CLOBBER firefox-esr-140.15.0esr/CLOBBER --- firefox-esr-140.13.0esr/CLOBBER 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/CLOBBER 2026-08-26 17:03:40.000000000 +0000 @@ -22,4 +22,4 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Merge day clobber 2026-06-15 \ No newline at end of file +Merge day clobber 2026-08-13 \ No newline at end of file diff -Nru firefox-esr-140.13.0esr/accessible/ipc/DocAccessibleParent.cpp firefox-esr-140.15.0esr/accessible/ipc/DocAccessibleParent.cpp --- firefox-esr-140.13.0esr/accessible/ipc/DocAccessibleParent.cpp 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/accessible/ipc/DocAccessibleParent.cpp 2026-08-26 17:03:39.000000000 +0000 @@ -1118,7 +1118,7 @@ // XXX This indirection through the hash map of live documents shouldn't be // needed, but be paranoid for now. - int32_t actorID = mActorID; + uint64_t actorID = mActorID; for (uint32_t i = childDocCount - 1; i < childDocCount; i--) { DocAccessibleParent* thisDoc = LiveDocs().Get(actorID); MOZ_ASSERT(thisDoc); diff -Nru firefox-esr-140.13.0esr/browser/app/winlauncher/freestanding/SharedSection.cpp firefox-esr-140.15.0esr/browser/app/winlauncher/freestanding/SharedSection.cpp --- firefox-esr-140.13.0esr/browser/app/winlauncher/freestanding/SharedSection.cpp 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/app/winlauncher/freestanding/SharedSection.cpp 2026-08-26 17:03:39.000000000 +0000 @@ -151,9 +151,23 @@ kSharedViewSize >= sizeof(Layout), "kSharedViewSize is too small to represent SharedSection::Layout."); - HANDLE section = - ::CreateFileMappingW(INVALID_HANDLE_VALUE, nullptr, PAGE_READWRITE, 0, - kSharedViewSize, nullptr); + // Create with an empty DACL to limit the duplicated handle's access rights. + // See shared_memory::CreateImpl for details. + SECURITY_DESCRIPTOR sd; + ACL dacl; + if (!::InitializeAcl(&dacl, sizeof(dacl), ACL_REVISION) || + !::InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION) || + !::SetSecurityDescriptorDacl(&sd, TRUE, &dacl, FALSE)) { + return LAUNCHER_ERROR_FROM_LAST(); + } + + SECURITY_ATTRIBUTES sa; + sa.nLength = sizeof(sa); + sa.lpSecurityDescriptor = &sd; + sa.bInheritHandle = FALSE; + + HANDLE section = ::CreateFileMappingW( + INVALID_HANDLE_VALUE, &sa, PAGE_READWRITE, 0, kSharedViewSize, nullptr); if (!section) { return LAUNCHER_ERROR_FROM_LAST(); } diff -Nru firefox-esr-140.13.0esr/browser/app/winlauncher/freestanding/moz.build firefox-esr-140.15.0esr/browser/app/winlauncher/freestanding/moz.build --- firefox-esr-140.13.0esr/browser/app/winlauncher/freestanding/moz.build 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/app/winlauncher/freestanding/moz.build 2026-08-26 17:03:40.000000000 +0000 @@ -38,6 +38,7 @@ CXXFLAGS += [SRCDIR + "/Freestanding.h"] OS_LIBS += [ + "advapi32", "ntdll", "ntdll_freestanding", ] diff -Nru firefox-esr-140.13.0esr/browser/app/winlauncher/test/TestCrossProcessWin.cpp firefox-esr-140.15.0esr/browser/app/winlauncher/test/TestCrossProcessWin.cpp --- firefox-esr-140.13.0esr/browser/app/winlauncher/test/TestCrossProcessWin.cpp 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/app/winlauncher/test/TestCrossProcessWin.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -70,6 +70,7 @@ (offsetof(SharedSection::Layout, mFirstBlockEntry) + sizeof(DllBlockInfo)); } + static HANDLE GetSectionHandle() { return SharedSection::sSectionHandle; } }; } // namespace mozilla::freestanding @@ -527,6 +528,18 @@ return 1; } + // The empty DACL should prevent writable handles. + HANDLE writableHandle; + if (::DuplicateHandle( + nt::kCurrentProcess, SharedSectionTestHelper::GetSectionHandle(), + nt::kCurrentProcess, &writableHandle, GENERIC_WRITE, FALSE, 0)) { + ::CloseHandle(writableHandle); + printf( + "TEST-FAILED | TestCrossProcessWin | " + "The handle was writable.\n"); + return 1; + } + if (!VerifySharedSection(gSharedSection)) { return 1; } diff -Nru firefox-esr-140.13.0esr/browser/app/winlauncher/test/moz.build firefox-esr-140.15.0esr/browser/app/winlauncher/test/moz.build --- firefox-esr-140.13.0esr/browser/app/winlauncher/test/moz.build 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/app/winlauncher/test/moz.build 2026-08-26 17:03:40.000000000 +0000 @@ -20,6 +20,7 @@ ] OS_LIBS += [ + "advapi32", "ntdll", ] diff -Nru firefox-esr-140.13.0esr/browser/base/content/nsContextMenu.sys.mjs firefox-esr-140.15.0esr/browser/base/content/nsContextMenu.sys.mjs --- firefox-esr-140.13.0esr/browser/base/content/nsContextMenu.sys.mjs 2026-07-15 20:30:27.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/base/content/nsContextMenu.sys.mjs 2026-08-26 17:03:39.000000000 +0000 @@ -91,6 +91,13 @@ const PASSWORD_FIELDNAME_HINTS = ["current-password", "new-password"]; const USERNAME_FIELDNAME_HINT = "username"; +const IMAGE_ONLY_PROTOCOLS = [ + "cached-favicon:", + "moz-icon:", + "moz-page-thumb:", + "page-icon:", +]; + export class nsContextMenu { /** * A promise to retrieve the translations language pair @@ -729,6 +736,12 @@ this.onImage && !this.onCompletedImage ); + // Some protocols only return images in an image context and can no longer + // be loaded otherwise. + const mediaURL = URL.parse(this.mediaURL); + const isImageOnlyProtocol = + mediaURL && IMAGE_ONLY_PROTOCOLS.includes(mediaURL.protocol); + // View image depends on having an image that's not standalone // (or is in a frame), or a canvas. If this isn't an image, check // if there is a background image. @@ -748,12 +761,16 @@ !this.onAudio && !this.onLink && !this.onTextInput; - this.showItem("context-viewimage", showViewImage || showBGImage); + this.showItem( + "context-viewimage", + (showViewImage || showBGImage) && !isImageOnlyProtocol + ); // Save image depends on having loaded its content. this.showItem( "context-saveimage", - (this.onLoadedImage || this.onCanvas) && !this.inPDFEditor + ((this.onLoadedImage && !isImageOnlyProtocol) || this.onCanvas) && + !this.inPDFEditor ); if (Services.policies.status === Services.policies.ACTIVE) { diff -Nru firefox-esr-140.13.0esr/browser/base/content/test/contextMenu/browser.toml firefox-esr-140.15.0esr/browser/base/content/test/contextMenu/browser.toml --- firefox-esr-140.13.0esr/browser/base/content/test/contextMenu/browser.toml 2026-07-15 20:30:27.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/base/content/test/contextMenu/browser.toml 2026-08-26 17:03:39.000000000 +0000 @@ -33,6 +33,9 @@ "os == 'linux' && socketprocess_networking", ] +["browser_contextmenu_blocked_image_protocols.js"] +support-files = ["file_blocked_image_protocols.html"] + ["browser_contextmenu_contenteditable.js"] ["browser_contextmenu_cross_boundary_selection.js"] diff -Nru firefox-esr-140.13.0esr/browser/base/content/test/contextMenu/browser_contextmenu_blocked_image_protocols.js firefox-esr-140.15.0esr/browser/base/content/test/contextMenu/browser_contextmenu_blocked_image_protocols.js --- firefox-esr-140.13.0esr/browser/base/content/test/contextMenu/browser_contextmenu_blocked_image_protocols.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/base/content/test/contextMenu/browser_contextmenu_blocked_image_protocols.js 2026-08-26 17:03:39.000000000 +0000 @@ -0,0 +1,63 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +Services.scriptloader.loadSubScript( + getRootDirectory(gTestPath) + "contextmenu_common.js", + this +); + +const IMAGE_PROTOCOLS_IDS = [ + "cached-favicon", + "moz-icon", + "moz-page-thumb", + "page-icon", +]; + +add_task(async function test_blocked() { + for (const protocol of IMAGE_PROTOCOLS_IDS) { + info(`Testing contextmenu with the ${protocol}: protocol`); + + await BrowserTestUtils.withNewTab( + { + gBrowser, + url: getRootDirectory(gTestPath) + "file_blocked_image_protocols.html", + }, + async browser => { + await SpecialPowers.spawn(browser, [`#${protocol}`], async selector => { + const img = content.document.querySelector(selector); + if (!img.complete) { + await ContentTaskUtils.waitForEvent(img, "load"); + } + }); + + let contextMenu = document.getElementById("contentAreaContextMenu"); + let popupShown = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + + await BrowserTestUtils.synthesizeMouse( + `#${protocol}`, + 2, + 2, + { type: "contextmenu", button: 2 }, + browser + ); + await popupShown; + + let viewImageItem = document.getElementById("context-viewimage"); + ok(viewImageItem.hidden, "View Image menu item should be hidden"); + + let saveImageItem = document.getElementById("context-saveimage"); + ok(saveImageItem.hidden, "Save Image menu item should be hidden"); + + let sendImageItem = document.getElementById("context-sendimage"); + ok(!sendImageItem.hidden, "Send Image menu item should be shown"); + + contextMenu.hidePopup(); + } + ); + } +}); diff -Nru firefox-esr-140.13.0esr/browser/base/content/test/contextMenu/file_blocked_image_protocols.html firefox-esr-140.15.0esr/browser/base/content/test/contextMenu/file_blocked_image_protocols.html --- firefox-esr-140.13.0esr/browser/base/content/test/contextMenu/file_blocked_image_protocols.html 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/base/content/test/contextMenu/file_blocked_image_protocols.html 2026-08-26 17:03:39.000000000 +0000 @@ -0,0 +1,9 @@ + + + + + + + + + diff -Nru firefox-esr-140.13.0esr/browser/base/content/test/siteIdentity/browser_secure_transport_insecure_scheme.js firefox-esr-140.15.0esr/browser/base/content/test/siteIdentity/browser_secure_transport_insecure_scheme.js --- firefox-esr-140.13.0esr/browser/base/content/test/siteIdentity/browser_secure_transport_insecure_scheme.js 2026-07-15 20:30:27.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/base/content/test/siteIdentity/browser_secure_transport_insecure_scheme.js 2026-08-26 17:03:39.000000000 +0000 @@ -56,7 +56,7 @@ let blob = new Blob([JSON.stringify(debug, null, 2)], { type: "application/json", }); - let blobUri = URL.createObjectURL(blob); + let blobUri = content.URL.createObjectURL(blob); content.document.location = blobUri; }); await BrowserTestUtils.browserLoaded(browser); diff -Nru firefox-esr-140.13.0esr/browser/base/content/test/static/browser_all_files_referenced.js firefox-esr-140.15.0esr/browser/base/content/test/static/browser_all_files_referenced.js --- firefox-esr-140.13.0esr/browser/base/content/test/static/browser_all_files_referenced.js 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/base/content/test/static/browser_all_files_referenced.js 2026-08-26 17:03:40.000000000 +0000 @@ -121,6 +121,11 @@ "chrome://newtab/", ]; +if (AppConstants.platform == "win") { + // Referenced via resource://gfxsanity/ + gExceptionPaths.push("resource://gre-resources/gfxsanity/"); +} + // These are not part of the omni.ja file, so we find them only when running // the test on a non-packaged build. if (AppConstants.platform == "macosx") { diff -Nru firefox-esr-140.13.0esr/browser/base/content/test/static/browser_parsable_css.js firefox-esr-140.15.0esr/browser/base/content/test/static/browser_parsable_css.js --- firefox-esr-140.13.0esr/browser/base/content/test/static/browser_parsable_css.js 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/base/content/test/static/browser_parsable_css.js 2026-08-26 17:03:40.000000000 +0000 @@ -416,8 +416,14 @@ function chromeFileExists(aURI) { let available = 0; try { + let uri = NetUtil.newURI(aURI); + // moz-icon: is only loadable as an image, so we pretend to do that. + let contentPolicyType = uri.schemeIs("moz-icon") + ? Ci.nsIContentPolicy.TYPE_IMAGE + : Ci.nsIContentPolicy.TYPE_OTHER; let channel = NetUtil.newChannel({ - uri: aURI, + uri, + contentPolicyType, loadUsingSystemPrincipal: true, }); let stream = channel.open(); diff -Nru firefox-esr-140.13.0esr/browser/components/asrouter/tests/browser/browser_asrouter_experimentsAPILoader.js firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/browser_asrouter_experimentsAPILoader.js --- firefox-esr-140.13.0esr/browser/components/asrouter/tests/browser/browser_asrouter_experimentsAPILoader.js 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/browser_asrouter_experimentsAPILoader.js 2026-08-26 17:03:40.000000000 +0000 @@ -4,7 +4,7 @@ const { ASRouter } = ChromeUtils.importESModule( "resource:///modules/asrouter/ASRouter.sys.mjs" ); -const { EnrollmentType, ExperimentAPI } = ChromeUtils.importESModule( +const { EnrollmentType } = ChromeUtils.importESModule( "resource://nimbus/ExperimentAPI.sys.mjs" ); const { NimbusTestUtils } = ChromeUtils.importESModule( diff -Nru firefox-esr-140.13.0esr/browser/components/asrouter/tests/browser/browser_asrouter_targeting.js firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/browser_asrouter_targeting.js --- firefox-esr-140.13.0esr/browser/components/asrouter/tests/browser/browser_asrouter_targeting.js 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/browser_asrouter_targeting.js 2026-08-26 17:03:39.000000000 +0000 @@ -9,7 +9,6 @@ BuiltInThemes: "resource:///modules/BuiltInThemes.sys.mjs", CFRMessageProvider: "resource:///modules/asrouter/CFRMessageProvider.sys.mjs", ClientID: "resource://gre/modules/ClientID.sys.mjs", - ExperimentAPI: "resource://nimbus/ExperimentAPI.sys.mjs", FxAccounts: "resource://gre/modules/FxAccounts.sys.mjs", HomePage: "resource:///modules/HomePage.sys.mjs", InfoBar: "resource:///modules/asrouter/InfoBar.sys.mjs", diff -Nru firefox-esr-140.13.0esr/browser/components/asrouter/tests/browser/browser_trigger_messagesLoaded.js firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/browser_trigger_messagesLoaded.js --- firefox-esr-140.13.0esr/browser/components/asrouter/tests/browser/browser_trigger_messagesLoaded.js 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/browser_trigger_messagesLoaded.js 2026-08-26 17:03:40.000000000 +0000 @@ -8,7 +8,7 @@ const { RemoteSettings } = ChromeUtils.importESModule( "resource://services-settings/remote-settings.sys.mjs" ); -const { EnrollmentType, ExperimentAPI } = ChromeUtils.importESModule( +const { EnrollmentType } = ChromeUtils.importESModule( "resource://nimbus/ExperimentAPI.sys.mjs" ); const { NimbusTestUtils } = ChromeUtils.importESModule( diff -Nru firefox-esr-140.13.0esr/browser/components/asrouter/tests/browser/head.js firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/head.js --- firefox-esr-140.13.0esr/browser/components/asrouter/tests/browser/head.js 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/components/asrouter/tests/browser/head.js 2026-08-26 17:03:40.000000000 +0000 @@ -2,6 +2,7 @@ ChromeUtils.defineESModuleGetters(this, { ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs", + ExperimentAPI: "resource://nimbus/ExperimentAPI.sys.mjs", FeatureCallout: "resource:///modules/asrouter/FeatureCallout.sys.mjs", FeatureCalloutBroker: @@ -10,6 +11,7 @@ FeatureCalloutMessages: "resource:///modules/asrouter/FeatureCalloutMessages.sys.mjs", + NimbusTestUtils: "resource://testing-common/NimbusTestUtils.sys.mjs", PlacesTestUtils: "resource://testing-common/PlacesTestUtils.sys.mjs", QueryCache: "resource:///modules/asrouter/ASRouterTargeting.sys.mjs", AboutWelcomeParent: "resource:///actors/AboutWelcomeParent.sys.mjs", @@ -29,6 +31,10 @@ const calloutDismissSelector = `#${calloutId} .dismiss-button`; const CTASelector = `#${calloutId} :is(.primary, .secondary)`; +add_setup(function setup() { + registerCleanupFunction(NimbusTestUtils.disableSignatureVerification()); +}); + function pushPrefs(...prefs) { return SpecialPowers.pushPrefEnv({ set: prefs }); } diff -Nru firefox-esr-140.13.0esr/browser/components/preferences/tests/head.js firefox-esr-140.15.0esr/browser/components/preferences/tests/head.js --- firefox-esr-140.13.0esr/browser/components/preferences/tests/head.js 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/components/preferences/tests/head.js 2026-08-26 17:03:40.000000000 +0000 @@ -486,6 +486,9 @@ ]; async function setupLabsTest(recipes) { + const restoreSignatureVerification = + NimbusTestUtils.disableSignatureVerification(); + await SpecialPowers.pushPrefEnv({ set: [ ["app.normandy.run_interval_seconds", 0], @@ -517,6 +520,7 @@ return async function cleanup() { await NimbusTestUtils.removeStore(ExperimentAPI.manager.store); await SpecialPowers.popPrefEnv(); + restoreSignatureVerification(); }; } diff -Nru firefox-esr-140.13.0esr/browser/components/shell/nsWindowsShellService.cpp firefox-esr-140.15.0esr/browser/components/shell/nsWindowsShellService.cpp --- firefox-esr-140.13.0esr/browser/components/shell/nsWindowsShellService.cpp 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/components/shell/nsWindowsShellService.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -94,24 +94,6 @@ #define REG_FAILED(val) (val != ERROR_SUCCESS) -#ifdef DEBUG -# define NS_ENSURE_HRESULT(hres, ret) \ - do { \ - HRESULT result = hres; \ - if (MOZ_UNLIKELY(FAILED(result))) { \ - mozilla::SmprintfPointer msg = mozilla::Smprintf( \ - "NS_ENSURE_HRESULT(%s, %s) failed with " \ - "result 0x%" PRIX32, \ - #hres, #ret, static_cast(result)); \ - NS_WARNING(msg.get()); \ - return ret; \ - } \ - } while (false) -#else -# define NS_ENSURE_HRESULT(hres, ret) \ - if (MOZ_UNLIKELY(FAILED(hres))) return ret -#endif - using namespace mozilla; using mozilla::intl::Localization; diff -Nru firefox-esr-140.13.0esr/browser/components/tabbrowser/test/browser/tabs/browser_new_tab_in_privilegedabout_process_pref.js firefox-esr-140.15.0esr/browser/components/tabbrowser/test/browser/tabs/browser_new_tab_in_privilegedabout_process_pref.js --- firefox-esr-140.13.0esr/browser/components/tabbrowser/test/browser/tabs/browser_new_tab_in_privilegedabout_process_pref.js 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/components/tabbrowser/test/browser/tabs/browser_new_tab_in_privilegedabout_process_pref.js 2026-08-26 17:03:40.000000000 +0000 @@ -216,13 +216,6 @@ BrowserTestUtils.startLoadingURIString(browser, TEST_HTTP); await BrowserTestUtils.browserLoaded(browser, false, TEST_HTTP); checkBrowserRemoteType(browser, E10SUtils.WEB_REMOTE_TYPE); - - // Check that location change causes a change in process type as well. - await SpecialPowers.spawn(browser, [ABOUT_NEWTAB], uri => { - content.location = uri; - }); - await BrowserTestUtils.browserLoaded(browser, false, ABOUT_NEWTAB); - assertIsPrivilegedProcess(browser, "about:newtab after location change"); } ); diff -Nru firefox-esr-140.13.0esr/browser/config/version.txt firefox-esr-140.15.0esr/browser/config/version.txt --- firefox-esr-140.13.0esr/browser/config/version.txt 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/config/version.txt 2026-08-26 17:03:40.000000000 +0000 @@ -1 +1 @@ -140.13.0 +140.15.0 diff -Nru firefox-esr-140.13.0esr/browser/config/version_display.txt firefox-esr-140.15.0esr/browser/config/version_display.txt --- firefox-esr-140.13.0esr/browser/config/version_display.txt 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/config/version_display.txt 2026-08-26 17:03:40.000000000 +0000 @@ -1 +1 @@ -140.13.0esr +140.15.0esr diff -Nru firefox-esr-140.13.0esr/browser/extensions/webcompat/injections/js/bug1831007-nintendo-window-OnetrustActiveGroups.js firefox-esr-140.15.0esr/browser/extensions/webcompat/injections/js/bug1831007-nintendo-window-OnetrustActiveGroups.js --- firefox-esr-140.13.0esr/browser/extensions/webcompat/injections/js/bug1831007-nintendo-window-OnetrustActiveGroups.js 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/extensions/webcompat/injections/js/bug1831007-nintendo-window-OnetrustActiveGroups.js 2026-08-26 17:03:40.000000000 +0000 @@ -21,4 +21,6 @@ "The window.OnetrustActiveGroups property has been shimmed for compatibility reasons. See https://bugzilla.mozilla.org/show_bug.cgi?id=1831007 for details." ); -window.wrappedJSObject.OnetrustActiveGroups = ""; +if (typeof window.wrappedJSObject.OnetrustActiveGroups == "undefined") { + window.wrappedJSObject.OnetrustActiveGroups = null; +} diff -Nru firefox-esr-140.13.0esr/browser/extensions/webcompat/manifest.json firefox-esr-140.15.0esr/browser/extensions/webcompat/manifest.json --- firefox-esr-140.13.0esr/browser/extensions/webcompat/manifest.json 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/extensions/webcompat/manifest.json 2026-08-26 17:03:39.000000000 +0000 @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Web Compatibility Interventions", "description": "Urgent post-release fixes for web compatibility.", - "version": "140.12.0", + "version": "140.13.0", "browser_specific_settings": { "gecko": { "id": "webcompat@mozilla.org", diff -Nru firefox-esr-140.13.0esr/browser/modules/WindowsJumpLists.sys.mjs firefox-esr-140.15.0esr/browser/modules/WindowsJumpLists.sys.mjs --- firefox-esr-140.13.0esr/browser/modules/WindowsJumpLists.sys.mjs 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/browser/modules/WindowsJumpLists.sys.mjs 2026-08-26 17:03:40.000000000 +0000 @@ -94,7 +94,7 @@ get description() { return _getString("taskbar.tasks.newTab.description"); }, - args: "-new-tab about:blank", + args: ["-new-tab", "about:blank"], iconIndex: 3, // New window icon open: true, close: true, // The jump list already has an app launch icon, but @@ -110,7 +110,7 @@ get description() { return _getString("taskbar.tasks.newWindow.description"); }, - args: "-browser", + args: ["-browser"], iconIndex: 2, // New tab icon open: true, close: true, // No point, but we don't always update the list on @@ -126,7 +126,7 @@ get description() { return _getString("taskbar.tasks.newPrivateWindow.description"); }, - args: "-private-window", + args: ["-private-window"], iconIndex: 4, // Private browsing mode icon open: true, close: true, // No point, but we don't always update the list on @@ -261,7 +261,7 @@ title: row.getResultByName("title"), description: row.getResultByName("title"), path: selfPath, - arguments: row.getResultByName("url"), + arguments: ["-osint", "-url", row.getResultByName("url")], fallbackIconIndex: 1, iconPath, }); diff -Nru firefox-esr-140.13.0esr/config/milestone.txt firefox-esr-140.15.0esr/config/milestone.txt --- firefox-esr-140.13.0esr/config/milestone.txt 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/config/milestone.txt 2026-08-26 17:03:39.000000000 +0000 @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -140.13.0 +140.15.0 diff -Nru firefox-esr-140.13.0esr/debian/changelog firefox-esr-140.15.0esr/debian/changelog --- firefox-esr-140.13.0esr/debian/changelog 2026-07-21 23:00:36.000000000 +0000 +++ firefox-esr-140.15.0esr/debian/changelog 2026-08-19 00:51:19.000000000 +0000 @@ -1,3 +1,41 @@ +firefox-esr (140.15.0esr-1~deb13u1) trixie-security; urgency=medium + + * New upstream release. + * Fixes for mfsa2026-84, also known as: + CVE-2026-75874, CVE-2026-16365, CVE-2026-84119, CVE-2026-84120, + CVE-2026-84121, CVE-2026-84122, CVE-2026-84124, CVE-2026-16371, + CVE-2026-84131, CVE-2026-84143, CVE-2026-84145. + + * third_party/rust/glslopt/.cargo-checksum.json, + third_party/rust/glslopt/glsl-optimizer/include/c11/threads_posix.h: + Fix conficting types for once_flag and call_once. Fixes: #1128875. + + -- Mike Hommey Wed, 19 Aug 2026 09:51:19 +0900 + +firefox-esr (140.14.0esr-1~deb13u1) trixie-security; urgency=medium + + * New upstream release. + * Fixes for mfsa2026-70, also known as: + CVE-2026-74934, CVE-2026-74935, CVE-2026-74936, CVE-2026-74939, + CVE-2026-74940, CVE-2026-74941, CVE-2026-74942, CVE-2026-74943, + CVE-2026-74944, CVE-2026-74945, CVE-2026-74946, CVE-2026-74948, + CVE-2026-74949, CVE-2026-74953, CVE-2026-74957, CVE-2026-74959, + CVE-2026-74960, CVE-2026-74962, CVE-2026-74963, CVE-2026-74964, + CVE-2026-74965, CVE-2026-74967, CVE-2026-74969, CVE-2026-74971, + CVE-2026-74972, CVE-2026-74973, CVE-2026-74974, CVE-2026-74976, + CVE-2026-74983, CVE-2026-74987, CVE-2026-74990. + + * python/mach/mach/command_util.py: Fix AST parsing in DecoratorVisitor for + Python 3.14. bz#1993797. + * python/mozbuild/mozbuild/frontend/reader.py, + python/mozbuild/mozbuild/vendor/rewrite_mozbuild.py: Change uses of + ast.Str with ast.Constant. bz#1969769. + * python/mozbuild/mozbuild/vendor/vendor_python.py, + third_party/python/jsonschema/jsonschema/validators.py: Patch jsonschema + to work with Python 3.14+. bz#1983736. + + -- Mike Hommey Wed, 22 Jul 2026 09:18:35 +0900 + firefox-esr (140.13.0esr-1~deb13u1) trixie-security; urgency=medium * New upstream release. diff -Nru firefox-esr-140.13.0esr/debian/patches/debian-hacks/Set-DPI-to-system-settings.patch firefox-esr-140.15.0esr/debian/patches/debian-hacks/Set-DPI-to-system-settings.patch --- firefox-esr-140.13.0esr/debian/patches/debian-hacks/Set-DPI-to-system-settings.patch 2026-07-21 23:00:27.000000000 +0000 +++ firefox-esr-140.15.0esr/debian/patches/debian-hacks/Set-DPI-to-system-settings.patch 2026-08-19 00:51:19.000000000 +0000 @@ -7,10 +7,10 @@ 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml -index 282bb8d..d9b5c52 100644 +index 03cda69..4a7efdc 100644 --- a/modules/libpref/init/StaticPrefList.yaml +++ b/modules/libpref/init/StaticPrefList.yaml -@@ -9636,7 +9636,7 @@ +@@ -9642,7 +9642,7 @@ # interpretation of physical units such as "pt". - name: layout.css.dpi type: int32_t diff -Nru firefox-esr-140.13.0esr/debian/patches/fixes/Bug-1969769-Change-uses-of-ast.Str-with-ast.Constant.patch firefox-esr-140.15.0esr/debian/patches/fixes/Bug-1969769-Change-uses-of-ast.Str-with-ast.Constant.patch --- firefox-esr-140.13.0esr/debian/patches/fixes/Bug-1969769-Change-uses-of-ast.Str-with-ast.Constant.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/debian/patches/fixes/Bug-1969769-Change-uses-of-ast.Str-with-ast.Constant.patch 2026-08-19 00:51:19.000000000 +0000 @@ -0,0 +1,77 @@ +From: Mike Hommey +Date: Tue, 19 Aug 2025 05:09:09 +0000 +Subject: Bug 1969769 - Change uses of ast.Str with ast.Constant. + r=firefox-build-system-reviewers,ahochheiden + +ast.Str was deprecated in python 3.12 and removed in 3.14. It inherited +from ast.Constant, `Str.s` was equivalent to `Constant.value`, so we can +use the latter on both old and newer python versions. + +Differential Revision: https://phabricator.services.mozilla.com/D261512 +--- + python/mozbuild/mozbuild/frontend/reader.py | 14 +++++++------- + .../mozbuild/mozbuild/vendor/rewrite_mozbuild.py | 6 ++---- + 2 files changed, 9 insertions(+), 11 deletions(-) + +diff --git a/python/mozbuild/mozbuild/frontend/reader.py b/python/mozbuild/mozbuild/frontend/reader.py +index 9f6292c..89bf999 100644 +--- a/python/mozbuild/mozbuild/frontend/reader.py ++++ b/python/mozbuild/mozbuild/frontend/reader.py +@@ -470,7 +470,7 @@ class TemplateFunction: + return c( + ast.Subscript( + value=c(ast.Name(id=self._global_name, ctx=ast.Load())), +- slice=c(ast.Index(value=c(ast.Str(s=node.id)))), ++ slice=c(ast.Index(value=c(ast.Constant(value=node.id)))), + ctx=node.ctx, + ) + ) +@@ -1039,8 +1039,8 @@ class BuildReader: + else: + # Others + assert isinstance(target.slice, ast.Index) +- assert isinstance(target.slice.value, ast.Str) +- key = target.slice.value.s ++ assert isinstance(target.slice.value, ast.Constant) ++ key = target.slice.value.value + elif isinstance(target, ast.Attribute): + assert isinstance(target.attr, str) + key = target.attr +@@ -1051,11 +1051,11 @@ class BuildReader: + value = node.value + if isinstance(value, ast.List): + for v in value.elts: +- assert isinstance(v, ast.Str) +- yield v.s ++ assert isinstance(v, ast.Constant) ++ yield v.value + else: +- assert isinstance(value, ast.Str) +- yield value.s ++ assert isinstance(value, ast.Constant) ++ yield value.value + + assignments = [] + +diff --git a/python/mozbuild/mozbuild/vendor/rewrite_mozbuild.py b/python/mozbuild/mozbuild/vendor/rewrite_mozbuild.py +index cfcc0f1..de06b58 100644 +--- a/python/mozbuild/mozbuild/vendor/rewrite_mozbuild.py ++++ b/python/mozbuild/mozbuild/vendor/rewrite_mozbuild.py +@@ -327,15 +327,13 @@ def assignment_node_to_source_filename_list(code, node): + """ + if isinstance(node.value, ast.List) and "elts" in node.value._fields: + for f in node.value.elts: +- if not isinstance(f, ast.Constant) and not isinstance(f, ast.Str): ++ if not isinstance(f, ast.Constant): + log( + "Found non-constant source file name in list: ", + ast_get_source_segment(code, f), + ) + return [] +- return [ +- f.value if isinstance(f, ast.Constant) else f.s for f in node.value.elts +- ] ++ return [f.value for f in node.value.elts] + elif isinstance(node.value, ast.ListComp): + # SOURCES += [f for f in foo if blah] + log("Could not find the files for " + ast_get_source_segment(code, node.value)) diff -Nru firefox-esr-140.13.0esr/debian/patches/fixes/Bug-1983713-Use-non-deprecated-ast-value.-r-firefox-.patch firefox-esr-140.15.0esr/debian/patches/fixes/Bug-1983713-Use-non-deprecated-ast-value.-r-firefox-.patch --- firefox-esr-140.13.0esr/debian/patches/fixes/Bug-1983713-Use-non-deprecated-ast-value.-r-firefox-.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/debian/patches/fixes/Bug-1983713-Use-non-deprecated-ast-value.-r-firefox-.patch 2026-08-19 00:51:19.000000000 +0000 @@ -0,0 +1,27 @@ +From: Mike Hommey +Date: Tue, 19 Aug 2025 05:08:34 +0000 +Subject: Bug 1983713 - Use non-deprecated ast value. + r=firefox-build-system-reviewers,nalexander,ahochheiden + +ast.Str was deprecated in python 3.12 and removed in 3.14. It inherited +from ast.Constant, `Str.s` was equivalent to `Constant.value`, so we can +use the latter on both old and newer python versions. + +Differential Revision: https://phabricator.services.mozilla.com/D261511 +--- + python/mach/mach/command_util.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/python/mach/mach/command_util.py b/python/mach/mach/command_util.py +index 44e13f1..8539bf37 100644 +--- a/python/mach/mach/command_util.py ++++ b/python/mach/mach/command_util.py +@@ -292,7 +292,7 @@ class DecoratorVisitor(ast.NodeVisitor): + kwarg_dict = {} + + for name, arg in zip(["command", "subcommand"], decorator.args): +- kwarg_dict[name] = arg.s ++ kwarg_dict[name] = arg.value + + for keyword in decorator.keywords: + if keyword.arg not in relevant_kwargs: diff -Nru firefox-esr-140.13.0esr/debian/patches/fixes/Bug-1983736-Patch-jsonschema-to-work-with-Python-3.1.patch firefox-esr-140.15.0esr/debian/patches/fixes/Bug-1983736-Patch-jsonschema-to-work-with-Python-3.1.patch --- firefox-esr-140.13.0esr/debian/patches/fixes/Bug-1983736-Patch-jsonschema-to-work-with-Python-3.1.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/debian/patches/fixes/Bug-1983736-Patch-jsonschema-to-work-with-Python-3.1.patch 2026-08-19 00:51:19.000000000 +0000 @@ -0,0 +1,43 @@ +From: Jan-Erik Rediger +Date: Wed, 27 Aug 2025 01:09:58 +0000 +Subject: Bug 1983736 - Patch jsonschema to work with Python 3.14+ + r=mach-reviewers,ahal,ahochheiden + +Differential Revision: https://phabricator.services.mozilla.com/D262335 +--- + python/mozbuild/mozbuild/vendor/vendor_python.py | 4 ++++ + third_party/python/jsonschema/jsonschema/validators.py | 5 ++++- + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/python/mozbuild/mozbuild/vendor/vendor_python.py b/python/mozbuild/mozbuild/vendor/vendor_python.py +index 9acee94..2801e1b 100644 +--- a/python/mozbuild/mozbuild/vendor/vendor_python.py ++++ b/python/mozbuild/mozbuild/vendor/vendor_python.py +@@ -40,6 +40,10 @@ EXCLUDED_PACKAGES = { + # modified 'dummy' version of it so that the dependency checks still succeed, but + # if it ever is attempted to be used, it will fail gracefully. + "ansicon", ++ # jsonschema 4.17.3 is incompatible with Python 3.14+, ++ # but later versions use a dependency with Rust components, which we thus can't vendor. ++ # For now we apply the minimal patch to jsonschema to make it work again. ++ "jsonschema", + } + + +diff --git a/third_party/python/jsonschema/jsonschema/validators.py b/third_party/python/jsonschema/jsonschema/validators.py +index 66e803e..88316a8b 100644 +--- a/third_party/python/jsonschema/jsonschema/validators.py ++++ b/third_party/python/jsonschema/jsonschema/validators.py +@@ -875,8 +875,11 @@ class RefResolver: + return None + uri, fragment = urldefrag(url) + for subschema in subschemas: ++ id = subschema["$id"] ++ if not isinstance(id, str): ++ continue + target_uri = self._urljoin_cache( +- self.resolution_scope, subschema["$id"], ++ self.resolution_scope, id, + ) + if target_uri.rstrip("/") == uri.rstrip("/"): + if fragment: diff -Nru firefox-esr-140.13.0esr/debian/patches/fixes/Bug-2016618-Fix-Linux-sandbox-build-breakage-on-glib.patch firefox-esr-140.15.0esr/debian/patches/fixes/Bug-2016618-Fix-Linux-sandbox-build-breakage-on-glib.patch --- firefox-esr-140.13.0esr/debian/patches/fixes/Bug-2016618-Fix-Linux-sandbox-build-breakage-on-glib.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/debian/patches/fixes/Bug-2016618-Fix-Linux-sandbox-build-breakage-on-glib.patch 2026-08-19 00:51:19.000000000 +0000 @@ -0,0 +1,21 @@ +From: Mike Hommey +Date: Wed, 19 Aug 2026 10:40:13 +0900 +Subject: Bug 2016618 - Fix Linux sandbox build breakage on glibc 2.43 + +--- + .../chromium/sandbox/linux/system_headers/linux_seccomp.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h b/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h +index a60fe2a..d6a8503 100644 +--- a/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h ++++ b/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h +@@ -5,6 +5,8 @@ + #ifndef SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SECCOMP_H_ + #define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SECCOMP_H_ + ++#include // for SYS_SECCOMP ++ + // The Seccomp2 kernel ABI is not part of older versions of glibc. + // As we can't break compilation with these versions of the library, + // we explicitly define all missing symbols. diff -Nru firefox-esr-140.13.0esr/debian/patches/fixes/Fix-conficting-types-for-once_flag-and-call_once.patch firefox-esr-140.15.0esr/debian/patches/fixes/Fix-conficting-types-for-once_flag-and-call_once.patch --- firefox-esr-140.13.0esr/debian/patches/fixes/Fix-conficting-types-for-once_flag-and-call_once.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/debian/patches/fixes/Fix-conficting-types-for-once_flag-and-call_once.patch 2026-08-19 00:51:19.000000000 +0000 @@ -0,0 +1,56 @@ +From: Mike Hommey +Date: Wed, 19 Aug 2026 09:47:43 +0900 +Subject: Fix conficting types for once_flag and call_once + +https://github.com/jamienicol/glsl-optimizer/commit/9913c27419488217cb3e9aa18dcda41c8dee1284 +--- + third_party/rust/glslopt/.cargo-checksum.json | 2 +- + .../rust/glslopt/glsl-optimizer/include/c11/threads_posix.h | 6 ++++++ + 2 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/third_party/rust/glslopt/.cargo-checksum.json b/third_party/rust/glslopt/.cargo-checksum.json +index ddd05dac..352aac8 100644 +--- a/third_party/rust/glslopt/.cargo-checksum.json ++++ b/third_party/rust/glslopt/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{"Cargo.toml":"010bb96167ff152e0e5ac30f9905dc749a3f038199b70c541c5d8cb97a185ee3","README.md":"4468e08c64c19977707d792bfab0080e35ff927b64990eab77873f8ba056ba1c","build.rs":"6a64610018701781af182c418a4355c9ac5d99d000be9457f0e38a7dadf7542a","glsl-optimizer/CMakeLists.txt":"42ce94744e82ffa000da8b64d81fc140e293b9f5da7dd4cf6b49e7404a2448d9","glsl-optimizer/README.md":"b18eef11a92d267d88a937b1154f7670ee433c730b102fdf7e2da0b02722b146","glsl-optimizer/contrib/glslopt/Main.cpp":"14ba213210c62e234b8d9b0052105fed28eedd83d535ebe85acc10bda7322dd4","glsl-optimizer/contrib/glslopt/Readme":"65d2a6f1aa1dc61e903e090cdade027abad33e02e7c9c81e07dc80508acadec4","glsl-optimizer/generateParsers.sh":"878a97db5d3b69eb3b4c3a95780763b373cfcc0c02e0b28894f162dbbd1b8848","glsl-optimizer/include/GL/gl.h":"1989b51365b6d7d0c48ff6e8b181ef75e2cdf71bfb1626b1cc4362e2f54854a3","glsl-optimizer/include/GL/glext.h":"2ac3681045a35a2194a81a960cad395c04bef1c8a20ef46b799fb24af3ec5f70","glsl-optimizer/include/KHR/khrplatform.h":"1448141a0c054d7f46edfb63f4fe6c203acf9591974049481c32442fb03fd6ed","glsl-optimizer/include/c11/threads.h":"56e9e592b28df19f0db432125223cb3eb5c0c1f960c22db96a15692e14776337","glsl-optimizer/include/c11/threads_posix.h":"f8ad2b69fa472e332b50572c1b2dcc1c8a0fa783a1199aad245398d3df421b4b","glsl-optimizer/include/c11/threads_win32.h":"95bf19d7fc14d328a016889afd583e4c49c050a93bcfb114bd2e9130a4532488","glsl-optimizer/include/c11_compat.h":"103fedb48f658d36cb416c9c9e5ea4d70dff181aab551fcb1028107d098ffa3e","glsl-optimizer/include/c99_compat.h":"aafad02f1ea90a7857636913ea21617a0fcd6197256dcfc6dd97bb3410ba892e","glsl-optimizer/include/no_extern_c.h":"40069dbb6dd2843658d442f926e609c7799b9c296046a90b62b570774fd618f5","glsl-optimizer/license.txt":"e26a745226f4a46b3ca00ffbe8be18507362189a2863d04b4f563ba176a9a836","glsl-optimizer/src/compiler/builtin_type_macros.h":"5b4fc4d4da7b07f997b6eb569e37db79fa0735286575ef1fab08d419e76776ff","glsl-optimizer/src/compiler/glsl/README":"e7d408b621c1b605857c4cab63902f615edb06b530142b91ac040808df6e22f7","glsl-optimizer/src/compiler/glsl/TODO":"dd3b7a098e6f9c85ca8c99ce6dea49d65bb75d4cea243b917f29e4ad2c974603","glsl-optimizer/src/compiler/glsl/ast.h":"3e68ff374350c49211a9931f7f55a485d8d89fc4b21caaffbf6655009ad95bf8","glsl-optimizer/src/compiler/glsl/ast_array_index.cpp":"92b4d501f33e0544c00d14e4f8837753afd916c2b42e076ccc95c9e8fc37ba94","glsl-optimizer/src/compiler/glsl/ast_expr.cpp":"afd712a7b1beb2b633888f4a0911b0a8e4ae5eb5ab9c1e3f247d518cdaaa56d6","glsl-optimizer/src/compiler/glsl/ast_function.cpp":"74f4fbd490e366b37f4715168bb3465ecd9334d4130942f75dcc8e80e8e7f027","glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp":"d0f798eb09271d41d068b9e7b18220d37f1ed0083300ab51eba30989698fe23d","glsl-optimizer/src/compiler/glsl/ast_type.cpp":"8eb790b24b26dfb72bdc333744b566c26d8464c5d47d20eae659461f5c4899f7","glsl-optimizer/src/compiler/glsl/builtin_functions.cpp":"454189d643c220fcb49116ee5c8a34f7b349aa67564040deb8607f6a41a15e70","glsl-optimizer/src/compiler/glsl/builtin_functions.h":"a37cad7ed09b522c5b8bec7b80115a36846e7ba6e0874a2a858e32f7f202c665","glsl-optimizer/src/compiler/glsl/builtin_int64.h":"619def6f3aebf180da3944ef08f159ab12a58b24767e41d8b985ac37ded54d62","glsl-optimizer/src/compiler/glsl/builtin_types.cpp":"afec060b62d6f3b00bfbf94e9fa5f96341ce096c128d1eef322791e6ed9cea4d","glsl-optimizer/src/compiler/glsl/builtin_variables.cpp":"6563bfb1345cbca4c77e00eef09ad152f3e1dc271d246a08c5ce9e1f4ce4250a","glsl-optimizer/src/compiler/glsl/float64.glsl":"1072fd888be48c2a7a5117cd2d92a65f034965a66375f598bb856bff5d7be766","glsl-optimizer/src/compiler/glsl/generate_ir.cpp":"e5f0175370a0d07f93c48d3f0f1b8233d12c64a7b02de02dcc753ef7b398ef0f","glsl-optimizer/src/compiler/glsl/glcpp/README":"a0332a1b221d047e9cce5181a64d4ac4056046fd878360ec8ae3a7b1e062bcff","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.c":"2d179879b1ffe84f58875eee5b0c19b6bae9c973b0c48e6bcd99978f2f501c80","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.l":"e4c5744c837200dafd7c15a912d13f650308ea552454d4fa67271bc0a5bde118","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.c":"03494f9ce1cb82260506e2559e73a3eeb622c4bd51b65eaa0a2c3351862bd4c8","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.h":"264d9a18421cde255ce34a0a62b3d8e73465359f0d167e64aa3973062aae5bdd","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.y":"fafb66e3a8f149d19e085f18a4273ba6d4c11af9e9a01d665cc784dddf97b79f","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.c":"37ed294403c2abfd17fd999d1ae8d11b170e5e9c878979fefac74a31195c96b0","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.h":"85ac8b444bcbd0822b66448a1da407b6ae5467b649f5afaf5c58325bd7569468","glsl-optimizer/src/compiler/glsl/glcpp/pp.c":"a52d94f1bcb3fb2747a95709c4a77c25de7eea8354d2b83bb18efd96976a4473","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.c":"d11aeb3acfe966d1b78f1ee49804093f2434214c41391d139ffcb67b69dc9862","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.h":"abbf1f36ec5a92d035bfbb841b9452287d147616e56373cdbee1c0e55af46406","glsl-optimizer/src/compiler/glsl/glsl_lexer.cpp":"272b9fc1383d72b81bfc03fa11fdf82270ed91a294e523f9ce2b4554bd3effa9","glsl-optimizer/src/compiler/glsl/glsl_lexer.ll":"2b57d9f9eb830c3d7961d4533048a158ee6f458c8d05c65bea7b7cfbc36e4458","glsl-optimizer/src/compiler/glsl/glsl_optimizer.cpp":"f8095d20629d0af70be930b0612e169edb274551a1d25a3cd1bf9995a11ce2e8","glsl-optimizer/src/compiler/glsl/glsl_optimizer.h":"22e843b4ec53ba5f6cd85ca5f7bad33922dca8061b19fb512d46f1caca8d4757","glsl-optimizer/src/compiler/glsl/glsl_parser.cpp":"126baf368d525aba301854e3d91ba60b5aee32e1102376af71416f32cb95ec48","glsl-optimizer/src/compiler/glsl/glsl_parser.h":"2ea9a50716098a8f7bef782d2a030d757b68da73afb01b4d4940d3e8381d44e8","glsl-optimizer/src/compiler/glsl/glsl_parser.yy":"6b1fd1576b29fce005dff744a6dbd0219e4c695c361d61864e1f3a8d6fa6b764","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.cpp":"aad64b5b66467da650091430681e8c6a820cf3cadc4db3c160bf2f15875390ae","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.h":"71fd0e92bbdb193dfb067d7bfdb1200d77392be2fbd0cbfc9ca89d1bb4c7e741","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.cpp":"6660fb83c0ddddbbd64581d46ccfdb9c84bfaa99d13348c289e6442ab00df046","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.h":"24682b8304e0ea3f6318ddb8c859686bd1faee23cd0511d1760977ae975d41bf","glsl-optimizer/src/compiler/glsl/hir_field_selection.cpp":"72a039b0fcab4161788def9e4bedac7ac06a20d8e13146529c6d246bd5202afd","glsl-optimizer/src/compiler/glsl/int64.glsl":"303dbe95dde44b91aee3e38b115b92028400d6a92f9268975d607471984e13eb","glsl-optimizer/src/compiler/glsl/ir.cpp":"2b4741cce90b5d4abff5d719c7324e2693c67294d4d99736cb241554adb281bc","glsl-optimizer/src/compiler/glsl/ir.h":"990b1c74447c4eb4835353ccb0ed9aea644f97fc1129ef1739cd935075d85d2e","glsl-optimizer/src/compiler/glsl/ir_array_refcount.cpp":"8cdc1cffe01e42e0566fa2193a75f789628e8025ad1b82f0ee6f204451b7f9f7","glsl-optimizer/src/compiler/glsl/ir_array_refcount.h":"75f06ec81342b379096ca52e1dc0fd5f19a11ff8e9b58203c20628179d644c12","glsl-optimizer/src/compiler/glsl/ir_basic_block.cpp":"1e2920b1c0ecb08424c745c558f84d0d7e44b74585cf2cc2265dc4dfede3fa2f","glsl-optimizer/src/compiler/glsl/ir_basic_block.h":"81be7da0fc0ee547cd13ec60c1fcd7d3ce3d70d7e5e988f01a3b43a827acdf05","glsl-optimizer/src/compiler/glsl/ir_builder.cpp":"daba29c5a1efdd5a9754f420eb3e2ebdf73485273497f40d4863dadeddb23c0d","glsl-optimizer/src/compiler/glsl/ir_builder.h":"2822e74dd3f6e3df8b300af27d5b11ea2dd99d0e5e7ca809b7bbcce9833c483c","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.cpp":"8c6df5abf2fe313363f285f171c19ca6c8ee4f3bc2ed79d33c0c88cc8be45c48","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.h":"799852adc3a0e54d04080655e7cebfa0d3bf5b6ffed5d8414f141380665d4db7","glsl-optimizer/src/compiler/glsl/ir_clone.cpp":"d897a4e1f5bbec4a6a2f15044c1be9a4d13899c73be77335b041049a4589aa5d","glsl-optimizer/src/compiler/glsl/ir_constant_expression.cpp":"78bd87ddb09db67f6c499067728d72aef4f16aa02721a99a4b769d1e0cfa9010","glsl-optimizer/src/compiler/glsl/ir_equals.cpp":"bca28533a6310b0fc152b56d80872368f1510dc62ed6e8ac199b9ffa7fac02e7","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.cpp":"7e918d4e1f237eca01396004015865ce345afe32a876c9dbc6728576a1a7eae4","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.h":"f45b66aa9497520e7e08e612d24b308477c34477fbd963ee9320eac664957f16","glsl-optimizer/src/compiler/glsl/ir_expression_operation.h":"cc9f10727dbd26cac506804f51456302c702650f9eeb59054a7e1575d5cf6687","glsl-optimizer/src/compiler/glsl/ir_expression_operation.py":"7b86c96021b9fbe165957f4ecb0b612fefcde1c2cf3c6d75e3cdb22e369216ba","glsl-optimizer/src/compiler/glsl/ir_expression_operation_constant.h":"9ad3346416392e3efa11e12ecf2feca7453c5253d241eb96c91dfb85d4f2b971","glsl-optimizer/src/compiler/glsl/ir_expression_operation_strings.h":"a6826daf496a8b9e89885bc2a161ac3445d501b23c6e0ac33e2c01b506b273c8","glsl-optimizer/src/compiler/glsl/ir_function.cpp":"7537365fc0fbe4b37a26b9a2146cc64d3e9a774d60eab63b65002ad165ae8fc7","glsl-optimizer/src/compiler/glsl/ir_function_can_inline.cpp":"faddbf112187a048d502716a3fb82570a322299ba2a3abd79388382c82040bfc","glsl-optimizer/src/compiler/glsl/ir_function_detect_recursion.cpp":"9176973eaf5c0a984701f953bb7a80f37dca43d59b5bce50fc69b3f02f2902d7","glsl-optimizer/src/compiler/glsl/ir_function_inlining.h":"9739493f99c489987d650762fccdd3fb3d432f6481d67f6c799176685bd59632","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.cpp":"3725861fbe2b98e0617f52d3b14cf6d3b25fb5ec00f5ef5d308b03642f592767","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.h":"e0560210e966c0c31e4ca843e80ea154e64db5a444b8c2df845b6ba5b3a43fc1","glsl-optimizer/src/compiler/glsl/ir_hv_accept.cpp":"caf7ce2cd9494aadd3c58bcf77f29de58368dc9e347a362bbf37f8bda9509b80","glsl-optimizer/src/compiler/glsl/ir_optimization.h":"8b3dcfc7f9e96b21a8dd47a0040d90be483a9e67a2cdce3a697188fb758d4630","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.cpp":"f8e34a983452be0dcb5a695e9c8e895eead24f9e540992a8afe510ae85da4c4c","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.h":"1ad1bd3efd1ace39051c13f904c05fd80425d329444f9a8d47fd6d948faf46e0","glsl-optimizer/src/compiler/glsl/ir_print_visitor.cpp":"643f5a68aae3fb37267fd793f1216d1cfdeb2c09338c26b1f30e4c6deaef4de5","glsl-optimizer/src/compiler/glsl/ir_print_visitor.h":"4573eb93268a2654c14b505253dd651e2695d43dc745904d824da18305269b95","glsl-optimizer/src/compiler/glsl/ir_reader.cpp":"06bfba802c8354e5a8b2334b6d78d6297de18235bedd3f8fbb382c89870b02f2","glsl-optimizer/src/compiler/glsl/ir_reader.h":"63e3f7f1597936a7011d5b520e171b197bf82bee6c1560d822c3edf5aaa6f9e9","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.cpp":"84b5c5d746555adca85759c2912fe48010232b7c1c0bd2cf03bd04067a85e66f","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.h":"fd8c561b71085d3211fff85ed514fecb299d8ce19a04bc063419a55b6d840525","glsl-optimizer/src/compiler/glsl/ir_set_program_inouts.cpp":"ab9f115ce9e7f312d9c7978340ced0dc4ae6d13a80e08442ba9709d11d50cae5","glsl-optimizer/src/compiler/glsl/ir_uniform.h":"683ae6896b1a08470c090be5f822fc31cd434eab9216e954b9bba24a46975109","glsl-optimizer/src/compiler/glsl/ir_unused_structs.cpp":"9c1620c45f2fc071fe5ed828472040b14c5f42effe06aa0e3b8352c95ef78786","glsl-optimizer/src/compiler/glsl/ir_unused_structs.h":"13387b49c23093575276b25b9dfd31fedd8f131c5c4f3128ab04cf03e15b5295","glsl-optimizer/src/compiler/glsl/ir_validate.cpp":"6b232be5999a86ea278f4f15b2832d76843246509118d924243055a3b9b0299f","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.cpp":"2764a3cad937d53f36db7447c3a5b98b04bf153acf81074d971857fc5bca460d","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.h":"b0668e3eb1501ef65e38fe12830742ecb3d28e6039f30e366c8924efc29b4a39","glsl-optimizer/src/compiler/glsl/ir_visitor.h":"f21b3534c3d66d5fb707d1581fece7e1eb043523afbaedf89918cfb031c6df94","glsl-optimizer/src/compiler/glsl/link_atomics.cpp":"360f0209e11f367ba358223597b0a118bae095bff16337cf03f1fb89c5b80ca6","glsl-optimizer/src/compiler/glsl/link_functions.cpp":"de7895da8aa33a1e3c2c1eb2fdaf267ab5d1fbfdb79ae2e67f95211e946e294c","glsl-optimizer/src/compiler/glsl/link_interface_blocks.cpp":"1926cfa73810704eb19b916c1b2cdb9321155e2f98b2a0a57c7c3c6e960540cd","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.cpp":"1e14e06ca3b2c1089cfba2e8eaf0c1f373d9d6374b6082f320962dd71ae09611","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.h":"fd58c155af645295bb6aec08797889de586f4d919731de2bce57e8dce59bb048","glsl-optimizer/src/compiler/glsl/link_uniform_blocks.cpp":"09589f49776dce32e6c4044937de7e0c839a9754ad31960148f8f9e010658997","glsl-optimizer/src/compiler/glsl/link_uniform_initializers.cpp":"bf98e08c12db466acf9623cbeb8fa8e3b4002512722e7a6521287f558a099f37","glsl-optimizer/src/compiler/glsl/link_uniforms.cpp":"84bad5b1377362cecf259b05124239be5220b03ce1c0c61b59bd9a47e4379af2","glsl-optimizer/src/compiler/glsl/link_varyings.cpp":"a5f1a53e7c80d635515fe808ff223d89fef1767abb0f2b7aa28fa6773dca353f","glsl-optimizer/src/compiler/glsl/link_varyings.h":"b9dbe018f038df69763df2e928742ce81bbc6e3aaba26f50621e30a6d9aa6220","glsl-optimizer/src/compiler/glsl/linker.cpp":"40b1ecd5d4f6c7f13d5a87ce390561a51fdf6f3fcd9b2197b9c88b03a773ba94","glsl-optimizer/src/compiler/glsl/linker.h":"ecf94b4ad75ef461c27c557fda4bd25f34c91930822b8e1d729ec84520d4a049","glsl-optimizer/src/compiler/glsl/linker_util.cpp":"1663ad88e2a369305659aeeffaedb5bd752cf76340a2ba5797fc0bf600633cf9","glsl-optimizer/src/compiler/glsl/linker_util.h":"6db788daf9c8e87ae2764b61a8b37ebe419e69c1b82ddee01986e37c978c6993","glsl-optimizer/src/compiler/glsl/list.h":"b1f46ce0e552fe7c45b2a19408a9d97662e23e4b182ab335491c26f8cf25886f","glsl-optimizer/src/compiler/glsl/loop_analysis.cpp":"57ecd573477c68091c7cc99537faa7139a8f395935e3d4f10144cefdefb5a611","glsl-optimizer/src/compiler/glsl/loop_analysis.h":"a85f045a038ee5b5176063e85d7988865862c44ab0580f771b993a042d0b69cc","glsl-optimizer/src/compiler/glsl/loop_unroll.cpp":"bd4292ea2809f5a669bcb76ceaa1ac365772dcd638c579c3ed10275214901a54","glsl-optimizer/src/compiler/glsl/lower_blend_equation_advanced.cpp":"8cfbef140d9c4b4d2f57bfa05c9c374d31a121d0f87afce94333f049023b654a","glsl-optimizer/src/compiler/glsl/lower_buffer_access.cpp":"1ae221c3c7a95aeb867207e7a742be635f91b406c157747bfd6ddf10274d97fb","glsl-optimizer/src/compiler/glsl/lower_buffer_access.h":"807886953a576a323591798cbca5e2df24295ea893b28affd8ffb5926cebaa04","glsl-optimizer/src/compiler/glsl/lower_builtins.cpp":"4d81afc32cf58e1481fcb5e42888ab93dbe6820310a20ff7a9982b77b2152d9b","glsl-optimizer/src/compiler/glsl/lower_const_arrays_to_uniforms.cpp":"608403f0eeeedf21cfcd3014116e0f44e28cbdf6c4c32aac7e613e64e30205e1","glsl-optimizer/src/compiler/glsl/lower_cs_derived.cpp":"179905cd47a294122adeb5b0abfed6f2f67782dcde21b544d1ee2c1985154e66","glsl-optimizer/src/compiler/glsl/lower_discard.cpp":"3b361b2db0004d544d64611cb50d5a6e364cf6c5f2e60c449085d7d753dd7fb0","glsl-optimizer/src/compiler/glsl/lower_discard_flow.cpp":"f5c29b6a27690bb5c91f196d1a1cf9f6be4f1025292311fe2dac561ce6774dee","glsl-optimizer/src/compiler/glsl/lower_distance.cpp":"a118c85493d5d22b2c059a930c51a5854896d4b1dade76598eaa985e5a3dff8c","glsl-optimizer/src/compiler/glsl/lower_if_to_cond_assign.cpp":"469e617757fd1728709cce021aac5c8da05ee503bf5366977bdc4ef7a6d83950","glsl-optimizer/src/compiler/glsl/lower_instructions.cpp":"6ff5c396abe40d8a2145d571e99e2bbe9143393e15aafc28adc2803a01d821b6","glsl-optimizer/src/compiler/glsl/lower_int64.cpp":"d1ed41196880dd53c7b13e2782f9423f8442bf1d46186e8be92b1b66218a83ee","glsl-optimizer/src/compiler/glsl/lower_jumps.cpp":"34de7b493f281589fb0c2c0f6e885d0a0fabbe7a4e97a73de374dd714777a58c","glsl-optimizer/src/compiler/glsl/lower_mat_op_to_vec.cpp":"dff7a308edc4846c348ed4225c6699a9c75abac68d88f41f85954276552779f4","glsl-optimizer/src/compiler/glsl/lower_named_interface_blocks.cpp":"16063ac127bff75a68272070ab11c21c25101edbff62b4c68f4983b4cd941af0","glsl-optimizer/src/compiler/glsl/lower_offset_array.cpp":"3b00773399135aea85746a5a68b96ef000bc6841be1a2c8e6f25c516628b0949","glsl-optimizer/src/compiler/glsl/lower_output_reads.cpp":"a0fc9975d5aa1617e21fc6c353659a9802da9e83779a3eef4ec584f74b4dadc5","glsl-optimizer/src/compiler/glsl/lower_packed_varyings.cpp":"7550099d4ae123d71541c2fc88bc04fbfe9271ec75d7e210987d1c8cac3cf3ea","glsl-optimizer/src/compiler/glsl/lower_packing_builtins.cpp":"79a13d161fe505a410ab948d92769395708693ec888153630fa240e5b97e356f","glsl-optimizer/src/compiler/glsl/lower_precision.cpp":"f82a185b879872b977a1787d8061b9a80bc4cf8db1b970db6efba2ad9cc20fa2","glsl-optimizer/src/compiler/glsl/lower_shared_reference.cpp":"ea2dccf50a83bc19391bf6b7ab6aa53c0005f427af4066d25140340af9a4beef","glsl-optimizer/src/compiler/glsl/lower_subroutine.cpp":"f69fa53650eeb6f2944fce4d36a6e0a423e6705f3a3bd3389c7fadb83cfc8802","glsl-optimizer/src/compiler/glsl/lower_tess_level.cpp":"b196c9d424c0569f3e85d75c2d125af21566cb113d69036db87c0990703e0fa7","glsl-optimizer/src/compiler/glsl/lower_texture_projection.cpp":"4d247f244272adc8250fd888d8d932a140dd5de4d1efc7a58492c3c2b8291527","glsl-optimizer/src/compiler/glsl/lower_ubo_reference.cpp":"89bdbc6c1669230c644c0857db1ce2781ec61d349ecd08c7914146e1f4750a4a","glsl-optimizer/src/compiler/glsl/lower_variable_index_to_cond_assign.cpp":"fce930f29ac9405b297d1f749d68f59506b89c70b4ee1b1ab8cf49a34cc71ecf","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_cond_assign.cpp":"3c67d851a11a55fad1c49a550f3a0cfe50892d33a3f238ce266cd829eba510a8","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_swizzle.cpp":"f5ec666b73e1415cbab32519a53605ed385f3b03e889560373dbce69dda5000e","glsl-optimizer/src/compiler/glsl/lower_vector.cpp":"f7c13f5572ebe09b6a71553133b2cf003cd4b77b9657600672ee3b21bf890725","glsl-optimizer/src/compiler/glsl/lower_vector_derefs.cpp":"b05793da6dd620a531b43df5af8b2ecbc37b9db0c88910f5724ea10bcd057e19","glsl-optimizer/src/compiler/glsl/lower_vector_insert.cpp":"fee772ec17eea5e86a529bf9c5fa2ee0d29a5982bb75ebc6d68ed36cd19aa299","glsl-optimizer/src/compiler/glsl/lower_vertex_id.cpp":"690e8715182e03fead5cc5a35251fb4f41b357e4c71a1dfbc4bd7be19862b56d","glsl-optimizer/src/compiler/glsl/lower_xfb_varying.cpp":"58c0e8b270e4bbde54250be03cdb2f36966bcafb785372ad2e2b786835df7f9f","glsl-optimizer/src/compiler/glsl/main.cpp":"ae5e88abbbc8a12f769e1296bad938b9d7398cc6da0d3d0caeceeeb876536850","glsl-optimizer/src/compiler/glsl/opt_add_neg_to_sub.h":"f5054944bfd068810629080d0ea11df78b3f57a8f86df75e13ca50157ad1964d","glsl-optimizer/src/compiler/glsl/opt_algebraic.cpp":"25f45b20e1972ee8c789177a1aeda6e4286c25db2eae3a43ff83029ae64969c0","glsl-optimizer/src/compiler/glsl/opt_array_splitting.cpp":"19d3ce0e815438f4df9ab2890e767b03a4f3f191b53bb30c0217cf2ae6a95430","glsl-optimizer/src/compiler/glsl/opt_conditional_discard.cpp":"0e44e0e126711a3725c1f3a2aa65ff03c381fed08680ffc30101aae60f716c4e","glsl-optimizer/src/compiler/glsl/opt_constant_folding.cpp":"a088d04d9b45f9e55e235835648f614c89b7803c03a6d4f6a6d1a6bc1f0228bd","glsl-optimizer/src/compiler/glsl/opt_constant_propagation.cpp":"8a9440d77ecd6dcf13e683cbb99943aab6311c8fd4b5f6a9189a8d4f270746f4","glsl-optimizer/src/compiler/glsl/opt_constant_variable.cpp":"63d3ccd4dd09f19c9cf1a2f51592111bed41284504f29f3c0de4cadebc439a37","glsl-optimizer/src/compiler/glsl/opt_copy_propagation_elements.cpp":"ffa0f50863995e0d2e31f55a52e82319edc71e520987bebd7f7e561ea331c64b","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_variables.cpp":"84e8747b948232f01dd56b428b9315f96f9511f605f240119fc446fae28981a9","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_varyings.cpp":"761523e88f5b3ba785170f4d7205e94fa99acb7e74d29efbe40e1c010e1dbdb3","glsl-optimizer/src/compiler/glsl/opt_dead_code.cpp":"fd1ba2da7337d4e5dad17f5c2d73d9cc8880305f423e85d64cf94553588fa401","glsl-optimizer/src/compiler/glsl/opt_dead_code_local.cpp":"969a598b4df322baf222258a66cd64a326ea20e5b3125be9d8d1771f522c69e0","glsl-optimizer/src/compiler/glsl/opt_dead_functions.cpp":"774cae6536d02edf26e996a2a895e1f62d5098f16dc96b44798b4fc731a9a95f","glsl-optimizer/src/compiler/glsl/opt_flatten_nested_if_blocks.cpp":"3696a5c55f02e20056e085bc2714f73ac992f221b6f3387d655068e86b512046","glsl-optimizer/src/compiler/glsl/opt_flip_matrices.cpp":"44f0fe05b49329667671f88c96dc86ab3fe1459ff7b87f2b2d88de2d49829f9f","glsl-optimizer/src/compiler/glsl/opt_function_inlining.cpp":"fb56a33c90419a01676b57cbd91d0674a54cca40e6defaacc88dd33facebc131","glsl-optimizer/src/compiler/glsl/opt_if_simplification.cpp":"ac406eb35e379c357641d6c5749f50c65961455924d3dc884e2b90046fa92c5c","glsl-optimizer/src/compiler/glsl/opt_minmax.cpp":"8abd59d3b14ef60ff14a9c69660e6945f5cf10b97edb4afebe56be3f81d96316","glsl-optimizer/src/compiler/glsl/opt_rebalance_tree.cpp":"8bb6329dc0f299042368fc81934c2df019b45ab9f7aa0415d4e57b8d1ff98c9f","glsl-optimizer/src/compiler/glsl/opt_redundant_jumps.cpp":"222c73e2ac7a938ebb6428cc6c780c908ff6156d8ff935b04fed93a48fc10496","glsl-optimizer/src/compiler/glsl/opt_structure_splitting.cpp":"2edc79cc13f3177934e0443ad62f5976a1991f01f86ea303a803434849b13a47","glsl-optimizer/src/compiler/glsl/opt_swizzle.cpp":"015d0abddfe507f67c4b96c82988d861d018ededf7bf055e2bcbe9ea92da694e","glsl-optimizer/src/compiler/glsl/opt_tree_grafting.cpp":"46d28ac983ea244a4315bdc0e8892979ec4d1f9b9a96ac8a8a08006d9bc5e878","glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp":"d80ee43bb97d9f016fb9c5e1e06f5b2afa569811f368ba067be794ec11d085fb","glsl-optimizer/src/compiler/glsl/program.h":"2982447e2abd35371e273ad87951722782a8b21c08294f67c39d987da1e1c55f","glsl-optimizer/src/compiler/glsl/propagate_invariance.cpp":"080943e21baa32494723a2eefb185915d2daae1f46d6df420145c5ad6857e119","glsl-optimizer/src/compiler/glsl/s_expression.cpp":"1ced972bc6ecc8eab4116ea71fb0212ab9ae5bcc0be3b47aa5d9d903566b3af1","glsl-optimizer/src/compiler/glsl/s_expression.h":"65b847e30e22a809b57d0bc70243049c99d9c6318803c5b8d0826aba55dc217e","glsl-optimizer/src/compiler/glsl/serialize.cpp":"be0eb4251348a9d921acb839a5c48c6023a2e9d116d602bb0432787ab623655d","glsl-optimizer/src/compiler/glsl/serialize.h":"57425732eba1233d928e5f07f88b623ce65af46b3bb034bf147f0a4b7f94f9a1","glsl-optimizer/src/compiler/glsl/shader_cache.cpp":"e0c5c433f2df3fccdf1d61281bfcb0ee5633433339b97c697d64db99611cbaaf","glsl-optimizer/src/compiler/glsl/shader_cache.h":"9217164d8d7f54aca0fe5922c7187095a6ae0cb703b196b79805aeef07a7e697","glsl-optimizer/src/compiler/glsl/standalone.cpp":"8e6c416a14d631261917a5fe4cc91880c287b22b2dfd70eb22028289a8fa5364","glsl-optimizer/src/compiler/glsl/standalone.h":"a7c397d1dfdd1e7fb2cfe99db35cd9df93251e642059208533202b7f20497f83","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.cpp":"970d14b7a9d58e5270321f97bf5d57795558b1c570a56678e04a65b26c60bf4f","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.h":"d921a617ea82b9e49413314492a645c44356de503581b1be3f1b57de236e480d","glsl-optimizer/src/compiler/glsl/string_to_uint_map.cpp":"d824bf5b839bd39498dc9e457103cdbe3e5289ddf7564107c27b1505948dd31f","glsl-optimizer/src/compiler/glsl/string_to_uint_map.h":"e2f18e66359c9d620e085de7f4a334a47df9c66e65a5bfe8b734c627bec04104","glsl-optimizer/src/compiler/glsl/test_optpass.h":"b27b8f35f5387e7ce4982bb51c7b63ccf14f91757f3108a5d02ed006925bb8a0","glsl-optimizer/src/compiler/glsl/xxd.py":"376484142f27f45090ea8203ae2621abf73f06175cb0ee8d96f44a3b9327f4bd","glsl-optimizer/src/compiler/glsl_types.cpp":"044bb6754f45419a3151e7a25c39202a82009ae3c6bc54ff7f0bb4258a5deefe","glsl-optimizer/src/compiler/glsl_types.h":"fd899a42f34ddeb8601bc3cd6c5e3aed82fc8aef4042dde1b39b3c01e1dcc219","glsl-optimizer/src/compiler/shader_enums.c":"436bff5216b11b0980bdfada5885fc6ac9afa2037a3027fcd6eea2a8635597ac","glsl-optimizer/src/compiler/shader_enums.h":"13220442a5c02e83540cf2c0ad4f8417b2fbda5f2586dec4e92082544c937cdd","glsl-optimizer/src/compiler/shader_info.h":"4c5453e81197ca83593ee4f365074b23530f2ab21c78e1733b63dec6f344c12a","glsl-optimizer/src/gallium/auxiliary/util/u_half.h":"3c2b37bda3ccb64387e44b723d29cf9046decab1a893bf42d842e9603398bdee","glsl-optimizer/src/gallium/include/pipe/p_compiler.h":"c75620096ce8523dae90599e50aa2ef6468d3b0e368a77795edeb20dd1abfc0c","glsl-optimizer/src/gallium/include/pipe/p_config.h":"a27692fc35f9e55df3224b7529e66b3001e911e94e6bc5f8f569e493e1ee3fb7","glsl-optimizer/src/gallium/include/pipe/p_defines.h":"be26d68c0acc67c5e44788c6299716a9eee415fd81d7d747e3738a829e3b6b38","glsl-optimizer/src/gallium/include/pipe/p_format.h":"5674215fc41d27496f037cf837717daefbf23ebb38d40ace7c0c414bc08182b0","glsl-optimizer/src/gallium/include/pipe/p_state.h":"d600593aba5f5a17072a6c38f6baa81e01c7994b0174250f7e433bb41684b702","glsl-optimizer/src/mapi/glapi/glapi.h":"73632a625c0ddabc401205e8b5a81eb8af8506868efe4b170d7979ec3619e9c5","glsl-optimizer/src/mesa/main/config.h":"5800259373099e5405de2eb52619f9de242552a479902a3a642a333c8cb3c1e7","glsl-optimizer/src/mesa/main/context.c":"2f3208473d99c94f734b1137ba91889d4a1babb9e7534bf1dc85d851ee98274e","glsl-optimizer/src/mesa/main/context.h":"cc7e4194797db9d007f01884e23d786c453b3860821f7f2ddcdf0f1bf3f8ffb1","glsl-optimizer/src/mesa/main/dd.h":"6a964acd06b6c2d88700e69fb75fe3c6b3b3d45bbc41db24f3f897a29695fe0c","glsl-optimizer/src/mesa/main/debug_output.h":"7312422e90b8c0e34028ac27280e438139b5cba525c99deb3ac883cd3d87e452","glsl-optimizer/src/mesa/main/draw.h":"7eaef3a9e27a60ea6f7937109bf3a6190b831162fde0479abb12077ce27c353d","glsl-optimizer/src/mesa/main/enums.h":"87d562a6764f51c014a2274fa7c3aca17c04441537ddd56b2554f13c6fffea92","glsl-optimizer/src/mesa/main/errors.h":"c79444b5df289c90fbb22a33b2d0c23917d9fc4510960088f0b79e53bb56b1b2","glsl-optimizer/src/mesa/main/extensions.h":"a38b2f87cc93c513994281350d69e06c84ff8eded5313ec0a1be33f375e0ebbd","glsl-optimizer/src/mesa/main/extensions_table.c":"17642d1a8c9a0bf2bd61060052d33ff14a005d2b962e6cf91465797a50851e85","glsl-optimizer/src/mesa/main/extensions_table.h":"2c879571c238d2e14461031ac740372fd0f9ac3a34c0d5541bb9b7ed4c0376c8","glsl-optimizer/src/mesa/main/formats.h":"02e2f7ec3e39286cf9f27e2641043e6df8ecb1dfde9e643313210e214af2a929","glsl-optimizer/src/mesa/main/glheader.h":"58217b33eead6aa6b23cd4a291cefeaa6cb84e465f4960daffca97c44d6d1c35","glsl-optimizer/src/mesa/main/glthread.h":"51fb2711f77e7eafcfc52d29d5b844978832b24c930d88accd48d143a6eb9c6f","glsl-optimizer/src/mesa/main/hash.h":"7e7f782034c16a8e693de48e00c31d4a90b0129f4029fd074033d7d16ccbe718","glsl-optimizer/src/mesa/main/macros.h":"73d15ddfd64f2b57b9b2ffeeb993b9c2c0899a80563e9d6ff337b11ccbe6eee5","glsl-optimizer/src/mesa/main/menums.h":"5dfac0e2279d60b0cd0c7b9fc2a5021620d0f6282ed2e738c420214e3af152d3","glsl-optimizer/src/mesa/main/mesa_private.h":"edda678b93438944279a551f663b8858ad84814a9fc88ba9672ef195599c24ae","glsl-optimizer/src/mesa/main/mtypes.h":"6efddefa099e4d2e3fdd97f0055644f47aba21711385edfeabc2d9b0676f2eec","glsl-optimizer/src/mesa/main/shaderobj.h":"9f0dfe96d0c2154201adef942bd36053533ac7b2492fb3786acda5bea514c75e","glsl-optimizer/src/mesa/main/uniforms.h":"4e331e6ad6e9cbded978b4082dbe0a57c1f8f01327446bb6892bfc179976c38b","glsl-optimizer/src/mesa/main/version.h":"9d0a13a758099302dc55cf7d045791834a89b0f9d4cf17b2692259b369a8a9a1","glsl-optimizer/src/mesa/math/m_matrix.h":"a37b19f182e070db3df93b0ede43c22fb8be8c2906504133ee6dbd7db1185d8b","glsl-optimizer/src/mesa/program/dummy_errors.c":"1820e305515b4c5e041f5e1623266a48ec8f076a155310be7d60637101f593e4","glsl-optimizer/src/mesa/program/ir_to_mesa.h":"b47f58d22e3ca2ae42d52501ea769d15c4476834944fa97eeccd3a3439211d00","glsl-optimizer/src/mesa/program/prog_instruction.h":"ab3832152a7e144b59e5a2264b2c29db56d93be31e76bbd958527a56771b40eb","glsl-optimizer/src/mesa/program/prog_parameter.h":"ba18c743284eadbc837c2c364c73e5d372321a7637a76e589d8d39fe8b5de225","glsl-optimizer/src/mesa/program/prog_statevars.h":"fc413698f84bc52d45fdeae0471934ee9904bfb7eac1a2b5f70446e54bcbbdca","glsl-optimizer/src/mesa/program/program.h":"1f01026a4eff440a3f122fd9b519d03546fe7f7d8be60dca834e95a2f8fbbfd2","glsl-optimizer/src/mesa/program/symbol_table.c":"6611cb9f078035bf5ff8c9112093a6c7d99f8af99a3931d0c07f227cc72283ea","glsl-optimizer/src/mesa/program/symbol_table.h":"631dc35ac48d5e87962d45507461920f6575610960ffcc42a08cefeb43300cda","glsl-optimizer/src/mesa/vbo/vbo.h":"6eb1dcd9a08c92f276c5fe08da184ff9d455d1be421913b8ad732a7b65e858fb","glsl-optimizer/src/util/bitscan.h":"9e49e694e6b34fe035bc685f32588827eb8cbe7d82878963c7ab52843e1c16aa","glsl-optimizer/src/util/bitset.h":"c40f78515c6230fed18345c6751ce33833a49da7a27901c7e6d7340cbdcbc5e7","glsl-optimizer/src/util/blob.c":"8f729846f66efc9c15485cc5fc24c6ec861fc1fecb2f652573f2a237d481b791","glsl-optimizer/src/util/blob.h":"93e1eaac866b9a7cd6fc03b533c18fb2edf0e97f03395eff4f3a605c4fc14d0c","glsl-optimizer/src/util/compiler.h":"79e3bf40a5bab704e6c949f23a1352759607bb57d80e5d8df2ef159755f10b68","glsl-optimizer/src/util/crc32.c":"2f3467a046b3a76784ecb9aa55d527698c8607fd0b12c622f6691aaa77b58505","glsl-optimizer/src/util/crc32.h":"59bd81865e51042b73a86f8fb117c312418df095fed2d828c5c1d1c8b6fc6cd4","glsl-optimizer/src/util/debug.c":"c3d68e9752ccc19e66c669562cd113cf1d0ac83cbb30174789e7fb8d1df58f9c","glsl-optimizer/src/util/debug.h":"50068d745c4199ccbd33d68dd4c8a36d2b5179c7869a21e75906ddd0718ca456","glsl-optimizer/src/util/detect_os.h":"343a8790d17a3710c6dd015ee367f84e3902ff3f2e36faca2bf93f9d725d3574","glsl-optimizer/src/util/disk_cache.c":"f533937e5a4fffe76e2739ef4b6b1e1da097d96d63eb808e68ebbc7027641c23","glsl-optimizer/src/util/disk_cache.h":"e83314fb14134a8e079b15e470a6376ba5a8253701f048c890a62b7e55d64bc8","glsl-optimizer/src/util/fast_urem_by_const.h":"e108fce804616c47d071dfe4a04163eec1126e448ed1aa89abb6b3a6d772bd5b","glsl-optimizer/src/util/fnv1a.h":"ab2596f19c6adf431ae27618f62c5743e24ad23ef83bb359a4c4c218245ab459","glsl-optimizer/src/util/format/u_format.h":"4cdfc0c59cbc99a092e5ec5a396910f2d93b9643e5d8141050b011e66f11e45b","glsl-optimizer/src/util/futex.h":"26f7c9d86e9ffef4c0fa2761f1aaa1918337302e20bd6ca10e61dc3c47356deb","glsl-optimizer/src/util/half_float.c":"11bc2584493d5d9d46e8c8a619a0307cf150bf5ab5d0f96bb764b061dc37a00e","glsl-optimizer/src/util/half_float.h":"7f7c380f126da1400a91758cc0392f24bf967bce1672890b62be26fe9fbd922b","glsl-optimizer/src/util/hash_table.c":"0ca40352e35dedab0a84c64c903f1b16d47e950bb5f43b4d22bb57d499bfea6e","glsl-optimizer/src/util/hash_table.h":"217191bb360592e2232f187473c10287d2cda8ae6fa5c53d0ef74c8c206118b4","glsl-optimizer/src/util/list.h":"9fab03c6a78186bb5f173269f825f6ce976b409d931852e3d93bac632e07989a","glsl-optimizer/src/util/macros.h":"63faf65b51058c483b17f1f77da51d1c53c8beab52678cb6bd01f1228a63b6b0","glsl-optimizer/src/util/mesa-sha1.c":"00c692ec353ebc02c06c57c5a71de0ab7a119f86a4146f452e65ec87e4944417","glsl-optimizer/src/util/mesa-sha1.h":"bff4c29f4bf7cdbcefb30fa0c996a7604a380eba8976467c2a60e7cd328f7e26","glsl-optimizer/src/util/mesa-sha1_test.c":"25da89a59d51469f77b4c468ca23ffdce0a7a1166a70b6cc23026a6800b0143c","glsl-optimizer/src/util/os_memory.h":"64555faf1760ae6954f42c83727c38dfc4c278e9152115779ffaad58b42adacf","glsl-optimizer/src/util/os_memory_aligned.h":"12d86fa94be38c13f7eeebdf313795e1267dd5a7187d2f0072e0e896f41702f6","glsl-optimizer/src/util/os_memory_stdc.h":"07360363b88c927065e10df71bebf6c8a0cc3b9167c9dfce55f2d65f11e6f787","glsl-optimizer/src/util/os_misc.c":"a9936e613ec84803abd59ad47c192c8e3939993c950ac91973fdc4cec1801bb8","glsl-optimizer/src/util/os_misc.h":"cc68eb12e05b5e749c54298cb4a6f4cd20cc5af7db3403e70b3c27b56090c740","glsl-optimizer/src/util/os_time.h":"73e775f7335244ff5964c678c27eedf1aea6abea44c4169d327ea8c7ce4a3a88","glsl-optimizer/src/util/ralloc.c":"4b51189595ef67bcef52c40cbf654d969041dbd15e15d4a893ad494ac060aeca","glsl-optimizer/src/util/ralloc.h":"e573c45875ff1530f0dbee9a93ae55535fdac8d5cc88a79ebc327c688824bde5","glsl-optimizer/src/util/rounding.h":"0450722353caf83de07e67f335949dbe95fe53b534052d4ee9d28d2781387614","glsl-optimizer/src/util/set.c":"86f8c9a830bead5a5a79bc970b0ff97809312af07b3beb39ef9d90af04d40a1b","glsl-optimizer/src/util/set.h":"3e39ca161e7ed4ec7c436cc9c7919ed9a55ed1b71edbf2caf6f9bcfd9bc578ed","glsl-optimizer/src/util/sha1/README":"00af7419af05247081858acb2902efd99fcda2ce16e331079f701645bb3729c0","glsl-optimizer/src/util/sha1/sha1.c":"1403bbe0aad42ba3e6be7e09f7cad87a6a8c4ad5b63962f7b92b9f37d8133b04","glsl-optimizer/src/util/sha1/sha1.h":"68d9f240eab2918026ecdf22be36811abbd4f1389f6c36e31258041aeaedd247","glsl-optimizer/src/util/simple_mtx.h":"12c6c3c4b7db9168bc656d5b3c65912075084d2b388c415d5c3d3f5953a9d6c7","glsl-optimizer/src/util/softfloat.c":"a97e51a96fe5e6a052c02aa6bbec683fe73fb88a8c087d9c930503e2120d8a2e","glsl-optimizer/src/util/softfloat.h":"66664b0250e83bf5dd4cc743acd119d076efcea624a0eab3d6b60718e6ee8811","glsl-optimizer/src/util/string_buffer.c":"63a1d1b1e34926c88ea00159cafbcd56568b805c4f64d1e8c97169fe313921fc","glsl-optimizer/src/util/string_buffer.h":"7b88d1b1d9c6cfb8e93331813535c127289437c75f822029e9a3bca8ea6b52ee","glsl-optimizer/src/util/strndup.h":"0273c4fdb7482cd7746881a63d3998648c6d63415ba85af1d1860f0e0dc504c6","glsl-optimizer/src/util/strtod.c":"5cf610d8a37373cf37cfb7aae903525d943b2674b1f32594c70b0eb19a8c9697","glsl-optimizer/src/util/strtod.h":"237396def4e264d35ed4bedea00ef9a4ceab6d7a11a18c770d9747d22c69ed2d","glsl-optimizer/src/util/u_atomic.h":"c02e809526c6c09ba8fe51f50b2490d1b6c8e5c7f3c4031ae958250d098fc3bb","glsl-optimizer/src/util/u_debug.c":"8c060e379b816618f3dd22c9ea523c68b9425c76c36a7dfe5d6d375b337f5f4a","glsl-optimizer/src/util/u_debug.h":"e11e26edd9b9e4e6f8e6a435e69f4d9edda27e9a379f68f4c82ea2525aaaea68","glsl-optimizer/src/util/u_dynarray.h":"853d0fa6ff2261614488be624deb8a2b01e57c2c8eabc28578cbeed4ccc95694","glsl-optimizer/src/util/u_endian.h":"3ccea7e529740318d8a4b05c00db3adc9d1e292a52bdc56a05c9fae99209720f","glsl-optimizer/src/util/u_math.c":"c868a8c0886dc78f1b06b13404ba8b253090449045774dd56893ac9d75795184","glsl-optimizer/src/util/u_math.h":"a04e32e126db016413f9de0a2028a3e71737137463b1289eae576f884b06fcf1","glsl-optimizer/src/util/u_memory.h":"c5db17c724c70283ddbe04165722f6988d4e0eb9aa3602ae472feff016649af9","glsl-optimizer/src/util/u_queue.h":"92930ce236c0528a98b695f5cea8c5c6aa9683beaf71a2227bdc5d33d1b21506","glsl-optimizer/src/util/u_string.h":"c5a2f4ef576d1547bda12c4ea219179fefa54414977743ac094abcaf696ef6ca","glsl-optimizer/src/util/u_thread.h":"00b708459b27f9910d18db92c18cc65cfc618ac2b3cd144e45f8640057b10d58","glsl-optimizer/src/util/xxhash.h":"2f2aff2fc6c0c929f52cf6ae7314122124c5be026d41ad1c357608383c4a37ad","src/bindings.rs":"79993db2058bde39f99ef483d02560d33b1cb882f6a552319e8b86eb6f9021e1","src/lib.rs":"04be1554cd829eb40864b06d80b491dd48117a4e3a601c7d482117f7a0391e67","wrapper.hpp":"f3ea34cc496f7d90b9bfcada3250b37b314c3524dac693b2ece9517bc7d274ac"},"package":"913662ae8335df058d56e00f11340b20fa82e03e0276587797ef325ab01e50d4"} +\ No newline at end of file ++{"files":{"Cargo.toml":"010bb96167ff152e0e5ac30f9905dc749a3f038199b70c541c5d8cb97a185ee3","README.md":"4468e08c64c19977707d792bfab0080e35ff927b64990eab77873f8ba056ba1c","build.rs":"6a64610018701781af182c418a4355c9ac5d99d000be9457f0e38a7dadf7542a","glsl-optimizer/CMakeLists.txt":"42ce94744e82ffa000da8b64d81fc140e293b9f5da7dd4cf6b49e7404a2448d9","glsl-optimizer/README.md":"b18eef11a92d267d88a937b1154f7670ee433c730b102fdf7e2da0b02722b146","glsl-optimizer/contrib/glslopt/Main.cpp":"14ba213210c62e234b8d9b0052105fed28eedd83d535ebe85acc10bda7322dd4","glsl-optimizer/contrib/glslopt/Readme":"65d2a6f1aa1dc61e903e090cdade027abad33e02e7c9c81e07dc80508acadec4","glsl-optimizer/generateParsers.sh":"878a97db5d3b69eb3b4c3a95780763b373cfcc0c02e0b28894f162dbbd1b8848","glsl-optimizer/include/GL/gl.h":"1989b51365b6d7d0c48ff6e8b181ef75e2cdf71bfb1626b1cc4362e2f54854a3","glsl-optimizer/include/GL/glext.h":"2ac3681045a35a2194a81a960cad395c04bef1c8a20ef46b799fb24af3ec5f70","glsl-optimizer/include/KHR/khrplatform.h":"1448141a0c054d7f46edfb63f4fe6c203acf9591974049481c32442fb03fd6ed","glsl-optimizer/include/c11/threads.h":"56e9e592b28df19f0db432125223cb3eb5c0c1f960c22db96a15692e14776337","glsl-optimizer/include/c11/threads_posix.h":"5fa592653213459e2cce70b430715246d53fd1a10c1866acf427874530a69f92","glsl-optimizer/include/c11/threads_win32.h":"95bf19d7fc14d328a016889afd583e4c49c050a93bcfb114bd2e9130a4532488","glsl-optimizer/include/c11_compat.h":"103fedb48f658d36cb416c9c9e5ea4d70dff181aab551fcb1028107d098ffa3e","glsl-optimizer/include/c99_compat.h":"aafad02f1ea90a7857636913ea21617a0fcd6197256dcfc6dd97bb3410ba892e","glsl-optimizer/include/no_extern_c.h":"40069dbb6dd2843658d442f926e609c7799b9c296046a90b62b570774fd618f5","glsl-optimizer/license.txt":"e26a745226f4a46b3ca00ffbe8be18507362189a2863d04b4f563ba176a9a836","glsl-optimizer/src/compiler/builtin_type_macros.h":"5b4fc4d4da7b07f997b6eb569e37db79fa0735286575ef1fab08d419e76776ff","glsl-optimizer/src/compiler/glsl/README":"e7d408b621c1b605857c4cab63902f615edb06b530142b91ac040808df6e22f7","glsl-optimizer/src/compiler/glsl/TODO":"dd3b7a098e6f9c85ca8c99ce6dea49d65bb75d4cea243b917f29e4ad2c974603","glsl-optimizer/src/compiler/glsl/ast.h":"3e68ff374350c49211a9931f7f55a485d8d89fc4b21caaffbf6655009ad95bf8","glsl-optimizer/src/compiler/glsl/ast_array_index.cpp":"92b4d501f33e0544c00d14e4f8837753afd916c2b42e076ccc95c9e8fc37ba94","glsl-optimizer/src/compiler/glsl/ast_expr.cpp":"afd712a7b1beb2b633888f4a0911b0a8e4ae5eb5ab9c1e3f247d518cdaaa56d6","glsl-optimizer/src/compiler/glsl/ast_function.cpp":"74f4fbd490e366b37f4715168bb3465ecd9334d4130942f75dcc8e80e8e7f027","glsl-optimizer/src/compiler/glsl/ast_to_hir.cpp":"d0f798eb09271d41d068b9e7b18220d37f1ed0083300ab51eba30989698fe23d","glsl-optimizer/src/compiler/glsl/ast_type.cpp":"8eb790b24b26dfb72bdc333744b566c26d8464c5d47d20eae659461f5c4899f7","glsl-optimizer/src/compiler/glsl/builtin_functions.cpp":"454189d643c220fcb49116ee5c8a34f7b349aa67564040deb8607f6a41a15e70","glsl-optimizer/src/compiler/glsl/builtin_functions.h":"a37cad7ed09b522c5b8bec7b80115a36846e7ba6e0874a2a858e32f7f202c665","glsl-optimizer/src/compiler/glsl/builtin_int64.h":"619def6f3aebf180da3944ef08f159ab12a58b24767e41d8b985ac37ded54d62","glsl-optimizer/src/compiler/glsl/builtin_types.cpp":"afec060b62d6f3b00bfbf94e9fa5f96341ce096c128d1eef322791e6ed9cea4d","glsl-optimizer/src/compiler/glsl/builtin_variables.cpp":"6563bfb1345cbca4c77e00eef09ad152f3e1dc271d246a08c5ce9e1f4ce4250a","glsl-optimizer/src/compiler/glsl/float64.glsl":"1072fd888be48c2a7a5117cd2d92a65f034965a66375f598bb856bff5d7be766","glsl-optimizer/src/compiler/glsl/generate_ir.cpp":"e5f0175370a0d07f93c48d3f0f1b8233d12c64a7b02de02dcc753ef7b398ef0f","glsl-optimizer/src/compiler/glsl/glcpp/README":"a0332a1b221d047e9cce5181a64d4ac4056046fd878360ec8ae3a7b1e062bcff","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.c":"2d179879b1ffe84f58875eee5b0c19b6bae9c973b0c48e6bcd99978f2f501c80","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-lex.l":"e4c5744c837200dafd7c15a912d13f650308ea552454d4fa67271bc0a5bde118","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.c":"03494f9ce1cb82260506e2559e73a3eeb622c4bd51b65eaa0a2c3351862bd4c8","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.h":"264d9a18421cde255ce34a0a62b3d8e73465359f0d167e64aa3973062aae5bdd","glsl-optimizer/src/compiler/glsl/glcpp/glcpp-parse.y":"fafb66e3a8f149d19e085f18a4273ba6d4c11af9e9a01d665cc784dddf97b79f","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.c":"37ed294403c2abfd17fd999d1ae8d11b170e5e9c878979fefac74a31195c96b0","glsl-optimizer/src/compiler/glsl/glcpp/glcpp.h":"85ac8b444bcbd0822b66448a1da407b6ae5467b649f5afaf5c58325bd7569468","glsl-optimizer/src/compiler/glsl/glcpp/pp.c":"a52d94f1bcb3fb2747a95709c4a77c25de7eea8354d2b83bb18efd96976a4473","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.c":"d11aeb3acfe966d1b78f1ee49804093f2434214c41391d139ffcb67b69dc9862","glsl-optimizer/src/compiler/glsl/glcpp/pp_standalone_scaffolding.h":"abbf1f36ec5a92d035bfbb841b9452287d147616e56373cdbee1c0e55af46406","glsl-optimizer/src/compiler/glsl/glsl_lexer.cpp":"272b9fc1383d72b81bfc03fa11fdf82270ed91a294e523f9ce2b4554bd3effa9","glsl-optimizer/src/compiler/glsl/glsl_lexer.ll":"2b57d9f9eb830c3d7961d4533048a158ee6f458c8d05c65bea7b7cfbc36e4458","glsl-optimizer/src/compiler/glsl/glsl_optimizer.cpp":"f8095d20629d0af70be930b0612e169edb274551a1d25a3cd1bf9995a11ce2e8","glsl-optimizer/src/compiler/glsl/glsl_optimizer.h":"22e843b4ec53ba5f6cd85ca5f7bad33922dca8061b19fb512d46f1caca8d4757","glsl-optimizer/src/compiler/glsl/glsl_parser.cpp":"126baf368d525aba301854e3d91ba60b5aee32e1102376af71416f32cb95ec48","glsl-optimizer/src/compiler/glsl/glsl_parser.h":"2ea9a50716098a8f7bef782d2a030d757b68da73afb01b4d4940d3e8381d44e8","glsl-optimizer/src/compiler/glsl/glsl_parser.yy":"6b1fd1576b29fce005dff744a6dbd0219e4c695c361d61864e1f3a8d6fa6b764","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.cpp":"aad64b5b66467da650091430681e8c6a820cf3cadc4db3c160bf2f15875390ae","glsl-optimizer/src/compiler/glsl/glsl_parser_extras.h":"71fd0e92bbdb193dfb067d7bfdb1200d77392be2fbd0cbfc9ca89d1bb4c7e741","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.cpp":"6660fb83c0ddddbbd64581d46ccfdb9c84bfaa99d13348c289e6442ab00df046","glsl-optimizer/src/compiler/glsl/glsl_symbol_table.h":"24682b8304e0ea3f6318ddb8c859686bd1faee23cd0511d1760977ae975d41bf","glsl-optimizer/src/compiler/glsl/hir_field_selection.cpp":"72a039b0fcab4161788def9e4bedac7ac06a20d8e13146529c6d246bd5202afd","glsl-optimizer/src/compiler/glsl/int64.glsl":"303dbe95dde44b91aee3e38b115b92028400d6a92f9268975d607471984e13eb","glsl-optimizer/src/compiler/glsl/ir.cpp":"2b4741cce90b5d4abff5d719c7324e2693c67294d4d99736cb241554adb281bc","glsl-optimizer/src/compiler/glsl/ir.h":"990b1c74447c4eb4835353ccb0ed9aea644f97fc1129ef1739cd935075d85d2e","glsl-optimizer/src/compiler/glsl/ir_array_refcount.cpp":"8cdc1cffe01e42e0566fa2193a75f789628e8025ad1b82f0ee6f204451b7f9f7","glsl-optimizer/src/compiler/glsl/ir_array_refcount.h":"75f06ec81342b379096ca52e1dc0fd5f19a11ff8e9b58203c20628179d644c12","glsl-optimizer/src/compiler/glsl/ir_basic_block.cpp":"1e2920b1c0ecb08424c745c558f84d0d7e44b74585cf2cc2265dc4dfede3fa2f","glsl-optimizer/src/compiler/glsl/ir_basic_block.h":"81be7da0fc0ee547cd13ec60c1fcd7d3ce3d70d7e5e988f01a3b43a827acdf05","glsl-optimizer/src/compiler/glsl/ir_builder.cpp":"daba29c5a1efdd5a9754f420eb3e2ebdf73485273497f40d4863dadeddb23c0d","glsl-optimizer/src/compiler/glsl/ir_builder.h":"2822e74dd3f6e3df8b300af27d5b11ea2dd99d0e5e7ca809b7bbcce9833c483c","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.cpp":"8c6df5abf2fe313363f285f171c19ca6c8ee4f3bc2ed79d33c0c88cc8be45c48","glsl-optimizer/src/compiler/glsl/ir_builder_print_visitor.h":"799852adc3a0e54d04080655e7cebfa0d3bf5b6ffed5d8414f141380665d4db7","glsl-optimizer/src/compiler/glsl/ir_clone.cpp":"d897a4e1f5bbec4a6a2f15044c1be9a4d13899c73be77335b041049a4589aa5d","glsl-optimizer/src/compiler/glsl/ir_constant_expression.cpp":"78bd87ddb09db67f6c499067728d72aef4f16aa02721a99a4b769d1e0cfa9010","glsl-optimizer/src/compiler/glsl/ir_equals.cpp":"bca28533a6310b0fc152b56d80872368f1510dc62ed6e8ac199b9ffa7fac02e7","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.cpp":"7e918d4e1f237eca01396004015865ce345afe32a876c9dbc6728576a1a7eae4","glsl-optimizer/src/compiler/glsl/ir_expression_flattening.h":"f45b66aa9497520e7e08e612d24b308477c34477fbd963ee9320eac664957f16","glsl-optimizer/src/compiler/glsl/ir_expression_operation.h":"cc9f10727dbd26cac506804f51456302c702650f9eeb59054a7e1575d5cf6687","glsl-optimizer/src/compiler/glsl/ir_expression_operation.py":"7b86c96021b9fbe165957f4ecb0b612fefcde1c2cf3c6d75e3cdb22e369216ba","glsl-optimizer/src/compiler/glsl/ir_expression_operation_constant.h":"9ad3346416392e3efa11e12ecf2feca7453c5253d241eb96c91dfb85d4f2b971","glsl-optimizer/src/compiler/glsl/ir_expression_operation_strings.h":"a6826daf496a8b9e89885bc2a161ac3445d501b23c6e0ac33e2c01b506b273c8","glsl-optimizer/src/compiler/glsl/ir_function.cpp":"7537365fc0fbe4b37a26b9a2146cc64d3e9a774d60eab63b65002ad165ae8fc7","glsl-optimizer/src/compiler/glsl/ir_function_can_inline.cpp":"faddbf112187a048d502716a3fb82570a322299ba2a3abd79388382c82040bfc","glsl-optimizer/src/compiler/glsl/ir_function_detect_recursion.cpp":"9176973eaf5c0a984701f953bb7a80f37dca43d59b5bce50fc69b3f02f2902d7","glsl-optimizer/src/compiler/glsl/ir_function_inlining.h":"9739493f99c489987d650762fccdd3fb3d432f6481d67f6c799176685bd59632","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.cpp":"3725861fbe2b98e0617f52d3b14cf6d3b25fb5ec00f5ef5d308b03642f592767","glsl-optimizer/src/compiler/glsl/ir_hierarchical_visitor.h":"e0560210e966c0c31e4ca843e80ea154e64db5a444b8c2df845b6ba5b3a43fc1","glsl-optimizer/src/compiler/glsl/ir_hv_accept.cpp":"caf7ce2cd9494aadd3c58bcf77f29de58368dc9e347a362bbf37f8bda9509b80","glsl-optimizer/src/compiler/glsl/ir_optimization.h":"8b3dcfc7f9e96b21a8dd47a0040d90be483a9e67a2cdce3a697188fb758d4630","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.cpp":"f8e34a983452be0dcb5a695e9c8e895eead24f9e540992a8afe510ae85da4c4c","glsl-optimizer/src/compiler/glsl/ir_print_glsl_visitor.h":"1ad1bd3efd1ace39051c13f904c05fd80425d329444f9a8d47fd6d948faf46e0","glsl-optimizer/src/compiler/glsl/ir_print_visitor.cpp":"643f5a68aae3fb37267fd793f1216d1cfdeb2c09338c26b1f30e4c6deaef4de5","glsl-optimizer/src/compiler/glsl/ir_print_visitor.h":"4573eb93268a2654c14b505253dd651e2695d43dc745904d824da18305269b95","glsl-optimizer/src/compiler/glsl/ir_reader.cpp":"06bfba802c8354e5a8b2334b6d78d6297de18235bedd3f8fbb382c89870b02f2","glsl-optimizer/src/compiler/glsl/ir_reader.h":"63e3f7f1597936a7011d5b520e171b197bf82bee6c1560d822c3edf5aaa6f9e9","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.cpp":"84b5c5d746555adca85759c2912fe48010232b7c1c0bd2cf03bd04067a85e66f","glsl-optimizer/src/compiler/glsl/ir_rvalue_visitor.h":"fd8c561b71085d3211fff85ed514fecb299d8ce19a04bc063419a55b6d840525","glsl-optimizer/src/compiler/glsl/ir_set_program_inouts.cpp":"ab9f115ce9e7f312d9c7978340ced0dc4ae6d13a80e08442ba9709d11d50cae5","glsl-optimizer/src/compiler/glsl/ir_uniform.h":"683ae6896b1a08470c090be5f822fc31cd434eab9216e954b9bba24a46975109","glsl-optimizer/src/compiler/glsl/ir_unused_structs.cpp":"9c1620c45f2fc071fe5ed828472040b14c5f42effe06aa0e3b8352c95ef78786","glsl-optimizer/src/compiler/glsl/ir_unused_structs.h":"13387b49c23093575276b25b9dfd31fedd8f131c5c4f3128ab04cf03e15b5295","glsl-optimizer/src/compiler/glsl/ir_validate.cpp":"6b232be5999a86ea278f4f15b2832d76843246509118d924243055a3b9b0299f","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.cpp":"2764a3cad937d53f36db7447c3a5b98b04bf153acf81074d971857fc5bca460d","glsl-optimizer/src/compiler/glsl/ir_variable_refcount.h":"b0668e3eb1501ef65e38fe12830742ecb3d28e6039f30e366c8924efc29b4a39","glsl-optimizer/src/compiler/glsl/ir_visitor.h":"f21b3534c3d66d5fb707d1581fece7e1eb043523afbaedf89918cfb031c6df94","glsl-optimizer/src/compiler/glsl/link_atomics.cpp":"360f0209e11f367ba358223597b0a118bae095bff16337cf03f1fb89c5b80ca6","glsl-optimizer/src/compiler/glsl/link_functions.cpp":"de7895da8aa33a1e3c2c1eb2fdaf267ab5d1fbfdb79ae2e67f95211e946e294c","glsl-optimizer/src/compiler/glsl/link_interface_blocks.cpp":"1926cfa73810704eb19b916c1b2cdb9321155e2f98b2a0a57c7c3c6e960540cd","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.cpp":"1e14e06ca3b2c1089cfba2e8eaf0c1f373d9d6374b6082f320962dd71ae09611","glsl-optimizer/src/compiler/glsl/link_uniform_block_active_visitor.h":"fd58c155af645295bb6aec08797889de586f4d919731de2bce57e8dce59bb048","glsl-optimizer/src/compiler/glsl/link_uniform_blocks.cpp":"09589f49776dce32e6c4044937de7e0c839a9754ad31960148f8f9e010658997","glsl-optimizer/src/compiler/glsl/link_uniform_initializers.cpp":"bf98e08c12db466acf9623cbeb8fa8e3b4002512722e7a6521287f558a099f37","glsl-optimizer/src/compiler/glsl/link_uniforms.cpp":"84bad5b1377362cecf259b05124239be5220b03ce1c0c61b59bd9a47e4379af2","glsl-optimizer/src/compiler/glsl/link_varyings.cpp":"a5f1a53e7c80d635515fe808ff223d89fef1767abb0f2b7aa28fa6773dca353f","glsl-optimizer/src/compiler/glsl/link_varyings.h":"b9dbe018f038df69763df2e928742ce81bbc6e3aaba26f50621e30a6d9aa6220","glsl-optimizer/src/compiler/glsl/linker.cpp":"40b1ecd5d4f6c7f13d5a87ce390561a51fdf6f3fcd9b2197b9c88b03a773ba94","glsl-optimizer/src/compiler/glsl/linker.h":"ecf94b4ad75ef461c27c557fda4bd25f34c91930822b8e1d729ec84520d4a049","glsl-optimizer/src/compiler/glsl/linker_util.cpp":"1663ad88e2a369305659aeeffaedb5bd752cf76340a2ba5797fc0bf600633cf9","glsl-optimizer/src/compiler/glsl/linker_util.h":"6db788daf9c8e87ae2764b61a8b37ebe419e69c1b82ddee01986e37c978c6993","glsl-optimizer/src/compiler/glsl/list.h":"b1f46ce0e552fe7c45b2a19408a9d97662e23e4b182ab335491c26f8cf25886f","glsl-optimizer/src/compiler/glsl/loop_analysis.cpp":"57ecd573477c68091c7cc99537faa7139a8f395935e3d4f10144cefdefb5a611","glsl-optimizer/src/compiler/glsl/loop_analysis.h":"a85f045a038ee5b5176063e85d7988865862c44ab0580f771b993a042d0b69cc","glsl-optimizer/src/compiler/glsl/loop_unroll.cpp":"bd4292ea2809f5a669bcb76ceaa1ac365772dcd638c579c3ed10275214901a54","glsl-optimizer/src/compiler/glsl/lower_blend_equation_advanced.cpp":"8cfbef140d9c4b4d2f57bfa05c9c374d31a121d0f87afce94333f049023b654a","glsl-optimizer/src/compiler/glsl/lower_buffer_access.cpp":"1ae221c3c7a95aeb867207e7a742be635f91b406c157747bfd6ddf10274d97fb","glsl-optimizer/src/compiler/glsl/lower_buffer_access.h":"807886953a576a323591798cbca5e2df24295ea893b28affd8ffb5926cebaa04","glsl-optimizer/src/compiler/glsl/lower_builtins.cpp":"4d81afc32cf58e1481fcb5e42888ab93dbe6820310a20ff7a9982b77b2152d9b","glsl-optimizer/src/compiler/glsl/lower_const_arrays_to_uniforms.cpp":"608403f0eeeedf21cfcd3014116e0f44e28cbdf6c4c32aac7e613e64e30205e1","glsl-optimizer/src/compiler/glsl/lower_cs_derived.cpp":"179905cd47a294122adeb5b0abfed6f2f67782dcde21b544d1ee2c1985154e66","glsl-optimizer/src/compiler/glsl/lower_discard.cpp":"3b361b2db0004d544d64611cb50d5a6e364cf6c5f2e60c449085d7d753dd7fb0","glsl-optimizer/src/compiler/glsl/lower_discard_flow.cpp":"f5c29b6a27690bb5c91f196d1a1cf9f6be4f1025292311fe2dac561ce6774dee","glsl-optimizer/src/compiler/glsl/lower_distance.cpp":"a118c85493d5d22b2c059a930c51a5854896d4b1dade76598eaa985e5a3dff8c","glsl-optimizer/src/compiler/glsl/lower_if_to_cond_assign.cpp":"469e617757fd1728709cce021aac5c8da05ee503bf5366977bdc4ef7a6d83950","glsl-optimizer/src/compiler/glsl/lower_instructions.cpp":"6ff5c396abe40d8a2145d571e99e2bbe9143393e15aafc28adc2803a01d821b6","glsl-optimizer/src/compiler/glsl/lower_int64.cpp":"d1ed41196880dd53c7b13e2782f9423f8442bf1d46186e8be92b1b66218a83ee","glsl-optimizer/src/compiler/glsl/lower_jumps.cpp":"34de7b493f281589fb0c2c0f6e885d0a0fabbe7a4e97a73de374dd714777a58c","glsl-optimizer/src/compiler/glsl/lower_mat_op_to_vec.cpp":"dff7a308edc4846c348ed4225c6699a9c75abac68d88f41f85954276552779f4","glsl-optimizer/src/compiler/glsl/lower_named_interface_blocks.cpp":"16063ac127bff75a68272070ab11c21c25101edbff62b4c68f4983b4cd941af0","glsl-optimizer/src/compiler/glsl/lower_offset_array.cpp":"3b00773399135aea85746a5a68b96ef000bc6841be1a2c8e6f25c516628b0949","glsl-optimizer/src/compiler/glsl/lower_output_reads.cpp":"a0fc9975d5aa1617e21fc6c353659a9802da9e83779a3eef4ec584f74b4dadc5","glsl-optimizer/src/compiler/glsl/lower_packed_varyings.cpp":"7550099d4ae123d71541c2fc88bc04fbfe9271ec75d7e210987d1c8cac3cf3ea","glsl-optimizer/src/compiler/glsl/lower_packing_builtins.cpp":"79a13d161fe505a410ab948d92769395708693ec888153630fa240e5b97e356f","glsl-optimizer/src/compiler/glsl/lower_precision.cpp":"f82a185b879872b977a1787d8061b9a80bc4cf8db1b970db6efba2ad9cc20fa2","glsl-optimizer/src/compiler/glsl/lower_shared_reference.cpp":"ea2dccf50a83bc19391bf6b7ab6aa53c0005f427af4066d25140340af9a4beef","glsl-optimizer/src/compiler/glsl/lower_subroutine.cpp":"f69fa53650eeb6f2944fce4d36a6e0a423e6705f3a3bd3389c7fadb83cfc8802","glsl-optimizer/src/compiler/glsl/lower_tess_level.cpp":"b196c9d424c0569f3e85d75c2d125af21566cb113d69036db87c0990703e0fa7","glsl-optimizer/src/compiler/glsl/lower_texture_projection.cpp":"4d247f244272adc8250fd888d8d932a140dd5de4d1efc7a58492c3c2b8291527","glsl-optimizer/src/compiler/glsl/lower_ubo_reference.cpp":"89bdbc6c1669230c644c0857db1ce2781ec61d349ecd08c7914146e1f4750a4a","glsl-optimizer/src/compiler/glsl/lower_variable_index_to_cond_assign.cpp":"fce930f29ac9405b297d1f749d68f59506b89c70b4ee1b1ab8cf49a34cc71ecf","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_cond_assign.cpp":"3c67d851a11a55fad1c49a550f3a0cfe50892d33a3f238ce266cd829eba510a8","glsl-optimizer/src/compiler/glsl/lower_vec_index_to_swizzle.cpp":"f5ec666b73e1415cbab32519a53605ed385f3b03e889560373dbce69dda5000e","glsl-optimizer/src/compiler/glsl/lower_vector.cpp":"f7c13f5572ebe09b6a71553133b2cf003cd4b77b9657600672ee3b21bf890725","glsl-optimizer/src/compiler/glsl/lower_vector_derefs.cpp":"b05793da6dd620a531b43df5af8b2ecbc37b9db0c88910f5724ea10bcd057e19","glsl-optimizer/src/compiler/glsl/lower_vector_insert.cpp":"fee772ec17eea5e86a529bf9c5fa2ee0d29a5982bb75ebc6d68ed36cd19aa299","glsl-optimizer/src/compiler/glsl/lower_vertex_id.cpp":"690e8715182e03fead5cc5a35251fb4f41b357e4c71a1dfbc4bd7be19862b56d","glsl-optimizer/src/compiler/glsl/lower_xfb_varying.cpp":"58c0e8b270e4bbde54250be03cdb2f36966bcafb785372ad2e2b786835df7f9f","glsl-optimizer/src/compiler/glsl/main.cpp":"ae5e88abbbc8a12f769e1296bad938b9d7398cc6da0d3d0caeceeeb876536850","glsl-optimizer/src/compiler/glsl/opt_add_neg_to_sub.h":"f5054944bfd068810629080d0ea11df78b3f57a8f86df75e13ca50157ad1964d","glsl-optimizer/src/compiler/glsl/opt_algebraic.cpp":"25f45b20e1972ee8c789177a1aeda6e4286c25db2eae3a43ff83029ae64969c0","glsl-optimizer/src/compiler/glsl/opt_array_splitting.cpp":"19d3ce0e815438f4df9ab2890e767b03a4f3f191b53bb30c0217cf2ae6a95430","glsl-optimizer/src/compiler/glsl/opt_conditional_discard.cpp":"0e44e0e126711a3725c1f3a2aa65ff03c381fed08680ffc30101aae60f716c4e","glsl-optimizer/src/compiler/glsl/opt_constant_folding.cpp":"a088d04d9b45f9e55e235835648f614c89b7803c03a6d4f6a6d1a6bc1f0228bd","glsl-optimizer/src/compiler/glsl/opt_constant_propagation.cpp":"8a9440d77ecd6dcf13e683cbb99943aab6311c8fd4b5f6a9189a8d4f270746f4","glsl-optimizer/src/compiler/glsl/opt_constant_variable.cpp":"63d3ccd4dd09f19c9cf1a2f51592111bed41284504f29f3c0de4cadebc439a37","glsl-optimizer/src/compiler/glsl/opt_copy_propagation_elements.cpp":"ffa0f50863995e0d2e31f55a52e82319edc71e520987bebd7f7e561ea331c64b","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_variables.cpp":"84e8747b948232f01dd56b428b9315f96f9511f605f240119fc446fae28981a9","glsl-optimizer/src/compiler/glsl/opt_dead_builtin_varyings.cpp":"761523e88f5b3ba785170f4d7205e94fa99acb7e74d29efbe40e1c010e1dbdb3","glsl-optimizer/src/compiler/glsl/opt_dead_code.cpp":"fd1ba2da7337d4e5dad17f5c2d73d9cc8880305f423e85d64cf94553588fa401","glsl-optimizer/src/compiler/glsl/opt_dead_code_local.cpp":"969a598b4df322baf222258a66cd64a326ea20e5b3125be9d8d1771f522c69e0","glsl-optimizer/src/compiler/glsl/opt_dead_functions.cpp":"774cae6536d02edf26e996a2a895e1f62d5098f16dc96b44798b4fc731a9a95f","glsl-optimizer/src/compiler/glsl/opt_flatten_nested_if_blocks.cpp":"3696a5c55f02e20056e085bc2714f73ac992f221b6f3387d655068e86b512046","glsl-optimizer/src/compiler/glsl/opt_flip_matrices.cpp":"44f0fe05b49329667671f88c96dc86ab3fe1459ff7b87f2b2d88de2d49829f9f","glsl-optimizer/src/compiler/glsl/opt_function_inlining.cpp":"fb56a33c90419a01676b57cbd91d0674a54cca40e6defaacc88dd33facebc131","glsl-optimizer/src/compiler/glsl/opt_if_simplification.cpp":"ac406eb35e379c357641d6c5749f50c65961455924d3dc884e2b90046fa92c5c","glsl-optimizer/src/compiler/glsl/opt_minmax.cpp":"8abd59d3b14ef60ff14a9c69660e6945f5cf10b97edb4afebe56be3f81d96316","glsl-optimizer/src/compiler/glsl/opt_rebalance_tree.cpp":"8bb6329dc0f299042368fc81934c2df019b45ab9f7aa0415d4e57b8d1ff98c9f","glsl-optimizer/src/compiler/glsl/opt_redundant_jumps.cpp":"222c73e2ac7a938ebb6428cc6c780c908ff6156d8ff935b04fed93a48fc10496","glsl-optimizer/src/compiler/glsl/opt_structure_splitting.cpp":"2edc79cc13f3177934e0443ad62f5976a1991f01f86ea303a803434849b13a47","glsl-optimizer/src/compiler/glsl/opt_swizzle.cpp":"015d0abddfe507f67c4b96c82988d861d018ededf7bf055e2bcbe9ea92da694e","glsl-optimizer/src/compiler/glsl/opt_tree_grafting.cpp":"46d28ac983ea244a4315bdc0e8892979ec4d1f9b9a96ac8a8a08006d9bc5e878","glsl-optimizer/src/compiler/glsl/opt_vectorize.cpp":"d80ee43bb97d9f016fb9c5e1e06f5b2afa569811f368ba067be794ec11d085fb","glsl-optimizer/src/compiler/glsl/program.h":"2982447e2abd35371e273ad87951722782a8b21c08294f67c39d987da1e1c55f","glsl-optimizer/src/compiler/glsl/propagate_invariance.cpp":"080943e21baa32494723a2eefb185915d2daae1f46d6df420145c5ad6857e119","glsl-optimizer/src/compiler/glsl/s_expression.cpp":"1ced972bc6ecc8eab4116ea71fb0212ab9ae5bcc0be3b47aa5d9d903566b3af1","glsl-optimizer/src/compiler/glsl/s_expression.h":"65b847e30e22a809b57d0bc70243049c99d9c6318803c5b8d0826aba55dc217e","glsl-optimizer/src/compiler/glsl/serialize.cpp":"be0eb4251348a9d921acb839a5c48c6023a2e9d116d602bb0432787ab623655d","glsl-optimizer/src/compiler/glsl/serialize.h":"57425732eba1233d928e5f07f88b623ce65af46b3bb034bf147f0a4b7f94f9a1","glsl-optimizer/src/compiler/glsl/shader_cache.cpp":"e0c5c433f2df3fccdf1d61281bfcb0ee5633433339b97c697d64db99611cbaaf","glsl-optimizer/src/compiler/glsl/shader_cache.h":"9217164d8d7f54aca0fe5922c7187095a6ae0cb703b196b79805aeef07a7e697","glsl-optimizer/src/compiler/glsl/standalone.cpp":"8e6c416a14d631261917a5fe4cc91880c287b22b2dfd70eb22028289a8fa5364","glsl-optimizer/src/compiler/glsl/standalone.h":"a7c397d1dfdd1e7fb2cfe99db35cd9df93251e642059208533202b7f20497f83","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.cpp":"970d14b7a9d58e5270321f97bf5d57795558b1c570a56678e04a65b26c60bf4f","glsl-optimizer/src/compiler/glsl/standalone_scaffolding.h":"d921a617ea82b9e49413314492a645c44356de503581b1be3f1b57de236e480d","glsl-optimizer/src/compiler/glsl/string_to_uint_map.cpp":"d824bf5b839bd39498dc9e457103cdbe3e5289ddf7564107c27b1505948dd31f","glsl-optimizer/src/compiler/glsl/string_to_uint_map.h":"e2f18e66359c9d620e085de7f4a334a47df9c66e65a5bfe8b734c627bec04104","glsl-optimizer/src/compiler/glsl/test_optpass.h":"b27b8f35f5387e7ce4982bb51c7b63ccf14f91757f3108a5d02ed006925bb8a0","glsl-optimizer/src/compiler/glsl/xxd.py":"376484142f27f45090ea8203ae2621abf73f06175cb0ee8d96f44a3b9327f4bd","glsl-optimizer/src/compiler/glsl_types.cpp":"044bb6754f45419a3151e7a25c39202a82009ae3c6bc54ff7f0bb4258a5deefe","glsl-optimizer/src/compiler/glsl_types.h":"fd899a42f34ddeb8601bc3cd6c5e3aed82fc8aef4042dde1b39b3c01e1dcc219","glsl-optimizer/src/compiler/shader_enums.c":"436bff5216b11b0980bdfada5885fc6ac9afa2037a3027fcd6eea2a8635597ac","glsl-optimizer/src/compiler/shader_enums.h":"13220442a5c02e83540cf2c0ad4f8417b2fbda5f2586dec4e92082544c937cdd","glsl-optimizer/src/compiler/shader_info.h":"4c5453e81197ca83593ee4f365074b23530f2ab21c78e1733b63dec6f344c12a","glsl-optimizer/src/gallium/auxiliary/util/u_half.h":"3c2b37bda3ccb64387e44b723d29cf9046decab1a893bf42d842e9603398bdee","glsl-optimizer/src/gallium/include/pipe/p_compiler.h":"c75620096ce8523dae90599e50aa2ef6468d3b0e368a77795edeb20dd1abfc0c","glsl-optimizer/src/gallium/include/pipe/p_config.h":"a27692fc35f9e55df3224b7529e66b3001e911e94e6bc5f8f569e493e1ee3fb7","glsl-optimizer/src/gallium/include/pipe/p_defines.h":"be26d68c0acc67c5e44788c6299716a9eee415fd81d7d747e3738a829e3b6b38","glsl-optimizer/src/gallium/include/pipe/p_format.h":"5674215fc41d27496f037cf837717daefbf23ebb38d40ace7c0c414bc08182b0","glsl-optimizer/src/gallium/include/pipe/p_state.h":"d600593aba5f5a17072a6c38f6baa81e01c7994b0174250f7e433bb41684b702","glsl-optimizer/src/mapi/glapi/glapi.h":"73632a625c0ddabc401205e8b5a81eb8af8506868efe4b170d7979ec3619e9c5","glsl-optimizer/src/mesa/main/config.h":"5800259373099e5405de2eb52619f9de242552a479902a3a642a333c8cb3c1e7","glsl-optimizer/src/mesa/main/context.c":"2f3208473d99c94f734b1137ba91889d4a1babb9e7534bf1dc85d851ee98274e","glsl-optimizer/src/mesa/main/context.h":"cc7e4194797db9d007f01884e23d786c453b3860821f7f2ddcdf0f1bf3f8ffb1","glsl-optimizer/src/mesa/main/dd.h":"6a964acd06b6c2d88700e69fb75fe3c6b3b3d45bbc41db24f3f897a29695fe0c","glsl-optimizer/src/mesa/main/debug_output.h":"7312422e90b8c0e34028ac27280e438139b5cba525c99deb3ac883cd3d87e452","glsl-optimizer/src/mesa/main/draw.h":"7eaef3a9e27a60ea6f7937109bf3a6190b831162fde0479abb12077ce27c353d","glsl-optimizer/src/mesa/main/enums.h":"87d562a6764f51c014a2274fa7c3aca17c04441537ddd56b2554f13c6fffea92","glsl-optimizer/src/mesa/main/errors.h":"c79444b5df289c90fbb22a33b2d0c23917d9fc4510960088f0b79e53bb56b1b2","glsl-optimizer/src/mesa/main/extensions.h":"a38b2f87cc93c513994281350d69e06c84ff8eded5313ec0a1be33f375e0ebbd","glsl-optimizer/src/mesa/main/extensions_table.c":"17642d1a8c9a0bf2bd61060052d33ff14a005d2b962e6cf91465797a50851e85","glsl-optimizer/src/mesa/main/extensions_table.h":"2c879571c238d2e14461031ac740372fd0f9ac3a34c0d5541bb9b7ed4c0376c8","glsl-optimizer/src/mesa/main/formats.h":"02e2f7ec3e39286cf9f27e2641043e6df8ecb1dfde9e643313210e214af2a929","glsl-optimizer/src/mesa/main/glheader.h":"58217b33eead6aa6b23cd4a291cefeaa6cb84e465f4960daffca97c44d6d1c35","glsl-optimizer/src/mesa/main/glthread.h":"51fb2711f77e7eafcfc52d29d5b844978832b24c930d88accd48d143a6eb9c6f","glsl-optimizer/src/mesa/main/hash.h":"7e7f782034c16a8e693de48e00c31d4a90b0129f4029fd074033d7d16ccbe718","glsl-optimizer/src/mesa/main/macros.h":"73d15ddfd64f2b57b9b2ffeeb993b9c2c0899a80563e9d6ff337b11ccbe6eee5","glsl-optimizer/src/mesa/main/menums.h":"5dfac0e2279d60b0cd0c7b9fc2a5021620d0f6282ed2e738c420214e3af152d3","glsl-optimizer/src/mesa/main/mesa_private.h":"edda678b93438944279a551f663b8858ad84814a9fc88ba9672ef195599c24ae","glsl-optimizer/src/mesa/main/mtypes.h":"6efddefa099e4d2e3fdd97f0055644f47aba21711385edfeabc2d9b0676f2eec","glsl-optimizer/src/mesa/main/shaderobj.h":"9f0dfe96d0c2154201adef942bd36053533ac7b2492fb3786acda5bea514c75e","glsl-optimizer/src/mesa/main/uniforms.h":"4e331e6ad6e9cbded978b4082dbe0a57c1f8f01327446bb6892bfc179976c38b","glsl-optimizer/src/mesa/main/version.h":"9d0a13a758099302dc55cf7d045791834a89b0f9d4cf17b2692259b369a8a9a1","glsl-optimizer/src/mesa/math/m_matrix.h":"a37b19f182e070db3df93b0ede43c22fb8be8c2906504133ee6dbd7db1185d8b","glsl-optimizer/src/mesa/program/dummy_errors.c":"1820e305515b4c5e041f5e1623266a48ec8f076a155310be7d60637101f593e4","glsl-optimizer/src/mesa/program/ir_to_mesa.h":"b47f58d22e3ca2ae42d52501ea769d15c4476834944fa97eeccd3a3439211d00","glsl-optimizer/src/mesa/program/prog_instruction.h":"ab3832152a7e144b59e5a2264b2c29db56d93be31e76bbd958527a56771b40eb","glsl-optimizer/src/mesa/program/prog_parameter.h":"ba18c743284eadbc837c2c364c73e5d372321a7637a76e589d8d39fe8b5de225","glsl-optimizer/src/mesa/program/prog_statevars.h":"fc413698f84bc52d45fdeae0471934ee9904bfb7eac1a2b5f70446e54bcbbdca","glsl-optimizer/src/mesa/program/program.h":"1f01026a4eff440a3f122fd9b519d03546fe7f7d8be60dca834e95a2f8fbbfd2","glsl-optimizer/src/mesa/program/symbol_table.c":"6611cb9f078035bf5ff8c9112093a6c7d99f8af99a3931d0c07f227cc72283ea","glsl-optimizer/src/mesa/program/symbol_table.h":"631dc35ac48d5e87962d45507461920f6575610960ffcc42a08cefeb43300cda","glsl-optimizer/src/mesa/vbo/vbo.h":"6eb1dcd9a08c92f276c5fe08da184ff9d455d1be421913b8ad732a7b65e858fb","glsl-optimizer/src/util/bitscan.h":"9e49e694e6b34fe035bc685f32588827eb8cbe7d82878963c7ab52843e1c16aa","glsl-optimizer/src/util/bitset.h":"c40f78515c6230fed18345c6751ce33833a49da7a27901c7e6d7340cbdcbc5e7","glsl-optimizer/src/util/blob.c":"8f729846f66efc9c15485cc5fc24c6ec861fc1fecb2f652573f2a237d481b791","glsl-optimizer/src/util/blob.h":"93e1eaac866b9a7cd6fc03b533c18fb2edf0e97f03395eff4f3a605c4fc14d0c","glsl-optimizer/src/util/compiler.h":"79e3bf40a5bab704e6c949f23a1352759607bb57d80e5d8df2ef159755f10b68","glsl-optimizer/src/util/crc32.c":"2f3467a046b3a76784ecb9aa55d527698c8607fd0b12c622f6691aaa77b58505","glsl-optimizer/src/util/crc32.h":"59bd81865e51042b73a86f8fb117c312418df095fed2d828c5c1d1c8b6fc6cd4","glsl-optimizer/src/util/debug.c":"c3d68e9752ccc19e66c669562cd113cf1d0ac83cbb30174789e7fb8d1df58f9c","glsl-optimizer/src/util/debug.h":"50068d745c4199ccbd33d68dd4c8a36d2b5179c7869a21e75906ddd0718ca456","glsl-optimizer/src/util/detect_os.h":"343a8790d17a3710c6dd015ee367f84e3902ff3f2e36faca2bf93f9d725d3574","glsl-optimizer/src/util/disk_cache.c":"f533937e5a4fffe76e2739ef4b6b1e1da097d96d63eb808e68ebbc7027641c23","glsl-optimizer/src/util/disk_cache.h":"e83314fb14134a8e079b15e470a6376ba5a8253701f048c890a62b7e55d64bc8","glsl-optimizer/src/util/fast_urem_by_const.h":"e108fce804616c47d071dfe4a04163eec1126e448ed1aa89abb6b3a6d772bd5b","glsl-optimizer/src/util/fnv1a.h":"ab2596f19c6adf431ae27618f62c5743e24ad23ef83bb359a4c4c218245ab459","glsl-optimizer/src/util/format/u_format.h":"4cdfc0c59cbc99a092e5ec5a396910f2d93b9643e5d8141050b011e66f11e45b","glsl-optimizer/src/util/futex.h":"26f7c9d86e9ffef4c0fa2761f1aaa1918337302e20bd6ca10e61dc3c47356deb","glsl-optimizer/src/util/half_float.c":"11bc2584493d5d9d46e8c8a619a0307cf150bf5ab5d0f96bb764b061dc37a00e","glsl-optimizer/src/util/half_float.h":"7f7c380f126da1400a91758cc0392f24bf967bce1672890b62be26fe9fbd922b","glsl-optimizer/src/util/hash_table.c":"0ca40352e35dedab0a84c64c903f1b16d47e950bb5f43b4d22bb57d499bfea6e","glsl-optimizer/src/util/hash_table.h":"217191bb360592e2232f187473c10287d2cda8ae6fa5c53d0ef74c8c206118b4","glsl-optimizer/src/util/list.h":"9fab03c6a78186bb5f173269f825f6ce976b409d931852e3d93bac632e07989a","glsl-optimizer/src/util/macros.h":"63faf65b51058c483b17f1f77da51d1c53c8beab52678cb6bd01f1228a63b6b0","glsl-optimizer/src/util/mesa-sha1.c":"00c692ec353ebc02c06c57c5a71de0ab7a119f86a4146f452e65ec87e4944417","glsl-optimizer/src/util/mesa-sha1.h":"bff4c29f4bf7cdbcefb30fa0c996a7604a380eba8976467c2a60e7cd328f7e26","glsl-optimizer/src/util/mesa-sha1_test.c":"25da89a59d51469f77b4c468ca23ffdce0a7a1166a70b6cc23026a6800b0143c","glsl-optimizer/src/util/os_memory.h":"64555faf1760ae6954f42c83727c38dfc4c278e9152115779ffaad58b42adacf","glsl-optimizer/src/util/os_memory_aligned.h":"12d86fa94be38c13f7eeebdf313795e1267dd5a7187d2f0072e0e896f41702f6","glsl-optimizer/src/util/os_memory_stdc.h":"07360363b88c927065e10df71bebf6c8a0cc3b9167c9dfce55f2d65f11e6f787","glsl-optimizer/src/util/os_misc.c":"a9936e613ec84803abd59ad47c192c8e3939993c950ac91973fdc4cec1801bb8","glsl-optimizer/src/util/os_misc.h":"cc68eb12e05b5e749c54298cb4a6f4cd20cc5af7db3403e70b3c27b56090c740","glsl-optimizer/src/util/os_time.h":"73e775f7335244ff5964c678c27eedf1aea6abea44c4169d327ea8c7ce4a3a88","glsl-optimizer/src/util/ralloc.c":"4b51189595ef67bcef52c40cbf654d969041dbd15e15d4a893ad494ac060aeca","glsl-optimizer/src/util/ralloc.h":"e573c45875ff1530f0dbee9a93ae55535fdac8d5cc88a79ebc327c688824bde5","glsl-optimizer/src/util/rounding.h":"0450722353caf83de07e67f335949dbe95fe53b534052d4ee9d28d2781387614","glsl-optimizer/src/util/set.c":"86f8c9a830bead5a5a79bc970b0ff97809312af07b3beb39ef9d90af04d40a1b","glsl-optimizer/src/util/set.h":"3e39ca161e7ed4ec7c436cc9c7919ed9a55ed1b71edbf2caf6f9bcfd9bc578ed","glsl-optimizer/src/util/sha1/README":"00af7419af05247081858acb2902efd99fcda2ce16e331079f701645bb3729c0","glsl-optimizer/src/util/sha1/sha1.c":"1403bbe0aad42ba3e6be7e09f7cad87a6a8c4ad5b63962f7b92b9f37d8133b04","glsl-optimizer/src/util/sha1/sha1.h":"68d9f240eab2918026ecdf22be36811abbd4f1389f6c36e31258041aeaedd247","glsl-optimizer/src/util/simple_mtx.h":"12c6c3c4b7db9168bc656d5b3c65912075084d2b388c415d5c3d3f5953a9d6c7","glsl-optimizer/src/util/softfloat.c":"a97e51a96fe5e6a052c02aa6bbec683fe73fb88a8c087d9c930503e2120d8a2e","glsl-optimizer/src/util/softfloat.h":"66664b0250e83bf5dd4cc743acd119d076efcea624a0eab3d6b60718e6ee8811","glsl-optimizer/src/util/string_buffer.c":"63a1d1b1e34926c88ea00159cafbcd56568b805c4f64d1e8c97169fe313921fc","glsl-optimizer/src/util/string_buffer.h":"7b88d1b1d9c6cfb8e93331813535c127289437c75f822029e9a3bca8ea6b52ee","glsl-optimizer/src/util/strndup.h":"0273c4fdb7482cd7746881a63d3998648c6d63415ba85af1d1860f0e0dc504c6","glsl-optimizer/src/util/strtod.c":"5cf610d8a37373cf37cfb7aae903525d943b2674b1f32594c70b0eb19a8c9697","glsl-optimizer/src/util/strtod.h":"237396def4e264d35ed4bedea00ef9a4ceab6d7a11a18c770d9747d22c69ed2d","glsl-optimizer/src/util/u_atomic.h":"c02e809526c6c09ba8fe51f50b2490d1b6c8e5c7f3c4031ae958250d098fc3bb","glsl-optimizer/src/util/u_debug.c":"8c060e379b816618f3dd22c9ea523c68b9425c76c36a7dfe5d6d375b337f5f4a","glsl-optimizer/src/util/u_debug.h":"e11e26edd9b9e4e6f8e6a435e69f4d9edda27e9a379f68f4c82ea2525aaaea68","glsl-optimizer/src/util/u_dynarray.h":"853d0fa6ff2261614488be624deb8a2b01e57c2c8eabc28578cbeed4ccc95694","glsl-optimizer/src/util/u_endian.h":"3ccea7e529740318d8a4b05c00db3adc9d1e292a52bdc56a05c9fae99209720f","glsl-optimizer/src/util/u_math.c":"c868a8c0886dc78f1b06b13404ba8b253090449045774dd56893ac9d75795184","glsl-optimizer/src/util/u_math.h":"a04e32e126db016413f9de0a2028a3e71737137463b1289eae576f884b06fcf1","glsl-optimizer/src/util/u_memory.h":"c5db17c724c70283ddbe04165722f6988d4e0eb9aa3602ae472feff016649af9","glsl-optimizer/src/util/u_queue.h":"92930ce236c0528a98b695f5cea8c5c6aa9683beaf71a2227bdc5d33d1b21506","glsl-optimizer/src/util/u_string.h":"c5a2f4ef576d1547bda12c4ea219179fefa54414977743ac094abcaf696ef6ca","glsl-optimizer/src/util/u_thread.h":"00b708459b27f9910d18db92c18cc65cfc618ac2b3cd144e45f8640057b10d58","glsl-optimizer/src/util/xxhash.h":"2f2aff2fc6c0c929f52cf6ae7314122124c5be026d41ad1c357608383c4a37ad","src/bindings.rs":"79993db2058bde39f99ef483d02560d33b1cb882f6a552319e8b86eb6f9021e1","src/lib.rs":"04be1554cd829eb40864b06d80b491dd48117a4e3a601c7d482117f7a0391e67","wrapper.hpp":"f3ea34cc496f7d90b9bfcada3250b37b314c3524dac693b2ece9517bc7d274ac"},"package":"913662ae8335df058d56e00f11340b20fa82e03e0276587797ef325ab01e50d4"} +diff --git a/third_party/rust/glslopt/glsl-optimizer/include/c11/threads_posix.h b/third_party/rust/glslopt/glsl-optimizer/include/c11/threads_posix.h +index 45cb6075..5f22aca 100644 +--- a/third_party/rust/glslopt/glsl-optimizer/include/c11/threads_posix.h ++++ b/third_party/rust/glslopt/glsl-optimizer/include/c11/threads_posix.h +@@ -51,7 +51,9 @@ Configuration macro: + #include + + /*---------------------------- macros ----------------------------*/ ++#ifndef __once_flag_defined + #define ONCE_FLAG_INIT PTHREAD_ONCE_INIT ++#endif + #ifdef INIT_ONCE_STATIC_INIT + #define TSS_DTOR_ITERATIONS PTHREAD_DESTRUCTOR_ITERATIONS + #else +@@ -66,7 +68,9 @@ typedef pthread_cond_t cnd_t; + typedef pthread_t thrd_t; + typedef pthread_key_t tss_t; + typedef pthread_mutex_t mtx_t; ++#ifndef __once_flag_defined + typedef pthread_once_t once_flag; ++#endif + + + /* +@@ -90,11 +94,13 @@ impl_thrd_routine(void *p) + + /*--------------- 7.25.2 Initialization functions ---------------*/ + // 7.25.2.1 ++#ifndef __once_flag_defined + static inline void + call_once(once_flag *flag, void (*func)(void)) + { + pthread_once(flag, func); + } ++#endif + + + /*------------- 7.25.3 Condition variable functions -------------*/ diff -Nru firefox-esr-140.13.0esr/debian/patches/series firefox-esr-140.15.0esr/debian/patches/series --- firefox-esr-140.13.0esr/debian/patches/series 2026-07-21 23:00:27.000000000 +0000 +++ firefox-esr-140.15.0esr/debian/patches/series 2026-08-19 00:51:19.000000000 +0000 @@ -1,3 +1,8 @@ +fixes/Bug-1983713-Use-non-deprecated-ast-value.-r-firefox-.patch +fixes/Bug-1969769-Change-uses-of-ast.Str-with-ast.Constant.patch +fixes/Bug-1983736-Patch-jsonschema-to-work-with-Python-3.1.patch +fixes/Fix-conficting-types-for-once_flag-and-call_once.patch +fixes/Bug-2016618-Fix-Linux-sandbox-build-breakage-on-glib.patch debian-hacks/Avoid-wrong-sessionstore-data-to-keep-windows-out-of.patch debian-hacks/Add-another-preferences-directory-for-applications-p.patch debian-hacks/Add-a-2-minutes-timeout-on-xpcshell-tests.patch diff -Nru firefox-esr-140.13.0esr/docshell/base/BrowsingContext.cpp firefox-esr-140.15.0esr/docshell/base/BrowsingContext.cpp --- firefox-esr-140.13.0esr/docshell/base/BrowsingContext.cpp 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/docshell/base/BrowsingContext.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -865,6 +865,17 @@ parent->mOriginAttributes.EqualsIgnoringFPD(mOriginAttributes)); } + if (aOriginProcess) { + if (GetBrowserId() == 0) { + return "Content BC must have a nonzero BrowserId"; + } + if (!GetParent()) { + uint64_t browserProc = + std::get<0>(nsContentUtils::SplitProcessSpecificId(GetBrowserId())); + COHERENCY_ASSERT(browserProc == aOriginProcess->ChildID()); + } + } + // UseRemoteSubframes and UseRemoteTabs must match. if (mUseRemoteSubframes && !mUseRemoteTabs) { return "Cannot set useRemoteSubframes without also setting useRemoteTabs"; diff -Nru firefox-esr-140.13.0esr/docshell/base/nsDocShell.cpp firefox-esr-140.15.0esr/docshell/base/nsDocShell.cpp --- firefox-esr-140.13.0esr/docshell/base/nsDocShell.cpp 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/docshell/base/nsDocShell.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -4293,6 +4293,11 @@ if (!aOtherDocShell) { return NS_ERROR_INVALID_POINTER; } + auto* otherDocShell = nsDocShell::Cast(aOtherDocShell); + + Document* otherDoc = otherDocShell->GetDocument(); + NS_ENSURE_TRUE(otherDoc, NS_ERROR_UNEXPECTED); + nsCOMPtr newURI; nsresult rv = NS_NewURI(getter_AddRefs(newURI), aURI); if (NS_FAILED(rv)) { @@ -4301,7 +4306,6 @@ RefPtr loadState; uint32_t cacheKey; - auto* otherDocShell = nsDocShell::Cast(aOtherDocShell); if (mozilla::SessionHistoryInParent()) { loadState = new nsDocShellLoadState(newURI); if (!otherDocShell->FillLoadStateFromCurrentEntry(*loadState)) { @@ -4326,8 +4330,10 @@ // is only exposed to system code. The triggering principal for this load // should be the system principal. loadState->SetTriggeringPrincipal(nsContentUtils::GetSystemPrincipal()); - loadState->SetPrincipalToInherit(nullptr); - loadState->SetPartitionedPrincipalToInherit(nullptr); + RefPtr nullPrincipal = + NullPrincipal::CreateWithInheritedAttributes(otherDoc->NodePrincipal()); + loadState->SetPrincipalToInherit(nullPrincipal); + loadState->SetPartitionedPrincipalToInherit(nullPrincipal); loadState->SetOriginalURI(nullptr); loadState->SetResultPrincipalURI(nullptr); @@ -12220,48 +12226,24 @@ return NS_OK; } + // https://html.spec.whatwg.org/#navigate-to-a-javascript:-url + // Step 13: historyEntry should store entryToReplace's URL. + if (aLoadState->URI()->SchemeIs("javascript")) { + MOZ_ASSERT_UNREACHABLE("javascript: URIs should not enter session history"); + return NS_ERROR_FAILURE; + } + // We are setting load type afterwards so we don't have to // send it in an IPC message aLoadState->SetLoadType(aLoadType); - nsresult rv; - if (aLoadState->URI()->SchemeIs("javascript")) { - // We're loading a URL that will execute script from inside asyncOpen. - // Replace the current document with about:blank now to prevent - // anything from the current document from leaking into any JavaScript - // code in the URL. - // Don't cache the presentation if we're going to just reload the - // current entry. Caching would lead to trying to save the different - // content viewers in the same nsISHEntry object. - rv = CreateAboutBlankDocumentViewer( - aLoadState->PrincipalToInherit(), - aLoadState->PartitionedPrincipalToInherit(), nullptr, nullptr, - /* aIsInitialDocument */ false, Nothing(), !aLoadingCurrentEntry); - - if (NS_FAILED(rv)) { - // The creation of the intermittent about:blank content - // viewer failed for some reason (potentially because the - // user prevented it). Interrupt the history load. - return NS_OK; - } - - if (!aLoadState->TriggeringPrincipal()) { - // Ensure that we have a triggeringPrincipal. Otherwise javascript: - // URIs will pick it up from the about:blank page we just loaded, - // and we don't really want even that in this case. - nsCOMPtr principal = - NullPrincipal::Create(GetOriginAttributes()); - aLoadState->SetTriggeringPrincipal(principal); - } - } - /* If there is a valid postdata *and* the user pressed * reload or shift-reload, take user's permission before we * repost the data to the server. */ if ((aLoadType & LOAD_CMD_RELOAD) && aLoadState->PostDataStream()) { bool repost; - rv = ConfirmRepost(&repost); + nsresult rv = ConfirmRepost(&repost); if (NS_FAILED(rv)) { return rv; } diff -Nru firefox-esr-140.13.0esr/docshell/base/nsDocShellLoadState.cpp firefox-esr-140.15.0esr/docshell/base/nsDocShellLoadState.cpp --- firefox-esr-140.13.0esr/docshell/base/nsDocShellLoadState.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/docshell/base/nsDocShellLoadState.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -9,15 +9,18 @@ #include "nsDocShell.h" #include "nsILoadInfo.h" #include "nsIProtocolHandler.h" +#include "nsIScriptSecurityManager.h" #include "nsISHEntry.h" #include "nsIURIFixup.h" #include "nsIWebNavigation.h" #include "nsIChannel.h" #include "nsIURLQueryStringStripper.h" #include "nsIXULRuntime.h" +#include "nsAboutProtocolUtils.h" #include "nsNetUtil.h" #include "nsQueryObject.h" #include "ReferrerInfo.h" +#include "xpcpublic.h" #include "mozilla/BasePrincipal.h" #include "mozilla/ClearOnShutdown.h" #include "mozilla/Components.h" @@ -26,6 +29,7 @@ #include "mozilla/dom/ContentParent.h" #include "mozilla/dom/FormData.h" #include "mozilla/dom/LoadURIOptionsBinding.h" +#include "mozilla/dom/ProcessIsolation.h" #include "mozilla/dom/nsHTTPSOnlyUtils.h" #include "mozilla/StaticPrefs_browser.h" #include "mozilla/StaticPrefs_fission.h" @@ -43,6 +47,65 @@ // Global reference to the URI fixup service. static mozilla::StaticRefPtr sURIFixup; +static bool ContentTriggeredURILoadIsAllowed( + nsIURI* aURI, const nsACString& aEffectiveRemoteType) { + MOZ_ASSERT(aEffectiveRemoteType != NOT_REMOTE_TYPE); + MOZ_ASSERT(!aURI->SchemeIs("javascript"), "Should have been blocked already"); + + // view-source: URIs are not linkable from web content, but the "View Page + // Source" context menu has the content process itself load them, + // so decide based on the inner URI instead. + if (aURI->SchemeIs("view-source")) { + nsCOMPtr nestedURI = do_QueryInterface(aURI); + MOZ_ASSERT(nestedURI); + + nsCOMPtr innerURI; + return NS_SUCCEEDED(nestedURI->GetInnerURI(getter_AddRefs(innerURI))) && + ContentTriggeredURILoadIsAllowed(innerURI, aEffectiveRemoteType); + } + + // A null principal is the least privileged principal there is, so any URI it + // is allowed to link to may be loaded from any content process. + nsCOMPtr genericNullPrincipal = NullPrincipal::Create({}); + + nsCOMPtr secMan = + do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID); + + if (NS_SUCCEEDED(secMan->CheckLoadURIWithPrincipal( + genericNullPrincipal, aURI, + nsIScriptSecurityManager::DISALLOW_SCRIPT | + nsIScriptSecurityManager::DONT_REPORT_ERRORS, + 0))) { + return true; + } + + nsCOMPtr principal = + BasePrincipal::CreateContentPrincipal(aURI, {}); + if (principal->GetIsNullPrincipal()) { + // Only allow null principals from URIs that have the + // URI_LOADABLE_BY_SUBSUMERS (i.e. blob:) flag. Other null principals likely + // correspond to internal, unsafe-to-load in content, resources. + bool loadableBySubsumers = false; + if (NS_FAILED(NS_URIChainHasFlags( + aURI, nsIProtocolHandler::URI_LOADABLE_BY_SUBSUMERS, + &loadableBySubsumers))) { + return false; + } + return loadableBySubsumers; + } + + // Automation-Only: Allow loading of chrome://reftest/* URLs. + if (aURI->SchemeIs("chrome") && xpc::IsInAutomation()) { + nsAutoCString host; + if (NS_SUCCEEDED(aURI->GetHost(host)) && host.EqualsLiteral("reftest")) { + return true; + } + } + + return ValidatePrincipalCouldPotentiallyBeLoadedBy(principal, + aEffectiveRemoteType, {}); +} + nsDocShellLoadState::nsDocShellLoadState(nsIURI* aURI) : nsDocShellLoadState(aURI, nsContentUtils::GenerateLoadIdentifier()) {} @@ -146,9 +209,55 @@ return; } - if (mURI->SchemeIs("javascript") && - mTriggeringRemoteType != NOT_REMOTE_TYPE) { - aActor->FatalError("Illegal cross-process javascript: load attempt"); + if (mTriggeringRemoteType != NOT_REMOTE_TYPE) { + if (mURI->SchemeIs("javascript")) { + aActor->FatalError("Illegal cross-process javascript: load attempt"); + return; + } + + if (mRemoteTypeOverride.isSome()) { + aActor->FatalError("RemoteTypeOverride can only be set by parent"); + return; + } + } + + if (!ValidatePrincipalCouldPotentiallyBeLoadedBy( + mTriggeringPrincipal, GetEffectiveTriggeringRemoteType(), + {ValidatePrincipalOptions::AllowExpanded, + ValidatePrincipalOptions::AllowSystem})) { + aActor->FatalError( + "nsDocShellLoadState with invalid triggering principal"); + return; + } + EnumSet principalToInheritOptions = { + ValidatePrincipalOptions::AllowNullPtr}; + if (xpc::IsInAutomation()) { + // Bug 2011307, chrome reftests run in content. + principalToInheritOptions += ValidatePrincipalOptions::AllowSystem; + } + if (!ValidatePrincipalCouldPotentiallyBeLoadedBy( + mPrincipalToInherit, GetEffectiveTriggeringRemoteType(), + principalToInheritOptions)) { + aActor->FatalError("nsDocShellLoadState with invalid principalToInherit"); + return; + } + + const nsCString& effectiveRemoteType = GetEffectiveTriggeringRemoteType(); + if (effectiveRemoteType != NOT_REMOTE_TYPE && + !ContentTriggeredURILoadIsAllowed(mURI, effectiveRemoteType)) { + nsAutoCString aboutModuleOrScheme; + if (mURI->SchemeIs("about")) { + (void)NS_GetAboutModuleName(mURI, aboutModuleOrScheme); + aboutModuleOrScheme.InsertLiteral("about:", 0); + } else { + mURI->GetScheme(aboutModuleOrScheme); + aboutModuleOrScheme.AppendLiteral(":"); + } + nsCString remotePrefix(RemoteTypePrefix(effectiveRemoteType)); + aActor->FatalError( + nsPrintfCString("Illegal load attempt of %s URL from %s", + aboutModuleOrScheme.get(), remotePrefix.get()) + .get()); return; } } @@ -1302,10 +1411,17 @@ if (!uriEq(mOriginalURI, aOriginalState->mOriginalURI)) { return "OriginalURI"; } + if (!uriEq(mResultPrincipalURI, aOriginalState->mResultPrincipalURI)) { + return "mResultPrincipalURI"; + } if (!uriEq(mBaseURI, aOriginalState->mBaseURI)) { return "BaseURI"; } + if (mSrcdocData != aOriginalState->mSrcdocData) { + return "SrcdocData"; + } + if (!mTriggeringPrincipal->Equals(aOriginalState->mTriggeringPrincipal)) { return "TriggeringPrincipal"; } diff -Nru firefox-esr-140.13.0esr/docshell/shistory/SessionHistoryEntry.cpp firefox-esr-140.15.0esr/docshell/shistory/SessionHistoryEntry.cpp --- firefox-esr-140.13.0esr/docshell/shistory/SessionHistoryEntry.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/docshell/shistory/SessionHistoryEntry.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -59,6 +59,8 @@ aLoadState->PartitionedPrincipalToInherit(), aLoadState->Csp(), /* FIXME Is this correct? */ aLoadState->TypeHint())) { + MOZ_DIAGNOSTIC_ASSERT(!mURI->SchemeIs("javascript")); + // Pull the upload stream off of the channel instead of the load state, as // ownership has already been transferred from the load state to the channel. if (nsCOMPtr postChannel = do_QueryInterface(aChannel)) { @@ -78,6 +80,7 @@ SessionHistoryInfo::SessionHistoryInfo( const SessionHistoryInfo& aSharedStateFrom, nsIURI* aURI) : mURI(aURI), mSharedState(aSharedStateFrom.mSharedState) { + MOZ_DIAGNOSTIC_ASSERT(!mURI || !mURI->SchemeIs("javascript")); MaybeUpdateTitleFromURI(); mHasUserInteraction = aSharedStateFrom.mHasUserInteraction; } @@ -91,6 +94,7 @@ mSharedState(SharedState::Create( aTriggeringPrincipal, aPrincipalToInherit, aPartitionedPrincipalToInherit, aCsp, aContentType)) { + MOZ_DIAGNOSTIC_ASSERT(!mURI || !mURI->SchemeIs("javascript")); MaybeUpdateTitleFromURI(); } @@ -102,6 +106,7 @@ NS_WARNING("NS_GetFinalChannelURI somehow failed in SessionHistoryInfo?"); aChannel->GetURI(getter_AddRefs(mURI)); } + MOZ_DIAGNOSTIC_ASSERT(!mURI->SchemeIs("javascript")); mLoadType = aLoadType; nsCOMPtr loadInfo; @@ -519,6 +524,7 @@ NS_IMETHODIMP SessionHistoryEntry::SetURI(nsIURI* aURI) { + MOZ_DIAGNOSTIC_ASSERT(!aURI->SchemeIs("javascript")); mInfo->mURI = aURI; return NS_OK; } @@ -1622,6 +1628,11 @@ return false; } + if (aResult->mURI && aResult->mURI->SchemeIs("javascript")) { + aReader->FatalError("javascript: URIs should not enter session history"); + return false; + } + nsCOMPtr triggeringPrincipal; nsCOMPtr principalToInherit; nsCOMPtr partitionedPrincipalToInherit; diff -Nru firefox-esr-140.13.0esr/docshell/shistory/SessionHistoryEntry.h firefox-esr-140.15.0esr/docshell/shistory/SessionHistoryEntry.h --- firefox-esr-140.13.0esr/docshell/shistory/SessionHistoryEntry.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/docshell/shistory/SessionHistoryEntry.h 2026-08-26 17:03:40.000000000 +0000 @@ -119,6 +119,10 @@ mStateData = aStateData; } + const Maybe& GetSrcdocData() const { return mSrcdocData; } + + nsIURI* GetBaseURI() const { return mBaseURI; } + void SetLoadReplace(bool aLoadReplace) { mLoadReplace = aLoadReplace; } void SetURIWasModified(bool aURIWasModified) { diff -Nru firefox-esr-140.13.0esr/dom/base/Document.cpp firefox-esr-140.15.0esr/dom/base/Document.cpp --- firefox-esr-140.13.0esr/dom/base/Document.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/base/Document.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -15244,6 +15244,12 @@ // we would actually do nothing below except crashing ourselves via // dispatching the "MozDOMFullscreen:Exited" event to an nonexistent // document. + // + // We still reset this document, otherwise it could keep a stale element + // in its top layer with the fullscreen flag set. + if (aMaybeNotARootDoc->GetUnretargetedFullscreenElement()) { + aMaybeNotARootDoc->CleanupFullscreenState(); + } return; } @@ -15729,6 +15735,7 @@ nsTArray elements; for (const nsWeakPtr& ptr : mTopLayer) { if (nsCOMPtr elem = do_QueryReferent(ptr)) { + MOZ_DIAGNOSTIC_ASSERT(elem->GetComposedDoc() == this); elements.AppendElement(elem); } } @@ -16349,6 +16356,10 @@ RefPtr doc = aRequest->Document(); doc->HideAllPopoversUntil(*hideUntil, false, true); + if (!FullscreenElementReadyCheck(*aRequest)) { + return false; + } + // Stash a reference to any existing fullscreen doc, we'll use this later // to detect if the origin which is fullscreen has changed. nsCOMPtr previousFullscreenDoc = GetFullscreenLeaf(this); diff -Nru firefox-esr-140.13.0esr/dom/base/nsContentUtils.cpp firefox-esr-140.15.0esr/dom/base/nsContentUtils.cpp --- firefox-esr-140.13.0esr/dom/base/nsContentUtils.cpp 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/base/nsContentUtils.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -117,6 +117,7 @@ #include "mozilla/Span.h" #include "mozilla/StaticAnalysisFunctions.h" #include "mozilla/StaticPrefs_browser.h" +#include "mozilla/StaticPrefs_clipboard.h" #include "mozilla/StaticPrefs_dom.h" #ifdef FUZZING # include "mozilla/StaticPrefs_fuzzing.h" @@ -8837,11 +8838,33 @@ nsresult rv; const nsTArray& items = aTransferableData.items(); for (const auto& item : items) { - if (aFilterUnknownFlavors && !IPCTransferableDataItemHasKnownFlavor(item)) { - NS_WARNING( - "Ignoring unknown flavor in " - "nsContentUtils::IPCTransferableDataToTransferable"); - continue; + if (aFilterUnknownFlavors) { + if (item.flavor().EqualsLiteral(kFilePromiseDirectoryMime)) { + NS_WARNING( + "Ignoring unknown flavor in " + "nsContentUtils::IPCTransferableDataToTransferable"); + continue; + } + + if ((item.flavor().EqualsLiteral(kFilePromiseMime) || + item.flavor().EqualsLiteral(kFilePromiseURLMime) || + item.flavor().EqualsLiteral(kFilePromiseDestFilename)) +#ifdef XP_WIN + && !StaticPrefs::clipboard_imageAsFile_enabled() +#endif + ) { + NS_WARNING( + "Ignoring unknown flavor in " + "nsContentUtils::IPCTransferableDataToTransferable"); + continue; + } + + if (!IPCTransferableDataItemHasKnownFlavor(item)) { + NS_WARNING( + "Ignoring unknown flavor in " + "nsContentUtils::IPCTransferableDataToTransferable"); + continue; + } } if (aAddDataFlavor) { @@ -9003,17 +9026,24 @@ const uint32_t& aStride, const IntSize& aImageSize, const SurfaceFormat& aFormat, size_t* aMaxBufferSize, size_t* aUsedBufferSize) { - CheckedInt32 requiredBytes = - CheckedInt32(aStride) * CheckedInt32(aImageSize.height); + if (aImageSize.width <= 0 || aImageSize.height <= 0) { + return NS_ERROR_FAILURE; + } - CheckedInt32 usedBytes = - requiredBytes - aStride + - (CheckedInt32(aImageSize.width) * BytesPerPixel(aFormat)); - if (!usedBytes.isValid()) { + CheckedInt32 rowBytes = + CheckedInt32(aImageSize.width) * BytesPerPixel(aFormat); + CheckedInt32 stride(aStride); + if (!rowBytes.isValid() || !stride.isValid() || + stride.value() < rowBytes.value()) { + return NS_ERROR_FAILURE; + } + + CheckedInt32 requiredBytes = stride * CheckedInt32(aImageSize.height); + CheckedInt32 usedBytes = requiredBytes - stride + rowBytes; + if (!requiredBytes.isValid() || !usedBytes.isValid()) { return NS_ERROR_FAILURE; } - MOZ_ASSERT(requiredBytes.isValid(), "usedBytes valid but not required?"); *aMaxBufferSize = requiredBytes.value(); *aUsedBufferSize = usedBytes.value(); return NS_OK; @@ -9652,6 +9682,12 @@ } // static +bool nsContentUtils::IsImageType(ExtContentPolicy aType) { + return aType == ExtContentPolicy::TYPE_IMAGE || + aType == ExtContentPolicy::TYPE_IMAGESET; +} + +// static ReferrerPolicy nsContentUtils::GetReferrerPolicyFromChannel( nsIChannel* aChannel) { nsCOMPtr httpChannel = do_QueryInterface(aChannel); diff -Nru firefox-esr-140.13.0esr/dom/base/nsContentUtils.h firefox-esr-140.15.0esr/dom/base/nsContentUtils.h --- firefox-esr-140.13.0esr/dom/base/nsContentUtils.h 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/base/nsContentUtils.h 2026-08-26 17:03:40.000000000 +0000 @@ -1504,6 +1504,13 @@ static bool IsPreloadType(nsContentPolicyType aType); /** + * Returns true if the content policy type is any of: + * * ExtContentPolicy::TYPE_IMAGE + * * ExtContentPolicy::TYPE_IMAGESET + */ + static bool IsImageType(ExtContentPolicy aType); + + /** * Quick helper to determine whether mutation events are enabled and there are * any mutation listeners of a given type that apply to this content or any of * its ancestors. diff -Nru firefox-esr-140.13.0esr/dom/base/nsFocusManager.cpp firefox-esr-140.15.0esr/dom/base/nsFocusManager.cpp --- firefox-esr-140.13.0esr/dom/base/nsFocusManager.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/base/nsFocusManager.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -2449,8 +2449,9 @@ window->UpdateCommands(u"focus"_ns); } - SendFocusOrBlurEvent(eBlur, presShell, element->GetComposedDoc(), element, - false, false, aElementToFocus); + RefPtr doc = element->GetComposedDoc(); + SendFocusOrBlurEvent(eBlur, presShell, doc, element, false, false, + aElementToFocus); } // if we are leaving the document or the window was lowered, make the caret diff -Nru firefox-esr-140.13.0esr/dom/base/nsFrameLoader.cpp firefox-esr-140.15.0esr/dom/base/nsFrameLoader.cpp --- firefox-esr-140.13.0esr/dom/base/nsFrameLoader.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/base/nsFrameLoader.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -729,6 +729,12 @@ } if (IsRemoteFrame()) { + if (!XRE_IsParentProcess() && mURIToLoad && + mURIToLoad->SchemeIs("javascript")) { + // Web content should only be able to load javascript URIs same origin. + return NS_ERROR_DOM_BAD_CROSS_ORIGIN_URI; + } + if (!EnsureRemoteBrowser()) { NS_WARNING("Couldn't create child process for iframe."); return NS_ERROR_FAILURE; diff -Nru firefox-esr-140.13.0esr/dom/base/nsObjectLoadingContent.cpp firefox-esr-140.15.0esr/dom/base/nsObjectLoadingContent.cpp --- firefox-esr-140.13.0esr/dom/base/nsObjectLoadingContent.cpp 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/base/nsObjectLoadingContent.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -1428,6 +1428,17 @@ return NS_ERROR_NOT_AVAILABLE; } + // The channel's own security check happens in the parent process, which for + // a document load is only reached after the nsDocShellLoadState has already + // crossed IPC. Check here as well so that a load which content is not + // allowed to trigger never gets that far. + rv = nsContentUtils::GetSecurityManager()->CheckLoadURIWithPrincipal( + el->NodePrincipal(), mURI, nsIScriptSecurityManager::STANDARD, + doc->InnerWindowID()); + if (NS_FAILED(rv)) { + return rv; + } + nsCOMPtr group = doc->GetDocumentLoadGroup(); nsCOMPtr chan; RefPtr shim = diff -Nru firefox-esr-140.13.0esr/dom/broadcastchannel/BroadcastChannel.cpp firefox-esr-140.15.0esr/dom/broadcastchannel/BroadcastChannel.cpp --- firefox-esr-140.13.0esr/dom/broadcastchannel/BroadcastChannel.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/broadcastchannel/BroadcastChannel.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -211,6 +211,14 @@ bc->mWorkerRef = workerRef; } + // Throw if this process wouldn't be allowed to access storage. + if (!BackgroundChild::ValidatePrincipal(unpartitionedPrincipal, {})) { + MOZ_ASSERT_UNREACHABLE( + "ValidatePrincipal failure in UnpartitionedTestingChannel"); + aRv.Throw(NS_ERROR_UNEXPECTED); + return nullptr; + } + // Register this component to PBackground. PBackgroundChild* actorChild = BackgroundChild::GetOrCreateForCurrentThread(); if (NS_WARN_IF(!actorChild)) { @@ -334,6 +342,14 @@ return nullptr; } + // Throw if this process wouldn't be allowed to access storage. + if (!BackgroundChild::ValidatePrincipal(storagePrincipal, {})) { + MOZ_ASSERT_UNREACHABLE( + "ValidatePrincipal failure in UnpartitionedTestingChannel"); + aRv.Throw(NS_ERROR_UNEXPECTED); + return nullptr; + } + // Register this component to PBackground. PBackgroundChild* actorChild = BackgroundChild::GetOrCreateForCurrentThread(); if (NS_WARN_IF(!actorChild)) { diff -Nru firefox-esr-140.13.0esr/dom/cache/CacheStorage.cpp firefox-esr-140.15.0esr/dom/cache/CacheStorage.cpp --- firefox-esr-140.13.0esr/dom/cache/CacheStorage.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/cache/CacheStorage.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -272,6 +272,14 @@ mStatus(NS_OK) { MOZ_DIAGNOSTIC_ASSERT(mGlobal); + // Throw if this process wouldn't be allowed to access storage. + if (!BackgroundChild::ValidatePrincipalInfo(*mPrincipalInfo, {})) { + MOZ_ASSERT_UNREACHABLE( + "ValidatePrincipalInfo failed in CacheStorage constructor"); + mStatus = NS_ERROR_UNEXPECTED; + return; + } + // If the PBackground actor is already initialized then we can // immediately use it PBackgroundChild* actor = BackgroundChild::GetOrCreateForCurrentThread(); diff -Nru firefox-esr-140.13.0esr/dom/cache/DBSchema.cpp firefox-esr-140.15.0esr/dom/cache/DBSchema.cpp --- firefox-esr-140.13.0esr/dom/cache/DBSchema.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/cache/DBSchema.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -79,7 +79,7 @@ const int32_t kHackyPaddingSizePresentVersion = 27; // // Update this whenever the DB schema is changed. -const int32_t kLatestSchemaVersion = 29; +const int32_t kLatestSchemaVersion = 31; // --------- // The following constants define the SQL schema. These are defined in the // same order the SQL should be executed in CreateOrMigrateSchema(). They are @@ -148,7 +148,8 @@ "request_url_fragment TEXT NOT NULL, " "response_padding_size INTEGER NULL, " "request_body_disk_size INTEGER NULL, " - "response_body_disk_size INTEGER NULL " + "response_body_disk_size INTEGER NULL, " + "response_credentials INTEGER NOT NULL " // New columns must be added at the end of table to migrate and // validate properly. ")"; @@ -185,6 +186,11 @@ "CREATE INDEX response_headers_name_index " "ON response_headers (name)"; +// Index for fast lookup of headers by entry_id, particularly for vary checks +const char kIndexResponseHeadersEntryId[] = + "CREATE INDEX response_headers_entry_id_index " + "ON response_headers (entry_id, name)"; + const char kTableResponseUrlList[] = "CREATE TABLE response_url_list (" "url TEXT NOT NULL, " @@ -544,6 +550,8 @@ aConn.ExecuteSimpleSQL(nsLiteralCString(kTableResponseHeaders)))); QM_TRY(MOZ_TO_RESULT( aConn.ExecuteSimpleSQL(nsLiteralCString(kIndexResponseHeadersName)))); + QM_TRY(MOZ_TO_RESULT(aConn.ExecuteSimpleSQL( + nsLiteralCString(kIndexResponseHeadersEntryId)))); QM_TRY(MOZ_TO_RESULT( aConn.ExecuteSimpleSQL(nsLiteralCString(kTableResponseUrlList)))); QM_TRY( @@ -1062,12 +1070,18 @@ return Result{std::in_place}; } + // We use truncated SHA-1 hashes (64 bits) in the WHERE clause for O(log n) + // index lookup performance. The full URL strings are retrieved in the SELECT + // and verified post-query to handle the extremely rare case of hash + // collisions. This approach avoids O(n) string comparisons in the SQL query + // while maintaining correctness. + // + // We use a simplified query that avoids the expensive LEFT JOIN, GROUP BY, + // and COUNT() operations. The vary count check is done separately only when + // needed, avoiding ~300μs overhead per query. nsAutoCString query( - "SELECT id, COUNT(response_headers.name) AS vary_count, response_type " + "SELECT id, response_type, request_url_no_query, request_url_query " "FROM entries " - "LEFT OUTER JOIN response_headers ON " - "entries.id=response_headers.entry_id " - "AND response_headers.name='vary' COLLATE NOCASE " "WHERE entries.cache_id=:cache_id " "AND entries.request_url_no_query_hash=:url_no_query_hash "); @@ -1075,13 +1089,7 @@ query.AppendLiteral("AND entries.request_url_query_hash=:url_query_hash "); } - query.AppendLiteral("AND entries.request_url_no_query=:url_no_query "); - - if (!aParams.ignoreSearch()) { - query.AppendLiteral("AND entries.request_url_query=:url_query "); - } - - query.AppendLiteral("GROUP BY entries.id ORDER BY entries.id;"); + query.AppendLiteral("ORDER BY entries.id;"); QM_TRY_INSPECT(const auto& state, MOZ_TO_RESULT_INVOKE_MEMBER_TYPED( nsCOMPtr, aConn, @@ -1108,14 +1116,6 @@ state->BindUTF8StringAsBlobByName("url_query_hash"_ns, urlQueryHash))); } - QM_TRY(MOZ_TO_RESULT(state->BindUTF8StringByName( - "url_no_query"_ns, aRequest.urlWithoutQuery()))); - - if (!aParams.ignoreSearch()) { - QM_TRY(MOZ_TO_RESULT( - state->BindUTF8StringByName("url_query"_ns, aRequest.urlQuery()))); - } - EntryIds entryIdList; QM_TRY(CollectWhile( @@ -1130,17 +1130,35 @@ QM_TRY_INSPECT(const EntryId& entryId, MOZ_TO_RESULT_INVOKE_MEMBER(state, GetInt32, 0)); - QM_TRY_INSPECT(const int32_t& varyCount, + QM_TRY_INSPECT(const int32_t& responseType, MOZ_TO_RESULT_INVOKE_MEMBER(state, GetInt32, 1)); - QM_TRY_INSPECT(const int32_t& responseType, - MOZ_TO_RESULT_INVOKE_MEMBER(state, GetInt32, 2)); + QM_TRY_INSPECT(const auto& cachedUrlNoQuery, + MOZ_TO_RESULT_INVOKE_MEMBER_TYPED(nsAutoCString, state, + GetUTF8String, 2)); + + QM_TRY_INSPECT(const auto& cachedUrlQuery, + MOZ_TO_RESULT_INVOKE_MEMBER_TYPED(nsAutoCString, state, + GetUTF8String, 3)); + + // Verify URLs match to handle potential hash collisions. We use + // truncated SHA-1 (64 bits) for indexing performance, but verify the + // full URL post-query to ensure correctness. Hash collisions are + // extremely rare (~1 in 92 million for 20k entries) but possible. + if (!aRequest.urlWithoutQuery().Equals(cachedUrlNoQuery)) { + return Ok{}; + } + + if (!aParams.ignoreSearch() && + !aRequest.urlQuery().Equals(cachedUrlQuery)) { + return Ok{}; + } auto ignoreVary = aParams.ignoreVary() || responseType == static_cast(ResponseType::Opaque); - if (!ignoreVary && varyCount > 0) { + if (!ignoreVary) { QM_TRY_INSPECT(const bool& matchedByVary, MatchByVaryHeader(aConn, aRequest, entryId)); if (!matchedByVary) { @@ -1182,8 +1200,10 @@ }))); }())); - // Should not have called this function if this was not the case - MOZ_DIAGNOSTIC_ASSERT(!varyValues.IsEmpty()); + // If there are no vary headers, the request matches + if (varyValues.IsEmpty()) { + return true; + } QM_TRY_INSPECT(const auto& state, MOZ_TO_RESULT_INVOKE_MEMBER_TYPED( @@ -1726,6 +1746,7 @@ "response_security_info_id, " "response_principal_info, " "response_padding_size, " + "response_credentials, " "cache_id " ") VALUES (" ":request_method, " @@ -1754,6 +1775,7 @@ ":response_security_info_id, " ":response_principal_info, " ":response_padding_size, " + ":response_credentials, " ":cache_id " ");"_ns)); @@ -1876,6 +1898,10 @@ aResponse.paddingSize()))); } + QM_TRY(MOZ_TO_RESULT( + state->BindInt32ByName("response_credentials"_ns, + static_cast(aResponse.credentials())))); + QM_TRY(MOZ_TO_RESULT(state->BindInt64ByName("cache_id"_ns, aCacheId))); QM_TRY(MOZ_TO_RESULT(state->Execute())); @@ -1987,7 +2013,7 @@ "entries.response_principal_info, " "entries.response_padding_size, " "security_info.data, " - "entries.request_credentials " + "entries.response_credentials " "FROM entries " "LEFT OUTER JOIN security_info " "ON entries.response_security_info_id=security_info.id " @@ -2467,6 +2493,8 @@ Expect("request_headers", "table", kTableRequestHeaders), Expect("response_headers", "table", kTableResponseHeaders), Expect("response_headers_name_index", "index", kIndexResponseHeadersName), + Expect("response_headers_entry_id_index", "index", + kIndexResponseHeadersEntryId), Expect("response_url_list", "table", kTableResponseUrlList), Expect("storage", "table", kTableStorage), Expect("sqlite_autoindex_storage_1", "index"), // auto-gen by sqlite @@ -2573,6 +2601,10 @@ bool& aRewriteSchema); nsresult MigrateFrom28To29(nsIFile& aDBDir, mozIStorageConnection& aConn, bool& aRewriteSchema); +nsresult MigrateFrom29To30(nsIFile& aDBDir, mozIStorageConnection& aConn, + bool& aRewriteSchema); +nsresult MigrateFrom30To31(nsIFile& aDBDir, mozIStorageConnection& aConn, + bool& aRewriteSchema); // Configure migration functions to run for the given starting version. constexpr Migration sMigrationList[] = { Migration{15, MigrateFrom15To16}, Migration{16, MigrateFrom16To17}, @@ -2582,6 +2614,7 @@ Migration{23, MigrateFrom23To24}, Migration{24, MigrateFrom24To25}, Migration{25, MigrateFrom25To26}, Migration{26, MigrateFrom26To27}, Migration{27, MigrateFrom27To28}, Migration{28, MigrateFrom28To29}, + Migration{29, MigrateFrom29To30}, Migration{30, MigrateFrom30To31}, }; nsresult RewriteEntriesSchema(mozIStorageConnection& aConn) { @@ -3225,6 +3258,39 @@ aRewriteSchema = true; + return NS_OK; +} + +nsresult MigrateFrom29To30(nsIFile& aDBDir, mozIStorageConnection& aConn, + bool& aRewriteSchema) { + MOZ_ASSERT(!NS_IsMainThread()); + + // Add an index on response_headers(entry_id, name) to dramatically speed up + // vary header lookups during cache matching operations. + QM_TRY(MOZ_TO_RESULT( + aConn.ExecuteSimpleSQL(nsLiteralCString(kIndexResponseHeadersEntryId)))); + + QM_TRY(MOZ_TO_RESULT(aConn.SetSchemaVersion(30))); + + return NS_OK; +} + +nsresult MigrateFrom30To31(nsIFile& aDBDir, mozIStorageConnection& aConn, + bool& aRewriteSchema) { + MOZ_ASSERT(!NS_IsMainThread()); + + // Existing response objects would be getting credential type set to 2, + // which means that these response objects can no longer be loaded by + // credentialless cross-origin embedders which is fine; a network fetch + // would need to be performed for such objects. + QM_TRY(MOZ_TO_RESULT(aConn.ExecuteSimpleSQL( + "ALTER TABLE entries " + "ADD COLUMN response_credentials INTEGER NOT NULL DEFAULT 2;"_ns))); + + QM_TRY(MOZ_TO_RESULT(aConn.SetSchemaVersion(31))); + + aRewriteSchema = true; + return NS_OK; } diff -Nru firefox-esr-140.13.0esr/dom/cache/PrincipalVerifier.cpp firefox-esr-140.15.0esr/dom/cache/PrincipalVerifier.cpp --- firefox-esr-140.13.0esr/dom/cache/PrincipalVerifier.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/cache/PrincipalVerifier.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -8,6 +8,7 @@ #include "ErrorList.h" #include "mozilla/dom/ContentParent.h" +#include "mozilla/dom/ProcessIsolation.h" #include "mozilla/dom/QMResult.h" #include "mozilla/dom/cache/ManagerId.h" #include "mozilla/dom/quota/ResultExtensions.h" @@ -99,6 +100,12 @@ const auto& principal, PrincipalInfoToPrincipal(mPrincipalInfo), QM_VOID, [this](const nsresult result) { DispatchToInitiatingThread(result); }); + if (NS_WARN_IF(mHandle && !ValidatePrincipalCouldPotentiallyBeLoadedBy( + principal, mHandle->GetRemoteType(), {}))) { + DispatchToInitiatingThread(NS_ERROR_FAILURE); + return; + } + // We disallow null principal on the client side, but double-check here. if (NS_WARN_IF(principal->GetIsNullPrincipal())) { DispatchToInitiatingThread(NS_ERROR_FAILURE); diff -Nru firefox-esr-140.13.0esr/dom/cache/TypeUtils.cpp firefox-esr-140.15.0esr/dom/cache/TypeUtils.cpp --- firefox-esr-140.13.0esr/dom/cache/TypeUtils.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/cache/TypeUtils.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -199,6 +199,9 @@ aOut.paddingInfo() = aIn.GetPaddingInfo(); aOut.paddingSize() = aIn.GetPaddingSize(); + + // Record the credentials mode of the fetch that produced this response. + aOut.credentials() = aIn.GetCredentialsMode(); } void TypeUtils::ToCacheResponse(JSContext* aCx, CacheResponse& aOut, diff -Nru firefox-esr-140.13.0esr/dom/cache/test/mochitest/test_chrome_constructor.html firefox-esr-140.15.0esr/dom/cache/test/mochitest/test_chrome_constructor.html --- firefox-esr-140.13.0esr/dom/cache/test/mochitest/test_chrome_constructor.html 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/cache/test/mochitest/test_chrome_constructor.html 2026-08-26 17:03:41.000000000 +0000 @@ -14,12 +14,11 @@ SpecialPowers.pushPrefEnv({ "set": [[ "dom.caches.testing.enabled", true ]], }, function() { - // attach to a different origin's CacheStorage - var url = "https://example.com/"; - var storage = SpecialPowers.createChromeCache("content", url); + // attach to our origin's CacheStorage. + var storage = SpecialPowers.createChromeCache("content", window.location.origin); - // verify we can use the other origin's CacheStorage as normal - var req = new Request("https://example.com/index.html"); + // verify we can our origin's CacheStorage as normal + var req = new Request(`${window.location.origin}/index.html`); var res = new Response("hello world"); var cache; storage.open("foo").then(function(c) { diff -Nru firefox-esr-140.13.0esr/dom/canvas/TexUnpackBlob.cpp firefox-esr-140.15.0esr/dom/canvas/TexUnpackBlob.cpp --- firefox-esr-140.13.0esr/dom/canvas/TexUnpackBlob.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/TexUnpackBlob.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -397,11 +397,17 @@ WebGLTexelFormat dstFormat, const ptrdiff_t dstStride, const uint8_t** const out_begin, UniqueBuffer* const out_anchoredBuffer) const { - MOZ_ASSERT(srcFormat != WebGLTexelFormat::FormatNotSupportingAnyConversion); - MOZ_ASSERT(dstFormat != WebGLTexelFormat::FormatNotSupportingAnyConversion); - *out_begin = srcBegin; + // TexelBytesForFormat() has no size for these, so the stride validation below + // would be vacuous. Bail before it rather than relying on ConvertImage() to + // reject them. + if (srcFormat == WebGLTexelFormat::FormatNotSupportingAnyConversion || + dstFormat == WebGLTexelFormat::FormatNotSupportingAnyConversion) { + webgl->ErrorImplementationBug("Unconvertible texel format."); + return false; + } + const auto& unpacking = mDesc.unpacking; if (!rowLength || !rowCount) return true; diff -Nru firefox-esr-140.13.0esr/dom/canvas/WebGLBuffer.cpp firefox-esr-140.15.0esr/dom/canvas/WebGLBuffer.cpp --- firefox-esr-140.13.0esr/dom/canvas/WebGLBuffer.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/WebGLBuffer.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -77,22 +77,9 @@ void WebGLBuffer::BufferData(const GLenum target, const uint64_t size, const void* const maybeData, const GLenum usage, bool allowUninitialized) { - // The driver knows only GLsizeiptr, which is int32_t on 32bit! - bool sizeValid = CheckedInt(size).isValid(); - - if (mContext->gl->WorkAroundDriverBugs()) { - // Bug 790879 -#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK) - sizeValid &= CheckedInt(size).isValid(); -#endif - - // Bug 1610383 - if (mContext->gl->IsANGLE()) { - // While ANGLE seems to support up to `unsigned int`, UINT32_MAX-4 causes - // GL_OUT_OF_MEMORY in glFlush?? - sizeValid &= CheckedInt(size).isValid(); - } - } + // Bug 790879 + // Bug 1610383 + bool sizeValid = CheckedInt(size).isValid(); if (!sizeValid) { mContext->ErrorOutOfMemory("Size not valid for platform: %" PRIu64, size); @@ -276,7 +263,7 @@ for (const auto& cur : mIndexRanges) { const auto& range = cur.first; const auto& indexByteSize = IndexByteSizeByType(range.type); - const auto rangeBegin = range.byteOffset * indexByteSize; + const auto rangeBegin = range.byteOffset; const auto rangeEnd = rangeBegin + uint64_t(range.indexCount) * indexByteSize; if (rangeBegin >= updateEnd || rangeEnd <= updateBegin) continue; diff -Nru firefox-esr-140.13.0esr/dom/canvas/WebGLContext.cpp firefox-esr-140.15.0esr/dom/canvas/WebGLContext.cpp --- firefox-esr-140.13.0esr/dom/canvas/WebGLContext.cpp 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/WebGLContext.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -2108,21 +2108,21 @@ // -- -uint64_t AvailGroups(const uint64_t totalAvailItems, +uint64_t AvailGroups(const uint64_t totalAvailItemBytes, const uint64_t firstItemOffset, const uint32_t groupSize, const uint32_t groupStride) { MOZ_ASSERT(groupSize && groupStride); - MOZ_ASSERT(groupSize <= groupStride); - if (totalAvailItems <= firstItemOffset) return 0; - const size_t availItems = totalAvailItems - firstItemOffset; + if (totalAvailItemBytes <= firstItemOffset) { + return 0; + } - size_t availGroups = availItems / groupStride; - const size_t tailItems = availItems % groupStride; - if (tailItems >= groupSize) { - availGroups += 1; + const size_t availItemBytes = totalAvailItemBytes - firstItemOffset; + if (availItemBytes < groupSize) { + return 0; } - return availGroups; + + return (availItemBytes - groupSize) / groupStride + 1; } //////////////////////////////////////////////////////////////////////////////// diff -Nru firefox-esr-140.13.0esr/dom/canvas/WebGLContext.h firefox-esr-140.15.0esr/dom/canvas/WebGLContext.h --- firefox-esr-140.13.0esr/dom/canvas/WebGLContext.h 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/WebGLContext.h 2026-08-26 17:03:40.000000000 +0000 @@ -1451,7 +1451,7 @@ int32_t* out_intRead0, int32_t* out_intWrite0, int32_t* out_intSize); -uint64_t AvailGroups(uint64_t totalAvailItems, uint64_t firstItemOffset, +uint64_t AvailGroups(uint64_t totalAvailItemBytes, uint64_t firstItemOffset, uint32_t groupSize, uint32_t groupStride); //// diff -Nru firefox-esr-140.13.0esr/dom/canvas/WebGLContextDraw.cpp firefox-esr-140.15.0esr/dom/canvas/WebGLContextDraw.cpp --- firefox-esr-140.13.0esr/dom/canvas/WebGLContextDraw.cpp 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/WebGLContextDraw.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -639,8 +639,12 @@ const auto usedVerts = CheckedInt(usedVertsPerInstance) * instanceCount; - const auto remainingCapacity = - mTFO->mActive_VertCapacity - mTFO->mActive_VertPosition; + // The position can exceed the capacity if a bound buffer was shrunk while + // the TF was paused. + const size_t remainingCapacity = + mTFO->mActive_VertCapacity > mTFO->mActive_VertPosition + ? mTFO->mActive_VertCapacity - mTFO->mActive_VertPosition + : 0; if (!usedVerts.isValid() || usedVerts.value() > remainingCapacity) { mWebGL->ErrorInvalidOperation( "Insufficient buffer capacity remaining for" diff -Nru firefox-esr-140.13.0esr/dom/canvas/WebGLFramebuffer.cpp firefox-esr-140.15.0esr/dom/canvas/WebGLFramebuffer.cpp --- firefox-esr-140.13.0esr/dom/canvas/WebGLFramebuffer.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/WebGLFramebuffer.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -893,6 +893,11 @@ const uint32_t drawBuffer = cur->mAttachmentPoint - LOCAL_GL_COLOR_ATTACHMENT0; MOZ_ASSERT(drawBuffer <= 100); + std::vector drawBuffersForClear(drawBuffer + 1, + LOCAL_GL_NONE); + drawBuffersForClear[drawBuffer] = cur->mAttachmentPoint; + gl->fDrawBuffers(drawBuffersForClear.size(), + drawBuffersForClear.data()); switch (format->componentType) { case webgl::ComponentType::Int: gl->fClearBufferiv(LOCAL_GL_COLOR, drawBuffer, iZeros); @@ -924,6 +929,7 @@ } imageInfo->mUninitializedSlices.reset(); } + RefreshDrawBuffers(); return; } diff -Nru firefox-esr-140.13.0esr/dom/canvas/WebGLTexelConversions.cpp firefox-esr-140.15.0esr/dom/canvas/WebGLTexelConversions.cpp --- firefox-esr-140.13.0esr/dom/canvas/WebGLTexelConversions.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/WebGLTexelConversions.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -65,12 +65,15 @@ case WebGLTexelFormat::RGBA8: case WebGLTexelFormat::RGBA16F: case WebGLTexelFormat::RGBA32F: + case WebGLTexelFormat::RGBX8: case WebGLTexelFormat::BGRX8: case WebGLTexelFormat::BGRA8: return 4; default: - MOZ_ASSERT(false, "Unknown texel format. Coding mistake?"); - return 0; + // Returning 0 here would make the conversion loop below a no-op that + // still reports success, leaving the destination uninitialized; crash + // in all build types instead. + MOZ_CRASH("GFX: Unknown texel format. Coding mistake?"); } } @@ -107,13 +110,14 @@ } // Only textures uploaded from DOM elements or ImageData can allow DstFormat - // != SrcFormat. DOM elements can only give BGRA8, BGRX8, A8, RGB565 - // formats. See DOMElementToImageSurface. ImageData is always RGBA8. So all + // != SrcFormat. DOM elements can only give BGRA8, BGRX8, RGBX8, A8, RGB565 + // formats. See GetFormatForSurf. ImageData is always RGBA8. So all // other SrcFormat will always satisfy DstFormat==SrcFormat, so we can avoid // compiling the code for all the unreachable paths. const bool CanSrcFormatComeFromDOMElementOrImageData = SrcFormat == WebGLTexelFormat::BGRA8 || SrcFormat == WebGLTexelFormat::BGRX8 || + SrcFormat == WebGLTexelFormat::RGBX8 || SrcFormat == WebGLTexelFormat::A8 || SrcFormat == WebGLTexelFormat::RGB565 || SrcFormat == WebGLTexelFormat::RGBA8; diff -Nru firefox-esr-140.13.0esr/dom/canvas/WebGLTexelConversions.h firefox-esr-140.15.0esr/dom/canvas/WebGLTexelConversions.h --- firefox-esr-140.13.0esr/dom/canvas/WebGLTexelConversions.h 2026-07-15 20:30:28.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/WebGLTexelConversions.h 2026-08-26 17:03:40.000000000 +0000 @@ -280,6 +280,38 @@ } } +MOZ_ALWAYS_INLINE float unpackFromFloat11(uint16_t fp11) { + const uint32_t exponent = (fp11 >> 6) & 0x1F; + const uint32_t mantissa = fp11 & 0x3F; + + if (exponent == 0x1F) { + // INF or NaN + return BitwiseCast(0x7F800000 | (mantissa << 17)); + } + if (exponent == 0) { + // Zero or denormalized: mantissa * 2^-20. + return float(mantissa) / float(1 << 20); + } + // Normalized: rebias the exponent for float32 (127 - 15 = 112). + return BitwiseCast(((exponent + 112) << 23) | (mantissa << 17)); +} + +MOZ_ALWAYS_INLINE float unpackFromFloat10(uint16_t fp10) { + const uint32_t exponent = (fp10 >> 5) & 0x1F; + const uint32_t mantissa = fp10 & 0x1F; + + if (exponent == 0x1F) { + // INF or NaN + return BitwiseCast(0x7F800000 | (mantissa << 18)); + } + if (exponent == 0) { + // Zero or denormalized: mantissa * 2^-19. + return float(mantissa) / float(1 << 19); + } + // Normalized: rebias the exponent for float32 (127 - 15 = 112). + return BitwiseCast(((exponent + 112) << 23) | (mantissa << 18)); +} + enum class WebGLTexelPremultiplicationOp : int { None, Premultiply, @@ -368,6 +400,7 @@ case WebGLTexelFormat::RG16F: case WebGLTexelFormat::RGB11F11F10F: case WebGLTexelFormat::RGBA8: + case WebGLTexelFormat::RGBX8: case WebGLTexelFormat::BGRX8: case WebGLTexelFormat::BGRA8: return 4; @@ -415,7 +448,8 @@ format == WebGLTexelFormat::RGBA8 || format == WebGLTexelFormat::RGBA16F || format == WebGLTexelFormat::RGBA32F || - format == WebGLTexelFormat::BGRX8 || format == WebGLTexelFormat::BGRA8); + format == WebGLTexelFormat::RGBX8 || format == WebGLTexelFormat::BGRX8 || + format == WebGLTexelFormat::BGRA8); } /****** BEGIN CODE SHARED WITH WEBKIT ******/ @@ -429,7 +463,11 @@ template MOZ_ALWAYS_INLINE void unpack(const SrcType* __restrict src, DstType* __restrict dst) { - MOZ_ASSERT(false, "Unimplemented texture format conversion"); + // Every source format dispatched by WebGLImageConverter::run() must have an + // unpack specialization; a silent fallthrough here would leave the + // intermediate texel uninitialized and leak host memory into textures, so + // crash in all build types instead. + MOZ_CRASH("GFX: Unimplemented texture format unpacking"); } //////////////////////////////////////////////////////////////////////////////// @@ -517,6 +555,33 @@ dst[3] = src[1]; } +template <> +MOZ_ALWAYS_INLINE void unpack( + const uint8_t* __restrict src, uint8_t* __restrict dst) { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = 0; + dst[3] = 0xFF; +} + +template <> +MOZ_ALWAYS_INLINE void unpack( + const uint16_t* __restrict src, uint16_t* __restrict dst) { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = kFloat16Value_Zero; + dst[3] = kFloat16Value_One; +} + +template <> +MOZ_ALWAYS_INLINE void unpack( + const float* __restrict src, float* __restrict dst) { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = 0.0f; + dst[3] = 1.0f; +} + //////////////////////////////////////////////////////////////////////////////// // 3-channel formats template <> @@ -559,6 +624,16 @@ dst[3] = 1.0f; } +template <> +MOZ_ALWAYS_INLINE void unpack( + const uint32_t* __restrict src, float* __restrict dst) { + const uint32_t packedValue = src[0]; + dst[0] = unpackFromFloat11(uint16_t(packedValue & 0x7FF)); + dst[1] = unpackFromFloat11(uint16_t((packedValue >> 11) & 0x7FF)); + dst[2] = unpackFromFloat10(uint16_t((packedValue >> 22) & 0x3FF)); + dst[3] = 1.0f; +} + //////////////////////////////////////////////////////////////////////////////// // 4-channel formats template <> @@ -618,6 +693,15 @@ //////////////////////////////////////////////////////////////////////////////// // DOM element formats template <> +MOZ_ALWAYS_INLINE void unpack( + const uint8_t* __restrict src, uint8_t* __restrict dst) { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + dst[3] = 0xFF; +} + +template <> MOZ_ALWAYS_INLINE void unpack( const uint8_t* __restrict src, uint8_t* __restrict dst) { dst[0] = src[2]; diff -Nru firefox-esr-140.13.0esr/dom/canvas/WebGLTransformFeedback.cpp firefox-esr-140.15.0esr/dom/canvas/WebGLTransformFeedback.cpp --- firefox-esr-140.13.0esr/dom/canvas/WebGLTransformFeedback.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/WebGLTransformFeedback.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -72,10 +72,17 @@ } } - const size_t vertCapacity = buffer->ByteLength() / 4 / componentsPerVert; + // Use the bound range rather than the whole buffer, since + // bindBufferRange may expose only part of it. + const size_t vertCapacity = + indexedBinding.ByteCount() / 4 / componentsPerVert; minVertCapacity = std::min(minVertCapacity, vertCapacity); } + // Don't clamp mActive_VertPosition to the capacity here: it mirrors the + // driver's write offset, which persists across buffer re-specification, so + // clamping would lose track of the capacity already consumed if the buffer is + // grown again. Draw-time validation saturates instead. mActive_VertCapacity = minVertCapacity; return true; diff -Nru firefox-esr-140.13.0esr/dom/canvas/test/webgl-conf/generated-mochitest.toml firefox-esr-140.15.0esr/dom/canvas/test/webgl-conf/generated-mochitest.toml --- firefox-esr-140.13.0esr/dom/canvas/test/webgl-conf/generated-mochitest.toml 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/test/webgl-conf/generated-mochitest.toml 2026-08-26 17:03:41.000000000 +0000 @@ -5384,7 +5384,6 @@ ["generated/test_2_conformance2__extensions__ovr_multiview2_draw_buffers.html"] subsuite = "webgl2-core" skip-if = ["os == 'android'"] -fail-if = ["os == 'win' && debug"] ["generated/test_2_conformance2__extensions__ovr_multiview2_flat_varying.html"] subsuite = "webgl2-core" diff -Nru firefox-esr-140.13.0esr/dom/canvas/test/webgl-conf/mochitest-errata.toml firefox-esr-140.15.0esr/dom/canvas/test/webgl-conf/mochitest-errata.toml --- firefox-esr-140.13.0esr/dom/canvas/test/webgl-conf/mochitest-errata.toml 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/canvas/test/webgl-conf/mochitest-errata.toml 2026-08-26 17:03:41.000000000 +0000 @@ -1265,25 +1265,6 @@ ["generated/test_2_conformance2__extensions__ovr_multiview2_draw_buffers.html"] skip-if = ["os == 'android'"] -# https://bugzilla.mozilla.org/show_bug.cgi?id=1810021 -# -# Currently getting failures like the following: -# -# > ``` -# > the right edge of view 0 of color attachment 1 should be untouched -# > the left edge of view 1 of color attachment 1 should be untouched -# > the right edge of view 1 of color attachment 1 should be untouched -# > the left edge of view 2 of color attachment 1 should be untouched -# > the right edge of view 2 of color attachment 1 should be untouched -# > the left edge of view 3 of color attachment 1 should be untouched -# > the right edge of view 0 of color attachment 2 should be untouched -# > the left edge of view 1 of color attachment 2 should be untouched -# > the right edge of view 1 of color attachment 2 should be untouched -# > the left edge of view 2 of color attachment 2 should be untouched -# > the right edge of view 2 of color attachment 2 should be untouched -# > the left edge of view 3 of color attachment 2 should be untouched -# > ``` -fail-if = ["os == 'win' && debug"] ["generated/test_2_conformance2__extensions__ovr_multiview2_instanced_draw.html"] skip-if = ["os == 'android'"] diff -Nru firefox-esr-140.13.0esr/dom/chrome-webidl/WindowsJumpListShortcutDescription.webidl firefox-esr-140.15.0esr/dom/chrome-webidl/WindowsJumpListShortcutDescription.webidl --- firefox-esr-140.13.0esr/dom/chrome-webidl/WindowsJumpListShortcutDescription.webidl 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/chrome-webidl/WindowsJumpListShortcutDescription.webidl 2026-08-26 17:03:41.000000000 +0000 @@ -28,7 +28,7 @@ * Arguments to be supplied to the executable when the item is selected in * the Jump List. */ - DOMString arguments; + sequence arguments; /** * A description of the item that is displayed as a tooltip. diff -Nru firefox-esr-140.13.0esr/dom/clients/manager/ClientManagerParent.cpp firefox-esr-140.15.0esr/dom/clients/manager/ClientManagerParent.cpp --- firefox-esr-140.13.0esr/dom/clients/manager/ClientManagerParent.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/clients/manager/ClientManagerParent.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -12,6 +12,7 @@ #include "ClientManagerService.h" #include "ClientSourceParent.h" #include "ClientValidation.h" +#include "mozilla/dom/ContentParent.h" #include "mozilla/dom/PClientNavigateOpParent.h" #include "mozilla/Unused.h" @@ -75,14 +76,10 @@ already_AddRefed ClientManagerParent::AllocPClientSourceParent( const ClientSourceConstructorArgs& aArgs) { - Maybe contentParentId; + RefPtr contentParentHandle = + ::mozilla::ipc::BackgroundParent::GetContentParentHandle(Manager()); - uint64_t childID = ::mozilla::ipc::BackgroundParent::GetChildID(Manager()); - if (childID) { - contentParentId = Some(ContentParentId(childID)); - } - - return MakeAndAddRef(aArgs, contentParentId); + return MakeAndAddRef(aArgs, contentParentHandle); } IPCResult ClientManagerParent::RecvPClientSourceConstructor( diff -Nru firefox-esr-140.13.0esr/dom/clients/manager/ClientManagerService.cpp firefox-esr-140.15.0esr/dom/clients/manager/ClientManagerService.cpp --- firefox-esr-140.13.0esr/dom/clients/manager/ClientManagerService.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/clients/manager/ClientManagerService.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -716,7 +716,7 @@ } bool ClientManagerService::HasWindow( - const Maybe& aContentParentId, + ThreadsafeContentParentHandle* aContentParentHandle, const PrincipalInfo& aPrincipalInfo, const nsID& aClientId) { AssertIsOnBackgroundThread(); @@ -733,7 +733,7 @@ return false; } - if (aContentParentId && !source->IsOwnedByProcess(aContentParentId.value())) { + if (!source->IsOwnedByProcess(aContentParentHandle)) { return false; } diff -Nru firefox-esr-140.13.0esr/dom/clients/manager/ClientManagerService.h firefox-esr-140.15.0esr/dom/clients/manager/ClientManagerService.h --- firefox-esr-140.13.0esr/dom/clients/manager/ClientManagerService.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/clients/manager/ClientManagerService.h 2026-08-26 17:03:41.000000000 +0000 @@ -10,7 +10,6 @@ #include "ClientOpPromise.h" #include "mozilla/AlreadyAddRefed.h" #include "mozilla/Assertions.h" -#include "mozilla/Maybe.h" #include "mozilla/MozPromise.h" #include "mozilla/RefPtr.h" #include "mozilla/Variant.h" @@ -153,7 +152,7 @@ ThreadsafeContentParentHandle* aOriginContent, const ClientOpenWindowArgs& aArgs); - bool HasWindow(const Maybe& aContentParentId, + bool HasWindow(ThreadsafeContentParentHandle* aContentParentHandle, const mozilla::ipc::PrincipalInfo& aPrincipalInfo, const nsID& aClientId); diff -Nru firefox-esr-140.13.0esr/dom/clients/manager/ClientNavigateOpChild.cpp firefox-esr-140.15.0esr/dom/clients/manager/ClientNavigateOpChild.cpp --- firefox-esr-140.13.0esr/dom/clients/manager/ClientNavigateOpChild.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/clients/manager/ClientNavigateOpChild.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -240,6 +240,16 @@ nsCOMPtr principal = doc->NodePrincipal(); + rv = nsContentUtils::GetSecurityManager()->CheckLoadURIWithPrincipal( + principal, url, nsIScriptSecurityManager::STANDARD, doc->InnerWindowID()); + if (NS_FAILED(rv)) { + nsPrintfCString err("Navigation to \"%s\" is not allowed", + aArgs.url().get()); + CopyableErrorResult result; + result.ThrowTypeError(err); + return ClientOpPromise::CreateAndReject(result, __func__); + } + nsCOMPtr docShell = window->GetDocShell(); nsCOMPtr webProgress = do_GetInterface(docShell); if (!docShell || !webProgress) { diff -Nru firefox-esr-140.13.0esr/dom/clients/manager/ClientSource.cpp firefox-esr-140.15.0esr/dom/clients/manager/ClientSource.cpp --- firefox-esr-140.13.0esr/dom/clients/manager/ClientSource.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/clients/manager/ClientSource.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -15,6 +15,7 @@ #include "mozilla/Try.h" #include "mozilla/dom/BlobURLProtocolHandler.h" #include "mozilla/dom/ClientIPCTypes.h" +#include "mozilla/dom/ContentChild.h" #include "mozilla/dom/DOMMozPromiseRequestHolder.h" #include "mozilla/dom/ipc/StructuredCloneData.h" #include "mozilla/dom/JSExecutionManager.h" @@ -183,7 +184,8 @@ // This can happen since we use MozURL for validation which does not handle // some of the more obscure internal principal/url combinations. Normal // content pages will pass this check. - if (NS_WARN_IF(!ClientIsValidPrincipalInfo(mClientInfo.PrincipalInfo()))) { + if (NS_WARN_IF(!ClientIsValidPrincipalInfo(mClientInfo.PrincipalInfo(), + CurrentRemoteType()))) { Shutdown(); return; } diff -Nru firefox-esr-140.13.0esr/dom/clients/manager/ClientSourceParent.cpp firefox-esr-140.15.0esr/dom/clients/manager/ClientSourceParent.cpp --- firefox-esr-140.13.0esr/dom/clients/manager/ClientSourceParent.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/clients/manager/ClientSourceParent.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -147,11 +147,11 @@ ClientSourceParent::ClientSourceParent( const ClientSourceConstructorArgs& aArgs, - const Maybe& aContentParentId) + ThreadsafeContentParentHandle* aContentParentHandle) : mClientInfo(aArgs.id(), aArgs.agentClusterId(), aArgs.type(), aArgs.principalInfo(), aArgs.creationTime(), aArgs.url(), aArgs.frameType()), - mContentParentId(aContentParentId), + mContentParentHandle(aContentParentHandle), mService(ClientManagerService::GetOrCreateInstance()), mExecutionReady(false), mFrozen(false) {} @@ -166,7 +166,10 @@ // Ensure the principal is reasonable before adding ourself to the service. // Since we validate the principal on the child side as well, any failure // here is treated as fatal. - if (NS_WARN_IF(!ClientIsValidPrincipalInfo(mClientInfo.PrincipalInfo()))) { + if (NS_WARN_IF(!ClientIsValidPrincipalInfo( + mClientInfo.PrincipalInfo(), + mContentParentHandle ? mContentParentHandle->GetRemoteType() + : NOT_REMOTE_TYPE))) { mService->ForgetFutureSource(mClientInfo.ToIPC()); return IPC_FAIL(Manager(), "Invalid PrincipalInfo!"); } diff -Nru firefox-esr-140.13.0esr/dom/clients/manager/ClientSourceParent.h firefox-esr-140.15.0esr/dom/clients/manager/ClientSourceParent.h --- firefox-esr-140.13.0esr/dom/clients/manager/ClientSourceParent.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/clients/manager/ClientSourceParent.h 2026-08-26 17:03:41.000000000 +0000 @@ -17,11 +17,12 @@ class ClientHandleParent; class ClientManagerService; +class ThreadsafeContentParentHandle; class ClientSourceParent final : public PClientSourceParent { ClientInfo mClientInfo; Maybe mController; - const Maybe mContentParentId; + const RefPtr mContentParentHandle; RefPtr mService; nsTArray mHandleList; MozPromiseHolder mExecutionReadyPromise; @@ -57,8 +58,9 @@ public: NS_INLINE_DECL_REFCOUNTING(ClientSourceParent, override) - explicit ClientSourceParent(const ClientSourceConstructorArgs& aArgs, - const Maybe& aContentParentId); + explicit ClientSourceParent( + const ClientSourceConstructorArgs& aArgs, + ThreadsafeContentParentHandle* aContentParentHandle); mozilla::ipc::IPCResult Init(); @@ -74,8 +76,9 @@ void ClearController(); - bool IsOwnedByProcess(ContentParentId aContentParentId) const { - return mContentParentId && mContentParentId.value() == aContentParentId; + bool IsOwnedByProcess( + ThreadsafeContentParentHandle* aContentParentHandle) const { + return mContentParentHandle == aContentParentHandle; } void AttachHandle(ClientHandleParent* aClientSource); diff -Nru firefox-esr-140.13.0esr/dom/clients/manager/ClientValidation.cpp firefox-esr-140.15.0esr/dom/clients/manager/ClientValidation.cpp --- firefox-esr-140.13.0esr/dom/clients/manager/ClientValidation.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/clients/manager/ClientValidation.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -6,6 +6,7 @@ #include "ClientValidation.h" +#include "mozilla/dom/ProcessIsolation.h" #include "mozilla/ipc/PBackgroundSharedTypes.h" #include "mozilla/StaticPrefs_security.h" #include "mozilla/net/MozURL.h" @@ -16,11 +17,22 @@ using mozilla::ipc::PrincipalInfo; using mozilla::net::MozURL; -bool ClientIsValidPrincipalInfo(const PrincipalInfo& aPrincipalInfo) { - // Ideally we would verify that the source process has permission to - // create a window or worker with the given principal, but we don't - // currently have any such restriction in place. Instead, at least - // verify the PrincipalInfo is an expected type and has a parsable +bool ClientIsValidPrincipalInfo(const PrincipalInfo& aPrincipalInfo, + const nsACString& aRemoteType) { + auto result = mozilla::ipc::PrincipalInfoToPrincipal(aPrincipalInfo); + if (NS_WARN_IF(result.isErr())) { + return false; + } + + // FIXME: Remove the system allowance once for non-inference processes once we + // can load documents with the system principal into content. + if (NS_WARN_IF(!ValidatePrincipalCouldPotentiallyBeLoadedBy( + result.inspect(), aRemoteType, + {ValidatePrincipalOptions::AllowSystem}))) { + return false; + } + + // Verify the PrincipalInfo is an expected type and has a parsable // origin/spec. switch (aPrincipalInfo.type()) { // Any system and null principal is acceptable. diff -Nru firefox-esr-140.13.0esr/dom/clients/manager/ClientValidation.h firefox-esr-140.15.0esr/dom/clients/manager/ClientValidation.h --- firefox-esr-140.13.0esr/dom/clients/manager/ClientValidation.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/clients/manager/ClientValidation.h 2026-08-26 17:03:41.000000000 +0000 @@ -17,7 +17,8 @@ namespace dom { bool ClientIsValidPrincipalInfo( - const mozilla::ipc::PrincipalInfo& aPrincipalInfo); + const mozilla::ipc::PrincipalInfo& aPrincipalInfo, + const nsACString& aRemoteType); bool ClientIsValidCreationURL(const mozilla::ipc::PrincipalInfo& aPrincipalInfo, const nsACString& aURL); diff -Nru firefox-esr-140.13.0esr/dom/cookiestore/CookieStoreNotifier.cpp firefox-esr-140.15.0esr/dom/cookiestore/CookieStoreNotifier.cpp --- firefox-esr-140.13.0esr/dom/cookiestore/CookieStoreNotifier.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/cookiestore/CookieStoreNotifier.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -12,6 +12,7 @@ #include "mozilla/dom/Document.h" #include "mozilla/dom/WorkerPrivate.h" #include "mozilla/Unused.h" +#include "nsContentUtils.h" #include "nsICookie.h" #include "nsICookieNotification.h" #include "nsISerialEventTarget.h" @@ -49,7 +50,9 @@ } nsCString host; - if (NS_WARN_IF(NS_FAILED(principal->GetAsciiHost(host))) || host.IsEmpty()) { + if (NS_WARN_IF(NS_FAILED( + nsContentUtils::GetHostOrIPv6WithBrackets(principal, host))) || + host.IsEmpty()) { return nullptr; } diff -Nru firefox-esr-140.13.0esr/dom/cookiestore/CookieStoreParent.cpp firefox-esr-140.15.0esr/dom/cookiestore/CookieStoreParent.cpp --- firefox-esr-140.13.0esr/dom/cookiestore/CookieStoreParent.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/cookiestore/CookieStoreParent.cpp 2026-08-26 17:03:40.000000000 +0000 @@ -21,6 +21,7 @@ #include "mozilla/Unused.h" #include "nsICookieManager.h" #include "nsICookieService.h" +#include "nsNetUtil.h" #include "nsProxyRelease.h" #include "mozilla/ipc/URIUtils.h" // for IPDLParamTraits #include "nsIEffectiveTLDService.h" @@ -44,19 +45,19 @@ RefPtr contentParent = aParent->GetContentParent(); if (!contentParent) { - return true; + return false; } PNeckoParent* neckoParent = LoneManagedOrNullAsserts(contentParent->ManagedPNeckoParent()); if (!neckoParent) { - return true; + return false; } PCookieServiceParent* csParent = LoneManagedOrNullAsserts(neckoParent->ManagedPCookieServiceParent()); if (!csParent) { - return true; + return false; } auto* cs = static_cast(csParent); @@ -64,6 +65,16 @@ return cs->ContentProcessHasCookie(aDomain, aOriginAttributes); } +bool SubscriptionPrincipalMatchesScope(nsIPrincipal* aPrincipal, + const nsACString& aScopeURL) { + nsCOMPtr scopeURI; + if (NS_WARN_IF(NS_FAILED(NS_NewURI(getter_AddRefs(scopeURI), aScopeURL)))) { + return false; + } + + return aPrincipal->IsSameOrigin(scopeURI); +} + } // namespace CookieStoreParent::CookieStoreParent() { AssertIsOnBackgroundThread(); } @@ -196,6 +207,10 @@ return IPC_FAIL(this, "principal not allowed for remote type"); } + if (!SubscriptionPrincipalMatchesScope(principal, aScopeURL)) { + return IPC_FAIL(this, "principal not same-origin with scope"); + } + InvokeAsync(GetMainThreadSerialEventTarget(), __func__, [self = RefPtr(this), aPrincipalInfo, aScopeURL]() { CookieStoreSubscriptionService* service = @@ -246,6 +261,10 @@ return IPC_FAIL(this, "principal not allowed for remote type"); } + if (!SubscriptionPrincipalMatchesScope(principal, aScopeURL)) { + return IPC_FAIL(this, "principal not same-origin with scope"); + } + InvokeAsync(GetMainThreadSerialEventTarget(), __func__, [self = RefPtr(this), aPrincipalInfo, aScopeURL, aSubscriptions, aSubscription]() { diff -Nru firefox-esr-140.13.0esr/dom/cookiestore/CookieStoreSubscriptionService.cpp firefox-esr-140.15.0esr/dom/cookiestore/CookieStoreSubscriptionService.cpp --- firefox-esr-140.13.0esr/dom/cookiestore/CookieStoreSubscriptionService.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/cookiestore/CookieStoreSubscriptionService.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -13,6 +13,7 @@ #include "mozilla/net/Cookie.h" #include "mozilla/net/CookieCommons.h" #include "nsAppDirectoryServiceDefs.h" +#include "nsContentUtils.h" #include "nsICookieNotification.h" using namespace mozilla::dom; @@ -322,6 +323,22 @@ continue; } + nsCOMPtr principalURI; + rv = NS_NewURI(getter_AddRefs(principalURI), principalInfo.spec()); + if (NS_WARN_IF(NS_FAILED(rv))) { + continue; + } + + nsAutoCString host; + rv = nsContentUtils::GetHostOrIPv6WithBrackets(principalURI, host); + if (NS_WARN_IF(NS_FAILED(rv)) || host.IsEmpty()) { + continue; + } + + if (!CookieCommons::DomainMatches(Cookie::Cast(cookie), host)) { + continue; + } + for (const CookieSubscription& subscription : data.mSubscriptions) { if (subscription.name().isSome() && subscription.name().value() != name) { continue; diff -Nru firefox-esr-140.13.0esr/dom/events/EventStateManager.cpp firefox-esr-140.15.0esr/dom/events/EventStateManager.cpp --- firefox-esr-140.13.0esr/dom/events/EventStateManager.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/events/EventStateManager.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -2909,6 +2909,8 @@ nsIContent* editingElement = aSelectionTarget->IsEditable() ? aSelectionTarget->GetEditingHost() : nullptr; + nsCOMPtr principal; + bool fromChildProcess = false; // In chrome, only allow dragging inside editable areas. bool isChromeContext = !aWindow->GetBrowsingContext()->IsContent(); @@ -2916,8 +2918,9 @@ if (mGestureDownDragStartData) { // A child process started a drag so use any data it assigned for the dnd // session. - mGestureDownDragStartData->AddInitialDnDDataTo(aDataTransfer, aPrincipal, - aCsp, aCookieJarSettings); + mGestureDownDragStartData->AddInitialDnDDataTo( + aDataTransfer, getter_AddRefs(principal), aCsp, aCookieJarSettings); + fromChildProcess = true; mGestureDownDragStartData.forget(aRemoteDragStartData); *aAllowEmptyDataTransfer = true; } @@ -2994,6 +2997,10 @@ if (dragContent != originalDragContent) aDataTransfer->ClearAll(); *aTargetNode = dragContent; NS_ADDREF(*aTargetNode); + if (!fromChildProcess) { + principal = dragContent->NodePrincipal(); + } + principal.forget(aPrincipal); } } diff -Nru firefox-esr-140.13.0esr/dom/events/IMEStateManager.cpp firefox-esr-140.15.0esr/dom/events/IMEStateManager.cpp --- firefox-esr-140.13.0esr/dom/events/IMEStateManager.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/events/IMEStateManager.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -479,12 +479,44 @@ nsContentUtils::AddScriptRunner(NS_NewRunnableFunction( "IMEStateManager::RecreateIMEContentObserverWhenContentRemoved", [presContext = OwningNonNull{aPresContext}]() { - MOZ_ASSERT(sFocusedPresContext == presContext); - MOZ_ASSERT(!sFocusedElement); - if (RefPtr htmlEditor = - nsContentUtils::GetHTMLEditor(presContext)) { - CreateIMEContentObserver(*htmlEditor, nullptr); + // If focus has been changed, we need to do nothing. + if (MOZ_UNLIKELY(sFocusedPresContext != presContext || + sFocusedElement)) { + return; } + // Otherwise, we need to recreate IMEContentObserver if there is no + // proper IMEContentObserver has not been created. + const RefPtr htmlEditor = + nsContentUtils::GetHTMLEditor(presContext); + if (MOZ_UNLIKELY(!htmlEditor)) { + return; + } + if (sActiveIMEContentObserver) { + // If we've already created IMEContentObserver and it is observing + // for the HTMLEditor, we need to do nothing. + if (sActiveIMEContentObserver->IsObserving(presContext, nullptr)) { + return; + } + NS_WARNING( + "There is unexpected IMEContentObserver, we'll recreate it..."); + // Then, destroy the unnecessary observer. + DestroyIMEContentObserver(); + // NOTIFY_IME_OF_BLUR **might** cause changing the DOM focus because + // if we're in the parent process, the widget may call native IME + // synchronously. + if (MOZ_UNLIKELY(sFocusedPresContext != presContext || + sFocusedElement)) { + MOZ_ASSERT(XRE_IsParentProcess()); + return; + } + if (sActiveIMEContentObserver) { + MOZ_ASSERT(XRE_IsParentProcess()); + MOZ_ASSERT( + sActiveIMEContentObserver->IsObserving(presContext, nullptr)); + return; + } + } + CreateIMEContentObserver(*htmlEditor, nullptr); })); } diff -Nru firefox-esr-140.13.0esr/dom/filesystem/FileSystemSecurity.cpp firefox-esr-140.15.0esr/dom/filesystem/FileSystemSecurity.cpp --- firefox-esr-140.13.0esr/dom/filesystem/FileSystemSecurity.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/filesystem/FileSystemSecurity.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -112,6 +112,11 @@ MOZ_ASSERT(NS_IsMainThread()); mozilla::ipc::AssertIsInMainProcess(); + // POSIX APIs accept all other characters than NUL + if (aPath.FindChar(char16_t(0)) != kNotFound) { + return false; + } + #if defined(XP_WIN) if (StringBeginsWith(aPath, u"..\\"_ns) || FindInReadable(u"\\..\\"_ns, aPath) || diff -Nru firefox-esr-140.13.0esr/dom/fs/child/FileSystemBackgroundRequestHandler.cpp firefox-esr-140.15.0esr/dom/fs/child/FileSystemBackgroundRequestHandler.cpp --- firefox-esr-140.13.0esr/dom/fs/child/FileSystemBackgroundRequestHandler.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/fs/child/FileSystemBackgroundRequestHandler.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -7,6 +7,7 @@ #include "FileSystemBackgroundRequestHandler.h" #include "fs/FileSystemChildFactory.h" +#include "mozilla/dom/ContentChild.h" #include "mozilla/dom/FileSystemManagerChild.h" #include "mozilla/dom/PFileSystemManager.h" #include "mozilla/ipc/BackgroundChild.h" @@ -78,6 +79,18 @@ using mozilla::ipc::Endpoint; using mozilla::ipc::PBackgroundChild; + // Throw if this process wouldn't be allowed to access storage. + EnumSet options; + if (CurrentRemoteType() == INFERENCE_REMOTE_TYPE) { + options += ValidatePrincipalOptions::AllowSystem; + } + if (!BackgroundChild::ValidatePrincipalInfo(aPrincipalInfo, options)) { + MOZ_ASSERT_UNREACHABLE( + "ValidatePrincipalInfo failure in CreateFileSystemManagerChild"); + return FileSystemManagerChild::ActorPromise::CreateAndReject( + NS_ERROR_FAILURE, __func__); + } + if (!mCreatingFileSystemManagerChild) { PBackgroundChild* backgroundChild = BackgroundChild::GetOrCreateForCurrentThread(); diff -Nru firefox-esr-140.13.0esr/dom/gamepad/linux/LinuxGamepad.cpp firefox-esr-140.15.0esr/dom/gamepad/linux/LinuxGamepad.cpp --- firefox-esr-140.13.0esr/dom/gamepad/linux/LinuxGamepad.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/gamepad/linux/LinuxGamepad.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -62,11 +62,18 @@ guint source_id = UINT_MAX; char idstring[256] = {0}; char devpath[PATH_MAX] = {0}; - uint8_t key_map[KEY_MAX] = {0}; - uint8_t abs_map[ABS_MAX] = {0}; + uint8_t key_map[KEY_CNT] = {0}; + uint8_t abs_map[ABS_CNT] = {0}; std::unordered_map abs_info; }; +// evdev admits key/abs codes up to KEY_MAX/ABS_MAX inclusive, so the maps must +// have KEY_CNT/ABS_CNT (== *_MAX + 1) entries to index every valid code. +static_assert(sizeof(Gamepad::key_map) > KEY_MAX, + "key_map must hold every valid EV_KEY code (0..KEY_MAX)"); +static_assert(sizeof(Gamepad::abs_map) > ABS_MAX, + "abs_map must hold every valid EV_ABS code (0..ABS_MAX)"); + static inline bool LoadAbsInfo(int fd, Gamepad* gamepad, uint16_t code) { input_absinfo info{0}; if (ioctl(fd, EVIOCGABS(code), &info) < 0) { @@ -211,7 +218,7 @@ } // Now, go through the non-semantic buttons and handle them as extras - for (uint16_t key = 0; key < KEY_MAX; key++) { + for (uint16_t key = 0; key < KEY_CNT; key++) { // Skip standard buttons if (gamepad->isStandardGamepad && std::find(kStandardButtons.begin(), kStandardButtons.end(), key) != @@ -237,7 +244,7 @@ LoadAbsInfo(fd, gamepad.get(), ABS_HAT0Y); } - for (uint16_t i = 0; i < ABS_MAX; ++i) { + for (uint16_t i = 0; i < ABS_CNT; ++i) { if (gamepad->isStandardGamepad && (std::find(kStandardAxes.begin(), kStandardAxes.end(), i) != kStandardAxes.end() || @@ -440,6 +447,11 @@ switch (event.type) { case EV_KEY: + // event.code comes from the device and is untrusted; bound it before + // indexing key_map. + if (event.code >= KEY_CNT) { + continue; + } if (gamepad->isStandardGamepad) { service->NewButtonEvent(gamepad->handle, gamepad->key_map[event.code], !!event.value); diff -Nru firefox-esr-140.13.0esr/dom/html/HTMLMediaElement.cpp firefox-esr-140.15.0esr/dom/html/HTMLMediaElement.cpp --- firefox-esr-140.13.0esr/dom/html/HTMLMediaElement.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/html/HTMLMediaElement.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -2407,6 +2407,18 @@ nsIChannel* aNewChannel, uint32_t aFlags) { MOZ_ASSERT(mChannelLoader); + if (aNewChannel) { + nsCOMPtr oldURI; + if (aChannel) { + aChannel->GetURI(getter_AddRefs(oldURI)); + } + aNewChannel->GetURI(getter_AddRefs(mLoadingSrcFinalURI)); + LOG(LogLevel::Debug, + ("%p OnChannelRedirect: from %s to %s", this, + oldURI ? oldURI->GetSpecOrDefault().get() : "null", + mLoadingSrcFinalURI ? mLoadingSrcFinalURI->GetSpecOrDefault().get() + : "null")); + } return mChannelLoader->Redirect(aChannel, aNewChannel, aFlags); } @@ -2445,6 +2457,8 @@ mChannelLoader = nullptr; } + mLoadingSrcFinalURI = nullptr; + bool fireTimeUpdate = false; if (mDecoder) { @@ -2461,6 +2475,8 @@ RemoveMediaElementFromURITable(); mLoadingSrcTriggeringPrincipal = nullptr; + // The CORS mode is scoped to the current load. + mCORSMode = CORS_NONE; DDLOG(DDLogCategory::Property, "loading_src", ""); DDUNLINKCHILD(mMediaSource.get()); mMediaSource = nullptr; @@ -2553,12 +2569,12 @@ bool isSameOriginLoad = false; nsresult rv = NS_ERROR_NOT_AVAILABLE; - if (mSrcAttrTriggeringPrincipal && mLoadingSrc) { - rv = mSrcAttrTriggeringPrincipal->IsSameOrigin(mLoadingSrc, - &isSameOriginLoad); + if (mLoadingSrcTriggeringPrincipal && mLoadingSrcFinalURI) { + rv = mLoadingSrcTriggeringPrincipal->IsSameOrigin(mLoadingSrcFinalURI, + &isSameOriginLoad); } - if (NS_SUCCEEDED(rv) && !isSameOriginLoad) { + if (NS_FAILED(rv) || !isSameOriginLoad) { // aErrorDetails can include sensitive details like MimeType or HTTP Status // Code. In case we're loading a 3rd party resource we should not leak this // and pass a Generic Error Message @@ -2761,6 +2777,9 @@ // If we have a 'src' attribute, use that exclusively. nsAutoString src; if (mSrcAttrStream) { + // Media provider objects use local mode, so a previous URL load's CORS + // mode does not apply. + mCORSMode = CORS_NONE; SetupSrcMediaStreamPlayback(mSrcAttrStream); } else if (GetAttr(nsGkAtoms::src, src)) { nsCOMPtr uri; @@ -2784,6 +2803,7 @@ } else { mLoadingSrc = nullptr; } + mLoadingSrcFinalURI = mLoadingSrc; mLoadingSrcTriggeringPrincipal = mSrcAttrTriggeringPrincipal; DDLOG(DDLogCategory::Property, "loading_src", nsCString(NS_ConvertUTF16toUTF8(src))); @@ -3074,6 +3094,7 @@ RemoveMediaElementFromURITable(); mLoadingSrc = uri; + mLoadingSrcFinalURI = mLoadingSrc; mLoadingSrcTriggeringPrincipal = child->GetSrcTriggeringPrincipal(); DDLOG(DDLogCategory::Property, "loading_src", nsCString(NS_ConvertUTF16toUTF8(src))); @@ -5437,6 +5458,7 @@ void HTMLMediaElement::SetupSrcMediaStreamPlayback(DOMMediaStream* aStream) { NS_ASSERTION(!mSrcStream, "Should have been ended already"); + MOZ_ASSERT(mCORSMode == CORS_NONE); mLoadingSrc = nullptr; mSrcStream = aStream; diff -Nru firefox-esr-140.13.0esr/dom/html/HTMLMediaElement.h firefox-esr-140.15.0esr/dom/html/HTMLMediaElement.h --- firefox-esr-140.13.0esr/dom/html/HTMLMediaElement.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/html/HTMLMediaElement.h 2026-08-26 17:03:41.000000000 +0000 @@ -1577,6 +1577,12 @@ // redirects etc. nsCOMPtr mLoadingSrc; + // The URI of the resource actually loaded. Starts equal to mLoadingSrc and + // is updated to the post-redirect URI on each redirect. Used to decide + // cross-origin load-error redaction; null means we have no captured URI, and + // is treated as cross-origin. + nsCOMPtr mLoadingSrcFinalURI; + // The triggering principal for the current source. nsCOMPtr mLoadingSrcTriggeringPrincipal; diff -Nru firefox-esr-140.13.0esr/dom/html/HTMLOptionElement.h firefox-esr-140.15.0esr/dom/html/HTMLOptionElement.h --- firefox-esr-140.13.0esr/dom/html/HTMLOptionElement.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/html/HTMLOptionElement.h 2026-08-26 17:03:42.000000000 +0000 @@ -110,11 +110,6 @@ int32_t Index(); - protected: - virtual ~HTMLOptionElement(); - - JSObject* WrapNode(JSContext*, JS::Handle aGivenProto) override; - /** * Get the select content element that contains this option, this * intentionally does not return nsresult, all we care about is if @@ -122,6 +117,11 @@ */ HTMLSelectElement* GetSelect(); +protected: + virtual ~HTMLOptionElement(); + + JSObject* WrapNode(JSContext*, JS::Handle aGivenProto) override; + bool mSelectedChanged = false; // True only while we're under the SetOptionsSelectedByIndex call when our diff -Nru firefox-esr-140.13.0esr/dom/html/HTMLSelectElement.cpp firefox-esr-140.15.0esr/dom/html/HTMLSelectElement.cpp --- firefox-esr-140.13.0esr/dom/html/HTMLSelectElement.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/html/HTMLSelectElement.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -665,15 +665,16 @@ bool HTMLSelectElement::MatchSelectedOptions(Element* aElement, int32_t /* unused */, nsAtom* /* unused */, - void* /* unused*/) { + void* aData) { HTMLOptionElement* option = HTMLOptionElement::FromNode(aElement); - return option && option->Selected(); + return option && option->Selected() && + option->GetSelect() == static_cast(aData); } nsIHTMLCollection* HTMLSelectElement::SelectedOptions() { if (!mSelectedOptions) { mSelectedOptions = new nsContentList(this, MatchSelectedOptions, nullptr, - nullptr, /* deep */ true); + this, /* deep */ true); } return mSelectedOptions; } diff -Nru firefox-esr-140.13.0esr/dom/html/nsGenericHTMLElement.cpp firefox-esr-140.15.0esr/dom/html/nsGenericHTMLElement.cpp --- firefox-esr-140.13.0esr/dom/html/nsGenericHTMLElement.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/html/nsGenericHTMLElement.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -3704,7 +3704,8 @@ void nsGenericHTMLElement::HidePopoverInternal(bool aFocusPreviousElement, bool aFireEvents, ErrorResult& aRv) { - OwnerDoc()->HidePopover(*this, aFocusPreviousElement, aFireEvents, aRv); + RefPtr document = OwnerDoc(); + document->HidePopover(*this, aFocusPreviousElement, aFireEvents, aRv); } void nsGenericHTMLElement::ForgetPreviouslyFocusedElementAfterHidingPopover() { diff -Nru firefox-esr-140.13.0esr/dom/html/test/browser.toml firefox-esr-140.15.0esr/dom/html/test/browser.toml --- firefox-esr-140.13.0esr/dom/html/test/browser.toml 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/html/test/browser.toml 2026-08-26 17:03:41.000000000 +0000 @@ -34,6 +34,9 @@ ["browser_form_post_from_file_to_http.js"] +["browser_input_file_untrusted_drop.js"] +support-files = ["file_input_file_untrusted_drop.html"] + ["browser_refresh_after_document_write.js"] support-files = ["file_refresh_after_document_write.html"] diff -Nru firefox-esr-140.13.0esr/dom/html/test/browser_input_file_untrusted_drop.js firefox-esr-140.15.0esr/dom/html/test/browser_input_file_untrusted_drop.js --- firefox-esr-140.13.0esr/dom/html/test/browser_input_file_untrusted_drop.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/html/test/browser_input_file_untrusted_drop.js 2026-08-26 17:03:42.000000000 +0000 @@ -0,0 +1,174 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const TEST_PATH = getRootDirectory(gTestPath).replace( + "chrome://mochitests/content", + "https://example.com" +); +const PAGE = TEST_PATH + "file_input_file_untrusted_drop.html"; + +const FILE_CONTENTS = "not for the page to see"; + +async function createDraggedFile() { + const path = PathUtils.join( + PathUtils.tempDir, + "browser_input_file_untrusted_drop.txt" + ); + await IOUtils.writeUTF8(path, FILE_CONTENTS); + registerCleanupFunction(() => IOUtils.remove(path, { ignoreAbsent: true })); + return File.createFromFileName(path); +} + +function dragFileOverInput(browser, file) { + return SpecialPowers.spawn(browser, [file], async draggedFile => { + const doc = content.document; + const input = doc.getElementById("fileinput"); + + content.wrappedJSObject.installDragEnterStealer(); + + const dragData = [[{ type: "application/x-moz-file", data: draggedFile }]]; + + // EventUtils.startDragSession() is not available on this branch, so use + // the drag service to start the session for a drag from another + // application. + const dragService = SpecialPowers.Cc[ + "@mozilla.org/widget/dragservice;1" + ].getService(SpecialPowers.Ci.nsIDragService); + dragService.startDragSessionForTests( + content, + SpecialPowers.Ci.nsIDragService.DRAGDROP_ACTION_COPY + ); + try { + // Fires dragstart on #dragsource, then dragenter and dragover on the + // file input. No drop. + EventUtils.synthesizeDragOver( + doc.getElementById("dragsource"), + input, + dragData, + "copy", + content + ); + } finally { + content.windowUtils.dragSession?.endDragSession(true); + } + + const stolen = content.wrappedJSObject.stealResult; + return { + fileCountAfterDrag: input.files.length, + stolen: stolen + ? { + types: Array.from(stolen.types), + itemCount: stolen.itemCount, + fileCountDuringDragEnter: stolen.fileCountDuringDragEnter, + anyItemReadableAsFile: stolen.anyItemReadableAsFile, + dropEventCancelled: stolen.dropEventCancelled, + fileCountAfterUntrustedDrop: stolen.fileCountAfterUntrustedDrop, + } + : null, + }; + }); +} + +add_task(async function test_stolen_datatransfer_in_untrusted_drop() { + const file = await createDraggedFile(); + + await BrowserTestUtils.withNewTab(PAGE, async browser => { + const result = await dragFileOverInput(browser, file); + + ok(result.stolen, "The page saw a dragenter event"); + if (!result.stolen) { + return; + } + + ok( + result.stolen.types.includes("Files"), + "The page can see that the drag carries a file" + ); + is(result.stolen.itemCount, 1, "The page can see one item"); + is( + result.stolen.fileCountDuringDragEnter, + 0, + "DataTransfer.files is empty during dragenter" + ); + ok( + !result.stolen.anyItemReadableAsFile, + "getAsFile() returns null during dragenter" + ); + + ok( + !result.stolen.dropEventCancelled, + "The untrusted drop event was not handled by the file control" + ); + is( + result.stolen.fileCountAfterUntrustedDrop, + 0, + "The untrusted drop did not set input.files" + ); + is(result.fileCountAfterDrag, 0, "input.files is still empty"); + }); +}); + +add_task(async function test_untrusted_events_with_page_made_datatransfer() { + await BrowserTestUtils.withNewTab(PAGE, async browser => { + const [dragOverAllowed, fileCount] = await SpecialPowers.spawn( + browser, + [], + () => [ + content.wrappedJSObject.spoofUntrustedDragOver(), + content.wrappedJSObject.spoofUntrustedDrop(), + ] + ); + + ok( + dragOverAllowed, + "The file control did not preventDefault() an untrusted dragover" + ); + is(fileCount, 0, "An untrusted drop did not set input.files"); + }); +}); + +// Make sure the above isn't passing because dropping files stopped working. +add_task(async function test_trusted_drop_still_works() { + const file = await createDraggedFile(); + + await BrowserTestUtils.withNewTab(PAGE, async browser => { + const result = await SpecialPowers.spawn( + browser, + [file], + async draggedFile => { + const doc = content.document; + const input = doc.getElementById("fileinput"); + + const changed = new Promise(resolve => + input.addEventListener("change", resolve, { once: true }) + ); + + EventUtils.synthesizeDrop( + doc.getElementById("dragsource"), + input, + [[{ type: "application/x-moz-file", data: draggedFile }]], + "copy", + content + ); + + // Only wait for the change event if the drop actually did something, + // otherwise a regression here would hang until the test times out + // instead of failing with a useful message. + const fileCount = input.files.length; + if (fileCount) { + await changed; + } + + return { + fileCount, + text: fileCount ? await input.files[0].text() : null, + }; + } + ); + + is(result.fileCount, 1, "A trusted drop set input.files"); + is(result.text, FILE_CONTENTS, "The dropped file is readable"); + }); +}); diff -Nru firefox-esr-140.13.0esr/dom/html/test/file_input_file_untrusted_drop.html firefox-esr-140.15.0esr/dom/html/test/file_input_file_untrusted_drop.html --- firefox-esr-140.13.0esr/dom/html/test/file_input_file_untrusted_drop.html 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/html/test/file_input_file_untrusted_drop.html 2026-08-26 17:03:41.000000000 +0000 @@ -0,0 +1,77 @@ + + + + + Untrusted drop events on input type=file + + +
drag me
+ + + + diff -Nru firefox-esr-140.13.0esr/dom/indexedDB/ActorsParent.cpp firefox-esr-140.15.0esr/dom/indexedDB/ActorsParent.cpp --- firefox-esr-140.13.0esr/dom/indexedDB/ActorsParent.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/indexedDB/ActorsParent.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -9088,17 +9088,22 @@ MOZ_ASSERT(principalInfo.type() == PrincipalInfo::TSystemPrincipalInfo || principalInfo.type() == PrincipalInfo::TContentPrincipalInfo); - if (NS_AUUF_OR_WARN_IF( - principalInfo.type() == PrincipalInfo::TSystemPrincipalInfo && - metadata.persistenceType() != PERSISTENCE_TYPE_PERSISTENT)) { + if (!BackgroundParent::ValidatePrincipalInfo(Manager(), principalInfo, + PrincipalValidationOptions())) { + IPC_FAIL(this, "Invalid principal!"); return nullptr; } - if (NS_AUUF_OR_WARN_IF( - principalInfo.type() == PrincipalInfo::TContentPrincipalInfo && - QuotaManager::IsOriginInternal( - principalInfo.get_ContentPrincipalInfo().originNoSuffix()) && - metadata.persistenceType() != PERSISTENCE_TYPE_PERSISTENT)) { + /* GetPersistenceType returns PERSISTENT for system principals and internal + content principals, PRIVATE for private-browsing content principals, and + DEFAULT for everything else. The sent value is technically redundant and + always deducible from the principal but we validate it here so that an + incorrect metadata value cannot reach other parts of the code. + TODO: Stop sending persistenceType from the content process and just derive it + on the parent side. */ + if (metadata.persistenceType() != + IDBFactory::GetPersistenceType(principalInfo)) { + IPC_FAIL(this, "Persistence type does not match principal!"); return nullptr; } @@ -9170,6 +9175,10 @@ MOZ_ASSERT(aPrincipalInfo.type() == PrincipalInfo::TSystemPrincipalInfo || aPrincipalInfo.type() == PrincipalInfo::TContentPrincipalInfo); + QM_TRY(MOZ_TO_RESULT(BackgroundParent::ValidatePrincipalInfo( + Manager(), aPrincipalInfo, PrincipalValidationOptions())), + QM_IPC_FAIL(this)); + PersistenceType persistenceType = IDBFactory::GetPersistenceType(aPrincipalInfo); diff -Nru firefox-esr-140.13.0esr/dom/indexedDB/IDBFactory.cpp firefox-esr-140.15.0esr/dom/indexedDB/IDBFactory.cpp --- firefox-esr-140.13.0esr/dom/indexedDB/IDBFactory.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/indexedDB/IDBFactory.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -7,7 +7,9 @@ #include "IDBFactory.h" #include "BackgroundChildImpl.h" +#include "ErrorList.h" #include "IDBRequest.h" +#include "IndexedDBCommon.h" #include "IndexedDatabaseManager.h" #include "mozilla/BasePrincipal.h" #include "mozilla/ErrorResult.h" @@ -468,6 +470,13 @@ return promise.forget(); } + // If this request would fail in the parent process, fail early in content. + if (!BackgroundChild::ValidatePrincipalInfo( + *mPrincipalInfo, indexedDB::PrincipalValidationOptions())) { + promise->MaybeRejectWithSecurityError(kAccessError); + return promise.forget(); + } + PersistenceType persistenceType = GetPersistenceType(*mPrincipalInfo); QM_TRY(MOZ_TO_RESULT(EnsureBackgroundActor()), [&promise](const nsresult rv) { @@ -729,6 +738,13 @@ principalInfo = *mPrincipalInfo; } + // If this request would fail in the parent process, fail early in content. + if (!BackgroundChild::ValidatePrincipalInfo( + principalInfo, indexedDB::PrincipalValidationOptions())) { + aRv.ThrowSecurityError(kAccessError); + return nullptr; + } + uint64_t version = 0; if (!aDeleting && aVersion.WasPassed()) { if (aVersion.Value() < 1) { diff -Nru firefox-esr-140.13.0esr/dom/indexedDB/IndexedDBCommon.cpp firefox-esr-140.15.0esr/dom/indexedDB/IndexedDBCommon.cpp --- firefox-esr-140.13.0esr/dom/indexedDB/IndexedDBCommon.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/indexedDB/IndexedDBCommon.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -8,9 +8,19 @@ #include "js/StructuredClone.h" #include "mozilla/SnappyUncompressInputStream.h" +#include "mozilla/StaticPrefs_dom.h" namespace mozilla::dom::indexedDB { +EnumSet PrincipalValidationOptions() { + EnumSet options; + if (StaticPrefs::dom_indexedDB_testing_allowContentSystem() && + xpc::IsInAutomation()) { + options += ValidatePrincipalOptions::AllowSystem; + } + return options; +} + // aStructuredCloneData is a parameter rather than a return value because one // caller preallocates it on the heap not immediately before calling for some // reason. Maybe this could be changed. diff -Nru firefox-esr-140.13.0esr/dom/indexedDB/IndexedDBCommon.h firefox-esr-140.15.0esr/dom/indexedDB/IndexedDBCommon.h --- firefox-esr-140.13.0esr/dom/indexedDB/IndexedDBCommon.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/indexedDB/IndexedDBCommon.h 2026-08-26 17:03:42.000000000 +0000 @@ -7,6 +7,7 @@ #ifndef mozilla_dom_indexeddb_IndexedDBCommon_h #define mozilla_dom_indexeddb_IndexedDBCommon_h +#include "mozilla/dom/ProcessIsolation.h" #include "mozilla/dom/quota/QuotaCommon.h" class JSStructuredCloneData; @@ -16,6 +17,8 @@ static constexpr uint32_t kFileCopyBufferSize = 32768; +EnumSet PrincipalValidationOptions(); + nsresult SnappyUncompressStructuredCloneData( nsIInputStream& aInputStream, JSStructuredCloneData& aStructuredCloneData); diff -Nru firefox-esr-140.13.0esr/dom/indexedDB/test/test_message_manager_ipc.html firefox-esr-140.15.0esr/dom/indexedDB/test/test_message_manager_ipc.html --- firefox-esr-140.13.0esr/dom/indexedDB/test/test_message_manager_ipc.html 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/indexedDB/test/test_message_manager_ipc.html 2026-08-26 17:03:41.000000000 +0000 @@ -312,6 +312,10 @@ } add_task(async function() { + await SpecialPowers.pushPrefEnv({ + set: [["dom.indexedDB.testing.allowContentSystem", true]], + }); + let chromeScript = SpecialPowers.loadChromeScript(chromeScriptFunc); await chromeScript.promiseOneMessage("done"); await chromeScript.destroy(); diff -Nru firefox-esr-140.13.0esr/dom/indexedDB/test/unit/xpcshell-head-child-process.js firefox-esr-140.15.0esr/dom/indexedDB/test/unit/xpcshell-head-child-process.js --- firefox-esr-140.13.0esr/dom/indexedDB/test/unit/xpcshell-head-child-process.js 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/indexedDB/test/unit/xpcshell-head-child-process.js 2026-08-26 17:03:42.000000000 +0000 @@ -6,6 +6,8 @@ function run_test() { const INDEXEDDB_HEAD_FILE = "xpcshell-head-parent-process.js"; const INDEXEDDB_PREF_EXPERIMENTAL = "dom.indexedDB.experimental"; + const INDEXEDDB_PREF_TESTING_ALLOW_CONTENT_SYSTEM = + "dom.indexedDB.testing.allowContentSystem"; // IndexedDB needs a profile. do_get_profile(); @@ -18,6 +20,7 @@ _HEAD_FILES.push(do_get_file(INDEXEDDB_HEAD_FILE).path.replace(/\\/g, "/")); Services.prefs.setBoolPref(INDEXEDDB_PREF_EXPERIMENTAL, true); + Services.prefs.setBoolPref(INDEXEDDB_PREF_TESTING_ALLOW_CONTENT_SYSTEM, true); run_test_in_child(thisTest); } diff -Nru firefox-esr-140.13.0esr/dom/indexedDB/test/unit/xpcshell-parent-process.toml firefox-esr-140.15.0esr/dom/indexedDB/test/unit/xpcshell-parent-process.toml --- firefox-esr-140.13.0esr/dom/indexedDB/test/unit/xpcshell-parent-process.toml 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/indexedDB/test/unit/xpcshell-parent-process.toml 2026-08-26 17:03:41.000000000 +0000 @@ -64,6 +64,7 @@ ["test_file_copy_failure.js"] ["test_globalObjects_ipc.js"] +prefs = ["dom.indexedDB.testing.allowContentSystem=true"] ["test_idbSubdirUpgrade.js"] diff -Nru firefox-esr-140.13.0esr/dom/ipc/BrowserParent.cpp firefox-esr-140.15.0esr/dom/ipc/BrowserParent.cpp --- firefox-esr-140.13.0esr/dom/ipc/BrowserParent.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/ipc/BrowserParent.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -64,6 +64,7 @@ #include "mozilla/TouchEvents.h" #include "mozilla/UniquePtr.h" #include "mozilla/Unused.h" +#include "nsBaseDragService.h" #include "nsCOMPtr.h" #include "nsContentPermissionHelper.h" #include "nsContentUtils.h" @@ -120,6 +121,7 @@ #include "nsPIWindowRoot.h" #include "nsReadableUtils.h" #include "nsIAuthPrompt2.h" +#include "nsIScriptSecurityManager.h" #include "gfxDrawable.h" #include "ImageOps.h" #include "UnitTransforms.h" @@ -930,17 +932,18 @@ // not been modified then it's safe to load those links using the // SystemPrincipal. If they have been modified by web content, then // we use a NullPrincipal which still allows to load web links. - bool loadUsingSystemPrincipal = true; - if (aLinks.Length() != mVerifyDropLinks.Length()) { - loadUsingSystemPrincipal = false; - } - for (uint32_t i = 0; i < aLinks.Length(); i++) { - if (loadUsingSystemPrincipal) { + const bool loadUsingSystemPrincipal = [&]() { + if (aLinks.Length() != mVerifyDropLinks.Length()) { + return false; + } + for (uint32_t i = 0; i < aLinks.Length(); i++) { if (!aLinks[i].Equals(mVerifyDropLinks[i])) { - loadUsingSystemPrincipal = false; + return false; } } - } + return true; + }(); + mVerifyDropLinks.Clear(); nsCOMPtr triggeringPrincipal; if (loadUsingSystemPrincipal) { @@ -1615,6 +1618,27 @@ return false; } + nsCOMPtr triggeringPrincipal; + dragSession->GetTriggeringPrincipal(getter_AddRefs(triggeringPrincipal)); + + nsIScriptSecurityManager* secMan = nullptr; + if (triggeringPrincipal) { + if (!(secMan = nsContentUtils::GetSecurityManager())) { + NS_WARNING("No ScriptSecurityManager for links verification"); + return false; + } + } else { + RefPtr sourceWC = dragSession->GetSourceWindowContext(); + RefPtr sourceTopWC = + dragSession->GetSourceTopWindowContext(); + if (sourceWC || sourceTopWC) { + NS_WARNING( + "How can we have a source window context while no triggering " + "principal?"); + return false; + } + } + // No more than one drop event can happen simultaneously; reset the link // verification array and store all links that are being dragged. mVerifyDropLinks.Clear(); @@ -1633,6 +1657,22 @@ NS_WARNING("Failed to query url for verification"); break; } + + if (triggeringPrincipal) { + MOZ_ASSERT(secMan); + if (NS_FAILED(secMan->CheckLoadURIStrWithPrincipal( + triggeringPrincipal, NS_ConvertUTF16toUTF8(tmp), + nsIScriptSecurityManager::STANDARD | + nsIScriptSecurityManager::DISALLOW_INHERIT_PRINCIPAL))) { + MOZ_DRAGSERVICE_LOG("[%p] %s | dragSession: %p | Bad URI %s from %p", + this, __FUNCTION__, dragSession.get(), + NS_ConvertUTF16toUTF8(tmp).get(), + triggeringPrincipal.get()); + mVerifyDropLinks.Clear(); + return true; + } + } + mVerifyDropLinks.AppendElement(tmp); rv = item->GetName(tmp); @@ -3904,6 +3944,11 @@ return IPC_OK(); } + if (!Manager()->ValidatePrincipal(aPrincipal, {})) { + return ContentParent::PrincipalValidationIpcFail(aPrincipal, this, + __func__); + } + nsCOMPtr cookieJarSettings; net::CookieJarSettings::Deserialize(aCookieJarSettingsArgs, getter_AddRefs(cookieJarSettings)); diff -Nru firefox-esr-140.13.0esr/dom/ipc/ContentChild.cpp firefox-esr-140.15.0esr/dom/ipc/ContentChild.cpp --- firefox-esr-140.13.0esr/dom/ipc/ContentChild.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/ipc/ContentChild.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -23,6 +23,7 @@ #include "imgLoader.h" #include "ScrollingMetrics.h" #include "mozilla/BasePrincipal.h" +#include "mozilla/ClearOnShutdown.h" #include "mozilla/ClipboardContentAnalysisChild.h" #include "mozilla/ClipboardReadRequestChild.h" #include "mozilla/Components.h" @@ -43,6 +44,7 @@ #include "mozilla/dom/SharedScriptCache.h" #include "mozilla/SimpleEnumerator.h" #include "mozilla/SpinEventLoopUntil.h" +#include "mozilla/StaticMutex.h" #include "mozilla/StaticPrefs_browser.h" #include "mozilla/StaticPrefs_dom.h" #include "mozilla/StaticPrefs_fission.h" @@ -2501,6 +2503,22 @@ return IPC_OK(); } +static StaticMutex sCurrentRemoteTypeMutex; +static StaticAutoPtr sCurrentRemoteType + MOZ_GUARDED_BY(sCurrentRemoteTypeMutex); + +nsCString CurrentRemoteType() { + if (XRE_IsContentProcess()) { + StaticMutexAutoLock lock(sCurrentRemoteTypeMutex); + if (sCurrentRemoteType) { + return *sCurrentRemoteType; + } + return PREALLOC_REMOTE_TYPE; + } + + return NOT_REMOTE_TYPE; +} + mozilla::ipc::IPCResult ContentChild::RecvRemoteType( const nsCString& aRemoteType, const nsCString& aProfile) { if (aRemoteType == mRemoteType) { @@ -2536,6 +2554,18 @@ // Must do before SetProcessName mRemoteType.Assign(aRemoteType); + { + StaticMutexAutoLock lock(sCurrentRemoteTypeMutex); + if (!sCurrentRemoteType) { + sCurrentRemoteType = new nsCString(); + RunOnShutdown([] { + StaticMutexAutoLock lock(sCurrentRemoteTypeMutex); + sCurrentRemoteType = nullptr; + }); + } + sCurrentRemoteType->Assign(mRemoteType); + } + // Update the process name so about:memory's process names are more obvious. if (aRemoteType == FILE_REMOTE_TYPE) { SetProcessName("file:// Content"_ns, nullptr, &aProfile); diff -Nru firefox-esr-140.13.0esr/dom/ipc/ContentChild.h firefox-esr-140.15.0esr/dom/ipc/ContentChild.h --- firefox-esr-140.13.0esr/dom/ipc/ContentChild.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/ipc/ContentChild.h 2026-08-26 17:03:41.000000000 +0000 @@ -904,6 +904,9 @@ return static_cast(aContentChild); } +// Threadsafe getter for the current process's RemoteType. +nsCString CurrentRemoteType(); + } // namespace dom } // namespace mozilla diff -Nru firefox-esr-140.13.0esr/dom/ipc/ContentParent.cpp firefox-esr-140.15.0esr/dom/ipc/ContentParent.cpp --- firefox-esr-140.13.0esr/dom/ipc/ContentParent.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/ipc/ContentParent.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -3198,9 +3198,7 @@ // aRequestingPrincipal is allowed to be nullptr here. if (!ValidatePrincipal(aTransferable.dataPrincipal(), - {ValidatePrincipalOptions::AllowNullPtr, - ValidatePrincipalOptions::AllowExpanded, - ValidatePrincipalOptions::AllowSystem})) { + {ValidatePrincipalOptions::AllowNullPtr})) { return PrincipalValidationIpcFail(aTransferable.dataPrincipal(), this, __func__); } @@ -4669,7 +4667,7 @@ } mozilla::ipc::IPCResult ContentParent::RecvLoadURIExternal( - nsIURI* uri, nsIPrincipal* aTriggeringPrincipal, + NotNull uri, NotNull aTriggeringPrincipal, nsIPrincipal* aRedirectPrincipal, const MaybeDiscarded& aContext, bool aWasExternallyTriggered, bool aHasValidUserGestureActivation, @@ -4678,16 +4676,23 @@ return IPC_OK(); } + if (!ValidatePrincipal(aTriggeringPrincipal)) { + LogAndAssertFailedPrincipalValidationInfo(aTriggeringPrincipal, __func__); + return IPC_FAIL(this, "aTriggeringPrincipal invalid"); + } + + if (!ValidatePrincipal(aRedirectPrincipal, + {ValidatePrincipalOptions::AllowNullPtr})) { + LogAndAssertFailedPrincipalValidationInfo(aRedirectPrincipal, __func__); + return IPC_FAIL(this, "aRedirectPrincipal invalid"); + } + nsCOMPtr extProtService( do_GetService(NS_EXTERNALPROTOCOLSERVICE_CONTRACTID)); if (!extProtService) { return IPC_OK(); } - if (!uri) { - return IPC_FAIL(this, "uri must not be null."); - } - BrowsingContext* bc = aContext.get(); extProtService->LoadURI(uri, aTriggeringPrincipal, aRedirectPrincipal, bc, aWasExternallyTriggered, @@ -7524,7 +7529,7 @@ } BrowsingContext* bc = aContext.GetMaybeDiscarded(); - if (!bc) { + if (!bc || !bc->Canonical()->IsOwnedByProcess(ChildID())) { return IPC_OK(); } SessionHistoryEntry* entry = bc->Canonical()->GetActiveSessionHistoryEntry(); @@ -7643,6 +7648,10 @@ return IPC_OK(); } + if (!aContext.get_canonical()->IsOwnedByProcess(ChildID())) { + return IPC_OK(); + } + Maybe info; aContext.get_canonical()->GetLoadingSessionHistoryInfoFromParent(info); aResolver(info); diff -Nru firefox-esr-140.13.0esr/dom/ipc/ContentParent.h firefox-esr-140.15.0esr/dom/ipc/ContentParent.h --- firefox-esr-140.13.0esr/dom/ipc/ContentParent.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/ipc/ContentParent.h 2026-08-26 17:03:41.000000000 +0000 @@ -1006,7 +1006,7 @@ mozilla::ipc::IPCResult RecvSetURITitle(nsIURI* uri, const nsAString& title); mozilla::ipc::IPCResult RecvLoadURIExternal( - nsIURI* uri, nsIPrincipal* triggeringPrincipal, + NotNull uri, NotNull triggeringPrincipal, nsIPrincipal* redirectPrincipal, const MaybeDiscarded& aContext, bool aWasExternallyTriggered, bool aHasValidUserGestureActivation, diff -Nru firefox-esr-140.13.0esr/dom/ipc/PContent.ipdl firefox-esr-140.15.0esr/dom/ipc/PContent.ipdl --- firefox-esr-140.13.0esr/dom/ipc/PContent.ipdl 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/ipc/PContent.ipdl 2026-08-26 17:03:41.000000000 +0000 @@ -1158,8 +1158,8 @@ async StartVisitedQueries(nullable nsIURI[] uri); async SetURITitle(nullable nsIURI uri, nsString title); - async LoadURIExternal(nullable nsIURI uri, - nullable nsIPrincipal triggeringPrincipal, + async LoadURIExternal(nsIURI uri, + nsIPrincipal triggeringPrincipal, nullable nsIPrincipal redirectPrincipal, MaybeDiscardedBrowsingContext browsingContext, bool wasExternallyTriggered, diff -Nru firefox-esr-140.13.0esr/dom/ipc/ProcessIsolation.cpp firefox-esr-140.15.0esr/dom/ipc/ProcessIsolation.cpp --- firefox-esr-140.13.0esr/dom/ipc/ProcessIsolation.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/ipc/ProcessIsolation.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -210,9 +210,14 @@ * When handling a navigation, this method will be called twice: first with the * channel's creation URI, and then it will be called with a result principal's * URI. + * + * `aIsWorker` selects process isolation for a remote worker rather than for a + * document; see the file:// URI allowlist handling below for why the two + * differ. */ static IsolationBehavior IsolationBehaviorForURI(nsIURI* aURI, bool aIsSubframe, - bool aForChannelCreationURI) { + bool aForChannelCreationURI, + bool aIsWorker) { MOZ_ASSERT(NS_IsMainThread()); nsAutoCString scheme; @@ -308,7 +313,8 @@ nsCOMPtr inner; if (nsCOMPtr nested = do_QueryInterface(aURI); nested && NS_SUCCEEDED(nested->GetInnerURI(getter_AddRefs(inner)))) { - return IsolationBehaviorForURI(inner, aIsSubframe, aForChannelCreationURI); + return IsolationBehaviorForURI(inner, aIsSubframe, aForChannelCreationURI, + aIsWorker); } // If we're doing the initial check based on the channel creation URI, stop @@ -360,12 +366,22 @@ } } - nsCOMPtr secMan = - nsContentUtils::GetSecurityManager(); - bool inFileURIAllowList = false; - if (NS_SUCCEEDED(secMan->InFileURIAllowlist(aURI, &inFileURIAllowList)) && - inFileURIAllowList) { - return IsolationBehavior::File; + // If the domain is allowlisted to allow it to use file:// URIs, then we have + // to run it in a file content process, in case it uses file:// sub-resources. + // + // This only applies to documents. A worker has no sub-resources of its own to + // render, and forcing it into the file process would additionally mean + // rejecting it outright whenever the requesting process isn't the file + // process (see ValidateBehaviorForWorker). Workers were likewise excluded + // from this rule back when it lived in E10SUtils; see bug 2064648. + if (!aIsWorker) { + nsCOMPtr secMan = + nsContentUtils::GetSecurityManager(); + bool inFileURIAllowList = false; + if (NS_SUCCEEDED(secMan->InFileURIAllowlist(aURI, &inFileURIAllowList)) && + inFileURIAllowList) { + return IsolationBehavior::File; + } } return IsolationBehavior::WebContent; @@ -626,7 +642,8 @@ // First, check for any special cases which should be handled using the // channel creation URI, and handle them. auto behavior = IsolationBehaviorForURI(aChannelCreationURI, aParentWindow, - /* aForChannelCreationURI */ true); + /* aForChannelCreationURI */ true, + /* aIsWorker */ false); MOZ_LOG(gProcessIsolationLog, LogLevel::Verbose, ("Channel Creation Isolation Behavior: %s", IsolationBehaviorName(behavior))); @@ -731,7 +748,8 @@ } } else if (nsCOMPtr principalURI = resultOrPrecursor->GetURI()) { behavior = IsolationBehaviorForURI(principalURI, aParentWindow, - /* aForChannelCreationURI */ false); + /* aForChannelCreationURI */ false, + /* aIsWorker */ false); } } @@ -926,6 +944,48 @@ return options; } +static bool ValidateBehaviorForWorker(IsolationBehavior aBehavior, + const nsACString& aCurrentRemoteType) { + if (aCurrentRemoteType == NOT_REMOTE_TYPE) { + return true; + } + + switch (aBehavior) { + case IsolationBehavior::Parent: + // Can't load in a parent process from any other process. + return false; + + case IsolationBehavior::AboutReader: + case IsolationBehavior::Inherit: + // Not relevant for Workers. + return false; + + case IsolationBehavior::WebContent: + case IsolationBehavior::ForceWebRemoteType: + case IsolationBehavior::Anywhere: + return true; + + case IsolationBehavior::Extension: + // Extension iframes could be loaded in any process. + return true; + + case IsolationBehavior::PrivilegedAbout: + return aCurrentRemoteType == PRIVILEGEDABOUT_REMOTE_TYPE; + + case IsolationBehavior::File: + return !StaticPrefs::browser_tabs_remote_separateFileUriProcess() || + aCurrentRemoteType == FILE_REMOTE_TYPE; + + case IsolationBehavior::PrivilegedMozilla: + return aCurrentRemoteType == PRIVILEGEDMOZILLA_REMOTE_TYPE; + + case IsolationBehavior::Error: + break; + } + + return false; +} + Result IsolationOptionsForWorker( nsIPrincipal* aPrincipal, WorkerKind aWorkerKind, const nsACString& aCurrentRemoteType, bool aUseRemoteSubframes) { @@ -989,7 +1049,8 @@ if (resultOrPrecursor->GetIsContentPrincipal()) { nsCOMPtr uri = resultOrPrecursor->GetURI(); behavior = IsolationBehaviorForURI(uri, /* aIsSubframe */ false, - /* aForChannelCreationURI */ false); + /* aForChannelCreationURI */ false, + /* aIsWorker */ true); } else if (resultOrPrecursor->IsSystemPrincipal()) { MOZ_ASSERT(aWorkerKind == WorkerKindShared); @@ -1036,6 +1097,15 @@ behavior = IsolationBehavior::ForceWebRemoteType; } + if (!ValidateBehaviorForWorker(behavior, aCurrentRemoteType)) { + MOZ_LOG( + gProcessIsolationLog, LogLevel::Warning, + ("Rejecting invalid worker isolation behavior %s for remote type %s", + IsolationBehaviorName(behavior), + PromiseFlatCString(aCurrentRemoteType).get())); + return Err(NS_ERROR_FAILURE); + } + if (behavior != IsolationBehavior::WebContent) { MOZ_TRY_VAR( options.mRemoteType, @@ -1252,7 +1322,8 @@ // NOTE: The logic for about URIs is somewhat complex, so we lean on // IsolationBehaviorForURI to ensure it matches. switch (IsolationBehaviorForURI(aboutURI, /* aIsSubframe */ false, - /* aForChannelCreationURI */ true)) { + /* aForChannelCreationURI */ true, + /* aIsWorker */ false)) { case IsolationBehavior::Parent: return false; case IsolationBehavior::Anywhere: @@ -1299,13 +1370,24 @@ nsDependentCSubstring typePrefix(aRemoteType, 0, equalIdx); nsDependentCSubstring typeOrigin(aRemoteType, equalIdx + 1); - // Only validate webIsolated and webServiceWorker remote types for now. This - // should be expanded in the future. + // Only validate webIsolated, webCOOP+COEP and webServiceWorker remote types + // for now. This should be expanded in the future. if (typePrefix != FISSION_WEB_REMOTE_TYPE && + typePrefix != WITH_COOP_COEP_REMOTE_TYPE && typePrefix != SERVICEWORKER_REMOTE_TYPE) { return true; } + // COOP+COEP processes might have cross-site iframes without remote subframes. + // + // HACK: Unfortunately, we can't easily check useRemoteSubframes here, but we + // shouldn't be loading any webCOOP+COEP windows without useRemoteSubframes if + // Fission is enabled. + if (typePrefix == WITH_COOP_COEP_REMOTE_TYPE && + !mozilla::FissionAutostart()) { + return true; + } + // Trim any OriginAttributes from the origin, as those will not be validated. int32_t suffixIdx = typeOrigin.RFindChar('^'); nsDependentCSubstring typeOriginNoSuffix(typeOrigin, 0, suffixIdx); diff -Nru firefox-esr-140.13.0esr/dom/ipc/WindowGlobalParent.cpp firefox-esr-140.15.0esr/dom/ipc/WindowGlobalParent.cpp --- firefox-esr-140.13.0esr/dom/ipc/WindowGlobalParent.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/ipc/WindowGlobalParent.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -10,6 +10,7 @@ #include "mozilla/AntiTrackingUtils.h" #include "mozilla/AsyncEventDispatcher.h" +#include "mozilla/BasePrincipal.h" #include "mozilla/BounceTrackingStorageObserver.h" #include "mozilla/BounceTrackingProtection.h" #include "mozilla/ClearOnShutdown.h" @@ -80,6 +81,7 @@ #include "mozilla/dom/JSWindowActorBinding.h" #include "mozilla/dom/JSWindowActorParent.h" +#include "mozilla/net/CookieCommons.h" #include "mozilla/net/NeckoParent.h" #include "mozilla/net/PCookieServiceParent.h" #include "mozilla/net/CookieServiceParent.h" @@ -1781,6 +1783,27 @@ const nsCString& aBaseDomain, const OriginAttributes& aOriginAttributes, nsIURI* aHost, bool aFromHttp, bool aIsThirdParty, const nsTArray& aCookies) { + // Only content principals should be setting cookies via this path. + // Reject non-content principals (system, null, expanded) to prevent a + // compromised content process from bypassing the baseDomain check below. + nsIPrincipal* documentPrincipal = DocumentPrincipal(); + if (!documentPrincipal || !documentPrincipal->GetIsContentPrincipal()) { + return IPC_FAIL(this, + "SetCookies requires a content principal on the window"); + } + + // file:// principals have no meaningful baseDomain for cookie validation, + // skip the domain check. + if (!documentPrincipal->SchemeIs("file")) { + nsAutoCString principalBaseDomain; + if (NS_FAILED(net::CookieCommons::GetBaseDomain(documentPrincipal, + principalBaseDomain)) || + !principalBaseDomain.Equals(aBaseDomain)) { + return IPC_FAIL( + this, "SetCookies baseDomain does not match document principal"); + } + } + // Get CookieServiceParent via // ContentParent->NeckoParent->CookieServiceParent. ContentParent* contentParent = GetContentParent(); @@ -1794,6 +1817,21 @@ NS_ENSURE_TRUE(csParent, IPC_OK()); auto* cs = static_cast(csParent); + if (!aHost) { + return IPC_FAIL(this, "aHost must not be null"); + } + + // Authorize the write if the process has already loaded this cookie key, or + // could legitimately load this principal. The latter covers documents with no + // channel registration (e.g. file://), which never populate the key set. + nsCOMPtr principal = + BasePrincipal::CreateContentPrincipal(aHost, aOriginAttributes); + if (!cs->ContentProcessHasCookie(aBaseDomain, aOriginAttributes) && + !contentParent->ValidatePrincipal(principal)) { + return IPC_FAIL(this, + "Content process not authorized for this cookie domain"); + } + return cs->SetCookies(aBaseDomain, aOriginAttributes, aHost, aFromHttp, aIsThirdParty, aCookies, GetBrowsingContext()); } diff -Nru firefox-esr-140.13.0esr/dom/ipc/gtest/ProcessIsolationTest.cpp firefox-esr-140.15.0esr/dom/ipc/gtest/ProcessIsolationTest.cpp --- firefox-esr-140.13.0esr/dom/ipc/gtest/ProcessIsolationTest.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/ipc/gtest/ProcessIsolationTest.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -82,6 +82,17 @@ return SERVICEWORKER_REMOTE_TYPE + "="_ns + origin; } +// When file URI process separation is disabled (as is the default on +// Android), a file: shared worker is allowed to load in any remote type, +// rather than being rejected when it isn't already in a file: process. +static Result FileWorkerOutsideFileProcessExpected( + const nsCString& aFileRemoteType) { + if (StaticPrefs::browser_tabs_remote_separateFileUriProcess()) { + return Err(NS_ERROR_UNEXPECTED); + } + return RemoteTypes{aFileRemoteType, aFileRemoteType}; +} + TEST(ProcessIsolationTest, WorkerOptions) { // Forcibly enable the privileged mozilla content process for the duration of @@ -159,11 +170,16 @@ WEB_REMOTE_TYPE}}, {.mPrincipal = extensionPrincipal, .mWorkerKind = WorkerKindService, - .mExpected = RemoteTypes{extensionRemoteType, extensionRemoteType}}, + .mExpected = RemoteTypes{extensionRemoteType, extensionRemoteType}, + .mCurrentRemoteType = EXTENSION_REMOTE_TYPE}, + {.mPrincipal = privilegedMozillaPrincipal, + .mWorkerKind = WorkerKindService, + .mExpected = Err(NS_ERROR_UNEXPECTED)}, {.mPrincipal = privilegedMozillaPrincipal, .mWorkerKind = WorkerKindService, .mExpected = RemoteTypes{PRIVILEGEDMOZILLA_REMOTE_TYPE, - PRIVILEGEDMOZILLA_REMOTE_TYPE}}, + PRIVILEGEDMOZILLA_REMOTE_TYPE}, + .mCurrentRemoteType = PRIVILEGEDMOZILLA_REMOTE_TYPE}, // Shared Worker loaded from within a webCOOP+COEP remote type process, // should load elsewhere. @@ -197,8 +213,7 @@ .mWorkerKind = WorkerKindShared, .mExpected = Err(NS_ERROR_UNEXPECTED)}, - // Content principals should load in the appropriate remote types, - // ignoring the current remote type. + // Content principals should load in the appropriate remote types. {.mPrincipal = secureComPrincipal, .mWorkerKind = WorkerKindShared, .mExpected = RemoteTypes{WebIsolatedRemoteType(secureComPrincipal), @@ -213,14 +228,23 @@ WEB_REMOTE_TYPE}}, {.mPrincipal = filePrincipal, .mWorkerKind = WorkerKindShared, - .mExpected = RemoteTypes{fileRemoteType, fileRemoteType}}, + .mExpected = FileWorkerOutsideFileProcessExpected(fileRemoteType)}, + {.mPrincipal = filePrincipal, + .mWorkerKind = WorkerKindShared, + .mExpected = RemoteTypes{fileRemoteType, fileRemoteType}, + .mCurrentRemoteType = FILE_REMOTE_TYPE}, {.mPrincipal = extensionPrincipal, .mWorkerKind = WorkerKindShared, - .mExpected = RemoteTypes{extensionRemoteType, extensionRemoteType}}, + .mExpected = RemoteTypes{extensionRemoteType, extensionRemoteType}, + .mCurrentRemoteType = EXTENSION_REMOTE_TYPE}, + {.mPrincipal = privilegedMozillaPrincipal, + .mWorkerKind = WorkerKindShared, + .mExpected = Err(NS_ERROR_UNEXPECTED)}, {.mPrincipal = privilegedMozillaPrincipal, .mWorkerKind = WorkerKindShared, .mExpected = RemoteTypes{PRIVILEGEDMOZILLA_REMOTE_TYPE, - PRIVILEGEDMOZILLA_REMOTE_TYPE}}, + PRIVILEGEDMOZILLA_REMOTE_TYPE}, + .mCurrentRemoteType = PRIVILEGEDMOZILLA_REMOTE_TYPE}, {.mPrincipal = nullSecureComPrecursorPrincipal, .mWorkerKind = WorkerKindShared, .mExpected = RemoteTypes{WebIsolatedRemoteType(secureComPrincipal), @@ -228,6 +252,77 @@ }; for (auto& expectation : expectations) { + expectation.Check(true); + expectation.Check(false); + } +} + +// The file:// URI allowlist is populated from the `capability.policy.*` prefs, +// which in practice are written by the LocalFileLinks enterprise policy so that +// an intranet origin may link to files on a network share. Historically that +// allowlist only made documents load in the file: content process; workers were +// explicitly excluded (see the `!aIsWorker` guard that used to live in +// E10SUtils). Since bug 1850589 dropped that exclusion, a service worker on an +// allowlisted origin resolves to IsolationBehavior::File and is then rejected +// outright by ValidateBehaviorForWorker, because ServiceWorkerPrivate passes +// the shared "web" remote type rather than the file remote type. +TEST(ProcessIsolationTest, FileURIAllowlistedWorkerOptions) +{ + MOZ_ALWAYS_SUCCEEDS(Preferences::SetCString("capability.policy.policynames", + "localfilelinks_policy")); + MOZ_ALWAYS_SUCCEEDS(Preferences::SetCString( + "capability.policy.localfilelinks_policy.checkloaduri.enabled", + "allAccess")); + MOZ_ALWAYS_SUCCEEDS(Preferences::SetCString( + "capability.policy.localfilelinks_policy.sites", "https://example.com")); + auto cleanup = MakeScopeExit([&] { + MOZ_ALWAYS_SUCCEEDS( + Preferences::ClearUser("capability.policy.policynames")); + MOZ_ALWAYS_SUCCEEDS(Preferences::ClearUser( + "capability.policy.localfilelinks_policy.checkloaduri.enabled")); + MOZ_ALWAYS_SUCCEEDS(Preferences::ClearUser( + "capability.policy.localfilelinks_policy.sites")); + }); + + nsCOMPtr allowlistedPrincipal = + MakeTestPrincipal("https://example.com"); + nsCOMPtr filePrincipal = + MakeTestPrincipal("file:///path/to/dir"); + + nsCString fileRemoteType = + StaticPrefs::browser_tabs_remote_separateFileUriProcess() + ? FILE_REMOTE_TYPE + : WEB_REMOTE_TYPE; + + WorkerExpectation expectations[] = { + // Being in the file:// URI allowlist must not change worker process + // selection: these are the same expectations as for a principal which + // isn't allowlisted at all. The current remote type mirrors what + // ServiceWorkerPrivate::Initialize() passes for a service worker. + {.mPrincipal = allowlistedPrincipal, + .mWorkerKind = WorkerKindService, + .mExpected = + RemoteTypes{ServiceWorkerIsolatedRemoteType(allowlistedPrincipal), + WEB_REMOTE_TYPE}, + .mCurrentRemoteType = WEB_REMOTE_TYPE}, + {.mPrincipal = allowlistedPrincipal, + .mWorkerKind = WorkerKindShared, + .mExpected = RemoteTypes{WebIsolatedRemoteType(allowlistedPrincipal), + WEB_REMOTE_TYPE}, + .mCurrentRemoteType = WEB_REMOTE_TYPE}, + + // An actual file: principal is still confined to the file process, + // regardless of the allowlist. + {.mPrincipal = filePrincipal, + .mWorkerKind = WorkerKindShared, + .mExpected = FileWorkerOutsideFileProcessExpected(fileRemoteType)}, + {.mPrincipal = filePrincipal, + .mWorkerKind = WorkerKindShared, + .mExpected = RemoteTypes{fileRemoteType, fileRemoteType}, + .mCurrentRemoteType = FILE_REMOTE_TYPE}, + }; + + for (auto& expectation : expectations) { expectation.Check(true); expectation.Check(false); } diff -Nru firefox-esr-140.13.0esr/dom/localstorage/ActorsParent.cpp firefox-esr-140.15.0esr/dom/localstorage/ActorsParent.cpp --- firefox-esr-140.13.0esr/dom/localstorage/ActorsParent.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/localstorage/ActorsParent.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -68,6 +68,7 @@ #include "mozilla/dom/PBackgroundLSSharedTypes.h" #include "mozilla/dom/PBackgroundLSSimpleRequestParent.h" #include "mozilla/dom/PBackgroundLSSnapshotParent.h" +#include "mozilla/dom/ProcessIsolation.h" #include "mozilla/dom/SnappyUtils.h" #include "mozilla/dom/StorageDBUpdater.h" #include "mozilla/dom/StorageUtils.h" @@ -1676,7 +1677,7 @@ class PreparedDatastore { RefPtr mDatastore; nsCOMPtr mTimer; - const Maybe mContentParentId; + const RefPtr mContentParentHandle; // Strings share buffers if possible, so it's not a problem to duplicate the // origin here. const nsCString mOrigin; @@ -1686,12 +1687,12 @@ public: PreparedDatastore(Datastore* aDatastore, - const Maybe& aContentParentId, + ThreadsafeContentParentHandle* aContentParentHandle, const nsACString& aOrigin, uint64_t aDatastoreId, bool aForPreload) : mDatastore(aDatastore), mTimer(NS_NewTimer()), - mContentParentId(aContentParentId), + mContentParentHandle(aContentParentHandle), mOrigin(aOrigin), mDatastoreId(aDatastoreId), mForPreload(aForPreload), @@ -1730,8 +1731,8 @@ return *mDatastore; } - const Maybe& GetContentParentId() const { - return mContentParentId; + ThreadsafeContentParentHandle* GetContentParentHandle() const { + return mContentParentHandle; } const nsCString& Origin() const { return mOrigin; } @@ -1772,7 +1773,7 @@ RefPtr mDatastore; Snapshot* mSnapshot; const PrincipalInfo mPrincipalInfo; - const Maybe mContentParentId; + const RefPtr mContentParentHandle; // Strings share buffers if possible, so it's not a problem to duplicate the // origin here. nsCString mOrigin; @@ -1788,7 +1789,7 @@ public: // Created in AllocPBackgroundLSDatabaseParent. Database(const PrincipalInfo& aPrincipalInfo, - const Maybe& aContentParentId, + ThreadsafeContentParentHandle* aContentParentHandle, const nsACString& aOrigin, uint32_t aPrivateBrowsingId); void AssertIsOnOwningThread() const { @@ -1809,8 +1810,8 @@ const PrincipalInfo& GetPrincipalInfo() const { return mPrincipalInfo; } - const Maybe& ContentParentIdRef() const { - return mContentParentId; + ThreadsafeContentParentHandle* ContentParentHandle() const { + return mContentParentHandle; } uint32_t PrivateBrowsingId() const { return mPrivateBrowsingId; } @@ -2088,17 +2089,17 @@ }; class Observer final : public PBackgroundLSObserverParent { - const Maybe mContentParentId; + const RefPtr mContentParentHandle; nsCString mOrigin; bool mActorDestroyed; public: // Created in AllocPBackgroundLSObserverParent. - Observer(const Maybe& aContentParentId, + Observer(ThreadsafeContentParentHandle* aContentParentHandle, const nsACString& aOrigin); - const Maybe& ContentParentIdRef() const { - return mContentParentId; + ThreadsafeContentParentHandle* ContentParentHandle() const { + return mContentParentHandle; } const nsCString& Origin() const { return mOrigin; } @@ -2151,13 +2152,13 @@ }; const LSRequestParams mParams; - Maybe mContentParentId; + RefPtr mContentParentHandle; State mState; bool mWaitingForFinish; public: LSRequestBase(const LSRequestParams& aParams, - const Maybe& aContentParentId); + ThreadsafeContentParentHandle* aContentParentHandle); void Dispatch(); @@ -2170,6 +2171,10 @@ protected: ~LSRequestBase() override; + ThreadsafeContentParentHandle* ContentParentHandle() const { + return mContentParentHandle; + } + virtual nsresult Start() = 0; virtual nsresult NestedRun(); @@ -2319,7 +2324,7 @@ public: PrepareDatastoreOp(const LSRequestParams& aParams, - const Maybe& aContentParentId); + ThreadsafeContentParentHandle* aContentParentHandle); Maybe MaybeDirectoryLockRef() const { AssertIsOnBackgroundThread(); @@ -2460,7 +2465,7 @@ public: PrepareObserverOp(const LSRequestParams& aParams, - const Maybe& aContentParentId); + ThreadsafeContentParentHandle* aContentParentHandle); private: nsresult Start() override; @@ -2488,12 +2493,12 @@ }; const LSSimpleRequestParams mParams; - Maybe mContentParentId; + RefPtr mContentParentHandle; State mState; public: LSSimpleRequestBase(const LSSimpleRequestParams& aParams, - const Maybe& aContentParentId); + ThreadsafeContentParentHandle* aContentParentHandle); void Dispatch(); @@ -2524,7 +2529,7 @@ public: PreloadedOp(const LSSimpleRequestParams& aParams, - const Maybe& aContentParentId); + ThreadsafeContentParentHandle* aContentParentHandle); private: nsresult Start() override; @@ -2537,7 +2542,7 @@ public: GetStateOp(const LSSimpleRequestParams& aParams, - const Maybe& aContentParentId); + ThreadsafeContentParentHandle* aContentParentHandle); private: nsresult Start() override; @@ -3118,7 +3123,8 @@ } } -bool VerifyPrincipalInfo(const PrincipalInfo& aPrincipalInfo, +bool VerifyPrincipalInfo(ThreadsafeContentParentHandle* aContentParentHandle, + const PrincipalInfo& aPrincipalInfo, const PrincipalInfo& aStoragePrincipalInfo, bool aCheckClientPrincipal) { AssertIsOnBackgroundThread(); @@ -3127,6 +3133,17 @@ return false; } + auto prinResult = PrincipalInfoToPrincipal(aPrincipalInfo); + if (NS_WARN_IF(prinResult.isErr())) { + return false; + } + + if (aContentParentHandle && + NS_WARN_IF(!ValidatePrincipalCouldPotentiallyBeLoadedBy( + prinResult.inspect(), aContentParentHandle->GetRemoteType(), {}))) { + return false; + } + // Note that the client prinicpal could have a different spec than the node // principal but they should have the same origin. It's because the client // could be initialized when opening the initial about:blank document and pass @@ -3150,7 +3167,7 @@ return true; } -bool VerifyClientId(const Maybe& aContentParentId, +bool VerifyClientId(ThreadsafeContentParentHandle* aContentParentHandle, const Maybe& aPrincipalInfo, const Maybe& aClientId) { AssertIsOnBackgroundThread(); @@ -3165,8 +3182,9 @@ } RefPtr svc = ClientManagerService::GetInstance(); - if (svc && NS_WARN_IF(!svc->HasWindow( - aContentParentId, aPrincipalInfo.ref(), aClientId.ref()))) { + if (svc && + NS_WARN_IF(!svc->HasWindow(aContentParentHandle, aPrincipalInfo.ref(), + aClientId.ref()))) { return false; } } @@ -3280,7 +3298,7 @@ // method. RefPtr database = - new Database(aPrincipalInfo, preparedDatastore->GetContentParentId(), + new Database(aPrincipalInfo, preparedDatastore->GetContentParentHandle(), preparedDatastore->Origin(), aPrivateBrowsingId); return database.forget(); @@ -3416,12 +3434,8 @@ return nullptr; } - Maybe contentParentId; - - uint64_t childID = BackgroundParent::GetChildID(aBackgroundActor); - if (childID) { - contentParentId = Some(ContentParentId(childID)); - } + RefPtr contentParentHandle = + BackgroundParent::GetContentParentHandle(aBackgroundActor); RefPtr actor; @@ -3429,7 +3443,7 @@ case LSRequestParams::TLSRequestPreloadDatastoreParams: case LSRequestParams::TLSRequestPrepareDatastoreParams: { RefPtr prepareDatastoreOp = - new PrepareDatastoreOp(aParams, contentParentId); + new PrepareDatastoreOp(aParams, contentParentHandle); if (!gPrepareDatastoreOps) { gPrepareDatastoreOps = new PrepareDatastoreOpArray(); @@ -3444,7 +3458,7 @@ case LSRequestParams::TLSRequestPrepareObserverParams: { RefPtr prepareObserverOp = - new PrepareObserverOp(aParams, contentParentId); + new PrepareObserverOp(aParams, contentParentHandle); actor = std::move(prepareObserverOp); @@ -3499,19 +3513,15 @@ return nullptr; } - Maybe contentParentId; - - uint64_t childID = BackgroundParent::GetChildID(aBackgroundActor); - if (childID) { - contentParentId = Some(ContentParentId(childID)); - } + RefPtr contentParentHandle = + BackgroundParent::GetContentParentHandle(aBackgroundActor); RefPtr actor; switch (aParams.type()) { case LSSimpleRequestParams::TLSSimpleRequestPreloadedParams: { RefPtr preloadedOp = - new PreloadedOp(aParams, contentParentId); + new PreloadedOp(aParams, contentParentHandle); actor = std::move(preloadedOp); @@ -3519,7 +3529,8 @@ } case LSSimpleRequestParams::TLSSimpleRequestGetStateParams: { - RefPtr getStateOp = new GetStateOp(aParams, contentParentId); + RefPtr getStateOp = + new GetStateOp(aParams, contentParentHandle); actor = std::move(getStateOp); @@ -4595,7 +4606,7 @@ AssertIsOnBackgroundThread(); for (Database* database : mDatabases) { - if (database->ContentParentIdRef() != aDatabase->ContentParentIdRef()) { + if (database->ContentParentHandle() != aDatabase->ContentParentHandle()) { return true; } } @@ -5103,7 +5114,7 @@ MOZ_ASSERT(array); for (Observer* observer : *array) { - if (observer->ContentParentIdRef() != aDatabase->ContentParentIdRef()) { + if (observer->ContentParentHandle() != aDatabase->ContentParentHandle()) { return true; } } @@ -5134,7 +5145,7 @@ // that caused the change. for (Observer* observer : *array) { - if (observer->ContentParentIdRef() != aDatabase->ContentParentIdRef()) { + if (observer->ContentParentHandle() != aDatabase->ContentParentHandle()) { observer->Observe(aDatabase, aDocumentURI, aKey, aOldValue, aNewValue); } } @@ -5155,7 +5166,7 @@ bool hasOtherProcessObservers = false; for (Observer* observer : aObservers) { - if (observer->ContentParentIdRef() != database->ContentParentIdRef()) { + if (observer->ContentParentHandle() != database->ContentParentHandle()) { hasOtherProcessObservers = true; break; } @@ -5363,11 +5374,11 @@ ******************************************************************************/ Database::Database(const PrincipalInfo& aPrincipalInfo, - const Maybe& aContentParentId, + ThreadsafeContentParentHandle* aContentParentHandle, const nsACString& aOrigin, uint32_t aPrivateBrowsingId) : mSnapshot(nullptr), mPrincipalInfo(aPrincipalInfo), - mContentParentId(aContentParentId), + mContentParentHandle(aContentParentHandle), mOrigin(aOrigin), mRequestAllowToCloseTimerId(0), mPrivateBrowsingId(aPrivateBrowsingId), @@ -5492,7 +5503,7 @@ aResult.Append(kQuotaGenericDelimiter); aResult.AppendLiteral("OtherProcessActor:"); - aResult.AppendInt(mContentParentId.isSome()); + aResult.AppendInt(!!mContentParentHandle); aResult.Append(kQuotaGenericDelimiter); aResult.AppendLiteral("Origin:"); @@ -6153,9 +6164,9 @@ * Observer ******************************************************************************/ -Observer::Observer(const Maybe& aContentParentId, +Observer::Observer(ThreadsafeContentParentHandle* aContentParentHandle, const nsACString& aOrigin) - : mContentParentId(aContentParentId), + : mContentParentHandle(aContentParentHandle), mOrigin(aOrigin), mActorDestroyed(false) { AssertIsOnBackgroundThread(); @@ -6216,10 +6227,11 @@ * LSRequestBase ******************************************************************************/ -LSRequestBase::LSRequestBase(const LSRequestParams& aParams, - const Maybe& aContentParentId) +LSRequestBase::LSRequestBase( + const LSRequestParams& aParams, + ThreadsafeContentParentHandle* aContentParentHandle) : mParams(aParams), - mContentParentId(aContentParentId), + mContentParentHandle(aContentParentHandle), mState(State::Initial), mWaitingForFinish(false) {} @@ -6308,7 +6320,8 @@ mParams.get_LSRequestPreloadDatastoreParams().commonParams(); if (NS_WARN_IF(!VerifyPrincipalInfo( - params.principalInfo(), params.storagePrincipalInfo(), false))) { + ContentParentHandle(), params.principalInfo(), + params.storagePrincipalInfo(), false))) { return false; } @@ -6326,20 +6339,20 @@ const LSRequestCommonParams& commonParams = params.commonParams(); - if (NS_WARN_IF(!VerifyPrincipalInfo(commonParams.principalInfo(), - commonParams.storagePrincipalInfo(), - false))) { + if (NS_WARN_IF(!VerifyPrincipalInfo( + ContentParentHandle(), commonParams.principalInfo(), + commonParams.storagePrincipalInfo(), false))) { return false; } if (params.clientPrincipalInfo() && - NS_WARN_IF(!VerifyPrincipalInfo(commonParams.principalInfo(), - params.clientPrincipalInfo().ref(), - true))) { + NS_WARN_IF(!VerifyPrincipalInfo( + ContentParentHandle(), commonParams.principalInfo(), + params.clientPrincipalInfo().ref(), true))) { return false; } - if (NS_WARN_IF(!VerifyClientId(mContentParentId, + if (NS_WARN_IF(!VerifyClientId(ContentParentHandle(), params.clientPrincipalInfo(), params.clientId()))) { return false; @@ -6358,18 +6371,19 @@ mParams.get_LSRequestPrepareObserverParams(); if (NS_WARN_IF(!VerifyPrincipalInfo( - params.principalInfo(), params.storagePrincipalInfo(), false))) { + ContentParentHandle(), params.principalInfo(), + params.storagePrincipalInfo(), false))) { return false; } if (params.clientPrincipalInfo() && - NS_WARN_IF(!VerifyPrincipalInfo(params.principalInfo(), - params.clientPrincipalInfo().ref(), - true))) { + NS_WARN_IF(!VerifyPrincipalInfo( + ContentParentHandle(), params.principalInfo(), + params.clientPrincipalInfo().ref(), true))) { return false; } - if (NS_WARN_IF(!VerifyClientId(mContentParentId, + if (NS_WARN_IF(!VerifyClientId(ContentParentHandle(), params.clientPrincipalInfo(), params.clientId()))) { return false; @@ -6612,8 +6626,8 @@ PrepareDatastoreOp::PrepareDatastoreOp( const LSRequestParams& aParams, - const Maybe& aContentParentId) - : LSRequestBase(aParams, aContentParentId), + ThreadsafeContentParentHandle* aContentParentHandle) + : LSRequestBase(aParams, aContentParentHandle), mProcessingTimerId( glean::localstorage_request::prepare_datastore_processing_time .Start()), @@ -7592,8 +7606,8 @@ } const auto& preparedDatastore = gPreparedDatastores->InsertOrUpdate( mDatastoreId, MakeUnique( - mDatastore, mContentParentId, Origin(), mDatastoreId, - /* aForPreload */ mForPreload)); + mDatastore, ContentParentHandle(), Origin(), + mDatastoreId, /* aForPreload */ mForPreload)); if (mInvalidated) { preparedDatastore->Invalidate(); @@ -7972,8 +7986,8 @@ PrepareObserverOp::PrepareObserverOp( const LSRequestParams& aParams, - const Maybe& aContentParentId) - : LSRequestBase(aParams, aContentParentId) { + ThreadsafeContentParentHandle* aContentParentHandle) + : LSRequestBase(aParams, aContentParentHandle) { MOZ_ASSERT(aParams.type() == LSRequestParams::TLSRequestPrepareObserverParams); } @@ -8013,7 +8027,7 @@ uint64_t observerId = ++gLastObserverId; - RefPtr observer = new Observer(mContentParentId, mOrigin); + RefPtr observer = new Observer(ContentParentHandle(), mOrigin); if (!gPreparedObsevers) { gPreparedObsevers = new PreparedObserverHashtable(); @@ -8033,9 +8047,9 @@ LSSimpleRequestBase::LSSimpleRequestBase( const LSSimpleRequestParams& aParams, - const Maybe& aContentParentId) + ThreadsafeContentParentHandle* aContentParentHandle) : mParams(aParams), - mContentParentId(aContentParentId), + mContentParentHandle(aContentParentHandle), mState(State::Initial) {} LSSimpleRequestBase::~LSSimpleRequestBase() { @@ -8061,8 +8075,9 @@ const LSSimpleRequestPreloadedParams& params = mParams.get_LSSimpleRequestPreloadedParams(); - if (NS_WARN_IF(!VerifyPrincipalInfo( - params.principalInfo(), params.storagePrincipalInfo(), false))) { + if (NS_WARN_IF( + !VerifyPrincipalInfo(mContentParentHandle, params.principalInfo(), + params.storagePrincipalInfo(), false))) { return false; } @@ -8073,8 +8088,9 @@ const LSSimpleRequestGetStateParams& params = mParams.get_LSSimpleRequestGetStateParams(); - if (NS_WARN_IF(!VerifyPrincipalInfo( - params.principalInfo(), params.storagePrincipalInfo(), false))) { + if (NS_WARN_IF( + !VerifyPrincipalInfo(mContentParentHandle, params.principalInfo(), + params.storagePrincipalInfo(), false))) { return false; } @@ -8183,8 +8199,8 @@ ******************************************************************************/ PreloadedOp::PreloadedOp(const LSSimpleRequestParams& aParams, - const Maybe& aContentParentId) - : LSSimpleRequestBase(aParams, aContentParentId) { + ThreadsafeContentParentHandle* aContentParentHandle) + : LSSimpleRequestBase(aParams, aContentParentHandle) { MOZ_ASSERT(aParams.type() == LSSimpleRequestParams::TLSSimpleRequestPreloadedParams); } @@ -8240,8 +8256,8 @@ ******************************************************************************/ GetStateOp::GetStateOp(const LSSimpleRequestParams& aParams, - const Maybe& aContentParentId) - : LSSimpleRequestBase(aParams, aContentParentId) { + ThreadsafeContentParentHandle* aContentParentHandle) + : LSSimpleRequestBase(aParams, aContentParentHandle) { MOZ_ASSERT(aParams.type() == LSSimpleRequestParams::TLSSimpleRequestGetStateParams); } @@ -8894,18 +8910,15 @@ void QuotaClient::AbortOperationsForProcess(ContentParentId aContentParentId) { AssertIsOnBackgroundThread(); - // XXX Quota Manager should do the wrapping. - Maybe contentParentId; - - if (aContentParentId) { - contentParentId = Some(aContentParentId); - } - // XXX We could try to invalidate other objects here. RequestAllowToCloseDatabasesMatching( - [&contentParentId](const auto& database) { - return database.ContentParentIdRef() == contentParentId; + [aContentParentId](const auto& database) { + ThreadsafeContentParentHandle* contentParentHandle = + database.ContentParentHandle(); + return contentParentHandle + ? contentParentHandle->ChildID() == aContentParentId + : !aContentParentId; }); } diff -Nru firefox-esr-140.13.0esr/dom/media/AudioPacketizer.h firefox-esr-140.15.0esr/dom/media/AudioPacketizer.h --- firefox-esr-140.13.0esr/dom/media/AudioPacketizer.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/AudioPacketizer.h 2026-08-26 17:03:41.000000000 +0000 @@ -8,9 +8,15 @@ #include #include +#include +#include #include +#include #include +#include "nsDebug.h" +#include "nsError.h" + // Enable this to warn when `Output` has been called but not enough data was // buffered. // #define LOG_PACKETIZER_UNDERRUN @@ -49,46 +55,60 @@ "positive"); } - void Input(const InputType* aFrames, uint32_t aFrameCount) { - uint32_t inputSamples = aFrameCount * mChannels; + [[nodiscard]] nsresult Input(const InputType* aFrames, uint32_t aFrameCount) { + CheckedUint32 inputSamples = CheckedUint32(aFrameCount) * mChannels; + if (!inputSamples.isValid()) { + NS_WARNING("AudioPacketizer::Input: frame count too large to buffer"); + return NS_ERROR_DOM_MEDIA_OVERFLOW_ERR; + } // Need to grow the storage. This should rarely happen, if at all, once the // array has the right size. - if (inputSamples > EmptySlots()) { + if (inputSamples.value() > EmptySlots()) { // Calls to Input and Output are roughtly interleaved // (Input,Output,Input,Output, etc.), or balanced // (Input,Input,Input,Output,Output,Output), so we update the buffer to // the exact right size in order to not waste space. - uint32_t newLength = AvailableSamples() + inputSamples; - uint32_t toCopy = AvailableSamples(); - UniquePtr oldStorage = std::move(mStorage); - mStorage = mozilla::MakeUnique(newLength); + CheckedUint32 newLength = + CheckedUint32(AvailableSamples()) + inputSamples; + if (!newLength.isValid()) { + NS_WARNING("AudioPacketizer::Input: buffer size too large to grow"); + return NS_ERROR_DOM_MEDIA_OVERFLOW_ERR; + } + UniquePtr newStorage = + mozilla::MakeUniqueFallible(newLength.value()); + if (!newStorage) { + NS_WARNING("AudioPacketizer::Input: buffer allocation failed"); + return NS_ERROR_OUT_OF_MEMORY; + } // Copy the old data at the beginning of the new storage. if (WriteIndex() >= ReadIndex()) { - PodCopy(mStorage.get(), oldStorage.get() + ReadIndex(), + PodCopy(newStorage.get(), mStorage.get() + ReadIndex(), AvailableSamples()); } else { uint32_t firstPartLength = mLength - ReadIndex(); uint32_t secondPartLength = AvailableSamples() - firstPartLength; - PodCopy(mStorage.get(), oldStorage.get() + ReadIndex(), + PodCopy(newStorage.get(), mStorage.get() + ReadIndex(), firstPartLength); - PodCopy(mStorage.get() + firstPartLength, oldStorage.get(), + PodCopy(newStorage.get() + firstPartLength, mStorage.get(), secondPartLength); } - mWriteIndex = toCopy; + mStorage = std::move(newStorage); + mWriteIndex -= mReadIndex; mReadIndex = 0; - mLength = newLength; + mLength = newLength.value(); } - if (WriteIndex() + inputSamples <= mLength) { - PodCopy(mStorage.get() + WriteIndex(), aFrames, aFrameCount * mChannels); + if (WriteIndex() + inputSamples.value() <= mLength) { + PodCopy(mStorage.get() + WriteIndex(), aFrames, inputSamples.value()); } else { uint32_t firstPartLength = mLength - WriteIndex(); - uint32_t secondPartLength = inputSamples - firstPartLength; + uint32_t secondPartLength = inputSamples.value() - firstPartLength; PodCopy(mStorage.get() + WriteIndex(), aFrames, firstPartLength); PodCopy(mStorage.get(), aFrames + firstPartLength, secondPartLength); } - mWriteIndex += inputSamples; + mWriteIndex += inputSamples.value(); + return NS_OK; } OutputType* Output() { @@ -162,7 +182,13 @@ uint32_t WriteIndex() const { return mWriteIndex % mLength; } - uint32_t AvailableSamples() const { return mWriteIndex - mReadIndex; } + uint32_t AvailableSamples() const { + // Output never advances mReadIndex past mWriteIndex (it clamps to the + // available count on under-run), so the difference is never negative. + // The live count is bounded by mLength (a uint32), so the cast is in range. + MOZ_DIAGNOSTIC_ASSERT(mWriteIndex >= mReadIndex); + return AssertedCast(mWriteIndex - mReadIndex); + } uint32_t EmptySlots() const { return mLength - AvailableSamples(); } diff -Nru firefox-esr-140.13.0esr/dom/media/AudioSegment.cpp firefox-esr-140.15.0esr/dom/media/AudioSegment.cpp --- firefox-esr-140.13.0esr/dom/media/AudioSegment.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/AudioSegment.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -32,9 +32,11 @@ } template -void AudioSegment::Resample(nsAutoRef& aResampler, - uint32_t* aResamplerChannelCount, uint32_t aInRate, - uint32_t aOutRate) { +nsresult AudioSegment::Resample(nsAutoRef& aResampler, + uint32_t* aResamplerChannelCount, + uint32_t aInRate, uint32_t aOutRate) { + MOZ_ASSERT(aInRate > 0); + MOZ_ASSERT(aOutRate > 0); mDuration = 0; for (ChunkIterator ci(*this); !ci.IsEnded(); ci.Next()) { @@ -47,6 +49,7 @@ mDuration += c.mDuration; continue; } + MOZ_ASSERT(c.mDuration > 0); uint32_t channels = c.mChannelData.Length(); // This might introduce a discontinuity, but a channel count change in the // middle of a stream is not that common. This also initializes the @@ -61,16 +64,26 @@ } output.SetLength(channels); bufferPtrs.SetLength(channels); - uint32_t inFrames = c.mDuration; - // Round up to allocate; the last frame may not be used. - NS_ASSERTION((UINT64_MAX - aInRate + 1) / c.mDuration >= aOutRate, - "Dropping samples"); - uint32_t outSize = - (static_cast(c.mDuration) * aOutRate + aInRate - 1) / aInRate; + // Round up in 64 bits, and reject a size that will not fit in uint32_t, + // which would otherwise silently drop part of the chunk. Clearing keeps + // mDuration the sum of the chunk durations. + CheckedUint32 outSizeChecked = + ((CheckedInt(c.mDuration) * aOutRate + (aInRate - 1)) / + aInRate) + .toChecked(); + if (!outSizeChecked.isValid()) { + Clear(); + return NS_ERROR_DOM_MEDIA_OVERFLOW_ERR; + } + uint32_t outSize = outSizeChecked.value(); for (uint32_t i = 0; i < channels; i++) { T* out = output[i].AppendElements(outSize); uint32_t outFrames = outSize; + // Speex overwrites this count, so reset it for each channel: sharing one + // variable would resample later channels from fewer frames and leave + // their buffers short of the duration the chunk advertises. + uint32_t inFrames = c.mDuration; const T* in = static_cast(c.mChannelData[i]); dom::WebAudioUtils::SpeexResamplerProcess(aResampler.get(), i, in, &inFrames, out, &outFrames); @@ -78,6 +91,7 @@ bufferPtrs[i] = out; output[i].SetLength(outFrames); + MOZ_ASSERT(output[i].Length() == output[0].Length()); } MOZ_ASSERT(channels > 0); c.mDuration = output[0].Length(); @@ -87,13 +101,14 @@ } mDuration += c.mDuration; } + return NS_OK; } -void AudioSegment::ResampleChunks(nsAutoRef& aResampler, - uint32_t* aResamplerChannelCount, - uint32_t aInRate, uint32_t aOutRate) { +nsresult AudioSegment::ResampleChunks( + nsAutoRef& aResampler, + uint32_t* aResamplerChannelCount, uint32_t aInRate, uint32_t aOutRate) { if (mChunks.IsEmpty()) { - return; + return NS_OK; } AudioSampleFormat format = AUDIO_FORMAT_SILENCE; @@ -109,14 +124,14 @@ // the chunks duration. case AUDIO_FORMAT_SILENCE: case AUDIO_FORMAT_FLOAT32: - Resample(aResampler, aResamplerChannelCount, aInRate, aOutRate); - break; + return Resample(aResampler, aResamplerChannelCount, aInRate, + aOutRate); case AUDIO_FORMAT_S16: - Resample(aResampler, aResamplerChannelCount, aInRate, aOutRate); - break; + return Resample(aResampler, aResamplerChannelCount, aInRate, + aOutRate); default: MOZ_ASSERT(false); - break; + return NS_ERROR_UNEXPECTED; } } diff -Nru firefox-esr-140.13.0esr/dom/media/AudioSegment.h firefox-esr-140.15.0esr/dom/media/AudioSegment.h --- firefox-esr-140.13.0esr/dom/media/AudioSegment.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/AudioSegment.h 2026-08-26 17:03:41.000000000 +0000 @@ -354,9 +354,11 @@ // function finds a chunk with more channels, `aResampler` is destroyed and a // new resampler is created, and `aResamplerChannelCount` is updated with the // new channel count value. - void ResampleChunks(nsAutoRef& aResampler, - uint32_t* aResamplerChannelCount, uint32_t aInRate, - uint32_t aOutRate); + // Rates must be non-zero. Clears the segment and returns an error if the + // output size is not representable. + [[nodiscard]] nsresult ResampleChunks( + nsAutoRef& aResampler, + uint32_t* aResamplerChannelCount, uint32_t aInRate, uint32_t aOutRate); template void AppendFrames(already_AddRefed aBuffer, @@ -465,9 +467,9 @@ private: template - void Resample(nsAutoRef& aResampler, - uint32_t* aResamplerChannelCount, uint32_t aInRate, - uint32_t aOutRate); + [[nodiscard]] nsresult Resample(nsAutoRef& aResampler, + uint32_t* aResamplerChannelCount, + uint32_t aInRate, uint32_t aOutRate); }; template diff -Nru firefox-esr-140.13.0esr/dom/media/GraphDriver.cpp firefox-esr-140.15.0esr/dom/media/GraphDriver.cpp --- firefox-esr-140.13.0esr/dom/media/GraphDriver.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/GraphDriver.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -655,9 +655,10 @@ forcedOutputDeviceId ? forcedOutputDeviceId : outputId, &output, latencyFrames, DataCallback_s, StateCallback_s, this) == CUBEB_OK) { mCubeb = handle; - mAudioStream.own(stream); - DebugOnly rv = - cubeb_stream_set_volume(mAudioStream, CubebUtils::GetVolumeScale()); + auto streamLocked = mAudioStream.Lock(); + streamLocked->own(stream); + DebugOnly rv = cubeb_stream_set_volume(streamLocked.ref(), + CubebUtils::GetVolumeScale()); NS_WARNING_ASSERTION( rv == CUBEB_OK, "Could not set the audio stream volume in GraphDriver.cpp"); @@ -684,8 +685,11 @@ SetInputProcessingParams(mInputProcessingRequest); } - cubeb_stream_register_device_changed_callback( - mAudioStream, AudioCallbackDriver::DeviceChangedCallback_s); + { + auto streamLocked = mAudioStream.Lock(); + cubeb_stream_register_device_changed_callback( + streamLocked.ref(), AudioCallbackDriver::DeviceChangedCallback_s); + } // No-op if MOZ_DUMP_AUDIO is not defined as an environment variable. This // is intended for diagnosing issues, and only works if the content sandbox is @@ -704,8 +708,9 @@ void AudioCallbackDriver::SetCubebStreamName(const nsCString& aStreamName) { MOZ_ASSERT(OnCubebOperationThread()); - MOZ_ASSERT(mAudioStream); - cubeb_stream_set_name(mAudioStream, aStreamName.get()); + auto streamLocked = mAudioStream.Lock(); + MOZ_ASSERT(streamLocked.ref()); + cubeb_stream_set_name(streamLocked.ref(), aStreamName.get()); } void AudioCallbackDriver::Start() { @@ -767,7 +772,8 @@ // can result in a callback (that may read mAudioStreamState) before // mAudioStreamState would otherwise be set. mAudioStreamState = AudioStreamState::Starting; - if (cubeb_stream_start(mAudioStream) != CUBEB_OK) { + auto streamLocked = mAudioStream.Lock(); + if (cubeb_stream_start(streamLocked.ref()) != CUBEB_OK) { NS_WARNING("Could not start cubeb stream for MTG."); return false; } @@ -780,8 +786,9 @@ ("%p: AudioCallbackDriver::Stop driver=%p", Graph(), this)); TRACE("AudioCallbackDriver::Stop"); MOZ_ASSERT(OnCubebOperationThread()); - cubeb_stream_register_device_changed_callback(mAudioStream, nullptr); - if (cubeb_stream_stop(mAudioStream) != CUBEB_OK) { + auto streamLocked = mAudioStream.Lock(); + cubeb_stream_register_device_changed_callback(streamLocked.ref(), nullptr); + if (cubeb_stream_stop(streamLocked.ref()) != CUBEB_OK) { NS_WARNING("Could not stop cubeb stream for MTG."); } else { mAudioStreamState = AudioStreamState::None; @@ -1193,7 +1200,8 @@ // For macbook pro before 2016 model (change of chassis), hard pan the audio // to the right if the speakers are in use to avoid feedback. if (model == MacBookPro && major <= 12) { - if (cubeb_stream_get_current_device(mAudioStream, &out) == CUBEB_OK) { + auto streamLocked = mAudioStream.Lock(); + if (cubeb_stream_get_current_device(streamLocked.ref(), &out) == CUBEB_OK) { MOZ_ASSERT(out); // Check if we are currently outputing sound on external speakers. if (out->output_name && !strcmp(out->output_name, "ispk")) { @@ -1205,7 +1213,7 @@ LOG(LogLevel::Debug, ("Using an external output device")); mNeedsPanning = false; } - cubeb_stream_device_destroy(mAudioStream, out); + cubeb_stream_device_destroy(streamLocked.ref(), out); } } #endif @@ -1277,8 +1285,12 @@ TimeDuration AudioCallbackDriver::AudioOutputLatency() { TRACE("AudioCallbackDriver::AudioOutputLatency"); + // Called from the main thread, unlike virtually everything else touching + // mAudioStream, hence the lock: latency can change over the life of the + // stream, so it must be queried live rather than cached at Init() time. uint32_t latencyFrames; - int rv = cubeb_stream_get_latency(mAudioStream, &latencyFrames); + auto streamLocked = mAudioStream.Lock(); + int rv = cubeb_stream_get_latency(streamLocked.ref(), &latencyFrames); if (rv || mSampleRate == 0) { return TimeDuration::FromSeconds(0.0); } @@ -1435,6 +1447,7 @@ const auto requested = aRequest.mParams; auto params = aRequest.mParams; const auto generation = aRequest.mGeneration; + auto streamLocked = mAudioStream.Lock(); auto result = ([&]() -> Maybe> { // This function decides how to handle the request. // Returning Nothing() does nothing, because either @@ -1443,7 +1456,7 @@ // Returning Some() result will forward that result to // AudioDataListener::OnInputProcessingParamsResult on the callback // thread. - if (!mAudioStream) { + if (!streamLocked.ref()) { // No Init yet. LOG(LogLevel::Debug, ("AudioCallbackDriver %p, has no cubeb stream to " "set processing params on!", @@ -1478,7 +1491,7 @@ return Some(params); } mConfiguredInputProcessingParams = params; - r = cubeb_stream_set_input_processing_params(mAudioStream, params); + r = cubeb_stream_set_input_processing_params(streamLocked.ref(), params); if (r == CUBEB_OK) { LOG(LogLevel::Info, ("AudioCallbackDriver %p, input processing params set to %s", this, diff -Nru firefox-esr-140.13.0esr/dom/media/GraphDriver.h firefox-esr-140.15.0esr/dom/media/GraphDriver.h --- firefox-esr-140.13.0esr/dom/media/GraphDriver.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/GraphDriver.h 2026-08-26 17:03:41.000000000 +0000 @@ -719,8 +719,12 @@ // we hold a strong reference on its behalf. RefPtr mCubeb; /* cubeb stream for this graph. This is non-null after a successful - * cubeb_stream_init(). CubebOperation thread only. */ - nsAutoRef mAudioStream; + * cubeb_stream_init(). Written and read on the CubebOperation thread only, + * except for AudioOutputLatency(), which reads it from the main thread. + * Behind a lock because of that cross-thread read; never touched by the + * real-time audio callback thread. */ + DataMutex> mAudioStream{ + "AudioCallbackDriver::mAudioStream"}; /* The number of input channels from cubeb. Set before opening cubeb. If it is * zero then the driver is output-only. */ const uint32_t mInputChannelCount; diff -Nru firefox-esr-140.13.0esr/dom/media/ImageConversion.cpp firefox-esr-140.15.0esr/dom/media/ImageConversion.cpp --- firefox-esr-140.13.0esr/dom/media/ImageConversion.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/ImageConversion.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -59,6 +59,12 @@ } } +static bool DataSurfaceCoversSize(DataSourceSurface* aSurface, + const IntSize& aSize) { + const IntSize surfaceSize = aSurface->GetSize(); + return surfaceSize.width >= aSize.width && surfaceSize.height >= aSize.height; +} + namespace mozilla { already_AddRefed GetSourceSurface(Image* aImage) { @@ -86,6 +92,10 @@ } const IntSize imageSize = aImage->GetSize(); + if (!IsImageDimensionSupportedForConversion(imageSize)) { + return NS_ERROR_INVALID_ARG; + } + auto srcPixelCount = CheckedInt(imageSize.width) * imageSize.height; auto dstPixelCount = CheckedInt(aDestSize.width) * aDestSize.height; if (!srcPixelCount.isValid() || !dstPixelCount.isValid()) { @@ -180,6 +190,11 @@ return NS_ERROR_FAILURE; } + if (!DataSurfaceCoversSize(dataSurface, imageSize)) { + NS_WARNING("ConvertToI420: Source surface smaller than image size"); + return NS_ERROR_INVALID_ARG; + } + surfaceMap.emplace(dataSurface, DataSourceSurface::READ); if (!surfaceMap->IsMapped()) { return NS_ERROR_FAILURE; @@ -466,6 +481,11 @@ return NS_ERROR_INVALID_ARG; } + const gfx::IntSize imageSize = aImage->GetSize(); + if (!IsImageDimensionSupportedForConversion(imageSize)) { + return NS_ERROR_INVALID_ARG; + } + if (const PlanarYCbCrData* data = GetPlanarYCbCrData(aImage)) { const ImageUtils imageUtils(aImage); Maybe format = imageUtils.GetFormat(); @@ -482,7 +502,7 @@ PlanarYCbCrData i420Source = *data; gfx::AlignedArray scaledI420Buffer; - if (aDestSize != aImage->GetSize()) { + if (aDestSize != imageSize) { const int32_t halfWidth = CeilingOfHalf(aDestSize.width); const uint32_t halfHeight = CeilingOfHalf(aDestSize.height); @@ -555,6 +575,11 @@ return NS_ERROR_FAILURE; } + if (!DataSurfaceCoversSize(data, aImage->GetSize())) { + NS_WARNING("ConvertToNV12: Source surface smaller than image size"); + return NS_ERROR_INVALID_ARG; + } + DataSourceSurface::ScopedMap map(data, DataSourceSurface::READ); if (!map.IsMapped()) { return NS_ERROR_FAILURE; diff -Nru firefox-esr-140.13.0esr/dom/media/ImageConversion.h firefox-esr-140.15.0esr/dom/media/ImageConversion.h --- firefox-esr-140.13.0esr/dom/media/ImageConversion.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/ImageConversion.h 2026-08-26 17:03:41.000000000 +0000 @@ -21,6 +21,16 @@ class Image; } // namespace layers +// The conversion routines below scale with libyuv's box filter, which is +// defined for image dimensions below this value. +static constexpr int32_t kMaxConvertImageDimension = 32768; + +// Whether an image of aSize can be passed to the conversion routines below. +inline bool IsImageDimensionSupportedForConversion(const gfx::IntSize& aSize) { + return aSize.width < kMaxConvertImageDimension && + aSize.height < kMaxConvertImageDimension; +} + /** * Gets a SourceSurface from given image. */ diff -Nru firefox-esr-140.13.0esr/dom/media/MediaData.cpp firefox-esr-140.15.0esr/dom/media/MediaData.cpp --- firefox-esr-140.13.0esr/dom/media/MediaData.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/MediaData.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -230,9 +230,10 @@ } // Ensure the picture size specified in the headers can be extracted out of // the frame we've been supplied without indexing out of bounds. + // The picture extent and the plane width are both measured in samples. CheckedUint32 xLimit = aPicture.x + CheckedUint32(aPicture.width); CheckedUint32 yLimit = aPicture.y + CheckedUint32(aPicture.height); - if (!xLimit.isValid() || xLimit.value() > aBuffer.mPlanes[0].mStride || + if (!xLimit.isValid() || xLimit.value() > aBuffer.mPlanes[0].mWidth || !yLimit.isValid() || yLimit.value() > aBuffer.mPlanes[0].mHeight) { // The specified picture dimensions can't be contained inside the video // frame, we'll stomp memory if we try to copy it. Fail. @@ -340,6 +341,11 @@ bool aCopyData) { MOZ_ASSERT(aVideoImage); + if (MediaResult r = ValidateBufferAndPicture(aBuffer, aPicture); + NS_FAILED(r)) { + return r; + } + PlanarYCbCrData data = ConstructPlanarYCbCrData(aInfo, aBuffer, aPicture); if (aCopyData) { diff -Nru firefox-esr-140.13.0esr/dom/media/MediaInfo.h firefox-esr-140.15.0esr/dom/media/MediaInfo.h --- firefox-esr-140.13.0esr/dom/media/MediaInfo.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/MediaInfo.h 2026-08-26 17:03:41.000000000 +0000 @@ -404,6 +404,16 @@ void SetImageRect(const gfx::IntRect& aRect) { mImageRect = Some(aRect); } void ResetImageRect() { mImageRect.reset(); } + // Adopts an image size decoded from the bitstream. The picture rectangle is + // expressed relative to the image size, so a change in size invalidates it + // and it is discarded; an unchanged size keeps the existing rectangle. + void AdoptImageSize(const gfx::IntSize& aImage) { + if (mImage != aImage) { + ResetImageRect(); + } + mImage = aImage; + } + // Returned the crop rectangle scaled to aWidth/aHeight size relative to // mImage size. // If aWidth and aHeight are identical to the original diff -Nru firefox-esr-140.13.0esr/dom/media/MediaTrackGraph.cpp firefox-esr-140.15.0esr/dom/media/MediaTrackGraph.cpp --- firefox-esr-140.13.0esr/dom/media/MediaTrackGraph.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/MediaTrackGraph.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -3015,9 +3015,11 @@ return; } AudioSegment* segment = static_cast(aSegment); - segment->ResampleChunks(mUpdateTrack->mResampler, - &mUpdateTrack->mResamplerChannelCount, - mUpdateTrack->mInputRate, GraphImpl()->GraphRate()); + // 10 ms of 48 kHz audio always yields a representable size at GraphRate(). + DebugOnly rv = segment->ResampleChunks( + mUpdateTrack->mResampler, &mUpdateTrack->mResamplerChannelCount, + mUpdateTrack->mInputRate, GraphImpl()->GraphRate()); + MOZ_ASSERT(NS_SUCCEEDED(rv)); } void SourceMediaTrack::AdvanceTimeVaryingValuesToCurrentTime( diff -Nru firefox-esr-140.13.0esr/dom/media/TimedPacketizer.h firefox-esr-140.15.0esr/dom/media/TimedPacketizer.h --- firefox-esr-140.13.0esr/dom/media/TimedPacketizer.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/TimedPacketizer.h 2026-08-26 17:03:41.000000000 +0000 @@ -23,8 +23,8 @@ mTimeStamp(media::TimeUnit(aInitialTick, aBase)), mBase(aBase) {} - void Input(const InputType* aFrames, uint32_t aFrameCount) { - mPacketizer.Input(aFrames, aFrameCount); + [[nodiscard]] nsresult Input(const InputType* aFrames, uint32_t aFrameCount) { + return mPacketizer.Input(aFrames, aFrameCount); } media::TimeUnit Output(OutputType* aOutputBuffer) { diff -Nru firefox-esr-140.13.0esr/dom/media/gmp/GMPChild.cpp firefox-esr-140.15.0esr/dom/media/gmp/GMPChild.cpp --- firefox-esr-140.13.0esr/dom/media/gmp/GMPChild.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/gmp/GMPChild.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -581,6 +581,12 @@ mGMPContentChildren[i - 1]->Close(); } + if (ShutdownPlatformAPI() == + PlatformShutdownResult::PluginExecutionOutstanding) { + ProcessChild::QuickExit(); + return; + } + if (mGMPLoader) { mGMPLoader->Shutdown(); } diff -Nru firefox-esr-140.13.0esr/dom/media/gmp/GMPPlatform.cpp firefox-esr-140.15.0esr/dom/media/gmp/GMPPlatform.cpp --- firefox-esr-140.13.0esr/dom/media/gmp/GMPPlatform.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/gmp/GMPPlatform.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -6,10 +6,12 @@ #include "GMPPlatform.h" #include "GMPStorageChild.h" #include "GMPTimerChild.h" +#include "mozilla/Atomics.h" #include "mozilla/Monitor.h" #include "GMPChild.h" #include "mozilla/Mutex.h" #include "mozilla/ReentrantMonitor.h" +#include "mozilla/StaticMutex.h" #include "nsThreadUtils.h" #include "base/task.h" #include "base/thread.h" @@ -25,23 +27,37 @@ static GMPChild* sChild = nullptr; +// sShutdown is atomic so GMPRunnable::Run() can check it lock-free. The +// counters and the shutdown snapshot are serialized by sPlatformStateMutex so +// that closing admission and reading whether any plugin execution remains is a +// single transaction. +static Atomic sShutdown{false}; +static StaticMutex sPlatformStateMutex; +static uint32_t sLiveThreads MOZ_GUARDED_BY(sPlatformStateMutex) = 0; +static uint32_t sLivePluginObjects MOZ_GUARDED_BY(sPlatformStateMutex) = 0; + // We just need a refcounted wrapper for GMPTask objects. class GMPRunnable final : public Runnable { public: - explicit GMPRunnable(GMPTask* aTask) - : Runnable("mozilla::gmp::GMPRunnable"), mTask(aTask) { + GMPRunnable(GMPTask* aTask, bool aCancelOnShutdown) + : Runnable("mozilla::gmp::GMPRunnable"), + mTask(aTask), + mCancelOnShutdown(aCancelOnShutdown) { MOZ_ASSERT(mTask); } NS_IMETHOD Run() override { - mTask->Run(); - mTask->Destroy(); + if (!(mCancelOnShutdown && sShutdown)) { + mTask->Run(); + mTask->Destroy(); + } mTask = nullptr; return NS_OK; } private: GMPTask* mTask; + const bool mCancelOnShutdown; }; class GMPSyncRunnable final : public Runnable { @@ -99,17 +115,24 @@ return GMPGenericErr; } + StaticMutexAutoLock lock(sPlatformStateMutex); + if (sShutdown) { + return GMPGenericErr; + } + *aThread = new GMPThreadImpl(); + ++sLiveThreads; return GMPNoErr; } GMPErr RunOnMainThread(GMPTask* aTask) { - if (!aTask) { + if (!aTask || sShutdown) { return GMPGenericErr; } - if (NS_FAILED(NS_DispatchToMainThread(MakeAndAddRef(aTask)))) { + if (NS_FAILED(NS_DispatchToMainThread( + MakeAndAddRef(aTask, /* aCancelOnShutdown */ true)))) { return GMPGenericErr; } @@ -117,7 +140,7 @@ } GMPErr SyncRunOnMainThread(GMPTask* aTask) { - if (!aTask || NS_IsMainThread()) { + if (!aTask || sShutdown || NS_IsMainThread()) { return GMPGenericErr; } @@ -170,7 +193,7 @@ } GMPErr SetTimerOnMainThread(GMPTask* aTask, int64_t aTimeoutMS) { - if (!aTask || !NS_IsMainThread()) { + if (!aTask || sShutdown || !NS_IsMainThread()) { return GMPGenericErr; } GMPTimerChild* timers = sChild->GetGMPTimers(); @@ -201,6 +224,25 @@ aPlatformAPI.getcurrenttime = &GetClock; } +void AddPluginObject() { + StaticMutexAutoLock lock(sPlatformStateMutex); + ++sLivePluginObjects; +} + +void RemovePluginObject() { + StaticMutexAutoLock lock(sPlatformStateMutex); + --sLivePluginObjects; +} + +PlatformShutdownResult ShutdownPlatformAPI() { + MOZ_ASSERT(NS_IsMainThread()); + StaticMutexAutoLock lock(sPlatformStateMutex); + sShutdown = true; + return sLiveThreads == 0 && sLivePluginObjects == 0 + ? PlatformShutdownResult::ReadyToUnload + : PlatformShutdownResult::PluginExecutionOutstanding; +} + void SendFOGData(ipc::ByteBuf&& buf) { if (sChild) { sChild->SendFOGData(std::move(buf)); @@ -220,7 +262,11 @@ GMPThreadImpl::GMPThreadImpl() { MOZ_COUNT_CTOR(GMPThread); } -GMPThreadImpl::~GMPThreadImpl() { MOZ_COUNT_DTOR(GMPThread); } +GMPThreadImpl::~GMPThreadImpl() { + MOZ_COUNT_DTOR(GMPThread); + StaticMutexAutoLock lock(sPlatformStateMutex); + --sLiveThreads; +} void GMPThreadImpl::Post(GMPTask* aTask) { MutexAutoLock lock(mMutex); @@ -233,7 +279,7 @@ } } - RefPtr r = new GMPRunnable(aTask); + RefPtr r = new GMPRunnable(aTask, /* aCancelOnShutdown */ false); mThread.message_loop()->PostTask( NewRunnableMethod("gmp::GMPRunnable::Run", r.get(), &GMPRunnable::Run)); } diff -Nru firefox-esr-140.13.0esr/dom/media/gmp/GMPPlatform.h firefox-esr-140.15.0esr/dom/media/gmp/GMPPlatform.h --- firefox-esr-140.13.0esr/dom/media/gmp/GMPPlatform.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/gmp/GMPPlatform.h 2026-08-26 17:03:41.000000000 +0000 @@ -25,6 +25,18 @@ void InitPlatformAPI(GMPPlatformAPI& aPlatformAPI, GMPChild* aChild); +enum class PlatformShutdownResult { + ReadyToUnload, + PluginExecutionOutstanding, +}; + +PlatformShutdownResult ShutdownPlatformAPI(); + +// Count of live plugin-implemented objects (e.g. codec instances) held by GMP +// child actors. +void AddPluginObject(); +void RemovePluginObject(); + GMPErr RunOnMainThread(GMPTask* aTask); GMPTask* NewGMPTask(std::function&& aFunction); diff -Nru firefox-esr-140.13.0esr/dom/media/gmp/GMPVideoDecoderChild.cpp firefox-esr-140.15.0esr/dom/media/gmp/GMPVideoDecoderChild.cpp --- firefox-esr-140.13.0esr/dom/media/gmp/GMPVideoDecoderChild.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/gmp/GMPVideoDecoderChild.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -30,6 +30,7 @@ // the worker thread. if (mVideoDecoder) { mVideoDecoder->DecodingComplete(); + RemovePluginObject(); } } @@ -41,6 +42,7 @@ MOZ_ASSERT(aDecoder, "Cannot initialize video decoder child without a video decoder!"); mVideoDecoder = aDecoder; + AddPluginObject(); } void GMPVideoDecoderChild::Decoded(GMPVideoi420Frame* aDecodedFrame) { diff -Nru firefox-esr-140.13.0esr/dom/media/gmp/GMPVideoEncoderChild.cpp firefox-esr-140.15.0esr/dom/media/gmp/GMPVideoEncoderChild.cpp --- firefox-esr-140.13.0esr/dom/media/gmp/GMPVideoEncoderChild.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/gmp/GMPVideoEncoderChild.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -26,6 +26,7 @@ // the worker thread. if (mVideoEncoder) { mVideoEncoder->EncodingComplete(); + RemovePluginObject(); } } @@ -37,6 +38,7 @@ MOZ_ASSERT(aEncoder, "Cannot initialize video encoder child without a video encoder!"); mVideoEncoder = aEncoder; + AddPluginObject(); } void GMPVideoEncoderChild::Encoded(GMPVideoEncodedFrame* aEncodedFrame, diff -Nru firefox-esr-140.13.0esr/dom/media/gtest/TestAudioPacketizer.cpp firefox-esr-140.15.0esr/dom/media/gtest/TestAudioPacketizer.cpp --- firefox-esr-140.13.0esr/dom/media/gtest/TestAudioPacketizer.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/gtest/TestAudioPacketizer.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -68,7 +68,7 @@ AutoBuffer b(441 * channels); int16_t prevEnd = seqEnd; seqEnd = Sequence(b.Get(), channels * 441, prevEnd); - ap.Input(b.Get(), 441); + EXPECT_TRUE(NS_SUCCEEDED(ap.Input(b.Get(), 441))); std::unique_ptr out(ap.Output()); IsSequence(out.get(), 441 * channels, prevEnd); } @@ -85,8 +85,8 @@ seqEnd = Sequence(b.Get(), 441 * channels, prevEnd0); int16_t prevEnd1 = seqEnd; seqEnd = Sequence(b1.Get(), 441 * channels, seqEnd); - ap.Input(b.Get(), 441); - ap.Input(b1.Get(), 441); + EXPECT_TRUE(NS_SUCCEEDED(ap.Input(b.Get(), 441))); + EXPECT_TRUE(NS_SUCCEEDED(ap.Input(b1.Get(), 441))); std::unique_ptr out(ap.Output()); std::unique_ptr out2(ap.Output()); IsSequence(out.get(), 441 * channels, prevEnd0); @@ -104,8 +104,8 @@ AutoBuffer b1(480 * channels); prevSeq = Sequence(b.Get(), 480 * channels, prevSeq); prevSeq = Sequence(b1.Get(), 480 * channels, prevSeq); - ap.Input(b.Get(), 480); - ap.Input(b1.Get(), 480); + EXPECT_TRUE(NS_SUCCEEDED(ap.Input(b.Get(), 480))); + EXPECT_TRUE(NS_SUCCEEDED(ap.Input(b1.Get(), 480))); std::unique_ptr out(ap.Output()); std::unique_ptr out2(ap.Output()); IsSequence(out.get(), 441 * channels, prevEnd); @@ -133,7 +133,7 @@ } phase++; } - ap.Input(b.Get(), 128); + EXPECT_TRUE(NS_SUCCEEDED(ap.Input(b.Get(), 128))); while (ap.PacketsAvailable()) { std::unique_ptr packet(ap.Output()); for (uint32_t k = 0; k < ap.mPacketSize; k++) { @@ -151,7 +151,7 @@ AudioPacketizer ap(441, channels); AutoBuffer b(440 * channels); Sequence(b.Get(), 440 * channels); - ap.Input(b.Get(), 440); + EXPECT_TRUE(NS_SUCCEEDED(ap.Input(b.Get(), 440))); EXPECT_EQ(ap.FramesAvailable(), 440U); ap.Clear(); EXPECT_EQ(ap.FramesAvailable(), 0U); @@ -177,7 +177,7 @@ for (int16_t i = 0; i < 10; i++) { AutoBuffer b(inputPacketSize * channels); prevSeq = Sequence(b.Get(), inputPacketSize * channels, prevSeq); - tp.Input(b.Get(), inputPacketSize); + EXPECT_TRUE(NS_SUCCEEDED(tp.Input(b.Get(), inputPacketSize))); while (tp.PacketsAvailable()) { media::TimeUnit ts = tp.Output(packet.Elements()); IsSequence(packet.Elements(), packetSize * channels, prevEnd); diff -Nru firefox-esr-140.13.0esr/dom/media/ipc/MFCDMChild.cpp firefox-esr-140.15.0esr/dom/media/ipc/MFCDMChild.cpp --- firefox-esr-140.13.0esr/dom/media/ipc/MFCDMChild.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/ipc/MFCDMChild.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -200,6 +200,8 @@ MozPromiseHolder& aPromise) { AssertSendable(); + RefPtr promise = aPromise.Ensure(aCallerName); + if (mState == NS_OK) { // mRemotePromise is resolved, send on manager thread. mManagerThread->Dispatch( @@ -215,7 +217,7 @@ }); } - return aPromise.Ensure(aCallerName); + return promise.forget(); } RefPtr MFCDMChild::Init( diff -Nru firefox-esr-140.13.0esr/dom/media/ipc/MFMediaEngineChild.cpp firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineChild.cpp --- firefox-esr-140.13.0esr/dom/media/ipc/MFMediaEngineChild.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineChild.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -59,11 +59,19 @@ MOZ_ASSERT(mMediaEngineId == 0); RefPtr self = this; + RefPtr initPromise = + mInitPromiseHolder.Ensure(__func__); RemoteDecoderManagerChild::LaunchUtilityProcessIfNeeded( RemoteDecodeIn::UtilityProcess_MFMediaEngineCDM) ->Then( mManagerThread, __func__, [self, this, flag = aFlags, info = aInfo](bool) { + mLaunchProcessRequest.Complete(); + if (mShutdown || !mOwner) { + CLOG("Already shut down or no owner, won't bind the actor"); + mInitPromiseHolder.RejectIfExists(NS_ERROR_FAILURE, __func__); + return; + } RefPtr manager = RemoteDecoderManagerChild::GetSingleton( RemoteDecodeIn::UtilityProcess_MFMediaEngineCDM); @@ -113,10 +121,12 @@ ->Track(mInitEngineRequest); }, [self, this](nsresult aResult) { + mLaunchProcessRequest.Complete(); CLOG("SendInitMediaEngine Failed"); self->mInitPromiseHolder.RejectIfExists(NS_ERROR_FAILURE, __func__); - }); - return mInitPromiseHolder.Ensure(__func__); + }) + ->Track(mLaunchProcessRequest); + return initPromise; } mozilla::ipc::IPCResult MFMediaEngineChild::RecvRequestSample(TrackType aType, @@ -200,6 +210,9 @@ mozilla::ipc::IPCResult MFMediaEngineChild::RecvUpdateStatisticData( const StatisticData& aData) { AssertOnManagerThread(); + if (mShutdown || !mOwner) { + return IPC_OK(); + } const uint64_t currentRenderedFrames = mFrameStats->GetPresentedFrames(); const uint64_t newRenderedFrames = GetUpdatedRenderedFrames(aData); // Media engine won't tell us that which stage those dropped frames happened, @@ -278,6 +291,7 @@ } SendShutdown(); mInitPromiseHolder.RejectIfExists(NS_ERROR_FAILURE, __func__); + mLaunchProcessRequest.DisconnectIfExists(); mInitEngineRequest.DisconnectIfExists(); mShutdown = true; } diff -Nru firefox-esr-140.13.0esr/dom/media/ipc/MFMediaEngineChild.h firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineChild.h --- firefox-esr-140.13.0esr/dom/media/ipc/MFMediaEngineChild.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineChild.h 2026-08-26 17:03:42.000000000 +0000 @@ -74,8 +74,10 @@ MozPromiseHolder mInitPromiseHolder; MozPromiseRequestHolder mInitEngineRequest; + MozPromiseRequestHolder mLaunchProcessRequest; - // This is guaranteed always being alive in our lifetime. + // Owned by the state machine which also owns `mOwner`, so this is only + // guaranteed to be alive while `mOwner` is non-null. NotNull const MOZ_NON_OWNING_REF mFrameStats; bool mShutdown = false; diff -Nru firefox-esr-140.13.0esr/dom/media/ipc/MFMediaEngineParent.cpp firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineParent.cpp --- firefox-esr-140.13.0esr/dom/media/ipc/MFMediaEngineParent.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineParent.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -61,9 +61,14 @@ } /* static */ -MFMediaEngineParent* MFMediaEngineParent::GetMediaEngineById(uint64_t aId) { +already_AddRefed MFMediaEngineParent::GetMediaEngineById( + uint64_t aId) { StaticMutexAutoLock lock(sMediaEnginesLock); - return sMediaEngines->Get(aId); + if (!sMediaEngines) { + return nullptr; + } + RefPtr engine = sMediaEngines->Get(aId); + return engine.forget(); } MFMediaEngineParent::MFMediaEngineParent(RemoteDecoderManagerParent* aManager, @@ -85,14 +90,23 @@ MFMediaEngineParent::~MFMediaEngineParent() { LOG("Destoryed MFMediaEngineParent"); + UnregisterMedieEngine(this); DestroyEngineIfExists(); +} + +void MFMediaEngineParent::ActorDestroy(ActorDestroyReason aWhy) { + AssertOnManagerThread(); + LOG("ActorDestroy"); UnregisterMedieEngine(this); + DestroyEngineIfExists(); } void MFMediaEngineParent::DestroyEngineIfExists( const Maybe& aError) { LOG("DestroyEngineIfExists, hasError=%d", aError.isSome()); ENGINE_MARKER("MFMediaEngineParent::DestroyEngineIfExists"); + mMediaEngineEventListener.DisconnectIfExists(); + mRequestSampleListener.DisconnectIfExists(); mMediaEngineNotify = nullptr; mMediaEngineExtension = nullptr; if (mMediaSource) { @@ -109,8 +123,6 @@ LOG_IF_FAILED(mMediaEngine->Shutdown()); mMediaEngine = nullptr; } - mMediaEngineEventListener.DisconnectIfExists(); - mRequestSampleListener.DisconnectIfExists(); if (mDXGIDeviceManager) { mDXGIDeviceManager = nullptr; } @@ -350,6 +362,10 @@ aResolver(0); return IPC_OK(); } + if (MOZ_UNLIKELY(mIsMediaEngineInitialized)) { + MOZ_ASSERT_UNREACHABLE("MFMediaEngine must not be initialized twice"); + return IPC_FAIL(this, "MFMediaEngine must not be initialized twice"); + } // Metadata preload is controlled by content process side before creating // media engine. if (aInfo.preload()) { @@ -358,6 +374,7 @@ } RETURN_PARAM_IF_FAILED( SetMediaInfo(aInfo.mediaInfo(), aInfo.encryptedCustomIdent()), IPC_OK()); + mIsMediaEngineInitialized = true; aResolver(mMediaEngineId); return IPC_OK(); } diff -Nru firefox-esr-140.13.0esr/dom/media/ipc/MFMediaEngineParent.h firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineParent.h --- firefox-esr-140.13.0esr/dom/media/ipc/MFMediaEngineParent.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/ipc/MFMediaEngineParent.h 2026-08-26 17:03:41.000000000 +0000 @@ -42,7 +42,7 @@ using TrackType = TrackInfo::TrackType; - static MFMediaEngineParent* GetMediaEngineById(uint64_t aId); + static already_AddRefed GetMediaEngineById(uint64_t aId); MFMediaEngineStreamWrapper* GetMediaEngineStream( TrackType aType, const CreateDecoderParams& aParam); @@ -62,6 +62,8 @@ mozilla::ipc::IPCResult RecvNotifyEndOfStream(TrackInfo::TrackType aType); mozilla::ipc::IPCResult RecvShutdown(); + void ActorDestroy(ActorDestroyReason aWhy) override; + void Destroy(); private: @@ -116,6 +118,8 @@ MediaEventListener mMediaEngineEventListener; MediaEventListener mRequestSampleListener; bool mIsCreatedMediaEngine = false; + // True once InitMediaEngine has run; initialization happens once per actor. + bool mIsMediaEngineInitialized = false; Microsoft::WRL::ComPtr mDXGIDeviceManager; diff -Nru firefox-esr-140.13.0esr/dom/media/ipc/RemoteDecoderParent.cpp firefox-esr-140.15.0esr/dom/media/ipc/RemoteDecoderParent.cpp --- firefox-esr-140.13.0esr/dom/media/ipc/RemoteDecoderParent.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/ipc/RemoteDecoderParent.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -48,6 +48,12 @@ return IPC_OK(); } + if (mInitAttempted) { + aResolver(MediaResult(NS_ERROR_ALREADY_INITIALIZED, __func__)); + return IPC_OK(); + } + mInitAttempted = true; + RefPtr self = this; mDecoder->Init()->Then( mManagerThread, __func__, diff -Nru firefox-esr-140.13.0esr/dom/media/ipc/RemoteDecoderParent.h firefox-esr-140.15.0esr/dom/media/ipc/RemoteDecoderParent.h --- firefox-esr-140.13.0esr/dom/media/ipc/RemoteDecoderParent.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/ipc/RemoteDecoderParent.h 2026-08-26 17:03:41.000000000 +0000 @@ -61,6 +61,7 @@ // Only be used on Windows when the media engine playback is enabled. const Maybe mMediaEngineId; + bool mInitAttempted = false; bool mShutdown = false; private: diff -Nru firefox-esr-140.13.0esr/dom/media/mediasink/AudioDecoderInputTrack.cpp firefox-esr-140.15.0esr/dom/media/mediasink/AudioDecoderInputTrack.cpp --- firefox-esr-140.13.0esr/dom/media/mediasink/AudioDecoderInputTrack.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/mediasink/AudioDecoderInputTrack.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -80,8 +80,14 @@ mResamplerChannelCount = 0; } if (mInputSampleRate != Graph()->GraphRate()) { - aSegment.ResampleChunks(mResampler, &mResamplerChannelCount, - mInputSampleRate, Graph()->GraphRate()); + nsresult rv = + aSegment.ResampleChunks(mResampler, &mResamplerChannelCount, + mInputSampleRate, Graph()->GraphRate()); + if (NS_FAILED(rv)) { + LOG("Failed to resample audio %u -> %u; dropping segment", + mInputSampleRate, Graph()->GraphRate()); + return false; + } } return aSegment.GetDuration() > 0; } diff -Nru firefox-esr-140.13.0esr/dom/media/platforms/apple/AppleVTDecoder.cpp firefox-esr-140.15.0esr/dom/media/platforms/apple/AppleVTDecoder.cpp --- firefox-esr-140.13.0esr/dom/media/platforms/apple/AppleVTDecoder.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/platforms/apple/AppleVTDecoder.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -91,6 +91,24 @@ AppleVTDecoder::~AppleVTDecoder() { MOZ_COUNT_DTOR(AppleVTDecoder); } RefPtr AppleVTDecoder::Init() { + if (mSession) { + MOZ_ASSERT_UNREACHABLE( + "Cannot initialize decoder again without shutting down"); + return InitPromise::CreateAndReject( + MediaResult(NS_ERROR_ALREADY_INITIALIZED, + RESULT_DETAIL("Decoder initialization already attempted")), + __func__); + } + + if (mFormat) { + MOZ_ASSERT_UNREACHABLE( + "Cannot initialize decoder again after previous initialization failed"); + return InitPromise::CreateAndReject( + MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR, + RESULT_DETAIL("Previous decoder initialization failed")), + __func__); + } + MediaResult rv = InitializeSession(); if (NS_SUCCEEDED(rv)) { diff -Nru firefox-esr-140.13.0esr/dom/media/platforms/apple/AppleVTEncoder.cpp firefox-esr-140.15.0esr/dom/media/platforms/apple/AppleVTEncoder.cpp --- firefox-esr-140.13.0esr/dom/media/platforms/apple/AppleVTEncoder.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/platforms/apple/AppleVTEncoder.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -11,6 +11,8 @@ #include #include +#include + #include "AnnexB.h" #include "H264.h" #include "ImageContainer.h" @@ -386,9 +388,89 @@ dom::GetEnumString(aFormat).get()))); } +static Result MapPixelFormat(gfx::SurfaceFormat aFormat) { + switch (aFormat) { + case gfx::SurfaceFormat::B8G8R8A8: + case gfx::SurfaceFormat::B8G8R8X8: + return kCVPixelFormatType_32BGRA; + case gfx::SurfaceFormat::R8G8B8A8: + case gfx::SurfaceFormat::R8G8B8X8: + return kCVPixelFormatType_32RGBA; + case gfx::SurfaceFormat::R8G8B8: + return kCVPixelFormatType_24RGB; + case gfx::SurfaceFormat::B8G8R8: + return kCVPixelFormatType_24BGR; + case gfx::SurfaceFormat::A8: + return kCVPixelFormatType_OneComponent8; + default: + return Err(MediaResult(NS_ERROR_NOT_IMPLEMENTED, + RESULT_DETAIL("surface format %d is not supported", + static_cast(aFormat)))); + } +} + +static bool CopySurfaceToPixelBuffer(gfx::DataSourceSurface* aSource, + CVPixelBufferRef aDestination) { + gfx::DataSourceSurface::ScopedMap map(aSource, gfx::DataSourceSurface::READ); + if (NS_WARN_IF(!map.IsMapped())) { + LOGE("Failed to map DataSurface"); + return false; + } + + CVReturn rv = CVPixelBufferLockBaseAddress(aDestination, 0); + if (rv != kCVReturnSuccess) { + LOGE("CVPixelBufferLockBaseAddress error: %d", rv); + return false; + } + auto unlockBuffer = + MakeScopeExit([&] { CVPixelBufferUnlockBaseAddress(aDestination, 0); }); + + const gfx::IntSize size = aSource->GetSize(); + const int32_t sourceStride = map.GetStride(); + const size_t destinationStride = CVPixelBufferGetBytesPerRow(aDestination); + const size_t destinationSize = CVPixelBufferGetDataSize(aDestination); + uint8_t* destination = + static_cast(CVPixelBufferGetBaseAddress(aDestination)); + const uint8_t* source = map.GetData(); + if (size.width <= 0 || size.height <= 0 || sourceStride < 0 || !destination || + !source) { + LOGE("Unexpected pixel-buffer layout"); + return false; + } + const size_t height = static_cast(size.height); + const size_t sourceStrideSize = static_cast(sourceStride); + // Positive int32_t widths at up to 4 Bpp fit in macOS's 64-bit size_t. + const size_t rowBytes = static_cast(size.width) * + gfx::BytesPerPixel(aSource->GetFormat()); + if (sourceStrideSize < rowBytes || destinationStride < rowBytes) { + LOGE("Unexpected pixel-buffer layout"); + return false; + } + if (height > destinationSize / destinationStride) { + LOGE("Unexpected pixel-buffer layout"); + return false; + } + const size_t destinationPadding = destinationStride - rowBytes; + for (size_t y = 0; y < height; ++y) { + uint8_t* destinationRow = destination + y * destinationStride; + memcpy(destinationRow, source + y * sourceStrideSize, rowBytes); + if (destinationPadding) { + // Avoid passing uninitialized stride padding to VideoToolbox. + memset(destinationRow + rowBytes, 0, destinationPadding); + } + } + return true; +} + RefPtr AppleVTEncoder::Init() { - MOZ_ASSERT(!mSession, - "Cannot initialize encoder again without shutting down"); + if (mSession) { + MOZ_ASSERT_UNREACHABLE( + "Cannot initialize encoder again without shutting down"); + return InitPromise::CreateAndReject( + MediaResult(NS_ERROR_ALREADY_INITIALIZED, + RESULT_DETAIL("Encoder is already initialized")), + __func__); + } MediaResult r = InitSession(); if (NS_FAILED(r.Code())) { @@ -1012,15 +1094,10 @@ using namespace layers; -static void ReleaseSurface(void* aReleaseRef, const void* aBaseAddress) { - RefPtr released = - dont_AddRef(static_cast(aReleaseRef)); -} - static void ReleaseImage(void* aImageGrip, const void* aDataPtr, size_t aDataSize, size_t aNumOfPlanes, const void** aPlanes) { - (static_cast(aImageGrip))->Release(); + (static_cast(aImageGrip))->Release(); } CVPixelBufferRef AppleVTEncoder::CreateCVPixelBuffer(Image* aSource) { @@ -1058,15 +1135,20 @@ // the encoder. } - if (aSource->GetFormat() == ImageFormat::PLANAR_YCBCR) { - PlanarYCbCrImage* image = aSource->AsPlanarYCbCrImage(); - if (!image || !image->GetData()) { - LOGE("Failed to get PlanarYCbCrImage or its data"); + if (aSource->GetFormat() == ImageFormat::PLANAR_YCBCR || + aSource->GetFormat() == ImageFormat::NV_IMAGE) { + const PlanarYCbCrData* yuv = nullptr; + if (PlanarYCbCrImage* image = aSource->AsPlanarYCbCrImage()) { + yuv = image->GetData(); + } else if (NVImage* image = aSource->AsNVImage()) { + yuv = image->GetData(); + } + if (!yuv) { + LOGE("Failed to get YCbCr data"); return nullptr; } size_t numPlanes = NumberOfPlanes(pixelFormat); - const PlanarYCbCrImage::Data* yuv = image->GetData(); auto ySize = yuv->YDataSize(); auto cbcrSize = yuv->CbCrDataSize(); @@ -1100,19 +1182,18 @@ } CVPixelBufferRef buffer = nullptr; - image->AddRef(); // Grip input buffers. + aSource->AddRef(); CVReturn rv = CVPixelBufferCreateWithPlanarBytes( kCFAllocatorDefault, yuv->mPictureRect.width, yuv->mPictureRect.height, pixelFormat, nullptr /* dataPtr */, 0 /* dataSize */, numPlanes, addresses, widths, heights, strides, ReleaseImage /* releaseCallback */, - image /* releaseRefCon */, nullptr /* pixelBufferAttributes */, + aSource /* releaseRefCon */, nullptr /* pixelBufferAttributes */, &buffer); if (rv == kCVReturnSuccess) { return buffer; - // |image| will be released in |ReleaseImage()|. } LOGE("CVPIxelBufferCreateWithPlanarBytes error"); - image->Release(); + aSource->Release(); return nullptr; } @@ -1128,26 +1209,27 @@ return nullptr; } - gfx::DataSourceSurface::ScopedMap map(dataSurface, - gfx::DataSourceSurface::READ); - if (NS_WARN_IF(!map.IsMapped())) { - LOGE("Failed to map DataSurface"); + auto surfacePfr = MapPixelFormat(dataSurface->GetFormat()); + if (surfacePfr.isErr()) { + MediaResult err = surfacePfr.unwrapErr(); + LOGE("%s", err.Description().get()); return nullptr; } + const gfx::IntSize size = dataSurface->GetSize(); CVPixelBufferRef buffer = nullptr; - gfx::DataSourceSurface* dss = dataSurface.forget().take(); - CVReturn rv = CVPixelBufferCreateWithBytes( - kCFAllocatorDefault, dss->GetSize().Width(), dss->GetSize().Height(), - pixelFormat, map.GetData(), map.GetStride(), ReleaseSurface, dss, nullptr, - &buffer); - if (rv == kCVReturnSuccess) { - return buffer; - // |dss| will be released in |ReleaseSurface()|. - } - LOGE("CVPIxelBufferCreateWithBytes error: %d", rv); - RefPtr released = dont_AddRef(dss); - return nullptr; + CVReturn rv = + CVPixelBufferCreate(kCFAllocatorDefault, size.width, size.height, + surfacePfr.unwrap(), nullptr, &buffer); + if (rv != kCVReturnSuccess) { + LOGE("CVPixelBufferCreate error: %d", rv); + return nullptr; + } + if (!CopySurfaceToPixelBuffer(dataSurface, buffer)) { + CVPixelBufferRelease(buffer); + return nullptr; + } + return buffer; } RefPtr AppleVTEncoder::Drain() { diff -Nru firefox-esr-140.13.0esr/dom/media/platforms/ffmpeg/FFmpegAudioEncoder.cpp firefox-esr-140.15.0esr/dom/media/platforms/ffmpeg/FFmpegAudioEncoder.cpp --- firefox-esr-140.13.0esr/dom/media/platforms/ffmpeg/FFmpegAudioEncoder.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/platforms/ffmpeg/FFmpegAudioEncoder.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -371,7 +371,11 @@ EncodedData output; MediaResult rv = NS_OK; - mPacketizer->Input(audio.data(), audio.Length() / mConfig.mNumberOfChannels); + nsresult inputRv = mPacketizer->Input( + audio.data(), audio.Length() / mConfig.mNumberOfChannels); + if (NS_FAILED(inputRv)) { + return Err(MediaResult(inputRv, "Failed to feed the audio packetizer"_ns)); + } // Dequeue and encode each packet while (mPacketizer->PacketsAvailable() && rv.Code() == NS_OK) { diff -Nru firefox-esr-140.13.0esr/dom/media/platforms/wmf/MFCDMProxy.cpp firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFCDMProxy.cpp --- firefox-esr-140.13.0esr/dom/media/platforms/wmf/MFCDMProxy.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFCDMProxy.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -16,13 +16,14 @@ ("MFCDMProxy=%p, " msg, this, ##__VA_ARGS__)) MFCDMProxy::MFCDMProxy(IMFContentDecryptionModule* aCDM, uint64_t aCDMParentId) - : mCDM(aCDM), mCDMParentId(aCDMParentId) { + : mMutex("MFCDMProxy::mMutex"), mCDM(aCDM), mCDMParentId(aCDMParentId) { LOG("MFCDMProxy created, created by %" PRId64 " MFCDMParent", mCDMParentId); } MFCDMProxy::~MFCDMProxy() { LOG("MFCDMProxy destroyed"); } void MFCDMProxy::Shutdown() { + MutexAutoLock lock(mMutex); if (mTrustedInput) { mTrustedInput = nullptr; } @@ -35,6 +36,10 @@ } HRESULT MFCDMProxy::GetPMPServer(REFIID aRiid, LPVOID* aPMPServerOut) { + MutexAutoLock lock(mMutex); + if (!mCDM) { + return MF_E_SHUTDOWN; + } ComPtr cdmServices; RETURN_IF_FAILED(mCDM.As(&cdmServices)); RETURN_IF_FAILED(cdmServices->GetService(MF_CONTENTDECRYPTIONMODULE_SERVICE, @@ -47,6 +52,7 @@ uint32_t aContentInitDataSize, REFIID aRiid, IUnknown** aInputTrustAuthorityOut) { + MutexAutoLock lock(mMutex); if (mInputTrustAuthorities.count(aStreamId)) { RETURN_IF_FAILED( mInputTrustAuthorities[aStreamId].CopyTo(aInputTrustAuthorityOut)); @@ -76,6 +82,10 @@ HRESULT MFCDMProxy::SetContentEnabler(IUnknown* aRequest, IMFAsyncResult* aResult) { LOG("SetContentEnabler"); + MutexAutoLock lock(mMutex); + if (!mCDM) { + return MF_E_SHUTDOWN; + } ComPtr contentEnabler; RETURN_IF_FAILED(aRequest->QueryInterface(IID_PPV_ARGS(&contentEnabler))); return mCDM->SetContentEnabler(contentEnabler.Get(), aResult); @@ -85,6 +95,7 @@ LOG("OnHardwareContextReset"); // Hardware context reset happens, all the crypto sessions are in invalid // states. So drop everything here. + MutexAutoLock lock(mMutex); mTrustedInput.Reset(); mInputTrustAuthorities.clear(); } diff -Nru firefox-esr-140.13.0esr/dom/media/platforms/wmf/MFCDMProxy.h firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFCDMProxy.h --- firefox-esr-140.13.0esr/dom/media/platforms/wmf/MFCDMProxy.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFCDMProxy.h 2026-08-26 17:03:41.000000000 +0000 @@ -12,6 +12,7 @@ #include #include "MFCDMExtra.h" +#include "mozilla/Mutex.h" #include "nsISupportsImpl.h" namespace mozilla { @@ -55,14 +56,19 @@ private: ~MFCDMProxy(); - Microsoft::WRL::ComPtr mCDM; + // Serialises access to the guarded state below, which is reached from both + // the manager thread and Media Foundation worker threads. + mozilla::Mutex mMutex; + + Microsoft::WRL::ComPtr mCDM + MOZ_GUARDED_BY(mMutex); // The same ITA is always mapping to the same stream Id. std::map> - mInputTrustAuthorities; + mInputTrustAuthorities MOZ_GUARDED_BY(mMutex); - Microsoft::WRL::ComPtr mTrustedInput; + Microsoft::WRL::ComPtr mTrustedInput MOZ_GUARDED_BY(mMutex); const uint64_t mCDMParentId; diff -Nru firefox-esr-140.13.0esr/dom/media/platforms/wmf/MFMediaEngineStream.cpp firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFMediaEngineStream.cpp --- firefox-esr-140.13.0esr/dom/media/platforms/wmf/MFMediaEngineStream.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFMediaEngineStream.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -137,7 +137,7 @@ HRESULT MFMediaEngineStream::RuntimeClassInitialize( uint64_t aStreamId, const TrackInfo& aInfo, bool aIsEncrytpedCustomInit, MFMediaSource* aParentSource) { - mParentSource = aParentSource; + SetParentSource(aParentSource); mTaskQueue = aParentSource->GetTaskQueue(); MOZ_ASSERT(mTaskQueue); mStreamId = aStreamId; @@ -163,14 +163,22 @@ HRESULT MFMediaEngineStream::GenerateStreamDescriptor( ComPtr& aMediaType) { + ComPtr descriptor; + MutexAutoLock lock(mDescriptorMutex); RETURN_IF_FAILED(wmf::MFCreateStreamDescriptor( mStreamId, 1 /* stream amount */, aMediaType.GetAddressOf(), - &mStreamDescriptor)); - RETURN_IF_FAILED( - mStreamDescriptor->GetStreamIdentifier(&mStreamDescriptorId)); + descriptor.GetAddressOf())); + DWORD descriptorId = 0; + RETURN_IF_FAILED(descriptor->GetStreamIdentifier(&descriptorId)); if (IsEncrypted()) { - RETURN_IF_FAILED(mStreamDescriptor->SetUINT32(MF_SD_PROTECTED, 1)); + RETURN_IF_FAILED(descriptor->SetUINT32(MF_SD_PROTECTED, 1)); + } + if (!mStreamDescriptorId) { + mStreamDescriptorId = descriptorId; } + MOZ_ASSERT(mStreamDescriptorId == descriptorId, + "Stream identifier must not change across a config change"); + mStreamDescriptor.Swap(descriptor); return S_OK; } @@ -249,7 +257,7 @@ MOZ_ASSERT(mTaskQueue); Unused << mTaskQueue->Dispatch( NS_NewRunnableFunction("MFMediaEngineStream::Shutdown", [self]() { - self->mParentSource = nullptr; + self->SetParentSource(nullptr); self->mRawDataQueueForFeedingEngine.Reset(); self->mRawDataQueueForGeneratingOutput.Reset(); self->ShutdownCleanUpOnTaskQueue(); @@ -263,16 +271,32 @@ if (IsShutdown()) { return MF_E_SHUTDOWN; } + MutexAutoLock lock(mParentSourceMutex); + if (!mParentSource) { + return MF_E_SHUTDOWN; + } RETURN_IF_FAILED(mParentSource.CopyTo(aMediaSource)); return S_OK; } +ComPtr MFMediaEngineStream::GetParentSource() const { + MutexAutoLock lock(mParentSourceMutex); + return mParentSource; +} + +void MFMediaEngineStream::SetParentSource(MFMediaSource* aParentSource) { + MutexAutoLock lock(mParentSourceMutex); + mParentSource = aParentSource; + SLOG("Parent source %s", aParentSource ? "set" : "cleared"); +} + IFACEMETHODIMP MFMediaEngineStream::GetStreamDescriptor( IMFStreamDescriptor** aStreamDescriptor) { AssertOnMFThreadPool(); if (IsShutdown()) { return MF_E_SHUTDOWN; } + MutexAutoLock lock(mDescriptorMutex); if (!mStreamDescriptor) { SLOG("Hasn't initialized stream descriptor"); return MF_E_NOT_INITIALIZED; @@ -296,7 +320,7 @@ mSampleRequestTokens.push(token); SLOGV("RequestSample, token amount=%zu", mSampleRequestTokens.size()); ReplySampleRequestIfPossible(); - if (!HasEnoughRawData() && mParentSource && !IsEnded()) { + if (!HasEnoughRawData() && GetParentSource() && !IsEnded()) { SendRequestSampleEvent(false /* isEnough */); } })); @@ -351,8 +375,9 @@ bool MFMediaEngineStream::ShouldServeSamples() const { AssertOnTaskQueue(); - return mParentSource && - mParentSource->GetState() == MFMediaSource::State::Started && + ComPtr parentSource = GetParentSource(); + return parentSource && + parentSource->GetState() == MFMediaSource::State::Started && mIsSelected; } @@ -534,7 +559,7 @@ SLOGV("data is %s, queue duration=%" PRId64, aIsEnough ? "enough" : "not enough", mRawDataQueueForFeedingEngine.PreciseDuration()); - mParentSource->mRequestSampleEvent.Notify( + GetParentSource()->mRequestSampleEvent.Notify( SampleRequest{TrackType(), aIsEnough}); } diff -Nru firefox-esr-140.13.0esr/dom/media/platforms/wmf/MFMediaEngineStream.h firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFMediaEngineStream.h --- firefox-esr-140.13.0esr/dom/media/platforms/wmf/MFMediaEngineStream.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/platforms/wmf/MFMediaEngineStream.h 2026-08-26 17:03:41.000000000 +0000 @@ -121,6 +121,10 @@ void ReplySampleRequestIfPossible(); bool ShouldServeSamples() const; + // Return a strong reference to the parent source, thread-safe. + Microsoft::WRL::ComPtr GetParentSource() const; + void SetParentSource(MFMediaSource* aParentSource); + void NotifyNewData(MediaRawData* aSample); void NotifyEndOfStreamInternal(); @@ -146,8 +150,12 @@ // IMFMediaEventQueue is thread-safe. Microsoft::WRL::ComPtr mMediaEventQueue; - Microsoft::WRL::ComPtr mStreamDescriptor; - Microsoft::WRL::ComPtr mParentSource; + Mutex mDescriptorMutex{"MFMediaEngineStream::mDescriptorMutex"}; + Microsoft::WRL::ComPtr mStreamDescriptor + MOZ_GUARDED_BY(mDescriptorMutex); + mutable Mutex mParentSourceMutex{"MFMediaEngineStream::mParentSourceMutex"}; + Microsoft::WRL::ComPtr mParentSource + MOZ_GUARDED_BY(mParentSourceMutex); // This an unique ID retrieved from the IMFStreamDescriptor. DWORD mStreamDescriptorId = 0; diff -Nru firefox-esr-140.13.0esr/dom/media/platforms/wmf/WMFVideoMFTManager.cpp firefox-esr-140.15.0esr/dom/media/platforms/wmf/WMFVideoMFTManager.cpp --- firefox-esr-140.13.0esr/dom/media/platforms/wmf/WMFVideoMFTManager.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/platforms/wmf/WMFVideoMFTManager.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -675,11 +675,25 @@ // Store YCbCr to 3 ID3D11Texture2Ds image = new IMFYCbCrImage(buffer, twoDBuffer, mKnowsCompositor, mImageContainer); - VideoData::SetVideoDataToImage(image, mVideoInfo, b, pictureRegion, false); + if (MediaResult r = VideoData::SetVideoDataToImage(image, mVideoInfo, b, + pictureRegion, false); + NS_FAILED(r)) { + LOG("CreateBasicVideoFrame: failed to set video data to image (D3D11 " + "texture path): %s", + r.Description().get()); + return E_FAIL; + } } else { // Store YCbCr to shmem image = mImageContainer->CreatePlanarYCbCrImage(); - VideoData::SetVideoDataToImage(image, mVideoInfo, b, pictureRegion, true); + if (MediaResult r = VideoData::SetVideoDataToImage(image, mVideoInfo, b, + pictureRegion, true); + NS_FAILED(r)) { + LOG("CreateBasicVideoFrame: failed to set video data to image (shmem " + "path): %s", + r.Description().get()); + return E_FAIL; + } } RefPtr v = VideoData::CreateFromImage( diff -Nru firefox-esr-140.13.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.cpp firefox-esr-140.15.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.cpp --- firefox-esr-140.13.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/platforms/wrappers/MediaChangeMonitor.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -215,8 +215,8 @@ if (H264::DecodeSPSFromExtraData(aExtraData, spsdata) && spsdata.pic_width > 0 && spsdata.pic_height > 0) { H264::EnsureSPSIsSane(spsdata); - mCurrentConfig.mImage.width = spsdata.pic_width; - mCurrentConfig.mImage.height = spsdata.pic_height; + mCurrentConfig.AdoptImageSize( + gfx::IntSize(spsdata.pic_width, spsdata.pic_height)); mCurrentConfig.mDisplay.width = spsdata.display_width; mCurrentConfig.mDisplay.height = spsdata.display_height; mCurrentConfig.mColorDepth = spsdata.ColorDepth(); @@ -429,8 +429,7 @@ mSPS.AppendElements(nalu->mNALU); if (auto rv = H265::DecodeSPSFromSPSNALU(*nalu); rv.isOk()) { const auto sps = rv.unwrap(); - mCurrentConfig.mImage.width = sps.GetImageSize().Width(); - mCurrentConfig.mImage.height = sps.GetImageSize().Height(); + mCurrentConfig.AdoptImageSize(sps.GetImageSize()); if (const auto& vui = sps.vui_parameters; vui && vui->HasValidAspectRatio()) { mCurrentConfig.mDisplay = ApplyPixelAspectRatio( diff -Nru firefox-esr-140.13.0esr/dom/media/webm/WebMDemuxer.cpp firefox-esr-140.15.0esr/dom/media/webm/WebMDemuxer.cpp --- firefox-esr-140.13.0esr/dom/media/webm/WebMDemuxer.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/webm/WebMDemuxer.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -373,19 +373,19 @@ params.transfer_characteristics)); // Picture region, taking into account cropping, before scaling - // to the display size. - unsigned int cropH = params.crop_right + params.crop_left; - unsigned int cropV = params.crop_bottom + params.crop_top; - gfx::IntRect pictureRect(params.crop_left, params.crop_top, - params.width - cropH, params.height - cropV); - - // If the cropping data appears invalid then use the frame data - if (pictureRect.width <= 0 || pictureRect.height <= 0 || - pictureRect.x < 0 || pictureRect.y < 0) { - pictureRect.x = 0; - pictureRect.y = 0; - pictureRect.width = params.width; - pictureRect.height = params.height; + // to the display size. Default to the full frame and apply cropping only + // when it leaves a non-empty region within the frame. + gfx::IntRect pictureRect(0, 0, AssertedCast(params.width), + AssertedCast(params.height)); + uint64_t cropH = + static_cast(params.crop_left) + params.crop_right; + uint64_t cropV = + static_cast(params.crop_top) + params.crop_bottom; + if (cropH < params.width && cropV < params.height) { + pictureRect.x = AssertedCast(params.crop_left); + pictureRect.y = AssertedCast(params.crop_top); + pictureRect.width = AssertedCast(params.width - cropH); + pictureRect.height = AssertedCast(params.height - cropV); } // Validate the container-reported frame and pictureRect sizes. This diff -Nru firefox-esr-140.13.0esr/dom/media/webrtc/MediaEngineWebRTCAudio.cpp firefox-esr-140.15.0esr/dom/media/webrtc/MediaEngineWebRTCAudio.cpp --- firefox-esr-140.13.0esr/dom/media/webrtc/MediaEngineWebRTCAudio.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/webrtc/MediaEngineWebRTCAudio.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -882,8 +882,11 @@ // Packetize our input data into 10ms chunks, deinterleave into planar channel // buffers, process, and append to the right MediaStreamTrack. - mPacketizerInput->Input(mInterleavedBuffer.Elements(), - static_cast(frameCount)); + // frameCount is one graph iteration's worth and the packetizer is drained to + // under one packet each call, so the queued sample count stays small and + // Input always succeeds here. + MOZ_ALWAYS_TRUE(NS_SUCCEEDED(mPacketizerInput->Input( + mInterleavedBuffer.Elements(), static_cast(frameCount)))); // Update mChunksInPacketizer and make sure the precondition for the // Principal-labelling logic still holds. diff -Nru firefox-esr-140.13.0esr/dom/media/webrtc/transportbridge/MediaPipeline.cpp firefox-esr-140.15.0esr/dom/media/webrtc/transportbridge/MediaPipeline.cpp --- firefox-esr-140.13.0esr/dom/media/webrtc/transportbridge/MediaPipeline.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/media/webrtc/transportbridge/MediaPipeline.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -202,7 +202,10 @@ mPacket = MakeUnique(audio_10ms * aChannels); } - mPacketizer->Input(aAudioData, aFrameCount); + // aFrameCount is one graph iteration's worth and the packetizer is drained + // to under one packet every call, with channels capped at two (above), so + // the queued sample count stays small and Input always succeeds here. + MOZ_ALWAYS_TRUE(NS_SUCCEEDED(mPacketizer->Input(aAudioData, aFrameCount))); while (mPacketizer->PacketsAvailable()) { mPacketizer->Output(mPacket.get()); diff -Nru firefox-esr-140.13.0esr/dom/push/PushManager.cpp firefox-esr-140.15.0esr/dom/push/PushManager.cpp --- firefox-esr-140.13.0esr/dom/push/PushManager.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/push/PushManager.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -221,6 +221,7 @@ AssertIsOnMainThread(); nsCOMPtr principal; + nsCOMPtr effectiveStoragePrincipal; { // Bug 1228723: If permission is revoked or an error occurs, the @@ -232,6 +233,8 @@ return NS_OK; } principal = mProxy->GetWorkerPrivate()->GetPrincipal(); + effectiveStoragePrincipal = + mProxy->GetWorkerPrivate()->GetEffectiveStoragePrincipal(); } MOZ_ASSERT(principal); @@ -239,11 +242,14 @@ RefPtr callback = new GetSubscriptionCallback(mProxy, mScope); - PermissionState state; - nsresult rv = GetPermissionState(principal, state); - if (NS_FAILED(rv)) { - callback->OnPushSubscriptionError(NS_ERROR_FAILURE); - return NS_OK; + PermissionState state = PermissionState::Denied; + + if (effectiveStoragePrincipal->OriginAttributesRef() + .mPartitionKey.IsEmpty()) { + if (NS_FAILED(GetPermissionState(principal, state))) { + callback->OnPushSubscriptionError(NS_ERROR_FAILURE); + return NS_OK; + } } if (state != PermissionState::Granted) { @@ -262,6 +268,7 @@ return NS_OK; } + nsresult rv; if (mAction == PushManager::SubscribeAction) { if (mAppServerKey.IsEmpty()) { rv = service->Subscribe(mScope, principal, callback); diff -Nru firefox-esr-140.13.0esr/dom/push/test/mochitest.toml firefox-esr-140.15.0esr/dom/push/test/mochitest.toml --- firefox-esr-140.13.0esr/dom/push/test/mochitest.toml 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/push/test/mochitest.toml 2026-08-26 17:03:41.000000000 +0000 @@ -13,6 +13,7 @@ ["test_data.html"] skip-if = [ "os == 'android'", + "xorigin", # We block cross origin worker subscriptions ] scheme = "https" @@ -40,10 +41,14 @@ ["test_register.html"] skip-if = [ "os == 'android'", + "xorigin", # We block cross origin worker subscriptions ] ["test_register_key.html"] -skip-if = ["os == 'android'"] +skip-if = [ + "os == 'android'", + "xorigin", # We block cross origin worker subscriptions +] scheme = "https" ["test_serviceworker_lifetime.html"] diff -Nru firefox-esr-140.13.0esr/dom/quota/ActorsParent.cpp firefox-esr-140.15.0esr/dom/quota/ActorsParent.cpp --- firefox-esr-140.13.0esr/dom/quota/ActorsParent.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/quota/ActorsParent.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -7214,8 +7214,12 @@ RefPtr originInfo = groupInfo->LockedGetOriginInfo(aOriginMetadata.mOrigin); + // A persisted origin is exempt from group-limit eviction and is + // bound by the global temporary storage limit instead, so it + // reports its own origin usage against that limit. if (originInfo && originInfo->LockedPersisted()) { - return std::pair(mTemporaryStorageUsage, mTemporaryStorageLimit); + return std::pair(originInfo->LockedUsage(), + mTemporaryStorageLimit); } } diff -Nru firefox-esr-140.13.0esr/dom/quota/PrincipalUtils.cpp firefox-esr-140.15.0esr/dom/quota/PrincipalUtils.cpp --- firefox-esr-140.13.0esr/dom/quota/PrincipalUtils.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/quota/PrincipalUtils.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -252,7 +252,7 @@ nsCOMPtr sop = do_QueryInterface(aWindow); QM_TRY(OkIf(sop), Err(NS_ERROR_FAILURE)); - nsCOMPtr principal = sop->GetPrincipal(); + nsCOMPtr principal = sop->GetEffectiveStoragePrincipal(); QM_TRY(OkIf(principal), Err(NS_ERROR_FAILURE)); return GetInfoFromPrincipal(principal); @@ -291,7 +291,7 @@ nsCOMPtr sop = do_QueryInterface(aWindow); QM_TRY(OkIf(sop), Err(NS_ERROR_FAILURE)); - nsCOMPtr principal = sop->GetPrincipal(); + nsCOMPtr principal = sop->GetEffectiveStoragePrincipal(); QM_TRY(OkIf(principal), Err(NS_ERROR_FAILURE)); QM_TRY_RETURN(GetOriginFromPrincipal(principal)); diff -Nru firefox-esr-140.13.0esr/dom/quota/RemoteQuotaObjectParent.cpp firefox-esr-140.15.0esr/dom/quota/RemoteQuotaObjectParent.cpp --- firefox-esr-140.13.0esr/dom/quota/RemoteQuotaObjectParent.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/quota/RemoteQuotaObjectParent.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -27,6 +27,11 @@ MOZ_ASSERT(!mozilla::ipc::IsOnBackgroundThread()); MOZ_ASSERT(!GetCurrentThreadWorkerPrivate()); + QM_TRY(OkIf(aSize >= 0), [&aResult](const auto&) { + *aResult = false; + return IPC_OK(); + }); + *aResult = mCanonicalQuotaObject->MaybeUpdateSize(aSize, aTruncate); return IPC_OK(); } diff -Nru firefox-esr-140.13.0esr/dom/quota/StorageManager.cpp firefox-esr-140.15.0esr/dom/quota/StorageManager.cpp --- firefox-esr-140.13.0esr/dom/quota/StorageManager.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/quota/StorageManager.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -284,7 +284,7 @@ return nullptr; } - nsCOMPtr principal = doc->NodePrincipal(); + nsCOMPtr principal = doc->EffectiveStoragePrincipal(); MOZ_ASSERT(principal); // Storage Standard 7. API @@ -608,7 +608,7 @@ if (mProxy->CleanedUp()) { return true; } - principal = mProxy->GetWorkerPrivate()->GetPrincipal(); + principal = mProxy->GetWorkerPrivate()->GetEffectiveStoragePrincipal(); } MOZ_ASSERT(principal); @@ -635,7 +635,7 @@ if (mProxy->CleanedUp()) { return true; } - principal = mProxy->GetWorkerPrivate()->GetPrincipal(); + principal = mProxy->GetWorkerPrivate()->GetEffectiveStoragePrincipal(); } MOZ_ASSERT(principal); diff -Nru firefox-esr-140.13.0esr/dom/quota/test/xpcshell/test_estimateOrigin.js firefox-esr-140.15.0esr/dom/quota/test/xpcshell/test_estimateOrigin.js --- firefox-esr-140.13.0esr/dom/quota/test/xpcshell/test_estimateOrigin.js 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/quota/test/xpcshell/test_estimateOrigin.js 2026-08-26 17:03:42.000000000 +0000 @@ -70,9 +70,24 @@ info("Verifying origin estimation"); + // A persisted origin is exempt from group-limit eviction and is bound by the + // global limit instead, so it reports its own origin usage (400, not the 700 + // group total) against that global limit. await verifyOriginEstimation( getPrincipal("https://foo2.example2.com"), - 1000, + 400, + globalLimitBytes + ); + + info("Writing to an unrelated group"); + + await fillOrigin(getPrincipal("https://foo1.example3.com"), 500); + + info("Verifying the persisted origin does not observe the unrelated write"); + + await verifyOriginEstimation( + getPrincipal("https://foo2.example2.com"), + 400, globalLimitBytes ); diff -Nru firefox-esr-140.13.0esr/dom/security/nsContentSecurityManager.cpp firefox-esr-140.15.0esr/dom/security/nsContentSecurityManager.cpp --- firefox-esr-140.13.0esr/dom/security/nsContentSecurityManager.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/security/nsContentSecurityManager.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -1300,6 +1300,31 @@ nsCOMPtr loadInfo = aChannel->LoadInfo(); + nsAutoCString triggeringRemoteType; + nsresult rv = loadInfo->GetTriggeringRemoteType(triggeringRemoteType); + NS_ENSURE_SUCCESS(rv, rv); + + // Before getting to document-load content policy checks, validate the + // principal to inherit against the triggering remote type. + EnumSet principalToInheritOptions = { + ValidatePrincipalOptions::AllowNullPtr}; + if (xpc::IsInAutomation()) { + // Bug 2011307, chrome reftests run in content. + principalToInheritOptions += ValidatePrincipalOptions::AllowSystem; + } + if (!ValidatePrincipalCouldPotentiallyBeLoadedBy( + loadInfo->PrincipalToInherit(), triggeringRemoteType, + principalToInheritOptions)) { + if (MOZ_LOG_TEST(sUELLog, LogLevel::Warning)) { + nsAutoCString origin; + loadInfo->PrincipalToInherit()->GetOrigin(origin); + MOZ_LOG(sUELLog, LogLevel::Warning, + ("Unexpected PrincipalToInherit %s for remote %s", origin.get(), + triggeringRemoteType.get())); + } + return NS_ERROR_CONTENT_BLOCKED; + } + // For now, only restrict loads for documents. We currently have no // interesting subresource checks for protocols which are are not fully // handled within the content process. @@ -1320,10 +1345,6 @@ return NS_OK; } - nsAutoCString triggeringRemoteType; - nsresult rv = loadInfo->GetTriggeringRemoteType(triggeringRemoteType); - NS_ENSURE_SUCCESS(rv, rv); - // For now, only restrict loads coming from web remote types. In the future we // may want to expand this a bit. if (!StringBeginsWith(triggeringRemoteType, WEB_REMOTE_TYPE)) { diff -Nru firefox-esr-140.13.0esr/dom/security/nsContentSecurityUtils.cpp firefox-esr-140.15.0esr/dom/security/nsContentSecurityUtils.cpp --- firefox-esr-140.13.0esr/dom/security/nsContentSecurityUtils.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/security/nsContentSecurityUtils.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -1291,7 +1291,6 @@ "chrome://formautofill/content/manageAddresses.xhtml"_ns, "chrome://formautofill/content/manageCreditCards.xhtml"_ns, "chrome://gfxsanity/content/sanityparent.html"_ns, - "chrome://gfxsanity/content/sanitytest.html"_ns, "chrome://global/content/commonDialog.xhtml"_ns, "chrome://global/content/resetProfileProgress.xhtml"_ns, "chrome://layoutdebug/content/layoutdebug.xhtml"_ns, diff -Nru firefox-esr-140.13.0esr/dom/security/test/crashtests/1583044.html firefox-esr-140.15.0esr/dom/security/test/crashtests/1583044.html --- firefox-esr-140.13.0esr/dom/security/test/crashtests/1583044.html 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/security/test/crashtests/1583044.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ - - -Bug 1583044 - - - - diff -Nru firefox-esr-140.13.0esr/dom/security/test/crashtests/crashtests.list firefox-esr-140.15.0esr/dom/security/test/crashtests/crashtests.list --- firefox-esr-140.13.0esr/dom/security/test/crashtests/crashtests.list 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/security/test/crashtests/crashtests.list 2026-08-26 17:03:42.000000000 +0000 @@ -1,2 +1 @@ -load 1583044.html load 1577572.html diff -Nru firefox-esr-140.13.0esr/dom/security/test/general/chrome.toml firefox-esr-140.15.0esr/dom/security/test/general/chrome.toml --- firefox-esr-140.13.0esr/dom/security/test/general/chrome.toml 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/security/test/general/chrome.toml 2026-08-26 17:03:42.000000000 +0000 @@ -10,3 +10,6 @@ ["test_innerhtml_sanitizer.html"] ["test_innerhtml_sanitizer.xhtml"] + +["test_image_protocol_document_context.html"] +skip-if = ["debug"] # Intentional crash in DEBUG builds diff -Nru firefox-esr-140.13.0esr/dom/security/test/general/test_image_protocol_document_context.html firefox-esr-140.15.0esr/dom/security/test/general/test_image_protocol_document_context.html --- firefox-esr-140.13.0esr/dom/security/test/general/test_image_protocol_document_context.html 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/security/test/general/test_image_protocol_document_context.html 2026-08-26 17:03:41.000000000 +0000 @@ -0,0 +1,78 @@ + + + + + Bug 2044313 - page-icon and moz-icon only load in an image context + + + + + + + diff -Nru firefox-esr-140.13.0esr/dom/serviceworkers/ServiceWorkerPrivate.cpp firefox-esr-140.15.0esr/dom/serviceworkers/ServiceWorkerPrivate.cpp --- firefox-esr-140.13.0esr/dom/serviceworkers/ServiceWorkerPrivate.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/serviceworkers/ServiceWorkerPrivate.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -512,6 +512,20 @@ AssertIsOnMainThread(); MOZ_ASSERT(mInfo); + // Initialize() is only ever called from our constructor and there is no retry + // mechanism, so on failure this ServiceWorkerPrivate can never become usable; + // in particular mRemoteWorkerData would stay default-constructed, and its + // OptionalServiceWorkerData union would fatally assert the first time + // RefreshRemoteWorkerData() touched it. Neutralize ourselves by clearing + // mInfo, which is the same state NoteDeadServiceWorkerInfo() establishes and + // which SpawnWorkerIfNeeded() already refuses to act on, so that every + // operation fails cleanly instead. For fetch that means the interception is + // reset and the request goes to the network. + // + // Note that we run from within ServiceWorkerInfo's constructor, so mInfo + // points at a not-yet-fully-constructed object; this only clears the pointer. + auto neutralizeOnFailure = MakeScopeExit([&] { mInfo = nullptr; }); + nsCOMPtr principal = mInfo->Principal(); nsCOMPtr uri; @@ -776,12 +790,14 @@ // This fills in the rest of mRemoteWorkerData.serviceWorkerData(). RefreshRemoteWorkerData(regInfo); + neutralizeOnFailure.release(); return NS_OK; } void ServiceWorkerPrivate::RegenerateClientInfo() { // inductively, this object can only still be alive after Initialize() if the - // mClientInfo was correctly initialized. + // mClientInfo was correctly initialized; a failed Initialize() clears mInfo, + // which stops us from ever spawning a worker and therefore from getting here. MOZ_DIAGNOSTIC_ASSERT(mClientInfo.isSome()); mClientInfo = ClientManager::CreateInfo( @@ -940,9 +956,15 @@ const net::CookieStruct& aCookie, bool aCookieDeleted, RefPtr aRegistration) { AssertIsOnMainThread(); - MOZ_ASSERT(mInfo); MOZ_ASSERT(aRegistration); + // mInfo is cleared both when our ServiceWorkerInfo dies and when Initialize() + // failed, and unlike the ops below we dereference it before delegating to + // SpawnWorkerIfNeeded(), which is where that is normally caught. + if (NS_WARN_IF(!mInfo)) { + return NS_ERROR_DOM_INVALID_STATE_ERR; + } + ServiceWorkerCookieChangeEventOpArgs args; args.cookie() = aCookie; args.deleted() = aCookieDeleted; @@ -984,9 +1006,15 @@ const nsAString& aMessageId, const Maybe>& aData, RefPtr aRegistration) { AssertIsOnMainThread(); - MOZ_ASSERT(mInfo); MOZ_ASSERT(aRegistration); + // mInfo is cleared both when our ServiceWorkerInfo dies and when Initialize() + // failed, and unlike the ops below we dereference it before delegating to + // SpawnWorkerIfNeeded(), which is where that is normally caught. + if (NS_WARN_IF(!mInfo)) { + return NS_ERROR_DOM_INVALID_STATE_ERR; + } + ServiceWorkerPushEventOpArgs args; args.messageId() = nsString(aMessageId); @@ -1572,6 +1600,8 @@ // mInfo must be non-null at this point because NoteDeadServiceWorkerInfo // which zeroes it calls TerminateWorker which cancels our timer which will // ensure we don't get invoked even if the nsTimerEvent is in the event queue. + // The other place which zeroes mInfo, a failed Initialize(), stops us from + // ever spawning a worker and therefore from ever arming this timer. ServiceWorkerManager::LocalizeAndReportToAllClients( mInfo->Scope(), "ServiceWorkerGraceTimeoutTermination", nsTArray{NS_ConvertUTF8toUTF16(mInfo->Scope())}); diff -Nru firefox-esr-140.13.0esr/dom/simpledb/SDBConnection.cpp firefox-esr-140.15.0esr/dom/simpledb/SDBConnection.cpp --- firefox-esr-140.13.0esr/dom/simpledb/SDBConnection.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/simpledb/SDBConnection.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -238,6 +238,12 @@ MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aPrincipal); + if (!BackgroundChild::ValidatePrincipal(aPrincipal, {})) { + MOZ_ASSERT_UNREACHABLE( + "Process is not allowed to access simpleDB for this principal"); + return NS_ERROR_INVALID_ARG; + } + UniquePtr principalInfo(new PrincipalInfo()); nsresult rv = PrincipalToPrincipalInfo(aPrincipal, principalInfo.get()); if (NS_WARN_IF(NS_FAILED(rv))) { diff -Nru firefox-esr-140.13.0esr/dom/storage/LocalStorageManager.cpp firefox-esr-140.15.0esr/dom/storage/LocalStorageManager.cpp --- firefox-esr-140.13.0esr/dom/storage/LocalStorageManager.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/storage/LocalStorageManager.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -153,6 +153,13 @@ nsAutoCString originKey; nsAutoCString quotaKey; + // Throw if this process shouldn't have local storage access for this origin. + if (!mozilla::ipc::BackgroundChild::ValidatePrincipal(aStoragePrincipal, + {})) { + MOZ_ASSERT_UNREACHABLE("ValidatePrincipal failure in GetStorageInternal"); + return NS_ERROR_NOT_AVAILABLE; + } + aStoragePrincipal->OriginAttributesRef().CreateSuffix(originAttrSuffix); nsresult rv = aStoragePrincipal->GetStorageOriginKey(originKey); diff -Nru firefox-esr-140.13.0esr/dom/storage/StorageActivityService.cpp firefox-esr-140.15.0esr/dom/storage/StorageActivityService.cpp --- firefox-esr-140.13.0esr/dom/storage/StorageActivityService.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/storage/StorageActivityService.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -191,6 +191,11 @@ return; } + if (!::mozilla::ipc::BackgroundChild::ValidatePrincipal(aPrincipal, {})) { + MOZ_ASSERT_UNREACHABLE("ValidatePrincipal failure in SendActivityToParent"); + return; + } + actor->SendStorageActivity(principalInfo); } diff -Nru firefox-esr-140.13.0esr/dom/storage/components.conf firefox-esr-140.15.0esr/dom/storage/components.conf --- firefox-esr-140.13.0esr/dom/storage/components.conf 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/storage/components.conf 2026-08-26 17:03:41.000000000 +0000 @@ -12,5 +12,6 @@ 'interfaces': ['nsISessionStorageService'], 'singleton': True, 'type': 'nsISessionStorageService', + 'processes': ProcessSelector.MAIN_PROCESS_ONLY, }, ] diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGLengthList.cpp firefox-esr-140.15.0esr/dom/svg/DOMSVGLengthList.cpp --- firefox-esr-140.13.0esr/dom/svg/DOMSVGLengthList.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGLengthList.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -223,10 +223,13 @@ index = std::min(index, LengthNoFlush()); - AutoChangeLengthListNotifier notifier(this); - // Now that we know we're inserting, keep animVal list in sync as necessary. - MaybeInsertNullInAnimValListAt(index); + // Keep animVal list in sync as necessary. + if (!MaybeInsertNullInAnimValListAt(index)) { + aRv.ThrowIndexSizeError("List too long"); + return nullptr; + } + AutoChangeLengthListNotifier notifier(this); InternalList().InsertItem(index, domItem->ToSVGLength()); MOZ_ALWAYS_TRUE(mItems.InsertElementAt(index, domItem.get(), fallible)); @@ -318,21 +321,26 @@ return result.forget(); } -void DOMSVGLengthList::MaybeInsertNullInAnimValListAt(uint32_t aIndex) { +bool DOMSVGLengthList::MaybeInsertNullInAnimValListAt(uint32_t aIndex) { MOZ_ASSERT(!IsAnimValList(), "call from baseVal to animVal"); if (!AnimListMirrorsBaseList()) { - return; + return true; } - DOMSVGLengthList* animVal = mAList->mAnimVal; - MOZ_ASSERT(animVal, "AnimListMirrorsBaseList() promised a non-null animVal"); + + if (animVal->mItems.Length() >= DOMSVGLength::MaxListIndex()) { + return false; + } + MOZ_ASSERT(animVal->mItems.Length() == mItems.Length(), "animVal list not in sync!"); MOZ_ALWAYS_TRUE(animVal->mItems.InsertElementAt(aIndex, nullptr, fallible)); UpdateListIndicesFromIndex(animVal->mItems, aIndex + 1); + + return true; } void DOMSVGLengthList::MaybeRemoveItemFromAnimValListAt(uint32_t aIndex) { diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGLengthList.h firefox-esr-140.15.0esr/dom/svg/DOMSVGLengthList.h --- firefox-esr-140.13.0esr/dom/svg/DOMSVGLengthList.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGLengthList.h 2026-08-26 17:03:41.000000000 +0000 @@ -109,12 +109,12 @@ /** * This will normally be the same as InternalList().Length(), except if we've - * hit OOM in which case our length will be zero. + * hit OOM in which case our length will be zero or we've hit the maximum + * list length for the DOM list at some point in which case it may be smaller. */ uint32_t LengthNoFlush() const { - MOZ_ASSERT( - mItems.Length() == 0 || mItems.Length() == InternalList().Length(), - "DOM wrapper's list length is out of sync"); + MOZ_ASSERT(mItems.IsEmpty() || mItems.Length() <= InternalList().Length(), + "DOM wrapper's list length is out of sync"); return mItems.Length(); } @@ -185,7 +185,7 @@ /// Returns the DOMSVGLength at aIndex, creating it if necessary. already_AddRefed GetItemAt(uint32_t aIndex); - void MaybeInsertNullInAnimValListAt(uint32_t aIndex); + bool MaybeInsertNullInAnimValListAt(uint32_t aIndex); void MaybeRemoveItemFromAnimValListAt(uint32_t aIndex); // Weak refs to our DOMSVGLength items. The items are friends and take care diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGNumber.cpp firefox-esr-140.15.0esr/dom/svg/DOMSVGNumber.cpp --- firefox-esr-140.13.0esr/dom/svg/DOMSVGNumber.cpp 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGNumber.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -25,10 +25,7 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(DOMSVGNumber) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(DOMSVGNumber) - // We may not belong to a list, so we must null check tmp->mList. - if (tmp->mList) { - tmp->mList->mItems[tmp->mListIndex] = nullptr; - } + tmp->CleanupWeakRefs(); NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER NS_IMPL_CYCLE_COLLECTION_UNLINK(mList) NS_IMPL_CYCLE_COLLECTION_UNLINK(mParent) @@ -72,6 +69,18 @@ mIsAnimValItem(false), mValue(0.0f) {} +void DOMSVGNumber::CleanupWeakRefs() { + // Our mList's weak ref to us must be nulled out when we die (or when we're + // cycle collected), so that we don't leave behind a pointer to + // free / soon-to-be-free memory. If GC has unlinked us using the cycle + // collector code, then that has already happened, and mList is null. + if (mList) { + MOZ_RELEASE_ASSERT(mList->mItems[mListIndex] == this, + "Clearing out the wrong list index...?"); + mList->mItems[mListIndex] = nullptr; + } +} + float DOMSVGNumber::Value() { if (mIsAnimValItem && HasOwner()) { Element()->FlushAnimations(); // May make HasOwner() == false diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGNumber.h firefox-esr-140.15.0esr/dom/svg/DOMSVGNumber.h --- firefox-esr-140.13.0esr/dom/svg/DOMSVGNumber.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGNumber.h 2026-08-26 17:03:42.000000000 +0000 @@ -41,14 +41,14 @@ template friend class AutoChangeNumberListNotifier; - ~DOMSVGNumber() { - // Our mList's weak ref to us must be nulled out when we die. If GC has - // unlinked us using the cycle collector code, then that has already - // happened, and mList is null. - if (mList) { - mList->mItems[mListIndex] = nullptr; - } - } + ~DOMSVGNumber() { CleanupWeakRefs(); } + + /** + * Clears soon-to-be-invalid weak references in external objects that were + * set up during the creation of this object. This should be called during + * destruction and during cycle collection. + */ + void CleanupWeakRefs(); public: NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(DOMSVGNumber) diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGNumberList.cpp firefox-esr-140.15.0esr/dom/svg/DOMSVGNumberList.cpp --- firefox-esr-140.13.0esr/dom/svg/DOMSVGNumberList.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGNumberList.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -209,10 +209,13 @@ index = std::min(index, LengthNoFlush()); - AutoChangeNumberListNotifier notifier(this); - // Now that we know we're inserting, keep animVal list in sync as necessary. - MaybeInsertNullInAnimValListAt(index); + // Keep animVal list in sync as necessary. + if (!MaybeInsertNullInAnimValListAt(index)) { + aRv.ThrowIndexSizeError("List too long"); + return nullptr; + } + AutoChangeNumberListNotifier notifier(this); InternalList().InsertItem(index, domItem->ToSVGNumber()); MOZ_ALWAYS_TRUE(mItems.InsertElementAt(index, domItem, fallible)); @@ -302,21 +305,26 @@ return result.forget(); } -void DOMSVGNumberList::MaybeInsertNullInAnimValListAt(uint32_t aIndex) { +bool DOMSVGNumberList::MaybeInsertNullInAnimValListAt(uint32_t aIndex) { MOZ_ASSERT(!IsAnimValList(), "call from baseVal to animVal"); if (!AnimListMirrorsBaseList()) { - return; + return true; } - DOMSVGNumberList* animVal = mAList->mAnimVal; - MOZ_ASSERT(animVal, "AnimListMirrorsBaseList() promised a non-null animVal"); + + if (animVal->mItems.Length() >= DOMSVGNumber::MaxListIndex()) { + return false; + } + MOZ_ASSERT(animVal->mItems.Length() == mItems.Length(), "animVal list not in sync!"); MOZ_ALWAYS_TRUE(animVal->mItems.InsertElementAt(aIndex, nullptr, fallible)); UpdateListIndicesFromIndex(animVal->mItems, aIndex + 1); + + return true; } void DOMSVGNumberList::MaybeRemoveItemFromAnimValListAt(uint32_t aIndex) { diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGNumberList.h firefox-esr-140.15.0esr/dom/svg/DOMSVGNumberList.h --- firefox-esr-140.13.0esr/dom/svg/DOMSVGNumberList.h 2026-07-15 20:30:29.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGNumberList.h 2026-08-26 17:03:42.000000000 +0000 @@ -104,12 +104,12 @@ /** * This will normally be the same as InternalList().Length(), except if we've - * hit OOM in which case our length will be zero. + * hit OOM in which case our length will be zero or we've hit the maximum + * list length for the DOM list at some point in which case it may be smaller. */ uint32_t LengthNoFlush() const { - MOZ_ASSERT( - mItems.Length() == 0 || mItems.Length() == InternalList().Length(), - "DOM wrapper's list length is out of sync"); + MOZ_ASSERT(mItems.IsEmpty() || mItems.Length() <= InternalList().Length(), + "DOM wrapper's list length is out of sync"); return mItems.Length(); } @@ -177,7 +177,7 @@ /// Returns the DOMSVGNumber at aIndex, creating it if necessary. already_AddRefed GetItemAt(uint32_t aIndex); - void MaybeInsertNullInAnimValListAt(uint32_t aIndex); + bool MaybeInsertNullInAnimValListAt(uint32_t aIndex); void MaybeRemoveItemFromAnimValListAt(uint32_t aIndex); // Weak refs to our DOMSVGNumber items. The items are friends and take care diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGPointList.cpp firefox-esr-140.15.0esr/dom/svg/DOMSVGPointList.cpp --- firefox-esr-140.13.0esr/dom/svg/DOMSVGPointList.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGPointList.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -281,10 +281,13 @@ aIndex = std::min(aIndex, LengthNoFlush()); - AutoChangePointListNotifier notifier(this); - // Now that we know we're inserting, keep animVal list in sync as necessary. - MaybeInsertNullInAnimValListAt(aIndex); + // Keep animVal list in sync as necessary. + if (!MaybeInsertNullInAnimValListAt(aIndex)) { + aRv.ThrowIndexSizeError("List too long"); + return nullptr; + } + AutoChangePointListNotifier notifier(this); InternalList().InsertItem(aIndex, domItem->ToSVGPoint()); MOZ_ALWAYS_TRUE(mItems.InsertElementAt(aIndex, domItem, fallible)); @@ -375,23 +378,28 @@ return result.forget(); } -void DOMSVGPointList::MaybeInsertNullInAnimValListAt(uint32_t aIndex) { +bool DOMSVGPointList::MaybeInsertNullInAnimValListAt(uint32_t aIndex) { MOZ_ASSERT(!IsAnimValList(), "call from baseVal to animVal"); if (!AnimListMirrorsBaseList()) { - return; + return true; } - // The anim val list is in sync with the base val list DOMSVGPointList* animVal = GetDOMWrapperIfExists(InternalAList().GetAnimValKey()); - MOZ_ASSERT(animVal, "AnimListMirrorsBaseList() promised a non-null animVal"); + + if (animVal->mItems.Length() >= DOMSVGPoint::MaxListIndex()) { + return false; + } + MOZ_ASSERT(animVal->mItems.Length() == mItems.Length(), "animVal list not in sync!"); MOZ_ALWAYS_TRUE(animVal->mItems.InsertElementAt(aIndex, nullptr, fallible)); UpdateListIndicesFromIndex(animVal->mItems, aIndex + 1); + + return true; } void DOMSVGPointList::MaybeRemoveItemFromAnimValListAt(uint32_t aIndex) { diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGPointList.h firefox-esr-140.15.0esr/dom/svg/DOMSVGPointList.h --- firefox-esr-140.13.0esr/dom/svg/DOMSVGPointList.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGPointList.h 2026-08-26 17:03:42.000000000 +0000 @@ -130,13 +130,13 @@ static DOMSVGPointList* GetDOMWrapperIfExists(void* aList); /** - * This will normally be the same as InternalList().Length(), except if - * we've hit OOM, in which case our length will be zero. + * This will normally be the same as InternalList().Length(), except if we've + * hit OOM in which case our length will be zero or we've hit the maximum + * list length for the DOM list at some point in which case it may be smaller. */ uint32_t LengthNoFlush() const { - MOZ_ASSERT( - mItems.Length() == 0 || mItems.Length() == InternalList().Length(), - "DOM wrapper's list length is out of sync"); + MOZ_ASSERT(mItems.IsEmpty() || mItems.Length() <= InternalList().Length(), + "DOM wrapper's list length is out of sync"); return mItems.Length(); } @@ -231,7 +231,7 @@ /// Returns the DOMSVGPoint at aIndex, creating it if necessary. already_AddRefed GetItemAt(uint32_t aIndex); - void MaybeInsertNullInAnimValListAt(uint32_t aIndex); + bool MaybeInsertNullInAnimValListAt(uint32_t aIndex); void MaybeRemoveItemFromAnimValListAt(uint32_t aIndex); void RemoveFromTearoffTable(); diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGTransform.cpp firefox-esr-140.15.0esr/dom/svg/DOMSVGTransform.cpp --- firefox-esr-140.13.0esr/dom/svg/DOMSVGTransform.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGTransform.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -41,10 +41,7 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(DOMSVGTransform) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(DOMSVGTransform) - // We may not belong to a list, so we must null check tmp->mList. - if (tmp->mList) { - tmp->mList->mItems[tmp->mListIndex] = nullptr; - } + tmp->CleanupWeakRefs(); NS_IMPL_CYCLE_COLLECTION_UNLINK(mList) NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER NS_IMPL_CYCLE_COLLECTION_UNLINK_END @@ -115,10 +112,17 @@ SVGMatrixTearoffTable().RemoveTearoff(this); NS_RELEASE(matrix); } - // Our mList's weak ref to us must be nulled out when we die. If GC has - // unlinked us using the cycle collector code, then that has already - // happened, and mList is null. + CleanupWeakRefs(); +} + +void DOMSVGTransform::CleanupWeakRefs() { + // Our mList's weak ref to us must be nulled out when we die (or when we're + // cycle collected), so that we don't leave behind a pointer to + // free / soon-to-be-free memory. If GC has unlinked us using the cycle + // collector code, then that has already happened, and mList is null. if (mList) { + MOZ_RELEASE_ASSERT(mList->mItems[mListIndex] == this, + "Clearing out the wrong list index...?"); mList->mItems[mListIndex] = nullptr; } } diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGTransform.h firefox-esr-140.15.0esr/dom/svg/DOMSVGTransform.h --- firefox-esr-140.13.0esr/dom/svg/DOMSVGTransform.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGTransform.h 2026-08-26 17:03:41.000000000 +0000 @@ -131,6 +131,13 @@ protected: ~DOMSVGTransform(); + /** + * Clears soon-to-be-invalid weak references in external objects that were + * set up during the creation of this object. This should be called during + * destruction and during cycle collection. + */ + void CleanupWeakRefs(); + // Interface for SVGMatrix's use friend class dom::SVGMatrix; bool IsAnimVal() const { return mIsAnimValItem; } diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGTransformList.cpp firefox-esr-140.15.0esr/dom/svg/DOMSVGTransformList.cpp --- firefox-esr-140.13.0esr/dom/svg/DOMSVGTransformList.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGTransformList.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -216,10 +216,13 @@ index = std::min(index, LengthNoFlush()); - AutoChangeTransformListNotifier notifier(this); - // Now that we know we're inserting, keep animVal list in sync as necessary. - MaybeInsertNullInAnimValListAt(index); + // Keep animVal list in sync as necessary. + if (!MaybeInsertNullInAnimValListAt(index)) { + error.ThrowIndexSizeError("List too long"); + return nullptr; + } + AutoChangeTransformListNotifier notifier(this); InternalList().InsertItem(index, domItem->ToSVGTransform()); MOZ_ALWAYS_TRUE(mItems.InsertElementAt(index, domItem.get(), fallible)); @@ -349,21 +352,26 @@ return result.forget(); } -void DOMSVGTransformList::MaybeInsertNullInAnimValListAt(uint32_t aIndex) { +bool DOMSVGTransformList::MaybeInsertNullInAnimValListAt(uint32_t aIndex) { MOZ_ASSERT(!IsAnimValList(), "call from baseVal to animVal"); if (!AnimListMirrorsBaseList()) { - return; + return true; } - DOMSVGTransformList* animVal = mAList->mAnimVal; - MOZ_ASSERT(animVal, "AnimListMirrorsBaseList() promised a non-null animVal"); + + if (animVal->mItems.Length() >= DOMSVGTransform::MaxListIndex()) { + return false; + } + MOZ_ASSERT(animVal->mItems.Length() == mItems.Length(), "animVal list not in sync!"); MOZ_ALWAYS_TRUE(animVal->mItems.InsertElementAt(aIndex, nullptr, fallible)); UpdateListIndicesFromIndex(animVal->mItems, aIndex + 1); + + return true; } void DOMSVGTransformList::MaybeRemoveItemFromAnimValListAt(uint32_t aIndex) { diff -Nru firefox-esr-140.13.0esr/dom/svg/DOMSVGTransformList.h firefox-esr-140.15.0esr/dom/svg/DOMSVGTransformList.h --- firefox-esr-140.13.0esr/dom/svg/DOMSVGTransformList.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/svg/DOMSVGTransformList.h 2026-08-26 17:03:41.000000000 +0000 @@ -101,10 +101,11 @@ /** * This will normally be the same as InternalList().Length(), except if we've - * hit OOM in which case our length will be zero. + * hit OOM in which case our length will be zero or we've hit the maximum + * list length for the DOM list at some point in which case it may be smaller. */ uint32_t LengthNoFlush() const { - MOZ_ASSERT(mItems.IsEmpty() || mItems.Length() == InternalList().Length(), + MOZ_ASSERT(mItems.IsEmpty() || mItems.Length() <= InternalList().Length(), "DOM wrapper's list length is out of sync"); return mItems.Length(); } @@ -182,7 +183,7 @@ /// Returns the DOMSVGTransform at aIndex, creating it if necessary. already_AddRefed GetItemAt(uint32_t aIndex); - void MaybeInsertNullInAnimValListAt(uint32_t aIndex); + bool MaybeInsertNullInAnimValListAt(uint32_t aIndex); void MaybeRemoveItemFromAnimValListAt(uint32_t aIndex); // Weak refs to our DOMSVGTransform items. The items are friends and take care diff -Nru firefox-esr-140.13.0esr/dom/webbrowserpersist/PWebBrowserPersistDocument.ipdl firefox-esr-140.15.0esr/dom/webbrowserpersist/PWebBrowserPersistDocument.ipdl --- firefox-esr-140.13.0esr/dom/webbrowserpersist/PWebBrowserPersistDocument.ipdl 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/webbrowserpersist/PWebBrowserPersistDocument.ipdl 2026-08-26 17:03:42.000000000 +0000 @@ -14,6 +14,8 @@ include "mozilla/dom/ReferrerInfoUtils.h"; [RefCounted] using class nsIReferrerInfo from "nsIReferrerInfo.h"; +[RefCounted] using class nsIPrincipal from "nsIPrincipal.h"; +[RefCounted] using class nsIInputStream from "mozilla/ipc/IPCStreamUtils.h"; namespace mozilla { @@ -33,7 +35,6 @@ nsString contentDisposition; uint32_t sessionHistoryCacheKey; uint32_t persistFlags; - PrincipalInfo principal; }; // IPDL doesn't have tuples, so this gives the pair of strings from @@ -68,7 +69,8 @@ // is either a response to the constructor (if it was parent->child) // or sent after it (if it was child->parent). async Attributes(WebBrowserPersistDocumentAttrs aAttrs, - IPCStream? stream); + nsIPrincipal aPrincipal, + nullable nsIInputStream aStream); async InitFailure(nsresult aStatus); child: diff -Nru firefox-esr-140.13.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentChild.cpp firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentChild.cpp --- firefox-esr-140.13.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentChild.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentChild.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -64,7 +64,6 @@ ENSURE(aDocument->GetPersistFlags(&(attrs.persistFlags()))); ENSURE(aDocument->GetPrincipal(getter_AddRefs(principal))); - ENSURE(ipc::PrincipalToPrincipalInfo(principal, &(attrs.principal()))); ENSURE(aDocument->GetReferrerInfo(getter_AddRefs(referrerInfo))); attrs.referrerInfo() = referrerInfo; @@ -76,12 +75,13 @@ ENSURE(aDocument->GetPostData(getter_AddRefs(postDataStream))); #undef ENSURE - Maybe stream; - mozilla::ipc::SerializeIPCStream(postDataStream.forget(), stream, - /* aAllowLazy */ false); + if (!principal) { + SendInitFailure(NS_ERROR_NULL_POINTER); + return; + } mDocument = aDocument; - SendAttributes(attrs, stream); + SendAttributes(attrs, WrapNotNull(principal), postDataStream); } mozilla::ipc::IPCResult WebBrowserPersistDocumentChild::RecvSetPersistFlags( diff -Nru firefox-esr-140.13.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentParent.cpp firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentParent.cpp --- firefox-esr-140.13.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentParent.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentParent.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -7,7 +7,7 @@ #include "WebBrowserPersistDocumentParent.h" #include "mozilla/ipc/IPCStreamUtils.h" -#include "mozilla/dom/PContentParent.h" +#include "mozilla/dom/ContentParent.h" #include "nsIInputStream.h" #include "nsThreadUtils.h" #include "WebBrowserPersistResourcesParent.h" @@ -53,14 +53,15 @@ } mozilla::ipc::IPCResult WebBrowserPersistDocumentParent::RecvAttributes( - const Attrs& aAttrs, const Maybe& aPostStream) { - // Deserialize the postData unconditionally so that fds aren't leaked. - nsCOMPtr postData = - mozilla::ipc::DeserializeIPCStream(aPostStream); - if (!mOnReady || mReflection) { - return IPC_FAIL_NO_REASON(this); + Attrs&& aAttrs, NotNull aPrincipal, + nsIInputStream* aPostStream) { + auto* contentParent = dom::ContentParent::Cast(Manager()); + if (!contentParent->ValidatePrincipal(aPrincipal, {})) { + return IPC_FAIL(this, "invalid principal"); } - mReflection = new WebBrowserPersistRemoteDocument(this, aAttrs, postData); + + mReflection = new WebBrowserPersistRemoteDocument(this, std::move(aAttrs), + aPrincipal, aPostStream); RefPtr reflection = mReflection; mOnReady->OnDocumentReady(reflection); mOnReady = nullptr; diff -Nru firefox-esr-140.13.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentParent.h firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentParent.h --- firefox-esr-140.13.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentParent.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistDocumentParent.h 2026-08-26 17:03:42.000000000 +0000 @@ -7,7 +7,6 @@ #ifndef WebBrowserPersistDocumentParent_h__ #define WebBrowserPersistDocumentParent_h__ -#include "mozilla/Maybe.h" #include "mozilla/PWebBrowserPersistDocumentParent.h" #include "nsCOMPtr.h" #include "nsIWebBrowserPersistDocument.h" @@ -45,8 +44,9 @@ using Attrs = WebBrowserPersistDocumentAttrs; // IPDL methods: - mozilla::ipc::IPCResult RecvAttributes(const Attrs& aAttrs, - const Maybe& aPostStream); + mozilla::ipc::IPCResult RecvAttributes(Attrs&& aAttrs, + NotNull aPrincipal, + nsIInputStream* aPostStream); mozilla::ipc::IPCResult RecvInitFailure(const nsresult& aFailure); PWebBrowserPersistResourcesParent* AllocPWebBrowserPersistResourcesParent(); diff -Nru firefox-esr-140.13.0esr/dom/webbrowserpersist/WebBrowserPersistRemoteDocument.cpp firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistRemoteDocument.cpp --- firefox-esr-140.13.0esr/dom/webbrowserpersist/WebBrowserPersistRemoteDocument.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistRemoteDocument.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -21,16 +21,12 @@ NS_IMPL_ISUPPORTS(WebBrowserPersistRemoteDocument, nsIWebBrowserPersistDocument) WebBrowserPersistRemoteDocument ::WebBrowserPersistRemoteDocument( - WebBrowserPersistDocumentParent* aActor, const Attrs& aAttrs, - nsIInputStream* aPostData) - : mActor(aActor), mAttrs(aAttrs), mPostData(aPostData) { - auto principalOrErr = ipc::PrincipalInfoToPrincipal(mAttrs.principal()); - if (principalOrErr.isOk()) { - mPrincipal = principalOrErr.unwrap(); - } else { - NS_WARNING("Failed to obtain principal!"); - } - + WebBrowserPersistDocumentParent* aActor, Attrs&& aAttrs, + nsIPrincipal* aPrincipal, nsIInputStream* aPostData) + : mActor(aActor), + mAttrs(std::move(aAttrs)), + mPrincipal(aPrincipal), + mPostData(aPostData) { net::CookieJarSettings::Deserialize(mAttrs.cookieJarSettings(), getter_AddRefs(mCookieJarSettings)); } diff -Nru firefox-esr-140.13.0esr/dom/webbrowserpersist/WebBrowserPersistRemoteDocument.h firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistRemoteDocument.h --- firefox-esr-140.13.0esr/dom/webbrowserpersist/WebBrowserPersistRemoteDocument.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/webbrowserpersist/WebBrowserPersistRemoteDocument.h 2026-08-26 17:03:41.000000000 +0000 @@ -42,12 +42,12 @@ Attrs mAttrs; nsCOMPtr mSHEntry; nsCOMPtr mCookieJarSettings; - nsCOMPtr mPostData; nsCOMPtr mPrincipal; + nsCOMPtr mPostData; friend class WebBrowserPersistDocumentParent; WebBrowserPersistRemoteDocument(WebBrowserPersistDocumentParent* aActor, - const Attrs& aAttrs, + Attrs&& aAttrs, nsIPrincipal* aPrincipal, nsIInputStream* aPostData); ~WebBrowserPersistRemoteDocument(); diff -Nru firefox-esr-140.13.0esr/dom/workers/RuntimeService.cpp firefox-esr-140.15.0esr/dom/workers/RuntimeService.cpp --- firefox-esr-140.13.0esr/dom/workers/RuntimeService.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/RuntimeService.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -11,6 +11,7 @@ #include "mozilla/dom/Document.h" #include "nsIObserverService.h" #include "nsIScriptContext.h" +#include "nsISerialEventTarget.h" #include "nsIStreamTransportService.h" #include "nsISupportsPriority.h" #include "nsITimer.h" @@ -151,6 +152,39 @@ // Does not hold an owning reference. Atomic gRuntimeService(nullptr); +// Retries queued-worker scheduling on the event target where the first queued +// worker is allowed to be scheduled. +class ScheduleQueuedWorkerRunnable final : public Runnable { + public: + explicit ScheduleQueuedWorkerRunnable(const nsACString& aDomain) + : Runnable("workerinternals::ScheduleQueuedWorkerRunnable"), + mDomain(aDomain) {} + + NS_IMETHOD Run() override { + RuntimeService* runtime = RuntimeService::GetService(); + if (!runtime) { + return NS_OK; + } + + WorkerPrivate* parent = nullptr; + if (!NS_IsMainThread()) { + parent = GetCurrentThreadWorkerPrivate(); + if (!parent) { + return NS_OK; + } + parent->AssertIsOnWorkerThread(); + } + + runtime->MaybeScheduleQueuedWorker(mDomain, parent); + return NS_OK; + } + + private: + ~ScheduleQueuedWorkerRunnable() = default; + + const nsCString mDomain; +}; + // Only true during the call to Init. bool gRuntimeServiceDuringInit = false; @@ -1219,9 +1253,10 @@ }) .get(); - queued = gMaxWorkersPerDomain && - domainInfo->ActiveWorkerCount() >= gMaxWorkersPerDomain && - !domain.IsEmpty() && !exemptFromPerDomainMax; + queued = gMaxWorkersPerDomain && !domain.IsEmpty() && + !exemptFromPerDomainMax && + (domainInfo->ActiveWorkerCount() >= gMaxWorkersPerDomain || + !domainInfo->mQueuedWorkers.IsEmpty()); if (queued) { domainInfo->mQueuedWorkers.AppendElement(&aWorkerPrivate); @@ -1308,9 +1343,9 @@ AssertIsOnMainThread(); } - const nsCString& domain = aWorkerPrivate.Domain(); + nsCString domain = aWorkerPrivate.Domain(); - WorkerPrivate* queuedWorker = nullptr; + bool shouldScheduleQueuedWorker = false; { MutexAutoLock lock(mMutex); @@ -1337,23 +1372,13 @@ domainInfo->mActiveWorkers.RemoveElement(&aWorkerPrivate); } - // See if there's a queued worker we can schedule. - if (domainInfo->ActiveWorkerCount() < gMaxWorkersPerDomain && - !domainInfo->mQueuedWorkers.IsEmpty()) { - queuedWorker = domainInfo->mQueuedWorkers[0]; - domainInfo->mQueuedWorkers.RemoveElementAt(0); - - if (queuedWorker->GetParent()) { - domainInfo->mChildWorkerCount++; - } else if (queuedWorker->IsServiceWorker()) { - domainInfo->mActiveServiceWorkers.AppendElement(queuedWorker); - } else { - domainInfo->mActiveWorkers.AppendElement(queuedWorker); - } - } + // See if there is a queued worker to schedule after we release mMutex. + shouldScheduleQueuedWorker = + domainInfo->ActiveWorkerCount() < gMaxWorkersPerDomain && + !domainInfo->mQueuedWorkers.IsEmpty(); if (domainInfo->HasNoWorkers()) { - MOZ_ASSERT(domainInfo->mQueuedWorkers.IsEmpty()); + MOZ_ASSERT(!shouldScheduleQueuedWorker); mDomainMap.Remove(domain); } } @@ -1394,8 +1419,72 @@ } } - if (queuedWorker && !ScheduleWorker(*queuedWorker)) { - UnregisterWorker(*queuedWorker); + if (shouldScheduleQueuedWorker) { + MaybeScheduleQueuedWorker(domain, parent); + } +} + +void RuntimeService::MaybeScheduleQueuedWorker(const nsACString& aDomain, + WorkerPrivate* aParent) { + MOZ_ASSERT_DEBUG_OR_FUZZING(aParent ? aParent->IsOnCurrentThread() + : NS_IsMainThread()); + + WorkerPrivate* queuedWorker = nullptr; + nsCOMPtr schedulingTarget; + + { + MutexAutoLock lock(mMutex); + + WorkerDomainInfo* domainInfo; + if (!mDomainMap.Get(aDomain, &domainInfo)) { + return; + } + + const bool shouldScheduleQueuedWorker = + domainInfo->ActiveWorkerCount() < gMaxWorkersPerDomain && + !domainInfo->mQueuedWorkers.IsEmpty(); + + if (!shouldScheduleQueuedWorker) { + return; + } + + WorkerPrivate* firstQueuedWorker = domainInfo->mQueuedWorkers[0]; + + // Preserve queue order. Schedule only if the first queued worker belongs + // to the current thread; otherwise retry on its scheduling target. + WorkerPrivate* queuedParent = firstQueuedWorker->GetParent(); + + if (queuedParent == aParent) { + queuedWorker = firstQueuedWorker; + domainInfo->mQueuedWorkers.RemoveElementAt(0); + + if (aParent) { + domainInfo->mChildWorkerCount++; + } else if (queuedWorker->IsServiceWorker()) { + domainInfo->mActiveServiceWorkers.AppendElement(queuedWorker); + } else { + domainInfo->mActiveWorkers.AppendElement(queuedWorker); + } + MOZ_ASSERT(domainInfo->ActiveWorkerCount() <= +gMaxWorkersPerDomain); + } else { + schedulingTarget = firstQueuedWorker->GetSchedulingEventTarget(); + MOZ_DIAGNOSTIC_ASSERT(schedulingTarget); + } + } + + MOZ_ASSERT_DEBUG_OR_FUZZING(queuedWorker || schedulingTarget); + + if (queuedWorker) { + (void)ScheduleWorker(*queuedWorker); + } + + if (schedulingTarget) { + nsCOMPtr runnable = new ScheduleQueuedWorkerRunnable(aDomain); + nsresult rv = + schedulingTarget->Dispatch(runnable.forget(), NS_DISPATCH_NORMAL); + // Leave the worker queued if dispatch fails; normal cancellation or + // unregistration removes it. + (void)NS_WARN_IF(NS_FAILED(rv)); } } diff -Nru firefox-esr-140.13.0esr/dom/workers/RuntimeService.h firefox-esr-140.15.0esr/dom/workers/RuntimeService.h --- firefox-esr-140.13.0esr/dom/workers/RuntimeService.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/RuntimeService.h 2026-08-26 17:03:42.000000000 +0000 @@ -49,8 +49,10 @@ return mActiveServiceWorkers.Length(); } + // There are no active or queued workers under the domain. bool HasNoWorkers() const { - return ActiveWorkerCount() == 0 && ActiveServiceWorkerCount() == 0; + return ActiveWorkerCount() == 0 && ActiveServiceWorkerCount() == 0 && + mQueuedWorkers.IsEmpty(); } }; @@ -97,6 +99,13 @@ void UnregisterWorker(WorkerPrivate& aWorkerPrivate); + // Try to schedule the first queued worker for aDomain. aParent is the + // current worker when called on a worker thread, or nullptr when called on + // the main thread. The first queued worker is scheduled only when it belongs + // on the current thread; otherwise a retry is dispatched to the right thread. + void MaybeScheduleQueuedWorker(const nsACString& aDomain, + WorkerPrivate* aParent); + void CancelWorkersForWindow(const nsPIDOMWindowInner& aWindow); void UpdateWorkersBackgroundState(const nsPIDOMWindowInner& aWindow, diff -Nru firefox-esr-140.13.0esr/dom/workers/WorkerPrivate.cpp firefox-esr-140.15.0esr/dom/workers/WorkerPrivate.cpp --- firefox-esr-140.13.0esr/dom/workers/WorkerPrivate.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/WorkerPrivate.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -6968,8 +6968,6 @@ } nsIPrincipal* WorkerPrivate::GetEffectiveStoragePrincipal() const { - AssertIsOnWorkerThread(); - if (mLoadInfo.mUseRegularPrincipal) { return mLoadInfo.mPrincipal; } diff -Nru firefox-esr-140.13.0esr/dom/workers/WorkerPrivate.h firefox-esr-140.15.0esr/dom/workers/WorkerPrivate.h --- firefox-esr-140.13.0esr/dom/workers/WorkerPrivate.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/WorkerPrivate.h 2026-08-26 17:03:42.000000000 +0000 @@ -740,6 +740,11 @@ // We would like to have stronger type-system annotated/enforced handling. WorkerPrivate* GetParent() const { return mParent; } + nsISerialEventTarget* GetSchedulingEventTarget() { + WorkerPrivate* parent = GetParent(); + return parent ? parent->ControlEventTarget() : MainThreadEventTarget(); + } + // Returns the top level worker. It can be the current worker if it's the top // level one. WorkerPrivate* GetTopLevelWorker() const { diff -Nru firefox-esr-140.13.0esr/dom/workers/sharedworkers/SharedWorker.cpp firefox-esr-140.15.0esr/dom/workers/sharedworkers/SharedWorker.cpp --- firefox-esr-140.13.0esr/dom/workers/sharedworkers/SharedWorker.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/sharedworkers/SharedWorker.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -11,11 +11,11 @@ #include "mozilla/BasePrincipal.h" #include "mozilla/EventDispatcher.h" #include "mozilla/dom/ClientInfo.h" +#include "mozilla/dom/ContentChild.h" #include "mozilla/dom/Event.h" #include "mozilla/dom/MessageChannel.h" #include "mozilla/dom/MessagePort.h" #include "mozilla/dom/PMessagePort.h" -#include "mozilla/dom/RemoteWorkerManager.h" // RemoteWorkerManager::GetRemoteType #include "mozilla/dom/RemoteWorkerTypes.h" #include "mozilla/dom/SharedWorkerBinding.h" #include "mozilla/dom/SharedWorkerChild.h" @@ -210,6 +210,14 @@ } } + // Throw early if this process would not be allowed to start a shared worker. + if (!BackgroundChild::ValidatePrincipal(loadInfo.mLoadingPrincipal, {})) { + MOZ_ASSERT_UNREACHABLE( + "ValidatePrincipal failure in SharedWorker::Constructor"); + aRv.ThrowSecurityError("SharedWorker access not available."); + return nullptr; + } + PrincipalInfo partitionedPrincipalInfo; if (loadInfo.mPrincipal->Equals(loadInfo.mPartitionedPrincipal)) { partitionedPrincipalInfo = principalInfo; diff -Nru firefox-esr-140.13.0esr/dom/workers/sharedworkers/SharedWorkerService.cpp firefox-esr-140.15.0esr/dom/workers/sharedworkers/SharedWorkerService.cpp --- firefox-esr-140.13.0esr/dom/workers/sharedworkers/SharedWorkerService.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/sharedworkers/SharedWorkerService.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -174,37 +174,29 @@ void SharedWorkerService::GetOrCreateWorkerManagerOnMainThread( nsIEventTarget* aBackgroundEventTarget, ThreadsafeContentParentHandle* aContentParentHandle, - SharedWorkerParent* aActor, const RemoteWorkerData& aData, - uint64_t aWindowID, UniqueMessagePortId& aPortIdentifier) { - MOZ_ASSERT(NS_IsMainThread()); + SharedWorkerParent* aActor, RemoteWorkerData aData, uint64_t aWindowID, + UniqueMessagePortId& aPortIdentifier) { + AssertIsOnMainThread(); MOZ_ASSERT(aBackgroundEventTarget); MOZ_ASSERT(aActor); - RemoteWorkerData copyData = aData; - auto principalOrErr = PrincipalInfoToPrincipal(copyData.principalInfo()); - if (NS_WARN_IF(principalOrErr.isErr())) { + RefPtr contentParent = + aContentParentHandle ? aContentParentHandle->GetContentParent() : nullptr; + if (aContentParentHandle && !contentParent) { ErrorPropagationOnMainThread(aBackgroundEventTarget, aActor, - principalOrErr.unwrapErr()); + NS_ERROR_UNEXPECTED); return; } - nsCOMPtr principal = principalOrErr.unwrap(); - - nsCString currentRemoteType = aContentParentHandle - ? aContentParentHandle->GetRemoteType() - : NOT_REMOTE_TYPE; - auto remoteType = RemoteWorkerManager::GetRemoteType( - principal, WorkerKind::WorkerKindShared, currentRemoteType); - if (NS_WARN_IF(remoteType.isErr())) { + auto principalOrErr = PrincipalInfoToPrincipal(aData.principalInfo()); + if (NS_WARN_IF(principalOrErr.isErr())) { ErrorPropagationOnMainThread(aBackgroundEventTarget, aActor, - remoteType.unwrapErr()); + principalOrErr.unwrapErr()); return; } - copyData.remoteType() = remoteType.unwrap(); - auto partitionedPrincipalOrErr = - PrincipalInfoToPrincipal(copyData.partitionedPrincipalInfo()); + PrincipalInfoToPrincipal(aData.partitionedPrincipalInfo()); if (NS_WARN_IF(partitionedPrincipalOrErr.isErr())) { ErrorPropagationOnMainThread(aBackgroundEventTarget, aActor, partitionedPrincipalOrErr.unwrapErr()); @@ -212,32 +204,67 @@ } auto loadingPrincipalOrErr = - PrincipalInfoToPrincipal(copyData.loadingPrincipalInfo()); + PrincipalInfoToPrincipal(aData.loadingPrincipalInfo()); if (NS_WARN_IF(loadingPrincipalOrErr.isErr())) { ErrorPropagationOnMainThread(aBackgroundEventTarget, aActor, loadingPrincipalOrErr.unwrapErr()); return; } - RefPtr managerHolder; - + nsCOMPtr principal = principalOrErr.unwrap(); nsCOMPtr loadingPrincipal = loadingPrincipalOrErr.unwrap(); nsCOMPtr partitionedPrincipal = partitionedPrincipalOrErr.unwrap(); + // If this is being created by a content process, validate that that process + // would be allowed to load the SharedWorker. + // + // This may be hit for cross-origin loads triggered by web content which would + // fail later in the load process. As those loads would fail anyway, it should + // be OK to fail early here in those cases. + if (contentParent) { + if (NS_WARN_IF(!contentParent->ValidatePrincipal(loadingPrincipal, {})) || + NS_WARN_IF(!contentParent->ValidatePrincipal(principal, {})) || + NS_WARN_IF( + !contentParent->ValidatePrincipal(partitionedPrincipal, {}))) { + ErrorPropagationOnMainThread(aBackgroundEventTarget, aActor, + NS_ERROR_DOM_SECURITY_ERR); + return; + } + } + + // Determine the remote type this SharedWorker should load into, and clobber + // the ununsed remoteType field from the passed-in `RemoteWorkerData` with it. + auto remoteType = RemoteWorkerManager::GetRemoteType( + principal, WorkerKind::WorkerKindShared, + contentParent ? contentParent->GetRemoteType() : NOT_REMOTE_TYPE); + if (NS_WARN_IF(remoteType.isErr())) { + ErrorPropagationOnMainThread(aBackgroundEventTarget, aActor, + remoteType.unwrapErr()); + return; + } + aData.remoteType() = remoteType.unwrap(); + nsCOMPtr effectiveStoragePrincipal = partitionedPrincipal; - if (copyData.useRegularPrincipal()) { + if (aData.useRegularPrincipal()) { effectiveStoragePrincipal = loadingPrincipal; } - // Let's see if there is already a SharedWorker to share. nsCOMPtr resolvedScriptURL = - DeserializeURI(copyData.resolvedScriptURL()); + DeserializeURI(aData.resolvedScriptURL()); + if (!resolvedScriptURL) { + ErrorPropagationOnMainThread(aBackgroundEventTarget, aActor, + NS_ERROR_FAILURE); + return; + } + + // Let's see if there is already a SharedWorker to share. + RefPtr managerHolder; for (SharedWorkerManager* workerManager : mWorkerManagers) { bool matchNameButNotOptions = false; managerHolder = workerManager->MatchOnMainThread( - this, copyData, resolvedScriptURL, loadingPrincipal, + this, aData, resolvedScriptURL, loadingPrincipal, BasePrincipal::Cast(effectiveStoragePrincipal)->OriginAttributesRef(), &matchNameButNotOptions); if (managerHolder) { @@ -254,14 +281,14 @@ // Let's create a new one. if (!managerHolder) { managerHolder = SharedWorkerManager::Create( - this, aBackgroundEventTarget, copyData, loadingPrincipal, + this, aBackgroundEventTarget, aData, loadingPrincipal, BasePrincipal::Cast(effectiveStoragePrincipal)->OriginAttributesRef()); mWorkerManagers.AppendElement(managerHolder->Manager()); } else { // We are attaching the actor to an existing one. if (managerHolder->Manager()->IsSecureContext() != - copyData.isSecureContext()) { + aData.isSecureContext()) { ErrorPropagationOnMainThread(aBackgroundEventTarget, aActor, NS_ERROR_DOM_SECURITY_ERR); return; @@ -272,7 +299,7 @@ new SharedWorkerManagerWrapper(managerHolder.forget()); RefPtr r = new WorkerManagerCreatedRunnable( - wrapper.forget(), aActor, copyData, aWindowID, aPortIdentifier); + wrapper.forget(), aActor, aData, aWindowID, aPortIdentifier); aBackgroundEventTarget->Dispatch(r.forget(), NS_DISPATCH_NORMAL); } diff -Nru firefox-esr-140.13.0esr/dom/workers/sharedworkers/SharedWorkerService.h firefox-esr-140.15.0esr/dom/workers/sharedworkers/SharedWorkerService.h --- firefox-esr-140.13.0esr/dom/workers/sharedworkers/SharedWorkerService.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/sharedworkers/SharedWorkerService.h 2026-08-26 17:03:42.000000000 +0000 @@ -53,8 +53,8 @@ void GetOrCreateWorkerManagerOnMainThread( nsIEventTarget* aBackgroundEventTarget, ThreadsafeContentParentHandle* aContentParentHandle, - SharedWorkerParent* aActor, const RemoteWorkerData& aData, - uint64_t aWindowID, UniqueMessagePortId& aPortIdentifier); + SharedWorkerParent* aActor, RemoteWorkerData aData, uint64_t aWindowID, + UniqueMessagePortId& aPortIdentifier); void RemoveWorkerManagerOnMainThread(SharedWorkerManager* aManager); diff -Nru firefox-esr-140.13.0esr/dom/workers/test/browser.toml firefox-esr-140.15.0esr/dom/workers/test/browser.toml --- firefox-esr-140.13.0esr/dom/workers/test/browser.toml 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/test/browser.toml 2026-08-26 17:03:42.000000000 +0000 @@ -37,12 +37,6 @@ "empty_worker.js", ] -["browser_privilegedmozilla_remoteworker.js"] -support-files = [ - "file_service_worker.js", - "file_service_worker_container.html", -] - ["browser_serviceworker_fetch_new_process.js"] support-files = [ "file_service_worker_fetch_synthetic.js", diff -Nru firefox-esr-140.13.0esr/dom/workers/test/browser_privilegedmozilla_remoteworker.js firefox-esr-140.15.0esr/dom/workers/test/browser_privilegedmozilla_remoteworker.js --- firefox-esr-140.13.0esr/dom/workers/test/browser_privilegedmozilla_remoteworker.js 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/test/browser_privilegedmozilla_remoteworker.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -add_setup(async function () { - await SpecialPowers.pushPrefEnv({ - set: [ - ["browser.tabs.remote.separatePrivilegedMozillaWebContentProcess", true], - ["browser.tabs.remote.separatedMozillaDomains", "example.org"], - ["dom.ipc.processCount.web", 1], - ["dom.ipc.processCount.privilegedmozilla", 1], - ["dom.serviceWorkers.enabled", true], - ["dom.serviceWorkers.testing.enabled", true], - ], - }); -}); - -// This test attempts to verify proper placement of spawned remoteworkers -// by spawning them and then verifying that they were spawned in the expected -// process by way of nsIWorkerDebuggerManager enumeration. -// -// Unfortunately, there's no other way to introspect where a worker global was -// spawned at this time. (devtools just ends up enumerating all workers in all -// processes and we don't want to depend on devtools in this test). -// -// As a result, this test currently only tests situations where it's known that -// a remote worker will be spawned in the same process that is initiating its -// spawning. -// -// This should be enhanced in the future. -add_task(async function test_serviceworker() { - const basePath = "browser/dom/workers/test"; - const pagePath = `${basePath}/file_service_worker_container.html`; - const scriptPath = `${basePath}/file_service_worker.js`; - - Services.ppmm.releaseCachedProcesses(); - - async function runWorkerInProcess() { - function getActiveWorkerURLs() { - const wdm = Cc[ - "@mozilla.org/dom/workers/workerdebuggermanager;1" - ].getService(Ci.nsIWorkerDebuggerManager); - - const workerDebuggerUrls = Array.from( - wdm.getWorkerDebuggerEnumerator() - ).map(wd => { - return wd.url; - }); - - return workerDebuggerUrls; - } - - return new Promise(resolve => { - content.navigator.serviceWorker.ready.then(({ active }) => { - const { port1, port2 } = new content.MessageChannel(); - active.postMessage("webpage->serviceworker", [port2]); - port1.onmessage = evt => { - resolve({ - msg: evt.data, - workerUrls: getActiveWorkerURLs(), - }); - }; - }); - }).then(async res => { - // Unregister the service worker used in this test. - const registration = await content.navigator.serviceWorker.ready; - await registration.unregister(); - return res; - }); - } - - const testCaseList = [ - // TODO: find a reasonable way to test the non-privileged scenario - // (because more than 1 process is usually available and the worker - // can be launched in a different one from the one where the tab - // is running). - /*{ - remoteType: "web", - hostname: "example.com", - },*/ - { - remoteType: "privilegedmozilla", - hostname: `example.org`, - }, - ]; - - for (const testCase of testCaseList) { - const { remoteType, hostname } = testCase; - - info(`Test remote serviceworkers launch selects a ${remoteType} process`); - - const tab = await BrowserTestUtils.openNewForegroundTab({ - gBrowser, - url: `https://${hostname}/${pagePath}`, - }); - - is( - tab.linkedBrowser.remoteType, - remoteType, - `Got the expected remoteType for ${hostname} tab` - ); - - const results = await SpecialPowers.spawn( - tab.linkedBrowser, - [], - runWorkerInProcess - ); - - Assert.deepEqual( - results, - { - msg: "serviceworker-reply", - workerUrls: [`https://${hostname}/${scriptPath}`], - }, - `Got the expected results for ${hostname} tab` - ); - - BrowserTestUtils.removeTab(tab); - } -}); diff -Nru firefox-esr-140.13.0esr/dom/workers/test/browser_serviceworker_fetch_new_process.js firefox-esr-140.15.0esr/dom/workers/test/browser_serviceworker_fetch_new_process.js --- firefox-esr-140.13.0esr/dom/workers/test/browser_serviceworker_fetch_new_process.js 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/test/browser_serviceworker_fetch_new_process.js 2026-08-26 17:03:41.000000000 +0000 @@ -12,12 +12,6 @@ add_setup(async function () { await SpecialPowers.pushPrefEnv({ set: [ - // Set preferences so that opening a page with the origin "example.org" - // will result in a remoteType of "privilegedmozilla" for both the - // page and the ServiceWorker. - ["browser.tabs.remote.separatePrivilegedMozillaWebContentProcess", true], - ["browser.tabs.remote.separatedMozillaDomains", "example.org"], - ["dom.ipc.processCount.privilegedmozilla", 1], ["dom.ipc.processPrelaunch.enabled", false], ["dom.serviceWorkers.enabled", true], ["dom.serviceWorkers.testing.enabled", true], @@ -327,35 +321,32 @@ let initialSums = getSWTelemetrySums(); - // ## Isolated Privileged Process - // Trigger a straightforward intercepted navigation with no request body that - // returns a synthetic response. - await do_test_sw("example.org", "privilegedmozilla", "synthetic", null); - - // Trigger an intercepted navigation with FormData containing an - // which will result in the request body containing a - // RemoteLazyInputStream which will be consumed in the content process by the - // ServiceWorker while generating the synthetic response. const fileBlob = await makeFileBlob(TEST_BLOB_CONTENTS); - await do_test_sw("example.org", "privilegedmozilla", "synthetic", fileBlob); - - // Trigger an intercepted navigation with FormData containing an - // which will result in the request body containing a - // RemoteLazyInputStream which will be relayed back to the parent process - // via direct invocation of fetch() on the event.request but without any - // cloning. - await do_test_sw("example.org", "privilegedmozilla", "fetch", fileBlob); - - // Same as the above but cloning the request before fetching it. - await do_test_sw("example.org", "privilegedmozilla", "clone", fileBlob); // ## Fission Isolation if (Services.appinfo.fissionAutostart) { // ## ServiceWorker isolation const isolateUrl = "example.com"; const isolateRemoteType = `webServiceWorker=https://` + isolateUrl; + // Trigger a straightforward intercepted navigation with no request body + // that returns a synthetic response. await do_test_sw(isolateUrl, isolateRemoteType, "synthetic", null); + + // Trigger an intercepted navigation with FormData containing an + // which will result in the request body containing a + // RemoteLazyInputStream which will be consumed in the content process by + // the ServiceWorker while generating the synthetic response. await do_test_sw(isolateUrl, isolateRemoteType, "synthetic", fileBlob); + + // Trigger an intercepted navigation with FormData containing an + // which will result in the request body containing a + // RemoteLazyInputStream which will be relayed back to the parent process + // via direct invocation of fetch() on the event.request but without any + // cloning. + await do_test_sw(isolateUrl, isolateRemoteType, "fetch", fileBlob); + + // Same as the above but cloning the request before fetching it. + await do_test_sw(isolateUrl, isolateRemoteType, "clone", fileBlob); } let telemetrySums = getSWTelemetrySums(); info(JSON.stringify(telemetrySums)); diff -Nru firefox-esr-140.13.0esr/dom/workers/test/file_service_worker.js firefox-esr-140.15.0esr/dom/workers/test/file_service_worker.js --- firefox-esr-140.13.0esr/dom/workers/test/file_service_worker.js 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/test/file_service_worker.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -self.onmessage = evt => { - evt.ports[0].postMessage("serviceworker-reply"); -}; diff -Nru firefox-esr-140.13.0esr/dom/workers/test/file_service_worker_container.html firefox-esr-140.15.0esr/dom/workers/test/file_service_worker_container.html --- firefox-esr-140.13.0esr/dom/workers/test/file_service_worker_container.html 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/workers/test/file_service_worker_container.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ - - - - - - - - Service Worker Container - - diff -Nru firefox-esr-140.13.0esr/dom/xml/nsXMLContentSink.cpp firefox-esr-140.15.0esr/dom/xml/nsXMLContentSink.cpp --- firefox-esr-140.13.0esr/dom/xml/nsXMLContentSink.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/xml/nsXMLContentSink.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -284,6 +284,7 @@ } } + mDocumentChildren.Clear(); mXSLTProcessor->SetSourceContentModel(source); // Since the processor now holds a reference to us we drop our reference // to it to avoid owning cycles @@ -904,6 +905,9 @@ if (!mDocumentChildren.IsEmpty()) { for (nsIContent* child : mDocumentChildren) { + if (MOZ_UNLIKELY(child->GetParentNode())) { + child->Remove(); + } mDocument->AppendChildTo(child, false, IgnoreErrors()); } mDocumentChildren.Clear(); @@ -925,7 +929,7 @@ } IgnoredErrorResult rv; - mDocument->AppendChildTo(mDocElement, NotifyForDocElement(), rv); + mDocument->AppendChild(*mDocElement, rv); if (rv.Failed()) { // If we return false here, the caller will bail out because it won't // find a parent content node to append to, which is fine. @@ -1001,6 +1005,9 @@ if (!SetDocElement(nameSpaceID, localName, content) && appendContent) { NS_ENSURE_TRUE(parent, NS_ERROR_UNEXPECTED); + if (MOZ_UNLIKELY(content->GetParentNode())) { + content->Remove(); + } parent->AppendChildTo(content, false, IgnoreErrors()); } } diff -Nru firefox-esr-140.13.0esr/dom/xml/nsXMLContentSink.h firefox-esr-140.15.0esr/dom/xml/nsXMLContentSink.h --- firefox-esr-140.13.0esr/dom/xml/nsXMLContentSink.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/xml/nsXMLContentSink.h 2026-08-26 17:03:41.000000000 +0000 @@ -120,7 +120,6 @@ // return TRUE if this call set the root element virtual bool SetDocElement(int32_t aNameSpaceID, nsAtom* aTagName, nsIContent* aContent); - virtual bool NotifyForDocElement() { return true; } virtual nsresult CreateElement(const char16_t** aAtts, uint32_t aAttsCount, mozilla::dom::NodeInfo* aNodeInfo, uint32_t aLineNumber, uint32_t aColumnNumber, diff -Nru firefox-esr-140.13.0esr/dom/xslt/tests/mochitest/test_bug1769155.html firefox-esr-140.15.0esr/dom/xslt/tests/mochitest/test_bug1769155.html --- firefox-esr-140.13.0esr/dom/xslt/tests/mochitest/test_bug1769155.html 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/dom/xslt/tests/mochitest/test_bug1769155.html 2026-08-26 17:03:42.000000000 +0000 @@ -38,7 +38,7 @@ }); SpecialPowers.spawn(win, [xml], value => { - content.location = URL.createObjectURL(new Blob([ value ], { type: "application/xml" })); + content.location = content.URL.createObjectURL(new Blob([ value ], { type: "application/xml" })); }); await redirected; diff -Nru firefox-esr-140.13.0esr/editor/libeditor/EditorBase.cpp firefox-esr-140.15.0esr/editor/libeditor/EditorBase.cpp --- firefox-esr-140.13.0esr/editor/libeditor/EditorBase.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/editor/libeditor/EditorBase.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -313,7 +313,7 @@ // During edit action, selection is cached. But this selection is invalid // now since selection controller is updated, so we have to update this // cache. - Selection* selection = aSelectionController.GetSelection( + RefPtr selection = aSelectionController.GetSelection( nsISelectionController::SELECTION_NORMAL); NS_WARNING_ASSERTION(selection, "SelectionController::GetSelection() failed"); diff -Nru firefox-esr-140.13.0esr/editor/libeditor/HTMLEditor.cpp firefox-esr-140.15.0esr/editor/libeditor/HTMLEditor.cpp --- firefox-esr-140.13.0esr/editor/libeditor/HTMLEditor.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/editor/libeditor/HTMLEditor.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -7614,7 +7614,7 @@ } // Compute current editing host. - Element* const editingHost = ComputeEditingHost(); + const RefPtr editingHost = ComputeEditingHost(); if (NS_WARN_IF(!editingHost)) { return; } diff -Nru firefox-esr-140.13.0esr/editor/libeditor/HTMLEditorDataTransfer.cpp firefox-esr-140.15.0esr/editor/libeditor/HTMLEditorDataTransfer.cpp --- firefox-esr-140.13.0esr/editor/libeditor/HTMLEditorDataTransfer.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/editor/libeditor/HTMLEditorDataTransfer.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -1359,12 +1359,8 @@ aLinkElement, aPointToPutCaret, SplitAtEdges::eDoNotCreateEmptyContainer); if (MOZ_UNLIKELY(splitLinkResult.isErr())) { - if (splitLinkResult.inspectErr() == NS_ERROR_EDITOR_DESTROYED) { - NS_WARNING("HTMLEditor::SplitNodeDeepWithTransaction() failed"); - return NS_ERROR_EDITOR_DESTROYED; - } - NS_WARNING( - "HTMLEditor::SplitNodeDeepWithTransaction() failed, but ignored"); + NS_WARNING("HTMLEditor::SplitNodeDeepWithTransaction() failed"); + return splitLinkResult.unwrapErr(); } if (nsIContent* previousContentOfSplitPoint = diff -Nru firefox-esr-140.13.0esr/editor/libeditor/HTMLEditorDeleteHandler.cpp firefox-esr-140.15.0esr/editor/libeditor/HTMLEditorDeleteHandler.cpp --- firefox-esr-140.13.0esr/editor/libeditor/HTMLEditorDeleteHandler.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/editor/libeditor/HTMLEditorDeleteHandler.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -1230,7 +1230,7 @@ AutoClonedSelectionRangeArray& aRangesToDelete) const { MOZ_ASSERT(IsEditActionDataAvailable()); - Element* editingHost = ComputeEditingHost(); + RefPtr editingHost = ComputeEditingHost(); if (!editingHost) { aRangesToDelete.RemoveAllRanges(); return NS_ERROR_EDITOR_NO_EDITABLE_RANGE; diff -Nru firefox-esr-140.13.0esr/editor/libeditor/HTMLTableEditor.cpp firefox-esr-140.15.0esr/editor/libeditor/HTMLTableEditor.cpp --- firefox-esr-140.13.0esr/editor/libeditor/HTMLTableEditor.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/editor/libeditor/HTMLTableEditor.cpp 2026-08-26 17:03:41.000000000 +0000 @@ -723,7 +723,7 @@ } // Otherwise, insert columns immediately after the previous column. - Element* previousCellElement = + RefPtr previousCellElement = aPointToInsert.IsEndOfContainer() ? HTMLEditUtils::GetLastTableCellElementChild( *aPointToInsert.ContainerAs()) diff -Nru firefox-esr-140.13.0esr/extensions/auth/nsAuthSSPI.cpp firefox-esr-140.15.0esr/extensions/auth/nsAuthSSPI.cpp --- firefox-esr-140.13.0esr/extensions/auth/nsAuthSSPI.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/extensions/auth/nsAuthSSPI.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -184,8 +184,9 @@ LOG((" nsAuthSSPI::Init\n")); mIsFirst = true; - mCertDERLength = 0; + free(mCertDERData); mCertDERData = nullptr; + mCertDERLength = 0; // The caller must supply a service name to be used. (For why we now require // a service name for NTLM, see bug 487872.) @@ -272,27 +273,132 @@ return NS_OK; } +nsresult nsAuthSSPI::MakeChannelBindings(mozilla::UniqueFreePtr& aBuffer, + uint32_t& aBufferLength) { + // String for end-point bindings. + const char end_point[] = "tls-server-end-point:"; + const uint32_t end_point_length = sizeof(end_point) - 1; + + // Default to SHA256 for compatibility, but detect SHA384 and SHA512 + uint32_t hashAlgorithm = nsICryptoHash::SHA256; + uint32_t hashSize = 32; // SHA256 hash size + + // Compute the hash size. + [&]() { + if (!mozilla::StaticPrefs::network_auth_sspi_detect_hash()) { + // This check only exists to make sure that the hash algorithm check + // doesn't break previous working behaviour. + return; + } + using namespace mozilla::pkix; + Input certDER; + + mozilla::pkix::Result pkixResult = + certDER.Init(static_cast(mCertDERData), mCertDERLength); + if (pkixResult != Success) { + return; + } + + BackCert cert(certDER, EndEntityOrCA::MustBeEndEntity, nullptr); + pkixResult = cert.Init(); + if (pkixResult != Success) { + return; + } + + // Parse the signature algorithm from the signed data + der::PublicKeyAlgorithm publicKeyAlg; + DigestAlgorithm digestAlg; + Reader signatureAlgorithmReader(cert.GetSignedData().algorithm); + pkixResult = der::SignatureAlgorithmIdentifierValue( + signatureAlgorithmReader, publicKeyAlg, digestAlg); + + if (pkixResult != Success) { + return; + } + // Map digest algorithms to hash algorithms for Extended Protection + switch (digestAlg) { + case DigestAlgorithm::sha384: + hashAlgorithm = nsICryptoHash::SHA384; + hashSize = 48; // SHA384 hash size + break; + case DigestAlgorithm::sha512: + hashAlgorithm = nsICryptoHash::SHA512; + hashSize = 64; // SHA512 hash size + break; + case DigestAlgorithm::sha256: + default: + // Use SHA256 as default for compatibility + hashAlgorithm = nsICryptoHash::SHA256; + hashSize = 32; + break; + } + }(); + + // Create Endpoint Binding structure with correct size + SEC_CHANNEL_BINDINGS endpointBinding; + endpointBinding.dwInitiatorAddrType = 0; + endpointBinding.cbInitiatorLength = 0; + endpointBinding.dwInitiatorOffset = 0; + endpointBinding.dwAcceptorAddrType = 0; + endpointBinding.cbAcceptorLength = 0; + endpointBinding.dwAcceptorOffset = 0; + endpointBinding.cbApplicationDataLength = hashSize + end_point_length; + endpointBinding.dwApplicationDataOffset = sizeof(SEC_CHANNEL_BINDINGS); + + aBufferLength = endpointBinding.cbApplicationDataLength + + endpointBinding.dwApplicationDataOffset; + aBuffer.reset(static_cast(moz_xmalloc(aBufferLength))); + + // Helper to write in the memory block that stores the CBT + char* sspi_cbt_ptr = aBuffer.get(); + + memcpy(sspi_cbt_ptr, &endpointBinding, + endpointBinding.dwApplicationDataOffset); + sspi_cbt_ptr += endpointBinding.dwApplicationDataOffset; + + memcpy(sspi_cbt_ptr, end_point, end_point_length); + sspi_cbt_ptr += end_point_length; + + nsAutoCString hashString; + nsresult rv = NS_ERROR_FAILURE; + + nsCOMPtr crypto; + crypto = do_CreateInstance(NS_CRYPTO_HASH_CONTRACTID, &rv); + if (NS_SUCCEEDED(rv)) { + rv = crypto->Init(hashAlgorithm); + } + if (NS_SUCCEEDED(rv)) { + rv = crypto->Update((unsigned char*)mCertDERData, mCertDERLength); + } + if (NS_SUCCEEDED(rv)) rv = crypto->Finish(false, hashString); + + if (NS_FAILED(rv)) { + return rv; + } + + // Store the computed hash in memory right after the Endpoint + // structure and the "tls-server-end-point:" char array + memcpy(sspi_cbt_ptr, hashString.get(), hashSize); + + return NS_OK; +} + // The arguments inToken and inTokenLen are used to pass in the server // certificate (when available) in the first call of the function. The // second time these arguments hold an input token. NS_IMETHODIMP nsAuthSSPI::GetNextToken(const void* inToken, uint32_t inTokenLen, void** outToken, uint32_t* outTokenLen) { - // String for end-point bindings. - const char end_point[] = "tls-server-end-point:"; - const int end_point_length = sizeof(end_point) - 1; - SECURITY_STATUS rc; MS_TimeStamp ignored; DWORD ctxAttr, ctxReq = 0; - CtxtHandle* ctxIn; + CtxtHandle* ctxIn = nullptr; SecBufferDesc ibd, obd; // Optional second input buffer for the CBT (Channel Binding Token) SecBuffer ib[2], ob; - // Pointer to the block of memory that stores the CBT - char* sspi_cbt = nullptr; - SEC_CHANNEL_BINDINGS pendpoint_binding; + // Block of memory that stores the CBT + mozilla::UniqueFreePtr sspi_cbt; LOG(("entering nsAuthSSPI::GetNextToken()\n")); @@ -304,6 +410,10 @@ if (mServiceFlags & REQ_DELEGATE) ctxReq |= ISC_REQ_DELEGATE; if (mServiceFlags & REQ_MUTUAL_AUTH) ctxReq |= ISC_REQ_MUTUAL_AUTH; + ibd.ulVersion = SECBUFFER_VERSION; + ibd.cBuffers = 0; + ibd.pBuffers = ib; + if (inToken) { if (mIsFirst) { // First time if it comes with a token, @@ -322,142 +432,11 @@ LOG(("Cannot restart authentication sequence!")); return NS_ERROR_UNEXPECTED; } - ctxIn = nullptr; // The certificate needs to be erased before being passed // to InitializeSecurityContextW(). inToken = nullptr; inTokenLen = 0; } else { - ibd.ulVersion = SECBUFFER_VERSION; - ibd.cBuffers = 0; - ibd.pBuffers = ib; - - // If we have stored a certificate, the Channel Binding Token - // needs to be generated and sent in the first input buffer. - if (mCertDERLength > 0) { - // Default to SHA256 for compatibility, but detect SHA384 and SHA512 - uint32_t hashAlgorithm = nsICryptoHash::SHA256; - uint32_t hashSize = 32; // SHA256 hash size - - // Compute the hash size. - [&]() { - if (!mozilla::StaticPrefs::network_auth_sspi_detect_hash()) { - // This check only exists to make sure that the hash algorithm check - // doesn't break previous working behaviour. - return; - } - using namespace mozilla::pkix; - Input certDER; - - mozilla::pkix::Result pkixResult = certDER.Init( - static_cast(mCertDERData), mCertDERLength); - if (pkixResult != Success) { - return; - } - - BackCert cert(certDER, EndEntityOrCA::MustBeEndEntity, nullptr); - pkixResult = cert.Init(); - if (pkixResult != Success) { - return; - } - - // Parse the signature algorithm from the signed data - der::PublicKeyAlgorithm publicKeyAlg; - DigestAlgorithm digestAlg; - Reader signatureAlgorithmReader(cert.GetSignedData().algorithm); - pkixResult = der::SignatureAlgorithmIdentifierValue( - signatureAlgorithmReader, publicKeyAlg, digestAlg); - - if (pkixResult != Success) { - return; - } - // Map digest algorithms to hash algorithms for Extended Protection - switch (digestAlg) { - case DigestAlgorithm::sha384: - hashAlgorithm = nsICryptoHash::SHA384; - hashSize = 48; // SHA384 hash size - break; - case DigestAlgorithm::sha512: - hashAlgorithm = nsICryptoHash::SHA512; - hashSize = 64; // SHA512 hash size - break; - case DigestAlgorithm::sha256: - default: - // Use SHA256 as default for compatibility - hashAlgorithm = nsICryptoHash::SHA256; - hashSize = 32; - break; - } - }(); - - // Create Endpoint Binding structure with correct size - const int cbt_size = hashSize + end_point_length; - pendpoint_binding.dwInitiatorAddrType = 0; - pendpoint_binding.cbInitiatorLength = 0; - pendpoint_binding.dwInitiatorOffset = 0; - pendpoint_binding.dwAcceptorAddrType = 0; - pendpoint_binding.cbAcceptorLength = 0; - pendpoint_binding.dwAcceptorOffset = 0; - pendpoint_binding.cbApplicationDataLength = cbt_size; - pendpoint_binding.dwApplicationDataOffset = - sizeof(SEC_CHANNEL_BINDINGS); - - // Then add it to the array of sec buffers accordingly. - ib[ibd.cBuffers].BufferType = SECBUFFER_CHANNEL_BINDINGS; - ib[ibd.cBuffers].cbBuffer = pendpoint_binding.cbApplicationDataLength + - pendpoint_binding.dwApplicationDataOffset; - - sspi_cbt = (char*)moz_xmalloc(ib[ibd.cBuffers].cbBuffer); - - // Helper to write in the memory block that stores the CBT - char* sspi_cbt_ptr = sspi_cbt; - - ib[ibd.cBuffers].pvBuffer = sspi_cbt; - ibd.cBuffers++; - - memcpy(sspi_cbt_ptr, &pendpoint_binding, - pendpoint_binding.dwApplicationDataOffset); - sspi_cbt_ptr += pendpoint_binding.dwApplicationDataOffset; - - memcpy(sspi_cbt_ptr, end_point, end_point_length); - sspi_cbt_ptr += end_point_length; - - nsAutoCString hashString; - nsresult rv = NS_ERROR_FAILURE; - - nsCOMPtr crypto; - crypto = do_CreateInstance(NS_CRYPTO_HASH_CONTRACTID, &rv); - if (NS_SUCCEEDED(rv)) { - rv = crypto->Init(hashAlgorithm); - } - if (NS_SUCCEEDED(rv)) { - rv = crypto->Update((unsigned char*)mCertDERData, mCertDERLength); - } - if (NS_SUCCEEDED(rv)) rv = crypto->Finish(false, hashString); - - if (NS_FAILED(rv)) { - free(mCertDERData); - mCertDERData = nullptr; - mCertDERLength = 0; - free(sspi_cbt); - return rv; - } - - // Store the computed hash in memory right after the Endpoint - // structure and the "tls-server-end-point:" char array - memcpy(sspi_cbt_ptr, hashString.get(), hashSize); - - // Free memory used to store the server certificate - free(mCertDERData); - mCertDERData = nullptr; - mCertDERLength = 0; - } // End of CBT computation. - - // We always need this SECBUFFER. - ib[ibd.cBuffers].BufferType = SECBUFFER_TOKEN; - ib[ibd.cBuffers].cbBuffer = inTokenLen; - ib[ibd.cBuffers].pvBuffer = (void*)inToken; - ibd.cBuffers++; ctxIn = &mCtxt; } } else { // First time and without a token (no server certificate) @@ -469,10 +448,36 @@ LOG(("Cannot restart authentication sequence!")); return NS_ERROR_UNEXPECTED; } - ctxIn = nullptr; mIsFirst = false; } + // If we have stored a certificate, the Channel Binding Token needs to be + // generated and sent in the first input buffer. Kerberos carries the AP-REQ + // in the very first token, so for SPNEGO the bindings have to be attached + // from the initial call on. Raw NTLM instead carries them in message 3, + // generated on a continuation call, so that package keeps sending them only + // once a context exists. + bool haveContext = mCtxt.dwLower || mCtxt.dwUpper; + if (mCertDERLength > 0 && (haveContext || mPackage != PACKAGE_TYPE_NTLM)) { + uint32_t cbtLength = 0; + nsresult rv = MakeChannelBindings(sspi_cbt, cbtLength); + if (NS_FAILED(rv)) { + return rv; + } + + ib[ibd.cBuffers].BufferType = SECBUFFER_CHANNEL_BINDINGS; + ib[ibd.cBuffers].cbBuffer = cbtLength; + ib[ibd.cBuffers].pvBuffer = sspi_cbt.get(); + ibd.cBuffers++; + } + + if (inToken) { + ib[ibd.cBuffers].BufferType = SECBUFFER_TOKEN; + ib[ibd.cBuffers].cbBuffer = inTokenLen; + ib[ibd.cBuffers].pvBuffer = (void*)inToken; + ibd.cBuffers++; + } + obd.ulVersion = SECBUFFER_VERSION; obd.cBuffers = 1; obd.pBuffers = &ob; @@ -486,15 +491,13 @@ rc = (sspi->InitializeSecurityContextW)( &mCred, ctxIn, sn, ctxReq, 0, SECURITY_NATIVE_DREP, - inToken ? &ibd : nullptr, 0, &mCtxt, &obd, &ctxAttr, &ignored); + ibd.cBuffers ? &ibd : nullptr, 0, &mCtxt, &obd, &ctxAttr, &ignored); if (rc == SEC_I_CONTINUE_NEEDED || rc == SEC_E_OK) { if (rc == SEC_E_OK) LOG(("InitializeSecurityContext: succeeded.\n")); else LOG(("InitializeSecurityContext: continue.\n")); - if (sspi_cbt) free(sspi_cbt); - if (!ob.cbBuffer) { free(ob.pvBuffer); ob.pvBuffer = nullptr; diff -Nru firefox-esr-140.13.0esr/extensions/auth/nsAuthSSPI.h firefox-esr-140.15.0esr/extensions/auth/nsAuthSSPI.h --- firefox-esr-140.13.0esr/extensions/auth/nsAuthSSPI.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/extensions/auth/nsAuthSSPI.h 2026-08-26 17:03:42.000000000 +0000 @@ -9,6 +9,7 @@ #include "nsAuth.h" #include "nsIAuthModule.h" #include "nsString.h" +#include "mozilla/UniquePtrExtensions.h" #include @@ -43,6 +44,11 @@ private: nsresult MakeSN(const nsACString& principal, nsCString& result); + // Builds the SEC_CHANNEL_BINDINGS blob describing the "tls-server-end-point" + // binding for the server certificate stored in mCertDERData. + nsresult MakeChannelBindings(mozilla::UniqueFreePtr& aBuffer, + uint32_t& aBufferLength); + CredHandle mCred; CtxtHandle mCtxt; nsCString mServiceName; diff -Nru firefox-esr-140.13.0esr/extensions/auth/nsHttpNegotiateAuth.cpp firefox-esr-140.15.0esr/extensions/auth/nsHttpNegotiateAuth.cpp --- firefox-esr-140.13.0esr/extensions/auth/nsHttpNegotiateAuth.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/extensions/auth/nsHttpNegotiateAuth.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -26,6 +26,7 @@ #include "nsIURI.h" #include "nsCOMPtr.h" #include "nsString.h" +#include "nsTArray.h" #include "nsNetCID.h" #include "nsProxyRelease.h" #include "plbase64.h" @@ -42,6 +43,12 @@ #include "mozilla/ClearOnShutdown.h" #include "mozilla/net/DNS.h" #include "mozilla/StaticPrefs_browser.h" +#include "mozilla/StaticPrefs_network.h" + +#ifdef XP_WIN +# include "nsITransportSecurityInfo.h" +# include "nsIX509Cert.h" +#endif using mozilla::Base64Decode; @@ -100,6 +107,40 @@ return false; } +#ifdef XP_WIN +// Retrieves the DER encoded server certificate, from which the SSPI module +// builds the tls-server-end-point channel binding token that servers with +// Extended Protection enabled require. Must run on the main thread. +// +// Not having a security info object is a valid case rather than an error: it +// happens for plain http, and for an https site reached through a proxy before +// the tunnel has been created. +static void GetServerCertDER(nsIHttpAuthenticableChannel* authChannel, + nsTArray& certDER) { + MOZ_ASSERT(NS_IsMainThread()); + + nsCOMPtr channel = do_QueryInterface(authChannel); + if (!channel) { + return; + } + + nsCOMPtr securityInfo; + if (NS_FAILED(channel->GetSecurityInfo(getter_AddRefs(securityInfo))) || + !securityInfo) { + return; + } + + nsCOMPtr cert; + if (NS_FAILED(securityInfo->GetServerCert(getter_AddRefs(cert))) || !cert) { + return; + } + + if (NS_FAILED(cert->GetRawDER(certDER))) { + certDER.Clear(); + } +} +#endif + already_AddRefed nsHttpNegotiateAuth::GetOrCreate() { nsCOMPtr authenticator; if (gSingleton) { @@ -227,6 +268,17 @@ NS_IMPL_ISUPPORTS(nsHttpNegotiateAuth, nsIHttpAuthenticator) +// Shared by GenerateCredentials and the background runnable used by +// GenerateCredentialsAsync. aCertDER is the DER encoded server certificate +// used to build the channel binding token, and may be empty, in which case no +// channel binding is sent. +static nsresult GenerateCredentialsInternal( + nsIHttpAuthenticableChannel* authChannel, const nsACString& aChallenge, + bool isProxyAuth, const nsAString& domain, const nsAString& username, + const nsAString& password, nsISupports** sessionState, + nsISupports** continuationState, const nsTArray& aCertDER, + uint32_t* flags, nsACString& creds); + namespace { // @@ -328,7 +380,8 @@ nsMainThreadPtrHandle& authChannel, const nsACString& challenge, bool isProxyAuth, const nsAString& domain, const nsAString& username, const nsAString& password, - nsISupports* sessionState, nsISupports* continuationState, + nsTArray&& certDER, nsISupports* sessionState, + nsISupports* continuationState, nsMainThreadPtrHandle& aCompleteEvent) : mozilla::Runnable("GetNextTokenRunnable"), mAuthChannel(authChannel), @@ -337,6 +390,7 @@ mDomain(domain), mUsername(username), mPassword(password), + mCertDER(std::move(certDER)), mSessionState(sessionState), mContinuationState(continuationState), mCompleteEvent(aCompleteEvent) {} @@ -367,9 +421,6 @@ NS_IMETHODIMP ObtainCredentialsAndFlags(nsCString& aCreds, uint32_t* aFlags) { nsresult rv; - // Use negotiate service to call GenerateCredentials outside of main thread - nsCOMPtr authenticator = new nsHttpNegotiateAuth(); - nsISupports* sessionState = mSessionState; nsISupports* continuationState = mContinuationState; // The continuationState is for the sake of completeness propagated @@ -385,9 +436,9 @@ // // Should any of the session or continuation states change inside // this method, they must be threadsafe. - rv = authenticator->GenerateCredentials( + rv = GenerateCredentialsInternal( mAuthChannel, mChallenge, mIsProxyAuth, mDomain, mUsername, mPassword, - &sessionState, &continuationState, aFlags, aCreds); + &sessionState, &continuationState, mCertDER, aFlags, aCreds); if (mSessionState != sessionState) { mSessionState = sessionState; } @@ -404,6 +455,7 @@ nsString mDomain; nsString mUsername; nsString mPassword; + nsTArray mCertDER; nsCOMPtr mSessionState; nsCOMPtr mContinuationState; nsMainThreadPtrHandle mCompleteEvent; @@ -421,6 +473,20 @@ NS_ENSURE_ARG(aCallback); NS_ENSURE_ARG_POINTER(aCancelable); + nsTArray certDER; +#ifdef XP_WIN + // The certificate has to be collected here because GenerateCredentials runs + // on a background thread. Only a challenge with no token of its own starts a + // sequence, and that is the only call nsAuthSSPI accepts a certificate on. + // Proxy auth is excluded because the channel's security info describes the + // origin server rather than the proxy. + if (!isProxyAuth && challenge.Length() <= kNegotiateLen && + mozilla::StaticPrefs::network_auth_negotiate_channel_binding() && + TestBoolPref(kNegotiateAuthSSPI)) { + GetServerCertDER(authChannel, certDER); + } +#endif + nsMainThreadPtrHandle handle( new nsMainThreadPtrHolder( "nsIHttpAuthenticableChannel", authChannel, false)); @@ -429,8 +495,8 @@ "GetNextTokenCompleteEvent", new GetNextTokenCompleteEvent(aCallback), false)); nsCOMPtr getNextTokenRunnable = new GetNextTokenRunnable( - handle, challenge, isProxyAuth, domain, username, password, sessionState, - continuationState, cancelEvent); + handle, challenge, isProxyAuth, domain, username, password, + std::move(certDER), sessionState, continuationState, cancelEvent); nsresult rv = NS_DispatchBackgroundTask( getNextTokenRunnable, nsIEventTarget::DISPATCH_EVENT_MAY_BLOCK); @@ -453,11 +519,25 @@ bool isProxyAuth, const nsAString& domain, const nsAString& username, const nsAString& password, nsISupports** sessionState, nsISupports** continuationState, uint32_t* flags, nsACString& creds) { + // Only reachable when GenerateCredentialsAsync fails to dispatch, which in + // practice means shutdown. No certificate is passed, so this path sends no + // channel binding; the sequence is not going to complete anyway. + return GenerateCredentialsInternal( + authChannel, aChallenge, isProxyAuth, domain, username, password, + sessionState, continuationState, nsTArray(), flags, creds); +} + +static nsresult GenerateCredentialsInternal( + nsIHttpAuthenticableChannel* authChannel, const nsACString& aChallenge, + bool isProxyAuth, const nsAString& domain, const nsAString& username, + const nsAString& password, nsISupports** sessionState, + nsISupports** continuationState, const nsTArray& aCertDER, + uint32_t* flags, nsACString& creds) { // ChallengeReceived must have been called previously. nsIAuthModule* module = (nsIAuthModule*)*continuationState; NS_ENSURE_TRUE(module, NS_ERROR_NOT_INITIALIZED); - *flags = USING_INTERNAL_IDENTITY; + *flags = nsIHttpAuthenticator::USING_INTERNAL_IDENTITY; LOG(("nsHttpNegotiateAuth::GenerateCredentials() [challenge=%s]\n", aChallenge.BeginReading())); @@ -504,8 +584,17 @@ void* outToken = nullptr; uint32_t outTokenLen = 0; - nsresult rv = module->GetNextToken(inToken.get(), inToken.Length(), &outToken, - &outTokenLen); + nsresult rv; + if (inToken.IsEmpty() && !aCertDER.IsEmpty()) { + // On the first call of a sequence the SSPI module expects the server + // certificate in place of the input token, so that it can compute the + // channel binding token. See nsAuthSSPI::GetNextToken. + rv = module->GetNextToken(aCertDER.Elements(), aCertDER.Length(), &outToken, + &outTokenLen); + } else { + rv = module->GetNextToken(inToken.get(), inToken.Length(), &outToken, + &outTokenLen); + } if (NS_FAILED(rv)) { if (outToken) { // Technically if the call fails we shouln't have allocated, but diff -Nru firefox-esr-140.13.0esr/gfx/2d/DataSurfaceHelpers.cpp firefox-esr-140.15.0esr/gfx/2d/DataSurfaceHelpers.cpp --- firefox-esr-140.13.0esr/gfx/2d/DataSurfaceHelpers.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/DataSurfaceHelpers.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -322,10 +322,9 @@ uint8_t* destData = DataAtOffset(aDest, destMap.GetMappedSurface(), aDestPoint); - SwizzleData(sourceData, srcMap.GetStride(), aSrc->GetFormat(), destData, - destMap.GetStride(), aDest->GetFormat(), aSrcRect.Size()); - - return true; + return SwizzleData(sourceData, srcMap.GetStride(), aSrc->GetFormat(), + destData, destMap.GetStride(), aDest->GetFormat(), + aSrcRect.Size()); } already_AddRefed CreateDataSourceSurfaceByCloning( diff -Nru firefox-esr-140.13.0esr/gfx/2d/DrawTargetCairo.cpp firefox-esr-140.15.0esr/gfx/2d/DrawTargetCairo.cpp --- firefox-esr-140.13.0esr/gfx/2d/DrawTargetCairo.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/DrawTargetCairo.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -955,7 +955,8 @@ void DrawTargetCairo::DrawFilter(FilterNode* aNode, const Rect& aSourceRect, const Point& aDestPoint, const DrawOptions& aOptions) { - if (!IsValid() || !aNode) { + if (!IsValid() || !aNode || + aNode->GetBackendType() != FILTER_BACKEND_SOFTWARE) { gfxCriticalNote << "DrawFilter with bad surface " << cairo_surface_status(cairo_get_group_target(mContext)); return; diff -Nru firefox-esr-140.13.0esr/gfx/2d/DrawTargetSkia.cpp firefox-esr-140.15.0esr/gfx/2d/DrawTargetSkia.cpp --- firefox-esr-140.13.0esr/gfx/2d/DrawTargetSkia.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/DrawTargetSkia.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -1265,7 +1265,6 @@ case FontType::FREETYPE: case FontType::FONTCONFIG: case FontType::MAC: - case FontType::GDI: case FontType::DWRITE: return true; default: diff -Nru firefox-esr-140.13.0esr/gfx/2d/Factory.cpp firefox-esr-140.15.0esr/gfx/2d/Factory.cpp --- firefox-esr-140.13.0esr/gfx/2d/Factory.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/Factory.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -17,12 +17,6 @@ #include "PathSkia.h" #include "ScaledFontBase.h" -#if defined(WIN32) -# include "ScaledFontWin.h" -# include "NativeFontResourceGDI.h" -# include "UnscaledFontGDI.h" -#endif - #ifdef XP_DARWIN # include "ScaledFontMac.h" # include "NativeFontResourceMac.h" @@ -547,8 +541,6 @@ #ifdef WIN32 case FontType::DWRITE: return NativeFontResourceDWrite::Create(aData, aSize); - case FontType::GDI: - return NativeFontResourceGDI::Create(aData, aSize); #elif defined(XP_DARWIN) case FontType::MAC: return NativeFontResourceMac::Create(aData, aSize); @@ -576,9 +568,6 @@ case FontType::DWRITE: return UnscaledFontDWrite::CreateFromFontDescriptor(aData, aDataLength, aIndex); - case FontType::GDI: - return UnscaledFontGDI::CreateFromFontDescriptor(aData, aDataLength, - aIndex); #elif defined(XP_DARWIN) case FontType::MAC: return UnscaledFontMac::CreateFromFontDescriptor(aData, aDataLength, @@ -987,13 +976,6 @@ aFontFace, aUnscaledFont, aSize, aUseEmbeddedBitmap, aUseMultistrikeBold, aGDIForced, aStyle); } - -already_AddRefed Factory::CreateScaledFontForGDIFont( - const void* aLogFont, const RefPtr& aUnscaledFont, - Float aSize) { - return MakeAndAddRef(static_cast(aLogFont), - aUnscaledFont, aSize); -} #endif // WIN32 already_AddRefed Factory::CreateDrawTargetWithSkCanvas( diff -Nru firefox-esr-140.13.0esr/gfx/2d/NativeFontResourceGDI.cpp firefox-esr-140.15.0esr/gfx/2d/NativeFontResourceGDI.cpp --- firefox-esr-140.13.0esr/gfx/2d/NativeFontResourceGDI.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/NativeFontResourceGDI.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "NativeFontResourceGDI.h" - -#include "Logging.h" -#include "mozilla/RefPtr.h" -#include "ScaledFontWin.h" -#include "UnscaledFontGDI.h" - -namespace mozilla { -namespace gfx { - -/* static */ -already_AddRefed NativeFontResourceGDI::Create( - uint8_t* aFontData, uint32_t aDataLength) { - DWORD numberOfFontsAdded; - HANDLE fontResourceHandle = - ::AddFontMemResourceEx(aFontData, aDataLength, 0, &numberOfFontsAdded); - if (!fontResourceHandle) { - gfxWarning() << "Failed to add memory font resource."; - return nullptr; - } - - RefPtr fontResouce = - new NativeFontResourceGDI(fontResourceHandle, aDataLength); - - return fontResouce.forget(); -} - -NativeFontResourceGDI::~NativeFontResourceGDI() { - ::RemoveFontMemResourceEx(mFontResourceHandle); -} - -already_AddRefed NativeFontResourceGDI::CreateUnscaledFont( - uint32_t aIndex, const uint8_t* aInstanceData, - uint32_t aInstanceDataLength) { - if (aInstanceDataLength < sizeof(LOGFONT)) { - gfxWarning() << "GDI unscaled font instance data is truncated."; - return nullptr; - } - - const LOGFONT* logFont = reinterpret_cast(aInstanceData); - RefPtr unscaledFont = new UnscaledFontGDI(*logFont); - return unscaledFont.forget(); -} - -} // namespace gfx -} // namespace mozilla diff -Nru firefox-esr-140.13.0esr/gfx/2d/NativeFontResourceGDI.h firefox-esr-140.15.0esr/gfx/2d/NativeFontResourceGDI.h --- firefox-esr-140.13.0esr/gfx/2d/NativeFontResourceGDI.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/NativeFontResourceGDI.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_gfx_NativeFontResourceGDI_h -#define mozilla_gfx_NativeFontResourceGDI_h - -#include - -#include "2D.h" -#include "mozilla/AlreadyAddRefed.h" -#include "mozilla/Vector.h" - -namespace mozilla { -namespace gfx { - -class NativeFontResourceGDI final : public NativeFontResource { - public: - MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(NativeFontResourceGDI, override) - - /** - * Creates a NativeFontResourceGDI if data is valid. Note aFontData will be - * copied if required and so can be released after calling. - * - * @param aFontData the SFNT data. - * @param aDataLength length of data. - * @return Referenced NativeFontResourceGDI or nullptr if invalid. - */ - static already_AddRefed Create(uint8_t* aFontData, - uint32_t aDataLength); - - virtual ~NativeFontResourceGDI(); - - already_AddRefed CreateUnscaledFont( - uint32_t aIndex, const uint8_t* aInstanceData, - uint32_t aInstanceDataLength) final; - - private: - explicit NativeFontResourceGDI(HANDLE aFontResourceHandle, size_t aDataLength) - : NativeFontResource(aDataLength), - mFontResourceHandle(aFontResourceHandle) {} - - HANDLE mFontResourceHandle; -}; - -} // namespace gfx -} // namespace mozilla - -#endif // mozilla_gfx_NativeFontResourceGDI_h diff -Nru firefox-esr-140.13.0esr/gfx/2d/RecordedEventImpl.h firefox-esr-140.15.0esr/gfx/2d/RecordedEventImpl.h --- firefox-esr-140.13.0esr/gfx/2d/RecordedEventImpl.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/RecordedEventImpl.h 2026-08-26 17:03:42.000000000 +0000 @@ -4087,9 +4087,8 @@ RefPtr font = Factory::CreateUnscaledFontFromFontDescriptor( mType, mData.data(), mData.size(), mIndex); if (!font) { - gfxDevCrash(LogReason::InvalidFont) - << "Failed creating UnscaledFont of type " << int(mType) - << " from font descriptor"; + gfxCriticalNote << "Failed creating UnscaledFont of type " << int(mType) + << " from font descriptor"; return false; } diff -Nru firefox-esr-140.13.0esr/gfx/2d/ScaledFontWin.cpp firefox-esr-140.15.0esr/gfx/2d/ScaledFontWin.cpp --- firefox-esr-140.13.0esr/gfx/2d/ScaledFontWin.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/ScaledFontWin.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,121 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "ScaledFontWin.h" -#include "UnscaledFontGDI.h" - -#include "AutoHelpersWin.h" -#include "Logging.h" -#include "nsString.h" - -#include "skia/include/ports/SkTypeface_win.h" - -#include "cairo-win32.h" - -#include "HelpersWinFonts.h" - -namespace mozilla { -namespace gfx { - -ScaledFontWin::ScaledFontWin(const LOGFONT* aFont, - const RefPtr& aUnscaledFont, - Float aSize) - : ScaledFontBase(aUnscaledFont, aSize), mLogFont(*aFont) {} - -bool UnscaledFontGDI::GetFontFileData(FontFileDataOutput aDataCallback, - void* aBaton) { - AutoDC dc; - AutoSelectFont font(dc.GetDC(), &mLogFont); - - // Check for a font collection first. - uint32_t table = 0x66637474; // 'ttcf' - uint32_t tableSize = ::GetFontData(dc.GetDC(), table, 0, nullptr, 0); - if (tableSize == GDI_ERROR) { - // Try as if just a single font. - table = 0; - tableSize = ::GetFontData(dc.GetDC(), table, 0, nullptr, 0); - if (tableSize == GDI_ERROR) { - return false; - } - } - - UniquePtr fontData(new uint8_t[tableSize]); - - uint32_t sizeGot = - ::GetFontData(dc.GetDC(), table, 0, fontData.get(), tableSize); - if (sizeGot != tableSize) { - return false; - } - - aDataCallback(fontData.get(), tableSize, 0, aBaton); - return true; -} - -bool ScaledFontWin::GetFontInstanceData(FontInstanceDataOutput aCb, - void* aBaton) { - aCb(reinterpret_cast(&mLogFont), sizeof(mLogFont), nullptr, 0, - aBaton); - return true; -} - -bool UnscaledFontGDI::GetFontInstanceData(FontInstanceDataOutput aCb, - void* aBaton) { - aCb(reinterpret_cast(&mLogFont), sizeof(mLogFont), aBaton); - return true; -} - -bool UnscaledFontGDI::GetFontDescriptor(FontDescriptorOutput aCb, - void* aBaton) { - // Because all the callers of this function are preparing a recorded - // event to be played back in another process, it's not helpful to ever - // return a font descriptor, since it isn't meaningful in another - // process. Those callers will always need to send full font data, and - // returning false here will ensure that that happens. - return false; -} - -already_AddRefed UnscaledFontGDI::CreateFromFontDescriptor( - const uint8_t* aData, uint32_t aDataLength, uint32_t aIndex) { - if (aDataLength < sizeof(LOGFONT)) { - gfxWarning() << "GDI font descriptor is truncated."; - return nullptr; - } - - const LOGFONT* logFont = reinterpret_cast(aData); - RefPtr unscaledFont = new UnscaledFontGDI(*logFont); - return unscaledFont.forget(); -} - -already_AddRefed UnscaledFontGDI::CreateScaledFont( - Float aGlyphSize, const uint8_t* aInstanceData, - uint32_t aInstanceDataLength, const FontVariation* aVariations, - uint32_t aNumVariations) { - if (aInstanceDataLength < sizeof(LOGFONT)) { - gfxWarning() << "GDI unscaled font instance data is truncated."; - return nullptr; - } - return MakeAndAddRef( - reinterpret_cast(aInstanceData), this, aGlyphSize); -} - -AntialiasMode ScaledFontWin::GetDefaultAAMode() { - return GetSystemDefaultAAMode(); -} - -SkTypeface* ScaledFontWin::CreateSkTypeface() { - return SkCreateTypefaceFromLOGFONT(mLogFont).release(); -} - -cairo_font_face_t* ScaledFontWin::CreateCairoFontFace( - cairo_font_options_t* aFontOptions) { - if (mLogFont.lfFaceName[0] == 0) { - return nullptr; - } - return cairo_win32_font_face_create_for_logfontw(&mLogFont); -} - -} // namespace gfx -} // namespace mozilla diff -Nru firefox-esr-140.13.0esr/gfx/2d/ScaledFontWin.h firefox-esr-140.15.0esr/gfx/2d/ScaledFontWin.h --- firefox-esr-140.13.0esr/gfx/2d/ScaledFontWin.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/ScaledFontWin.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_SCALEDFONTWIN_H_ -#define MOZILLA_GFX_SCALEDFONTWIN_H_ - -#include "ScaledFontBase.h" -#include - -namespace mozilla { -namespace gfx { - -class ScaledFontWin : public ScaledFontBase { - public: - MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(ScaledFontWin, override) - ScaledFontWin(const LOGFONT* aFont, const RefPtr& aUnscaledFont, - Float aSize); - - FontType GetType() const override { return FontType::GDI; } - - bool GetFontInstanceData(FontInstanceDataOutput aCb, void* aBaton) override; - - AntialiasMode GetDefaultAAMode() override; - - SkTypeface* CreateSkTypeface() override; - - bool MayUseBitmaps() override { return true; } - - bool UseSubpixelPosition() const override { return false; } - - protected: - cairo_font_face_t* CreateCairoFontFace( - cairo_font_options_t* aFontOptions) override; - - private: - friend class DrawTargetSkia; - LOGFONT mLogFont; -}; - -} // namespace gfx -} // namespace mozilla - -#endif /* MOZILLA_GFX_SCALEDFONTWIN_H_ */ diff -Nru firefox-esr-140.13.0esr/gfx/2d/Types.h firefox-esr-140.15.0esr/gfx/2d/Types.h --- firefox-esr-140.13.0esr/gfx/2d/Types.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/Types.h 2026-08-26 17:03:42.000000000 +0000 @@ -779,7 +779,6 @@ enum class FontType : int8_t { DWRITE, - GDI, MAC, FONTCONFIG, FREETYPE, diff -Nru firefox-esr-140.13.0esr/gfx/2d/UnscaledFontGDI.h firefox-esr-140.15.0esr/gfx/2d/UnscaledFontGDI.h --- firefox-esr-140.13.0esr/gfx/2d/UnscaledFontGDI.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/UnscaledFontGDI.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_UNSCALEDFONTGDI_H_ -#define MOZILLA_GFX_UNSCALEDFONTGDI_H_ - -#include "2D.h" -#include - -namespace mozilla { -namespace gfx { - -class UnscaledFontGDI final : public UnscaledFont { - public: - MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(UnscaledFontGDI, override) - explicit UnscaledFontGDI(const LOGFONT& aLogFont) : mLogFont(aLogFont) {} - - FontType GetType() const override { return FontType::GDI; } - - const LOGFONT& GetLogFont() const { return mLogFont; } - - bool GetFontFileData(FontFileDataOutput aDataCallback, void* aBaton) override; - - bool GetFontDescriptor(FontDescriptorOutput aCb, void* aBaton) override; - - bool GetFontInstanceData(FontInstanceDataOutput aCb, void* aBaton) override; - - static already_AddRefed CreateFromFontDescriptor( - const uint8_t* aData, uint32_t aDataLength, uint32_t aIndex); - - already_AddRefed CreateScaledFont( - Float aGlyphSize, const uint8_t* aInstanceData, - uint32_t aInstanceDataLength, const FontVariation* aVariations, - uint32_t aNumVariations) override; - - private: - LOGFONT mLogFont; -}; - -} // namespace gfx -} // namespace mozilla - -#endif /* MOZILLA_GFX_UNSCALEDFONTGDI_H_ */ diff -Nru firefox-esr-140.13.0esr/gfx/2d/moz.build firefox-esr-140.15.0esr/gfx/2d/moz.build --- firefox-esr-140.13.0esr/gfx/2d/moz.build 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/2d/moz.build 2026-08-26 17:03:42.000000000 +0000 @@ -79,7 +79,6 @@ EXPORTS.mozilla.gfx += [ "DWriteSettings.h", "UnscaledFontDWrite.h", - "UnscaledFontGDI.h", ] SOURCES += [ "ConicGradientEffectD2D1.cpp", @@ -88,11 +87,9 @@ "ExtendInputEffectD2D1.cpp", "FilterNodeD2D1.cpp", "NativeFontResourceDWrite.cpp", - "NativeFontResourceGDI.cpp", "PathD2D.cpp", "RadialGradientEffectD2D1.cpp", "ScaledFontDWrite.cpp", - "ScaledFontWin.cpp", "SourceSurfaceD2D1.cpp", ] DEFINES["WIN32"] = True diff -Nru firefox-esr-140.13.0esr/gfx/cairo/cairo/src/cairo-cff-subset.c firefox-esr-140.15.0esr/gfx/cairo/cairo/src/cairo-cff-subset.c --- firefox-esr-140.13.0esr/gfx/cairo/cairo/src/cairo-cff-subset.c 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/cairo/cairo/src/cairo-cff-subset.c 2026-08-26 17:03:42.000000000 +0000 @@ -1486,26 +1486,36 @@ return CAIRO_STATUS_SUCCESS; } -static unsigned char * -type2_decode_integer (unsigned char *p, int *integer) +static cairo_status_t +type2_decode_integer (unsigned char **pp, unsigned char *end, int *integer) { + unsigned char *p = *pp; if (*p == 28) { + if (p + 3 > end) + return CAIRO_INT_STATUS_UNSUPPORTED; *integer = p[1] << 8 | p[2]; - p += 3; + *pp += 3; } else if (*p <= 246) { - *integer = *p++ - 139; + *integer = *p - 139; + *pp += 1; } else if (*p <= 250) { + if (p + 2 > end) + return CAIRO_INT_STATUS_UNSUPPORTED; *integer = (p[0] - 247) * 256 + p[1] + 108; - p += 2; + *pp += 2; } else if (*p <= 254) { + if (p + 2 > end) + return CAIRO_INT_STATUS_UNSUPPORTED; *integer = -(p[0] - 251) * 256 - p[1] - 108; - p += 2; + *pp += 2; } else { /* *p == 255 */ - /* 16.16 fixed-point number. The fraction is ignored. */ - *integer = (int16_t)((p[1] << 8) | p[2]); - p += 5; + if (p + 5 > end) + return CAIRO_INT_STATUS_UNSUPPORTED; + /* 16.16 fixed-point number. The fraction is ignored. */ + *integer = (int16_t)((p[1] << 8) | p[2]); + *pp += 5; } - return p; + return CAIRO_STATUS_SUCCESS; } /* Type 2 charstring parser for finding calls to local or global @@ -1545,11 +1555,14 @@ int sub_num; cff_index_element_t *element; int fd; + cairo_status_t status; while (p < end) { if (*p == 28 || *p >= 32) { /* Integer value */ - p = type2_decode_integer (p, &integer); + status = type2_decode_integer (&p, end, &integer); + if (unlikely (status)) + return status; font->type2_stack_size++; font->type2_stack_top_value = integer; font->type2_stack_top_is_int = TRUE; diff -Nru firefox-esr-140.13.0esr/gfx/cairo/cairo/src/cairo-truetype-subset.c firefox-esr-140.15.0esr/gfx/cairo/cairo/src/cairo-truetype-subset.c --- firefox-esr-140.13.0esr/gfx/cairo/cairo/src/cairo-truetype-subset.c 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/cairo/cairo/src/cairo-truetype-subset.c 2026-08-26 17:03:42.000000000 +0000 @@ -114,7 +114,7 @@ static cairo_status_t cairo_truetype_font_use_glyph (cairo_truetype_font_t *font, - unsigned short glyph, + unsigned long glyph, unsigned short *out); #define SFNT_VERSION 0x00010000 @@ -1026,7 +1026,7 @@ static cairo_status_t cairo_truetype_font_use_glyph (cairo_truetype_font_t *font, - unsigned short glyph, + unsigned long glyph, unsigned short *out) { if (glyph >= font->base.num_glyphs_in_face) @@ -1150,7 +1150,7 @@ return status; for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { - unsigned short parent_glyph = font->scaled_font_subset->glyphs[i]; + unsigned long parent_glyph = font->scaled_font_subset->glyphs[i]; status = cairo_truetype_font_use_glyph (font, parent_glyph, &parent_glyph); if (unlikely (status)) goto fail1; diff -Nru firefox-esr-140.13.0esr/gfx/cairo/cairo/src/cairo-type1-subset.c firefox-esr-140.15.0esr/gfx/cairo/cairo/src/cairo-type1-subset.c --- firefox-esr-140.13.0esr/gfx/cairo/cairo/src/cairo-type1-subset.c 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/cairo/cairo/src/cairo-type1-subset.c 2026-08-26 17:03:42.000000000 +0000 @@ -1067,6 +1067,8 @@ p = array_start; while (p + 3 < cleartext_end && strncmp (p, "dup", 3) == 0) { p = skip_token (p, cleartext_end); + if (p == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; /* get subr number */ subr_num = strtol (p, &end, 10); @@ -1084,7 +1086,14 @@ /* Skip past -| or RD to binary data. There is exactly one space * between the -| or RD token and the encrypted data, thus '+ 1'. */ - subr_string = skip_token (end, cleartext_end) + 1; + subr_string = skip_token (end, cleartext_end); + if (subr_string == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; + subr_string++; + + /* The declared subr length must lie within the cleartext buffer. */ + if (subr_length < 0 || subr_length > cleartext_end - subr_string) + return CAIRO_INT_STATUS_UNSUPPORTED; np = NULL; np_length = 0; @@ -1100,6 +1109,8 @@ /* Some fonts have "noaccess put" instead of "NP" */ if (p + 3 < cleartext_end && strncmp (p, "put", 3) == 0) { p = skip_token (p, cleartext_end); + if (p == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; while (p < cleartext_end && _cairo_isspace(*p)) p++; @@ -1245,6 +1256,8 @@ while (*p == '/') { name = p + 1; p = skip_token (p, dict_end); + if (p == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; name_length = p - name; charstring_length = strtol (p, &end, 10); @@ -1253,7 +1266,14 @@ /* Skip past -| or RD to binary data. There is exactly one space * between the -| or RD token and the encrypted data, thus '+ 1'. */ - charstring = skip_token (end, dict_end) + 1; + charstring = skip_token (end, dict_end); + if (charstring == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; + charstring++; + + /* The declared charstring length must lie within the cleartext buffer. */ + if (charstring_length < 0 || charstring_length > dict_end - charstring) + return CAIRO_INT_STATUS_UNSUPPORTED; /* Skip binary data and |- or ND token. */ p = skip_token (charstring + charstring_length, dict_end); diff -Nru firefox-esr-140.13.0esr/gfx/cairo/cairo/src/win32/cairo-win32-printing-surface.c firefox-esr-140.15.0esr/gfx/cairo/cairo/src/win32/cairo-win32-printing-surface.c --- firefox-esr-140.13.0esr/gfx/cairo/cairo/src/win32/cairo-win32-printing-surface.c 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/cairo/cairo/src/win32/cairo-win32-printing-surface.c 2026-08-26 17:03:43.000000000 +0000 @@ -955,8 +955,8 @@ _cairo_win32_printing_surface_paint_linear_pattern (cairo_win32_printing_surface_t *surface, cairo_linear_pattern_t *pattern) { - TRIVERTEX *vert; - GRADIENT_RECT *rect; + TRIVERTEX *vert = NULL; + GRADIENT_RECT *rect = NULL; RECT clip; XFORM xform; int i, num_stops; @@ -966,6 +966,7 @@ int range_start, range_stop, num_ranges, num_rects, stop; int total_verts, total_rects; cairo_status_t status; + cairo_uint64_t alloc_size; extend = cairo_pattern_get_extend (&pattern->base.base); SaveDC (surface->win32.dc); @@ -996,8 +997,10 @@ _cairo_matrix_to_win32_xform (&mat, &xform); - if (!SetWorldTransform (surface->win32.dc, &xform)) - return _cairo_win32_print_gdi_error ("_win32_printing_surface_paint_linear_pattern:SetWorldTransform2"); + if (!SetWorldTransform (surface->win32.dc, &xform)) { + status = _cairo_win32_print_gdi_error ("_win32_printing_surface_paint_linear_pattern:SetWorldTransform2"); + goto cleanup; + } GetClipBox (surface->win32.dc, &clip); @@ -1013,8 +1016,24 @@ num_rects = num_stops - 1; /* Add an extra four points and two rectangles for EXTEND_PAD */ - vert = _cairo_malloc (sizeof (TRIVERTEX) * (num_rects*2*num_ranges + 4)); - rect = _cairo_malloc (sizeof (GRADIENT_RECT) * (num_rects*num_ranges + 2)); + alloc_size = sizeof (TRIVERTEX) * ((cairo_uint64_t)num_rects * 2 * (cairo_uint64_t)num_ranges + 4); + if (alloc_size > (cairo_uint64_t)SIZE_MAX) { + status = _cairo_error (CAIRO_INT_STATUS_UNSUPPORTED); + goto cleanup; + } + vert = _cairo_malloc (alloc_size); + + alloc_size = sizeof (GRADIENT_RECT) * ((cairo_uint64_t)num_rects * (cairo_uint64_t)num_ranges + 2); + if (alloc_size > (cairo_uint64_t)SIZE_MAX) { + status = _cairo_error (CAIRO_INT_STATUS_UNSUPPORTED); + goto cleanup; + } + rect = _cairo_malloc (alloc_size); + + if (!vert || !rect) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto cleanup; + } for (i = 0; i < num_ranges*num_rects; i++) { vert[i*2].y = (LONG) clip.top; @@ -1086,13 +1105,16 @@ vert, total_verts, rect, total_rects, GRADIENT_FILL_RECT_H)) - return _cairo_win32_print_gdi_error ("_win32_printing_surface_paint_linear_pattern:GradientFill"); + { + status = _cairo_win32_print_gdi_error ("_win32_printing_surface_paint_linear_pattern:GradientFill"); + } +cleanup: free (rect); free (vert); RestoreDC (surface->win32.dc, -1); - return 0; + return status; } static cairo_int_status_t @@ -1526,7 +1548,9 @@ pen_style |= PS_USERSTYLE; dash_array = calloc (sizeof (DWORD), style->num_dashes); for (i = 0; i < style->num_dashes; i++) { - dash_array[i] = (DWORD) (scale * style->dash[i]); + /* ExtCreatePen fails if the scaled dash length becomes zero, + so enforce a minimum of 1 unit. */ + dash_array[i] = MAX(1, (DWORD) (scale * style->dash[i])); } } else { pen_style |= PS_SOLID; diff -Nru firefox-esr-140.13.0esr/gfx/cairo/patches/0042-win32-printing-linear-pattern.patch firefox-esr-140.15.0esr/gfx/cairo/patches/0042-win32-printing-linear-pattern.patch --- firefox-esr-140.13.0esr/gfx/cairo/patches/0042-win32-printing-linear-pattern.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/cairo/patches/0042-win32-printing-linear-pattern.patch 2026-08-26 17:03:43.000000000 +0000 @@ -0,0 +1,87 @@ +# HG changeset patch +# User Jonathan Kew +# Date 1783696818 -3600 +# Fri Jul 10 16:20:18 2026 +0100 +# Node ID d4da049a5516d841cd873bcde3d097acf3ad7668 +# Parent 0b220ddc96596d5a21631503936a1f67608a309b +Bug 2053327 - Check allocations in _cairo_win32_printing_surface_paint_linear_pattern. r=#gfx-reviewers + +Differential Revision: https://phabricator.services.mozilla.com/D311550 + +diff --git a/gfx/cairo/cairo/src/win32/cairo-win32-printing-surface.c b/gfx/cairo/cairo/src/win32/cairo-win32-printing-surface.c +--- a/gfx/cairo/cairo/src/win32/cairo-win32-printing-surface.c ++++ b/gfx/cairo/cairo/src/win32/cairo-win32-printing-surface.c +@@ -963,8 +963,8 @@ static cairo_int_status_t + _cairo_win32_printing_surface_paint_linear_pattern (cairo_win32_printing_surface_t *surface, + cairo_linear_pattern_t *pattern) + { +- TRIVERTEX *vert; +- GRADIENT_RECT *rect; ++ TRIVERTEX *vert = NULL; ++ GRADIENT_RECT *rect = NULL; + RECT clip; + XFORM xform; + int i, num_stops; +@@ -974,6 +974,7 @@ _cairo_win32_printing_surface_paint_line + int range_start, range_stop, num_ranges, num_rects, stop; + int total_verts, total_rects; + cairo_status_t status; ++ cairo_uint64_t alloc_size; + + extend = cairo_pattern_get_extend (&pattern->base.base); + SaveDC (surface->win32.dc); +@@ -1006,7 +1007,8 @@ _cairo_win32_printing_surface_paint_line + + if (!SetWorldTransform (surface->win32.dc, &xform)) { + fprintf (stderr, "%s:%s\n", __FUNCTION__, "SetWorldTransform"); +- return _cairo_error (CAIRO_STATUS_WIN32_GDI_ERROR); ++ status = _cairo_error (CAIRO_STATUS_WIN32_GDI_ERROR); ++ goto cleanup; + } + + GetClipBox (surface->win32.dc, &clip); +@@ -1023,8 +1025,24 @@ _cairo_win32_printing_surface_paint_line + num_rects = num_stops - 1; + + /* Add an extra four points and two rectangles for EXTEND_PAD */ +- vert = _cairo_malloc (sizeof (TRIVERTEX) * (num_rects*2*num_ranges + 4)); +- rect = _cairo_malloc (sizeof (GRADIENT_RECT) * (num_rects*num_ranges + 2)); ++ alloc_size = sizeof (TRIVERTEX) * ((cairo_uint64_t)num_rects * 2 * (cairo_uint64_t)num_ranges + 4); ++ if (alloc_size > (cairo_uint64_t)SIZE_MAX) { ++ status = _cairo_error (CAIRO_INT_STATUS_UNSUPPORTED); ++ goto cleanup; ++ } ++ vert = _cairo_malloc (alloc_size); ++ ++ alloc_size = sizeof (GRADIENT_RECT) * ((cairo_uint64_t)num_rects * (cairo_uint64_t)num_ranges + 2); ++ if (alloc_size > (cairo_uint64_t)SIZE_MAX) { ++ status = _cairo_error (CAIRO_INT_STATUS_UNSUPPORTED); ++ goto cleanup; ++ } ++ rect = _cairo_malloc (alloc_size); ++ ++ if (!vert || !rect) { ++ status = _cairo_error (CAIRO_STATUS_NO_MEMORY); ++ goto cleanup; ++ } + + for (i = 0; i < num_ranges*num_rects; i++) { + vert[i*2].y = (LONG) clip.top; +@@ -1098,14 +1116,15 @@ _cairo_win32_printing_surface_paint_line + GRADIENT_FILL_RECT_H)) + { + fprintf (stderr, "%s:%s\n", __FUNCTION__, "GradientFill"); +- return _cairo_error (CAIRO_STATUS_WIN32_GDI_ERROR); ++ status = _cairo_error (CAIRO_STATUS_WIN32_GDI_ERROR); + } + ++cleanup: + free (rect); + free (vert); + RestoreDC (surface->win32.dc, -1); + +- return 0; ++ return status; + } + + static cairo_int_status_t diff -Nru firefox-esr-140.13.0esr/gfx/cairo/patches/0044-Bug-2053599-glyph-index-bounds.patch firefox-esr-140.15.0esr/gfx/cairo/patches/0044-Bug-2053599-glyph-index-bounds.patch --- firefox-esr-140.13.0esr/gfx/cairo/patches/0044-Bug-2053599-glyph-index-bounds.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/cairo/patches/0044-Bug-2053599-glyph-index-bounds.patch 2026-08-26 17:03:43.000000000 +0000 @@ -0,0 +1,60 @@ +diff --git a/gfx/cairo/cairo/src/cairo-truetype-subset.c b/gfx/cairo/cairo/src/cairo-truetype-subset.c +--- a/gfx/cairo/cairo/src/cairo-truetype-subset.c ++++ b/gfx/cairo/cairo/src/cairo-truetype-subset.c +@@ -109,17 +109,17 @@ check (tt_maxp_t, 32); + check (tt_name_record_t, 12); + check (tt_name_t, 18); + check (tt_composite_glyph_t, 16); + check (tt_glyph_data_t, 26); + #undef check + + static cairo_status_t + cairo_truetype_font_use_glyph (cairo_truetype_font_t *font, +- unsigned short glyph, ++ unsigned long glyph, + unsigned short *out); + + #define SFNT_VERSION 0x00010000 + #define SFNT_STRING_MAX_LENGTH 65535 + + static cairo_status_t + _cairo_truetype_font_set_error (cairo_truetype_font_t *font, + cairo_status_t status) +@@ -1021,17 +1021,17 @@ cairo_truetype_font_generate (cairo_true + *string_offsets = NULL; + + FAIL: + return _cairo_truetype_font_set_error (font, status); + } + + static cairo_status_t + cairo_truetype_font_use_glyph (cairo_truetype_font_t *font, +- unsigned short glyph, ++ unsigned long glyph, + unsigned short *out) + { + if (glyph >= font->base.num_glyphs_in_face) + return CAIRO_INT_STATUS_UNSUPPORTED; + + if (font->parent_to_subset[glyph] == 0) { + font->parent_to_subset[glyph] = font->num_glyphs; + font->glyphs[font->num_glyphs].parent_index = glyph; +@@ -1145,17 +1145,17 @@ cairo_truetype_subset_init_internal (cai + const unsigned long *string_offsets = NULL; + unsigned long num_strings = 0; + + status = _cairo_truetype_font_create (font_subset, is_pdf, &font); + if (unlikely (status)) + return status; + + for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { +- unsigned short parent_glyph = font->scaled_font_subset->glyphs[i]; ++ unsigned long parent_glyph = font->scaled_font_subset->glyphs[i]; + status = cairo_truetype_font_use_glyph (font, parent_glyph, &parent_glyph); + if (unlikely (status)) + goto fail1; + } + + cairo_truetype_font_create_truetype_table_list (font); + status = cairo_truetype_font_generate (font, &data, &length, + &string_offsets, &num_strings); diff -Nru firefox-esr-140.13.0esr/gfx/cairo/patches/0047-Bug-2050228-win32-print-tiny-dash.patch firefox-esr-140.15.0esr/gfx/cairo/patches/0047-Bug-2050228-win32-print-tiny-dash.patch --- firefox-esr-140.13.0esr/gfx/cairo/patches/0047-Bug-2050228-win32-print-tiny-dash.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/cairo/patches/0047-Bug-2050228-win32-print-tiny-dash.patch 2026-08-26 17:03:42.000000000 +0000 @@ -0,0 +1,21 @@ +commit 64a9e74bf5269b7f3a4d99cbb764bd098bed9860 +Author: Jonathan Kew +Date: Thu Jul 30 16:27:34 2026 +0100 + + Bug 2050228 - Guard against dash length becoming zero in cairo-win32 printing backend. r=#gfx-reviewers + +diff --git a/src/win32/cairo-win32-printing-surface.c b/src/win32/cairo-win32-printing-surface.c +index ab5680948e69..505e5d1dd460 100644 +--- a/src/win32/cairo-win32-printing-surface.c ++++ b/src/win32/cairo-win32-printing-surface.c +@@ -1558,7 +1558,9 @@ _cairo_win32_printing_surface_stroke (void *abstract_surface, + pen_style |= PS_USERSTYLE; + dash_array = _cairo_calloc_ab (sizeof (DWORD), style->num_dashes); + for (i = 0; i < style->num_dashes; i++) { +- dash_array[i] = (DWORD) (scale * style->dash[i]); ++ /* ExtCreatePen fails if the scaled dash length becomes zero, ++ so enforce a minimum of 1 unit. */ ++ dash_array[i] = MAX(1, (DWORD) (scale * style->dash[i])); + } + } else { + pen_style |= PS_SOLID; diff -Nru firefox-esr-140.13.0esr/gfx/cairo/patches/0047-Bug-2054626-type2-decode-integer.patch firefox-esr-140.15.0esr/gfx/cairo/patches/0047-Bug-2054626-type2-decode-integer.patch --- firefox-esr-140.13.0esr/gfx/cairo/patches/0047-Bug-2054626-type2-decode-integer.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/cairo/patches/0047-Bug-2054626-type2-decode-integer.patch 2026-08-26 17:03:42.000000000 +0000 @@ -0,0 +1,86 @@ +diff --git a/gfx/cairo/cairo/src/cairo-cff-subset.c b/gfx/cairo/cairo/src/cairo-cff-subset.c +--- a/gfx/cairo/cairo/src/cairo-cff-subset.c ++++ b/gfx/cairo/cairo/src/cairo-cff-subset.c +@@ -1489,36 +1489,46 @@ cairo_cff_font_subset_dict_strings (cair + status = cairo_cff_font_subset_dict_string (font, dict, dict_strings[i]); + if (unlikely (status)) + return status; + } + + return CAIRO_STATUS_SUCCESS; + } + +-static unsigned char * +-type2_decode_integer (unsigned char *p, int *integer) ++static cairo_status_t ++type2_decode_integer (unsigned char **pp, unsigned char *end, int *integer) + { ++ unsigned char *p = *pp; + if (*p == 28) { ++ if (p + 3 > end) ++ return CAIRO_INT_STATUS_UNSUPPORTED; + *integer = p[1] << 8 | p[2]; +- p += 3; ++ *pp += 3; + } else if (*p <= 246) { +- *integer = *p++ - 139; ++ *integer = *p - 139; ++ *pp += 1; + } else if (*p <= 250) { ++ if (p + 2 > end) ++ return CAIRO_INT_STATUS_UNSUPPORTED; + *integer = (p[0] - 247) * 256 + p[1] + 108; +- p += 2; ++ *pp += 2; + } else if (*p <= 254) { ++ if (p + 2 > end) ++ return CAIRO_INT_STATUS_UNSUPPORTED; + *integer = -(p[0] - 251) * 256 - p[1] - 108; +- p += 2; ++ *pp += 2; + } else { /* *p == 255 */ +- /* 16.16 fixed-point number. The fraction is ignored. */ +- *integer = (int16_t)((p[1] << 8) | p[2]); +- p += 5; ++ if (p + 5 > end) ++ return CAIRO_INT_STATUS_UNSUPPORTED; ++ /* 16.16 fixed-point number. The fraction is ignored. */ ++ *integer = (int16_t)((p[1] << 8) | p[2]); ++ *pp += 5; + } +- return p; ++ return CAIRO_STATUS_SUCCESS; + } + + /* Type 2 charstring parser for finding calls to local or global + * subroutines. For non Opentype CFF fonts it also gets the glyph + * widths. + * + * When we find a subroutine operator, the subroutine is marked as in + * use and recursively followed. The subroutine number is the value on +@@ -1548,21 +1558,24 @@ cairo_cff_parse_charstring (cairo_cff_fo + { + unsigned char *p = charstring; + unsigned char *end = charstring + length; + int integer; + int hint_bytes; + int sub_num; + cff_index_element_t *element; + int fd; ++ cairo_status_t status; + + while (p < end) { + if (*p == 28 || *p >= 32) { + /* Integer value */ +- p = type2_decode_integer (p, &integer); ++ status = type2_decode_integer (&p, end, &integer); ++ if (unlikely (status)) ++ return status; + font->type2_stack_size++; + font->type2_stack_top_value = integer; + font->type2_stack_top_is_int = TRUE; + if (!font->type2_seen_first_int) { + font->type2_width = integer; + font->type2_seen_first_int = TRUE; + } + } else if (*p == TYPE2_hstem || *p == TYPE2_vstem || diff -Nru firefox-esr-140.13.0esr/gfx/cairo/patches/0048-Bug-2054627-skip-token-check.patch firefox-esr-140.15.0esr/gfx/cairo/patches/0048-Bug-2054627-skip-token-check.patch --- firefox-esr-140.13.0esr/gfx/cairo/patches/0048-Bug-2054627-skip-token-check.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/cairo/patches/0048-Bug-2054627-skip-token-check.patch 2026-08-26 17:03:42.000000000 +0000 @@ -0,0 +1,101 @@ +diff --git a/gfx/cairo/cairo/src/cairo-type1-subset.c b/gfx/cairo/cairo/src/cairo-type1-subset.c +--- a/gfx/cairo/cairo/src/cairo-type1-subset.c ++++ b/gfx/cairo/cairo/src/cairo-type1-subset.c +@@ -1063,16 +1063,18 @@ cairo_type1_font_for_each_subr (cairo_ty + * + * or alternatively using -| and |- instead of RD and ND. + * The first number is the subroutine number. + */ + + p = array_start; + while (p + 3 < cleartext_end && strncmp (p, "dup", 3) == 0) { + p = skip_token (p, cleartext_end); ++ if (p == NULL) ++ return CAIRO_INT_STATUS_UNSUPPORTED; + + /* get subr number */ + subr_num = strtol (p, &end, 10); + if (p == end) + return CAIRO_INT_STATUS_UNSUPPORTED; + + if (subr_num < 0 || subr_num >= font->num_subrs) + return CAIRO_INT_STATUS_UNSUPPORTED; +@@ -1080,32 +1082,41 @@ cairo_type1_font_for_each_subr (cairo_ty + /* get subr length */ + p = end; + subr_length = strtol (p, &end, 10); + if (p == end) + return CAIRO_INT_STATUS_UNSUPPORTED; + + /* Skip past -| or RD to binary data. There is exactly one space + * between the -| or RD token and the encrypted data, thus '+ 1'. */ +- subr_string = skip_token (end, cleartext_end) + 1; ++ subr_string = skip_token (end, cleartext_end); ++ if (subr_string == NULL) ++ return CAIRO_INT_STATUS_UNSUPPORTED; ++ subr_string++; ++ ++ /* The declared subr length must lie within the cleartext buffer. */ ++ if (subr_length < 0 || subr_length > cleartext_end - subr_string) ++ return CAIRO_INT_STATUS_UNSUPPORTED; + + np = NULL; + np_length = 0; + + /* Skip binary data and | or NP token. */ + p = skip_token (subr_string + subr_length, cleartext_end); + if (p == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; + + while (p < cleartext_end && _cairo_isspace(*p)) + p++; + + /* Some fonts have "noaccess put" instead of "NP" */ + if (p + 3 < cleartext_end && strncmp (p, "put", 3) == 0) { + p = skip_token (p, cleartext_end); ++ if (p == NULL) ++ return CAIRO_INT_STATUS_UNSUPPORTED; + while (p < cleartext_end && _cairo_isspace(*p)) + p++; + + np = subr_string + subr_length; + np_length = p - np; + } + + status = func (font, subr_num, +@@ -1241,25 +1252,34 @@ cairo_type1_font_subset_for_each_glyph ( + * since the binary data could contain a '/'. + */ + + p = dict_start; + glyph_count = 0; + while (*p == '/') { + name = p + 1; + p = skip_token (p, dict_end); ++ if (p == NULL) ++ return CAIRO_INT_STATUS_UNSUPPORTED; + name_length = p - name; + + charstring_length = strtol (p, &end, 10); + if (p == end) + return CAIRO_INT_STATUS_UNSUPPORTED; + + /* Skip past -| or RD to binary data. There is exactly one space + * between the -| or RD token and the encrypted data, thus '+ 1'. */ +- charstring = skip_token (end, dict_end) + 1; ++ charstring = skip_token (end, dict_end); ++ if (charstring == NULL) ++ return CAIRO_INT_STATUS_UNSUPPORTED; ++ charstring++; ++ ++ /* The declared charstring length must lie within the cleartext buffer. */ ++ if (charstring_length < 0 || charstring_length > dict_end - charstring) ++ return CAIRO_INT_STATUS_UNSUPPORTED; + + /* Skip binary data and |- or ND token. */ + p = skip_token (charstring + charstring_length, dict_end); + if (p == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; + + while (p < dict_end && _cairo_isspace(*p)) + p++; diff -Nru firefox-esr-140.13.0esr/gfx/gl/GLBlitHelper.cpp firefox-esr-140.15.0esr/gfx/gl/GLBlitHelper.cpp --- firefox-esr-140.13.0esr/gfx/gl/GLBlitHelper.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/gl/GLBlitHelper.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -1476,10 +1476,7 @@ bool GLBlitHelper::BlitImage(layers::GPUVideoImage* const srcImage, const gfx::IntSize& destSize, const OriginPos destOrigin) const { - const auto& data = srcImage->GetData(); - if (!data) return false; - - const auto& desc = data->SD(); + const auto& desc = srcImage->SD(); MOZ_ASSERT( desc.type() == diff -Nru firefox-esr-140.13.0esr/gfx/gl/SharedSurfaceD3D11Interop.cpp firefox-esr-140.15.0esr/gfx/gl/SharedSurfaceD3D11Interop.cpp --- firefox-esr-140.13.0esr/gfx/gl/SharedSurfaceD3D11Interop.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/gl/SharedSurfaceD3D11Interop.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -151,7 +151,7 @@ WGLLibrary* const mWGL; const RefPtr mD3D; // Only needed for lifetime guarantee. const HANDLE mInteropDevice; - GLContext* const mGL; + const WeakPtr mGL; // AMD workaround. const RefPtr mD3DContext; @@ -211,6 +211,10 @@ mContextState(contextState) {} ~DXInterop2Device() { + if (!mGL) { + return; + } + const auto isCurrent = mGL->MakeCurrent(); if (mWGL->mSymbols.fDXCloseDeviceNV(mInteropDevice)) return; @@ -228,7 +232,9 @@ HANDLE RegisterObject(void* d3dObject, GLuint name, GLenum type, GLenum access) const { - if (!mGL->MakeCurrent()) return nullptr; + if (!mGL || !mGL->MakeCurrent()) { + return nullptr; + } const ScopedContextState autoCS(mD3DContext, mContextState); const auto ret = mWGL->mSymbols.fDXRegisterObjectNV( @@ -245,6 +251,10 @@ } bool UnregisterObject(HANDLE lockHandle) const { + if (!mGL) { + return false; + } + const auto isCurrent = mGL->MakeCurrent(); const ScopedContextState autoCS(mD3DContext, mContextState); @@ -264,6 +274,10 @@ } bool LockObject(HANDLE lockHandle) const { + if (!mGL) { + return false; + } + MOZ_ASSERT(mGL->IsCurrent()); if (mWGL->mSymbols.fDXLockObjectsNV(mInteropDevice, 1, &lockHandle)) @@ -287,6 +301,10 @@ } bool UnlockObject(HANDLE lockHandle) const { + if (!mGL) { + return false; + } + MOZ_ASSERT(mGL->IsCurrent()); if (mWGL->mSymbols.fDXUnlockObjectsNV(mInteropDevice, 1, &lockHandle)) diff -Nru firefox-esr-140.13.0esr/gfx/layers/GPUVideoImage.h firefox-esr-140.15.0esr/gfx/layers/GPUVideoImage.h --- firefox-esr-140.13.0esr/gfx/layers/GPUVideoImage.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/layers/GPUVideoImage.h 2026-08-26 17:03:42.000000000 +0000 @@ -49,6 +49,8 @@ mColorDepth(aColorDepth), mColorSpace(aColorPrimaries), mYUVColorSpace(aYUVColorSpace), + mManager(aManager), + mSD(aSD), mTransferFunction(aTransferFunction), mColorRange(aColorRange) { // Create the TextureClient immediately since the GPUVideoTextureData @@ -78,9 +80,11 @@ gfx::ColorRange GetColorRange() const { return mColorRange; } Maybe GetDesc() override { - return GetDescFromTexClient(mTextureClient); + return Some(SurfaceDescriptor(mSD)); } + const SurfaceDescriptorGPUVideo& SD() const { return mSD; } + private: GPUVideoTextureData* GetData() const { if (!mTextureClient) { @@ -95,11 +99,10 @@ public: already_AddRefed GetAsSourceSurface() override { - GPUVideoTextureData* data = GetData(); - if (!data) { + if (!mManager) { return nullptr; } - return data->GetAsSourceSurface(); + return mManager->Readback(mSD); } TextureClient* GetTextureClient(KnowsCompositor* aKnowsCompositor) override { @@ -113,6 +116,8 @@ gfx::ColorDepth mColorDepth; gfx::ColorSpace2 mColorSpace; gfx::YUVColorSpace mYUVColorSpace; + RefPtr mManager; + SurfaceDescriptorGPUVideo mSD; RefPtr mTextureClient; gfx::TransferFunction mTransferFunction; gfx::ColorRange mColorRange; diff -Nru firefox-esr-140.13.0esr/gfx/layers/ImageContainer.cpp firefox-esr-140.15.0esr/gfx/layers/ImageContainer.cpp --- firefox-esr-140.13.0esr/gfx/layers/ImageContainer.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/layers/ImageContainer.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -828,7 +828,12 @@ int32_t height = aSize.height; int32_t width = aSize.width; - MOZ_RELEASE_ASSERT(width <= aStride); + // The interleaved (aSkip != 0) path steps over skipped elements between + // pixels, so a row reaches further than the packed width. Computed with + // 64-bit arithmetic. + const int64_t srcRowSpan = + static_cast(width) + static_cast(width - 1) * aSkip; + MOZ_RELEASE_ASSERT(srcRowSpan <= aStride); if (!aSkip) { // Fast path: planar input. diff -Nru firefox-esr-140.13.0esr/gfx/layers/d3d11/TextureD3D11.cpp firefox-esr-140.15.0esr/gfx/layers/d3d11/TextureD3D11.cpp --- firefox-esr-140.13.0esr/gfx/layers/d3d11/TextureD3D11.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/layers/d3d11/TextureD3D11.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -1065,6 +1065,13 @@ D3D11_TEXTURE2D_DESC textureDesc = {0}; d3dTexture->GetDesc(&textureDesc); + if (textureDesc.Format != SurfaceFormatToDXGIFormat(mFormat)) { + gfxCriticalNoteOnce << "Declared format does not match texture format: " + << static_cast(mFormat) << " " + << static_cast(textureDesc.Format); + return nullptr; + } + RefPtr context; d3d11Device->GetImmediateContext(getter_AddRefs(context)); diff -Nru firefox-esr-140.13.0esr/gfx/layers/ipc/CanvasChild.cpp firefox-esr-140.15.0esr/gfx/layers/ipc/CanvasChild.cpp --- firefox-esr-140.13.0esr/gfx/layers/ipc/CanvasChild.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/layers/ipc/CanvasChild.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -778,10 +778,14 @@ // running under the same thread, and that events can be paused or resumed // while synchronizing between WebGL and AC2D. if (!gfx::gfxVars::UseAcceleratedCanvas2D() || - !StaticPrefs::gfx_canvas_remote_use_canvas_translator_event_AtStartup()) { + !StaticPrefs::gfx_canvas_remote_use_canvas_translator_event_AtStartup() || + !aActor) { return nullptr; } + uint32_t managerId = static_cast(Manager())->Id(); + ActorId canvasId = aActor->Id(); + gfx::SurfaceFormat format = aCanvas->GetIsOpaque() ? gfx::SurfaceFormat::B8G8R8X8 : gfx::SurfaceFormat::B8G8R8A8; @@ -806,9 +810,6 @@ mRecorder->RecordEvent( RecordedResolveExternalSnapshot(syncId, gfx::ReferencePtr(surface))); - uint32_t managerId = static_cast(Manager())->Id(); - ActorId canvasId = aActor->Id(); - // Actually send the request via IPDL to snapshot the external WebGL canvas. SendSnapshotExternalCanvas(syncId, managerId, canvasId); diff -Nru firefox-esr-140.13.0esr/gfx/layers/ipc/SharedRGBImage.cpp firefox-esr-140.15.0esr/gfx/layers/ipc/SharedRGBImage.cpp --- firefox-esr-140.13.0esr/gfx/layers/ipc/SharedRGBImage.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/layers/ipc/SharedRGBImage.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -52,20 +52,27 @@ }; SharedRGBImage::SharedRGBImage(ImageClient* aCompositable) - : Image(nullptr, ImageFormat::SHARED_RGB), mCompositable(aCompositable) { + : Image(nullptr, ImageFormat::SHARED_RGB), + mCompositable(aCompositable), + mSourceSurface("SharedRGBImage::mSourceSurface") { MOZ_COUNT_CTOR(SharedRGBImage); } SharedRGBImage::SharedRGBImage(TextureClientRecycleAllocator* aRecycleAllocator) : Image(nullptr, ImageFormat::SHARED_RGB), - mRecycleAllocator(aRecycleAllocator) { + mRecycleAllocator(aRecycleAllocator), + mSourceSurface("SharedRGBImage::mSourceSurface") { MOZ_COUNT_CTOR(SharedRGBImage); } SharedRGBImage::~SharedRGBImage() { MOZ_COUNT_DTOR(SharedRGBImage); - NS_ReleaseOnMainThread("SharedRGBImage::mSourceSurface", - mSourceSurface.forget()); + RefPtr surface; + { + auto guard = mSourceSurface.Lock(); + surface = guard->forget(); + } + NS_ReleaseOnMainThread("SharedRGBImage::mSourceSurface", surface.forget()); } TextureClientRecycleAllocator* SharedRGBImage::RecycleAllocator() { @@ -111,10 +118,10 @@ static gfx::UserDataKey sTextureClientKey; already_AddRefed SharedRGBImage::GetAsSourceSurface() { - NS_ASSERTION(NS_IsMainThread(), "Must be main thread"); + auto guard = mSourceSurface.Lock(); - if (mSourceSurface) { - RefPtr surface(mSourceSurface); + if (*guard) { + RefPtr surface(*guard); return surface.forget(); } @@ -149,7 +156,7 @@ } } - mSourceSurface = surface; + *guard = surface; return surface.forget(); } diff -Nru firefox-esr-140.13.0esr/gfx/layers/ipc/SharedRGBImage.h firefox-esr-140.15.0esr/gfx/layers/ipc/SharedRGBImage.h --- firefox-esr-140.13.0esr/gfx/layers/ipc/SharedRGBImage.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/layers/ipc/SharedRGBImage.h 2026-08-26 17:03:42.000000000 +0000 @@ -13,6 +13,7 @@ #include "ImageContainer.h" // for ISharedImage, Image, etc #include "gfxTypes.h" #include "mozilla/Attributes.h" // for override +#include "mozilla/DataMutex.h" // for DataMutex #include "mozilla/RefPtr.h" // for RefPtr #include "mozilla/gfx/Point.h" // for IntSize #include "mozilla/gfx/Types.h" // for SurfaceFormat @@ -52,7 +53,7 @@ RefPtr mTextureClient; RefPtr mCompositable; RefPtr mRecycleAllocator; - RefPtr mSourceSurface; + DataMutex> mSourceSurface; }; } // namespace layers diff -Nru firefox-esr-140.13.0esr/gfx/layers/wr/AsyncImagePipelineManager.cpp firefox-esr-140.15.0esr/gfx/layers/wr/AsyncImagePipelineManager.cpp --- firefox-esr-140.13.0esr/gfx/layers/wr/AsyncImagePipelineManager.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/layers/wr/AsyncImagePipelineManager.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -200,7 +200,7 @@ if (auto entry = mAsyncImagePipelines.Lookup(id)) { const auto& holder = entry.Data(); wr::Epoch epoch = GetNextImageEpoch(); - aTxn.ClearDisplayList(epoch, aPipelineId); + aTxn.ClearDisplayList(epoch, mIdNamespace, aPipelineId); for (wr::ImageKey key : holder->mKeys) { aTxn.DeleteImage(key); } @@ -526,8 +526,9 @@ wr::BuiltDisplayList dl; aPipeline->mDLBuilder.End(dl); - aSceneBuilderTxn.SetDisplayList(aEpoch, aPipelineId, dl.dl_desc, dl.dl_items, - dl.dl_cache, dl.dl_spatial_tree); + aSceneBuilderTxn.SetDisplayList(aEpoch, mIdNamespace, aPipelineId, dl.dl_desc, + dl.dl_items, dl.dl_cache, + dl.dl_spatial_tree); } void AsyncImagePipelineManager::ApplyAsyncImageForPipeline( @@ -619,7 +620,8 @@ wr::BuiltDisplayList dl; builder.End(dl); - txn.SetDisplayList(epoch, aPipelineId, dl.dl_desc, dl.dl_items, dl.dl_cache, + txn.SetDisplayList(epoch, mIdNamespace, aPipelineId, dl.dl_desc, dl.dl_items, + dl.dl_cache, dl.dl_spatial_tree); } diff -Nru firefox-esr-140.13.0esr/gfx/layers/wr/WebRenderBridgeParent.cpp firefox-esr-140.15.0esr/gfx/layers/wr/WebRenderBridgeParent.cpp --- firefox-esr-140.13.0esr/gfx/layers/wr/WebRenderBridgeParent.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/layers/wr/WebRenderBridgeParent.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -1038,9 +1038,17 @@ wr::AsUint64(mPipelineId), wr::AsUint64(mApi->GetId()), IsRootWebRenderBridgeParent()); + nsTArray ids; + ids.SetCapacity(aIds.Length()); + for (uint64_t id : aIds) { + if (OwnsCompositorAnimationsId(id)) { + ids.AppendElement(id); + } + } + // Once mWrEpoch has been rendered, we can delete these compositor animations mCompositorAnimationsToDelete.push( - CompositorAnimationIdsForEpoch(mWrEpoch, std::move(aIds))); + CompositorAnimationIdsForEpoch(mWrEpoch, std::move(ids))); return IPC_OK(); } @@ -1199,8 +1207,8 @@ LayoutDeviceIntRect(LayoutDeviceIntPoint(), widgetSize); aTxn.SetDocumentView(rect); } - aTxn.SetDisplayList(aWrEpoch, mPipelineId, aDLDesc, dlItems, dlCache, - dlSpatialTreeData); + aTxn.SetDisplayList(aWrEpoch, mIdNamespace, mPipelineId, aDLDesc, dlItems, + dlCache, dlSpatialTreeData); MaybeNotifyOfLayers(aTxn, true); @@ -1619,10 +1627,7 @@ const OpAddCompositorAnimations& op = cmd.get_OpAddCompositorAnimations(); CompositorAnimations data(std::move(op.data())); - // AnimationHelper::GetNextCompositorAnimationsId() encodes the child - // process PID in the upper 32 bits of the id, verify that this is as - // expected. - if ((data.id() >> 32) != (uint64_t)OtherPid()) { + if (!OwnsCompositorAnimationsId(data.id())) { gfxCriticalNote << "TOpAddCompositorAnimations bad id"; success = false; continue; @@ -2061,7 +2066,7 @@ // Clear resources wr::TransactionBuilder txn(mApi); txn.SetLowPriority(true); - txn.ClearDisplayList(GetNextWrEpoch(), mPipelineId); + txn.ClearDisplayList(GetNextWrEpoch(), mIdNamespace, mPipelineId); MaybeNotifyOfLayers(txn, false); mApi->SendTransaction(txn); @@ -2275,7 +2280,9 @@ return IPC_FAIL_NO_REASON(this); } - if (RefPtr sampler = GetOMTASampler()) { + if (!OwnsCompositorAnimationsId(aCompositorAnimationsId)) { + *aValue = mozilla::null_t(); + } else if (RefPtr sampler = GetOMTASampler()) { Maybe testingTimeStamp; if (CompositorBridgeParent* cbp = GetRootCompositorBridgeParent()) { testingTimeStamp = cbp->GetTestingTimeStamp(); @@ -2864,7 +2871,7 @@ wr::TransactionBuilder txn(mApi); txn.SetLowPriority(true); - txn.ClearDisplayList(wrEpoch, mPipelineId); + txn.ClearDisplayList(wrEpoch, mIdNamespace, mPipelineId); for (const auto& entry : mAsyncCompositables) { wr::PipelineId pipelineId = wr::AsPipelineId(entry.first); diff -Nru firefox-esr-140.13.0esr/gfx/layers/wr/WebRenderBridgeParent.h firefox-esr-140.15.0esr/gfx/layers/wr/WebRenderBridgeParent.h --- firefox-esr-140.13.0esr/gfx/layers/wr/WebRenderBridgeParent.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/layers/wr/WebRenderBridgeParent.h 2026-08-26 17:03:42.000000000 +0000 @@ -253,6 +253,15 @@ mIdNamespace.mHandle; } + /** + * AnimationHelper::GetNextCompositorAnimationsId() encodes the child + * process PID in the upper 32 bits of the id, verify that this is as + * expected. + */ + bool OwnsCompositorAnimationsId(uint64_t aId) const { + return (aId >> 32) == (uint64_t)OtherPid(); + } + void FlushRendering(wr::RenderReasons aReasons, bool aBlocking); /** diff -Nru firefox-esr-140.13.0esr/gfx/metrics.yaml firefox-esr-140.15.0esr/gfx/metrics.yaml --- firefox-esr-140.13.0esr/gfx/metrics.yaml 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/metrics.yaml 2026-08-26 17:03:42.000000000 +0000 @@ -1667,23 +1667,6 @@ expires: never telemetry_mirror: h#BAD_FALLBACK_FONT - gdi_init_total: - type: timing_distribution - description: > - gfxGDIFontList::InitFontList Total (ms) - - This metric was generated to correspond to the Legacy Telemetry - exponential histogram GDI_INITFONTLIST_TOTAL. - time_unit: millisecond - bugs: - - https://bugzilla.mozilla.org/show_bug.cgi?id=1935420 - data_reviews: - - https://bugzilla.mozilla.org/show_bug.cgi?id=1935420 - notification_emails: - - gfx-telemetry-alerts@mozilla.com - expires: never - telemetry_mirror: GDI_INITFONTLIST_TOTAL - mac_init_total: type: timing_distribution description: > diff -Nru firefox-esr-140.13.0esr/gfx/skia/skia/src/core/SkBlitBWMaskTemplate.h firefox-esr-140.15.0esr/gfx/skia/skia/src/core/SkBlitBWMaskTemplate.h --- firefox-esr-140.13.0esr/gfx/skia/skia/src/core/SkBlitBWMaskTemplate.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/skia/skia/src/core/SkBlitBWMaskTemplate.h 2026-08-26 17:03:42.000000000 +0000 @@ -45,7 +45,7 @@ const uint8_t* bits = srcMask.getAddr1(cx, cy); SK_BLITBWMASK_DEVTYPE* device = dstPixmap.SK_BLITBWMASK_GETADDR(cx, cy); - if (cx == maskLeft && clip.fRight == srcMask.fBounds.fRight) + if (cx == maskLeft && clip.fRight == srcMask.fBounds.fRight && (clip.width() & 7) == 0) { do { SK_BLITBWMASK_DEVTYPE* dst = device; diff -Nru firefox-esr-140.13.0esr/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp firefox-esr-140.15.0esr/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp --- firefox-esr-140.13.0esr/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/skia/skia/src/ports/SkFontHost_cairo.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -564,17 +564,16 @@ if (fFTFace->glyph->bitmap.pixel_mode == FT_PIXEL_MODE_BGRA) { mx.maskFormat = SkMask::kARGB32_Format; - } - - if (isLCD(fRec)) { - fRec.fMaskFormat = SkMask::kA8_Format; + } else if (fFTFace->glyph->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY || + isLCD(fRec)) { + mx.maskFormat = SkMask::kA8_Format; } if (fHaveShape) { // Ensure filtering is preserved when the bitmap is transformed. // Otherwise, the result will look horrifically aliased. - if (fRec.fMaskFormat == SkMask::kBW_Format) { - fRec.fMaskFormat = SkMask::kA8_Format; + if (mx.maskFormat == SkMask::kBW_Format) { + mx.maskFormat = SkMask::kA8_Format; } // Apply the shape matrix to the glyph's bounding box. diff -Nru firefox-esr-140.13.0esr/gfx/thebes/CoreTextFontList.cpp firefox-esr-140.15.0esr/gfx/thebes/CoreTextFontList.cpp --- firefox-esr-140.13.0esr/gfx/thebes/CoreTextFontList.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/CoreTextFontList.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -377,12 +377,17 @@ } gfxFont* CTFontEntry::CreateFontInstance(const gfxFontStyle* aFontStyle) { - RefPtr unscaledFont(mUnscaledFont); + RefPtr unscaledFont; + { + AutoReadLock lock(mLock); + unscaledFont = RefPtr(mUnscaledFont); + } if (!unscaledFont) { CGFontRef baseFont = GetFontRef(); if (!baseFont) { return nullptr; } + AutoWriteLock lock(mLock); unscaledFont = new UnscaledFontMac(baseFont, mIsDataUserFont); mUnscaledFont = unscaledFont; } diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxDWriteFontList.cpp firefox-esr-140.15.0esr/gfx/thebes/gfxDWriteFontList.cpp --- firefox-esr-140.13.0esr/gfx/thebes/gfxDWriteFontList.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxDWriteFontList.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -28,7 +28,7 @@ #include "nsDirectoryServiceDefs.h" #include "nsAppDirectoryServiceDefs.h" -#include "gfxGDIFontList.h" +#include "../2d/AutoHelpersWin.h" #include "gfxRect.h" #include "SharedFontList-impl.h" @@ -705,7 +705,11 @@ useBoldSim ? DWRITE_FONT_SIMULATIONS_BOLD : DWRITE_FONT_SIMULATIONS_NONE; ThreadSafeWeakPtr& unscaledFontPtr = useBoldSim ? mUnscaledFontBold : mUnscaledFont; - RefPtr unscaledFont(unscaledFontPtr); + RefPtr unscaledFont; + { + AutoReadLock lock(mLock); + unscaledFont = RefPtr(unscaledFontPtr); + } if (!unscaledFont) { RefPtr fontFace; nsresult rv = @@ -713,6 +717,7 @@ if (NS_FAILED(rv)) { return nullptr; } + AutoWriteLock lock(mLock); // Only pass in the underlying IDWriteFont if the unscaled font doesn't // reflect a data font. This signals whether or not we can safely query // a descriptor to represent the font for various transport use-cases. diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxDWriteFonts.cpp firefox-esr-140.15.0esr/gfx/thebes/gfxDWriteFonts.cpp --- firefox-esr-140.13.0esr/gfx/thebes/gfxDWriteFonts.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxDWriteFonts.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -83,8 +83,7 @@ : gfxFont(aUnscaledFont, aFontEntry, aFontStyle, anAAOption), mFontFace(aFontFace ? aFontFace : aUnscaledFont->GetFontFace()), mUseSubpixelPositions(false), - mAllowManualShowGlyphs(true), - mAzureScaledFontUsedClearType(false) { + mAllowManualShowGlyphs(true) { // If the IDWriteFontFace1 interface is available, we can use that for // faster glyph width retrieval. mFontFace->QueryInterface(__uuidof(IDWriteFontFace1), @@ -115,6 +114,12 @@ if (auto* scaledFont = mAzureScaledFontGDI.exchange(nullptr)) { scaledFont->Release(); } + if (auto* scaledFont = mAzureScaledFontClearType.exchange(nullptr)) { + scaledFont->Release(); + } + if (auto* scaledFont = mAzureScaledFontGDIClearType.exchange(nullptr)) { + scaledFont->Release(); + } } /* static */ @@ -801,16 +806,12 @@ already_AddRefed gfxDWriteFont::GetScaledFont( const TextRunDrawParams& aRunParams) { bool useClearType = UsingClearType(); - if (mAzureScaledFontUsedClearType != useClearType) { - if (auto* oldScaledFont = mAzureScaledFont.exchange(nullptr)) { - oldScaledFont->Release(); - } - if (auto* oldScaledFont = mAzureScaledFontGDI.exchange(nullptr)) { - oldScaledFont->Release(); - } - } bool forceGDI = aRunParams.allowGDI && GetForceGDIClassic(); - ScaledFont* scaledFont = forceGDI ? mAzureScaledFontGDI : mAzureScaledFont; + auto& scaledFontCacheRef = + useClearType ? (forceGDI ? mAzureScaledFontGDIClearType + : mAzureScaledFontClearType) + : (forceGDI ? mAzureScaledFontGDI : mAzureScaledFont); + ScaledFont* scaledFont = scaledFontCacheRef; if (scaledFont) { return do_AddRef(scaledFont); } @@ -830,19 +831,10 @@ } InitializeScaledFont(newScaledFont); - if (forceGDI) { - if (mAzureScaledFontGDI.compareExchange(nullptr, newScaledFont.get())) { - Unused << newScaledFont.forget(); - mAzureScaledFontUsedClearType = useClearType; - } - scaledFont = mAzureScaledFontGDI; - } else { - if (mAzureScaledFont.compareExchange(nullptr, newScaledFont.get())) { - Unused << newScaledFont.forget(); - mAzureScaledFontUsedClearType = useClearType; - } - scaledFont = mAzureScaledFont; + if (scaledFontCacheRef.compareExchange(nullptr, newScaledFont.get())) { + Unused << newScaledFont.forget(); } + scaledFont = scaledFontCacheRef; return do_AddRef(scaledFont); } diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxDWriteFonts.h firefox-esr-140.15.0esr/gfx/thebes/gfxDWriteFonts.h --- firefox-esr-140.13.0esr/gfx/thebes/gfxDWriteFonts.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxDWriteFonts.h 2026-08-26 17:03:43.000000000 +0000 @@ -100,15 +100,15 @@ bool mUseSubpixelPositions; bool mAllowManualShowGlyphs; - // Used to record the sUseClearType setting at the time mAzureScaledFont - // was set up, so we can tell if it's stale and needs to be re-created. - mozilla::Atomic mAzureScaledFontUsedClearType; - // Cache the GDI version of the ScaledFont so that font keys and other // meta-data can remain stable even if there is thrashing between GDI and // non-GDI usage. mozilla::Atomic mAzureScaledFontGDI; + // Cache the ClearType-enabled versions of ScaledFonts if setting is toggled. + mozilla::Atomic mAzureScaledFontClearType; + mozilla::Atomic mAzureScaledFontGDIClearType; + bool UsingClearType() { return mozilla::gfx::gfxVars::SystemTextQuality() == CLEARTYPE_QUALITY; } diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxFT2FontList.cpp firefox-esr-140.15.0esr/gfx/thebes/gfxFT2FontList.cpp --- firefox-esr-140.13.0esr/gfx/thebes/gfxFT2FontList.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxFT2FontList.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -229,8 +229,13 @@ loadFlags &= ~FT_LOAD_NO_AUTOHINT; } - RefPtr unscaledFont(mUnscaledFont); + RefPtr unscaledFont; + { + AutoReadLock lock(mLock); + unscaledFont = RefPtr(mUnscaledFont); + } if (!unscaledFont) { + AutoWriteLock lock(mLock); RefPtr origFace(mFTFace); unscaledFont = !mFilename.IsEmpty() && mFilename[0] == '/' diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxFont.cpp firefox-esr-140.15.0esr/gfx/thebes/gfxFont.cpp --- firefox-esr-140.13.0esr/gfx/thebes/gfxFont.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxFont.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -912,14 +912,11 @@ } } else { // complex glyphs ==> add offset at cluster/ligature boundaries - uint32_t detailedLength = glyphData->GetGlyphCount(); - if (detailedLength) { - DetailedGlyph* details = GetDetailedGlyphs(i); - if (!details) { - continue; - } + uint32_t glyphCount = glyphData->GetGlyphCount(); + if (glyphCount) { + auto* details = GetDetailedGlyphs(i, glyphCount); auto& advance = IsRightToLeft() ? details[0].mAdvance - : details[detailedLength - 1].mAdvance; + : details[glyphCount - 1].mAdvance; if (advance > 0) { advance = std::max(0, advance + appUnitAdjustment); } @@ -2103,7 +2100,7 @@ // Add extra buffer capacity to allow for multiple-glyph entry. aBuffer.AddCapacity(glyphCount - 1, capacityMult); const gfxShapedText::DetailedGlyph* details = - aShapedText->GetDetailedGlyphs(aOffset + i); + aShapedText->GetDetailedGlyphs(aOffset + i, glyphCount); MOZ_ASSERT(details, "missing DetailedGlyph!"); for (uint32_t j = 0; j < glyphCount; ++j, ++details) { float advance = @@ -3002,7 +2999,7 @@ uint32_t glyphCount = glyphData->GetGlyphCount(); if (glyphCount > 0) { const gfxTextRun::DetailedGlyph* details = - aTextRun->GetDetailedGlyphs(i); + aTextRun->GetDetailedGlyphs(i, glyphCount); NS_ASSERTION(details != nullptr, "detailedGlyph record should not be missing!"); uint32_t j; @@ -3075,7 +3072,7 @@ uint32_t glyphCount = glyphData->GetGlyphCount(); if (glyphCount > 0) { const gfxTextRun::DetailedGlyph* details = - aTextRun->GetDetailedGlyphs(i); + aTextRun->GetDetailedGlyphs(i, glyphCount); NS_ASSERTION(details != nullptr, "detailedGlyph record should not be missing!"); uint32_t j; diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxFont.h firefox-esr-140.15.0esr/gfx/thebes/gfxFont.h --- firefox-esr-140.13.0esr/gfx/thebes/gfxFont.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxFont.h 2026-08-26 17:03:43.000000000 +0000 @@ -898,11 +898,14 @@ uint8_t CanBreakBefore() const { return (mValue & FLAGS_CAN_BREAK_BEFORE) >> FLAGS_CAN_BREAK_SHIFT; } - // Returns FLAGS_CAN_BREAK_BEFORE if the setting changed, 0 otherwise + // Returns any break-before flags that were modifed; 0 if nothing changed. uint32_t SetCanBreakBefore(uint8_t aCanBreakBefore) { MOZ_ASSERT(aCanBreakBefore <= 3, "Bogus break-flags value!"); - uint32_t breakMask = (uint32_t(aCanBreakBefore) << FLAGS_CAN_BREAK_SHIFT); - uint32_t toggle = breakMask ^ (mValue & FLAGS_CAN_BREAK_BEFORE); + // Shift the input value to the relevant bit positions. + uint32_t breakMask = uint32_t(aCanBreakBefore) << FLAGS_CAN_BREAK_SHIFT; + // Determine which bits in the break field are changing (if any). + uint32_t toggle = (breakMask ^ mValue) & FLAGS_CAN_BREAK_BEFORE; + // Update the value, and return the bits that changed. mValue ^= toggle; return toggle; } @@ -1059,12 +1062,13 @@ // NOTE that this must not be called for a character offset that does // not have any DetailedGlyph records; callers must have verified that // GetCharacterGlyphs()[aCharIndex].GetGlyphCount() is greater than zero. - DetailedGlyph* GetDetailedGlyphs(uint32_t aCharIndex) const { - NS_ASSERTION(GetCharacterGlyphs() && HasDetailedGlyphs() && - !GetCharacterGlyphs()[aCharIndex].IsSimpleGlyph() && - GetCharacterGlyphs()[aCharIndex].GetGlyphCount() > 0, - "invalid use of GetDetailedGlyphs; check the caller!"); - return mDetailedGlyphs->Get(aCharIndex); + DetailedGlyph* GetDetailedGlyphs(uint32_t aCharIndex, uint32_t aCount) const { + MOZ_ASSERT(GetCharacterGlyphs() && HasDetailedGlyphs() && + !GetCharacterGlyphs()[aCharIndex].IsSimpleGlyph() && + GetCharacterGlyphs()[aCharIndex].GetGlyphCount() == aCount && + aCount > 0, + "invalid use of GetDetailedGlyphs; check the caller!"); + return mDetailedGlyphs->Get(aCharIndex, aCount); } void ApplyTrackingToClusters(gfxFloat aTrackingAdjustment, uint32_t aOffset, @@ -1172,26 +1176,35 @@ // mCharacterGlyphs[aOffset].GetGlyphCount() is greater than zero // before calling this, otherwise the assertions here will fire (in a // debug build), and we'll probably crash. - DetailedGlyph* Get(uint32_t aOffset) { + DetailedGlyph* Get(uint32_t aOffset, uint32_t aCount) { NS_ASSERTION(mOffsetToIndex.Length() > 0, "no detailed glyph records!"); - DetailedGlyph* details = mDetails.Elements(); - // check common cases (fwd iteration, initial entry, etc) first - if (mLastUsed < mOffsetToIndex.Length() - 1 && - aOffset == mOffsetToIndex[mLastUsed + 1].mOffset) { - ++mLastUsed; + // Load the last-used-position hint. + nsTArray::index_type lastUsed = + mLastUsed.load(std::memory_order_relaxed); + // Check common cases (fwd iteration, initial entry, etc) first. + if (lastUsed < mOffsetToIndex.Length() - 1 && + aOffset == mOffsetToIndex[lastUsed + 1].mOffset) { + ++lastUsed; } else if (aOffset == mOffsetToIndex[0].mOffset) { - mLastUsed = 0; - } else if (aOffset == mOffsetToIndex[mLastUsed].mOffset) { + lastUsed = 0; + } else if (aOffset == mOffsetToIndex[lastUsed].mOffset) { // do nothing - } else if (mLastUsed > 0 && - aOffset == mOffsetToIndex[mLastUsed - 1].mOffset) { - --mLastUsed; + } else if (lastUsed > 0 && + aOffset == mOffsetToIndex[lastUsed - 1].mOffset) { + --lastUsed; } else { - mLastUsed = mOffsetToIndex.BinaryIndexOf(aOffset, CompareToOffset()); + // None of the fast-paths applied, so do the binary search. + lastUsed = mOffsetToIndex.BinaryIndexOf(aOffset, CompareToOffset()); } - NS_ASSERTION(mLastUsed != nsTArray::NoIndex, + NS_ASSERTION(lastUsed != nsTArray::NoIndex, "detailed glyph record missing!"); - return details + mOffsetToIndex[mLastUsed].mIndex; + uint32_t index = mOffsetToIndex[lastUsed].mIndex; + // Remember the position, as a hint for next time. + mLastUsed.store(lastUsed, std::memory_order_relaxed); + // Ensure that |aCount| records are available, starting at |index|. + MOZ_RELEASE_ASSERT(index < mDetails.Length() && + aCount <= mDetails.Length() - index); + return mDetails.Elements() + index; } DetailedGlyph* Allocate(uint32_t aOffset, uint32_t aCount) { @@ -1256,7 +1269,10 @@ // Records the most recently used index into mOffsetToIndex, so that // we can support sequential access more quickly than just doing // a binary search each time. - nsTArray::index_type mLastUsed = 0; + // Atomic because multiple threads may be accessing the same shaped- + // word or textrun; if so, they may overwrite each other's values and + // degrade performance slightly, but this is harmless. + std::atomic::index_type> mLastUsed = 0; }; mozilla::UniquePtr mDetailedGlyphs; diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxFontUtils.cpp firefox-esr-140.15.0esr/gfx/thebes/gfxFontUtils.cpp --- firefox-esr-140.13.0esr/gfx/thebes/gfxFontUtils.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxFontUtils.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -636,8 +636,10 @@ const AutoSwap_PRUint16* idDelta = &startCodes[segCount]; const AutoSwap_PRUint16* idRangeOffset = &idDelta[segCount]; - // Sanity-check that the fixed-size arrays don't exceed the buffer. - const uint8_t* const limit = aBuf + aLength; + // Sanity-check that the fixed-size arrays don't exceed the buffer or the + // current subtable. + const uint8_t* const limit = + aBuf + std::min(aLength, uint32_t(cmap4->length)); if ((const uint8_t*)(&idRangeOffset[segCount]) > limit) { return 0; // broken font, just bail out safely } diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxGDIFont.cpp firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFont.cpp --- firefox-esr-140.13.0esr/gfx/thebes/gfxGDIFont.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFont.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,553 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "gfxGDIFont.h" - -#include "mozilla/MemoryReporting.h" -#include "mozilla/Sprintf.h" -#include "mozilla/WindowsVersion.h" - -#include -#include "gfxWindowsPlatform.h" -#include "gfxContext.h" -#include "mozilla/Preferences.h" -#include "nsUnicodeProperties.h" -#include "gfxFontConstants.h" -#include "gfxHarfBuzzShaper.h" -#include "gfxTextRun.h" - -#include "cairo-win32.h" - -#define ROUND(x) floor((x) + 0.5) - -using namespace mozilla; -using namespace mozilla::gfx; -using namespace mozilla::unicode; - -gfxGDIFont::gfxGDIFont(GDIFontEntry* aFontEntry, const gfxFontStyle* aFontStyle, - AntialiasOption anAAOption) - : gfxFont(nullptr, aFontEntry, aFontStyle, anAAOption), - mFont(nullptr), - mMetrics(nullptr), - mIsBitmap(false), - mScriptCache(nullptr) { - mNeedsSyntheticBold = aFontStyle->NeedsSyntheticBold(aFontEntry); - - Initialize(); - - if (mFont) { - mUnscaledFont = aFontEntry->LookupUnscaledFont(mFont); - } -} - -gfxGDIFont::~gfxGDIFont() { - if (mFont) { - ::DeleteObject(mFont); - } - if (mScriptCache) { - ScriptFreeCache(&mScriptCache); - } - delete mMetrics; -} - -gfxFont* gfxGDIFont::CopyWithAntialiasOption(AntialiasOption anAAOption) const { - auto entry = static_cast(mFontEntry.get()); - return new gfxGDIFont(entry, &mStyle, anAAOption); -} - -bool gfxGDIFont::ShapeText(DrawTarget* aDrawTarget, const char16_t* aText, - uint32_t aOffset, uint32_t aLength, Script aScript, - nsAtom* aLanguage, bool aVertical, - RoundingFlags aRounding, - gfxShapedText* aShapedText) { - if (!mIsValid) { - NS_WARNING("invalid font! expect incorrect text rendering"); - return false; - } - - return gfxFont::ShapeText(aDrawTarget, aText, aOffset, aLength, aScript, - aLanguage, aVertical, aRounding, aShapedText); -} - -already_AddRefed gfxGDIFont::GetScaledFont( - const TextRunDrawParams& aRunParams) { - if (ScaledFont* scaledFont = mAzureScaledFont) { - return do_AddRef(scaledFont); - } - - LOGFONT lf; - GetObject(GetHFONT(), sizeof(LOGFONT), &lf); - - RefPtr newScaledFont = Factory::CreateScaledFontForGDIFont( - &lf, GetUnscaledFont(), GetAdjustedSize()); - if (!newScaledFont) { - return nullptr; - } - - InitializeScaledFont(newScaledFont); - - if (mAzureScaledFont.compareExchange(nullptr, newScaledFont.get())) { - Unused << newScaledFont.forget(); - } - ScaledFont* scaledFont = mAzureScaledFont; - return do_AddRef(scaledFont); -} - -gfxFont::RunMetrics gfxGDIFont::Measure(const gfxTextRun* aTextRun, - uint32_t aStart, uint32_t aEnd, - BoundingBoxType aBoundingBoxType, - DrawTarget* aRefDrawTarget, - Spacing* aSpacing, - gfx::ShapedTextFlags aOrientation) { - gfxFont::RunMetrics metrics = - gfxFont::Measure(aTextRun, aStart, aEnd, aBoundingBoxType, aRefDrawTarget, - aSpacing, aOrientation); - - // if aBoundingBoxType is LOOSE_INK_EXTENTS - // and the underlying cairo font may be antialiased, - // we can't trust Windows to have considered all the pixels - // so we need to add "padding" to the bounds. - // (see bugs 475968, 439831, compare also bug 445087) - if (aBoundingBoxType == LOOSE_INK_EXTENTS && - mAntialiasOption != kAntialiasNone && metrics.mBoundingBox.Width() > 0) { - metrics.mBoundingBox.MoveByX(-aTextRun->GetAppUnitsPerDevUnit()); - metrics.mBoundingBox.SetWidth(metrics.mBoundingBox.Width() + - aTextRun->GetAppUnitsPerDevUnit() * 3); - } - - return metrics; -} - -void gfxGDIFont::Initialize() { - NS_ASSERTION(!mMetrics, "re-creating metrics? this will leak"); - - LOGFONTW logFont; - - if (mAdjustedSize == 0.0) { - mAdjustedSize = GetAdjustedSize(); - if (FontSizeAdjust::Tag(mStyle.sizeAdjustBasis) != - FontSizeAdjust::Tag::None) { - if (mStyle.sizeAdjust > 0.0 && mAdjustedSize > 0.0) { - // to implement font-size-adjust, we first create the "unadjusted" font - FillLogFont(logFont, mAdjustedSize); - mFont = ::CreateFontIndirectW(&logFont); - - // initialize its metrics so we can calculate size adjustment - Initialize(); - - // Unless the font was so small that GDI metrics rounded to zero, - // calculate the properly adjusted size, and then proceed - // to recreate mFont and recalculate metrics - if (mMetrics->emHeight > 0.0) { - gfxFloat aspect; - switch (FontSizeAdjust::Tag(mStyle.sizeAdjustBasis)) { - default: - MOZ_ASSERT_UNREACHABLE("unhandled sizeAdjustBasis?"); - aspect = 0.0; - break; - case FontSizeAdjust::Tag::ExHeight: - aspect = mMetrics->xHeight / mMetrics->emHeight; - break; - case FontSizeAdjust::Tag::CapHeight: - aspect = mMetrics->capHeight / mMetrics->emHeight; - break; - case FontSizeAdjust::Tag::ChWidth: { - gfxFloat advance = GetCharAdvance('0'); - aspect = advance > 0.0 ? advance / mMetrics->emHeight : 0.5; - break; - } - case FontSizeAdjust::Tag::IcWidth: - case FontSizeAdjust::Tag::IcHeight: { - bool vertical = FontSizeAdjust::Tag(mStyle.sizeAdjustBasis) == - FontSizeAdjust::Tag::IcHeight; - gfxFloat advance = GetCharAdvance(kWaterIdeograph, vertical); - aspect = advance > 0.0 ? advance / mMetrics->emHeight : 1.0; - break; - } - } - if (aspect > 0.0) { - // If we created a shaper above (to measure glyphs), discard it so - // we get a new one for the adjusted scaling. - delete mHarfBuzzShaper.exchange(nullptr); - mAdjustedSize = mStyle.GetAdjustedSize(aspect); - } - } - - // delete the temporary font and metrics - ::DeleteObject(mFont); - mFont = nullptr; - delete mMetrics; - mMetrics = nullptr; - } else { - mAdjustedSize = 0.0; - } - } - } - - // (bug 724231) for local user fonts, we don't use GDI's synthetic bold, - // as it could lead to a different, incompatible face being used - // but instead do our own multi-striking - if (mNeedsSyntheticBold && GetFontEntry()->IsLocalUserFont()) { - mApplySyntheticBold = true; - } - - // this may end up being zero - mAdjustedSize = ROUND(mAdjustedSize); - FillLogFont(logFont, mAdjustedSize); - mFont = ::CreateFontIndirectW(&logFont); - - mMetrics = new gfxFont::Metrics; - ::memset(mMetrics, 0, sizeof(*mMetrics)); - - if (!mFont) { - NS_WARNING("Failed creating GDI font"); - mIsValid = false; - return; - } - - AutoDC dc; - SetGraphicsMode(dc.GetDC(), GM_ADVANCED); - AutoSelectFont selectFont(dc.GetDC(), mFont); - - // Get font metrics if size > 0 - if (mAdjustedSize > 0.0) { - OUTLINETEXTMETRIC oMetrics; - TEXTMETRIC& metrics = oMetrics.otmTextMetrics; - - if (0 < GetOutlineTextMetrics(dc.GetDC(), sizeof(oMetrics), &oMetrics)) { - mMetrics->strikeoutSize = (double)oMetrics.otmsStrikeoutSize; - mMetrics->strikeoutOffset = (double)oMetrics.otmsStrikeoutPosition; - mMetrics->underlineSize = (double)oMetrics.otmsUnderscoreSize; - mMetrics->underlineOffset = (double)oMetrics.otmsUnderscorePosition; - - const MAT2 kIdentityMatrix = {{0, 1}, {0, 0}, {0, 0}, {0, 1}}; - GLYPHMETRICS gm; - DWORD len = GetGlyphOutlineW(dc.GetDC(), char16_t('x'), GGO_METRICS, &gm, - 0, nullptr, &kIdentityMatrix); - if (len == GDI_ERROR || gm.gmptGlyphOrigin.y <= 0) { - // 56% of ascent, best guess for true type - mMetrics->xHeight = - ROUND((double)metrics.tmAscent * DEFAULT_XHEIGHT_FACTOR); - } else { - mMetrics->xHeight = gm.gmptGlyphOrigin.y; - } - len = GetGlyphOutlineW(dc.GetDC(), char16_t('H'), GGO_METRICS, &gm, 0, - nullptr, &kIdentityMatrix); - if (len == GDI_ERROR || gm.gmptGlyphOrigin.y <= 0) { - mMetrics->capHeight = metrics.tmAscent - metrics.tmInternalLeading; - } else { - mMetrics->capHeight = gm.gmptGlyphOrigin.y; - } - mMetrics->emHeight = metrics.tmHeight - metrics.tmInternalLeading; - gfxFloat typEmHeight = - (double)oMetrics.otmAscent - (double)oMetrics.otmDescent; - mMetrics->emAscent = - ROUND(mMetrics->emHeight * (double)oMetrics.otmAscent / typEmHeight); - mMetrics->emDescent = mMetrics->emHeight - mMetrics->emAscent; - if (oMetrics.otmEMSquare > 0) { - mFUnitsConvFactor = float(mAdjustedSize / oMetrics.otmEMSquare); - } - } else { - // Make a best-effort guess at extended metrics - // this is based on general typographic guidelines - - // GetTextMetrics can fail if the font file has been removed - // or corrupted recently. - BOOL result = GetTextMetrics(dc.GetDC(), &metrics); - if (!result) { - NS_WARNING("Missing or corrupt font data, fasten your seatbelt"); - mIsValid = false; - memset(mMetrics, 0, sizeof(*mMetrics)); - return; - } - - mMetrics->xHeight = - ROUND((float)metrics.tmAscent * DEFAULT_XHEIGHT_FACTOR); - mMetrics->strikeoutSize = 1; - mMetrics->strikeoutOffset = - ROUND(mMetrics->xHeight * 0.5f); // 50% of xHeight - mMetrics->underlineSize = 1; - mMetrics->underlineOffset = - -ROUND((float)metrics.tmDescent * 0.30f); // 30% of descent - mMetrics->emHeight = metrics.tmHeight - metrics.tmInternalLeading; - mMetrics->emAscent = metrics.tmAscent - metrics.tmInternalLeading; - mMetrics->emDescent = metrics.tmDescent; - mMetrics->capHeight = mMetrics->emAscent; - } - - mMetrics->internalLeading = metrics.tmInternalLeading; - mMetrics->externalLeading = metrics.tmExternalLeading; - mMetrics->maxHeight = metrics.tmHeight; - mMetrics->maxAscent = metrics.tmAscent; - mMetrics->maxDescent = metrics.tmDescent; - mMetrics->maxAdvance = metrics.tmMaxCharWidth; - mMetrics->aveCharWidth = std::max(1, metrics.tmAveCharWidth); - // The font is monospace when TMPF_FIXED_PITCH is *not* set! - // See http://msdn2.microsoft.com/en-us/library/ms534202(VS.85).aspx - if (!(metrics.tmPitchAndFamily & TMPF_FIXED_PITCH)) { - mMetrics->maxAdvance = mMetrics->aveCharWidth; - } - - mIsBitmap = !(metrics.tmPitchAndFamily & TMPF_VECTOR); - - // For fonts with USE_TYPO_METRICS set in the fsSelection field, - // let the OS/2 sTypo* metrics override the previous values. - // (see http://www.microsoft.com/typography/otspec/os2.htm#fss) - // Using the equivalent values from oMetrics provides inconsistent - // results with CFF fonts, so we instead rely on OS2Table. - gfxFontEntry::AutoTable os2Table(mFontEntry, - TRUETYPE_TAG('O', 'S', '/', '2')); - if (os2Table) { - uint32_t len; - const OS2Table* os2 = - reinterpret_cast(hb_blob_get_data(os2Table, &len)); - if (len >= offsetof(OS2Table, sTypoLineGap) + sizeof(int16_t)) { - const uint16_t kUseTypoMetricsMask = 1 << 7; - if ((uint16_t(os2->fsSelection) & kUseTypoMetricsMask)) { - double ascent = int16_t(os2->sTypoAscender); - double descent = int16_t(os2->sTypoDescender); - double lineGap = int16_t(os2->sTypoLineGap); - mMetrics->maxAscent = ROUND(ascent * mFUnitsConvFactor); - mMetrics->maxDescent = -ROUND(descent * mFUnitsConvFactor); - mMetrics->maxHeight = mMetrics->maxAscent + mMetrics->maxDescent; - mMetrics->internalLeading = mMetrics->maxHeight - mMetrics->emHeight; - gfxFloat lineHeight = - ROUND((ascent - descent + lineGap) * mFUnitsConvFactor); - lineHeight = std::max(lineHeight, mMetrics->maxHeight); - mMetrics->externalLeading = lineHeight - mMetrics->maxHeight; - } - } - // although sxHeight and sCapHeight are signed fields, we consider - // negative values to be erroneous and just ignore them - if (uint16_t(os2->version) >= 2) { - // version 2 and later includes the x-height and cap-height fields - if (len >= offsetof(OS2Table, sxHeight) + sizeof(int16_t) && - int16_t(os2->sxHeight) > 0) { - mMetrics->xHeight = ROUND(int16_t(os2->sxHeight) * mFUnitsConvFactor); - } - if (len >= offsetof(OS2Table, sCapHeight) + sizeof(int16_t) && - int16_t(os2->sCapHeight) > 0) { - mMetrics->capHeight = - ROUND(int16_t(os2->sCapHeight) * mFUnitsConvFactor); - } - } - } - - WORD glyph; - SIZE size; - DWORD ret = GetGlyphIndicesW(dc.GetDC(), L" ", 1, &glyph, - GGI_MARK_NONEXISTING_GLYPHS); - if (ret != GDI_ERROR && glyph != 0xFFFF) { - mSpaceGlyph = glyph; - // Cache the width of a single space. - GetTextExtentPoint32W(dc.GetDC(), L" ", 1, &size); - mMetrics->spaceWidth = ROUND(size.cx); - } else { - mMetrics->spaceWidth = mMetrics->aveCharWidth; - } - - // Cache the width of digit zero, if available. - ret = GetGlyphIndicesW(dc.GetDC(), L"0", 1, &glyph, - GGI_MARK_NONEXISTING_GLYPHS); - if (ret != GDI_ERROR && glyph != 0xFFFF) { - GetTextExtentPoint32W(dc.GetDC(), L"0", 1, &size); - mMetrics->zeroWidth = ROUND(size.cx); - } else { - mMetrics->zeroWidth = -1.0; // indicates not found - } - - wchar_t ch = kWaterIdeograph; - ret = GetGlyphIndicesW(dc.GetDC(), &ch, 1, &glyph, - GGI_MARK_NONEXISTING_GLYPHS); - if (ret != GDI_ERROR && glyph != 0xFFFF) { - GetTextExtentPoint32W(dc.GetDC(), &ch, 1, &size); - mMetrics->ideographicWidth = ROUND(size.cx); - } else { - mMetrics->ideographicWidth = -1.0; - } - - SanitizeMetrics(mMetrics, GetFontEntry()->mIsBadUnderlineFont); - } else { - mFUnitsConvFactor = 0.0; // zero-sized font: all values scale to zero - } - - if (ApplySyntheticBold()) { - auto delta = GetSyntheticBoldOffset(); - mMetrics->spaceWidth += delta; - mMetrics->aveCharWidth += delta; - mMetrics->maxAdvance += delta; - if (mMetrics->zeroWidth > 0) { - mMetrics->zeroWidth += delta; - } - if (mMetrics->ideographicWidth > 0) { - mMetrics->ideographicWidth += delta; - } - } - -#if 0 - printf("Font: %p (%s) size: %f adjusted size: %f valid: %s\n", this, - GetName().get(), mStyle.size, mAdjustedSize, (mIsValid ? "yes" : "no")); - printf(" emHeight: %f emAscent: %f emDescent: %f\n", mMetrics->emHeight, mMetrics->emAscent, mMetrics->emDescent); - printf(" maxAscent: %f maxDescent: %f maxAdvance: %f\n", mMetrics->maxAscent, mMetrics->maxDescent, mMetrics->maxAdvance); - printf(" internalLeading: %f externalLeading: %f\n", mMetrics->internalLeading, mMetrics->externalLeading); - printf(" spaceWidth: %f aveCharWidth: %f\n", mMetrics->spaceWidth, mMetrics->aveCharWidth); - printf(" xHeight: %f capHeight: %f\n", mMetrics->xHeight, mMetrics->capHeight); - printf(" uOff: %f uSize: %f stOff: %f stSize: %f\n", - mMetrics->underlineOffset, mMetrics->underlineSize, mMetrics->strikeoutOffset, mMetrics->strikeoutSize); -#endif -} - -void gfxGDIFont::FillLogFont(LOGFONTW& aLogFont, gfxFloat aSize) { - GDIFontEntry* fe = static_cast(GetFontEntry()); - - // Figure out the lfWeight value to use for GDI font selection, - // or zero to use the entry's current LOGFONT value. - LONG weight; - if (fe->IsUserFont()) { - if (fe->IsLocalUserFont()) { - // for local user fonts, don't change the original weight - // in the entry's logfont, because that could alter the - // choice of actual face used (bug 724231) - weight = 0; - } else { - // avoid GDI synthetic bold which occurs when weight - // specified is >= font data weight + 200 - weight = mNeedsSyntheticBold ? 700 : 200; - } - } else { - // GDI doesn't support variation fonts, so for system fonts we know - // that the entry has only a single weight, not a range. - MOZ_ASSERT(fe->Weight().IsSingle()); - weight = mNeedsSyntheticBold ? 700 : fe->Weight().Min().ToIntRounded(); - } - - fe->FillLogFont(&aLogFont, weight, aSize); -} - -uint32_t gfxGDIFont::GetGlyph(uint32_t aUnicode, uint32_t aVarSelector) { - // Callback used only for fonts that lack a 'cmap' table. - - // We don't support variation selector sequences or non-BMP characters - // in the legacy bitmap, vector or postscript fonts that might use - // this code path. - if (aUnicode > 0xffff || aVarSelector) { - return 0; - } - - if (!mGlyphIDs) { - mGlyphIDs = MakeUnique>(64); - } - - uint32_t gid; - if (mGlyphIDs->Get(aUnicode, &gid)) { - return gid; - } - - wchar_t ch = aUnicode; - WORD glyph; - HRESULT ret = ScriptGetCMap(nullptr, &mScriptCache, &ch, 1, 0, &glyph); - if (ret != S_OK) { - AutoDC dc; - AutoSelectFont fs(dc.GetDC(), GetHFONT()); - if (ret == E_PENDING) { - // Try ScriptGetCMap again now that we've set up the font. - ret = ScriptGetCMap(dc.GetDC(), &mScriptCache, &ch, 1, 0, &glyph); - } - if (ret != S_OK) { - // If ScriptGetCMap still failed, fall back to GetGlyphIndicesW - // (see bug 1105807). - DWORD ret = GetGlyphIndicesW(dc.GetDC(), &ch, 1, &glyph, - GGI_MARK_NONEXISTING_GLYPHS); - if (ret == GDI_ERROR || glyph == 0xFFFF) { - glyph = 0; - } - } - } - - mGlyphIDs->InsertOrUpdate(aUnicode, glyph); - return glyph; -} - -int32_t gfxGDIFont::GetGlyphWidth(uint16_t aGID) { - if (!mGlyphWidths) { - mGlyphWidths = MakeUnique>(128); - } - - return mGlyphWidths->WithEntryHandle(aGID, [&](auto&& entry) { - if (!entry) { - DCForMetrics dc; - AutoSelectFont fs(dc, GetHFONT()); - - int devWidth; - if (!GetCharWidthI(dc, aGID, 1, nullptr, &devWidth)) { - return -1; - } - // clamp value to range [0..0x7fff], and convert to 16.16 fixed-point - devWidth = std::clamp(devWidth, 0, 0x7fff); - entry.Insert(devWidth << 16); - } - return *entry; - }); -} - -bool gfxGDIFont::GetGlyphBounds(uint16_t aGID, gfxRect* aBounds, bool aTight) { - DCForMetrics dc; - AutoSelectFont fs(dc, GetHFONT()); - - if (mIsBitmap) { - int devWidth; - if (!GetCharWidthI(dc, aGID, 1, nullptr, &devWidth)) { - return false; - } - devWidth = std::clamp(devWidth, 0, 0x7fff); - - *aBounds = gfxRect(0, -mMetrics->maxAscent, devWidth, - mMetrics->maxAscent + mMetrics->maxDescent); - return true; - } - - const MAT2 kIdentityMatrix = {{0, 1}, {0, 0}, {0, 0}, {0, 1}}; - GLYPHMETRICS gm; - if (GetGlyphOutlineW(dc, aGID, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, nullptr, - &kIdentityMatrix) == GDI_ERROR) { - return false; - } - - if (gm.gmBlackBoxX == 1 && gm.gmBlackBoxY == 1 && - !GetGlyphOutlineW(dc, aGID, GGO_NATIVE | GGO_GLYPH_INDEX, &gm, 0, nullptr, - &kIdentityMatrix)) { - // Workaround for GetGlyphOutline returning 1x1 bounding box - // for glyph that is in fact empty. - gm.gmBlackBoxX = 0; - gm.gmBlackBoxY = 0; - } else if (gm.gmBlackBoxX > 0 && !aTight) { - // The bounding box reported by Windows supposedly contains the glyph's - // "black" area; however, antialiasing (especially with ClearType) means - // that the actual image that needs to be rendered may "bleed" into the - // adjacent pixels, mainly on the right side. - gm.gmptGlyphOrigin.x -= 1; - gm.gmBlackBoxX += 3; - } - - *aBounds = gfxRect(gm.gmptGlyphOrigin.x, -gm.gmptGlyphOrigin.y, - gm.gmBlackBoxX, gm.gmBlackBoxY); - return true; -} - -void gfxGDIFont::AddSizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf, - FontCacheSizes* aSizes) const { - gfxFont::AddSizeOfExcludingThis(aMallocSizeOf, aSizes); - aSizes->mFontInstances += aMallocSizeOf(mMetrics); - if (mGlyphWidths) { - aSizes->mFontInstances += - mGlyphWidths->ShallowSizeOfIncludingThis(aMallocSizeOf); - } -} - -void gfxGDIFont::AddSizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf, - FontCacheSizes* aSizes) const { - aSizes->mFontInstances += aMallocSizeOf(this); - AddSizeOfExcludingThis(aMallocSizeOf, aSizes); -} diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxGDIFont.h firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFont.h --- firefox-esr-140.13.0esr/gfx/thebes/gfxGDIFont.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFont.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef GFX_GDIFONT_H -#define GFX_GDIFONT_H - -#include "mozilla/MemoryReporting.h" -#include "gfxFont.h" -#include "gfxGDIFontList.h" - -#include "nsTHashMap.h" -#include "nsHashKeys.h" - -#include "usp10.h" - -class gfxGDIFont final : public gfxFont { - public: - gfxGDIFont(GDIFontEntry* aFontEntry, const gfxFontStyle* aFontStyle, - AntialiasOption anAAOption = kAntialiasDefault); - - HFONT GetHFONT() const { return mFont; } - - already_AddRefed GetScaledFont( - const TextRunDrawParams& aRunParams) override; - - /* override Measure to add padding for antialiasing */ - RunMetrics Measure(const gfxTextRun* aTextRun, uint32_t aStart, uint32_t aEnd, - BoundingBoxType aBoundingBoxType, - DrawTarget* aDrawTargetForTightBoundingBox, - Spacing* aSpacing, - mozilla::gfx::ShapedTextFlags aOrientation) override; - - /* required for MathML to suppress effects of ClearType "padding" */ - gfxFont* CopyWithAntialiasOption(AntialiasOption anAAOption) const override; - - // If the font has a cmap table, we handle it purely with harfbuzz; - // but if not (e.g. .fon fonts), we'll use a GDI callback to get glyphs. - bool ProvidesGetGlyph() const override { return !mFontEntry->HasCmapTable(); } - - uint32_t GetGlyph(uint32_t aUnicode, uint32_t aVarSelector) override; - - bool ProvidesGlyphWidths() const override { return true; } - - // get hinted glyph width in pixels as 16.16 fixed-point value - int32_t GetGlyphWidth(uint16_t aGID) override; - - bool GetGlyphBounds(uint16_t aGID, gfxRect* aBounds, bool aTight) override; - - void AddSizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf, - FontCacheSizes* aSizes) const; - void AddSizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf, - FontCacheSizes* aSizes) const; - - FontType GetType() const override { return FONT_TYPE_GDI; } - - protected: - ~gfxGDIFont() override; - - const Metrics& GetHorizontalMetrics() const override { return *mMetrics; } - - bool ShapeText(DrawTarget* aDrawTarget, const char16_t* aText, - uint32_t aOffset, uint32_t aLength, Script aScript, - nsAtom* aLanguage, bool aVertical, RoundingFlags aRounding, - gfxShapedText* aShapedText) override; - - void Initialize(); // creates metrics and Cairo fonts - - // Fill the given LOGFONT record according to our size. - // (Synthetic italic is *not* handled here, because GDI may not reliably - // use the face we expect if we tweak the lfItalic field, and because we - // have generic support for this in gfxFont::Draw instead.) - void FillLogFont(LOGFONTW& aLogFont, gfxFloat aSize); - - HFONT mFont; - - Metrics* mMetrics; - bool mIsBitmap; - - bool mNeedsSyntheticBold; - - // cache of glyph IDs (used for non-sfnt fonts only) - mozilla::UniquePtr > mGlyphIDs; - SCRIPT_CACHE mScriptCache; - - // cache of glyph widths in 16.16 fixed-point pixels - mozilla::UniquePtr > mGlyphWidths; -}; - -#endif /* GFX_GDIFONT_H */ diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxGDIFontList.cpp firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFontList.cpp --- firefox-esr-140.13.0esr/gfx/thebes/gfxGDIFontList.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFontList.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,1162 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "mozilla/DebugOnly.h" -#include - -#include "mozilla/Logging.h" -#include "mozilla/TextUtils.h" -#include "mozilla/Sprintf.h" - -#include "gfxGDIFontList.h" -#include "gfxWindowsPlatform.h" -#include "gfxUserFontSet.h" -#include "gfxFontUtils.h" -#include "gfxGDIFont.h" - -#include "nsServiceManagerUtils.h" -#include "nsTArray.h" -#include "nsUnicharUtils.h" - -#include "nsDirectoryServiceUtils.h" -#include "nsDirectoryServiceDefs.h" -#include "nsAppDirectoryServiceDefs.h" -#include "nsPresContext.h" -#include "gfxFontConstants.h" - -#include "mozilla/MemoryReporting.h" -#include "mozilla/ProfilerLabels.h" -#include "mozilla/StaticPrefs_gfx.h" -#include "mozilla/glean/GfxMetrics.h" - -#include "mozilla/dom/Document.h" -#include "nsContentUtils.h" - -#include "StandardFonts-win10.inc" - -#include - -using namespace mozilla; -using namespace mozilla::gfx; - -#define ROUND(x) floor((x) + 0.5) - -#define LOG_FONTLIST(args) \ - MOZ_LOG(gfxPlatform::GetLog(eGfxLog_fontlist), LogLevel::Debug, args) -#define LOG_FONTLIST_ENABLED() \ - MOZ_LOG_TEST(gfxPlatform::GetLog(eGfxLog_fontlist), LogLevel::Debug) - -#define LOG_CMAPDATA_ENABLED() \ - MOZ_LOG_TEST(gfxPlatform::GetLog(eGfxLog_cmapdata), LogLevel::Debug) - -static __inline void BuildKeyNameFromFontName(nsAString& aName) { - if (aName.Length() >= LF_FACESIZE) aName.Truncate(LF_FACESIZE - 1); - ToLowerCase(aName); -} -static __inline void BuildKeyNameFromFontName(nsACString& aName) { - if (aName.Length() >= LF_FACESIZE) aName.Truncate(LF_FACESIZE - 1); - ToLowerCase(aName); -} - -// Implementation of gfxPlatformFontList for Win32 GDI, -// using GDI font enumeration APIs to get the list of fonts - -class WinUserFontData : public gfxUserFontData { - public: - explicit WinUserFontData(HANDLE aFontRef) : mFontRef(aFontRef) {} - - virtual ~WinUserFontData() { - DebugOnly success; - success = RemoveFontMemResourceEx(mFontRef); -#if DEBUG - if (!success) { - char buf[256]; - SprintfLiteral( - buf, - "error deleting font handle (%p) - RemoveFontMemResourceEx failed", - mFontRef); - NS_ASSERTION(success, buf); - } -#endif - } - - HANDLE mFontRef; -}; - -BYTE FontTypeToOutPrecision(uint8_t fontType) { - BYTE ret; - switch (fontType) { - case GFX_FONT_TYPE_TT_OPENTYPE: - case GFX_FONT_TYPE_TRUETYPE: - ret = OUT_TT_ONLY_PRECIS; - break; - case GFX_FONT_TYPE_PS_OPENTYPE: - ret = OUT_PS_ONLY_PRECIS; - break; - case GFX_FONT_TYPE_TYPE1: - ret = OUT_OUTLINE_PRECIS; - break; - case GFX_FONT_TYPE_RASTER: - ret = OUT_RASTER_PRECIS; - break; - case GFX_FONT_TYPE_DEVICE: - ret = OUT_DEVICE_PRECIS; - break; - default: - ret = OUT_DEFAULT_PRECIS; - } - return ret; -} - -/*************************************************************** - * - * GDIFontEntry - * - */ - -GDIFontEntry::GDIFontEntry(const nsACString& aFaceName, - gfxWindowsFontType aFontType, SlantStyleRange aStyle, - WeightRange aWeight, StretchRange aStretch, - gfxUserFontData* aUserFontData) - : gfxFontEntry(aFaceName), mFontType(aFontType), mForceGDI(false) { - mUserFontData.reset(aUserFontData); - mStyleRange = aStyle; - mWeightRange = aWeight; - mStretchRange = aStretch; - if (IsType1()) { - mForceGDI = true; - } - mIsDataUserFont = aUserFontData != nullptr; - - InitLogFont(aFaceName, aFontType); -} - -GDIFontEntry::~GDIFontEntry() { - auto* cache = mFontTableCache.exchange(nullptr); - delete cache; -} - -gfxFontEntry* GDIFontEntry::Clone() const { - MOZ_ASSERT(!IsUserFont(), "we can only clone installed fonts!"); - return new GDIFontEntry(Name(), mFontType, SlantStyle(), Weight(), Stretch(), - nullptr); -} - -gfxFontEntry::FontTableCache* GDIFontEntry::GetFontTableCache( - bool aCreate) { - // Create the cache if it does not yet exist. - if (!mFontTableCache && aCreate) { - auto* cache = new FontTableCache(); - if (!mFontTableCache.compareExchange(nullptr, cache)) { - delete cache; - } - } - return mFontTableCache; -} - -nsresult GDIFontEntry::ReadCMAP(FontInfoData* aFontInfoData) { - AUTO_PROFILER_LABEL("GDIFontEntry::ReadCMAP", OTHER); - - // attempt this once, if errors occur leave a blank cmap - if (mCharacterMap) { - return NS_OK; - } - - // skip non-SFNT fonts completely - if (mFontType != GFX_FONT_TYPE_PS_OPENTYPE && - mFontType != GFX_FONT_TYPE_TT_OPENTYPE && - mFontType != GFX_FONT_TYPE_TRUETYPE) { - RefPtr cmap = new gfxCharacterMap(); - cmap->mBuildOnTheFly = true; - if (mCharacterMap.compareExchange(nullptr, cmap.get())) { - Unused << cmap.forget(); - } - return NS_ERROR_FAILURE; - } - - RefPtr charmap; - nsresult rv; - - uint32_t uvsOffset = 0; - if (aFontInfoData && - (charmap = GetCMAPFromFontInfo(aFontInfoData, uvsOffset))) { - rv = NS_OK; - } else { - uint32_t kCMAP = TRUETYPE_TAG('c', 'm', 'a', 'p'); - charmap = new gfxCharacterMap(); - AutoTArray cmap; - rv = CopyFontTable(kCMAP, cmap); - - if (NS_SUCCEEDED(rv)) { - rv = gfxFontUtils::ReadCMAP(cmap.Elements(), cmap.Length(), *charmap, - uvsOffset); - } - } - - if (NS_SUCCEEDED(rv)) { - gfxPlatformFontList* pfl = gfxPlatformFontList::PlatformFontList(); - charmap = pfl->FindCharMap(charmap); - mHasCmapTable = true; - } else { - // if error occurred, initialize to null cmap - charmap = new gfxCharacterMap(); - // For fonts where we failed to read the character map, - // we can take a slow path to look up glyphs character by character - charmap->mBuildOnTheFly = true; - } - if (mCharacterMap.compareExchange(nullptr, charmap.get())) { - charmap.get()->AddRef(); - } - - LOG_FONTLIST(("(fontlist-cmap) name: %s, size: %zd hash: %8.8x%s\n", - mName.get(), charmap->SizeOfIncludingThis(moz_malloc_size_of), - charmap->mHash, mCharacterMap == charmap ? " new" : "")); - if (LOG_CMAPDATA_ENABLED()) { - char prefix[256]; - SprintfLiteral(prefix, "(cmapdata) name: %.220s", mName.get()); - charmap->Dump(prefix, eGfxLog_cmapdata); - } - - return rv; -} - -gfxFont* GDIFontEntry::CreateFontInstance(const gfxFontStyle* aFontStyle) { - return new gfxGDIFont(this, aFontStyle); -} - -nsresult GDIFontEntry::CopyFontTable(uint32_t aTableTag, - nsTArray& aBuffer) { - if (!IsTrueType()) { - return NS_ERROR_FAILURE; - } - - AutoDC dc; - AutoSelectFont font(dc.GetDC(), &mLogFont); - if (font.IsValid()) { - uint32_t tableSize = ::GetFontData( - dc.GetDC(), NativeEndian::swapToBigEndian(aTableTag), 0, nullptr, 0); - if (tableSize != GDI_ERROR) { - if (aBuffer.SetLength(tableSize, fallible)) { - ::GetFontData(dc.GetDC(), NativeEndian::swapToBigEndian(aTableTag), 0, - aBuffer.Elements(), tableSize); - return NS_OK; - } - return NS_ERROR_OUT_OF_MEMORY; - } - } - return NS_ERROR_FAILURE; -} - -already_AddRefed GDIFontEntry::LookupUnscaledFont( - HFONT aFont) { - RefPtr unscaledFont(mUnscaledFont); - if (!unscaledFont) { - LOGFONT lf; - GetObject(aFont, sizeof(LOGFONT), &lf); - unscaledFont = new UnscaledFontGDI(lf); - mUnscaledFont = unscaledFont; - } - - return unscaledFont.forget(); -} - -void GDIFontEntry::FillLogFont(LOGFONTW* aLogFont, LONG aWeight, - gfxFloat aSize) { - memcpy(aLogFont, &mLogFont, sizeof(LOGFONTW)); - - aLogFont->lfHeight = (LONG)-ROUND(aSize); - - if (aLogFont->lfHeight == 0) { - aLogFont->lfHeight = -1; - } - - // If a non-zero weight is passed in, use this to override the original - // weight in the entry's logfont. This is used to control synthetic bolding - // for installed families with no bold face, and for downloaded fonts - // (but NOT for local user fonts, because it could cause a different, - // glyph-incompatible face to be used) - if (aWeight != 0) { - aLogFont->lfWeight = aWeight; - } - - // for non-local() user fonts, we never want to apply italics here; - // if the face is described as italic, we should use it as-is, - // and if it's not, but then the element is styled italic, we'll use - // a cairo transform to create fake italic (oblique) - if (mIsDataUserFont) { - aLogFont->lfItalic = 0; - } -} - -#define MISSING_GLYPH \ - 0x1F // glyph index returned for missing characters - // on WinXP with .fon fonts, but not Type1 (.pfb) - -bool GDIFontEntry::TestCharacterMap(uint32_t aCh) { - if (!mCharacterMap) { - ReadCMAP(); - NS_ASSERTION(mCharacterMap, "failed to initialize a character map"); - } - - if (GetCharacterMap()->mBuildOnTheFly) { - if (aCh > 0xFFFF) return false; - - // previous code was using the group style - gfxFontStyle fakeStyle; - if (!IsUpright()) { - fakeStyle.style = FontSlantStyle::ITALIC; - } - fakeStyle.weight = Weight().Min(); - - RefPtr tempFont = FindOrMakeFont(&fakeStyle, nullptr); - if (!tempFont || !tempFont->Valid()) return false; - gfxGDIFont* font = static_cast(tempFont.get()); - - HDC dc = GetDC((HWND) nullptr); - SetGraphicsMode(dc, GM_ADVANCED); - HFONT hfont = font->GetHFONT(); - HFONT oldFont = (HFONT)SelectObject(dc, hfont); - - wchar_t str[1] = {(wchar_t)aCh}; - WORD glyph[1]; - - bool hasGlyph = false; - - // Bug 573038 - in some cases GetGlyphIndicesW returns 0xFFFF for a - // missing glyph or 0x1F in other cases to indicate the "invalid" - // glyph. Map both cases to "not found" - if (IsType1() || mForceGDI) { - // Type1 fonts and uniscribe APIs don't get along. - // ScriptGetCMap will return E_HANDLE - DWORD ret = - GetGlyphIndicesW(dc, str, 1, glyph, GGI_MARK_NONEXISTING_GLYPHS); - if (ret != GDI_ERROR && glyph[0] != 0xFFFF && - (IsType1() || glyph[0] != MISSING_GLYPH)) { - hasGlyph = true; - } - } else { - // ScriptGetCMap works better than GetGlyphIndicesW - // for things like bitmap/vector fonts - SCRIPT_CACHE sc = nullptr; - HRESULT rv = ScriptGetCMap(dc, &sc, str, 1, 0, glyph); - if (rv == S_OK) hasGlyph = true; - } - - SelectObject(dc, oldFont); - ReleaseDC(nullptr, dc); - - if (hasGlyph) { - GetCharacterMap()->set(aCh); - return true; - } - } else { - // font had a cmap so simply check that - return GetCharacterMap()->test(aCh); - } - - return false; -} - -void GDIFontEntry::InitLogFont(const nsACString& aName, - gfxWindowsFontType aFontType) { -#define CLIP_TURNOFF_FONTASSOCIATION 0x40 - - mLogFont.lfHeight = -1; - - // Fill in logFont structure - mLogFont.lfWidth = 0; - mLogFont.lfEscapement = 0; - mLogFont.lfOrientation = 0; - mLogFont.lfUnderline = FALSE; - mLogFont.lfStrikeOut = FALSE; - mLogFont.lfCharSet = DEFAULT_CHARSET; - mLogFont.lfOutPrecision = FontTypeToOutPrecision(aFontType); - mLogFont.lfClipPrecision = CLIP_TURNOFF_FONTASSOCIATION; - mLogFont.lfQuality = DEFAULT_QUALITY; - mLogFont.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; - // always force lfItalic if we want it. Font selection code will - // do its best to give us an italic font entry, but if no face exists - // it may give us a regular one based on weight. Windows should - // do fake italic for us in that case. - mLogFont.lfItalic = !IsUpright(); - mLogFont.lfWeight = Weight().Min().ToIntRounded(); - - NS_ConvertUTF8toUTF16 name(aName); - int len = std::min(name.Length(), LF_FACESIZE - 1); - memcpy(&mLogFont.lfFaceName, name.BeginReading(), len * sizeof(char16_t)); - mLogFont.lfFaceName[len] = '\0'; -} - -GDIFontEntry* GDIFontEntry::CreateFontEntry(const nsACString& aName, - gfxWindowsFontType aFontType, - SlantStyleRange aStyle, - WeightRange aWeight, - StretchRange aStretch, - gfxUserFontData* aUserFontData) { - // jtdfix - need to set charset, pitch/family - - return new GDIFontEntry(aName, aFontType, aStyle, aWeight, aStretch, - aUserFontData); -} - -void GDIFontEntry::AddSizeOfIncludingThis(MallocSizeOf aMallocSizeOf, - FontListSizes* aSizes) const { - aSizes->mFontListSize += aMallocSizeOf(this); - AddSizeOfExcludingThis(aMallocSizeOf, aSizes); -} - -/*************************************************************** - * - * GDIFontFamily - * - */ - -static bool ShouldIgnoreItalicStyle(const nsACString& aName) { - // Ignore italic style's "Meiryo" because "Meiryo (Bold) Italic" has - // non-italic style glyphs as Japanese characters. However, using it - // causes serious problem if web pages wants some elements to be - // different style from others only with font-style. For example, - // and should be rendered as italic in the default style. - return aName.EqualsLiteral("Meiryo") || - aName.EqualsLiteral( - "\xe3\x83\xa1\xe3\x82\xa4\xe3\x83\xaa\xe3\x82\xaa"); -} - -int CALLBACK GDIFontFamily::FamilyAddStylesProc( - const ENUMLOGFONTEXW* lpelfe, const NEWTEXTMETRICEXW* nmetrics, - DWORD fontType, LPARAM data) MOZ_NO_THREAD_SAFETY_ANALYSIS { - const NEWTEXTMETRICW& metrics = nmetrics->ntmTm; - LOGFONTW logFont = lpelfe->elfLogFont; - GDIFontFamily* ff = reinterpret_cast(data); - MOZ_ASSERT(ff->mLock.LockedForWritingByCurrentThread()); - - if (logFont.lfItalic && ShouldIgnoreItalicStyle(ff->mName)) { - return 1; - } - - // Some fonts claim to support things > 900, but we don't so clamp the sizes - logFont.lfWeight = std::clamp(logFont.lfWeight, LONG(100), LONG(900)); - - gfxWindowsFontType feType = - GDIFontEntry::DetermineFontType(metrics, fontType); - - GDIFontEntry* fe = nullptr; - for (uint32_t i = 0; i < ff->mAvailableFonts.Length(); ++i) { - fe = static_cast(ff->mAvailableFonts[i].get()); - if (feType > fe->mFontType) { - // if the new type is better than the old one, remove the old entries - ff->mAvailableFonts.RemoveElementAt(i); - --i; - } else if (feType < fe->mFontType) { - // otherwise if the new type is worse, skip it - return 1; - } - } - - for (uint32_t i = 0; i < ff->mAvailableFonts.Length(); ++i) { - fe = static_cast(ff->mAvailableFonts[i].get()); - // check if we already know about this face - if (fe->Weight().Min() == FontWeight::FromInt(int32_t(logFont.lfWeight)) && - fe->IsItalic() == (logFont.lfItalic == 0xFF)) { - // update the charset bit here since this could be different - // XXX Can we still do this now that we store mCharset - // on the font family rather than the font entry? - ff->mCharset.set(metrics.tmCharSet); - return 1; - } - } - - // We can't set the hasItalicFace flag correctly here, - // because we might not have seen the family's italic face(s) yet. - // So we'll set that flag for all members after loading all the faces. - auto italicStyle = (logFont.lfItalic == 0xFF ? FontSlantStyle::ITALIC - : FontSlantStyle::NORMAL); - fe = GDIFontEntry::CreateFontEntry( - NS_ConvertUTF16toUTF8(lpelfe->elfFullName), feType, - SlantStyleRange(italicStyle), - WeightRange(FontWeight::FromInt(int32_t(logFont.lfWeight))), - StretchRange(FontStretch::NORMAL), nullptr); - if (!fe) { - return 1; - } - - ff->AddFontEntryLocked(fe); - - if (LOG_FONTLIST_ENABLED()) { - LOG_FONTLIST( - ("(fontlist) added (%s) to family (%s)" - " with style: %s weight: %ld stretch: normal", - fe->Name().get(), ff->Name().get(), - (logFont.lfItalic == 0xff) ? "italic" : "normal", logFont.lfWeight)); - } - return 1; -} - -void GDIFontFamily::FindStyleVariationsLocked(FontInfoData* aFontInfoData) { - if (mHasStyles) { - return; - } - mHasStyles = true; - - HDC hdc = GetDC(nullptr); - SetGraphicsMode(hdc, GM_ADVANCED); - - LOGFONTW logFont; - memset(&logFont, 0, sizeof(LOGFONTW)); - logFont.lfCharSet = DEFAULT_CHARSET; - logFont.lfPitchAndFamily = 0; - NS_ConvertUTF8toUTF16 name(mName); - uint32_t l = std::min(name.Length(), LF_FACESIZE - 1); - memcpy(logFont.lfFaceName, name.get(), l * sizeof(char16_t)); - - EnumFontFamiliesExW(hdc, &logFont, - (FONTENUMPROCW)GDIFontFamily::FamilyAddStylesProc, - (LPARAM)this, 0); - if (LOG_FONTLIST_ENABLED() && mAvailableFonts.Length() == 0) { - LOG_FONTLIST( - ("(fontlist) no styles available in family \"%s\"", mName.get())); - } - - ReleaseDC(nullptr, hdc); - - if (mIsBadUnderlineFamily) { - SetBadUnderlineFonts(); - } - - CheckForSimpleFamily(); -} - -/*************************************************************** - * - * gfxGDIFontList - * - */ - -gfxGDIFontList::gfxGDIFontList() - : mFontSubstitutes(32), mHardcodedSubstitutes(std::size(kFontSubstitutes)) { -#ifdef MOZ_BUNDLED_FONTS - if (StaticPrefs::gfx_bundled_fonts_activate_AtStartup() != 0) { - auto timer = glean::fontlist::bundledfonts_activate.Measure(); - ActivateBundledFonts(); - } -#endif -} - -static void RemoveCharsetFromFontSubstitute(nsAString& aName) { - int32_t comma = aName.FindChar(char16_t(',')); - if (comma >= 0) aName.Truncate(comma); -} - -#define MAX_VALUE_NAME 512 -#define MAX_VALUE_DATA 512 - -nsresult gfxGDIFontList::GetFontSubstitutes() { - HKEY hKey; - DWORD i, rv, lenAlias, lenActual, valueType; - WCHAR aliasName[MAX_VALUE_NAME]; - WCHAR actualName[MAX_VALUE_DATA]; - - for (const FontSubstitute& fs : kFontSubstitutes) { - nsAutoCString substituteName(fs.substituteName); - nsAutoCString actualFontName(fs.actualFontName); - BuildKeyNameFromFontName(substituteName); - BuildKeyNameFromFontName(actualFontName); - gfxFontFamily* ff; - if (!actualFontName.IsEmpty() && - (ff = mFontFamilies.GetWeak(actualFontName))) { - mHardcodedSubstitutes.InsertOrUpdate(substituteName, RefPtr{ff}); - } else { - mNonExistingFonts.AppendElement(substituteName); - } - } - - if (RegOpenKeyExW( - HKEY_LOCAL_MACHINE, - L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes", - 0, KEY_READ, &hKey) != ERROR_SUCCESS) { - return NS_ERROR_FAILURE; - } - - for (i = 0, rv = ERROR_SUCCESS; rv != ERROR_NO_MORE_ITEMS; i++) { - aliasName[0] = 0; - lenAlias = std::size(aliasName); - actualName[0] = 0; - lenActual = sizeof(actualName); - rv = RegEnumValueW(hKey, i, aliasName, &lenAlias, nullptr, &valueType, - (LPBYTE)actualName, &lenActual); - - if (rv != ERROR_SUCCESS || valueType != REG_SZ || lenAlias == 0) { - continue; - } - - if (aliasName[0] == WCHAR('@')) { - continue; - } - - nsAutoString substituteName((char16_t*)aliasName); - nsAutoString actualFontName((char16_t*)actualName); - RemoveCharsetFromFontSubstitute(substituteName); - BuildKeyNameFromFontName(substituteName); - RemoveCharsetFromFontSubstitute(actualFontName); - BuildKeyNameFromFontName(actualFontName); - gfxFontFamily* ff; - NS_ConvertUTF16toUTF8 substitute(substituteName); - NS_ConvertUTF16toUTF8 actual(actualFontName); - if (!actual.IsEmpty() && (ff = mFontFamilies.GetWeak(actual))) { - mFontSubstitutes.InsertOrUpdate(substitute, RefPtr{ff}); - } else { - mNonExistingFonts.AppendElement(substitute); - } - } - - // "Courier" on a default Windows install is an ugly bitmap font. - // If there is no substitution for Courier in the registry - // substitute "Courier" with "Courier New". - nsAutoString substituteName; - substituteName.AssignLiteral("Courier"); - BuildKeyNameFromFontName(substituteName); - NS_ConvertUTF16toUTF8 substitute(substituteName); - if (!mFontSubstitutes.GetWeak(substitute)) { - gfxFontFamily* ff; - nsAutoString actualFontName; - actualFontName.AssignLiteral("Courier New"); - BuildKeyNameFromFontName(actualFontName); - NS_ConvertUTF16toUTF8 actual(actualFontName); - ff = mFontFamilies.GetWeak(actual); - if (ff) { - mFontSubstitutes.InsertOrUpdate(substitute, RefPtr{ff}); - } - } - return NS_OK; -} - -nsresult gfxGDIFontList::InitFontListForPlatform() { - auto timer = glean::fontlist::gdi_init_total.Measure(); - - mFontSubstitutes.Clear(); - mHardcodedSubstitutes.Clear(); - mNonExistingFonts.Clear(); - - // iterate over available families - LOGFONTW logfont; - memset(&logfont, 0, sizeof(logfont)); - logfont.lfCharSet = DEFAULT_CHARSET; - - AutoDC hdc; - (void)EnumFontFamiliesExW(hdc.GetDC(), &logfont, - (FONTENUMPROCW)&EnumFontFamExProc, 0, 0); - - GetFontSubstitutes(); - - GetPrefsAndStartLoader(); - - return NS_OK; -} - -int CALLBACK gfxGDIFontList::EnumFontFamExProc(ENUMLOGFONTEXW* lpelfe, - NEWTEXTMETRICEXW* lpntme, - DWORD fontType, LPARAM lParam) { - const NEWTEXTMETRICW& metrics = lpntme->ntmTm; - const LOGFONTW& lf = lpelfe->elfLogFont; - - if (lf.lfFaceName[0] == '@') { - return 1; - } - - nsAutoString name(lf.lfFaceName); - BuildKeyNameFromFontName(name); - - NS_ConvertUTF16toUTF8 key(name); - - gfxGDIFontList* fontList = PlatformFontList(); - fontList->mLock.AssertCurrentThreadIn(); - - if (!fontList->mFontFamilies.Contains(key)) { - NS_ConvertUTF16toUTF8 faceName(lf.lfFaceName); - FontVisibility visibility = FontVisibility::Unknown; // TODO - RefPtr family = new GDIFontFamily(faceName, visibility); - fontList->mFontFamilies.InsertOrUpdate(key, RefPtr{family}); - - // if locale is such that CJK font names are the default coming from - // GDI, then if a family name is non-ASCII immediately read in other - // family names. This assures that MS Gothic, MS Mincho are all found - // before lookups begin. - if (!IsAscii(faceName)) { - family->ReadOtherFamilyNames(gfxPlatformFontList::PlatformFontList()); - } - - if (fontList->mBadUnderlineFamilyNames.ContainsSorted(key)) { - family->SetBadUnderlineFamily(); - } - - family->mWindowsFamily = lf.lfPitchAndFamily & 0xF0; - family->mWindowsPitch = lf.lfPitchAndFamily & 0x0F; - - // mark the charset bit - family->mCharset.set(metrics.tmCharSet); - } - - return 1; -} - -gfxFontEntry* gfxGDIFontList::LookupLocalFont(nsPresContext* aPresContext, - const nsACString& aFontName, - WeightRange aWeightForEntry, - StretchRange aStretchForEntry, - SlantStyleRange aStyleForEntry) { - AutoLock lock(mLock); - - gfxFontEntry* lookup = LookupInFaceNameLists(aFontName); - if (!lookup) { - return nullptr; - } - - bool isCFF = false; // jtdfix -- need to determine this - - // use the face name from the lookup font entry, which will be the localized - // face name which GDI mapping tables use (e.g. with the system locale set to - // Dutch, a fullname of 'Arial Bold' will find a font entry with the face name - // 'Arial Vet' which can be used as a key in GDI font lookups). - GDIFontEntry* fe = GDIFontEntry::CreateFontEntry( - lookup->Name(), - gfxWindowsFontType(isCFF ? GFX_FONT_TYPE_PS_OPENTYPE - : GFX_FONT_TYPE_TRUETYPE) /*type*/, - lookup->SlantStyle(), lookup->Weight(), aStretchForEntry, nullptr); - - if (!fe) return nullptr; - - fe->mIsLocalUserFont = true; - - // make the new font entry match the userfont entry style characteristics - fe->mWeightRange = aWeightForEntry; - fe->mStyleRange = aStyleForEntry; - fe->mStretchRange = aStretchForEntry; - - return fe; -} - -// If aFontData contains only a MS/Symbol cmap subtable, not MS/Unicode, -// we modify the subtable header to mark it as Unicode instead, because -// otherwise GDI will refuse to load the font. -// NOTE that this function does not bounds-check every access to the font data. -// This is OK because we only use it on data that has already been validated -// by OTS, and therefore we will not hit out-of-bounds accesses here. -static bool FixupSymbolEncodedFont(uint8_t* aFontData, uint32_t aLength) { - struct CmapHeader { - AutoSwap_PRUint16 version; - AutoSwap_PRUint16 numTables; - }; - struct CmapEncodingRecord { - AutoSwap_PRUint16 platformID; - AutoSwap_PRUint16 encodingID; - AutoSwap_PRUint32 offset; - }; - const uint32_t kCMAP = TRUETYPE_TAG('c', 'm', 'a', 'p'); - const TableDirEntry* dir = gfxFontUtils::FindTableDirEntry(aFontData, kCMAP); - if (dir && uint32_t(dir->length) >= sizeof(CmapHeader)) { - CmapHeader* cmap = - reinterpret_cast(aFontData + uint32_t(dir->offset)); - CmapEncodingRecord* encRec = - reinterpret_cast(cmap + 1); - int32_t symbolSubtable = -1; - for (uint32_t i = 0; i < (uint16_t)cmap->numTables; ++i) { - if (uint16_t(encRec[i].platformID) != - gfxFontUtils::PLATFORM_ID_MICROSOFT) { - continue; // only interested in MS platform - } - if (uint16_t(encRec[i].encodingID) == - gfxFontUtils::ENCODING_ID_MICROSOFT_UNICODEBMP) { - // We've got a Microsoft/Unicode table, so don't interfere. - symbolSubtable = -1; - break; - } - if (uint16_t(encRec[i].encodingID) == - gfxFontUtils::ENCODING_ID_MICROSOFT_SYMBOL) { - // Found a symbol subtable; remember it for possible fixup, - // but if we subsequently find a Microsoft/Unicode subtable, - // we'll cancel this. - symbolSubtable = i; - } - } - if (symbolSubtable != -1) { - // We found a windows/symbol cmap table, and no windows/unicode one; - // change the encoding ID so that AddFontMemResourceEx will accept it - encRec[symbolSubtable].encodingID = - gfxFontUtils::ENCODING_ID_MICROSOFT_UNICODEBMP; - return true; - } - } - return false; -} - -gfxFontEntry* gfxGDIFontList::MakePlatformFont(const nsACString& aFontName, - WeightRange aWeightForEntry, - StretchRange aStretchForEntry, - SlantStyleRange aStyleForEntry, - const uint8_t* aFontData, - uint32_t aLength) { - // MakePlatformFont is responsible for deleting the font data with free - // so we set up a stack object to ensure it is freed even if we take an - // early exit - struct FontDataDeleter { - explicit FontDataDeleter(const uint8_t* aFontData) : mFontData(aFontData) {} - ~FontDataDeleter() { free((void*)mFontData); } - const uint8_t* mFontData; - }; - FontDataDeleter autoDelete(aFontData); - - bool isCFF = gfxFontUtils::IsCffFont(aFontData); - - nsresult rv; - HANDLE fontRef = nullptr; - - nsAutoString uniqueName; - rv = gfxFontUtils::MakeUniqueUserFontName(uniqueName); - if (NS_FAILED(rv)) return nullptr; - - FallibleTArray newFontData; - - rv = gfxFontUtils::RenameFont(uniqueName, aFontData, aLength, &newFontData); - - if (NS_FAILED(rv)) return nullptr; - - DWORD numFonts = 0; - - uint8_t* fontData = reinterpret_cast(newFontData.Elements()); - uint32_t fontLength = newFontData.Length(); - NS_ASSERTION(fontData, "null font data after renaming"); - - // http://msdn.microsoft.com/en-us/library/ms533942(VS.85).aspx - // "A font that is added by AddFontMemResourceEx is always private - // to the process that made the call and is not enumerable." - fontRef = - AddFontMemResourceEx(fontData, fontLength, 0 /* reserved */, &numFonts); - if (!fontRef) { - if (FixupSymbolEncodedFont(fontData, fontLength)) { - fontRef = AddFontMemResourceEx(fontData, fontLength, 0, &numFonts); - } - } - if (!fontRef) { - return nullptr; - } - - // only load fonts with a single face contained in the data - // AddFontMemResourceEx generates an additional face name for - // vertical text if the font supports vertical writing but since - // the font is referenced via the name this can be ignored - if (fontRef && numFonts > 2) { - RemoveFontMemResourceEx(fontRef); - return nullptr; - } - - // make a new font entry using the unique name - WinUserFontData* winUserFontData = new WinUserFontData(fontRef); - GDIFontEntry* fe = GDIFontEntry::CreateFontEntry( - NS_ConvertUTF16toUTF8(uniqueName), - gfxWindowsFontType(isCFF ? GFX_FONT_TYPE_PS_OPENTYPE - : GFX_FONT_TYPE_TRUETYPE) /*type*/, - aStyleForEntry, aWeightForEntry, aStretchForEntry, winUserFontData); - - if (fe) { - fe->mIsDataUserFont = true; - } - - return fe; -} - -bool gfxGDIFontList::FindAndAddFamiliesLocked( - nsPresContext* aPresContext, StyleGenericFontFamily aGeneric, - const nsACString& aFamily, nsTArray* aOutput, - FindFamiliesFlags aFlags, gfxFontStyle* aStyle, nsAtom* aLanguage, - gfxFloat aDevToCssSize) { - NS_ConvertUTF8toUTF16 key16(aFamily); - BuildKeyNameFromFontName(key16); - NS_ConvertUTF16toUTF8 keyName(key16); - - const bool useHardcodedList = - aPresContext ? aPresContext->Document()->ShouldResistFingerprinting( - RFPTarget::UseHardcodedFontSubstitutes) - : nsContentUtils::ShouldResistFingerprinting( - "aPresContext is not available", - RFPTarget::UseHardcodedFontSubstitutes); - gfxFontFamily* ff = useHardcodedList ? mHardcodedSubstitutes.GetWeak(keyName) - : mFontSubstitutes.GetWeak(keyName); - FontVisibility level = - aPresContext ? aPresContext->GetFontVisibility() : FontVisibility::User; - if (ff && IsVisibleToCSS(*ff, level)) { - aOutput->AppendElement(FamilyAndGeneric(ff, aGeneric)); - return true; - } - - if (mNonExistingFonts.Contains(keyName)) { - return false; - } - - return gfxPlatformFontList::FindAndAddFamiliesLocked( - aPresContext, aGeneric, aFamily, aOutput, aFlags, aStyle, aLanguage, - aDevToCssSize); -} - -nsTArray> -gfxGDIFontList::GetFilteredPlatformFontLists() { - nsTArray> fontLists; - - return fontLists; -} - -FontFamily gfxGDIFontList::GetDefaultFontForPlatform( - nsPresContext* aPresContext, const gfxFontStyle* aStyle, - nsAtom* aLanguage) { - FontFamily ff; - - // this really shouldn't fail to find a font.... - NONCLIENTMETRICSW ncm; - ncm.cbSize = sizeof(ncm); - BOOL status = - ::SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0); - if (status) { - ff = FindFamily(aPresContext, - NS_ConvertUTF16toUTF8(ncm.lfMessageFont.lfFaceName)); - if (!ff.IsNull()) { - return ff; - } - } - - // ...but just in case, try another (long-deprecated) approach as well - HGDIOBJ hGDI = ::GetStockObject(DEFAULT_GUI_FONT); - LOGFONTW logFont; - if (hGDI && ::GetObjectW(hGDI, sizeof(logFont), &logFont)) { - ff = FindFamily(aPresContext, NS_ConvertUTF16toUTF8(logFont.lfFaceName)); - } - - return ff; -} - -void gfxGDIFontList::AddSizeOfExcludingThis(MallocSizeOf aMallocSizeOf, - FontListSizes* aSizes) const { - gfxPlatformFontList::AddSizeOfExcludingThis(aMallocSizeOf, aSizes); - - AutoLock lock(mLock); - - aSizes->mFontListSize += - SizeOfFontFamilyTableExcludingThis(mFontSubstitutes, aMallocSizeOf); - aSizes->mFontListSize += - SizeOfFontFamilyTableExcludingThis(mHardcodedSubstitutes, aMallocSizeOf); - aSizes->mFontListSize += - mNonExistingFonts.ShallowSizeOfExcludingThis(aMallocSizeOf); - for (uint32_t i = 0; i < mNonExistingFonts.Length(); ++i) { - aSizes->mFontListSize += - mNonExistingFonts[i].SizeOfExcludingThisIfUnshared(aMallocSizeOf); - } -} - -void gfxGDIFontList::AddSizeOfIncludingThis(MallocSizeOf aMallocSizeOf, - FontListSizes* aSizes) const { - aSizes->mFontListSize += aMallocSizeOf(this); - AddSizeOfExcludingThis(aMallocSizeOf, aSizes); -} - -// used to load system-wide font info on off-main thread -class GDIFontInfo : public FontInfoData { - public: - GDIFontInfo(bool aLoadOtherNames, bool aLoadFaceNames, bool aLoadCmaps) - : FontInfoData(aLoadOtherNames, aLoadFaceNames, aLoadCmaps) {} - - virtual ~GDIFontInfo() = default; - - virtual void Load() { - mHdc = GetDC(nullptr); - SetGraphicsMode(mHdc, GM_ADVANCED); - FontInfoData::Load(); - ReleaseDC(nullptr, mHdc); - } - - // loads font data for all members of a given family - virtual void LoadFontFamilyData(const nsACString& aFamilyName); - - // callback for GDI EnumFontFamiliesExW call - static int CALLBACK EnumerateFontsForFamily(const ENUMLOGFONTEXW* lpelfe, - const NEWTEXTMETRICEXW* nmetrics, - DWORD fontType, LPARAM data); - - HDC mHdc; -}; - -struct EnumerateFontsForFamilyData { - EnumerateFontsForFamilyData(const nsACString& aFamilyName, - GDIFontInfo& aFontInfo) - : mFamilyName(aFamilyName), mFontInfo(aFontInfo) {} - - nsCString mFamilyName; - nsTArray mOtherFamilyNames; - GDIFontInfo& mFontInfo; - nsCString mPreviousFontName; -}; - -int CALLBACK GDIFontInfo::EnumerateFontsForFamily( - const ENUMLOGFONTEXW* lpelfe, const NEWTEXTMETRICEXW* nmetrics, - DWORD fontType, LPARAM data) { - EnumerateFontsForFamilyData* famData = - reinterpret_cast(data); - HDC hdc = famData->mFontInfo.mHdc; - LOGFONTW logFont = lpelfe->elfLogFont; - const NEWTEXTMETRICW& metrics = nmetrics->ntmTm; - - AutoSelectFont font(hdc, &logFont); - if (!font.IsValid()) { - return 1; - } - - FontFaceData fontData; - NS_ConvertUTF16toUTF8 fontName(lpelfe->elfFullName); - - // callback called for each style-charset so return if style already seen - if (fontName.Equals(famData->mPreviousFontName)) { - return 1; - } - famData->mPreviousFontName = fontName; - famData->mFontInfo.mLoadStats.fonts++; - - // read name table info - bool nameDataLoaded = false; - if (famData->mFontInfo.mLoadFaceNames || famData->mFontInfo.mLoadOtherNames) { - uint32_t kNAME = - NativeEndian::swapToBigEndian(TRUETYPE_TAG('n', 'a', 'm', 'e')); - uint32_t nameSize; - AutoTArray nameData; - - nameSize = ::GetFontData(hdc, kNAME, 0, nullptr, 0); - if (nameSize != GDI_ERROR && nameSize > 0 && - nameData.SetLength(nameSize, fallible)) { - ::GetFontData(hdc, kNAME, 0, nameData.Elements(), nameSize); - - // face names - if (famData->mFontInfo.mLoadFaceNames) { - gfxFontUtils::ReadCanonicalName((const char*)(nameData.Elements()), - nameSize, gfxFontUtils::NAME_ID_FULL, - fontData.mFullName); - gfxFontUtils::ReadCanonicalName( - (const char*)(nameData.Elements()), nameSize, - gfxFontUtils::NAME_ID_POSTSCRIPT, fontData.mPostscriptName); - nameDataLoaded = true; - famData->mFontInfo.mLoadStats.facenames++; - } - - // other family names - if (famData->mFontInfo.mLoadOtherNames) { - gfxFontUtils::ReadOtherFamilyNamesForFace( - famData->mFamilyName, (const char*)(nameData.Elements()), nameSize, - famData->mOtherFamilyNames, false); - } - } - } - - // read cmap - bool cmapLoaded = false; - gfxWindowsFontType feType = - GDIFontEntry::DetermineFontType(metrics, fontType); - if (famData->mFontInfo.mLoadCmaps && (feType == GFX_FONT_TYPE_PS_OPENTYPE || - feType == GFX_FONT_TYPE_TT_OPENTYPE || - feType == GFX_FONT_TYPE_TRUETYPE)) { - uint32_t kCMAP = - NativeEndian::swapToBigEndian(TRUETYPE_TAG('c', 'm', 'a', 'p')); - uint32_t cmapSize; - AutoTArray cmapData; - - cmapSize = ::GetFontData(hdc, kCMAP, 0, nullptr, 0); - if (cmapSize != GDI_ERROR && cmapSize > 0 && - cmapData.SetLength(cmapSize, fallible)) { - ::GetFontData(hdc, kCMAP, 0, cmapData.Elements(), cmapSize); - RefPtr charmap = new gfxCharacterMap(); - uint32_t offset; - - if (NS_SUCCEEDED(gfxFontUtils::ReadCMAP(cmapData.Elements(), cmapSize, - *charmap, offset))) { - fontData.mCharacterMap = charmap; - fontData.mUVSOffset = offset; - cmapLoaded = true; - famData->mFontInfo.mLoadStats.cmaps++; - } - } - } - - if (cmapLoaded || nameDataLoaded) { - famData->mFontInfo.mFontFaceData.InsertOrUpdate(fontName, fontData); - } - - return famData->mFontInfo.mCanceled ? 0 : 1; -} - -void GDIFontInfo::LoadFontFamilyData(const nsACString& aFamilyName) { - // iterate over the family - LOGFONTW logFont; - memset(&logFont, 0, sizeof(LOGFONTW)); - logFont.lfCharSet = DEFAULT_CHARSET; - logFont.lfPitchAndFamily = 0; - NS_ConvertUTF8toUTF16 name(aFamilyName); - uint32_t l = std::min(name.Length(), LF_FACESIZE - 1); - memcpy(logFont.lfFaceName, name.BeginReading(), l * sizeof(char16_t)); - - EnumerateFontsForFamilyData data(aFamilyName, *this); - - EnumFontFamiliesExW(mHdc, &logFont, - (FONTENUMPROCW)GDIFontInfo::EnumerateFontsForFamily, - (LPARAM)(&data), 0); - - // if found other names, insert them - if (data.mOtherFamilyNames.Length() != 0) { - mOtherFamilyNames.InsertOrUpdate(aFamilyName, data.mOtherFamilyNames); - mLoadStats.othernames += data.mOtherFamilyNames.Length(); - } -} - -already_AddRefed gfxGDIFontList::CreateFontInfoData() { - bool loadCmaps = !UsesSystemFallback() || - gfxPlatform::GetPlatform()->UseCmapsDuringSystemFallback(); - - RefPtr fi = - new GDIFontInfo(true, NeedFullnamePostscriptNames(), loadCmaps); - - return fi.forget(); -} - -gfxFontFamily* gfxGDIFontList::CreateFontFamily( - const nsACString& aName, FontVisibility aVisibility) const { - return new GDIFontFamily(aName, aVisibility); -} - -#ifdef MOZ_BUNDLED_FONTS - -void gfxGDIFontList::ActivateBundledFonts() { - nsCOMPtr localDir; - nsresult rv = NS_GetSpecialDirectory(NS_GRE_DIR, getter_AddRefs(localDir)); - if (NS_FAILED(rv)) { - return; - } - if (NS_FAILED(localDir->Append(u"fonts"_ns))) { - return; - } - bool isDir; - if (NS_FAILED(localDir->IsDirectory(&isDir)) || !isDir) { - return; - } - - nsCOMPtr e; - rv = localDir->GetDirectoryEntries(getter_AddRefs(e)); - if (NS_FAILED(rv)) { - return; - } - - nsCOMPtr file; - while (NS_SUCCEEDED(e->GetNextFile(getter_AddRefs(file))) && file) { - nsAutoString path; - if (NS_FAILED(file->GetPath(path))) { - continue; - } - AddFontResourceExW(path.get(), FR_PRIVATE, nullptr); - } -} - -#endif diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxGDIFontList.h firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFontList.h --- firefox-esr-140.13.0esr/gfx/thebes/gfxGDIFontList.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxGDIFontList.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,366 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef GFX_GDIFONTLIST_H -#define GFX_GDIFONTLIST_H - -#include "mozilla/FontPropertyTypes.h" -#include "mozilla/MemoryReporting.h" -#include "gfxWindowsPlatform.h" -#include "gfxPlatformFontList.h" -#include "nsGkAtoms.h" -#include "mozilla/gfx/UnscaledFontGDI.h" - -#include - -class AutoDC // get the global device context, and auto-release it on - // destruction -{ - public: - AutoDC() { mDC = ::GetDC(nullptr); } - - ~AutoDC() { ::ReleaseDC(nullptr, mDC); } - - HDC GetDC() { return mDC; } - - private: - HDC mDC; -}; - -class AutoSelectFont // select a font into the given DC, and auto-restore -{ - public: - AutoSelectFont(HDC aDC, LOGFONTW* aLogFont) : mOwnsFont(false) { - mFont = ::CreateFontIndirectW(aLogFont); - if (mFont) { - mOwnsFont = true; - mDC = aDC; - mOldFont = (HFONT)::SelectObject(aDC, mFont); - } else { - mOldFont = nullptr; - } - } - - AutoSelectFont(HDC aDC, HFONT aFont) : mOwnsFont(false) { - mDC = aDC; - mFont = aFont; - mOldFont = (HFONT)::SelectObject(aDC, aFont); - } - - ~AutoSelectFont() { - if (mOldFont) { - ::SelectObject(mDC, mOldFont); - if (mOwnsFont) { - ::DeleteObject(mFont); - } - } - } - - bool IsValid() const { return mFont != nullptr; } - - HFONT GetFont() const { return mFont; } - - private: - HDC mDC; - HFONT mFont; - HFONT mOldFont; - bool mOwnsFont; -}; - -/** - * List of different types of fonts we support on Windows. - * These can generally be lumped in to 3 categories where we have to - * do special things: Really old fonts bitmap and vector fonts (device - * and raster), Type 1 fonts, and TrueType/OpenType fonts. - * - * This list is sorted in order from least prefered to most prefered. - * We prefer Type1 fonts over OpenType fonts to avoid falling back to - * things like Arial (opentype) when you ask for Helvetica (type1) - **/ -enum gfxWindowsFontType { - GFX_FONT_TYPE_UNKNOWN = 0, - GFX_FONT_TYPE_DEVICE, - GFX_FONT_TYPE_RASTER, - GFX_FONT_TYPE_TRUETYPE, - GFX_FONT_TYPE_PS_OPENTYPE, - GFX_FONT_TYPE_TT_OPENTYPE, - GFX_FONT_TYPE_TYPE1 -}; - -// A single member of a font family (i.e. a single face, such as Times Italic) -// represented as a LOGFONT that will resolve to the correct face. -// This replaces FontEntry from gfxWindowsFonts.h/cpp. -class GDIFontEntry final : public gfxFontEntry { - public: - virtual ~GDIFontEntry(); - - LPLOGFONTW GetLogFont() { return &mLogFont; } - - nsresult ReadCMAP(FontInfoData* aFontInfoData = nullptr) override; - - void FillLogFont(LOGFONTW* aLogFont, LONG aWeight, gfxFloat aSize); - - static gfxWindowsFontType DetermineFontType(const NEWTEXTMETRICW& metrics, - DWORD fontType) { - gfxWindowsFontType feType; - if (metrics.ntmFlags & NTM_TYPE1) - feType = GFX_FONT_TYPE_TYPE1; - else if (metrics.ntmFlags & NTM_PS_OPENTYPE) - feType = GFX_FONT_TYPE_PS_OPENTYPE; - else if (metrics.ntmFlags & NTM_TT_OPENTYPE) - feType = GFX_FONT_TYPE_TT_OPENTYPE; - else if (fontType == TRUETYPE_FONTTYPE) - feType = GFX_FONT_TYPE_TRUETYPE; - else if (fontType == RASTER_FONTTYPE) - feType = GFX_FONT_TYPE_RASTER; - else if (fontType == DEVICE_FONTTYPE) - feType = GFX_FONT_TYPE_DEVICE; - else - feType = GFX_FONT_TYPE_UNKNOWN; - - return feType; - } - - bool IsType1() const { return (mFontType == GFX_FONT_TYPE_TYPE1); } - - bool IsTrueType() const { - return (mFontType == GFX_FONT_TYPE_TRUETYPE || - mFontType == GFX_FONT_TYPE_PS_OPENTYPE || - mFontType == GFX_FONT_TYPE_TT_OPENTYPE); - } - - bool SkipDuringSystemFallback() override { - return !HasCmapTable(); // explicitly skip non-SFNT fonts - } - - bool TestCharacterMap(uint32_t aCh) override; - - void AddSizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf, - FontListSizes* aSizes) const override; - - gfxFontEntry* Clone() const override; - - // GDI backend doesn't support font variations: - bool HasVariations() override { return false; } - void GetVariationAxes(nsTArray&) override {} - void GetVariationInstances(nsTArray&) override {} - - // create a font entry for a font with a given name - static GDIFontEntry* CreateFontEntry(const nsACString& aName, - gfxWindowsFontType aFontType, - SlantStyleRange aStyle, - WeightRange aWeight, - StretchRange aStretch, - gfxUserFontData* aUserFontData); - - gfxWindowsFontType mFontType; - bool mForceGDI; - - protected: - friend class gfxGDIFont; - - GDIFontEntry(const nsACString& aFaceName, gfxWindowsFontType aFontType, - SlantStyleRange aStyle, WeightRange aWeight, - StretchRange aStretch, gfxUserFontData* aUserFontData); - - FontTableCache* GetFontTableCache(bool aCreate) override; - - void InitLogFont(const nsACString& aName, gfxWindowsFontType aFontType); - - gfxFont* CreateFontInstance(const gfxFontStyle* aFontStyle) override; - - virtual nsresult CopyFontTable(uint32_t aTableTag, - nsTArray& aBuffer) override; - - already_AddRefed LookupUnscaledFont( - HFONT aFont); - - LOGFONTW mLogFont; - - mozilla::ThreadSafeWeakPtr mUnscaledFont; - - mozilla::Atomic mFontTableCache; -}; - -// a single font family, referencing one or more faces -class GDIFontFamily final : public gfxFontFamily { - public: - GDIFontFamily(const nsACString& aName, FontVisibility aVisibility) - : gfxFontFamily(aName, aVisibility), - mWindowsFamily(0), - mWindowsPitch(0), - mCharset() {} - - void FindStyleVariationsLocked(FontInfoData* aFontInfoData = nullptr) - MOZ_REQUIRES(mLock) override; - - bool FilterForFontList(nsAtom* aLangGroup, - const nsACString& aGeneric) const final { - return !IsSymbolFontFamily() && SupportsLangGroup(aLangGroup) && - MatchesGenericFamily(aGeneric); - } - - protected: - friend class gfxGDIFontList; - - // helpers for FilterForFontList - bool IsSymbolFontFamily() const { return mCharset.test(SYMBOL_CHARSET); } - - bool MatchesGenericFamily(const nsACString& aGeneric) const { - if (aGeneric.IsEmpty()) { - return true; - } - - // Japanese 'Mincho' fonts do not belong to FF_MODERN even if - // they are fixed pitch because they have variable stroke width. - if (mWindowsFamily == FF_ROMAN && mWindowsPitch & FIXED_PITCH) { - return aGeneric.EqualsLiteral("monospace"); - } - - // Japanese 'Gothic' fonts do not belong to FF_SWISS even if - // they are variable pitch because they have constant stroke width. - if (mWindowsFamily == FF_MODERN && mWindowsPitch & VARIABLE_PITCH) { - return aGeneric.EqualsLiteral("sans-serif"); - } - - // All other fonts will be grouped correctly using family... - switch (mWindowsFamily) { - case FF_DONTCARE: - return false; - case FF_ROMAN: - return aGeneric.EqualsLiteral("serif"); - case FF_SWISS: - return aGeneric.EqualsLiteral("sans-serif"); - case FF_MODERN: - return aGeneric.EqualsLiteral("monospace"); - case FF_SCRIPT: - return aGeneric.EqualsLiteral("cursive"); - case FF_DECORATIVE: - return aGeneric.EqualsLiteral("fantasy"); - } - - return false; - } - - bool SupportsLangGroup(nsAtom* aLangGroup) const { - if (!aLangGroup || aLangGroup == nsGkAtoms::Unicode) { - return true; - } - - int16_t bit = -1; - - /* map our langgroup names in to Windows charset bits */ - if (aLangGroup == nsGkAtoms::x_western) { - bit = ANSI_CHARSET; - } else if (aLangGroup == nsGkAtoms::Japanese) { - bit = SHIFTJIS_CHARSET; - } else if (aLangGroup == nsGkAtoms::ko) { - bit = HANGEUL_CHARSET; - } else if (aLangGroup == nsGkAtoms::zh_cn) { - bit = GB2312_CHARSET; - } else if (aLangGroup == nsGkAtoms::zh_tw) { - bit = CHINESEBIG5_CHARSET; - } else if (aLangGroup == nsGkAtoms::el) { - bit = GREEK_CHARSET; - } else if (aLangGroup == nsGkAtoms::he) { - bit = HEBREW_CHARSET; - } else if (aLangGroup == nsGkAtoms::ar) { - bit = ARABIC_CHARSET; - } else if (aLangGroup == nsGkAtoms::x_cyrillic) { - bit = RUSSIAN_CHARSET; - } else if (aLangGroup == nsGkAtoms::th) { - bit = THAI_CHARSET; - } - - if (bit != -1) { - return mCharset.test(bit); - } - - return false; - } - - uint8_t mWindowsFamily; - uint8_t mWindowsPitch; - - gfxSparseBitSet mCharset; - - private: - static int CALLBACK FamilyAddStylesProc(const ENUMLOGFONTEXW* lpelfe, - const NEWTEXTMETRICEXW* nmetrics, - DWORD fontType, LPARAM data); -}; - -class gfxGDIFontList final : public gfxPlatformFontList { - public: - static gfxGDIFontList* PlatformFontList() { - return static_cast( - gfxPlatformFontList::PlatformFontList()); - } - - virtual ~gfxGDIFontList() { AutoLock lock(mLock); } - - // initialize font lists - nsresult InitFontListForPlatform() MOZ_REQUIRES(mLock) override; - - gfxFontFamily* CreateFontFamily(const nsACString& aName, - FontVisibility aVisibility) const override; - - bool FindAndAddFamiliesLocked( - nsPresContext* aPresContext, mozilla::StyleGenericFontFamily aGeneric, - const nsACString& aFamily, nsTArray* aOutput, - FindFamiliesFlags aFlags, gfxFontStyle* aStyle = nullptr, - nsAtom* aLanguage = nullptr, gfxFloat aDevToCssSize = 1.0) - MOZ_REQUIRES(mLock) override; - - gfxFontEntry* LookupLocalFont(nsPresContext* aPresContext, - const nsACString& aFontName, - WeightRange aWeightForEntry, - StretchRange aStretchForEntry, - SlantStyleRange aStyleForEntry) override; - - gfxFontEntry* MakePlatformFont(const nsACString& aFontName, - WeightRange aWeightForEntry, - StretchRange aStretchForEntry, - SlantStyleRange aStyleForEntry, - const uint8_t* aFontData, - uint32_t aLength) override; - - void AddSizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf, - FontListSizes* aSizes) const override; - void AddSizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf, - FontListSizes* aSizes) const override; - - protected: - FontFamily GetDefaultFontForPlatform(nsPresContext* aPresContext, - const gfxFontStyle* aStyle, - nsAtom* aLanguage = nullptr) - MOZ_REQUIRES(mLock) override; - - nsTArray> GetFilteredPlatformFontLists() - override; - - private: - friend class gfxWindowsPlatform; - - gfxGDIFontList(); - - nsresult GetFontSubstitutes() MOZ_REQUIRES(mLock); - - static int CALLBACK EnumFontFamExProc(ENUMLOGFONTEXW* lpelfe, - NEWTEXTMETRICEXW* lpntme, - DWORD fontType, LPARAM lParam); - - already_AddRefed CreateFontInfoData() override; - -#ifdef MOZ_BUNDLED_FONTS - void ActivateBundledFonts(); -#endif - - FontFamilyTable mFontSubstitutes; - FontFamilyTable mHardcodedSubstitutes; - nsTArray mNonExistingFonts; -}; - -#endif /* GFX_GDIFONTLIST_H */ diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxGraphiteShaper.cpp firefox-esr-140.15.0esr/gfx/thebes/gfxGraphiteShaper.cpp --- firefox-esr-140.13.0esr/gfx/thebes/gfxGraphiteShaper.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxGraphiteShaper.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -298,6 +298,9 @@ if (failedVerify) { return NS_ERROR_ILLEGAL_VALUE; } + // Minimum acceptable baseChar for the next cluster (to ensure monotonically + // increasing indexes). + uint32_t minBaseChar = 0; // now put glyphs into the textrun, one cluster at a time for (uint32_t i = 0; i <= cIndex; ++i) { // We makes a local copy of "clusters[i]" which is of type @@ -335,11 +338,12 @@ "nscoord values. But, these will not result in safety issues."); // check unexpected offset - offs used to index into aText - uint32_t offs = - CopyAndVerifyOrFail(c.baseChar, val < aLength, &failedVerify); + uint32_t offs = CopyAndVerifyOrFail( + c.baseChar, val < aLength && val >= minBaseChar, &failedVerify); if (failedVerify) { return NS_ERROR_ILLEGAL_VALUE; } + minBaseChar = offs + 1; // Check for default-ignorable char that didn't get filtered, combined, // etc by the shaping process, and skip it. diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxOTSUtils.h firefox-esr-140.15.0esr/gfx/thebes/gfxOTSUtils.h --- firefox-esr-140.13.0esr/gfx/thebes/gfxOTSUtils.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxOTSUtils.h 2026-08-26 17:03:42.000000000 +0000 @@ -30,7 +30,8 @@ explicit gfxOTSExpandingMemoryStream(size_t initial, size_t limit = DEFAULT_LIMIT) : mLength(initial), mLimit(limit), mOff(0) { - mPtr = mAlloc.Grow(nullptr, mLength); + mPtr = mAlloc.Grow(nullptr, initial); + std::memset(mPtr, 0, initial); } ~gfxOTSExpandingMemoryStream() { mAlloc.Free(mPtr); } @@ -60,6 +61,7 @@ newLength = mLimit; } mPtr = mAlloc.Grow(mPtr, newLength); + std::memset(static_cast(mPtr) + mLength, 0, newLength - mLength); mLength = newLength; return WriteRaw(data, length); } diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxTextRun.cpp firefox-esr-140.15.0esr/gfx/thebes/gfxTextRun.cpp --- firefox-esr-140.13.0esr/gfx/thebes/gfxTextRun.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxTextRun.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -1427,9 +1427,10 @@ for (uint32_t i = 0; i < wordLen; ++i, ++aOffset) { const CompressedGlyph& g = wordGlyphs[i]; if (!g.IsSimpleGlyph()) { + uint32_t count = g.GetGlyphCount(); const DetailedGlyph* details = - g.GetGlyphCount() > 0 ? aShapedWord->GetDetailedGlyphs(i) : nullptr; - SetDetailedGlyphs(aOffset, g.GetGlyphCount(), details); + count > 0 ? aShapedWord->GetDetailedGlyphs(i, count) : nullptr; + SetDetailedGlyphs(aOffset, count, details); } charGlyphs[aOffset] = g; } @@ -1458,11 +1459,10 @@ ? CompressedGlyph::FLAG_BREAK_TYPE_NONE : dstGlyphs[i].CanBreakBefore()); if (!g.IsSimpleGlyph()) { - uint32_t count = g.GetGlyphCount(); - if (count > 0) { + if (uint32_t count = g.GetGlyphCount()) { // DetailedGlyphs allocation is infallible, so this should never be // null unless the source textrun is somehow broken. - DetailedGlyph* src = aSource->GetDetailedGlyphs(i + aRange.start); + const auto* src = aSource->GetDetailedGlyphs(i + aRange.start, count); MOZ_ASSERT(src, "missing DetailedGlyphs?"); if (src) { DetailedGlyph* dst = AllocateDetailedGlyphs(i + aDest, count); @@ -1621,15 +1621,12 @@ } } } else if (!glyphData->IsMissing()) { - uint32_t glyphCount = glyphData->GetGlyphCount(); - if (glyphCount == 0) { + uint32_t count = glyphData->GetGlyphCount(); + if (count == 0) { continue; } - const gfxTextRun::DetailedGlyph* details = GetDetailedGlyphs(j); - if (!details) { - continue; - } - for (uint32_t k = 0; k < glyphCount; ++k, ++details) { + const auto* details = GetDetailedGlyphs(j, count); + for (uint32_t k = 0; k < count; ++k, ++details) { uint32_t glyphIndex = details->mGlyphID; if (!extents->IsGlyphKnownWithTightExtentsLocked(glyphIndex)) { #ifdef DEBUG_TEXT_RUN_STORAGE_METRICS @@ -1749,19 +1746,19 @@ line.AppendPrintf(" id=%d adv=%d", glyphData.GetSimpleGlyph(), glyphData.GetSimpleAdvance()); } else { - uint32_t count = glyphData.GetGlyphCount(); - if (count) { + if (uint32_t count = glyphData.GetGlyphCount()) { + const auto* glyphs = GetDetailedGlyphs(i, count); line += " ids="; for (uint32_t j = 0; j < count; j++) { - line.AppendPrintf(j ? ",%d" : "%d", GetDetailedGlyphs(i)[j].mGlyphID); + line.AppendPrintf(j ? ",%d" : "%d", glyphs[j].mGlyphID); } line += " advs="; for (uint32_t j = 0; j < count; j++) { - line.AppendPrintf(j ? ",%d" : "%d", GetDetailedGlyphs(i)[j].mAdvance); + line.AppendPrintf(j ? ",%d" : "%d", glyphs[j].mAdvance); } line += " offsets="; for (uint32_t j = 0; j < count; j++) { - auto offset = GetDetailedGlyphs(i)[j].mOffset; + auto offset = glyphs[j].mOffset; line.AppendPrintf(j ? ",(%g,%g)" : "(%g,%g)", offset.x.value, offset.y.value); } @@ -3336,7 +3333,7 @@ loading = true; } - gfxFontEntry* pfe = ufe->GetPlatformFontEntry(); + RefPtr pfe = ufe->GetPlatformFontEntry(); if (pfe && (pfe->HasCharacter(aCh) || (fallbackChar && pfe->HasCharacter(fallbackChar)))) { font = GetFontAt(i, aCh, &loading); diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxTextRun.h firefox-esr-140.15.0esr/gfx/thebes/gfxTextRun.h --- firefox-esr-140.13.0esr/gfx/thebes/gfxTextRun.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxTextRun.h 2026-08-26 17:03:43.000000000 +0000 @@ -774,7 +774,7 @@ if (!glyphCount) { return 0; } - const DetailedGlyph* details = GetDetailedGlyphs(aIndex); + const DetailedGlyph* details = GetDetailedGlyphs(aIndex, glyphCount); int32_t advance = 0; for (uint32_t j = 0; j < glyphCount; ++j, ++details) { advance += details->mAdvance; diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxWindowsPlatform.cpp firefox-esr-140.15.0esr/gfx/thebes/gfxWindowsPlatform.cpp --- firefox-esr-140.13.0esr/gfx/thebes/gfxWindowsPlatform.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxWindowsPlatform.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -39,9 +39,6 @@ #include "gfxCrashReporterUtils.h" -#include "gfxGDIFontList.h" -#include "gfxGDIFont.h" - #include "mozilla/layers/CanvasChild.h" #include "mozilla/layers/CompositorThread.h" @@ -568,38 +565,7 @@ } bool gfxWindowsPlatform::CreatePlatformFontList() { - if (DWriteEnabled()) { - if (gfxPlatformFontList::Initialize(new gfxDWriteFontList)) { - return true; - } - - // DWrite font initialization failed! Don't know why this would happen, - // but apparently it can - see bug 594865. - // So we're going to fall back to GDI fonts & rendering. - DisableD2D(FeatureStatus::Failed, "Failed to initialize fonts", - "FEATURE_FAILURE_FONT_FAIL"_ns); - } - - // Make sure the static variable is initialized... - gfxPlatform::HasVariationFontSupport(); - // ...then force it to false, even if the Windows version was recent enough - // to permit it, as we're using GDI fonts. - sHasVariationFontSupport = false; - - return gfxPlatformFontList::Initialize(new gfxGDIFontList); -} - -// This function will permanently disable D2D for the session. It's intended to -// be used when, after initially chosing to use Direct2D, we encounter a -// scenario we can't support. -// -// This is called during gfxPlatform::Init() so at this point there should be no -// DrawTargetD2D/1 instances. -void gfxWindowsPlatform::DisableD2D(FeatureStatus aStatus, const char* aMessage, - const nsACString& aFailureId) { - gfxConfig::SetFailed(Feature::DIRECT2D, aStatus, aMessage, aFailureId); - Factory::SetDirect3D11Device(nullptr); - UpdateBackendPrefs(); + return gfxPlatformFontList::Initialize(new gfxDWriteFontList); } already_AddRefed gfxWindowsPlatform::CreateOffscreenSurface( diff -Nru firefox-esr-140.13.0esr/gfx/thebes/gfxWindowsPlatform.h firefox-esr-140.15.0esr/gfx/thebes/gfxWindowsPlatform.h --- firefox-esr-140.13.0esr/gfx/thebes/gfxWindowsPlatform.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/gfxWindowsPlatform.h 2026-08-26 17:03:42.000000000 +0000 @@ -204,9 +204,6 @@ bool InitDWriteSupport(); void InitGPUProcessSupport(); - void DisableD2D(mozilla::gfx::FeatureStatus aStatus, const char* aMessage, - const nsACString& aFailureId); - void InitializeConfig(); void InitializeD3D9Config(); void InitializeD3D11Config(); diff -Nru firefox-esr-140.13.0esr/gfx/thebes/moz.build firefox-esr-140.15.0esr/gfx/thebes/moz.build --- firefox-esr-140.13.0esr/gfx/thebes/moz.build 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/thebes/moz.build 2026-08-26 17:03:43.000000000 +0000 @@ -154,8 +154,6 @@ EXPORTS += [ "gfxDWriteCommon.h", "gfxDWriteFonts.h", - "gfxGDIFont.h", - "gfxGDIFontList.h", "gfxWindowsNativeDrawing.h", "gfxWindowsPlatform.h", "gfxWindowsSurface.h", @@ -168,8 +166,6 @@ "DisplayConfigWindows.cpp", "gfxDWriteCommon.cpp", "gfxDWriteFonts.cpp", - "gfxGDIFont.cpp", - "gfxGDIFontList.cpp", "gfxWindowsNativeDrawing.cpp", "gfxWindowsPlatform.cpp", "gfxWindowsSurface.cpp", diff -Nru firefox-esr-140.13.0esr/gfx/webrender_bindings/RenderTextureHost.h firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHost.h --- firefox-esr-140.13.0esr/gfx/webrender_bindings/RenderTextureHost.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHost.h 2026-08-26 17:03:42.000000000 +0000 @@ -102,6 +102,8 @@ return false; } + virtual void UnlockSWGLCompositeSurface() {} + virtual RefPtr CreateTextureSource( layers::TextureSourceProvider* aProvider); diff -Nru firefox-esr-140.13.0esr/gfx/webrender_bindings/RenderTextureHostSWGL.cpp firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostSWGL.cpp --- firefox-esr-140.13.0esr/gfx/webrender_bindings/RenderTextureHostSWGL.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostSWGL.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -109,11 +109,11 @@ if (!SetContext(aContext)) { return InvalidToWrExternalImage(); } - if (!mLocked) { + if (!HasLockedSWGL()) { if (!UpdatePlanes(aCompositor)) { return InvalidToWrExternalImage(); } - mLocked = true; + mLockedSWGL = true; } if (aChannelIndex >= mPlanes.size()) { return InvalidToWrExternalImage(); @@ -134,8 +134,8 @@ } void RenderTextureHostSWGL::UnlockSWGL() { - if (mLocked) { - mLocked = false; + if (mLockedSWGL) { + mLockedSWGL = false; UnmapPlanes(); } } @@ -162,11 +162,11 @@ if (!SetContext(aContext)) { return false; } - if (!mLocked) { + if (!HasLockedSWGL()) { if (!UpdatePlanes(nullptr)) { return false; } - mLocked = true; + mLockedSWGLCompositeSurface = true; } MOZ_ASSERT(mPlanes.size() <= 3); for (size_t i = 0; i < mPlanes.size(); i++) { @@ -197,6 +197,13 @@ return true; } +void RenderTextureHostSWGL::UnlockSWGLCompositeSurface() { + if (mLockedSWGLCompositeSurface) { + mLockedSWGLCompositeSurface = false; + UnmapPlanes(); + } +} + bool wr_swgl_lock_composite_surface(void* aContext, wr::ExternalImageId aId, wr::SWGLCompositeSurfaceInfo* aInfo) { RenderTextureHost* texture = RenderThread::Get()->GetRenderTexture(aId); @@ -219,7 +226,7 @@ if (!swglTex) { return; } - swglTex->UnlockSWGL(); + swglTex->UnlockSWGLCompositeSurface(); } } // namespace wr diff -Nru firefox-esr-140.13.0esr/gfx/webrender_bindings/RenderTextureHostSWGL.h firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostSWGL.h --- firefox-esr-140.13.0esr/gfx/webrender_bindings/RenderTextureHostSWGL.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostSWGL.h 2026-08-26 17:03:42.000000000 +0000 @@ -51,6 +51,8 @@ bool LockSWGLCompositeSurface(void* aContext, wr::SWGLCompositeSurfaceInfo* aInfo) override; + void UnlockSWGLCompositeSurface() override; + size_t BytesFromPlanes() { NS_ASSERTION(mPlanes.size(), "Can't compute bytes without any planes"); size_t bytes = 0; @@ -61,7 +63,13 @@ } protected: - bool mLocked = false; + bool mLockedSWGL = false; + bool mLockedSWGLCompositeSurface = false; + + bool HasLockedSWGL() const { + return mLockedSWGL || mLockedSWGLCompositeSurface; + } + void* mContext = nullptr; std::vector mPlanes; diff -Nru firefox-esr-140.13.0esr/gfx/webrender_bindings/RenderTextureHostWrapper.cpp firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostWrapper.cpp --- firefox-esr-140.13.0esr/gfx/webrender_bindings/RenderTextureHostWrapper.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostWrapper.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -76,6 +76,12 @@ return mTextureHost->LockSWGLCompositeSurface(aContext, aInfo); } +void RenderTextureHostWrapper::UnlockSWGLCompositeSurface() { + if (mTextureHost) { + mTextureHost->UnlockSWGLCompositeSurface(); + } +} + void RenderTextureHostWrapper::ClearCachedResources() { if (mTextureHost) { mTextureHost->ClearCachedResources(); diff -Nru firefox-esr-140.13.0esr/gfx/webrender_bindings/RenderTextureHostWrapper.h firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostWrapper.h --- firefox-esr-140.13.0esr/gfx/webrender_bindings/RenderTextureHostWrapper.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/webrender_bindings/RenderTextureHostWrapper.h 2026-08-26 17:03:42.000000000 +0000 @@ -71,6 +71,7 @@ void UnlockSWGL() override; bool LockSWGLCompositeSurface(void* aContext, wr::SWGLCompositeSurfaceInfo* aInfo) override; + void UnlockSWGLCompositeSurface() override; // This is just a wrapper, so doesn't need to report the // size of the wrapped object (which reports itself). diff -Nru firefox-esr-140.13.0esr/gfx/webrender_bindings/WebRenderAPI.cpp firefox-esr-140.15.0esr/gfx/webrender_bindings/WebRenderAPI.cpp --- firefox-esr-140.13.0esr/gfx/webrender_bindings/WebRenderAPI.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/webrender_bindings/WebRenderAPI.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -266,18 +266,20 @@ } void TransactionBuilder::SetDisplayList( - Epoch aEpoch, wr::WrPipelineId pipeline_id, + Epoch aEpoch, wr::IdNamespace aIdNamespace, wr::WrPipelineId pipeline_id, wr::BuiltDisplayListDescriptor dl_descriptor, wr::Vec& dl_items_data, wr::Vec& dl_cache_data, wr::Vec& dl_spatial_tree) { - wr_transaction_set_display_list(mTxn, aEpoch, pipeline_id, dl_descriptor, - &dl_items_data.inner, &dl_cache_data.inner, + wr_transaction_set_display_list(mTxn, aEpoch, aIdNamespace, pipeline_id, + dl_descriptor, &dl_items_data.inner, + &dl_cache_data.inner, &dl_spatial_tree.inner); } void TransactionBuilder::ClearDisplayList(Epoch aEpoch, + wr::IdNamespace aIdNamespace, wr::WrPipelineId aPipelineId) { - wr_transaction_clear_display_list(mTxn, aEpoch, aPipelineId); + wr_transaction_clear_display_list(mTxn, aEpoch, aIdNamespace, aPipelineId); } void TransactionBuilder::GenerateFrame(const VsyncId& aVsyncId, bool aPresent, diff -Nru firefox-esr-140.13.0esr/gfx/webrender_bindings/WebRenderAPI.h firefox-esr-140.15.0esr/gfx/webrender_bindings/WebRenderAPI.h --- firefox-esr-140.13.0esr/gfx/webrender_bindings/WebRenderAPI.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/webrender_bindings/WebRenderAPI.h 2026-08-26 17:03:43.000000000 +0000 @@ -124,13 +124,18 @@ void RemovePipeline(PipelineId aPipelineId); - void SetDisplayList(Epoch aEpoch, wr::WrPipelineId pipeline_id, + // aIdNamespace is the namespace whose resources the display list is allowed + // to reference. It must be supplied by the compositor-side owner of the + // pipeline. + void SetDisplayList(Epoch aEpoch, wr::IdNamespace aIdNamespace, + wr::WrPipelineId pipeline_id, wr::BuiltDisplayListDescriptor dl_descriptor, wr::Vec& dl_items_data, wr::Vec& dl_cache_data, wr::Vec& dl_spatial_tree); - void ClearDisplayList(Epoch aEpoch, wr::WrPipelineId aPipeline); + void ClearDisplayList(Epoch aEpoch, wr::IdNamespace aIdNamespace, + wr::WrPipelineId aPipeline); void GenerateFrame(const VsyncId& aVsyncId, bool aPresent, wr::RenderReasons aReasons); diff -Nru firefox-esr-140.13.0esr/gfx/webrender_bindings/src/bindings.rs firefox-esr-140.15.0esr/gfx/webrender_bindings/src/bindings.rs --- firefox-esr-140.13.0esr/gfx/webrender_bindings/src/bindings.rs 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/webrender_bindings/src/bindings.rs 2026-08-26 17:03:42.000000000 +0000 @@ -2238,6 +2238,7 @@ pub extern "C" fn wr_transaction_set_display_list( txn: &mut Transaction, epoch: WrEpoch, + namespace: WrIdNamespace, pipeline_id: WrPipelineId, dl_descriptor: BuiltDisplayListDescriptor, dl_items_data: &mut WrVecU8, @@ -2252,7 +2253,7 @@ let dl = BuiltDisplayList::from_data(payload, dl_descriptor); - txn.set_display_list(epoch, (pipeline_id, dl)); + txn.set_display_list(epoch, namespace, (pipeline_id, dl)); } #[no_mangle] @@ -2574,12 +2575,13 @@ pub unsafe extern "C" fn wr_transaction_clear_display_list( txn: &mut Transaction, epoch: WrEpoch, + namespace: WrIdNamespace, pipeline_id: WrPipelineId, ) { let mut frame_builder = WebRenderFrameBuilder::new(pipeline_id); frame_builder.dl_builder.begin(); - txn.set_display_list(epoch, frame_builder.dl_builder.end()); + txn.set_display_list(epoch, namespace, frame_builder.dl_builder.end()); } #[no_mangle] diff -Nru firefox-esr-140.13.0esr/gfx/wr/example-compositor/compositor/src/main.rs firefox-esr-140.15.0esr/gfx/wr/example-compositor/compositor/src/main.rs --- firefox-esr-140.13.0esr/gfx/wr/example-compositor/compositor/src/main.rs 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/example-compositor/compositor/src/main.rs 2026-08-26 17:03:42.000000000 +0000 @@ -484,7 +484,7 @@ inv_mode, ); - txn.set_display_list(current_epoch, root_builder.end()); + txn.set_display_list(current_epoch, api.get_namespace_id(), root_builder.end()); } txn.generate_frame(0, true, RenderReasons::empty()); @@ -517,7 +517,7 @@ inv_mode, ); - txn.set_display_list(current_epoch, root_builder.end()); + txn.set_display_list(current_epoch, api.get_namespace_id(), root_builder.end()); } Invalidations::Scrolling => { let d = 0.5 - 0.5 * (2.0 * f32::consts::PI * 5.0 * time).cos(); diff -Nru firefox-esr-140.13.0esr/gfx/wr/examples/common/boilerplate.rs firefox-esr-140.15.0esr/gfx/wr/examples/common/boilerplate.rs --- firefox-esr-140.13.0esr/gfx/wr/examples/common/boilerplate.rs 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/examples/common/boilerplate.rs 2026-08-26 17:03:42.000000000 +0000 @@ -207,6 +207,7 @@ ); txn.set_display_list( epoch, + api.get_namespace_id(), builder.end(), ); txn.set_root_pipeline(pipeline_id); @@ -304,6 +305,7 @@ ); txn.set_display_list( epoch, + api.get_namespace_id(), builder.end(), ); txn.generate_frame(0, true, RenderReasons::empty()); diff -Nru firefox-esr-140.13.0esr/gfx/wr/examples/document.rs firefox-esr-140.15.0esr/gfx/wr/examples/document.rs --- firefox-esr-140.13.0esr/gfx/wr/examples/document.rs 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/examples/document.rs 2026-08-26 17:03:42.000000000 +0000 @@ -120,6 +120,7 @@ let mut txn = Transaction::new(); txn.set_display_list( Epoch(0), + api.get_namespace_id(), builder.end(), ); txn.generate_frame(0, true, RenderReasons::empty()); diff -Nru firefox-esr-140.13.0esr/gfx/wr/examples/iframe.rs firefox-esr-140.15.0esr/gfx/wr/examples/iframe.rs --- firefox-esr-140.13.0esr/gfx/wr/examples/iframe.rs 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/examples/iframe.rs 2026-08-26 17:03:43.000000000 +0000 @@ -57,6 +57,7 @@ let mut txn = Transaction::new(); txn.set_display_list( Epoch(0), + api.get_namespace_id(), sub_builder.end(), ); api.send_transaction(document_id, txn); diff -Nru firefox-esr-140.13.0esr/gfx/wr/examples/multiwindow.rs firefox-esr-140.15.0esr/gfx/wr/examples/multiwindow.rs --- firefox-esr-140.13.0esr/gfx/wr/examples/multiwindow.rs 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/examples/multiwindow.rs 2026-08-26 17:03:43.000000000 +0000 @@ -275,6 +275,7 @@ txn.set_display_list( self.epoch, + api.get_namespace_id(), builder.end(), ); txn.set_root_pipeline(self.pipeline_id); diff -Nru firefox-esr-140.13.0esr/gfx/wr/swgl/src/swgl_ext.h firefox-esr-140.15.0esr/gfx/wr/swgl/src/swgl_ext.h --- firefox-esr-140.13.0esr/gfx/wr/swgl/src/swgl_ext.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/swgl/src/swgl_ext.h 2026-08-26 17:03:42.000000000 +0000 @@ -1183,7 +1183,8 @@ const mat3_scalar& rgb_from_debiased_ycbcr, int rescaleFactor, C color = C()) { if (!swgl_isTextureLinear(sampler0) || !swgl_isTextureLinear(sampler1) || - !swgl_isTextureLinear(sampler2)) { + !swgl_isTextureLinear(sampler2) || sampler0->format != sampler1->format || + sampler0->format != sampler2->format) { return 0; } LINEAR_QUANTIZE_UV(sampler0, uv0, uv_step0, uv_rect0, min_uv0, max_uv0); diff -Nru firefox-esr-140.13.0esr/gfx/wr/webrender/src/render_api.rs firefox-esr-140.15.0esr/gfx/wr/webrender/src/render_api.rs --- firefox-esr-140.13.0esr/gfx/wr/webrender/src/render_api.rs 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/webrender/src/render_api.rs 2026-08-26 17:03:42.000000000 +0000 @@ -292,11 +292,17 @@ /// Arguments: /// /// * `epoch`: The unique Frame ID, monotonically increasing. + /// * `namespace`: The id namespace that owns the resources this display list + /// is allowed to reference. It must be provided by the (trusted) code that + /// submits the display list, never by whoever built the display list: it is + /// what lets the scene builder reject references to resources belonging to + /// another namespace. /// * `pipeline_id`: The ID of the pipeline that is supplying this display list. /// * `display_list`: The root Display list used in this frame. pub fn set_display_list( &mut self, epoch: Epoch, + namespace: IdNamespace, (pipeline_id, mut display_list): (PipelineId, BuiltDisplayList), ) { display_list.set_send_time_ns(precise_time_ns()); @@ -305,6 +311,7 @@ display_list, epoch, pipeline_id, + namespace, } ); } @@ -817,6 +824,8 @@ epoch: Epoch, /// pipeline_id: PipelineId, + /// The id namespace owning the resources this display list may reference. + namespace: IdNamespace, }, /// SetDocumentView { diff -Nru firefox-esr-140.13.0esr/gfx/wr/webrender/src/scene.rs firefox-esr-140.15.0esr/gfx/wr/webrender/src/scene.rs --- firefox-esr-140.13.0esr/gfx/wr/webrender/src/scene.rs 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/webrender/src/scene.rs 2026-08-26 17:03:42.000000000 +0000 @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use api::{BuiltDisplayList, DisplayListWithCache, ColorF, DynamicProperties, Epoch, FontRenderMode}; +use api::{BuiltDisplayList, DisplayListWithCache, ColorF, DynamicProperties, Epoch, FontRenderMode, IdNamespace}; use api::{PipelineId, PropertyBinding, PropertyBindingId, PropertyValue, MixBlendMode, StackingContext}; use api::units::*; use api::channel::Sender; @@ -175,6 +175,9 @@ #[derive(Clone)] pub struct ScenePipeline { pub display_list: DisplayListWithCache, + /// The id namespace that owns the resources this display list is allowed to + /// reference. + pub namespace: IdNamespace, } /// A complete representation of the layout bundling visible pipelines together. @@ -204,6 +207,7 @@ &mut self, pipeline_id: PipelineId, epoch: Epoch, + namespace: IdNamespace, display_list: BuiltDisplayList, ) { // Adds a cache to the given display list. If this pipeline already had @@ -218,6 +222,7 @@ let new_pipeline = ScenePipeline { display_list, + namespace, }; self.pipelines.insert(pipeline_id, new_pipeline); diff -Nru firefox-esr-140.13.0esr/gfx/wr/webrender/src/scene_builder_thread.rs firefox-esr-140.15.0esr/gfx/wr/webrender/src/scene_builder_thread.rs --- firefox-esr-140.13.0esr/gfx/wr/webrender/src/scene_builder_thread.rs 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/webrender/src/scene_builder_thread.rs 2026-08-26 17:03:42.000000000 +0000 @@ -559,6 +559,7 @@ epoch, pipeline_id, display_list, + namespace, } => { let (builder_start_time_ns, builder_end_time_ns, send_time_ns) = display_list.times(); @@ -585,6 +586,7 @@ scene.set_display_list( pipeline_id, epoch, + namespace, display_list, ); } diff -Nru firefox-esr-140.13.0esr/gfx/wr/webrender/src/scene_building.rs firefox-esr-140.15.0esr/gfx/wr/webrender/src/scene_building.rs --- firefox-esr-140.13.0esr/gfx/wr/webrender/src/scene_building.rs 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/webrender/src/scene_building.rs 2026-08-26 17:03:43.000000000 +0000 @@ -39,7 +39,7 @@ use api::{ClipId, ColorF, CommonItemProperties, ComplexClipRegion, ComponentTransferFuncType, RasterSpace}; use api::{DebugFlags, DisplayItem, DisplayItemRef, ExtendMode, ExternalScrollId, FilterData}; use api::{FilterOp, FilterPrimitive, FontInstanceKey, FontSize, GlyphInstance, GlyphOptions, GradientStop}; -use api::{IframeDisplayItem, ImageKey, ImageRendering, ItemRange, ColorDepth, QualitySettings}; +use api::{IdNamespace, IframeDisplayItem, ImageKey, ImageRendering, ItemRange, ColorDepth, QualitySettings}; use api::{LineOrientation, LineStyle, NinePatchBorderSource, PipelineId, MixBlendMode, StackingContextFlags}; use api::{PropertyBinding, ReferenceFrameKind, ScrollFrameDescriptor}; use api::{APZScrollGeneration, HasScrollLinkedEffect, Shadow, SpatialId, StickyFrameDescriptor, ImageMask, ItemTag}; @@ -945,6 +945,9 @@ } struct BuildContext<'a> { pipeline_id: PipelineId, + /// Namespace the items traversed in this context are allowed to + /// reference resources from. See `ScenePipeline::namespace`. + namespace: IdNamespace, kind: ContextKind<'a>, } @@ -964,6 +967,7 @@ let mut stack = vec![BuildContext { pipeline_id: root_pipeline_id, + namespace: root_pipeline.namespace, kind: ContextKind::Root, }]; let mut traversal = root_pipeline.display_list.iter(); @@ -991,7 +995,9 @@ continue; } - let snapshot = info.snapshot.map(|snapshot| { + let snapshot = info.snapshot.filter(|snapshot| { + validate_image_key(snapshot.key.as_image(), bc.namespace) + }).map(|snapshot| { // Offset the snapshot area by the stacking context origin // so that the area is expressed in the same coordinate space // as the items in the stacking context. @@ -1022,6 +1028,7 @@ let new_context = BuildContext { pipeline_id: bc.pipeline_id, + namespace: bc.namespace, kind: ContextKind::StackingContext { sc_info, }, @@ -1039,6 +1046,7 @@ let new_context = BuildContext { pipeline_id: bc.pipeline_id, + namespace: bc.namespace, kind: ContextKind::ReferenceFrame, }; stack.push(bc); @@ -1054,13 +1062,20 @@ profile_scope!("iframe"); let space = self.get_space(info.space_and_clip.spatial_id); - let subtraversal = match self.push_iframe(info, space) { + // Note: the referenced pipeline is not checked against the + // parent pipeline's namespace. Nesting pipelines across + // namespaces is legitimate (a content process embeds the + // pipelines of its out-of-process iframes and of its async + // image pipelines), so validating iframe references needs + // ownership information webrender doesn't have. + let (namespace, subtraversal) = match self.push_iframe(info, space) { Some(pair) => pair, None => continue, }; let new_context = BuildContext { pipeline_id: info.pipeline_id, + namespace, kind: ContextKind::Iframe { parent_traversal: mem::replace(&mut traversal, subtraversal), }, @@ -1070,7 +1085,7 @@ continue 'outer; } _ => { - self.build_item(item); + self.build_item(item, bc.namespace); } }; } @@ -1267,7 +1282,7 @@ &mut self, info: &IframeDisplayItem, spatial_node_index: SpatialNodeIndex, - ) -> Option> { + ) -> Option<(IdNamespace, BuiltDisplayListIter<'a>)> { let iframe_pipeline_id = info.pipeline_id; let pipeline = match self.scene.pipelines.get(&iframe_pipeline_id) { Some(pipeline) => pipeline, @@ -1346,7 +1361,7 @@ instance_id, ); - Some(pipeline.display_list.iter()) + Some((pipeline.namespace, pipeline.display_list.iter())) } fn get_space( @@ -1450,14 +1465,22 @@ self.snap_to_device.snap_rect(&rect) } + /// `namespace` is the id namespace this display list is allowed to reference + /// resources from; items referencing anything else are dropped. See + /// `validate_resource_namespace`. fn build_item<'b>( &'b mut self, item: DisplayItemRef, + namespace: IdNamespace, ) { match *item.item() { DisplayItem::Image(ref info) => { profile_scope!("image"); + if !validate_image_key(info.image_key, namespace) { + return; + } + let (layout, _, spatial_node_index, clip_node_id) = self.process_common_properties_with_bounds( &info.common, info.bounds, @@ -1478,6 +1501,10 @@ DisplayItem::RepeatingImage(ref info) => { profile_scope!("repeating_image"); + if !validate_image_key(info.image_key, namespace) { + return; + } + let (layout, unsnapped_rect, spatial_node_index, clip_node_id) = self.process_common_properties_with_bounds( &info.common, info.bounds, @@ -1504,6 +1531,10 @@ DisplayItem::YuvImage(ref info) => { profile_scope!("yuv_image"); + if !validate_yuv_data(&info.yuv_data, namespace) { + return; + } + let (layout, _, spatial_node_index, clip_node_id) = self.process_common_properties_with_bounds( &info.common, info.bounds, @@ -1523,6 +1554,10 @@ DisplayItem::Text(ref info) => { profile_scope!("text"); + if !validate_font_instance_key(info.font_key, namespace) { + return; + } + // TODO(aosmond): Snapping text primitives does not make much sense, given the // primitive bounds and clip are supposed to be conservative, not definitive. // E.g. they should be able to grow and not impact the output. However there @@ -1867,6 +1902,14 @@ DisplayItem::Border(ref info) => { profile_scope!("border"); + if let BorderDetails::NinePatch(ref border) = info.details { + if let NinePatchBorderSource::Image(key, _) = border.source { + if !validate_image_key(key, namespace) { + return; + } + } + } + let (layout, _, spatial_node_index, clip_node_id) = self.process_common_properties_with_bounds( &info.common, info.bounds, @@ -1883,10 +1926,23 @@ DisplayItem::ImageMaskClip(ref info) => { profile_scope!("image_clip"); + // The clip node has to be defined either way, since later clip + // chain items refer to it by id. Neutralize a foreign mask into + // an empty one, which clips everything out, rather than dropping + // the clip and letting the masked content draw unclipped. + let image_mask = if validate_image_key(info.image_mask.image, namespace) { + info.image_mask + } else { + ImageMask { + image: ImageKey::DUMMY, + rect: LayoutRect::zero(), + } + }; + self.add_image_mask_clip_node( info.id, info.spatial_id, - &info.image_mask, + &image_mask, info.fill_rule, item.points(), ); @@ -3746,13 +3802,7 @@ image_rendering: ImageRendering, ) { let format = yuv_data.get_format(); - let yuv_key = match yuv_data { - YuvData::NV12(plane_0, plane_1) => [plane_0, plane_1, ImageKey::DUMMY], - YuvData::P010(plane_0, plane_1) => [plane_0, plane_1, ImageKey::DUMMY], - YuvData::NV16(plane_0, plane_1) => [plane_0, plane_1, ImageKey::DUMMY], - YuvData::PlanarYCbCr(plane_0, plane_1, plane_2) => [plane_0, plane_1, plane_2], - YuvData::InterleavedYCbCr(plane_0) => [plane_0, ImageKey::DUMMY, ImageKey::DUMMY], - }; + let yuv_key = yuv_planes(&yuv_data); self.add_nonshadowable_primitive( spatial_node_index, @@ -4895,6 +4945,60 @@ }).collect() } +/// Resource keys embedded in display items are only unique within the id +/// namespace that minted them, and all namespaces of a window share a single +/// `ResourceCache`. A key read out of a display item must be checked against +/// the namespace the display list was submitted with before it can be used +/// to look a resource up. +fn resource_namespace_matches(key_namespace: IdNamespace, namespace: IdNamespace) -> bool { + // Namespace 0 is never handed out, so it is only ever the "no resource" + // sentinel (`ImageKey::DUMMY` and friends) and cannot name a resource. + key_namespace == namespace || key_namespace.0 == 0 +} + +fn validate_resource_namespace( + key_namespace: IdNamespace, + namespace: IdNamespace, + kind: &'static str, +) -> bool { + if resource_namespace_matches(key_namespace, namespace) { + return true; + } + + warn!( + "Ignoring {} referencing id namespace {:?} from a display list owned by {:?}", + kind, key_namespace, namespace, + ); + debug_assert!(false, "display list references a resource of a foreign id namespace"); + + false +} + +fn validate_image_key(key: ImageKey, namespace: IdNamespace) -> bool { + validate_resource_namespace(key.0, namespace, "image key") +} + +/// The planes a `YuvData` actually references, padded with `ImageKey::DUMMY`. +/// Shared by validation and `add_yuv_image` so that the set of keys checked is +/// by construction the set of keys used. +fn yuv_planes(yuv_data: &YuvData) -> [ImageKey; 3] { + match *yuv_data { + YuvData::NV12(p0, p1) + | YuvData::P010(p0, p1) + | YuvData::NV16(p0, p1) => [p0, p1, ImageKey::DUMMY], + YuvData::PlanarYCbCr(p0, p1, p2) => [p0, p1, p2], + YuvData::InterleavedYCbCr(p0) => [p0, ImageKey::DUMMY, ImageKey::DUMMY], + } +} + +fn validate_yuv_data(yuv_data: &YuvData, namespace: IdNamespace) -> bool { + yuv_planes(yuv_data).iter().all(|key| validate_image_key(*key, namespace)) +} + +fn validate_font_instance_key(key: FontInstanceKey, namespace: IdNamespace) -> bool { + validate_resource_namespace(key.0, namespace, "font instance key") +} + /// A helper for reusing the scene builder's memory allocations and dropping /// scene allocations on the scene builder thread to avoid lock contention in /// jemalloc. diff -Nru firefox-esr-140.13.0esr/gfx/wr/wrench/src/rawtest.rs firefox-esr-140.15.0esr/gfx/wr/wrench/src/rawtest.rs --- firefox-esr-140.13.0esr/gfx/wr/wrench/src/rawtest.rs 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/wrench/src/rawtest.rs 2026-08-26 17:03:43.000000000 +0000 @@ -93,6 +93,7 @@ txn.set_display_list( *epoch, + self.wrench.api.get_namespace_id(), builder.end(), ); epoch.0 += 1; @@ -1235,6 +1236,7 @@ txn.set_display_list( Epoch(0), + self.wrench.api.get_namespace_id(), builder.end(), ); txn.generate_frame(0, true, RenderReasons::TESTING); @@ -1254,6 +1256,7 @@ let mut txn = Transaction::new(); txn.set_display_list( Epoch(1), + self.wrench.api.get_namespace_id(), builder.end(), ); self.wrench.api.send_transaction(self.wrench.document_id, txn); @@ -1298,6 +1301,7 @@ txn.set_root_pipeline(self.wrench.root_pipeline_id); txn.set_display_list( Epoch(1), + self.wrench.api.get_namespace_id(), builder.end(), ); txn.generate_frame(0, true, RenderReasons::TESTING); diff -Nru firefox-esr-140.13.0esr/gfx/wr/wrench/src/wrench.rs firefox-esr-140.15.0esr/gfx/wr/wrench/src/wrench.rs --- firefox-esr-140.13.0esr/gfx/wr/wrench/src/wrench.rs 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/gfx/wr/wrench/src/wrench.rs 2026-08-26 17:03:43.000000000 +0000 @@ -441,6 +441,20 @@ ) } + #[cfg(all(unix, not(target_os = "android")))] + pub fn font_key_from_name(&mut self, font_name: &str) -> FontKey { + let property = system_fonts::FontPropertyBuilder::new() + .family(font_name) + .build(); + let (font, index) = system_fonts::get(&property).unwrap(); + self.font_key_from_bytes(font, index as u32) + } + + #[cfg(target_os = "android")] + pub fn font_key_from_name(&mut self, _font_name: &str) -> FontKey { + unimplemented!() + } + #[cfg(target_os = "windows")] pub fn font_key_from_properties( &mut self, @@ -500,20 +514,6 @@ unimplemented!() } - #[cfg(all(unix, not(target_os = "android")))] - pub fn font_key_from_name(&mut self, font_name: &str) -> FontKey { - let property = system_fonts::FontPropertyBuilder::new() - .family(font_name) - .build(); - let (font, index) = system_fonts::get(&property).unwrap(); - self.font_key_from_bytes(font, index as u32) - } - - #[cfg(target_os = "android")] - pub fn font_key_from_name(&mut self, _font_name: &str) -> FontKey { - unimplemented!() - } - pub fn font_key_from_bytes(&mut self, bytes: Vec, index: u32) -> FontKey { let key = self.api.generate_font_key(); let mut txn = Transaction::new(); @@ -572,6 +572,7 @@ txn.set_display_list( Epoch(*frame_number), + self.api.get_namespace_id(), (display_list.pipeline, display_list.payload), ); diff -Nru firefox-esr-140.13.0esr/image/ImageBlocker.cpp firefox-esr-140.15.0esr/image/ImageBlocker.cpp --- firefox-esr-140.13.0esr/image/ImageBlocker.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/image/ImageBlocker.cpp 2026-08-26 17:03:42.000000000 +0000 @@ -25,9 +25,7 @@ return NS_OK; } - ExtContentPolicyType contentType = aLoadInfo->GetExternalContentPolicyType(); - if (contentType != ExtContentPolicy::TYPE_IMAGE && - contentType != ExtContentPolicy::TYPE_IMAGESET) { + if (!nsContentUtils::IsImageType(aLoadInfo->GetExternalContentPolicyType())) { return NS_OK; } diff -Nru firefox-esr-140.13.0esr/image/RasterImage.cpp firefox-esr-140.15.0esr/image/RasterImage.cpp --- firefox-esr-140.13.0esr/image/RasterImage.cpp 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/image/RasterImage.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -81,8 +81,6 @@ //****************************************************************************** RasterImage::~RasterImage() { - mIsBeingDestroyed = true; - // Make sure our SourceBuffer is marked as complete. This will ensure that any // outstanding decoders terminate. if (!mSourceBuffer->IsComplete()) { @@ -491,19 +489,21 @@ void RasterImage::OnSurfaceDiscarded(const SurfaceKey& aSurfaceKey) { MOZ_ASSERT(mProgressTracker); - if (mIsBeingDestroyed) { - return; - } - bool animatedFramesDiscarded = aSurfaceKey.Playback() == PlaybackType::eAnimated; nsCOMPtr eventTarget = do_GetMainThread(); - RefPtr image = this; - nsCOMPtr ev = - NS_NewRunnableFunction("RasterImage::OnSurfaceDiscarded", [=]() -> void { - image->OnSurfaceDiscardedInternal(animatedFramesDiscarded); + RefPtr progressTracker = mProgressTracker; + nsCOMPtr ev = NS_NewRunnableFunction( + "RasterImage::OnSurfaceDiscarded", + [progressTracker, animatedFramesDiscarded]() -> void { + RefPtr image = progressTracker->GetImage(); + if (!image) { + return; + } + static_cast(image.get()) + ->OnSurfaceDiscardedInternal(animatedFramesDiscarded); }); eventTarget->Dispatch(ev.forget(), NS_DISPATCH_NORMAL); } diff -Nru firefox-esr-140.13.0esr/image/RasterImage.h firefox-esr-140.15.0esr/image/RasterImage.h --- firefox-esr-140.13.0esr/image/RasterImage.h 2026-07-15 20:30:30.000000000 +0000 +++ firefox-esr-140.15.0esr/image/RasterImage.h 2026-08-26 17:03:43.000000000 +0000 @@ -17,7 +17,6 @@ #ifndef mozilla_image_RasterImage_h #define mozilla_image_RasterImage_h -#include "mozilla/Atomics.h" #include "Image.h" #include "nsCOMPtr.h" #include "imgIContainer.h" @@ -383,8 +382,6 @@ // This is currently only used for statistics int32_t mDecodeCount; - Atomic mIsBeingDestroyed{false}; - #ifdef DEBUG uint32_t mFramesNotified; #endif diff -Nru firefox-esr-140.13.0esr/image/decoders/icon/components.conf firefox-esr-140.15.0esr/image/decoders/icon/components.conf --- firefox-esr-140.13.0esr/image/decoders/icon/components.conf 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/image/decoders/icon/components.conf 2026-08-26 17:03:42.000000000 +0000 @@ -25,5 +25,6 @@ 'cid': '{1460df3b-774c-4205-8349-838e507c3ef9}', 'type': 'nsMozIconURI::Mutator', 'headers': ['/image/decoders/icon/nsIconURI.h'], + 'serializable': True, }, ] diff -Nru firefox-esr-140.13.0esr/image/decoders/icon/nsIconProtocolHandler.cpp firefox-esr-140.15.0esr/image/decoders/icon/nsIconProtocolHandler.cpp --- firefox-esr-140.13.0esr/image/decoders/icon/nsIconProtocolHandler.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/image/decoders/icon/nsIconProtocolHandler.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -6,6 +6,7 @@ #include "nsIconProtocolHandler.h" +#include "nsContentUtils.h" #include "nsIconChannel.h" #include "nsIconURI.h" #include "nsCRT.h" @@ -39,16 +40,19 @@ } NS_IMETHODIMP -nsIconProtocolHandler::NewChannel(nsIURI* url, nsILoadInfo* aLoadInfo, +nsIconProtocolHandler::NewChannel(nsIURI* aUrl, nsILoadInfo* aLoadInfo, nsIChannel** result) { - NS_ENSURE_ARG_POINTER(url); + if (!nsContentUtils::IsImageType(aLoadInfo->GetExternalContentPolicyType())) { + return NS_ERROR_CONTENT_BLOCKED; + } + nsIconChannel* channel = new nsIconChannel; if (!channel) { return NS_ERROR_OUT_OF_MEMORY; } NS_ADDREF(channel); - nsresult rv = channel->Init(url, aLoadInfo); + nsresult rv = channel->Init(aUrl, aLoadInfo); if (NS_FAILED(rv)) { NS_RELEASE(channel); return rv; diff -Nru firefox-esr-140.13.0esr/ipc/chromium/src/base/pickle.cc firefox-esr-140.15.0esr/ipc/chromium/src/base/pickle.cc --- firefox-esr-140.13.0esr/ipc/chromium/src/base/pickle.cc 2026-07-15 20:30:32.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/chromium/src/base/pickle.cc 2026-08-26 17:03:43.000000000 +0000 @@ -99,9 +99,6 @@ bool Pickle::IteratorHasRoomFor(const PickleIterator& iter, uint32_t len) const { - // Make sure we don't get into trouble where AlignInt(len) == 0. - MOZ_RELEASE_ASSERT(len < 64); - return iter.iter_.HasRoomFor(AlignInt(len)); } @@ -110,9 +107,6 @@ } void Pickle::UpdateIter(PickleIterator* iter, uint32_t bytes) const { - // Make sure we don't get into trouble where AlignInt(bytes) == 0. - MOZ_RELEASE_ASSERT(bytes < 64); - iter->iter_.Advance(buffers_, AlignInt(bytes)); } @@ -359,24 +353,22 @@ void Pickle::BeginWrite(uint32_t length) { // write at an alignment-aligned offset from the beginning of the header - uint32_t offset = AlignInt(header_->payload_size); - uint32_t padding = (header_size_ + offset) % sizeof(memberAlignmentType); - uint32_t new_size = offset + padding + AlignInt(length); - MOZ_RELEASE_ASSERT(new_size >= header_->payload_size); + mozilla::CheckedInt offset = AlignInt(header_->payload_size); + mozilla::CheckedInt padding = + (header_size_ + offset) % sizeof(memberAlignmentType); + const mozilla::CheckedInt new_size = + offset + padding + AlignInt(length); + MOZ_RELEASE_ASSERT(new_size.isValid()); DCHECK(intptr_t(header_) % sizeof(memberAlignmentType) == 0); -#ifdef HAVE_64BIT_BUILD - DCHECK_LE(length, std::numeric_limits::max()); -#endif - - WritePadding(buffers_, padding); + WritePadding(buffers_, padding.value()); - DCHECK((header_size_ + header_->payload_size + padding) % + DCHECK((header_size_ + header_->payload_size + padding.value()) % sizeof(memberAlignmentType) == 0); - header_->payload_size = new_size; + header_->payload_size = new_size.value(); } void Pickle::EndWrite(uint32_t length) { @@ -438,8 +430,7 @@ return WriteBytes(&value, sizeof(value)); } -bool Pickle::WriteBytesZeroCopy(void* data, uint32_t data_len, - uint32_t capacity) { +bool Pickle::WriteBytesZeroCopy(void* data, size_t data_len, size_t capacity) { BeginWrite(data_len); uint32_t new_capacity = AlignInt(capacity); diff -Nru firefox-esr-140.13.0esr/ipc/chromium/src/base/pickle.h firefox-esr-140.15.0esr/ipc/chromium/src/base/pickle.h --- firefox-esr-140.13.0esr/ipc/chromium/src/base/pickle.h 2026-07-15 20:30:32.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/chromium/src/base/pickle.h 2026-08-26 17:03:43.000000000 +0000 @@ -197,8 +197,9 @@ bool WriteWString(const std::wstring& value); bool WriteData(const char* data, uint32_t length); - // Takes ownership of data - bool WriteBytesZeroCopy(void* data, uint32_t data_len, uint32_t capacity); + // Takes ownership of data. + // data_len and capacity must be within the range of uint32_t + bool WriteBytesZeroCopy(void* data, size_t data_len, size_t capacity); bool WriteSentinel(uint32_t sentinel) #ifdef MOZ_PICKLE_SENTINEL_CHECKING @@ -252,18 +253,19 @@ // a power of 2. template struct ConstantAligner { - static uint32_t align(int bytes) { + static uint32_t align(size_t bytes) { static_assert((alignment & (alignment - 1)) == 0, "alignment must be a power of two"); + MOZ_RELEASE_ASSERT(bytes <= UINT32_MAX - (alignment - 1)); return (bytes + (alignment - 1)) & ~static_cast(alignment - 1); } }; - static uint32_t AlignInt(int bytes) { + static uint32_t AlignInt(size_t bytes) { return ConstantAligner::align(bytes); } - static uint32_t AlignCapacity(int bytes) { + static uint32_t AlignCapacity(size_t bytes) { return ConstantAligner::align(bytes); } diff -Nru firefox-esr-140.13.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.cc firefox-esr-140.15.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.cc --- firefox-esr-140.13.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.cc 2026-07-15 20:30:32.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.cc 2026-08-26 17:03:43.000000000 +0000 @@ -262,9 +262,8 @@ } DCHECK(bytes_read); - // a pointer to an array of |num_wire_fds| file descriptors from the read - const int* wire_fds = NULL; - unsigned num_wire_fds = 0; + // an array of descriptors from the read + nsTArray wire_fds; // walk the list of control messages and, if we find an array of file // descriptors, save a pointer to the array @@ -288,17 +287,22 @@ if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { const unsigned payload_len = cmsg->cmsg_len - CMSG_LEN(0); DCHECK(payload_len % sizeof(int) == 0); - wire_fds = reinterpret_cast(CMSG_DATA(cmsg)); - num_wire_fds = payload_len / 4; + int* const raw_wire_fds = reinterpret_cast(CMSG_DATA(cmsg)); + const size_t num_wire_fds = payload_len / sizeof(int); + // Transfer fd ownershop into RAII-land. + wire_fds.SetCapacity(num_wire_fds); + for (size_t i = 0; i < num_wire_fds; ++i) { + MOZ_RELEASE_ASSERT(raw_wire_fds[i] >= -1); + wire_fds.AppendElement(raw_wire_fds[i]); + } if (msg.msg_flags & MSG_CTRUNC) { CHROMIUM_LOG(ERROR) << "SCM_RIGHTS message was truncated" << " cmsg_len:" << cmsg->cmsg_len << " fd:" << pipe_; - for (unsigned i = 0; i < num_wire_fds; ++i) - IGNORE_EINTR(close(wire_fds[i])); return false; } + break; } } @@ -308,40 +312,12 @@ const char* p = input_buf_.get(); const char* end = input_buf_.get() + input_buf_offset_ + bytes_read; - // A pointer to an array of |num_fds| file descriptors which includes any - // fds that have spilled over from a previous read. - const int* fds; - unsigned num_fds; - unsigned fds_i = 0; // the index of the first unused descriptor - - if (input_overflow_fds_.empty()) { - fds = wire_fds; - num_fds = num_wire_fds; - } else { - // This code may look like a no-op in the case where - // num_wire_fds == 0, but in fact: - // - // 1. wire_fds will be nullptr, so passing it to memcpy is - // undefined behavior according to the C standard, even though - // the memcpy length is 0. - // - // 2. prev_size will be an out-of-bounds index for - // input_overflow_fds_; this is undefined behavior according to - // the C++ standard, even though the element only has its - // pointer taken and isn't accessed (and the corresponding - // operation on a C array would be defined). - // - // UBSan makes #1 a fatal error, and assertions in libstdc++ do - // the same for #2 if enabled. - if (num_wire_fds > 0) { - const size_t prev_size = input_overflow_fds_.size(); - input_overflow_fds_.resize(prev_size + num_wire_fds); - memcpy(&input_overflow_fds_[prev_size], wire_fds, - num_wire_fds * sizeof(int)); - } - fds = &input_overflow_fds_[0]; - num_fds = input_overflow_fds_.size(); - } + // All pending file descriptors, including any that have spilled over from a + // previous read: + nsTArray fds = std::move(input_overflow_fds_); + fds.AppendElements(std::move(wire_fds)); + // Elements below fds_i will have been move()d into a message + size_t fds_i = 0; // The data for the message we're currently reading consists of any data // stored in incoming_message_ followed by data in input_buf_ (followed by @@ -410,16 +386,17 @@ Message& m = *incoming_message_; - if (m.header()->num_handles) { + size_t msg_num_handles = m.header()->num_handles; + if (msg_num_handles > 0) { // the message has file descriptors const char* error = NULL; - if (m.header()->num_handles > num_fds - fds_i) { + if (msg_num_handles > fds.Length() - fds_i) { // the message has been completely received, but we didn't get // enough file descriptors. error = "Message needs unreceived descriptors"; } - if (m.header()->num_handles > + if (msg_num_handles > IPC::Message::MAX_DESCRIPTORS_PER_MESSAGE) { // There are too many descriptors in this message error = "Message requires an excessive number of descriptors"; @@ -428,12 +405,8 @@ if (error) { CHROMIUM_LOG(WARNING) << error << " channel:" << this << " message-type:" << m.type() - << " header()->num_handles:" << m.header()->num_handles - << " num_fds:" << num_fds << " fds_i:" << fds_i; - // close the existing file descriptors so that we don't leak them - for (unsigned i = fds_i; i < num_fds; ++i) - IGNORE_EINTR(close(fds[i])); - input_overflow_fds_.clear(); + << " header()->num_handles:" << msg_num_handles + << " fds.Length():" << fds.Length() << " fds_i:" << fds_i; // abort the connection return false; } @@ -451,12 +424,11 @@ } #endif - nsTArray handles(m.header()->num_handles); - for (unsigned end_i = fds_i + m.header()->num_handles; fds_i < end_i; - ++fds_i) { - handles.AppendElement(mozilla::UniqueFileHandle(fds[fds_i])); + nsTArray msg_handles(msg_num_handles); + for (size_t i = 0; i < msg_num_handles; ++i, ++fds_i) { + msg_handles.AppendElement(std::move(fds[fds_i])); } - m.SetAttachedFileHandles(std::move(handles)); + m.SetAttachedFileHandles(std::move(msg_handles)); } // Note: We set other_pid_ below when we receive a Hello message (which @@ -495,14 +467,16 @@ incoming_message_ = nullptr; } - input_overflow_fds_ = std::vector(&fds[fds_i], &fds[num_fds]); + // Any remaining fds go back into the channel state for next time. + fds.RemoveElementsAt(0, fds_i); + MOZ_ASSERT(input_overflow_fds_.IsEmpty()); + input_overflow_fds_ = std::move(fds); // When the input data buffer is empty, the overflow fds should be too. If // this is not the case, we probably have a rogue renderer which is trying // to fill our descriptor table. if (!incoming_message_ && input_buf_offset_ == 0 && - !input_overflow_fds_.empty()) { - // We close these descriptors in Close() + !input_overflow_fds_.IsEmpty()) { return false; } } @@ -852,11 +826,7 @@ } // Close any outstanding, received file descriptors - for (std::vector::iterator i = input_overflow_fds_.begin(); - i != input_overflow_fds_.end(); ++i) { - IGNORE_EINTR(close(*i)); - } - input_overflow_fds_.clear(); + input_overflow_fds_.Clear(); #if defined(XP_DARWIN) pending_fds_.clear(); diff -Nru firefox-esr-140.13.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.h firefox-esr-140.15.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.h --- firefox-esr-140.13.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.h 2026-07-15 20:30:32.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.h 2026-08-26 17:03:43.000000000 +0000 @@ -13,7 +13,6 @@ #include #include -#include #include #include "base/message_loop.h" @@ -27,6 +26,7 @@ #include "mozilla/UniquePtr.h" #include "mozilla/UniquePtrExtensions.h" #include "nsISupports.h" +#include "nsTArray.h" namespace IPC { @@ -162,7 +162,8 @@ // Large incoming messages that span multiple pipe buffers get built-up in the // buffers of this message. mozilla::UniquePtr incoming_message_ MOZ_GUARDED_BY(IOThread()); - std::vector input_overflow_fds_ MOZ_GUARDED_BY(IOThread()); + nsTArray input_overflow_fds_ + MOZ_GUARDED_BY(IOThread()); // Will be set to `true` until `Connect()` has been called and communication // is ready. For privileged connections on macOS, this will not be cleared diff -Nru firefox-esr-140.13.0esr/ipc/chromium/src/chrome/common/ipc_message_utils.h firefox-esr-140.15.0esr/ipc/chromium/src/chrome/common/ipc_message_utils.h --- firefox-esr-140.13.0esr/ipc/chromium/src/chrome/common/ipc_message_utils.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/chromium/src/chrome/common/ipc_message_utils.h 2026-08-26 17:03:43.000000000 +0000 @@ -102,7 +102,8 @@ return message_.WriteBytes(data, data_len); } - bool WriteBytesZeroCopy(void* data, uint32_t data_len, uint32_t capacity) { + // data_len and capacity must be within the range of uint32_t + bool WriteBytesZeroCopy(void* data, size_t data_len, size_t capacity) { return message_.WriteBytesZeroCopy(data, data_len, capacity); } diff -Nru firefox-esr-140.13.0esr/ipc/glue/BackgroundChild.h firefox-esr-140.15.0esr/ipc/glue/BackgroundChild.h --- firefox-esr-140.13.0esr/ipc/glue/BackgroundChild.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/glue/BackgroundChild.h 2026-08-26 17:03:43.000000000 +0000 @@ -9,6 +9,8 @@ #include "mozilla/Attributes.h" +#include "mozilla/dom/ProcessIsolation.h" + class nsIEventTarget; namespace mozilla { @@ -65,6 +67,17 @@ // See above. static void InitContentStarter(mozilla::dom::ContentChild* aContent); + // Helpers for doing ValidatePrincipal checks within the content process. + // + // These can be called from any thread, and validate the given principal + // against the process's current remote type. + static bool ValidatePrincipal( + nsIPrincipal* aPrincipal, + const EnumSet& aOptions); + static bool ValidatePrincipalInfo( + const PrincipalInfo& aPrincipalInfo, + const EnumSet& aOptions); + private: // Only called by this class's friends. static void Startup(); diff -Nru firefox-esr-140.13.0esr/ipc/glue/BackgroundImpl.cpp firefox-esr-140.15.0esr/ipc/glue/BackgroundImpl.cpp --- firefox-esr-140.13.0esr/ipc/glue/BackgroundImpl.cpp 2026-07-15 20:30:32.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/glue/BackgroundImpl.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -27,6 +27,7 @@ #include "mozilla/dom/ContentChild.h" #include "mozilla/dom/ContentParent.h" #include "mozilla/dom/File.h" +#include "mozilla/dom/ProcessIsolation.h" #include "mozilla/dom/WorkerPrivate.h" #include "mozilla/dom/WorkerRef.h" #include "mozilla/ipc/BackgroundStarterChild.h" @@ -678,6 +679,33 @@ } // static +nsCString BackgroundParent::GetRemoteType(PBackgroundParent* aBackgroundActor) { + ThreadsafeContentParentHandle* handle = + GetContentParentHandle(aBackgroundActor); + return handle ? handle->GetRemoteType() : NOT_REMOTE_TYPE; +} + +// static +bool BackgroundParent::ValidatePrincipal( + PBackgroundParent* aBackgroundActor, nsIPrincipal* aPrincipal, + const EnumSet& aOptions) { + return ValidatePrincipalCouldPotentiallyBeLoadedBy( + aPrincipal, GetRemoteType(aBackgroundActor), aOptions); +} + +// static +bool BackgroundParent::ValidatePrincipalInfo( + PBackgroundParent* aBackgroundActor, const PrincipalInfo& aPrincipal, + const EnumSet& aOptions) { + auto result = PrincipalInfoToPrincipal(aPrincipal); + if (NS_WARN_IF(result.isErr())) { + return false; + } + + return ValidatePrincipal(aBackgroundActor, result.inspect(), aOptions); +} + +// static void BackgroundParent::KillHardAsync(PBackgroundParent* aBackgroundActor, const nsACString& aReason) { ParentImpl::KillHardAsync(aBackgroundActor, aReason); @@ -716,6 +744,26 @@ ChildImpl::InitContentStarter(aContent); } +// static +bool BackgroundChild::ValidatePrincipal( + nsIPrincipal* aPrincipal, + const EnumSet& aOptions) { + return ValidatePrincipalCouldPotentiallyBeLoadedBy( + aPrincipal, dom::CurrentRemoteType(), aOptions); +} + +// static +bool BackgroundChild::ValidatePrincipalInfo( + const PrincipalInfo& aPrincipalInfo, + const EnumSet& aOptions) { + auto result = PrincipalInfoToPrincipal(aPrincipalInfo); + if (NS_WARN_IF(result.isErr())) { + return false; + } + + return ValidatePrincipal(result.inspect(), aOptions); +} + // ----------------------------------------------------------------------------- // BackgroundChildImpl Public Methods // ----------------------------------------------------------------------------- diff -Nru firefox-esr-140.13.0esr/ipc/glue/BackgroundParent.h firefox-esr-140.15.0esr/ipc/glue/BackgroundParent.h --- firefox-esr-140.13.0esr/ipc/glue/BackgroundParent.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/glue/BackgroundParent.h 2026-08-26 17:03:43.000000000 +0000 @@ -83,6 +83,18 @@ static uint64_t GetChildID(PBackgroundParent* aBackgroundActor); + static nsCString GetRemoteType(PBackgroundParent* aBackgroundActor); + + // Whenever receiving a Principal we need to validate that Principal case + // by case. The options can customize the behaviour of the checks. + // See ContentParent::ValidatePrincipal for an analog. + static bool ValidatePrincipal( + PBackgroundParent* aBackgroundActor, nsIPrincipal* aPrincipal, + const EnumSet& aOptions); + static bool ValidatePrincipalInfo( + PBackgroundParent* aBackgroundActor, const PrincipalInfo& aPrincipalInfo, + const EnumSet& aOptions); + static void KillHardAsync(PBackgroundParent* aBackgroundActor, const nsACString& aReason); diff -Nru firefox-esr-140.13.0esr/ipc/glue/BackgroundParentImpl.cpp firefox-esr-140.15.0esr/ipc/glue/BackgroundParentImpl.cpp --- firefox-esr-140.13.0esr/ipc/glue/BackgroundParentImpl.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/glue/BackgroundParentImpl.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -255,6 +255,10 @@ AssertIsInMainProcess(); AssertIsOnBackgroundThread(); + if (!BackgroundParent::ValidatePrincipalInfo(this, aPrincipalInfo, {})) { + return nullptr; + } + return mozilla::dom::AllocPBackgroundSDBConnectionParent(aPersistenceType, aPrincipalInfo); } @@ -391,6 +395,12 @@ AssertIsOnBackgroundThread(); MOZ_ASSERT(aActor); + if (!BackgroundParent::ValidatePrincipalInfo(this, aPrincipalInfo, {})) { + return IPC_FAIL( + this, + "Invalid aPrincipalInfo in PBackgroundLocalStorageCacheConstructor"); + } + return mozilla::dom::RecvPBackgroundLocalStorageCacheConstructor( this, aActor, aPrincipalInfo, aOriginKey, aPrivateBrowsingId); } @@ -451,6 +461,21 @@ return MakeAndAddRef(); } +mozilla::ipc::IPCResult +BackgroundParentImpl::RecvPBackgroundSessionStorageServiceConstructor( + mozilla::dom::PBackgroundSessionStorageServiceParent* aActor) { + AssertIsInMainProcess(); + AssertIsOnBackgroundThread(); + + // ClearStoragesForOrigin is not scoped to any origin the sender is allowed + // to touch, so only the parent process may construct this actor. + if (BackgroundParent::IsOtherProcessActor(this)) { + return IPC_FAIL(aActor, "Wrong actor"); + } + + return IPC_OK(); +} + mozilla::ipc::IPCResult BackgroundParentImpl::RecvCreateFileSystemManagerParent( const PrincipalInfo& aPrincipalInfo, Endpoint&& aParentEndpoint, @@ -458,6 +483,17 @@ AssertIsInMainProcess(); AssertIsOnBackgroundThread(); + // The inference process uses ChromeWorkers which have a system principal, + // so system principals must be allowed there. + EnumSet options; + if (BackgroundParent::GetRemoteType(this) == INFERENCE_REMOTE_TYPE) { + options += dom::ValidatePrincipalOptions::AllowSystem; + } + if (!BackgroundParent::ValidatePrincipalInfo(this, aPrincipalInfo, options)) { + aResolver(NS_ERROR_FAILURE); + return IPC_OK(); + } + return mozilla::dom::CreateFileSystemManagerParent( this, aPrincipalInfo, std::move(aParentEndpoint), std::move(aResolver)); } @@ -545,6 +581,12 @@ return IPC_FAIL(this, "Invalid worker type for PSharedWorkerParent"); } + if (!BackgroundParent::ValidatePrincipalInfo( + this, aData.loadingPrincipalInfo(), {})) { + return IPC_FAIL(this, + "Invalid loadingPrincipalInfo for PSharedWorkerParent"); + } + mozilla::dom::SharedWorkerParent* actor = static_cast(aActor); actor->Initialize(aData, aWindowID, aPortIdentifier); @@ -793,6 +835,10 @@ AssertIsInMainProcess(); AssertIsOnBackgroundThread(); + if (!BackgroundParent::ValidatePrincipalInfo(this, aPrincipalInfo, {})) { + return IPC_FAIL(this, "Invalid principal for BroadcastChannel"); + } + RefPtr parent = BackgroundParent::GetContentParentHandle(this); @@ -885,7 +931,12 @@ already_AddRefed BackgroundParentImpl::AllocPCacheStorageParent( const Namespace& aNamespace, const PrincipalInfo& aPrincipalInfo) { - return dom::cache::AllocPCacheStorageParent(this, aNamespace, aPrincipalInfo); + if (!BackgroundParent::ValidatePrincipalInfo(this, aPrincipalInfo, {})) { + return nullptr; + } + + return dom::cache::AllocPCacheStorageParent(this, aNamespace, + aPrincipalInfo); } PMessagePortParent* BackgroundParentImpl::AllocPMessagePortParent( @@ -1253,6 +1304,10 @@ IPCResult BackgroundParentImpl::RecvStorageActivity( const PrincipalInfo& aPrincipalInfo) { + if (!BackgroundParent::ValidatePrincipalInfo(this, aPrincipalInfo, {})) { + return IPC_FAIL(this, "Invalid principalInfo for StorageActivity"); + } + dom::StorageActivityService::SendActivity(aPrincipalInfo); return IPC_OK(); } diff -Nru firefox-esr-140.13.0esr/ipc/glue/BackgroundParentImpl.h firefox-esr-140.15.0esr/ipc/glue/BackgroundParentImpl.h --- firefox-esr-140.13.0esr/ipc/glue/BackgroundParentImpl.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/glue/BackgroundParentImpl.h 2026-08-26 17:03:43.000000000 +0000 @@ -116,6 +116,9 @@ already_AddRefed AllocPBackgroundSessionStorageServiceParent() override; + mozilla::ipc::IPCResult RecvPBackgroundSessionStorageServiceConstructor( + PBackgroundSessionStorageServiceParent* aActor) override; + mozilla::ipc::IPCResult RecvCreateFileSystemManagerParent( const PrincipalInfo& aPrincipalInfo, Endpoint&& aParentEndpoint, diff -Nru firefox-esr-140.13.0esr/ipc/glue/GeckoChildProcessHost.h firefox-esr-140.15.0esr/ipc/glue/GeckoChildProcessHost.h --- firefox-esr-140.13.0esr/ipc/glue/GeckoChildProcessHost.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/ipc/glue/GeckoChildProcessHost.h 2026-08-26 17:03:43.000000000 +0000 @@ -9,7 +9,6 @@ #include "base/file_path.h" #include "base/process_util.h" -#include "base/waitable_event.h" #include "chrome/common/ipc_message.h" #include "mojo/core/ports/port_ref.h" diff -Nru firefox-esr-140.13.0esr/js/src/gc/Nursery.cpp firefox-esr-140.15.0esr/js/src/gc/Nursery.cpp --- firefox-esr-140.13.0esr/js/src/gc/Nursery.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/gc/Nursery.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -997,10 +997,17 @@ // - Nursery-allocated buffer // - A BufferRelocationOverlay inside the nursery // - // Note: The buffer has already be relocated. We are just patching stale + // Note: The buffer has already been relocated. We are just patching stale // pointers now. auto* buffer = reinterpret_cast(*pSlotsElems); + // If the pointer is to the beginning of a chunk, then that chunk cannot be a + // nursery chunk due to the chunk header. Also, the pointer cannot be to the + // end of a previous nursery chunk since the last word is never allocated. + if ((uintptr_t(buffer) & ChunkMask) == 0) { + return; + } + if (!isInside(buffer)) { return; } diff -Nru firefox-esr-140.13.0esr/js/src/irregexp/RegExpNativeMacroAssembler.cpp firefox-esr-140.15.0esr/js/src/irregexp/RegExpNativeMacroAssembler.cpp --- firefox-esr-140.13.0esr/js/src/irregexp/RegExpNativeMacroAssembler.cpp 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/irregexp/RegExpNativeMacroAssembler.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -651,12 +651,9 @@ ImmWord(-cp_offset * char_size()), LabelOrBacktrack(on_outside_input)); } else { - // Compute offset position - masm_.computeEffectiveAddress( - Address(current_position_, cp_offset * char_size()), temp0_); - - // Compare to start of input. - masm_.branchPtr(Assembler::GreaterThan, inputStart(), temp0_, + masm_.loadPtr(inputStart(), temp0_); + masm_.subPtr(Imm32(cp_offset * char_size()), temp0_); + masm_.branchPtr(Assembler::LessThan, current_position_, temp0_, LabelOrBacktrack(on_outside_input)); } } diff -Nru firefox-esr-140.13.0esr/js/src/jit/CodeGenerator.cpp firefox-esr-140.15.0esr/js/src/jit/CodeGenerator.cpp --- firefox-esr-140.13.0esr/js/src/jit/CodeGenerator.cpp 2026-07-15 20:30:32.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/jit/CodeGenerator.cpp 2026-08-26 17:03:44.000000000 +0000 @@ -1171,9 +1171,6 @@ void CodeGenerator::visitInt32ToIntPtr(LInt32ToIntPtr* lir) { #ifdef JS_64BIT - // This LIR instruction is only used if the input can be negative. - MOZ_ASSERT(lir->mir()->canBeNegative()); - Register output = ToRegister(lir->output()); const LAllocation* input = lir->input(); if (input->isGeneralReg()) { diff -Nru firefox-esr-140.13.0esr/js/src/jit/Lowering.cpp firefox-esr-140.15.0esr/js/src/jit/Lowering.cpp --- firefox-esr-140.13.0esr/js/src/jit/Lowering.cpp 2026-07-15 20:30:32.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/jit/Lowering.cpp 2026-08-26 17:03:44.000000000 +0000 @@ -3487,30 +3487,50 @@ // If the result is only used by instructions that expect a bounds-checked // index, we must have eliminated or hoisted a bounds check and we can assume // the index is non-negative. This lets us generate more efficient code. - if (ins->canBeNegative()) { - bool canBeNegative = false; - for (MUseDefIterator iter(ins); iter; iter++) { - if (iter.def()->isSpectreMaskIndex()) { - continue; - } - if (iter.def()->isLoadUnboxedScalar() || - iter.def()->isStoreUnboxedScalar() || - iter.def()->isLoadDataViewElement() || - iter.def()->isStoreDataViewElement()) { - MOZ_ASSERT(iter.def()->indexOf(iter.use()) == 1, - "unexpected non-index operand use"); - continue; - } - - canBeNegative = true; - break; + // + // The no-op lowering with |redefine| shares the input's virtual register and + // 32-bit spill slot, so all instruction uses must read from a register: + // registers hold Int32 values zero-extended, which matches the sign-extended + // IntPtr value because we only do this when the value is non-negative. A + // pointer-width memory read would instead also consume bytes from the + // adjacent stack slot. Snapshots handle this separately with + // RValueAllocation::IntPtrInt32. + bool canBeNegative = false; + bool canRedefine = true; + for (MUseDefIterator iter(ins); iter; iter++) { + MDefinition* def = iter.def(); + size_t index = def->indexOf(iter.use()); + if (def->isLoadUnboxedScalar() || def->isStoreUnboxedScalar() || + def->isLoadDataViewElement() || def->isStoreDataViewElement()) { + // The bounds-checked index is lowered with useRegisterOrIndexConstant. + static_assert(MLoadUnboxedScalar::indexOperand == 1); + static_assert(MStoreUnboxedScalar::indexOperand == 1); + static_assert(MLoadDataViewElement::indexOperand == 1); + static_assert(MStoreDataViewElement::indexOperand == 1); + MOZ_RELEASE_ASSERT(index == 1); + continue; } - if (!canBeNegative) { - ins->setCanNotBeNegative(); + if (def->isSpectreMaskIndex() && index == MSpectreMaskIndex::indexOperand) { + // The bounds-checked index is lowered with useRegister. + continue; } + if (def->isBoundsCheck() && index == MBoundsCheck::indexOperand) { + // The index operand is lowered with useRegisterOrInt32Constant, but + // because this is the instruction performing the check it implies + // nothing about the sign. + canBeNegative = true; + continue; + } + // Don't optimize other uses. + canBeNegative = true; + canRedefine = false; + break; + } + if (!canBeNegative) { + ins->setCanNotBeNegative(); } - if (ins->canBeNegative()) { + if (ins->canBeNegative() || !canRedefine) { auto* lir = new (alloc()) LInt32ToIntPtr(useAnyAtStart(input)); define(lir, ins); } else { diff -Nru firefox-esr-140.13.0esr/js/src/jit/MIR.h firefox-esr-140.15.0esr/js/src/jit/MIR.h --- firefox-esr-140.13.0esr/js/src/jit/MIR.h 2026-07-15 20:30:31.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/jit/MIR.h 2026-08-26 17:03:43.000000000 +0000 @@ -1132,8 +1132,10 @@ // NAMED_OPERANDS((0, lhs), (1, rhs)) // // The above example defines 2 accessors, one named "lhs" accessing the first -// operand, and a one named "rhs" accessing the second operand. -#define NAMED_OPERAND_ACCESSOR(Index, Name) \ +// operand, and a one named "rhs" accessing the second operand. It also defines +// the operand indices as |lhsOperand| and |rhsOperand|. +#define NAMED_OPERAND_ACCESSOR(Index, Name) \ + static constexpr size_t Name##Operand = Index; \ MDefinition* Name() const { return getOperand(Index); } #define NAMED_OPERAND_ACCESSOR_APPLY(Args) NAMED_OPERAND_ACCESSOR Args #define NAMED_OPERANDS(...) \ diff -Nru firefox-esr-140.13.0esr/js/src/proxy/Proxy.cpp firefox-esr-140.15.0esr/js/src/proxy/Proxy.cpp --- firefox-esr-140.13.0esr/js/src/proxy/Proxy.cpp 2026-07-15 20:30:32.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/proxy/Proxy.cpp 2026-08-26 17:03:43.000000000 +0000 @@ -1048,7 +1048,16 @@ MOZ_ASSERT(hasDynamicPrototype()); setHandler(handler); + setCrossCompartmentPrivate(priv); + // The post barrier may add a store buffer entry but since this may be called + // on a dying object we don't know if they will survive GC. Therefore we need + // to set a flag to ensure we clear out the nursery before doing any sweeping. + if (isTenured() && zone()->wasGCStarted() && priv.isGCThing() && + !priv.toGCThing()->isTenured()) { + runtimeFromMainThread()->gc.storeBuffer().setMayHavePointersToDeadCells(); + } + for (size_t i = 0; i < numReservedSlots(); i++) { setReservedSlot(i, UndefinedValue()); } diff -Nru firefox-esr-140.13.0esr/js/src/vm/JitActivation.cpp firefox-esr-140.15.0esr/js/src/vm/JitActivation.cpp --- firefox-esr-140.13.0esr/js/src/vm/JitActivation.cpp 2026-07-15 20:30:34.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/vm/JitActivation.cpp 2026-08-26 17:03:46.000000000 +0000 @@ -246,6 +246,14 @@ const wasm::Code& code = wasm::GetNearestEffectiveInstance(fp)->code(); MOZ_RELEASE_ASSERT(&code == wasm::LookupCode(pc)); + // Keep the trapping code alive across a GC. For an IndirectCallBadSig trap + // reached through a tail call, this code can belong to a different instance + // than the effective one above, whose frame has already been unwound. Nothing + // else then keeps alive the code segment we are about to run the trap stub + // in. + wasmTrapCode_ = wasm::LookupCode(state.pc); + MOZ_RELEASE_ASSERT(wasmTrapCode_); + setWasmExitFP(fp); wasmTrapData_.emplace(); wasmTrapData_->resumePC = @@ -271,6 +279,9 @@ void js::jit::JitActivation::finishWasmTrap() { MOZ_ASSERT(isWasmTrapping()); + // Keep wasmTrapCode_ alive: we are still executing inside this code and are + // about to return into it, so releasing it now could free it. It is released + // on the next trap or when the activation is destroyed. packedExitFP_ = nullptr; wasmTrapData_.reset(); MOZ_ASSERT(!isWasmTrapping()); diff -Nru firefox-esr-140.13.0esr/js/src/vm/JitActivation.h firefox-esr-140.15.0esr/js/src/vm/JitActivation.h --- firefox-esr-140.13.0esr/js/src/vm/JitActivation.h 2026-07-15 20:30:34.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/vm/JitActivation.h 2026-08-26 17:03:46.000000000 +0000 @@ -10,6 +10,7 @@ #include "mozilla/Assertions.h" // MOZ_ASSERT #include "mozilla/Atomics.h" // mozilla::Atomic, mozilla::Relaxed #include "mozilla/Maybe.h" // mozilla::Maybe +#include "mozilla/RefPtr.h" // RefPtr #include // size_t #include // uint8_t, uint32_t, uintptr_t @@ -96,6 +97,12 @@ // purposes. Wasm code can't trap reentrantly. mozilla::Maybe wasmTrapData_; + // Keeps the trapping code alive while the trap is handled. With tail calls + // the trapping frame may already be unwound, so no wasm::Frame keeps it alive + // and a GC (e.g. while building the RuntimeError) could otherwise free the + // code segment we are still executing in. + RefPtr wasmTrapCode_; + #ifdef CHECK_OSIPOINT_REGISTERS protected: // Used to verify that live registers don't change between a VM call and diff -Nru firefox-esr-140.13.0esr/js/src/wasm/WasmBCFrame.cpp firefox-esr-140.15.0esr/js/src/wasm/WasmBCFrame.cpp --- firefox-esr-140.13.0esr/js/src/wasm/WasmBCFrame.cpp 2026-07-15 20:30:34.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/wasm/WasmBCFrame.cpp 2026-08-26 17:03:45.000000000 +0000 @@ -537,7 +537,7 @@ masm.storePtr(zero, Address(p, -(wordSize * i))); } masm.subPtr(Imm32(UNROLL_LIMIT * wordSize), p); - masm.branchPtr(Assembler::LessThan, lim, p, &again); + masm.branchPtr(Assembler::Below, lim, p, &again); // The tail. for (uint32_t i = 0; i < tailWords; ++i) { diff -Nru firefox-esr-140.13.0esr/js/src/wasm/WasmBaselineCompile.cpp firefox-esr-140.15.0esr/js/src/wasm/WasmBaselineCompile.cpp --- firefox-esr-140.13.0esr/js/src/wasm/WasmBaselineCompile.cpp 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/wasm/WasmBaselineCompile.cpp 2026-08-26 17:03:46.000000000 +0000 @@ -4502,6 +4502,24 @@ return true; } + // The block params are consumed by the try body, so keep them off the value + // stack while emitting the landing pad and restore them for the body, the way + // endTryCatch does for its results. sync() above spilled them, so the saved + // entries hold no registers. + MOZ_ASSERT(stk_.length() >= controlItem().stackSize); + StkVector savedParams; + if (!savedParams.append(stk_.begin() + controlItem().stackSize, stk_.end())) { + return false; + } + for (const Stk& v : savedParams) { + MOZ_ASSERT(v.kind() < Stk::RegisterI32 || v.kind() > Stk::RegisterRef); + if (v.kind() == Stk::MemRef) { + stackMapGenerator_.memRefsOnStk--; + } + } + stk_.shrinkTo(controlItem().stackSize); + MOZ_ASSERT(stk_.length() == controlItem().stackSize); + // Emit a landing pad that exceptions will jump into. Jump over it for now. Label skipLandingPad; masm.jump(&skipLandingPad); @@ -4693,6 +4711,16 @@ fr.setStackHeight(prePadHeight); masm.bind(&skipLandingPad); + // Restore the block params removed above, for the try body. + if (!stk_.appendAll(savedParams)) { + return false; + } + for (const Stk& v : savedParams) { + if (v.kind() == Stk::MemRef) { + stackMapGenerator_.memRefsOnStk++; + } + } + // Start the try note for this try block, after the landing pad if (!startTryNote(&controlItem().tryNoteIndex)) { return false; diff -Nru firefox-esr-140.13.0esr/js/src/wasm/WasmJS.cpp firefox-esr-140.15.0esr/js/src/wasm/WasmJS.cpp --- firefox-esr-140.13.0esr/js/src/wasm/WasmJS.cpp 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/js/src/wasm/WasmJS.cpp 2026-08-26 17:03:46.000000000 +0000 @@ -4795,6 +4795,10 @@ enum StreamState { Env, Code, Tail, Closed }; ExclusiveWaitableData streamState_; + // Total number of bytes streamed so far. Written and read on the stream + // thread only; used to cap the total module size (see consumeChunk). + size_t bytesLength_; + // Immutable: const bool instantiate_; const PersistentRootedObject importObj_; @@ -4885,6 +4889,22 @@ } bool consumeChunk(const uint8_t* begin, size_t length) override { + // Enforce the MaxModuleBytes limit early. + if (length > MaxModuleBytes - bytesLength_) { + // The state tells us whether we are before or after the helper thread + // started. + if (streamState_.lock().get() == Env) { + return rejectAndDestroyBeforeHelperThreadStarted(StreamOOMCode); + } + return rejectAndDestroyAfterHelperThreadStarted(StreamOOMCode); + } + bytesLength_ += length; + return consumeChunkImpl(begin, length); + } + + // The chunk-processing worker. consumeChunk() re-dispatches trailing bytes to + // the next state through this method so that they are counted once, above. + bool consumeChunkImpl(const uint8_t* begin, size_t length) { switch (streamState_.lock().get()) { case Env: { if (!envBytes_->append(begin, length)) { @@ -4922,7 +4942,7 @@ streamState_.lock().get() = Code; if (extraBytes) { - return consumeChunk(begin + length - extraBytes, extraBytes); + return consumeChunkImpl(begin + length - extraBytes, extraBytes); } return true; @@ -4946,7 +4966,7 @@ streamState_.lock().get() = Tail; if (uint32_t extraBytes = length - copyLength) { - return consumeChunk(begin + copyLength, extraBytes); + return consumeChunkImpl(begin + copyLength, extraBytes); } return true; @@ -5060,6 +5080,7 @@ HandleObject importObj) : PromiseHelperTask(cx, promise), streamState_(mutexid::WasmStreamStatus, Env), + bytesLength_(0), instantiate_(instantiate), importObj_(cx, importObj), compileArgs_(&compileArgs), diff -Nru firefox-esr-140.13.0esr/layout/base/PresShell.cpp firefox-esr-140.15.0esr/layout/base/PresShell.cpp --- firefox-esr-140.13.0esr/layout/base/PresShell.cpp 2026-07-15 20:30:34.000000000 +0000 +++ firefox-esr-140.15.0esr/layout/base/PresShell.cpp 2026-08-26 17:03:47.000000000 +0000 @@ -3215,6 +3215,11 @@ return rv.StealNSResult(); } + if (MOZ_UNLIKELY(target->GetComposedDoc() != mDocument)) { + esm->SetContentState(nullptr, ElementState::URLTARGET); + return NS_OK; + } + if (aScroll) { // https://wicg.github.io/scroll-to-text-fragment/#invoking-text-directives // From "Monkeypatching HTML § 7.4.6.3 Scrolling to a fragment:" @@ -9146,7 +9151,7 @@ const nsIContent* outEventTarget = boundaryEventTargets ? boundaryEventTargets->GetOutEventTarget() : nullptr; - nsIContent* const deepestLeaveEventTarget = + nsCOMPtr deepestLeaveEventTarget = boundaryEventTargets ? boundaryEventTargets->GetDeepestLeaveEventTarget() : nullptr; diff -Nru firefox-esr-140.13.0esr/layout/build/components.conf firefox-esr-140.15.0esr/layout/build/components.conf --- firefox-esr-140.13.0esr/layout/build/components.conf 2026-07-15 20:30:34.000000000 +0000 +++ firefox-esr-140.15.0esr/layout/build/components.conf 2026-08-26 17:03:46.000000000 +0000 @@ -53,11 +53,13 @@ 'cid': '{574ce83e-fe9f-4095-b85c-7909abbf7c37}', 'type': 'nsJSURI::Mutator', 'headers': ['nsJSProtocolHandler.h'], + 'serializable': True, }, { 'cid': '{58f089ee-512a-42d2-a935-d0c874128930}', 'type': 'nsJSURI::Mutator', 'headers': ['nsJSProtocolHandler.h'], + 'serializable': True, }, { 'cid': '{48118355-e9a5-4452-ab18-59cc426fb817}', @@ -67,11 +69,13 @@ 'cid': '{bbe50ef2-80eb-469d-b70d-02858275389f}', 'type': 'mozilla::dom::BlobURL::Mutator', 'headers': ['mozilla/dom/BlobURL.h'], + 'serializable': True, }, { 'cid': '{f5475c51-59a7-4757-b3d9-e211a9410872}', 'type': 'mozilla::dom::BlobURL::Mutator', 'headers': ['mozilla/dom/BlobURL.h'], + 'serializable': True, }, { 'js_name': 'cpmm', @@ -114,6 +118,7 @@ 'contract_ids': ['@mozilla.org/cspcontext;1'], 'type': 'nsCSPContext', 'headers': ['mozilla/dom/nsCSPContext.h'], + 'serializable': True, }, { 'cid': '{8d2f40b2-4875-4c95-97d9-3f7dca2cb460}', @@ -190,6 +195,7 @@ 'contract_ids': [], 'type': 'ExpandedPrincipal::Deserializer', 'headers': ['/caps/ExpandedPrincipal.h'], + 'serializable': True, }, { 'js_name': 'focus', @@ -287,6 +293,7 @@ 'contract_ids': ['@mozilla.org/referrer-info;1'], 'type': 'mozilla::dom::ReferrerInfo', 'headers': ['mozilla/dom/ReferrerInfo.h'], + 'serializable': True, }, { 'cid': '{bfc310d2-38a0-11d3-8cd3-0060b0fc14a3}', @@ -317,6 +324,7 @@ 'contract_ids': [], 'type': 'mozilla::NullPrincipal::Deserializer', 'headers': ['/caps/NullPrincipal.h'], + 'serializable': True, }, { 'js_name': 'ppmm', @@ -335,6 +343,7 @@ 'contract_ids': [], 'type': 'mozilla::ContentPrincipal::Deserializer', 'headers': ['/caps/ContentPrincipal.h'], + 'serializable': True, }, { 'cid': '{2fc2d3e3-020f-404e-b06a-6ecf3ea2334a}', @@ -386,6 +395,7 @@ 'type': 'nsIPrincipal', 'headers': ['nsScriptSecurityManager.h', '/caps/SystemPrincipal.h'], 'constructor': 'nsScriptSecurityManager::SystemPrincipalSingletonConstructor', + 'serializable': True, }, { 'cid': '{caaab47f-1e31-478e-8919-970904e9cb72}', diff -Nru firefox-esr-140.13.0esr/layout/forms/nsFileControlFrame.cpp firefox-esr-140.15.0esr/layout/forms/nsFileControlFrame.cpp --- firefox-esr-140.13.0esr/layout/forms/nsFileControlFrame.cpp 2026-07-15 20:30:34.000000000 +0000 +++ firefox-esr-140.15.0esr/layout/forms/nsFileControlFrame.cpp 2026-08-26 17:03:46.000000000 +0000 @@ -140,8 +140,9 @@ aElements.AppendElement(mTextContent); // We should be able to interact with the element by doing drag and drop. - mContent->AddSystemEventListener(u"drop"_ns, mMouseListener, false); - mContent->AddSystemEventListener(u"dragover"_ns, mMouseListener, false); + mContent->AddSystemEventListener(u"drop"_ns, mMouseListener, false, false); + mContent->AddSystemEventListener(u"dragover"_ns, mMouseListener, false, + false); SyncDisabledState(); diff -Nru firefox-esr-140.13.0esr/layout/generic/nsBlockFrame.cpp firefox-esr-140.15.0esr/layout/generic/nsBlockFrame.cpp --- firefox-esr-140.13.0esr/layout/generic/nsBlockFrame.cpp 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/layout/generic/nsBlockFrame.cpp 2026-08-26 17:03:46.000000000 +0000 @@ -6871,6 +6871,9 @@ RemoveStateBits(NS_BLOCK_BFC); MarkSameFloatManagerLinesDirty(this); } + if (isBFC && !IsLineClampRoot(this)) { + ClearLineClampEllipsis(); + } AddOrRemoveStateBits(NS_BLOCK_BFC, isBFC); } } diff -Nru firefox-esr-140.13.0esr/layout/generic/nsTextFrame.cpp firefox-esr-140.15.0esr/layout/generic/nsTextFrame.cpp --- firefox-esr-140.13.0esr/layout/generic/nsTextFrame.cpp 2026-07-15 20:30:34.000000000 +0000 +++ firefox-esr-140.15.0esr/layout/generic/nsTextFrame.cpp 2026-08-26 17:03:46.000000000 +0000 @@ -8645,7 +8645,7 @@ // after the virama would be acceptable). So results may be imperfect, // depending how the font has chosen to implement visible viramas. if (usesIndicHalfForms) { - while (i + 1 < length && + while (i + 1 < length && iter.GetSkippedOffset() < aTextRun->GetLength() && !aTextRun->IsLigatureGroupStart(iter.GetSkippedOffset())) { char32_t c = aFrag->ScalarValueAt(AssertedCast(aOffset + i)); if (intl::UnicodeProperties::GetCombiningClass(c) == diff -Nru firefox-esr-140.13.0esr/layout/generic/nsTextRunTransformations.cpp firefox-esr-140.15.0esr/layout/generic/nsTextRunTransformations.cpp --- firefox-esr-140.13.0esr/layout/generic/nsTextRunTransformations.cpp 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/layout/generic/nsTextRunTransformations.cpp 2026-08-26 17:03:47.000000000 +0000 @@ -178,8 +178,8 @@ anyMissing = true; glyphs.Clear(); } - if (g.GetGlyphCount() > 0) { - glyphs.AppendElements(aSrc->GetDetailedGlyphs(k), g.GetGlyphCount()); + if (uint32_t count = g.GetGlyphCount()) { + glyphs.AppendElements(aSrc->GetDetailedGlyphs(k, count), count); } } diff -Nru firefox-esr-140.13.0esr/layout/mathml/nsMathMLChar.cpp firefox-esr-140.15.0esr/layout/mathml/nsMathMLChar.cpp --- firefox-esr-140.13.0esr/layout/mathml/nsMathMLChar.cpp 2026-07-15 20:30:34.000000000 +0000 +++ firefox-esr-140.15.0esr/layout/mathml/nsMathMLChar.cpp 2026-08-26 17:03:47.000000000 +0000 @@ -431,7 +431,7 @@ if (data.IsSimpleGlyph()) { mGlyphID = data.GetSimpleGlyph(); } else if (data.GetGlyphCount() == 1) { - mGlyphID = textRun->GetDetailedGlyphs(0)->mGlyphID; + mGlyphID = textRun->GetDetailedGlyphs(0, 1)->mGlyphID; } else { mGlyphID = 0; } diff -Nru firefox-esr-140.13.0esr/layout/painting/nsCSSRendering.cpp firefox-esr-140.15.0esr/layout/painting/nsCSSRendering.cpp --- firefox-esr-140.13.0esr/layout/painting/nsCSSRendering.cpp 2026-07-15 20:30:34.000000000 +0000 +++ firefox-esr-140.15.0esr/layout/painting/nsCSSRendering.cpp 2026-08-26 17:03:47.000000000 +0000 @@ -3950,8 +3950,7 @@ // if it's detailed, potentially add multiple into run.glyphs uint32_t count = aCompressedGlyph[currIndex].GetGlyphCount(); if (count > 0) { - gfxTextRun::DetailedGlyph* detailGlyph = - aTextRun->GetDetailedGlyphs(currIndex); + const auto* detailGlyph = aTextRun->GetDetailedGlyphs(currIndex, count); for (uint32_t d = isRTL ? count - 1 : 0; count; count--, d += step) { MOZ_ASSERT(i < len, "glyph count error!"); AddDetailedGlyph(run, detailGlyph[d], i, aAppUnitsPerDevPixel, diff -Nru firefox-esr-140.13.0esr/media/ffvpx/README_MOZILLA firefox-esr-140.15.0esr/media/ffvpx/README_MOZILLA --- firefox-esr-140.13.0esr/media/ffvpx/README_MOZILLA 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/media/ffvpx/README_MOZILLA 2026-08-26 17:03:47.000000000 +0000 @@ -146,3 +146,5 @@ - opusenc-dtx.patch to allow enabling DTX in the opus encoder. - libaomenc-svc.patch to allow configuring SVC in the libaom encoder. - vp9-get-format-rollback.patch to fix a VP9 decoder error handling issue. +- flac-alloc-failure.patch fix leak in flac decoder in case of alloc failure +- cbs_decoder_sync.patch to keep CBS and the decoder in sync diff -Nru firefox-esr-140.13.0esr/media/ffvpx/cbs_decoder_sync.patch firefox-esr-140.15.0esr/media/ffvpx/cbs_decoder_sync.patch --- firefox-esr-140.13.0esr/media/ffvpx/cbs_decoder_sync.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/media/ffvpx/cbs_decoder_sync.patch 2026-08-26 17:03:47.000000000 +0000 @@ -0,0 +1,18 @@ +diff --git a/media/ffvpx/libavcodec/cbs_av1_syntax_template.c b/media/ffvpx/libavcodec/cbs_av1_syntax_template.c +index f43c3a4de5145..f3d84f3c05986 100644 +--- a/media/ffvpx/libavcodec/cbs_av1_syntax_template.c ++++ b/media/ffvpx/libavcodec/cbs_av1_syntax_template.c +@@ -186,10 +186,13 @@ static int FUNC(decoder_model_info)(CodedBitstreamContext *ctx, RWContext *rw, + static int FUNC(sequence_header_obu)(CodedBitstreamContext *ctx, RWContext *rw, + AV1RawSequenceHeader *current) + { ++ CodedBitstreamAV1Context *priv = ctx->priv_data; + int i, err; + + HEADER("Sequence Header"); + ++ priv->seen_frame_header = 0; ++ + fc(3, seq_profile, AV_PROFILE_AV1_MAIN, + AV_PROFILE_AV1_PROFESSIONAL); + flag(still_picture); diff -Nru firefox-esr-140.13.0esr/media/ffvpx/libavcodec/cbs_av1_syntax_template.c firefox-esr-140.15.0esr/media/ffvpx/libavcodec/cbs_av1_syntax_template.c --- firefox-esr-140.13.0esr/media/ffvpx/libavcodec/cbs_av1_syntax_template.c 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/media/ffvpx/libavcodec/cbs_av1_syntax_template.c 2026-08-26 17:03:47.000000000 +0000 @@ -186,10 +186,13 @@ static int FUNC(sequence_header_obu)(CodedBitstreamContext *ctx, RWContext *rw, AV1RawSequenceHeader *current) { + CodedBitstreamAV1Context *priv = ctx->priv_data; int i, err; HEADER("Sequence Header"); + priv->seen_frame_header = 0; + fc(3, seq_profile, AV_PROFILE_AV1_MAIN, AV_PROFILE_AV1_PROFESSIONAL); flag(still_picture); diff -Nru firefox-esr-140.13.0esr/media/libcubeb/0006-fix-loopback-separate-streams-flakiness-windows.patch firefox-esr-140.15.0esr/media/libcubeb/0006-fix-loopback-separate-streams-flakiness-windows.patch --- firefox-esr-140.13.0esr/media/libcubeb/0006-fix-loopback-separate-streams-flakiness-windows.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/media/libcubeb/0006-fix-loopback-separate-streams-flakiness-windows.patch 2026-08-26 17:03:47.000000000 +0000 @@ -0,0 +1,88 @@ +--- a/test/test_loopback.cpp ++++ b/test/test_loopback.cpp +@@ -28,6 +28,12 @@ const uint32_t TONE_FREQUENCY = 440; + const double OUTPUT_AMPLITUDE = 0.25; + const int32_t NUM_FRAMES_TO_OUTPUT = + SAMPLE_FREQUENCY / 20; /* play ~50ms of samples */ ++/* data_cb_playback() loops the tone long enough for delayed loopback capture, ++ * then goes silent before render stop. The tests keep capturing after render ++ * stop to consume queued virtual-device data. */ ++const int32_t CONTINUOUS_TONE_FRAMES = SAMPLE_FREQUENCY / 2; /* ~500ms */ ++const unsigned int LOOPBACK_PLAY_MS = 600; ++const unsigned int LOOPBACK_DRAIN_MS = 600; + + template + T +@@ -266,11 +272,11 @@ data_cb_playback(cubeb_stream * stream, void * user, const void * inputbuffer, + } + + std::lock_guard lock(u->user_state_mutex); +- /* generate our test tone on the fly */ ++ /* Generate the tone long enough for loopback capture streams whose first ++ * buffer can arrive late; find_phase() searches wherever it lands. */ + for (int i = 0; i < nframes; i++) { + double tone = 0.0; +- if (u->position + i < NUM_FRAMES_TO_OUTPUT) { +- /* generate sine wave */ ++ if (u->position + i < CONTINUOUS_TONE_FRAMES) { + tone = + sin(2 * M_PI * (i + u->position) * TONE_FREQUENCY / SAMPLE_FREQUENCY); + tone *= OUTPUT_AMPLITUDE; +@@ -452,11 +458,26 @@ run_loopback_separate_streams_test(bool is_float) + std::unique_ptr + cleanup_output_stream_at_exit(output_stream, cubeb_stream_destroy); + +- cubeb_stream_start(input_stream); ++ // Start the render stream before the loopback capture stream, matching ++ // the order cubeb_wasapi.cpp uses internally for a single duplex stream. ++ // Some virtual audio drivers (e.g. VB-CABLE) only start relaying audio to ++ // their loopback/capture side once a render client is active, and never ++ // catch up if the capture side starts first. + cubeb_stream_start(output_stream); +- delay(300); ++ cubeb_stream_start(input_stream); ++ // Give the capture side extra margin to receive its first buffer under ++ // slow/instrumented builds (e.g. ASAN), on top of the continuous tone above. ++ delay(LOOPBACK_PLAY_MS); + cubeb_stream_stop(output_stream); ++ // Keep capturing after render stops, so a virtual loopback device can ++ // deliver any queued render data to this test instead of the next one. ++ delay(LOOPBACK_DRAIN_MS); + cubeb_stream_stop(input_stream); ++ // Destroy the streams (and the context) right away instead of waiting ++ // for the RAII cleanups below to do it when this function returns. ++ cleanup_output_stream_at_exit.reset(); ++ cleanup_input_stream_at_exit.reset(); ++ cleanup_cubeb_at_exit.reset(); + + /* access after stop should not happen, but lock just in case and to appease + * sanitization tools */ +@@ -641,11 +662,26 @@ run_loopback_device_selection_test(bool is_float) + std::unique_ptr + cleanup_output_stream_at_exit(output_stream, cubeb_stream_destroy); + +- cubeb_stream_start(input_stream); ++ // Start the render stream before the loopback capture stream, matching ++ // the order cubeb_wasapi.cpp uses internally for a single duplex stream. ++ // Some virtual audio drivers (e.g. VB-CABLE) only start relaying audio to ++ // their loopback/capture side once a render client is active, and never ++ // catch up if the capture side starts first. + cubeb_stream_start(output_stream); +- delay(300); ++ cubeb_stream_start(input_stream); ++ // Give the capture side extra margin to receive its first buffer under ++ // slow/instrumented builds (e.g. ASAN), on top of the continuous tone above. ++ delay(LOOPBACK_PLAY_MS); + cubeb_stream_stop(output_stream); ++ // Keep capturing after render stops, so a virtual loopback device can ++ // deliver any queued render data to this test instead of the next one. ++ delay(LOOPBACK_DRAIN_MS); + cubeb_stream_stop(input_stream); ++ // Destroy the streams (and the context) right away instead of waiting ++ // for the RAII cleanups below to do it when this function returns. ++ cleanup_output_stream_at_exit.reset(); ++ cleanup_input_stream_at_exit.reset(); ++ cleanup_cubeb_at_exit.reset(); + + /* access after stop should not happen, but lock just in case and to appease + * sanitization tools */ diff -Nru firefox-esr-140.13.0esr/media/libcubeb/moz.yaml firefox-esr-140.15.0esr/media/libcubeb/moz.yaml --- firefox-esr-140.13.0esr/media/libcubeb/moz.yaml 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/media/libcubeb/moz.yaml 2026-08-26 17:03:46.000000000 +0000 @@ -22,8 +22,12 @@ - 0003-audiounit-ios-compile-fixes.patch - 0004-disable-cubeb_one_duplex_one_input-macos10.15.patch - 0005-increase-aaudio-powersaving-buffering.patch + - 0006-fix-loopback-separate-streams-flakiness-windows.patch - frame-sample.patch - delay-line-bounds.patch + - wasapi-async-reconfigure-on-start.patch + - wasapi-output-mix-channel-count.patch + - winmm-destroy-work-item-uaf.patch skip-vendoring-steps: - update-moz-build exclude: diff -Nru firefox-esr-140.13.0esr/media/libcubeb/src/cubeb.c firefox-esr-140.15.0esr/media/libcubeb/src/cubeb.c --- firefox-esr-140.13.0esr/media/libcubeb/src/cubeb.c 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/media/libcubeb/src/cubeb.c 2026-08-26 17:03:47.000000000 +0000 @@ -7,6 +7,7 @@ #undef NDEBUG #include "cubeb/cubeb.h" #include "cubeb-internal.h" +#include "cubeb_mixer.h" #include #include #include @@ -97,7 +98,10 @@ if (output_stream_params->rate < 1000 || output_stream_params->rate > 768000 || output_stream_params->channels < 1 || - output_stream_params->channels > UINT8_MAX) { + output_stream_params->channels > UINT8_MAX || + (output_stream_params->layout != CUBEB_LAYOUT_UNDEFINED && + cubeb_channel_layout_nb_channels(output_stream_params->layout) != + output_stream_params->channels)) { return CUBEB_ERROR_INVALID_FORMAT; } } @@ -105,7 +109,10 @@ if (input_stream_params->rate < 1000 || input_stream_params->rate > 768000 || input_stream_params->channels < 1 || - input_stream_params->channels > UINT8_MAX) { + input_stream_params->channels > UINT8_MAX || + (input_stream_params->layout != CUBEB_LAYOUT_UNDEFINED && + cubeb_channel_layout_nb_channels(input_stream_params->layout) != + input_stream_params->channels)) { return CUBEB_ERROR_INVALID_FORMAT; } } diff -Nru firefox-esr-140.13.0esr/media/libcubeb/src/cubeb_wasapi.cpp firefox-esr-140.15.0esr/media/libcubeb/src/cubeb_wasapi.cpp --- firefox-esr-140.13.0esr/media/libcubeb/src/cubeb_wasapi.cpp 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/media/libcubeb/src/cubeb_wasapi.cpp 2026-08-26 17:03:47.000000000 +0000 @@ -2650,7 +2650,8 @@ // Create output mixer. if (has_output(stm) && - stm->output_mix_params.layout != stm->output_stream_params.layout) { + (stm->output_mix_params.layout != stm->output_stream_params.layout || + stm->output_mix_params.channels != stm->output_stream_params.channels)) { if (stm->output_mix_params.layout == CUBEB_LAYOUT_UNDEFINED) { LOG("Output stream using undefined layout! Any mixing may be " "unpredictable!\n"); @@ -2934,27 +2935,16 @@ HRESULT hr = dir == OUTPUT ? stm->output_client->Start() : stm->input_client->Start(); if (hr == AUDCLNT_E_DEVICE_INVALIDATED) { - LOG("audioclient invalidated for %s device, reconfiguring", + // The render thread runs for the entire stream lifetime and may be + // dereferencing stm->{output,render,input,capture}_client in its refill + // path without holding stream_reset_lock. Recovering inline here would + // null those pointers while the render thread is using them, causing + // crashes in get_output_buffer et al. Defer the reconfigure to the + // render thread's own reconfigure path, which is self-synchronising. + LOG("audioclient invalidated for %s device on start, triggering async " + "reconfigure", dir == OUTPUT ? "output" : "input"); - - BOOL ok = ResetEvent(stm->reconfigure_event); - if (!ok) { - LOG("resetting reconfig event failed for %s stream: %lx", - dir == OUTPUT ? "output" : "input", GetLastError()); - } - - close_wasapi_stream(stm); - int r = setup_wasapi_stream(stm); - if (r != CUBEB_OK) { - LOG("reconfigure failed"); - return r; - } - - HRESULT hr2 = dir == OUTPUT ? stm->output_client->Start() - : stm->input_client->Start(); - if (FAILED(hr2)) { - LOG("could not start the %s stream after reconfig: %lx", - dir == OUTPUT ? "output" : "input", hr); + if (!trigger_async_reconfigure(stm)) { return CUBEB_ERROR; } } else if (FAILED(hr)) { diff -Nru firefox-esr-140.13.0esr/media/libcubeb/src/cubeb_winmm.c firefox-esr-140.15.0esr/media/libcubeb/src/cubeb_winmm.c --- firefox-esr-140.13.0esr/media/libcubeb/src/cubeb_winmm.c 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/media/libcubeb/src/cubeb_winmm.c 2026-08-26 17:03:47.000000000 +0000 @@ -86,6 +86,7 @@ HANDLE thread; int shutdown; PSLIST_HEADER work; + LONG pending_callbacks; CRITICAL_SECTION lock; unsigned int active_streams; unsigned int minimum_latency_ms; @@ -106,6 +107,7 @@ int shutdown; int draining; int error; + LONG pending_work_items; HANDLE event; HWAVEOUT waveout; CRITICAL_SECTION lock; @@ -172,12 +174,13 @@ ALOG("winmm_refill_stream"); EnterCriticalSection(&stm->lock); + stm->free_buffers += 1; + XASSERT(stm->free_buffers > 0 && stm->free_buffers <= NBUFS); + if (stm->error) { LeaveCriticalSection(&stm->lock); return; } - stm->free_buffers += 1; - XASSERT(stm->free_buffers > 0 && stm->free_buffers <= NBUFS); if (stm->draining) { LeaveCriticalSection(&stm->lock); @@ -185,13 +188,11 @@ ALOG("winmm_refill_stream draining"); stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_DRAINED); } - SetEvent(stm->event); return; } if (stm->shutdown) { LeaveCriticalSection(&stm->lock); - SetEvent(stm->event); return; } @@ -204,10 +205,18 @@ LeaveCriticalSection(&stm->lock); got = stm->data_callback(stm, stm->user_ptr, NULL, hdr->lpData, wanted); EnterCriticalSection(&stm->lock); + if (stm->shutdown) { + stm->free_buffers += 1; + XASSERT(stm->free_buffers > 0 && stm->free_buffers <= NBUFS); + LeaveCriticalSection(&stm->lock); + return; + } + if (got < 0) { + stm->free_buffers += 1; + XASSERT(stm->free_buffers > 0 && stm->free_buffers <= NBUFS); stm->error = 1; LeaveCriticalSection(&stm->lock); - SetEvent(stm->event); stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); return; } else if (got < wanted) { @@ -238,6 +247,9 @@ r = waveOutWrite(stm->waveout, hdr, sizeof(*hdr)); if (r != MMSYSERR_NOERROR) { + stm->free_buffers += 1; + XASSERT(stm->free_buffers > 0 && stm->free_buffers <= NBUFS); + stm->error = 1; LeaveCriticalSection(&stm->lock); stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); return; @@ -266,9 +278,22 @@ item = InterlockedFlushSList(ctx->work); while (item != NULL) { PSLIST_ENTRY tmp = item; - winmm_refill_stream(((struct cubeb_stream_item *)tmp)->stream); + cubeb_stream * stm = ((struct cubeb_stream_item *)tmp)->stream; item = item->Next; + + winmm_refill_stream(stm); _aligned_free(tmp); + + /* Release the work item and wake winmm_stream_destroy. Destroy sets + stm->shutdown under this lock before waiting, so the gated wake + cannot be lost nor the event closed mid-SetEvent. */ + EnterCriticalSection(&stm->lock); + LONG pending = InterlockedDecrement(&stm->pending_work_items); + XASSERT(pending >= 0); + if (stm->shutdown) { + SetEvent(stm->event); + } + LeaveCriticalSection(&stm->lock); } if (ctx->shutdown) { @@ -285,18 +310,27 @@ { cubeb_stream * stm = (cubeb_stream *)user_ptr; struct cubeb_stream_item * item; + cubeb * ctx; if (msg != WOM_DONE) { return; } + /* The stream may be freed as soon as the published work item is consumed, + so stm must not be touched after the push. pending_callbacks keeps the + context alive through the final SetEvent; winmm_destroy drains it. */ + ctx = stm->context; + InterlockedIncrement(&ctx->pending_callbacks); + InterlockedIncrement(&stm->pending_work_items); + item = _aligned_malloc(sizeof(struct cubeb_stream_item), MEMORY_ALLOCATION_ALIGNMENT); XASSERT(item); item->stream = stm; - InterlockedPushEntrySList(stm->context->work, &item->head); + InterlockedPushEntrySList(ctx->work, &item->head); - SetEvent(stm->context->event); + SetEvent(ctx->event); + InterlockedDecrement(&ctx->pending_callbacks); } static unsigned int @@ -405,6 +439,11 @@ } if (ctx->event) { + /* Wait out any driver callback still between publishing a work item and + its final SetEvent before closing the event. */ + while (InterlockedCompareExchange(&ctx->pending_callbacks, 0, 0) != 0) { + Sleep(1); + } CloseHandle(ctx->event); } @@ -602,7 +641,6 @@ MMTIME time; MMRESULT r; int device_valid; - int enqueued; EnterCriticalSection(&stm->lock); stm->shutdown = 1; @@ -614,18 +652,26 @@ time.wType = TIME_SAMPLES; r = waveOutGetPosition(stm->waveout, &time, sizeof(time)); device_valid = !(r == MMSYSERR_INVALHANDLE || r == MMSYSERR_NODRIVER); - - enqueued = NBUFS - stm->free_buffers; LeaveCriticalSection(&stm->lock); - /* Wait for all blocks to complete. */ - while (device_valid && enqueued > 0 && !stm->error) { - DWORD rv = WaitForSingleObject(stm->event, INFINITE); - XASSERT(rv == WAIT_OBJECT_0); + /* Wait for the device to return all buffers and for queued or in-flight + buffer thread work to finish with the stream. */ + for (;;) { + int enqueued; + LONG pending_work_items; EnterCriticalSection(&stm->lock); enqueued = NBUFS - stm->free_buffers; + pending_work_items = + InterlockedCompareExchange(&stm->pending_work_items, 0, 0); LeaveCriticalSection(&stm->lock); + + if ((!device_valid || enqueued == 0) && pending_work_items == 0) { + break; + } + + DWORD rv = WaitForSingleObject(stm->event, INFINITE); + XASSERT(rv == WAIT_OBJECT_0); } EnterCriticalSection(&stm->lock); diff -Nru firefox-esr-140.13.0esr/media/libcubeb/test/test_loopback.cpp firefox-esr-140.15.0esr/media/libcubeb/test/test_loopback.cpp --- firefox-esr-140.13.0esr/media/libcubeb/test/test_loopback.cpp 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/media/libcubeb/test/test_loopback.cpp 2026-08-26 17:03:47.000000000 +0000 @@ -28,6 +28,12 @@ const double OUTPUT_AMPLITUDE = 0.25; const int32_t NUM_FRAMES_TO_OUTPUT = SAMPLE_FREQUENCY / 20; /* play ~50ms of samples */ +/* data_cb_playback() loops the tone long enough for delayed loopback capture, + * then goes silent before render stop. The tests keep capturing after render + * stop to consume queued virtual-device data. */ +const int32_t CONTINUOUS_TONE_FRAMES = SAMPLE_FREQUENCY / 2; /* ~500ms */ +const unsigned int LOOPBACK_PLAY_MS = 600; +const unsigned int LOOPBACK_DRAIN_MS = 600; template T @@ -266,11 +272,11 @@ } std::lock_guard lock(u->user_state_mutex); - /* generate our test tone on the fly */ + /* Generate the tone long enough for loopback capture streams whose first + * buffer can arrive late; find_phase() searches wherever it lands. */ for (int i = 0; i < nframes; i++) { double tone = 0.0; - if (u->position + i < NUM_FRAMES_TO_OUTPUT) { - /* generate sine wave */ + if (u->position + i < CONTINUOUS_TONE_FRAMES) { tone = sin(2 * M_PI * (i + u->position) * TONE_FREQUENCY / SAMPLE_FREQUENCY); tone *= OUTPUT_AMPLITUDE; @@ -452,11 +458,26 @@ std::unique_ptr cleanup_output_stream_at_exit(output_stream, cubeb_stream_destroy); - cubeb_stream_start(input_stream); + // Start the render stream before the loopback capture stream, matching + // the order cubeb_wasapi.cpp uses internally for a single duplex stream. + // Some virtual audio drivers (e.g. VB-CABLE) only start relaying audio to + // their loopback/capture side once a render client is active, and never + // catch up if the capture side starts first. cubeb_stream_start(output_stream); - delay(300); + cubeb_stream_start(input_stream); + // Give the capture side extra margin to receive its first buffer under + // slow/instrumented builds (e.g. ASAN), on top of the continuous tone above. + delay(LOOPBACK_PLAY_MS); cubeb_stream_stop(output_stream); + // Keep capturing after render stops, so a virtual loopback device can + // deliver any queued render data to this test instead of the next one. + delay(LOOPBACK_DRAIN_MS); cubeb_stream_stop(input_stream); + // Destroy the streams (and the context) right away instead of waiting + // for the RAII cleanups below to do it when this function returns. + cleanup_output_stream_at_exit.reset(); + cleanup_input_stream_at_exit.reset(); + cleanup_cubeb_at_exit.reset(); /* access after stop should not happen, but lock just in case and to appease * sanitization tools */ @@ -641,11 +662,26 @@ std::unique_ptr cleanup_output_stream_at_exit(output_stream, cubeb_stream_destroy); - cubeb_stream_start(input_stream); + // Start the render stream before the loopback capture stream, matching + // the order cubeb_wasapi.cpp uses internally for a single duplex stream. + // Some virtual audio drivers (e.g. VB-CABLE) only start relaying audio to + // their loopback/capture side once a render client is active, and never + // catch up if the capture side starts first. cubeb_stream_start(output_stream); - delay(300); + cubeb_stream_start(input_stream); + // Give the capture side extra margin to receive its first buffer under + // slow/instrumented builds (e.g. ASAN), on top of the continuous tone above. + delay(LOOPBACK_PLAY_MS); cubeb_stream_stop(output_stream); + // Keep capturing after render stops, so a virtual loopback device can + // deliver any queued render data to this test instead of the next one. + delay(LOOPBACK_DRAIN_MS); cubeb_stream_stop(input_stream); + // Destroy the streams (and the context) right away instead of waiting + // for the RAII cleanups below to do it when this function returns. + cleanup_output_stream_at_exit.reset(); + cleanup_input_stream_at_exit.reset(); + cleanup_cubeb_at_exit.reset(); /* access after stop should not happen, but lock just in case and to appease * sanitization tools */ diff -Nru firefox-esr-140.13.0esr/media/libcubeb/test/test_sanity.cpp firefox-esr-140.15.0esr/media/libcubeb/test/test_sanity.cpp --- firefox-esr-140.13.0esr/media/libcubeb/test/test_sanity.cpp 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/media/libcubeb/test/test_sanity.cpp 2026-08-26 17:03:47.000000000 +0000 @@ -279,6 +279,29 @@ cubeb_destroy(ctx); } +TEST(cubeb, reject_inconsistent_channel_layout) +{ + cubeb * ctx; + cubeb_stream * stream; + cubeb_stream_params params = {}; + + int r = common_init(&ctx, "test_sanity"); + ASSERT_EQ(r, CUBEB_OK); + ASSERT_NE(ctx, nullptr); + + params.format = CUBEB_SAMPLE_FLOAT32NE; + params.rate = STREAM_RATE; + params.channels = UINT8_MAX; + params.layout = CUBEB_LAYOUT_STEREO; + + r = cubeb_stream_init(ctx, &stream, "test", NULL, NULL, NULL, ¶ms, + STREAM_LATENCY, test_data_callback, test_state_callback, + &dummy); + EXPECT_EQ(r, CUBEB_ERROR_INVALID_FORMAT); + + cubeb_destroy(ctx); +} + static void test_init_start_stop_destroy_multiple_streams(int early, int delay_ms) { diff -Nru firefox-esr-140.13.0esr/media/libcubeb/wasapi-async-reconfigure-on-start.patch firefox-esr-140.15.0esr/media/libcubeb/wasapi-async-reconfigure-on-start.patch --- firefox-esr-140.13.0esr/media/libcubeb/wasapi-async-reconfigure-on-start.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/media/libcubeb/wasapi-async-reconfigure-on-start.patch 2026-08-26 17:03:47.000000000 +0000 @@ -0,0 +1,41 @@ +diff --git a/src/cubeb_wasapi.cpp b/src/cubeb_wasapi.cpp +index 9d57b4b..bb66c62 100644 +--- a/src/cubeb_wasapi.cpp ++++ b/src/cubeb_wasapi.cpp +@@ -3136,27 +3136,16 @@ stream_start_one_side(cubeb_stream * stm, StreamDirection dir) + HRESULT hr = + dir == OUTPUT ? stm->output_client->Start() : stm->input_client->Start(); + if (hr == AUDCLNT_E_DEVICE_INVALIDATED) { +- LOG("audioclient invalidated for %s device, reconfiguring", ++ // The render thread runs for the entire stream lifetime and may be ++ // dereferencing stm->{output,render,input,capture}_client in its refill ++ // path without holding stream_reset_lock. Recovering inline here would ++ // null those pointers while the render thread is using them, causing ++ // crashes in get_output_buffer et al. Defer the reconfigure to the ++ // render thread's own reconfigure path, which is self-synchronising. ++ LOG("audioclient invalidated for %s device on start, triggering async " ++ "reconfigure", + dir == OUTPUT ? "output" : "input"); +- +- BOOL ok = ResetEvent(stm->reconfigure_event); +- if (!ok) { +- LOG("resetting reconfig event failed for %s stream: %lx", +- dir == OUTPUT ? "output" : "input", GetLastError()); +- } +- +- close_wasapi_stream(stm); +- int r = setup_wasapi_stream(stm); +- if (r != CUBEB_OK) { +- LOG("reconfigure failed"); +- return r; +- } +- +- HRESULT hr2 = dir == OUTPUT ? stm->output_client->Start() +- : stm->input_client->Start(); +- if (FAILED(hr2)) { +- LOG("could not start the %s stream after reconfig: %lx", +- dir == OUTPUT ? "output" : "input", hr); ++ if (!trigger_async_reconfigure(stm)) { + return CUBEB_ERROR; + } + } else if (FAILED(hr)) { diff -Nru firefox-esr-140.13.0esr/media/libcubeb/wasapi-output-mix-channel-count.patch firefox-esr-140.15.0esr/media/libcubeb/wasapi-output-mix-channel-count.patch --- firefox-esr-140.13.0esr/media/libcubeb/wasapi-output-mix-channel-count.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/media/libcubeb/wasapi-output-mix-channel-count.patch 2026-08-26 17:03:46.000000000 +0000 @@ -0,0 +1,84 @@ +diff --git a/src/cubeb.c b/src/cubeb.c +index b0db033d4f07..544341c8fa7d 100644 +--- a/src/cubeb.c ++++ b/src/cubeb.c +@@ -7,6 +7,7 @@ + #undef NDEBUG + #include "cubeb/cubeb.h" + #include "cubeb-internal.h" ++#include "cubeb_mixer.h" + #include + #include + #include +@@ -97,7 +98,10 @@ validate_stream_params(cubeb_stream_params * input_stream_params, + if (output_stream_params->rate < 1000 || + output_stream_params->rate > 768000 || + output_stream_params->channels < 1 || +- output_stream_params->channels > UINT8_MAX) { ++ output_stream_params->channels > UINT8_MAX || ++ (output_stream_params->layout != CUBEB_LAYOUT_UNDEFINED && ++ cubeb_channel_layout_nb_channels(output_stream_params->layout) != ++ output_stream_params->channels)) { + return CUBEB_ERROR_INVALID_FORMAT; + } + } +@@ -105,7 +109,10 @@ validate_stream_params(cubeb_stream_params * input_stream_params, + if (input_stream_params->rate < 1000 || + input_stream_params->rate > 768000 || + input_stream_params->channels < 1 || +- input_stream_params->channels > UINT8_MAX) { ++ input_stream_params->channels > UINT8_MAX || ++ (input_stream_params->layout != CUBEB_LAYOUT_UNDEFINED && ++ cubeb_channel_layout_nb_channels(input_stream_params->layout) != ++ input_stream_params->channels)) { + return CUBEB_ERROR_INVALID_FORMAT; + } + } +diff --git a/src/cubeb_wasapi.cpp b/src/cubeb_wasapi.cpp +index fe69ecd34fe2..2e5bef3a5ed9 100644 +--- a/src/cubeb_wasapi.cpp ++++ b/src/cubeb_wasapi.cpp +@@ -2650,7 +2650,8 @@ setup_wasapi_stream(cubeb_stream * stm) + + // Create output mixer. + if (has_output(stm) && +- stm->output_mix_params.layout != stm->output_stream_params.layout) { ++ (stm->output_mix_params.layout != stm->output_stream_params.layout || ++ stm->output_mix_params.channels != stm->output_stream_params.channels)) { + if (stm->output_mix_params.layout == CUBEB_LAYOUT_UNDEFINED) { + LOG("Output stream using undefined layout! Any mixing may be " + "unpredictable!\n"); +diff --git a/test/test_sanity.cpp b/test/test_sanity.cpp +index 17d3c542b419..35ee1a958b8c 100644 +--- a/test/test_sanity.cpp ++++ b/test/test_sanity.cpp +@@ -279,6 +279,29 @@ TEST(cubeb, configure_stream_undefined_layout) + cubeb_destroy(ctx); + } + ++TEST(cubeb, reject_inconsistent_channel_layout) ++{ ++ cubeb * ctx; ++ cubeb_stream * stream; ++ cubeb_stream_params params = {}; ++ ++ int r = common_init(&ctx, "test_sanity"); ++ ASSERT_EQ(r, CUBEB_OK); ++ ASSERT_NE(ctx, nullptr); ++ ++ params.format = CUBEB_SAMPLE_FLOAT32NE; ++ params.rate = STREAM_RATE; ++ params.channels = UINT8_MAX; ++ params.layout = CUBEB_LAYOUT_STEREO; ++ ++ r = cubeb_stream_init(ctx, &stream, "test", NULL, NULL, NULL, ¶ms, ++ STREAM_LATENCY, test_data_callback, test_state_callback, ++ &dummy); ++ EXPECT_EQ(r, CUBEB_ERROR_INVALID_FORMAT); ++ ++ cubeb_destroy(ctx); ++} ++ + static void + test_init_start_stop_destroy_multiple_streams(int early, int delay_ms) + { diff -Nru firefox-esr-140.13.0esr/media/libcubeb/winmm-destroy-work-item-uaf.patch firefox-esr-140.15.0esr/media/libcubeb/winmm-destroy-work-item-uaf.patch --- firefox-esr-140.13.0esr/media/libcubeb/winmm-destroy-work-item-uaf.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/media/libcubeb/winmm-destroy-work-item-uaf.patch 2026-08-26 17:03:47.000000000 +0000 @@ -0,0 +1,187 @@ +diff --git a/src/cubeb_winmm.c b/src/cubeb_winmm.c +index b2234a9b52ac..6eb8c4d37322 100644 +--- a/src/cubeb_winmm.c ++++ b/src/cubeb_winmm.c +@@ -86,6 +86,7 @@ struct cubeb { + HANDLE thread; + int shutdown; + PSLIST_HEADER work; ++ LONG pending_callbacks; + CRITICAL_SECTION lock; + unsigned int active_streams; + unsigned int minimum_latency_ms; +@@ -106,6 +107,7 @@ struct cubeb_stream { + int shutdown; + int draining; + int error; ++ LONG pending_work_items; + HANDLE event; + HWAVEOUT waveout; + CRITICAL_SECTION lock; +@@ -172,12 +174,13 @@ winmm_refill_stream(cubeb_stream * stm) + ALOG("winmm_refill_stream"); + + EnterCriticalSection(&stm->lock); ++ stm->free_buffers += 1; ++ XASSERT(stm->free_buffers > 0 && stm->free_buffers <= NBUFS); ++ + if (stm->error) { + LeaveCriticalSection(&stm->lock); + return; + } +- stm->free_buffers += 1; +- XASSERT(stm->free_buffers > 0 && stm->free_buffers <= NBUFS); + + if (stm->draining) { + LeaveCriticalSection(&stm->lock); +@@ -185,13 +188,11 @@ winmm_refill_stream(cubeb_stream * stm) + ALOG("winmm_refill_stream draining"); + stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_DRAINED); + } +- SetEvent(stm->event); + return; + } + + if (stm->shutdown) { + LeaveCriticalSection(&stm->lock); +- SetEvent(stm->event); + return; + } + +@@ -204,10 +205,18 @@ winmm_refill_stream(cubeb_stream * stm) + LeaveCriticalSection(&stm->lock); + got = stm->data_callback(stm, stm->user_ptr, NULL, hdr->lpData, wanted); + EnterCriticalSection(&stm->lock); ++ if (stm->shutdown) { ++ stm->free_buffers += 1; ++ XASSERT(stm->free_buffers > 0 && stm->free_buffers <= NBUFS); ++ LeaveCriticalSection(&stm->lock); ++ return; ++ } ++ + if (got < 0) { ++ stm->free_buffers += 1; ++ XASSERT(stm->free_buffers > 0 && stm->free_buffers <= NBUFS); + stm->error = 1; + LeaveCriticalSection(&stm->lock); +- SetEvent(stm->event); + stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); + return; + } else if (got < wanted) { +@@ -238,6 +247,9 @@ winmm_refill_stream(cubeb_stream * stm) + + r = waveOutWrite(stm->waveout, hdr, sizeof(*hdr)); + if (r != MMSYSERR_NOERROR) { ++ stm->free_buffers += 1; ++ XASSERT(stm->free_buffers > 0 && stm->free_buffers <= NBUFS); ++ stm->error = 1; + LeaveCriticalSection(&stm->lock); + stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); + return; +@@ -266,9 +278,22 @@ static unsigned __stdcall winmm_buffer_thread(void * user_ptr) + item = InterlockedFlushSList(ctx->work); + while (item != NULL) { + PSLIST_ENTRY tmp = item; +- winmm_refill_stream(((struct cubeb_stream_item *)tmp)->stream); ++ cubeb_stream * stm = ((struct cubeb_stream_item *)tmp)->stream; + item = item->Next; ++ ++ winmm_refill_stream(stm); + _aligned_free(tmp); ++ ++ /* Release the work item and wake winmm_stream_destroy. Destroy sets ++ stm->shutdown under this lock before waiting, so the gated wake ++ cannot be lost nor the event closed mid-SetEvent. */ ++ EnterCriticalSection(&stm->lock); ++ LONG pending = InterlockedDecrement(&stm->pending_work_items); ++ XASSERT(pending >= 0); ++ if (stm->shutdown) { ++ SetEvent(stm->event); ++ } ++ LeaveCriticalSection(&stm->lock); + } + + if (ctx->shutdown) { +@@ -285,18 +310,27 @@ winmm_buffer_callback(HWAVEOUT waveout, UINT msg, DWORD_PTR user_ptr, + { + cubeb_stream * stm = (cubeb_stream *)user_ptr; + struct cubeb_stream_item * item; ++ cubeb * ctx; + + if (msg != WOM_DONE) { + return; + } + ++ /* The stream may be freed as soon as the published work item is consumed, ++ so stm must not be touched after the push. pending_callbacks keeps the ++ context alive through the final SetEvent; winmm_destroy drains it. */ ++ ctx = stm->context; ++ InterlockedIncrement(&ctx->pending_callbacks); ++ InterlockedIncrement(&stm->pending_work_items); ++ + item = _aligned_malloc(sizeof(struct cubeb_stream_item), + MEMORY_ALLOCATION_ALIGNMENT); + XASSERT(item); + item->stream = stm; +- InterlockedPushEntrySList(stm->context->work, &item->head); ++ InterlockedPushEntrySList(ctx->work, &item->head); + +- SetEvent(stm->context->event); ++ SetEvent(ctx->event); ++ InterlockedDecrement(&ctx->pending_callbacks); + } + + static unsigned int +@@ -405,6 +439,11 @@ winmm_destroy(cubeb * ctx) + } + + if (ctx->event) { ++ /* Wait out any driver callback still between publishing a work item and ++ its final SetEvent before closing the event. */ ++ while (InterlockedCompareExchange(&ctx->pending_callbacks, 0, 0) != 0) { ++ Sleep(1); ++ } + CloseHandle(ctx->event); + } + +@@ -602,7 +641,6 @@ winmm_stream_destroy(cubeb_stream * stm) + MMTIME time; + MMRESULT r; + int device_valid; +- int enqueued; + + EnterCriticalSection(&stm->lock); + stm->shutdown = 1; +@@ -614,18 +652,26 @@ winmm_stream_destroy(cubeb_stream * stm) + time.wType = TIME_SAMPLES; + r = waveOutGetPosition(stm->waveout, &time, sizeof(time)); + device_valid = !(r == MMSYSERR_INVALHANDLE || r == MMSYSERR_NODRIVER); +- +- enqueued = NBUFS - stm->free_buffers; + LeaveCriticalSection(&stm->lock); + +- /* Wait for all blocks to complete. */ +- while (device_valid && enqueued > 0 && !stm->error) { +- DWORD rv = WaitForSingleObject(stm->event, INFINITE); +- XASSERT(rv == WAIT_OBJECT_0); ++ /* Wait for the device to return all buffers and for queued or in-flight ++ buffer thread work to finish with the stream. */ ++ for (;;) { ++ int enqueued; ++ LONG pending_work_items; + + EnterCriticalSection(&stm->lock); + enqueued = NBUFS - stm->free_buffers; ++ pending_work_items = ++ InterlockedCompareExchange(&stm->pending_work_items, 0, 0); + LeaveCriticalSection(&stm->lock); ++ ++ if ((!device_valid || enqueued == 0) && pending_work_items == 0) { ++ break; ++ } ++ ++ DWORD rv = WaitForSingleObject(stm->event, INFINITE); ++ XASSERT(rv == WAIT_OBJECT_0); + } + + EnterCriticalSection(&stm->lock); diff -Nru firefox-esr-140.13.0esr/mfbt/BufferList.h firefox-esr-140.15.0esr/mfbt/BufferList.h --- firefox-esr-140.13.0esr/mfbt/BufferList.h 2026-07-15 20:30:35.000000000 +0000 +++ firefox-esr-140.15.0esr/mfbt/BufferList.h 2026-08-26 17:03:47.000000000 +0000 @@ -370,7 +370,7 @@ [[nodiscard]] bool WriteBytesZeroCopy(char* aData, size_t aSize, size_t aCapacity) { MOZ_ASSERT(mOwning); - MOZ_ASSERT(aSize <= aCapacity); + MOZ_RELEASE_ASSERT(aSize <= aCapacity); // Don't create zero-length segments; that can cause problems for // consumers of the data (bug 1595453). @@ -459,6 +459,7 @@ if (!mSegments.empty()) { Segment& lastSegment = mSegments.back(); + MOZ_RELEASE_ASSERT(lastSegment.mCapacity >= lastSegment.mSize); size_t capacity = lastSegment.mCapacity - lastSegment.mSize; if (capacity) { size_t size = std::min(aMaxSize, capacity); diff -Nru firefox-esr-140.13.0esr/modules/libjar/components.conf firefox-esr-140.15.0esr/modules/libjar/components.conf --- firefox-esr-140.13.0esr/modules/libjar/components.conf 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/modules/libjar/components.conf 2026-08-26 17:03:48.000000000 +0000 @@ -34,11 +34,13 @@ 'cid': '{245abae2-b947-4ded-a46d-9829d3cca462}', 'type': 'nsJARURI::Mutator', 'headers': ['nsJARURI.h'], + 'serializable': True, }, { 'cid': '{19d9161b-a2a9-4518-b2c9-fcb8296d6dcd}', 'type': 'nsJARURI::Mutator', 'headers': ['nsJARURI.h'], + 'serializable': True, }, { 'cid': '{608b7f6f-4b60-40d6-87ed-d933bf53d8c1}', diff -Nru firefox-esr-140.13.0esr/modules/libpref/Preferences.cpp firefox-esr-140.15.0esr/modules/libpref/Preferences.cpp --- firefox-esr-140.13.0esr/modules/libpref/Preferences.cpp 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/modules/libpref/Preferences.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -757,6 +757,11 @@ if (!ValueMatches(PrefValueKind::Default, type, value)) { // Type() is PrefType::None if it's a newly added pref. This is ok. mDefaultValue.Replace(mHasDefaultValue, Type(), type, value); + // Both values share the type tag, so clear a user value of the old + // type now, while Clear() still matches how it was stored. + if (mHasUserValue && !IsType(type)) { + ClearUserValue(); + } SetType(type); mHasDefaultValue = true; defaultValueChanged = true; diff -Nru firefox-esr-140.13.0esr/modules/libpref/init/StaticPrefList.yaml firefox-esr-140.15.0esr/modules/libpref/init/StaticPrefList.yaml --- firefox-esr-140.13.0esr/modules/libpref/init/StaticPrefList.yaml 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/modules/libpref/init/StaticPrefList.yaml 2026-08-26 17:03:47.000000000 +0000 @@ -3174,6 +3174,12 @@ value: false mirror: always +# Whether or not system IndexedDB access from a content process is allowed. +- name: dom.indexedDB.testing.allowContentSystem + type: RelaxedAtomicBool + value: false + mirror: always + # Whether or not indexedDB experimental features are enabled. - name: dom.indexedDB.experimental type: RelaxedAtomicBool @@ -13055,6 +13061,14 @@ type: RelaxedAtomicBool value: true mirror: always + +# When true, Negotiate authentication sends a tls-server-end-point channel +# binding token, as required by servers with Windows Extended Protection +# enabled. Only has an effect when the SSPI auth module is in use. +- name: network.auth.negotiate_channel_binding + type: RelaxedAtomicBool + value: true + mirror: always # See the full list of values in nsICookieService.idl. - name: network.cookie.cookieBehavior diff -Nru firefox-esr-140.13.0esr/mozglue/misc/NativeNt.h firefox-esr-140.15.0esr/mozglue/misc/NativeNt.h --- firefox-esr-140.13.0esr/mozglue/misc/NativeNt.h 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/mozglue/misc/NativeNt.h 2026-08-26 17:03:49.000000000 +0000 @@ -13,6 +13,7 @@ #include #include +#include #include #include "mozilla/ArrayUtils.h" @@ -543,6 +544,27 @@ char pdbFileName[1]; }; +// The size of the object that T points at, used to bounds-check a pointer +// against the mapped image. +// +// void and function pointees have no meaningful compile-time extent (the +// former is opaque and the latter is machine code) so they fall back to a +// one-byte "this address is inside the image" check, which is all the caller +// can meaningfully assert. +template +constexpr size_t PointeeSize() { + static_assert(std::is_pointer_v, + "RVAToPtr and friends resolve an RVA to a pointer, so T must " + "be a pointer type"); + + using Pointee = std::remove_pointer_t; + if constexpr (std::is_void_v || std::is_function_v) { + return 1; + } else { + return sizeof(Pointee); + } +} + class MOZ_RAII PEHeaders final { /** * This structure is documented on MSDN as VS_VERSIONINFO, but is not present @@ -623,23 +645,51 @@ } /** - * This overload computes a result by adding aRva to aBase, but also ensures + * This overload computes a result by adding aRva to aBase and ensures * that the resulting pointer falls within the bounds of this binary's memory * mapping. */ - template + template ()> T RVAToPtr(void* aBase, R aRva) const { if (!mImageLimit) { return nullptr; } + // aBase is not always the image base (some callers resolve offsets that + // are relative to a resource directory or to the optional header), so + // convert back to an image-relative RVA before bounds checking. + char* imageBase = reinterpret_cast(mMzHeader); char* absAddress = reinterpret_cast(aBase) + aRva; - if (absAddress < reinterpret_cast(mMzHeader) || - absAddress > reinterpret_cast(mImageLimit)) { + if (absAddress < imageBase) { + return nullptr; + } + + return RVAToPtrChecked(static_cast(absAddress - imageBase), + Size); + } + + /** + * Like RVAToPtr, but ensures that the whole range [aRva, aRva + aSize) -- + * not just its first byte -- falls within the bounds of this binary's memory + * mapping. Use this whenever the caller is going to dereference more than a + * single byte at the resulting address. + */ + template + T RVAToPtrChecked(R aRva, size_t aSize) const { + if (!mImageLimit || !aSize) { + return nullptr; + } + + uintptr_t base = reinterpret_cast(mMzHeader); + // mImageLimit points at the last valid byte of the mapping. + uintptr_t available = reinterpret_cast(mImageLimit) - base + 1u; + + uintptr_t rva = static_cast(aRva); + if (rva >= available || aSize > available - rva) { return nullptr; } - return reinterpret_cast(absAddress); + return reinterpret_cast(base + rva); } Maybe> GetBounds() const { @@ -936,16 +986,45 @@ } const CodeViewRecord70* GetPdbInfo() const { - PIMAGE_DEBUG_DIRECTORY debugDirectory = - GetImageDirectoryEntry( - IMAGE_DIRECTORY_ENTRY_DEBUG); + PIMAGE_DATA_DIRECTORY dirEntry = + GetImageDirectoryEntryPtr(IMAGE_DIRECTORY_ENTRY_DEBUG); + if (!dirEntry || dirEntry->Size < sizeof(IMAGE_DEBUG_DIRECTORY)) { + return nullptr; + } + + auto debugDirectory = RVAToPtrChecked( + dirEntry->VirtualAddress, sizeof(IMAGE_DEBUG_DIRECTORY)); if (!debugDirectory) { return nullptr; } - const CodeViewRecord70* debugInfo = - RVAToPtr(debugDirectory->AddressOfRawData); - return (debugInfo && debugInfo->signature == 'SDSR') ? debugInfo : nullptr; + // The record needs to be big enough for the fixed-size fields plus at + // least the null terminator of pdbFileName. + constexpr size_t kMinRecordSize = + offsetof(CodeViewRecord70, pdbFileName) + 1; + if (debugDirectory->SizeOfData < kMinRecordSize) { + return nullptr; + } + + auto debugInfo = RVAToPtrChecked( + debugDirectory->AddressOfRawData, debugDirectory->SizeOfData); + if (!debugInfo || debugInfo->signature != 'SDSR') { + return nullptr; + } + + // Callers treat pdbFileName as a C string, so it must be terminated inside + // the record. + const size_t nameCapacity = + debugDirectory->SizeOfData - offsetof(CodeViewRecord70, pdbFileName); + for (size_t i = 0; i < nameCapacity; ++i) { + if (!debugInfo->pdbFileName[i]) { + // terminated, so succeed + return debugInfo; + } + } + + // not terminated, so fail + return nullptr; } private: diff -Nru firefox-esr-140.13.0esr/mozglue/tests/TestNativeNt.cpp firefox-esr-140.15.0esr/mozglue/tests/TestNativeNt.cpp --- firefox-esr-140.13.0esr/mozglue/tests/TestNativeNt.cpp 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/mozglue/tests/TestNativeNt.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -402,6 +402,169 @@ } #endif // _M_X64 +// A synthetic PE image, used to feed PEHeaders::GetPdbInfo() malformed debug +// directories. The page following the image is reserved but never committed, +// so that a read past the end of the image faults rather than silently +// succeeding. +class FakePEImage final { + public: + FakePEImage() { + SYSTEM_INFO sysInfo; + ::GetSystemInfo(&sysInfo); + mImageSize = sysInfo.dwPageSize * 2; + mBase = reinterpret_cast(::VirtualAlloc( + nullptr, mImageSize + sysInfo.dwPageSize, MEM_RESERVE, PAGE_NOACCESS)); + if (mBase && + !::VirtualAlloc(mBase, mImageSize, MEM_COMMIT, PAGE_READWRITE)) { + ::VirtualFree(mBase, 0, MEM_RELEASE); + mBase = nullptr; + } + } + + ~FakePEImage() { + if (mBase) { + ::VirtualFree(mBase, 0, MEM_RELEASE); + } + } + + FakePEImage(const FakePEImage&) = delete; + FakePEImage& operator=(const FakePEImage&) = delete; + + explicit operator bool() const { return !!mBase; } + DWORD ImageSize() const { return mImageSize; } + uint8_t* At(DWORD aRva) const { return mBase + aRva; } + PIMAGE_DOS_HEADER DosHeader() const { + return reinterpret_cast(mBase); + } + + // Zeroes the image and writes headers whose debug data directory points at + // aDebugDirRva with the given size. + void Reset(DWORD aDebugDirRva, DWORD aDebugDirSize) { + constexpr DWORD kNtHeadersRva = 0x40; + memset(mBase, 0, mImageSize); + + DosHeader()->e_magic = IMAGE_DOS_SIGNATURE; + DosHeader()->e_lfanew = kNtHeadersRva; + + auto ntHeaders = reinterpret_cast(At(kNtHeadersRva)); + ntHeaders->Signature = IMAGE_NT_SIGNATURE; + ntHeaders->FileHeader.SizeOfOptionalHeader = sizeof(IMAGE_OPTIONAL_HEADER); + ntHeaders->OptionalHeader.Magic = IMAGE_NT_OPTIONAL_HDR_MAGIC; + ntHeaders->OptionalHeader.SizeOfImage = mImageSize; + ntHeaders->OptionalHeader.NumberOfRvaAndSizes = + IMAGE_NUMBEROF_DIRECTORY_ENTRIES; + + auto& dataDir = + ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG]; + dataDir.VirtualAddress = aDebugDirRva; + dataDir.Size = aDebugDirSize; + } + + private: + uint8_t* mBase = nullptr; + DWORD mImageSize = 0; +}; + +bool TestPdbInfoBounds() { + FakePEImage image; + if (!image) { + printf("TEST-FAIL | NativeNt | Failed to create a fake PE image\n"); + return false; + } + + const DWORD imageSize = image.ImageSize(); + constexpr DWORD kDebugDirRva = 0x400; + constexpr DWORD kRecordRva = 0x500; + constexpr DWORD kNameOffset = offsetof(CodeViewRecord70, pdbFileName); + const char kPdbName[] = "test.pdb"; + + struct TestCase { + const char* mDescription; + DWORD mDebugDirRva; + DWORD mDebugDirSize; + DWORD mRawDataRva; + DWORD mRawDataSize; + bool mTerminateName; + bool mExpectSuccess; + }; + + const TestCase kTestCases[] = { + {"well-formed record", kDebugDirRva, sizeof(IMAGE_DEBUG_DIRECTORY), + kRecordRva, kNameOffset + sizeof(kPdbName), true, true}, + {"record extending past the end of the image", kDebugDirRva, + sizeof(IMAGE_DEBUG_DIRECTORY), imageSize - 8, 64, true, false}, + {"record too small to hold a file name", kDebugDirRva, + sizeof(IMAGE_DEBUG_DIRECTORY), kRecordRva, kNameOffset, true, false}, + // A size below the fixed-size fields would underflow the remaining + // capacity of pdbFileName if it were not rejected up front. + {"record smaller than the fixed-size fields", kDebugDirRva, + sizeof(IMAGE_DEBUG_DIRECTORY), kRecordRva, kNameOffset / 2, true, false}, + {"unterminated file name", kDebugDirRva, sizeof(IMAGE_DEBUG_DIRECTORY), + kRecordRva, kNameOffset + 8, false, false}, + {"debug directory extending past the end of the image", imageSize - 4, + sizeof(IMAGE_DEBUG_DIRECTORY), kRecordRva, + kNameOffset + sizeof(kPdbName), true, false}, + {"debug directory smaller than one entry", kDebugDirRva, + sizeof(IMAGE_DEBUG_DIRECTORY) - 1, kRecordRva, + kNameOffset + sizeof(kPdbName), true, false}, + }; + + for (const auto& testCase : kTestCases) { + image.Reset(testCase.mDebugDirRva, testCase.mDebugDirSize); + + if (testCase.mDebugDirRva + sizeof(IMAGE_DEBUG_DIRECTORY) <= imageSize) { + auto debugDir = reinterpret_cast( + image.At(testCase.mDebugDirRva)); + debugDir->Type = IMAGE_DEBUG_TYPE_CODEVIEW; + debugDir->AddressOfRawData = testCase.mRawDataRva; + debugDir->SizeOfData = testCase.mRawDataSize; + } + + // Write as much of the record as fits in the image, so that a bounds check + // that only looks at the record's first bytes would still be fooled. + if (testCase.mRawDataRva < imageSize) { + DWORD writable = + std::min(testCase.mRawDataSize, imageSize - testCase.mRawDataRva); + uint8_t* record = image.At(testCase.mRawDataRva); + memset(record, 'A', writable); + if (writable >= sizeof(uint32_t)) { + const uint32_t signature = 'SDSR'; + memcpy(record, &signature, sizeof(signature)); + } + if (testCase.mTerminateName && writable > kNameOffset) { + DWORD nameSize = + std::min(DWORD(sizeof(kPdbName)), DWORD(writable - kNameOffset)); + memcpy(record + kNameOffset, kPdbName, nameSize); + record[kNameOffset + nameSize - 1] = '\0'; + } + } + + PEHeaders headers(image.DosHeader()); + if (!headers) { + printf("TEST-FAIL | NativeNt | Failed to parse the fake PE image (%s)\n", + testCase.mDescription); + return false; + } + + const CodeViewRecord70* pdbInfo = headers.GetPdbInfo(); + if (!pdbInfo != !testCase.mExpectSuccess) { + printf("TEST-FAIL | NativeNt | GetPdbInfo() unexpectedly %s for %s\n", + pdbInfo ? "succeeded" : "failed", testCase.mDescription); + return false; + } + + if (pdbInfo && strcmp(pdbInfo->pdbFileName, kPdbName)) { + printf( + "TEST-FAIL | NativeNt | GetPdbInfo() returned the wrong name for " + "%s: %s\n", + testCase.mDescription, pdbInfo->pdbFileName); + return false; + } + } + + return true; +} + int wmain(int argc, wchar_t* argv[]) { UNICODE_STRING normal; ::RtlInitUnicodeString(&normal, kNormal); @@ -638,6 +801,10 @@ return 1; } + if (!TestPdbInfoBounds()) { + return 1; + } + #if defined(_M_X64) if (!TestCheckStack()) { return 1; diff -Nru firefox-esr-140.13.0esr/netwerk/base/SimpleChannelParent.cpp firefox-esr-140.15.0esr/netwerk/base/SimpleChannelParent.cpp --- firefox-esr-140.13.0esr/netwerk/base/SimpleChannelParent.cpp 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/base/SimpleChannelParent.cpp 2026-08-26 17:03:47.000000000 +0000 @@ -7,6 +7,7 @@ #include "SimpleChannelParent.h" #include "mozilla/Assertions.h" #include "mozilla/dom/ContentParent.h" +#include "mozilla/net/NeckoParent.h" #include "nsNetUtil.h" #include "nsIChannel.h" diff -Nru firefox-esr-140.13.0esr/netwerk/base/nsSimpleNestedURI.cpp firefox-esr-140.15.0esr/netwerk/base/nsSimpleNestedURI.cpp --- firefox-esr-140.13.0esr/netwerk/base/nsSimpleNestedURI.cpp 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/base/nsSimpleNestedURI.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -135,9 +135,31 @@ if (!nsSimpleURI::Deserialize(params.simpleParams())) return false; mInnerURI = DeserializeURI(params.innerURI()); + if (!mInnerURI || !IsValidInnerURI(mInnerURI)) { + return false; + } + return true; } +bool nsSimpleNestedURI::IsValidInnerURI(nsIURI* aInnerURI) { + if (!Scheme().EqualsLiteral("view-source")) { + return false; + } + + nsAutoCString innerSpec; + if (NS_FAILED(aInnerURI->GetAsciiSpec(innerSpec))) { + return false; + } + + nsAutoCString pathQueryRef; + if (NS_FAILED(GetPathQueryRef(pathQueryRef))) { + return false; + } + + return innerSpec == pathQueryRef; +} + // nsINestedURI NS_IMETHODIMP diff -Nru firefox-esr-140.13.0esr/netwerk/base/nsSimpleNestedURI.h firefox-esr-140.15.0esr/netwerk/base/nsSimpleNestedURI.h --- firefox-esr-140.13.0esr/netwerk/base/nsSimpleNestedURI.h 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/base/nsSimpleNestedURI.h 2026-08-26 17:03:48.000000000 +0000 @@ -52,6 +52,10 @@ nsresult SetQuery(const nsACString& aQuery) override; nsresult SetRef(const nsACString& aRef) override; bool Deserialize(const mozilla::ipc::URIParams&); + + // Returns true if aInnerURI is the inner URI our own spec implies. + virtual bool IsValidInnerURI(nsIURI* aInnerURI); + nsresult ReadPrivate(nsIObjectInputStream* stream); public: diff -Nru firefox-esr-140.13.0esr/netwerk/base/nsStandardURL.cpp firefox-esr-140.15.0esr/netwerk/base/nsStandardURL.cpp --- firefox-esr-140.13.0esr/netwerk/base/nsStandardURL.cpp 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/base/nsStandardURL.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -3449,6 +3449,8 @@ nsDependentCSubstring(mSpec, mScheme.mLen, 3).EqualsLiteral("://"), NS_ERROR_MALFORMED_URI); + NS_ENSURE_TRUE(CheckSegmentInvariants(), NS_ERROR_MALFORMED_URI); + rv = CheckIfHostIsAscii(); if (NS_FAILED(rv)) { return rv; @@ -3638,6 +3640,53 @@ aParams = params; } +bool nsStandardURL::CheckSegmentInvariants() const { + NS_ENSURE_TRUE(mPath.mLen != -1 && mSpec.CharAt(mPath.mPos) == '/', false); + NS_ENSURE_TRUE(mPath.mPos == mFilepath.mPos, false); + NS_ENSURE_TRUE(mQuery.mLen == -1 || (mQuery.mPos > mPath.mPos && + mSpec.CharAt(mQuery.mPos - 1) == '?'), + false); + NS_ENSURE_TRUE(mRef.mLen == -1 || (mRef.mPos > mPath.mPos && + mSpec.CharAt(mRef.mPos - 1) == '#'), + false); + NS_ENSURE_TRUE(mQuery.mLen == -1 || mRef.mLen == -1 || + mQuery.mPos + mQuery.mLen < mRef.mPos, + false); + + // mDirectory, mBasename, mExtension must be sub-ranges of mFilepath, + // which must be a sub-range of mPath. + auto isSubSegment = [](const URLSegment& inner, const URLSegment& outer) { + if (inner.mLen == -1) return true; + if (outer.mLen == -1) return false; + return inner.mPos >= outer.mPos && + inner.mPos + inner.mLen <= outer.mPos + outer.mLen; + }; + NS_ENSURE_TRUE(isSubSegment(mFilepath, mPath), false); + NS_ENSURE_TRUE(isSubSegment(mDirectory, mFilepath), false); + NS_ENSURE_TRUE(isSubSegment(mBasename, mFilepath), false); + NS_ENSURE_TRUE(isSubSegment(mExtension, mFilepath), false); + NS_ENSURE_TRUE(isSubSegment(mHost, mAuthority), false); + NS_ENSURE_TRUE(isSubSegment(mUsername, mAuthority), false); + NS_ENSURE_TRUE(isSubSegment(mPassword, mAuthority), false); + NS_ENSURE_TRUE(isSubSegment(mQuery, mPath), false); + NS_ENSURE_TRUE(isSubSegment(mRef, mPath), false); + + // mPath must immediately follow mAuthority. If mAuthority is absent, that is + // only valid for URLTYPE_NO_AUTHORITY (e.g. file: URLs parsed without an + // authority component); for all other URL types a missing authority while + // mPath is present indicates a malformed or crafted URL. + if (mPath.mLen >= 0) { + if (mAuthority.mLen >= 0) { + NS_ENSURE_TRUE(mPath.mPos == mAuthority.mPos + mAuthority.mLen, false); + } else { + NS_ENSURE_TRUE(mURLType == URLTYPE_NO_AUTHORITY, false); + } + } + + NS_ENSURE_TRUE(mAuthority.mLen >= 0 || mPort == -1, false); + return true; +} + bool nsStandardURL::Deserialize(const URIParams& aParams) { MOZ_ASSERT(mDisplayHost.IsEmpty(), "Shouldn't have cached unicode host"); MOZ_ASSERT(!mFile, "Shouldn't have cached file"); @@ -3698,46 +3747,7 @@ NS_ENSURE_TRUE( nsDependentCSubstring(mSpec, mScheme.mLen, 3).EqualsLiteral("://"), false); - NS_ENSURE_TRUE(mPath.mLen != -1 && mSpec.CharAt(mPath.mPos) == '/', false); - NS_ENSURE_TRUE(mPath.mPos == mFilepath.mPos, false); - NS_ENSURE_TRUE(mQuery.mLen == -1 || (mQuery.mPos > mPath.mPos && - mSpec.CharAt(mQuery.mPos - 1) == '?'), - false); - NS_ENSURE_TRUE(mRef.mLen == -1 || (mRef.mPos > mPath.mPos && - mSpec.CharAt(mRef.mPos - 1) == '#'), - false); - - // mDirectory, mBasename, mExtension must be sub-ranges of mFilepath, - // which must be a sub-range of mPath. - auto isSubSegment = [](const URLSegment& inner, const URLSegment& outer) { - if (inner.mLen == -1) return true; - if (outer.mLen == -1) return false; - return inner.mPos >= outer.mPos && - inner.mPos + inner.mLen <= outer.mPos + outer.mLen; - }; - NS_ENSURE_TRUE(isSubSegment(mFilepath, mPath), false); - NS_ENSURE_TRUE(isSubSegment(mDirectory, mFilepath), false); - NS_ENSURE_TRUE(isSubSegment(mBasename, mFilepath), false); - NS_ENSURE_TRUE(isSubSegment(mExtension, mFilepath), false); - NS_ENSURE_TRUE(isSubSegment(mHost, mAuthority), false); - NS_ENSURE_TRUE(isSubSegment(mUsername, mAuthority), false); - NS_ENSURE_TRUE(isSubSegment(mPassword, mAuthority), false); - NS_ENSURE_TRUE(isSubSegment(mQuery, mPath), false); - NS_ENSURE_TRUE(isSubSegment(mRef, mPath), false); - - // mPath must immediately follow mAuthority. If mAuthority is absent, that is - // only valid for URLTYPE_NO_AUTHORITY (e.g. file: URLs parsed without an - // authority component); for all other URL types a missing authority while - // mPath is present indicates a malformed or crafted URL. - if (mPath.mLen >= 0) { - if (mAuthority.mLen >= 0) { - NS_ENSURE_TRUE(mPath.mPos == mAuthority.mPos + mAuthority.mLen, false); - } else { - NS_ENSURE_TRUE(mURLType == URLTYPE_NO_AUTHORITY, false); - } - } - - NS_ENSURE_TRUE(mAuthority.mLen >= 0 || mPort == -1, false); + NS_ENSURE_TRUE(CheckSegmentInvariants(), false); if (!IsValid()) { return false; diff -Nru firefox-esr-140.13.0esr/netwerk/base/nsStandardURL.h firefox-esr-140.15.0esr/netwerk/base/nsStandardURL.h --- firefox-esr-140.13.0esr/netwerk/base/nsStandardURL.h 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/base/nsStandardURL.h 2026-08-26 17:03:48.000000000 +0000 @@ -241,6 +241,8 @@ bool Deserialize(const mozilla::ipc::URIParams&); nsresult ReadPrivate(nsIObjectInputStream* stream); + bool CheckSegmentInvariants() const; + private: nsresult Init(uint32_t urlType, int32_t defaultPort, const nsACString& spec, const char* charset, nsIURI* baseURI); diff -Nru firefox-esr-140.13.0esr/netwerk/build/components.conf firefox-esr-140.15.0esr/netwerk/build/components.conf --- firefox-esr-140.13.0esr/netwerk/build/components.conf 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/build/components.conf 2026-08-26 17:03:48.000000000 +0000 @@ -573,6 +573,7 @@ 'type': 'mozilla::net::nsSimpleURI::Mutator', 'headers': ['nsSimpleURI.h'], 'processes': ProcessSelector.ALLOW_IN_SOCKET_PROCESS, + 'serializable': True, }, { 'cid': '{04445aa0-fd27-4c99-bd41-6be6318ae92c}', @@ -580,6 +581,7 @@ 'type': 'mozilla::net::DefaultURI::Mutator', 'headers': ['/netwerk/base/DefaultURI.h'], 'processes': ProcessSelector.ALLOW_IN_SOCKET_PROCESS, + 'serializable': True, }, { 'name': 'SocketTransport', @@ -597,6 +599,7 @@ 'type': 'mozilla::net::nsStandardURL::Mutator', 'headers': ['/netwerk/base/nsStandardURL.h'], 'processes': ProcessSelector.ALLOW_IN_SOCKET_PROCESS, + 'serializable': True, }, { 'cid': '{831f8f13-7aa8-485f-b02e-77c881cc5773}', @@ -711,30 +714,35 @@ 'contract_ids': [], 'type': 'mozilla::net::nsNestedAboutURI::Mutator', 'headers': ['/netwerk/protocol/about/nsAboutProtocolHandler.h'], + 'serializable': True, }, { 'cid': '{56388dad-287b-4240-a785-85c394012503}', 'contract_ids': [], 'type': 'mozilla::net::nsSimpleNestedURI::Mutator', 'headers': ['nsSimpleNestedURI.h'], + 'serializable': True, }, { 'cid': '{9c4e9d49-ce64-4ca3-acef-3075c5e5aba7}', 'contract_ids': [], 'type': 'mozilla::net::nsSimpleNestedURI::Mutator', 'headers': ['nsSimpleNestedURI.h'], + 'serializable': True, }, { 'cid': '{b0054ef3-b096-483d-8242-4ee36b7b2115}', 'contract_ids': [], 'type': 'mozilla::net::nsNestedAboutURI::Mutator', 'headers': ['/netwerk/protocol/about/nsAboutProtocolHandler.h'], + 'serializable': True, }, { 'cid': '{b3cfeb91-332a-46c9-ad97-93ff39841494}', 'contract_ids': [], 'type': 'mozilla::net::SubstitutingURL::Mutator', 'headers': ['mozilla/net/SubstitutingURL.h'], + 'serializable': True, }, { 'cid': '{de9472d0-8034-11d3-9399-00104ba0fd40}', @@ -742,12 +750,14 @@ 'type': 'mozilla::net::nsStandardURL::Mutator', 'headers': ['/netwerk/base/nsStandardURL.h'], 'processes': ProcessSelector.ALLOW_IN_SOCKET_PROCESS, + 'serializable': True, }, { 'cid': '{dea9657c-18cf-4984-bde9-ccef5d8ab473}', 'contract_ids': [], 'type': 'mozilla::net::SubstitutingURL::Mutator', 'headers': ['mozilla/net/SubstitutingURL.h'], + 'serializable': True, }, { 'cid': '{50d50ddf-f16a-4652-8705-936b19c3763b}', @@ -755,6 +765,7 @@ 'type': 'mozilla::net::SubstitutingJARURI', 'headers': ['mozilla/net/SubstitutingJARURI.h'], 'processes': ProcessSelector.ALLOW_IN_SOCKET_PROCESS, + 'serializable': True, }, { 'cid': '{e0da1d70-2f7b-11d3-8cd0-0060b0fc14a3}', @@ -762,6 +773,7 @@ 'type': 'mozilla::net::nsSimpleURI::Mutator', 'headers': ['nsSimpleURI.h'], 'processes': ProcessSelector.ALLOW_IN_SOCKET_PROCESS, + 'serializable': True, }, { 'js_name': 'cookies', @@ -789,6 +801,7 @@ 'type': 'nsICookieJarSettings', 'constructor': 'mozilla::net::CookieJarSettings::CreateForXPCOM', 'headers': ['mozilla/net/CookieJarSettings.h'], + 'serializable': True, }, { 'cid': '{86606ba1-de17-4df4-9013-e571ab94fd94}', diff -Nru firefox-esr-140.13.0esr/netwerk/cookie/CookieServiceParent.cpp firefox-esr-140.15.0esr/netwerk/cookie/CookieServiceParent.cpp --- firefox-esr-140.13.0esr/netwerk/cookie/CookieServiceParent.cpp 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/cookie/CookieServiceParent.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -9,7 +9,9 @@ #include "mozilla/dom/ContentParent.h" #include "mozilla/net/CookieService.h" #include "mozilla/net/CookieServiceParent.h" +#include "mozilla/net/PNeckoParent.h" +#include "mozilla/BasePrincipal.h" #include "mozilla/ipc/URIUtils.h" #include "mozilla/StoragePrincipalHelper.h" #include "mozIThirdPartyUtil.h" @@ -109,10 +111,10 @@ } bool CookieServiceParent::ContentProcessHasCookie( - const nsACString& aHost, const OriginAttributes& aOriginAttributes) { + const nsACString& aBaseDomain, const OriginAttributes& aOriginAttributes) { nsCString baseDomain; if (NS_WARN_IF(NS_FAILED(CookieCommons::GetBaseDomainFromHost( - mTLDService, aHost, baseDomain)))) { + mTLDService, aBaseDomain, baseDomain)))) { return false; } @@ -274,10 +276,26 @@ return IPC_FAIL(this, "aHost must not be null"); } - // we append outgoing cookie info into a list here so the ContentParent can - // filter cookies that do not need to go to certain ContentProcesses + auto* contentParent = static_cast(Manager()->Manager()); + if (!contentParent) { + return IPC_FAIL(this, "Missing ContentParent in GetCookieList"); + } + + // Reads are non-mutating, and GetCookieList requests can race content + // process teardown, so a failed authorization fails closed (no cookies are + // served or registered for that principal) rather than killing the process. + nsTArray authorizedAttrsList; for (const auto& attrs : aAttrsList) { + nsCOMPtr principal = + BasePrincipal::CreateContentPrincipal(aHost, attrs); + if (!contentParent->ValidatePrincipal(principal)) { + continue; + } + + // Register the key so the parent can filter proactive cookie pushes to + // this content process. UpdateCookieInContentList(aHost, attrs); + authorizedAttrsList.AppendElement(attrs); } nsTArray> foundCookieList; @@ -288,7 +306,8 @@ aHost, nullptr, aIsForeign, aIsThirdPartyTrackingResource, aIsThirdPartySocialTrackingResource, aStorageAccessPermissionGranted, aRejectedReason, aIsSafeTopLevelNav, aIsSameSiteForeign, - aHadCrossSiteRedirects, false, true, aAttrsList, foundCookieList); + aHadCrossSiteRedirects, false, true, authorizedAttrsList, + foundCookieList); nsTArray matchingCookiesListTable; SerializeCookieListTable(foundCookieList, matchingCookiesListTable, aHost); @@ -307,7 +326,18 @@ const nsCString& aBaseDomain, const OriginAttributes& aOriginAttributes, nsIURI* aHost, bool aFromHttp, bool aIsThirdParty, const nsTArray& aCookies) { - if (!ContentProcessHasCookie(aBaseDomain, aOriginAttributes)) { + if (!aHost) { + return IPC_FAIL(this, "aHost must not be null"); + } + + // Authorize the write if the process has already loaded this cookie key, or + // could legitimately load this principal. The latter covers documents with no + // channel registration (e.g. file://), which never populate the key set. + auto* contentParent = static_cast(Manager()->Manager()); + nsCOMPtr principal = + BasePrincipal::CreateContentPrincipal(aHost, aOriginAttributes); + if (!ContentProcessHasCookie(aBaseDomain, aOriginAttributes) && + !(contentParent && contentParent->ValidatePrincipal(principal))) { return IPC_FAIL(this, "Invalid set-cookie request from content process"); } diff -Nru firefox-esr-140.13.0esr/netwerk/cookie/CookieServiceParent.h firefox-esr-140.15.0esr/netwerk/cookie/CookieServiceParent.h --- firefox-esr-140.13.0esr/netwerk/cookie/CookieServiceParent.h 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/cookie/CookieServiceParent.h 2026-08-26 17:03:48.000000000 +0000 @@ -51,7 +51,7 @@ bool ProcessingCookie() { return mProcessingCookie; } bool ContentProcessHasCookie(const Cookie& cookie); - bool ContentProcessHasCookie(const nsACString& aHost, + bool ContentProcessHasCookie(const nsACString& aBaseDomain, const OriginAttributes& aOriginAttributes); bool InsecureCookieOrSecureOrigin(const Cookie& cookie); void UpdateCookieInContentList(nsIURI* aHostURI, diff -Nru firefox-esr-140.13.0esr/netwerk/dns/effective_tld_names.dat firefox-esr-140.15.0esr/netwerk/dns/effective_tld_names.dat --- firefox-esr-140.13.0esr/netwerk/dns/effective_tld_names.dat 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/dns/effective_tld_names.dat 2026-08-26 17:03:47.000000000 +0000 @@ -5,8 +5,8 @@ // Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat, // rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported. -// VERSION: 2026-07-09_11-59-23_UTC -// COMMIT: b9a86cf0cd115f1e60b5815533f3fcfd2f9e8f4b +// VERSION: 2026-08-19_19-18-48_UTC +// COMMIT: e8c9a2b2b2856b6449999dd0ec0d118f364ed0cd // Instructions on pulling and using this list can be found at https://publicsuffix.org/list/. @@ -1176,12 +1176,16 @@ // Confirmed by registry 2024-11-20 ge com.ge +cyb.ge edu.ge gov.ge +llc.ge net.ge +online.ge org.ge pvt.ge school.ge +tnx.ge // gf : https://www.iana.org/domains/root/db/gf.html gf @@ -1464,11 +1468,14 @@ // Please note, that nic.in is not an official eTLD, but used by most // government institutions. // Confirmed by Gaurav Kansal 2025-11-06 +// Added aero.in, alumni.in, school.in and ub.in by Gaurav Kansal 2026-06-25 in 5g.in 6g.in ac.in +aero.in ai.in +alumni.in am.in bank.in bihar.in @@ -1503,8 +1510,10 @@ post.in pro.in res.in +school.in travel.in tv.in +ub.in uk.in up.in us.in @@ -1622,7 +1631,6 @@ trentin-südtirol.it trentin-sued-tirol.it trentin-suedtirol.it -trentino.it trentino-a-adige.it trentino-aadige.it trentino-alto-adige.it @@ -1643,7 +1651,6 @@ trentinostirol.it trentinosud-tirol.it trentinosüd-tirol.it -trentinosudtirol.it trentinosüdtirol.it trentinosued-tirol.it trentinosuedtirol.it @@ -1659,7 +1666,6 @@ val-d-aosta.it val-daosta.it vald-aosta.it -valdaosta.it valle-aosta.it valle-d-aosta.it valle-daosta.it @@ -1696,7 +1702,6 @@ aoste.it ap.it aq.it -aquila.it ar.it arezzo.it ascoli-piceno.it @@ -1920,6 +1925,9 @@ sp.it sr.it ss.it +su.it +sud-sardegna.it +sudsardegna.it südtirol.it suedtirol.it sv.it @@ -1940,6 +1948,7 @@ traniandriabarletta.it tranibarlettaandria.it trapani.it +trentino.it trento.it treviso.it trieste.it @@ -1958,6 +1967,7 @@ venezia.it venice.it verbania.it +verbano-cusio-ossola.it vercelli.it verona.it vi.it @@ -4336,14 +4346,18 @@ fhs.no folkebibl.no fylkesbibl.no +gielda.no +herad.no idrett.no +kommune.no museum.no priv.no +suohkan.no +tjielte.no +uenorge.no vgs.no // Norid category second-level domains managed by parties other than Norid : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-d/ dep.no -herad.no -kommune.no mil.no stat.no // Norid geographical second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-b/ @@ -4484,7 +4498,7 @@ askvoll.no asnes.no åsnes.no -audnedaln.no +audnedal.no aukra.no aure.no aurland.no @@ -4595,7 +4609,6 @@ fosnes.no fræna.no frana.no -frei.no frogn.no froland.no frosta.no @@ -4646,6 +4659,7 @@ halsa.no hamar.no hamaroy.no +hamarøy.no hammarfeasta.no hámmárfeasta.no hammerfest.no @@ -4700,6 +4714,7 @@ kárášjohka.no karasjok.no karlsoy.no +karlsøy.no karmoy.no karmøy.no kautokeino.no @@ -4888,6 +4903,7 @@ rana.no randaberg.no rauma.no +re.no rendalen.no rennebu.no rennesoy.no @@ -5045,6 +5061,7 @@ tysvar.no ullensaker.no ullensvang.no +ulstein.no ulvik.no unjarga.no unjárga.no @@ -5800,7 +5817,6 @@ // tj : http://www.nic.tj/policy.html tj -ac.tj biz.tj co.tj com.tj @@ -6822,7 +6838,7 @@ // newGTLDs -// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2026-06-13T16:12:40Z +// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2026-07-24T16:40:16Z // This list is auto-generated, don't edit it manually. // aaa : American Automobile Association, Inc. // https://www.iana.org/domains/root/db/aaa.html @@ -8888,7 +8904,7 @@ // https://www.iana.org/domains/root/db/kuokgroup.html kuokgroup -// kyoto : Academic Institution: Kyoto Jyoho Gakuen +// kyoto : Academic Institution: The University of Informatics // https://www.iana.org/domains/root/db/kyoto.html kyoto @@ -10716,6 +10732,10 @@ // https://www.iana.org/domains/root/db/weatherchannel.html weatherchannel +// web : VeriSign, Inc. +// https://www.iana.org/domains/root/db/web.html +web + // webcam : dot Webcam Limited // https://www.iana.org/domains/root/db/webcam.html webcam @@ -11284,18 +11304,10 @@ a2hosted.com cpserver.com -// Acorn Labs : https://acorn.io -// Submitted by Craig Jellick -*.on-acorn.io - // ActiveTrail : https://www.activetrail.biz/ // Submitted by Ofer Kalaora activetrail.biz -// Adaptable.io : https://adaptable.io -// Submitted by Mark Terrel -adaptable.app - // addr.tools : https://addr.tools/ // Submitted by Brian Shea myaddr.dev @@ -11335,7 +11347,7 @@ // Aiven : https://aiven.io/ // Submitted by Aiven Security Team aiven.app -aivencloud.com +*.aivencloud.com // Akamai : https://www.akamai.com/ // Submitted by Akamai Team @@ -12345,6 +12357,12 @@ // Anthropic : https://www.anthropic.com/ // Submitted by Sid Bidasaria claude.app +claudeusercontent.com +frame.claudeusercontent.com + +// Anysphere Inc : https://cursor.com +// Submitted by Benson Liu +*.cursorusercontent.com // Apigee : https://apigee.com/ // Submitted by Apigee Security Team @@ -12561,12 +12579,6 @@ // Submitted by Klara Mall *.bwcloud-os-instance.de -// Bytemark Hosting : https://www.bytemark.co.uk -// Submitted by Paul Cammish -uk0.bigv.io -dh.bytemark.co.uk -vm.bytemark.co.uk - // Caf.js Labs LLC : https://www.cafjs.com // Submitted by Antonio Lain cafjs.com @@ -12761,6 +12773,11 @@ // Submitted by Moritz Marquardt codeberg.page +// CodePen : https://codepen.io +// Submitted by Stephen Shaw +codepen.app +codepen.dev + // CodeSandbox B.V. : https://codesandbox.io // Submitted by Ives van Hoorne csb.app @@ -12826,10 +12843,6 @@ // Submitted by Ales Krajnik realm.cz -// Cryptonomic : https://cryptonomic.net/ -// Submitted by Andrew Cady -*.cryptonomic.net - // cyber_Folks S.A. : https://cyberfolks.pl // Submitted by Bartlomiej Kida cfolks.pl @@ -12912,11 +12925,6 @@ // Submitted by Peter Thomassen dedyn.io -// Deta : https://www.deta.sh/ -// Submitted by Aavash Shrestha -deta.app -deta.dev - // Deuxfleurs : https://deuxfleurs.fr // Submitted by Aeddis Desauw deuxfleurs.eu @@ -13496,10 +13504,6 @@ staging.expo.app on.staging.expo.app -// Fabrica Technologies, Inc. : https://www.fabrica.dev/ -// Submitted by Eric Jiang -onfabrica.com - // fachschaften.org: https://fachschaften.org/ // Submitted by Felix Schäfer fspages.org @@ -14029,6 +14033,10 @@ hercules-app.com hercules-dev.com +// here.now : https://here.now/ +// Submitted by Adam Ludwin +here.now + // Heroku : https://www.heroku.com/ // Submitted by Shumon Huque herokuapp.com @@ -14209,7 +14217,8 @@ // IONOS SE : https://www.ionos.com/ // IONOS Group SE : https://www.ionos-group.com/ -// Submitted by Henrik Willert +// Submitted by Anton Mehlmann +online-server.cloud apps-1and1.com live-website.com webspace-host.com @@ -14231,6 +14240,12 @@ // Submitted by Matthew Hardeman ipifony.net +// IPv64.net : https://ipv64.net/ +// Submitted by Dennis Schröder +home64.de +ipv64.de +ipv64.net + // ir.md : https://nic.ir.md // Submitted by Ali Soizi ir.md @@ -15202,6 +15217,10 @@ *.platformsh.site *.tst.site +// Playcode : https://playcode.io +// Submitted by Ruslan Ianberdin +playcode.site + // Pley AB : https://www.pley.com/ // Submitted by Henning Pohl pley.games @@ -15246,10 +15265,6 @@ // Submitted by yumenewa dev.project-study.com -// Protonet GmbH : http://protonet.io -// Submitted by Martin Meier -protonet.io - // PSL Sandbox : https://github.com/groundcat/PSL-Sandbox // Submitted by groundcat platter-app.dev @@ -15431,10 +15446,6 @@ resindevice.io devices.resinstaging.io -// RethinkDB : https://www.rethinkdb.com/ -// Submitted by Chris Kastorff -hzc.io - // Rico Developments Limited : https://adimo.co // Submitted by Colin Brown adimo.co.uk @@ -15630,15 +15641,19 @@ scalebook.scw.cloud smartlabeling.scw.cloud dedibox.fr +scw.site +ams.scw.site +waw.scw.site // schokokeks.org GbR : https://schokokeks.org/ // Submitted by Hanno Böck schokokeks.net // Scottish Government : https://www.gov.scot -// Submitted by Martin Ellis +// Submitted by Martin Ellis gov.scot service.gov.scot +mygov.scot // Scry Security : http://www.scrysec.com // Submitted by Shante Adam @@ -15856,10 +15871,6 @@ musician.io novecore.site -// Standard Library : https://stdlib.com -// Submitted by Jacob Lee -api.stdlib.com - // statichost.eu : https://www.statichost.eu // Submitted by Eric Selin statichost.page @@ -15886,10 +15897,6 @@ // Submitted by Tony Schirmer storebase.store -// Storj Labs Inc. : https://storj.io/ -// Submitted by Philip Hutchins -storj.farm - // Strapi : https://strapi.io/ // Submitted by Florent Baldino strapiapp.com @@ -16275,9 +16282,9 @@ // William Harrison : https://wharrison.com.au // Submitted by William Harrison -vps.hrsn.au hrsn.dev is-a.dev +vps.hrsn.net localcert.net // Windsurf : https://windsurf.com diff -Nru firefox-esr-140.13.0esr/netwerk/ipc/DocumentLoadListener.cpp firefox-esr-140.15.0esr/netwerk/ipc/DocumentLoadListener.cpp --- firefox-esr-140.13.0esr/netwerk/ipc/DocumentLoadListener.cpp 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/ipc/DocumentLoadListener.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -49,6 +49,7 @@ #include "nsExternalHelperAppService.h" #include "nsHttpChannel.h" #include "nsIBrowser.h" +#include "nsIContentPolicy.h" #include "nsIHttpChannelInternal.h" #include "nsIStreamConverterService.h" #include "nsIViewSourceChannel.h" @@ -644,6 +645,9 @@ if (!uriEq(snapshot->GetURI(), aLoadState->URI())) { return Err("URI"); } + if (!uriEq(snapshot->GetUnstrippedURI(), aLoadState->GetUnstrippedURI())) { + return Err("UnstrippedURI"); + } if (!uriEq(snapshot->GetOriginalURI(), aLoadState->OriginalURI())) { return Err("OriginalURI"); } @@ -652,9 +656,15 @@ aLoadState->ResultPrincipalURI())) { return Err("ResultPrincipalURI"); } - if (!uriEq(snapshot->GetUnstrippedURI(), aLoadState->GetUnstrippedURI())) { - return Err("UnstrippedURI"); + if (!uriEq(snapshot->GetBaseURI(), aLoadState->BaseURI())) { + return Err("BaseURI"); } + + if (snapshot->GetSrcdocData().valueOr(VoidString()) != + aLoadState->SrcdocData()) { + return Err("SrcdocData"); + } + if (!principalEq(snapshot->GetTriggeringPrincipal(), aLoadState->TriggeringPrincipal())) { return Err("TriggeringPrincipal"); @@ -753,7 +763,9 @@ if (aLoadState->GetRemoteTypeOverride()) { if (!mIsDocumentLoad || !NS_IsAboutBlank(aLoadState->URI()) || - !loadingContext->IsTopContent()) { + !loadingContext->IsTopContent() || + aLoadState->GetEffectiveTriggeringRemoteType() != NOT_REMOTE_TYPE || + aLoadState->LoadIsFromSessionHistory()) { LOG( ("DocumentLoadListener::Open with invalid remoteTypeOverride " "[this=%p]", @@ -1088,6 +1100,15 @@ MOZ_ASSERT(!mIsDocumentLoad); + // The content policy type is child-controlled; object loads must only + // ever claim to be object or embed loads, as the parent bases + // type-keyed security decisions (cookies, third-party status) on it. + if (aContentPolicyType != nsIContentPolicy::TYPE_INTERNAL_OBJECT && + aContentPolicyType != nsIContentPolicy::TYPE_INTERNAL_EMBED) { + *aRv = NS_ERROR_UNEXPECTED; + return nullptr; + } + auto sandboxFlags = aLoadState->TriggeringSandboxFlags(); RefPtr loadInfo = CreateObjectLoadInfo( diff -Nru firefox-esr-140.13.0esr/netwerk/ipc/NeckoParent.cpp firefox-esr-140.15.0esr/netwerk/ipc/NeckoParent.cpp --- firefox-esr-140.13.0esr/netwerk/ipc/NeckoParent.cpp 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/ipc/NeckoParent.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -36,6 +36,7 @@ #include "mozilla/dom/ContentParent.h" #include "mozilla/dom/BrowserParent.h" #include "mozilla/dom/MaybeDiscarded.h" +#include "mozilla/dom/WindowGlobalParent.h" #include "mozilla/dom/network/TCPSocketParent.h" #include "mozilla/dom/network/TCPServerSocketParent.h" #include "mozilla/dom/network/UDPSocketParent.h" @@ -284,6 +285,22 @@ return c.forget().take(); } +mozilla::ipc::IPCResult NeckoParent::RecvPWebSocketEventListenerConstructor( + PWebSocketEventListenerParent* aActor, const uint64_t& aInnerWindowID) { + RefPtr wgp = + dom::WindowGlobalParent::GetByInnerWindowId(aInnerWindowID); + if (wgp && wgp->GetContentParent() == ContentParent::Cast(Manager())) { + return IPC_OK(); + } + + if (wgp) { + return IPC_FAIL(this, "Invalid aInnerWindowID"); + } + + (void)PWebSocketEventListenerParent::Send__delete__(aActor); + return IPC_OK(); +} + bool NeckoParent::DeallocPWebSocketEventListenerParent( PWebSocketEventListenerParent* aActor) { RefPtr c = @@ -693,6 +710,13 @@ return IPC_FAIL(this, "Wrong process type"); } + nsCOMPtr loadInfo; + nsresult rv = mozilla::ipc::LoadInfoArgsToLoadInfo( + aLoadInfoArgs, PRIVILEGEDABOUT_REMOTE_TYPE, getter_AddRefs(loadInfo)); + if (NS_FAILED(rv)) { + return IPC_FAIL(this, "moz-page-thumb request must include loadInfo"); + } + RefPtr ph(PageThumbProtocolHandler::GetSingleton()); MOZ_ASSERT(ph); @@ -704,7 +728,7 @@ // validating the request. nsCOMPtr inputStream; bool terminateSender = true; - auto inputStreamPromise = ph->NewStream(aURI, &terminateSender); + auto inputStreamPromise = ph->NewStream(aURI, loadInfo, &terminateSender); if (terminateSender) { return IPC_FAIL(this, "Malformed moz-page-thumb request"); diff -Nru firefox-esr-140.13.0esr/netwerk/ipc/NeckoParent.h firefox-esr-140.15.0esr/netwerk/ipc/NeckoParent.h --- firefox-esr-140.13.0esr/netwerk/ipc/NeckoParent.h 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/ipc/NeckoParent.h 2026-08-26 17:03:48.000000000 +0000 @@ -134,6 +134,9 @@ const nsIDNSService::DNSFlags& flags, const nsresult& reason); PWebSocketEventListenerParent* AllocPWebSocketEventListenerParent( const uint64_t& aInnerWindowID); + virtual mozilla::ipc::IPCResult RecvPWebSocketEventListenerConstructor( + PWebSocketEventListenerParent* aActor, + const uint64_t& aInnerWindowID) override; bool DeallocPWebSocketEventListenerParent(PWebSocketEventListenerParent*); already_AddRefed AllocPDataChannelParent( diff -Nru firefox-esr-140.13.0esr/netwerk/protocol/about/nsAboutProtocolHandler.cpp firefox-esr-140.15.0esr/netwerk/protocol/about/nsAboutProtocolHandler.cpp --- firefox-esr-140.13.0esr/netwerk/protocol/about/nsAboutProtocolHandler.cpp 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/protocol/about/nsAboutProtocolHandler.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -391,6 +391,29 @@ return true; } +bool nsNestedAboutURI::IsValidInnerURI(nsIURI* aInnerURI) { + if (!Scheme().EqualsLiteral("about")) { + return false; + } + + if (!IsSafeToLinkForUntrustedContent(this)) { + return false; + } + + nsAutoCString expectedSpec; + if (NS_FAILED(GetPathQueryRef(expectedSpec))) { + return false; + } + expectedSpec.InsertLiteral("moz-safe-about:", 0); + + nsAutoCString innerSpec; + if (NS_FAILED(aInnerURI->GetAsciiSpec(innerSpec))) { + return false; + } + + return innerSpec == expectedSpec; +} + // nsSimpleURI /* virtual */ already_AddRefed nsNestedAboutURI::StartClone() { NS_ENSURE_TRUE(mInnerURI, nullptr); diff -Nru firefox-esr-140.13.0esr/netwerk/protocol/about/nsAboutProtocolHandler.h firefox-esr-140.15.0esr/netwerk/protocol/about/nsAboutProtocolHandler.h --- firefox-esr-140.13.0esr/netwerk/protocol/about/nsAboutProtocolHandler.h 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/protocol/about/nsAboutProtocolHandler.h 2026-08-26 17:03:48.000000000 +0000 @@ -78,6 +78,7 @@ protected: nsCOMPtr mBaseURI; bool Deserialize(const mozilla::ipc::URIParams&); + bool IsValidInnerURI(nsIURI* aInnerURI) override; nsresult ReadPrivate(nsIObjectInputStream* stream); public: diff -Nru firefox-esr-140.13.0esr/netwerk/protocol/http/InterceptedHttpChannel.cpp firefox-esr-140.15.0esr/netwerk/protocol/http/InterceptedHttpChannel.cpp --- firefox-esr-140.13.0esr/netwerk/protocol/http/InterceptedHttpChannel.cpp 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/protocol/http/InterceptedHttpChannel.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -923,6 +923,10 @@ mResponseHead = std::move(mSynthesizedResponseHead); + if (mLoadInfo->GetTainting() == LoadTainting::Opaque) { + StoreAllRedirectsSameOriginIgnoringInternal(false); + } + if (ShouldRedirect()) { rv = FollowSyntheticRedirect(); NS_ENSURE_SUCCESS(rv, rv); diff -Nru firefox-esr-140.13.0esr/netwerk/protocol/http/SpeculativeTransaction.cpp firefox-esr-140.15.0esr/netwerk/protocol/http/SpeculativeTransaction.cpp --- firefox-esr-140.13.0esr/netwerk/protocol/http/SpeculativeTransaction.cpp 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/protocol/http/SpeculativeTransaction.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -91,16 +91,17 @@ if (aReason == NS_BASE_STREAM_CLOSED) { aReason = NS_OK; } - if (mCloseCallback) { - mCloseCallback(mTriedToWrite && NS_SUCCEEDED(aReason)); - mCloseCallback = nullptr; + std::function callback = std::move(mCloseCallback); + if (callback) { + callback(mTriedToWrite && NS_SUCCEEDED(aReason)); } } void SpeculativeTransaction::InvokeCallback() { - if (mCloseCallback) { - mCloseCallback(true); - mCloseCallback = nullptr; + MOZ_ASSERT(OnSocketThread(), "not on socket thread"); + std::function callback = std::move(mCloseCallback); + if (callback) { + callback(true); } } diff -Nru firefox-esr-140.13.0esr/netwerk/protocol/res/PageThumbProtocolHandler.cpp firefox-esr-140.15.0esr/netwerk/protocol/res/PageThumbProtocolHandler.cpp --- firefox-esr-140.13.0esr/netwerk/protocol/res/PageThumbProtocolHandler.cpp 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/protocol/res/PageThumbProtocolHandler.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -75,7 +75,7 @@ : SubstitutingProtocolHandler(PAGE_THUMB_SCHEME) {} RefPtr PageThumbProtocolHandler::NewStream( - nsIURI* aChildURI, bool* aTerminateSender) { + nsIURI* aChildURI, nsILoadInfo* aLoadInfo, bool* aTerminateSender) { MOZ_ASSERT(!IsNeckoChild()); MOZ_ASSERT(NS_IsMainThread()); @@ -97,6 +97,11 @@ __func__); } + if (!nsContentUtils::IsImageType(aLoadInfo->GetExternalContentPolicyType())) { + return RemoteStreamPromise::CreateAndReject(NS_ERROR_CONTENT_BLOCKED, + __func__); + } + // We should never receive a URI that does not have "thumbnails" as the host. nsAutoCString host; if (NS_FAILED(aChildURI->GetAsciiHost(host)) || @@ -249,6 +254,10 @@ nsresult PageThumbProtocolHandler::SubstituteChannel(nsIURI* aURI, nsILoadInfo* aLoadInfo, nsIChannel** aRetVal) { + if (!nsContentUtils::IsImageType(aLoadInfo->GetExternalContentPolicyType())) { + return NS_ERROR_CONTENT_BLOCKED; + } + // Check if URI resolves to a file URI. nsAutoCString resolvedSpec; MOZ_TRY(ResolveURI(aURI, resolvedSpec)); diff -Nru firefox-esr-140.13.0esr/netwerk/protocol/res/PageThumbProtocolHandler.h firefox-esr-140.15.0esr/netwerk/protocol/res/PageThumbProtocolHandler.h --- firefox-esr-140.13.0esr/netwerk/protocol/res/PageThumbProtocolHandler.h 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/protocol/res/PageThumbProtocolHandler.h 2026-08-26 17:03:48.000000000 +0000 @@ -33,6 +33,7 @@ * given thumbnail. * * @param aChildURI a moz-page-thumb URI sent from the child. + * @param aLoadInfo the loadinfo send from the child. * @param aTerminateSender out param set to true when the params are invalid * and indicate the child should be terminated. If |aChildURI| is * not a moz-page-thumb URI, the child is in an invalid state and @@ -43,6 +44,7 @@ * success, and reject with an nsresult on failure. */ RefPtr NewStream(nsIURI* aChildURI, + nsILoadInfo* aLoadInfo, bool* aTerminateSender); protected: diff -Nru firefox-esr-140.13.0esr/netwerk/protocol/websocket/WebSocketChannelChild.cpp firefox-esr-140.15.0esr/netwerk/protocol/websocket/WebSocketChannelChild.cpp --- firefox-esr-140.13.0esr/netwerk/protocol/websocket/WebSocketChannelChild.cpp 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/protocol/websocket/WebSocketChannelChild.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -28,13 +28,31 @@ NS_IMPL_ADDREF(WebSocketChannelChild) NS_IMETHODIMP_(MozExternalRefCountType) WebSocketChannelChild::Release() { + if (!NS_IsMainThread()) { + auto [ok, count] = mRefCnt.DecrementWithLimit<2>(); + if (ok) { + NS_LOG_RELEASE(this, count, "WebSocketChannelChild"); + return count; + } + nsresult rv = NS_DispatchToMainThread( + NewNonOwningRunnableMethod("WebSocketChannelChild::Release", this, + &WebSocketChannelChild::Release)); + if (NS_SUCCEEDED(rv)) { + return count; + } + // Dispatch failed (event loop is shutting down). Crash rather than run + // main-thread-only logic off-thread. + MOZ_CRASH("Failed to dispatch WebSocketChannelChild::Release to main"); + return count; + } + MOZ_ASSERT(0 != mRefCnt, "dup release"); nsrefcnt count = --mRefCnt; - NS_LOG_RELEASE(this, mRefCnt, "WebSocketChannelChild"); + NS_LOG_RELEASE(this, count, "WebSocketChannelChild"); if (count == 1) { MaybeReleaseIPCObject(); - return mRefCnt; + return 1; } if (count == 0) { @@ -96,14 +114,7 @@ } void WebSocketChannelChild::MaybeReleaseIPCObject() { - if (!NS_IsMainThread()) { - nsCOMPtr target = GetNeckoTarget(); - MOZ_ALWAYS_SUCCEEDS(target->Dispatch( - NewRunnableMethod("WebSocketChannelChild::MaybeReleaseIPCObject", this, - &WebSocketChannelChild::MaybeReleaseIPCObject), - NS_DISPATCH_NORMAL)); - return; - } + MOZ_ASSERT(NS_IsMainThread()); { MutexAutoLock lock(mMutex); diff -Nru firefox-esr-140.13.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp firefox-esr-140.15.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp --- firefox-esr-140.13.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp 2026-08-26 17:03:49.000000000 +0000 @@ -714,6 +714,20 @@ mStopRequestCalled = true; } + // Notify the listener before activating queued streams: OnSessionReady + // retargets event delivery to the socket thread, so activating streams only + // afterwards keeps their OnStopSending/OnResetReceived events off the main + // thread and out of a race with the retarget. + if (listener) { + if (succeeded) { + listener->OnSessionReady(sessionId); + } else { + listener->OnSessionClosed(false, closeStatus, + reason); // TODO: find a better error. + // Currently error code 0 is used. + } + } + if (!pendingCreateStreamEvents.IsEmpty()) { Unused << gSocketTransportService->Dispatch(NS_NewRunnableFunction( "WebTransportSessionProxy::DispatchPendingCreateStreamEvents", @@ -725,23 +739,14 @@ })); } // otherwise let the CreateStreams just go away - if (listener) { - if (succeeded) { - listener->OnSessionReady(sessionId); - if (!pendingEvents.IsEmpty()) { - Unused << gSocketTransportService->Dispatch(NS_NewRunnableFunction( - "WebTransportSessionProxy::DispatchPendingEvents", - [pendingEvents = std::move(pendingEvents)]() { - for (const auto& event : pendingEvents) { - event(); - } - })); - } - } else { - listener->OnSessionClosed(false, closeStatus, - reason); // TODO: find a better error. - // Currently error code 0 is used. - } + if (listener && succeeded && !pendingEvents.IsEmpty()) { + Unused << gSocketTransportService->Dispatch(NS_NewRunnableFunction( + "WebTransportSessionProxy::DispatchPendingEvents", + [pendingEvents = std::move(pendingEvents)]() { + for (const auto& event : pendingEvents) { + event(); + } + })); } return NS_OK; } @@ -1228,11 +1233,18 @@ NS_IMETHODIMP WebTransportSessionProxy::OnStopSending(uint64_t aStreamId, nsresult aError) { - MOZ_ASSERT(OnSocketThread()); nsCOMPtr listener; { MutexAutoLock lock(mMutex); - MOZ_ASSERT(mTarget->IsOnCurrentThread()); + if (!mTarget->IsOnCurrentThread()) { + // mTarget changed (RetargetTo) after this call was scheduled; forward to + // the current target so the listener is only ever invoked on one thread. + return mTarget->Dispatch(NS_NewRunnableFunction( + "WebTransportSessionProxy::OnStopSending", + [self = RefPtr{this}, aStreamId, aError] { + self->OnStopSending(aStreamId, aError); + })); + } if (mState != WebTransportSessionProxyState::ACTIVE || !mListener) { return NS_OK; @@ -1246,11 +1258,18 @@ NS_IMETHODIMP WebTransportSessionProxy::OnResetReceived(uint64_t aStreamId, nsresult aError) { - MOZ_ASSERT(OnSocketThread()); nsCOMPtr listener; { MutexAutoLock lock(mMutex); - MOZ_ASSERT(mTarget->IsOnCurrentThread()); + if (!mTarget->IsOnCurrentThread()) { + // mTarget changed (RetargetTo) after this call was scheduled; forward to + // the current target so the listener is only ever invoked on one thread. + return mTarget->Dispatch(NS_NewRunnableFunction( + "WebTransportSessionProxy::OnResetReceived", + [self = RefPtr{this}, aStreamId, aError] { + self->OnResetReceived(aStreamId, aError); + })); + } if (mState != WebTransportSessionProxyState::ACTIVE || !mListener) { return NS_OK; diff -Nru firefox-esr-140.13.0esr/python/mozbuild/mozbuild/mach_commands.py firefox-esr-140.15.0esr/python/mozbuild/mozbuild/mach_commands.py --- firefox-esr-140.13.0esr/python/mozbuild/mozbuild/mach_commands.py 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/python/mozbuild/mozbuild/mach_commands.py 2026-08-26 17:03:49.000000000 +0000 @@ -2541,6 +2541,12 @@ required=True, help="The product being shipped. Used to disambiguate beta/devedition etc.", ) +@CommandArgument( + "--extensions-dir", + type=str, + required=True, + help="Path to extensions.", +) def repackage_deb_l10n( command_context, input_xpi_file, @@ -2550,6 +2556,7 @@ build_number, templates, release_product, + extensions_dir, ): for input_file in (input_xpi_file, input_tar_file): if not os.path.exists(input_file): @@ -2571,6 +2578,7 @@ version, build_number, release_product, + extensions_dir, ) diff -Nru firefox-esr-140.13.0esr/python/mozbuild/mozbuild/repackaging/deb.py firefox-esr-140.15.0esr/python/mozbuild/mozbuild/repackaging/deb.py --- firefox-esr-140.13.0esr/python/mozbuild/mozbuild/repackaging/deb.py 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/python/mozbuild/mozbuild/repackaging/deb.py 2026-08-26 17:03:48.000000000 +0000 @@ -148,6 +148,7 @@ version, build_number, release_product, + extensions_dir, ): arch = "all" @@ -155,7 +156,7 @@ source_dir = os.path.join(tmpdir, "source") try: langpack_metadata = _extract_langpack_metadata(input_xpi_file) - langpack_dir = mozpath.join(source_dir, "firefox", "distribution", "extensions") + langpack_dir = mozpath.join(source_dir, extensions_dir) application_ini_data = _load_application_ini_data( input_tar_file, version, build_number ) diff -Nru firefox-esr-140.13.0esr/security/ct/CTKnownLogs.h firefox-esr-140.15.0esr/security/ct/CTKnownLogs.h --- firefox-esr-140.13.0esr/security/ct/CTKnownLogs.h 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/security/ct/CTKnownLogs.h 2026-08-26 17:03:48.000000000 +0000 @@ -14,7 +14,7 @@ #include -static const PRTime kCTExpirationTime = INT64_C(1789977094000000); +static const PRTime kCTExpirationTime = INT64_C(1793614817000000); namespace mozilla::ct { @@ -307,16 +307,6 @@ "\xa3\x4f\x6b\xa3\x37\xdd\xaa\x18\xde\x8a\x12\x25\xdb\x9c\xbd\x03\x72\x61" "\xc9", 91}, - {"Let's Encrypt 'Oak2026h1'", CTLogState::Retired, CTLogFormat::RFC6962, - 1772236800000, // 2026-02-28T00:00:00Z - 4, // operated by Let's Encrypt - "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" - "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x99\xd4\x61\x70\x22\xfa\x77\x93\x0d" - "\xb3\xc7\x80\x96\x22\x51\xbf\x25\x79\xb1\x01\x42\xe9\x41\x7b\x8b\x0c\xc7" - "\xb2\x65\x5a\x89\xf4\xfa\xe2\x02\x46\xd4\x8a\xc7\xcc\x10\x07\x11\x27\x45" - "\x48\x90\x23\x40\xde\x7a\x4d\x89\x32\xfb\xd7\x0a\xeb\x5e\x8c\xa2\xf1\xf6" - "\x49", - 91}, {"Let's Encrypt 'Oak2026h2'", CTLogState::Retired, CTLogFormat::RFC6962, 1772236800000, // 2026-02-28T00:00:00Z 4, // operated by Let's Encrypt diff -Nru firefox-esr-140.13.0esr/security/manager/ssl/StaticHPKPins.h firefox-esr-140.15.0esr/security/manager/ssl/StaticHPKPins.h --- firefox-esr-140.13.0esr/security/manager/ssl/StaticHPKPins.h 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/security/manager/ssl/StaticHPKPins.h 2026-08-26 17:03:49.000000000 +0000 @@ -87,10 +87,6 @@ static const char kGOOGLE_PIN_WE4_GoogleTrustServicesFingerprint[] = "O5TQDB/wa4SkRjBrQL2Aq9CG317H9MDDgpTVcrpJDa4="; -/* GOOGLE_PIN_WE5_GoogleTrustServices */ -static const char kGOOGLE_PIN_WE5_GoogleTrustServicesFingerprint[] = - "8yZxLgpR8EbO8ANRrWKAzIzz9XdlSUgtYPkXKYUlGSY="; - /* GOOGLE_PIN_WR1_GoogleTrustServices */ static const char kGOOGLE_PIN_WR1_GoogleTrustServicesFingerprint[] = "yDu9og255NN5GEf+Bwa9rTrqFQ0EydZ0r1FCh9TdAW4="; @@ -107,10 +103,6 @@ static const char kGOOGLE_PIN_WR4_GoogleTrustServicesFingerprint[] = "hZe1OerqJ1Pnq6F4N0gVjjpHqm037Ndf4aLLVpZZdAE="; -/* GOOGLE_PIN_WR5_GoogleTrustServices */ -static const char kGOOGLE_PIN_WR5_GoogleTrustServicesFingerprint[] = - "/RoweMyX8j8/fAaaeAIwzhWXigZDrh/J2BBJaHrjX90="; - /* GTS Root R1 */ static const char kGTS_Root_R1Fingerprint[] = "hxqRlPTu1bMS/0DITB1SSu0vd4u/8l8TjPgfaAp63Gc="; @@ -256,15 +248,11 @@ }; static const char* const kPinset_google_Data[] = { - kGOOGLE_PIN_WR5_GoogleTrustServicesFingerprint, - kGOOGLE_PIN_WE5_GoogleTrustServicesFingerprint, kGlobalSign_ECC_Root_CA___R4Fingerprint, kGOOGLE_PIN_AE1_GoogleTrustServicesFingerprint, kGoogleBackup2048Fingerprint, kGOOGLE_PIN_WE4_GoogleTrustServicesFingerprint, kGOOGLE_PIN_WR3_GoogleTrustServicesFingerprint, - kGTS_Root_R3Fingerprint, - kGTS_Root_R2Fingerprint, kGOOGLE_PIN_WR2_GoogleTrustServicesFingerprint, kGOOGLE_PIN_WE3_GoogleTrustServicesFingerprint, kGOOGLE_PIN_WR4_GoogleTrustServicesFingerprint, @@ -353,6 +341,7 @@ { "g4w.co", true, false, false, -1, &kPinset_google_root_pems }, { "ggpht.com", true, false, false, -1, &kPinset_google_root_pems }, { "glass.google.com", true, false, false, -1, &kPinset_google_root_pems }, + { "gmail.co.ug", true, false, false, -1, &kPinset_google_root_pems }, { "gmail.com", false, false, false, -1, &kPinset_google_root_pems }, { "goo.gl", true, false, false, -1, &kPinset_google_root_pems }, { "google", true, false, false, -1, &kPinset_google_root_pems }, @@ -576,6 +565,7 @@ { "google.to", true, false, false, -1, &kPinset_google_root_pems }, { "google.tt", true, false, false, -1, &kPinset_google_root_pems }, { "google.ua", true, false, false, -1, &kPinset_google_root_pems }, + { "google.ug", true, false, false, -1, &kPinset_google_root_pems }, { "google.us", true, false, false, -1, &kPinset_google_root_pems }, { "google.uz", true, false, false, -1, &kPinset_google_root_pems }, { "google.vg", true, false, false, -1, &kPinset_google_root_pems }, @@ -673,12 +663,14 @@ { "xn--7xa.google.com", true, false, false, -1, &kPinset_google_root_pems }, { "youtu.be", true, false, false, -1, &kPinset_google_root_pems }, { "youtube-nocookie.com", true, false, false, -1, &kPinset_google_root_pems }, + { "youtube.co.ug", true, false, false, -1, &kPinset_google_root_pems }, { "youtube.com", true, false, false, -1, &kPinset_google_root_pems }, + { "youtube.ug", true, false, false, -1, &kPinset_google_root_pems }, { "ytimg.com", true, false, false, -1, &kPinset_google_root_pems }, }; -// Pinning Preload List Length = 383; +// Pinning Preload List Length = 387; static const int32_t kUnknownId = -1; -static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1792396267857000); +static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1796033986383000); diff -Nru firefox-esr-140.13.0esr/security/manager/ssl/components.conf firefox-esr-140.15.0esr/security/manager/ssl/components.conf --- firefox-esr-140.13.0esr/security/manager/ssl/components.conf 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/security/manager/ssl/components.conf 2026-08-26 17:03:48.000000000 +0000 @@ -54,6 +54,7 @@ 'contract_ids': [], 'type': 'nsNSSCertificate', 'headers': ['nsNSSCertificate.h'], + 'serializable': True, }, { 'name': 'NSSCertificateDB', diff -Nru firefox-esr-140.13.0esr/security/manager/ssl/nsSTSPreloadList.inc firefox-esr-140.15.0esr/security/manager/ssl/nsSTSPreloadList.inc --- firefox-esr-140.13.0esr/security/manager/ssl/nsSTSPreloadList.inc 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/security/manager/ssl/nsSTSPreloadList.inc 2026-08-26 17:03:49.000000000 +0000 @@ -8,7 +8,7 @@ /*****************************************************************************/ #include -const PRTime gPreloadListExpirationTime = INT64_C(1794815463377000); +const PRTime gPreloadListExpirationTime = INT64_C(1798453181290000); %% 0--1.de, 1 0-0.io, 1 @@ -16,6 +16,7 @@ 0-1.party, 1 0-24.com, 1 0-24.net, 1 +0-9.com, 1 0-nuisibles.fr, 1 0.com.ms, 1 0.sb, 1 @@ -54,15 +55,14 @@ 0037552.com, 1 003dyw.com, 1 0047552.com, 1 +00484.com, 1 005184.xyz, 1 0057552.com, 1 0066.in, 1 0067552.com, 1 -007kf.com, 0 008007.xyz, 1 0087552.com, 1 00880088.net, 1 -008yingshi.com, 1 0097552.com, 1 009zl.com, 1 00b58.com, 1 @@ -107,6 +107,7 @@ 02365t.com, 1 025500.xyz, 1 02638.net, 1 +027snw.cn, 1 02n.cn, 1 02smh.com, 1 03-09-2016.wedding, 1 @@ -168,18 +169,16 @@ 068552.com, 0 06d88.com, 1 06d88.net, 1 -06se.com, 0 070709.net, 1 071552.com, 0 -071615.com, 1 0737399.com, 1 078663.com, 1 -078895.com, 1 0788yh.com, 1 0798rcw.com, 0 07d88.com, 1 07d88.net, 1 07f.de, 1 +07ii07ii07.com, 1 0800-horoscope.com, 1 08000113.nl, 1 0800829988.com, 1 @@ -207,7 +206,6 @@ 09000113.nl, 1 0906-clan.tk, 1 09115.com, 0 -0935792342.tw, 1 09365t.com, 1 095598.cc, 1 09892.net, 1 @@ -235,6 +233,7 @@ 0ii0.eu.org, 1 0iq.moe, 1 0iz.net, 1 +0km.top, 1 0knowledge.de, 1 0l.de, 1 0lt.de, 1 @@ -303,9 +302,11 @@ 0xee.eu, 1 0xf00.ch, 1 0xfc.de, 1 +0xffff00.de, 1 0xfn.eu, 1 0xheuts.nl, 1 0xinsider.com, 1 +0xio32.dedyn.io, 1 0xn.de, 1 0xnotes.me, 1 0xnull.de, 1 @@ -348,11 +349,13 @@ 1001iq.com, 1 1001kartini.com, 1 1001mv.com, 1 +1001n.com, 1 1001reasonstolearnspanish.com, 1 1001telecommandes.com, 1 1007337.com, 0 10086.id, 1 10086.ru, 1 +100asa.it, 1 100baksov.tk, 1 100ballov.tk, 1 100bib.ru, 1 @@ -360,6 +363,8 @@ 100cgi.com, 1 100kraz.ga, 1 100pay.com, 1 +100plus.co, 1 +100plus.co.in, 1 100plus.com.my, 1 100plus.com.sg, 1 100plus.sg, 1 @@ -367,6 +372,7 @@ 100pluspro.com, 1 100pour100print.com, 1 100pudov.tk, 1 +100reach.com, 1 100refer.tk, 1 100sapog.tk, 1 100skidok.ga, 1 @@ -450,6 +456,7 @@ 10sou.eu, 1 10thmagnitude.com, 0 10thstreetcapital.com, 1 +10ustech.com, 1 10ve.live, 1 10web.io, 1 10wtac.tk, 1 @@ -524,6 +531,7 @@ 11333837.com, 1 113k8.com, 0 113z6.com, 1 +11400.com, 1 11443837.com, 0 114514911.xyz, 1 114514ss.com, 1 @@ -684,7 +692,6 @@ 123apps.com, 1 123birthdaygreetings.com, 1 123cs.fr, 1 -123derivatives.com, 1 123e.tk, 1 123freevectors.com, 1 123gostovanje.si, 1 @@ -692,7 +699,6 @@ 123host.au, 1 123hpcom.co.uk, 1 123live.nl, 1 -123midterm.com, 1 123nutricion.es, 1 123pay.ir, 1 123seo.ml, 1 @@ -708,6 +714,7 @@ 1244.tk, 1 1244546066.rsc.cdn77.org, 1 125-rue.com, 1 +12517.com, 1 125c.cn, 1 125colours.tk, 1 125m125.de, 1 @@ -745,6 +752,7 @@ 133335.xyz, 1 1333z6.com, 1 1337.ax, 1 +1337.tn, 1 133769.xyz, 1 1337ersprime.com, 1 1339.co, 1 @@ -782,6 +790,7 @@ 14ercooper.com, 1 14fbr.com, 1 14flags.de, 1 +14grams.com, 1 14it.de, 1 14u15.com, 1 14x3.de, 1 @@ -847,7 +856,7 @@ 156z6.com, 1 157z6.com, 1 158.nl, 1 -158bg.com, 1 +158bg.com, 0 1590284872.rsc.cdn77.org, 1 159ks.net, 1 15montorgueil.com, 1 @@ -1020,7 +1029,6 @@ 174.net.nz, 1 174343.com, 1 175.pt, 1 -175dt.com, 1 177milkstreet.com, 1 17dbz.org, 1 17experience.com.br, 1 @@ -1033,6 +1041,7 @@ 1800.co, 1 1800baskets.com, 1 1800flowers.com, 1 +1800geek.com, 1 1800matress.net, 1 1800mattress.co, 1 1800mattress.net, 1 @@ -1057,7 +1066,6 @@ 18andover.ru, 1 18f.gov, 1 18f.gsa.gov, 1 -18kit.com, 1 18pee.com, 1 18pioners.tk, 1 18teensporn.pro, 1 @@ -1081,7 +1089,6 @@ 1941-45.ru, 1 1965.ml, 1 196flavors.com, 1 -1975chs.com, 1 19770620.xyz, 1 1981365.com, 1 1981612088.rsc.cdn77.org, 1 @@ -1154,6 +1161,7 @@ 1baks.tk, 1 1bar.net, 1 1bha7uk0.com, 1 +1bk.in, 1 1blazing.cf, 1 1bps.eu.org, 1 1bps.io, 1 @@ -1166,7 +1174,6 @@ 1choicegaragedoor.com, 1 1claw.xyz, 1 1click2gobank.com, 1 -1coast.com.au, 1 1codex.online, 1 1corsa.ru, 1 1cover.co.nz, 1 @@ -1181,8 +1188,6 @@ 1dollar.ml, 1 1dollarwebsite.gq, 1 1dot1dot1dot1.cf, 1 -1dp.com, 1 -1dv.link, 1 1e9.nl, 1 1eanda.com, 1 1er-secours.ch, 0 @@ -1304,7 +1309,6 @@ 1x.tech, 0 1x1.re, 1 1x2020.xyz, 1 -1x2betwinner.com, 1 1x4.com.au, 1 1x88.net, 1 1xaja.com, 1 @@ -1328,7 +1332,6 @@ 1xbet.cm, 1 1xbet.co.ke, 1 1xbet.co.ls, 1 -1xbet.co.mu, 1 1xbet.co.rw, 1 1xbet.co.zw, 1 1xbet.com, 1 @@ -1349,26 +1352,20 @@ 1xbet.gm, 1 1xbet.go.ug, 1 1xbet.gq, 1 -1xbet.gs, 1 1xbet.gt, 1 1xbet.gw, 1 1xbet.hk, 1 1xbet.hn, 1 1xbet.ht, 1 1xbet.in, 1 -1xbet.ke, 1 -1xbet.kz, 1 1xbet.lat, 1 1xbet.mg, 1 1xbet.mq, 1 1xbet.mw, 1 1xbet.na, 1 -1xbet.ne.ug, 1 -1xbet.net.za, 1 1xbet.ng, 1 1xbet.nu, 1 1xbet.org.mw, 1 -1xbet.org.na, 1 1xbet.ph, 1 1xbet.pk, 1 1xbet.pn, 1 @@ -1376,7 +1373,6 @@ 1xbet.rw, 1 1xbet.sb, 1 1xbet.sc, 1 -1xbet.sc.ug, 1 1xbet.sh, 1 1xbet.sl, 1 1xbet.sn, 1 @@ -1492,15 +1488,6 @@ 2022.dog, 0 20220228.xyz, 1 2022class1.ga, 1 -2024-1.com, 0 -2024-2.com, 0 -2024-3.com, 0 -2024-4.com, 0 -2024-5.com, 0 -2024-6.com, 0 -2024-7.com, 0 -2024-8.com, 0 -2024-9.com, 0 2026.com.ar, 1 2030404.com, 1 2030411.com, 1 @@ -1541,7 +1528,6 @@ 21bit9.com, 1 21financial.com, 1 21gou.com, 1 -21kampus.com, 1 21lab.co, 1 21nurse.com, 1 21pet.com, 1 @@ -1556,7 +1542,6 @@ 22-bets.org, 1 22007apply.gov, 1 220220.de, 1 -22052010.xyz, 1 220control.ru, 1 2211.cf, 1 22168365.com, 1 @@ -1568,7 +1553,6 @@ 223742.com, 1 225225.jp, 1 2255motion.com, 1 -225950.com, 1 2264707.ru, 1 2277bet.com, 1 228668.com, 1 @@ -1741,12 +1725,12 @@ 25refer.tk, 1 25reinyan25.net, 1 26-30railcard.co.uk, 1 -260034.xyz, 1 2600edinburgh.org, 1 2600hq.com, 1 2600qatar.com, 1 2601.de, 1 262569.com, 1 +263mail.com, 1 269196.com, 1 2698pacificave.com, 1 26sannam3.site, 1 @@ -1770,7 +1754,6 @@ 288cn-563.com, 1 28spots.net, 1 291167.xyz, 1 -293685.com, 1 2948.ca, 1 297computers.com, 1 298.school, 1 @@ -1789,7 +1772,7 @@ 2bitout.com, 1 2blazing.cf, 1 2brothersrenovations.net, 1 -2btv.eu.org, 1 +2btv.eu.org, 0 2bu2t.online, 1 2bu2t.ru, 1 2buldzha2t.ru, 1 @@ -1820,7 +1803,6 @@ 2fm.ie, 1 2fm.radio, 1 2fraud.pro, 1 -2free.com, 1 2fusion.com, 1 2g1s.net, 1 2gen.com, 1 @@ -1888,6 +1870,7 @@ 3007337.com, 1 300jjjj.com, 1 300m.com, 1 +301.moe, 1 301.one, 0 301.technology, 1 301routes.com, 1 @@ -1900,6 +1883,7 @@ 30deagosto.tk, 1 30for30podcasts.com, 1 30hb.cn, 1 +30minut.com, 1 30nama1.tk, 1 30parkplace.co.uk, 1 30region.tk, 1 @@ -1922,7 +1906,6 @@ 317877777.com, 0 3178888888.com, 1 317899999.com, 0 -3178b.com, 0 3178ppp.com, 0 3178qqq.com, 0 3178rrr.com, 0 @@ -1945,13 +1928,10 @@ 323kkk.com, 1 324533.com, 0 325fss.marketing, 1 -326243.com, 1 -32bit.com.tr, 1 +32bit.com.tr, 0 32h.de, 1 -32kk.edu.ee, 1 33-couvreur.fr, 1 33-km.ru, 1 -33132.com, 1 33138app.com, 0 33168365.com, 1 331977.com, 0 @@ -2023,6 +2003,7 @@ 360china.com, 1 360cycling.com.br, 1 360degreecloud.com, 1 +360dental.com, 1 360e-commerce.net, 1 360ecogroup.com, 0 360ecommerce.net, 1 @@ -2241,7 +2222,6 @@ 3d-animator.net, 1 3d-fotoshpalery.com.ua, 1 3d-glow.de, 1 -3d-station.fr, 1 3dadvance.fr, 1 3dall.ro, 1 3danimation.tk, 1 @@ -2249,7 +2229,6 @@ 3darchprevision.com, 1 3dbox.ba, 1 3dc9.jp, 1 -3dcollective.es, 1 3dcreatelab.de, 1 3dd365.com, 1 3degreedesign.co.uk, 1 @@ -2260,8 +2239,7 @@ 3dgep.com, 1 3dincites.com, 1 3dissue.com, 1 -3djake.de, 1 -3djake.uk, 1 +3djapan.com, 1 3djava.ml, 1 3dlab.team, 1 3dm.audio, 1 @@ -2402,9 +2380,11 @@ 4000milestare.com, 1 40010monogatari.com, 1 4005365.com, 1 +400market.com, 1 400yaahc.gov, 1 401ksecure.com, 1 401ksite.com, 1 +401xd.com, 1 4025360.com, 1 4025361.com, 1 4025362.com, 1 @@ -2478,7 +2458,6 @@ 439050.com, 1 43klive.com, 1 43rddems.org, 1 -44-k.com, 1 44.in.ua, 1 44168365.com, 1 443.one, 0 @@ -2533,8 +2512,8 @@ 487511.com, 1 488333.xyz, 1 48coin.cf, 1 -48d88.com, 0 48lipetsk.tk, 1 +48tech.com, 1 48times.online, 1 490.jp, 1 491.jp, 1 @@ -2542,7 +2521,6 @@ 492977.com, 0 49889.com, 1 49948522.com, 1 -499ks.net, 1 49ko.com, 0 4ads.de, 1 4anc.net, 1 @@ -2580,7 +2558,6 @@ 4fit.ro, 1 4flex.com.br, 1 4flex.info, 1 -4freeprintable.com, 1 4fund.com, 1 4g-server.eu, 0 4game.my.id, 1 @@ -2635,6 +2612,7 @@ 4share.tv, 1 4sjnc.org, 1 4smart.house, 1 +4soft-it.de, 1 4sun.cf, 1 4surfers.co.il, 1 4t.pw, 1 @@ -2649,6 +2627,7 @@ 4ventavis.com, 1 4vf.de, 1 4vio.com, 1 +4voip.ru, 1 4web-hosting.com, 1 4wrd.cc, 1 4x4-27mc.nl, 1 @@ -2759,19 +2738,19 @@ 5197z.co, 1 5197zz.co, 1 519magazine.ca, 1 -51acg.eu.org, 1 +51acg.eu.org, 0 51aifuli.com, 1 51cls.tw, 1 51club8.com, 1 51daxue.com, 1 +51dazhe.com, 1 51evar.com, 1 51fishing.com, 1 51fss.marketing, 1 -51lavanderiaindustrial.com.br, 1 +51life.com, 1 51nullacht.de, 1 51pic.com, 1 51pig.com, 1 -51resume.com, 1 51senluo.com, 1 51space.com, 1 51talk.ph, 1 @@ -2825,7 +2804,6 @@ 52kb365.com, 0 52ncp.net, 1 52pojie.cn, 1 -52share.com, 1 52sykb.com, 0 52xuanmi.com, 0 52yahuan.com, 1 @@ -2847,6 +2825,7 @@ 5518k3.com, 1 5533445.com, 1 55365t.com, 1 +555.in.th, 1 5557552.com, 1 555zlong.com, 1 556185.com, 1 @@ -2857,7 +2836,6 @@ 56011s.com, 0 5611.cf, 1 5611bet.com, 1 -5633bet.com, 1 56365t.com, 1 5663.cc, 1 5663.co, 1 @@ -2876,7 +2854,6 @@ 5795887.com, 1 580strategies.com, 1 588e.com, 1 -589174.com, 1 589team.com, 1 592227.com, 0 594795.com, 1 @@ -2967,9 +2944,8 @@ 5net.ga, 1 5ososea.com, 1 5peciali5t.tk, 1 -5penazi.sk, 1 5percentperweek.com, 1 -5play.life, 1 +5play.life, 0 5sjsa.com, 1 5snb.club, 1 5sporn.com, 1 @@ -2994,6 +2970,7 @@ 6-bros.com, 1 6-d.cc, 1 6.vu, 1 +60-sekunden-cyber.de, 1 603plus.com, 1 604windswell.ca, 1 6060fm.tk, 1 @@ -3029,7 +3006,6 @@ 633663.net, 1 633663.vip, 1 635-988.com, 1 -636051.com, 1 6396000.com, 1 63960000.com, 1 639611111.com, 0 @@ -3365,6 +3341,7 @@ 721172.com, 0 7214.cc, 1 722201.com, 0 +724online.com, 1 725741.com, 1 7261696e626f77.net, 1 727sss.com, 1 @@ -3372,7 +3349,6 @@ 737478.xyz, 1 73k.us, 1 740424.ml, 1 -740660.com, 1 740cashbuyers.com, 1 74365365.com, 1 7444.cf, 1 @@ -3433,6 +3409,7 @@ 77909i.com, 0 77b58.com, 1 77bet86.com, 1 +77online.com, 1 78.to, 1 78365b.com, 0 783lab.com, 1 @@ -3441,7 +3418,7 @@ 7888815.com, 1 788zzz.com, 1 7891553.com, 1 -7891997.com, 1 +7891997.com, 0 789365t.com, 1 793703.com, 1 795sss.com, 1 @@ -3487,7 +3464,6 @@ 7ovz.ru, 1 7pf.cz, 1 7plus.com.au, 1 -7press.com, 1 7proxies.com, 1 7qly.com, 1 7sdre.am, 1 @@ -3509,7 +3485,6 @@ 800999.xyz, 1 800email.com, 1 800ink.com, 1 -800live.com, 1 800mattress.com, 1 800perkins.com, 1 800sports.com, 1 @@ -3571,7 +3546,6 @@ 8183d88.com, 1 8186d.com, 1 818bwf.com, 1 -819323.com, 1 8193d.com, 1 8193d88.com, 1 8197d88.com, 1 @@ -3592,7 +3566,7 @@ 8222d88.com, 1 8225.com, 1 8226d.com, 1 -8228d.com, 1 +8228d.com, 0 8229d88.com, 1 82365f.com, 1 82365g.com, 1 @@ -3635,12 +3609,12 @@ 834365.com, 1 8349822.com, 1 83ir2k8b.duckdns.org, 1 +84000.com, 1 84036.ml, 1 842844.com, 1 8444.cf, 1 846773.com, 1 848jz.com, 1 -848sf.com, 1 84ag.com, 1 84aj.com, 1 84an.com, 1 @@ -3697,6 +3671,7 @@ 8522top.com, 1 8522tw.com, 1 8522usa.com, 1 +853114.com, 1 8602010.com, 1 863479.com, 1 8649955.com, 1 @@ -3761,7 +3736,6 @@ 88740w.com, 1 88740x.com, 1 88740z.com, 1 -887d.com, 0 8884553.com, 1 8885asknick.com, 1 8885ks.com, 1 @@ -3792,6 +3766,7 @@ 889w889.com, 1 889w889.net, 1 88acesmaritime.com, 1 +88bill.com, 1 88cakescorner.com, 1 88djl.cc, 1 88home9.com, 1 @@ -3819,7 +3794,6 @@ 89386l.com, 1 8938885.com, 1 893fm.com.au, 1 -894324.com, 1 8989k3.com, 1 899ks.com, 1 8ack.de, 1 @@ -3828,22 +3802,18 @@ 8balls.nl, 0 8bb.org, 1 8bit.ltd, 1 -8bitpickle.com, 1 8bitsafe.com, 1 8cent.com, 1 8crafty.com, 1 8daysaweek.tk, 1 8duhu.com, 1 8e8z.com, 1 -8fit.com, 1 8freeporn.com, 1 -8gaming.net, 1 8gerd.tk, 1 8hrs.net, 1 8i3m2a67.com, 1 8i8.fr, 1 8l.com.au, 1 -8maerz.at, 1 8me.nl, 1 8n.pw, 1 8shequapp.com, 1 @@ -3956,10 +3926,9 @@ 9098.cf, 1 90daydiet.org, 1 90daysales.com, 1 +90minut.com, 1 90r.jp, 1 -90splease.com, 1 91-av.com, 1 -91-cg.com, 1 91-short.com, 1 91-ss.com, 1 9100.cf, 1 @@ -3972,7 +3941,6 @@ 9104.cf, 1 9105.cf, 1 9106.cf, 1 -910635.com, 1 9107.cf, 1 9108.cf, 1 9109.cf, 1 @@ -4028,7 +3996,6 @@ 9160.cf, 1 9161.cf, 1 9162.cf, 1 -916294.com, 1 9164.cf, 1 9165.cf, 1 9166.cf, 1 @@ -4070,7 +4037,6 @@ 918bbm.co, 1 918bcf.co, 1 918bcw.co, 1 -918bio.co, 0 918bip.co, 1 918bis.co, 1 918dc04.com, 1 @@ -4299,10 +4265,10 @@ 9395.cf, 1 9396.cf, 1 9397.cf, 1 -9397a.com, 1 +9397a.com, 0 9397b.com, 1 -9397c.com, 1 -9397e.com, 1 +9397c.com, 0 +9397e.com, 0 9397hb.com, 1 9397hd.com, 1 9397i.com, 1 @@ -4329,7 +4295,6 @@ 9444.cf, 1 9449-27a1-22a1-e0d9-4237-dd99-e75e-ac85-2f47-9d34.de, 1 947cq.com, 1 -9499565.com, 0 9499737.com, 1 9499yl.com, 1 95-the-mix.com, 1 @@ -4386,6 +4351,7 @@ 9552.cf, 1 9553.cf, 1 9554.cf, 1 +95544.com, 1 95558.com, 1 95559.com, 1 9556.cf, 1 @@ -4414,12 +4380,12 @@ 9578.cf, 1 9579.cf, 1 9580.cf, 1 +95808.com, 1 9581.cf, 1 9582.cf, 1 9584.cf, 1 9585.cf, 1 9586.cf, 1 -95868457.xyz, 1 9587.cf, 1 9590.cf, 1 9591.cf, 1 @@ -4452,8 +4418,10 @@ 9617.cf, 1 9617818.net, 1 9618.cf, 1 +96181.com, 1 9619.cf, 1 9620.cf, 1 +96200.com, 1 9621.cf, 1 9622.cf, 1 96220.com, 1 @@ -4466,8 +4434,12 @@ 9629.cf, 1 9630.cf, 1 9631.cf, 1 +96316.com, 1 9632.cf, 1 9633.cf, 1 +96448.com, 1 +96577.com, 1 +96605.com, 1 9666ks.com, 1 96685.com, 1 966ty.com, 1 @@ -4727,12 +4699,11 @@ 99999822.com, 1 999998722.com, 1 999999999.pl, 1 -999btt.net, 1 999family.com, 0 999salon.co, 1 999zlong.com, 1 99buffets.com, 1 -99dog.com, 1 +99byinna.pk, 1 99furnitureideasandtips.gq, 1 99furnitureideasexamples.ga, 1 99lib.net, 1 @@ -4747,9 +4718,11 @@ 9baka.top, 1 9bet86.com, 1 9ccn.top, 1 +9d.fi, 1 9ection.com, 1 9elements.com, 0 9face.com, 1 +9fruit.com, 1 9fvip.net, 1 9gag.com, 1 9hosts.net, 1 @@ -4843,6 +4816,7 @@ 9tailedkitsune.com, 1 9tnine.net, 1 9to5linux.com, 1 +9to5windows.com, 1 9uelle.jp, 0 9ungnir.xyz, 1 9vx.org, 1 @@ -4854,16 +4828,14 @@ a-1waterproofing.com, 1 a-air.com.ua, 1 a-allard.be, 0 +a-b.ee, 1 a-bio.com, 1 -a-busty.com, 1 a-design.be, 1 a-gokan.com, 1 a-h-p.de, 1 -a-hitoduma.com, 1 a-lexx.de, 1 a-little-linux-box.at, 1 a-louest.info, 1 -a-moe.com, 1 a-oben.org, 1 a-players.team, 1 a-raven.corsica, 1 @@ -4891,6 +4863,7 @@ a11ybadges.com, 1 a11ywatch.com, 1 a13x.uk, 1 +a14r.co, 1 a16z.com, 1 a1billgibsonseptictankservice.com, 1 a1bouncycastlehire.com, 1 @@ -5007,10 +4980,12 @@ aaltocapital.de, 1 aaltocapital.fi, 1 aam-solutions.com, 1 +aam.ie, 1 aama.tk, 1 aamlive.com, 1 aamt.es, 1 aan-shop.co.il, 1 +aan.vn, 1 aandachtsmeditatie.nl, 1 aandkevents.co.uk, 1 aandrpestsolutions.com, 1 @@ -5065,7 +5040,6 @@ aarvinproperties.com, 1 aarwer.com, 1 aarwer.jp, 1 -aasdepot.com, 1 aaskolnick.com, 1 aasumitro.id, 1 aasvets.co.uk, 1 @@ -5081,7 +5055,6 @@ aave.com, 1 aavgo.com, 1 aavienna.com, 1 -aayamresorts.com, 1 aayan.com, 1 aaystash.com, 1 aaz-taxi.com, 1 @@ -5108,7 +5081,6 @@ abacustech.jp, 1 abacustech.net, 1 abacustech.org, 1 -abadie-architecture.com, 1 abaev.uk, 1 abaf.eus, 1 abag.nu, 1 @@ -5143,7 +5115,7 @@ abbevillecountysc.gov, 1 abbeyvetspets.co.uk, 1 abbl.com, 1 -abbotkinneys.com, 1 +abbotlichfieldlodge.org, 1 abbottscastles.co.uk, 1 abbreviated-adult-course.com, 1 abbuc.de, 1 @@ -5182,7 +5154,6 @@ abcode.ml, 1 abcofnebraska.com, 1 abconsultoria.com.br, 1 -abcorporate-aviation.com, 1 abcpartyhire.com, 1 abcprodutosvirtuais.com.br, 1 abcrcm.com, 1 @@ -5196,6 +5167,7 @@ abdelali.tk, 1 abdelalidev.ml, 1 abdelaliezzyn.tk, 1 +abdelalim.com, 1 abdelsater.net, 1 abdened.tk, 1 abdenterprises.com, 1 @@ -5249,9 +5221,11 @@ aber.travel, 1 aberdeenalmeras.com, 1 aberdeencriticalmass.tk, 1 +abergermany.de, 1 aberon.pl, 1 aberrantvascular.tk, 1 aberte.com, 1 +abetrans.com, 1 abettercreditunion.com, 1 abetterdeath.com, 1 abetterwichita.org, 1 @@ -5266,6 +5240,7 @@ abhayaranya.com, 1 abhibridelectric.ro, 1 abhijit.today, 1 +abhijitb.com, 1 abhijitvalluri.com, 1 abhisharma.me, 1 abhishekkabdijain.tk, 1 @@ -5285,7 +5260,7 @@ abiedu.com, 1 abierta.cr, 1 abigailfriedland.com, 1 -abigailstark.com, 1 +abigailstark.com, 0 abigisp.com, 1 abigruppe.de, 1 abileneef.org, 1 @@ -5304,7 +5279,6 @@ abion-bg.com, 1 abioticscience.fr, 1 abipolitseinik.ee, 1 -abirmas.com, 1 abitaspringsla.gov, 1 abitech.tk, 1 abitextra.eu, 1 @@ -5315,6 +5289,7 @@ abivert-piscines.fr, 1 abk.com.tr, 1 abkhazianews.tk, 1 +ablauf.com, 1 ablebits.com, 1 ablecha.tk, 1 ablehorsehandlers.au, 1 @@ -5338,6 +5313,7 @@ abmackenzie.com, 1 abmarketx.com, 1 abmc.gov, 1 +abmelden.com, 1 abminv.com, 1 abmledger.ca, 1 abn-consultants.ie, 1 @@ -5370,7 +5346,6 @@ abolitionistproject.com, 1 abolitionistsociety.com, 1 abolitionofspeciesism.tk, 1 -abona24.de, 1 abonegma.com, 1 abonegmacarrent.com, 1 abonemnet.tk, 1 @@ -5385,7 +5360,6 @@ aboundworlds.com, 1 about-bangladesh.tk, 1 about-e-bags.tk, 1 -about-it.pl, 1 about-jewelry.tk, 1 about-sects-and-cults.tk, 1 about.gq, 1 @@ -5460,12 +5434,11 @@ abpages.com, 1 abpis.hr, 1 abplive.com, 1 -abpoolsub.com, 0 +abpoolsub.com, 1 abqbiotechincubator.com, 1 abr.ru, 1 abracadabramagicas.com.br, 1 abrah.am, 1 -abraham-automation.de, 1 abrahamasfaw.com, 1 abrahamboray.tk, 1 abrahametalero.tk, 1 @@ -5511,7 +5484,6 @@ absoluteblack.cc, 1 absolutebritney.com, 1 absolutechristmas.com, 1 -absolutedouble.co.uk, 1 absolutegames.ga, 1 absoluteloveadoptions.com, 1 absolutepondcare.com, 1 @@ -5561,7 +5533,6 @@ aby-action.com, 1 abys.se, 1 abysra.com, 1 -abyss.moe, 1 abysse.tk, 1 abyssinian.ga, 1 abysswebsite.tk, 1 @@ -5726,7 +5697,6 @@ accpl.co, 1 accreditamento.net, 1 accreditedbuildingservices.com, 1 -accrue401k.com, 1 accsaber.com, 1 accslot.com, 1 accstrading.com, 1 @@ -5734,7 +5704,7 @@ accudemia.net, 1 accueil-paysan.com, 1 accueillons.org, 1 -acculedger.com.au, 0 +acculedger.com.au, 1 acculongrange.com, 1 accumulus.org, 1 accurateinfosolutions.in, 1 @@ -5784,7 +5754,6 @@ acemadeira.pt, 1 acemsa.ga, 1 acemypaper.com, 1 -acendas.com, 0 acendealuz.com.br, 1 aceofdiamondspainting.com, 1 aceofheartsgiftbaskets.com, 1 @@ -5798,6 +5767,7 @@ acesaware.org, 1 acesdenver.com, 0 aceshop702.com, 1 +acessaagro.com.br, 1 acetaiavaleri.it, 1 acetudy.com, 1 acevalar.ru, 1 @@ -5813,6 +5783,7 @@ acgc.nl, 1 acgpiano.club, 1 acgqwq.gq, 1 +acgs.ai, 1 acgtalktw.com, 1 acgxi.tk, 1 ach-portal.com, 1 @@ -5864,6 +5835,7 @@ acidtool.com, 1 acierto.com, 1 aciku.com, 1 +acilallen.com.au, 1 acilasevic.com.au, 1 acilicraft.cn, 1 acina.fr, 1 @@ -5916,6 +5888,7 @@ acornli.com, 1 acornmetal.com.au, 1 acorny.io, 1 +acortalink.com.ar, 1 acosta.group, 1 acotadecalle.tk, 1 acotec.com.my, 1 @@ -5941,7 +5914,6 @@ acquari.roma.it, 1 acquario.genova.it, 1 acquasuisse.tk, 1 -acquire.co.nz, 1 acquirebpo.com, 1 acquireoil.com, 1 acquisition.gov, 1 @@ -5976,13 +5948,12 @@ acrylicwifi.com, 1 acs-armoured-cars.com, 1 acs-nettoyage-entretien-immeuble.com, 1 -acs2devapi.azurewebsites.net, 1 acsbbs.org, 1 acsc.gov.au, 1 acsd-az.gov, 1 acse.net, 1 acsemb.org, 1 -acsense.com, 1 +acsense.com, 0 acsiresearch.com, 0 acslogco.com, 1 acsmuhendislik.com.tr, 1 @@ -6092,7 +6063,7 @@ actovis.com.au, 0 actransit.gov, 1 actrices.tk, 1 -actris.ac.cy, 1 +actris.ac.cy, 0 actro.ga, 1 actro.gq, 1 actronx.tk, 1 @@ -6108,7 +6079,6 @@ actuallykabouters.com, 1 actualno.com, 1 actualprogressivevotersguide.com, 1 -actualseomedia.com, 1 actualsizemusic.tk, 1 actualtechnoshamanism.net, 1 actumeridien.com, 1 @@ -6154,7 +6124,6 @@ acvan.net, 1 acvarii.com, 1 acvilnius.tk, 1 -acwcerts.co.uk, 1 acwdca.gov, 1 acwi.gov, 1 acworth-ga.gov, 1 @@ -6177,6 +6146,7 @@ ada.eco, 1 ada.gov, 1 adab-mans.tk, 1 +adabstars.com, 1 adac-musikreisen.de, 1 adachi.work, 1 adacomputerscience.org, 1 @@ -6261,7 +6231,7 @@ adapti.de, 1 adaptimmune.com, 1 adaptiv.ltd, 1 -adaptive-mind.com, 1 +adaptive-mind.com, 0 adaptivecards.io, 1 adaptivecenter.net, 1 adaptiveicons.com, 1 @@ -6366,6 +6336,7 @@ adelaidefestivalsquare.com.au, 1 adelaidelaundromats.com.au, 1 adelaidescuba.com, 1 +adelaidpersonaltraining.com, 1 adelapereira.com, 1 adeldz-foot.cf, 1 adelebeals.com, 1 @@ -6431,13 +6402,13 @@ adictosdominantescdls.tk, 1 adidas-2020-spring.com, 1 adiesyndrome.tk, 1 +adieu404.com, 1 adigitalcafe.com, 1 adigolifestyle.com, 1 adiguezel-bau-gmbh.de, 1 adihomes.com, 1 adilsabri.tk, 1 adimaja.com, 1 -adimco.nl, 0 adimo.com.pl, 1 adimplere.com.br, 1 adinaporter.com, 1 @@ -6515,6 +6486,7 @@ adminresurs.tk, 1 adminrezo.fr, 1 adminsbscdev.azurewebsites.net, 1 +admintoolkit.io, 1 admirable.pro, 1 admiral-strand.dk, 1 admiralcloud.com, 1 @@ -6573,7 +6545,6 @@ adorkable.social, 1 adorned.ga, 1 adoropets.com.br, 1 -adotta.me, 1 adoucishop.fr, 1 adp.fr, 1 adphotography.pl, 1 @@ -6602,7 +6573,6 @@ adrian-riemer.tk, 1 adrian2023.com, 1 adrian2023.de, 1 -adrianadelrossi.com, 1 adrianagonzalez.tk, 1 adrianajewelry.my, 1 adrianbechtold.de, 1 @@ -6646,6 +6616,7 @@ adsense-arbitrage.com, 1 adseye.tk, 1 adsforcash.ga, 1 +adshooter.com, 1 adsintl.net, 1 adsl2meg.fr, 1 adsmarketing.tk, 1 @@ -6692,7 +6663,6 @@ adulteducation.org.uk, 1 adultgames.pro, 1 adultphotovideo.com, 1 -adulttrust.com, 1 adurra.com, 1 adutoras.com.br, 1 aduxia.net, 1 @@ -6737,7 +6707,6 @@ advancedwcanalytics.com, 1 advancedwriters.com, 1 advancematerials.com.sg, 0 -advancemoversnc.com, 1 advanceoptical.com, 1 advances.in, 1 advancetitan.com, 1 @@ -6809,7 +6778,7 @@ advertisingphonesest.ga, 1 advertisment.ga, 1 advertizer.com, 1 -advertorialeseo.eu, 1 +advertorialeseo.eu, 0 adverts.ie, 1 advery.tk, 1 advi.no, 1 @@ -6823,6 +6792,7 @@ advictedgames.com, 1 adviesfactuur.nl, 1 adviesgv.nl, 1 +advilad.ge, 1 advinans.se, 1 advinix.fr, 1 advirk.tk, 1 @@ -6866,6 +6836,7 @@ advokaty.cf, 1 advokaty.gq, 1 advpassos.com.br, 1 +advritujeph.in, 1 advtran.com, 0 adware.pl, 0 adwokat-kielce.com.pl, 1 @@ -6873,7 +6844,6 @@ adwokatkosterka.pl, 1 adwokatzdunek.pl, 1 adwork.net, 1 -adworldglobal.com, 1 adxperience.com, 1 adyatanalangit.com, 1 adygeya.cf, 1 @@ -6915,7 +6885,6 @@ aegeanmep.com, 1 aegee-academy.eu, 1 aegee-academy.org, 1 -aegee-utrecht.nl, 1 aegee.eu, 1 aegee.org, 1 aeginity.de, 1 @@ -6924,9 +6893,9 @@ aegisalarm.co.uk, 1 aegisalarm.com, 1 aegiscbc.com, 1 +aegisrunner.com, 1 aegon.hu, 0 aegrel.ee, 1 -aegrel.eu, 1 aeh5134.cc, 1 aeha.tk, 1 aehe.us, 1 @@ -6947,15 +6916,14 @@ aelia.is, 1 aelintx.com, 1 aelisya.net, 0 -aelyapi.com, 1 aenes.com, 1 aeolservice.es, 1 aeonbig.com.my, 1 aeonc.com, 1 aeonct.org, 1 aeonfoundation.my, 1 -aeonian.live, 0 aeonmall.global, 0 +aeonretail.com.my, 1 aeperocovilha.pt, 1 aeptic.org, 1 aequometer.de, 1 @@ -6964,9 +6932,9 @@ aeraulika.it, 1 aere.com, 1 aerelon.de, 1 -aerialawesome.com, 1 aerialreports.com, 1 aerialworks.ddns.net, 1 +aerik.top, 1 aerisenergy.com.br, 1 aerislabs.org, 1 aerisnetwork.com, 1 @@ -6987,7 +6955,7 @@ aeroequity.com, 1 aeroexpress.tk, 1 aerofarms.com, 1 -aerofestival.fr, 1 +aerofestival.fr, 0 aerofiler.com, 1 aeroflot.gq, 1 aeroframe.tk, 1 @@ -7041,11 +7009,9 @@ aestheticdermatologyclinic.com, 1 aestheticlounge.com.au, 1 aestheticsplus.xyz, 1 -aesthetikpiercing.de, 0 +aesthetikpiercing.de, 1 aesthetix.icu, 1 aestore.by, 1 -aestus.agency, 1 -aesvalanalys.com, 1 aetbmenuiserie.com, 1 aeterna-ufa.ru, 1 aeterna.hr, 1 @@ -7066,7 +7032,6 @@ aetusart.com, 1 aevo-vergleich.de, 1 aevpn.org, 1 -aewin.cn, 1 aextron.com, 1 aextron.de, 1 aextron.org, 1 @@ -7115,6 +7080,7 @@ afdrek.de, 1 afdrhein-erft.de, 1 afearlessventure.com, 1 +afectax.es, 1 aferaacademy.africa, 1 aferagetback.eu, 1 aff.af, 1 @@ -7179,7 +7145,6 @@ affproduct.com, 1 affrontery.com, 1 affumico.it, 1 -affusio.com, 0 affyes.link, 1 afg-team.tk, 1 afganistan.cf, 1 @@ -7249,7 +7214,6 @@ afriregister.et, 1 afriregister.sn, 1 afriset.org, 1 -afrodigital.uk, 1 afrodisiac.tk, 1 afrodita.tk, 1 afroditafirm.tk, 1 @@ -7301,7 +7265,6 @@ ag1projects.com, 1 ag388.vip, 1 ag4.app, 0 -ag518518.net, 1 ag6.pub, 1 ag6.vc, 1 ag6.vip, 1 @@ -7349,12 +7312,10 @@ agapelove.tk, 1 agar-tw.com, 1 agar.kr, 1 -agara-sofvix.com, 1 agarcat.com, 1 agargiulo.com, 1 agari-mj.com, 1 agarioforum.ga, 1 -agartashop.com, 1 agas.com, 1 agasport.nl, 0 agatajanik.de, 1 @@ -7382,7 +7343,7 @@ agefriendlyri.org, 1 agehotel.com, 1 ageless-world.tk, 1 -agelesschimney.com, 1 +agelesschimney.com, 0 agelesscitizen.com, 1 agelesscitizens.com, 1 agen62.asia, 1 @@ -7452,6 +7413,7 @@ agentfire.com, 1 agentfirewall.com, 1 agentflow.garden, 0 +agenticbotsitter.com, 1 agenticdelivery.se, 1 agenticsoftwarefactory.com, 1 agentmagic.com, 1 @@ -7506,11 +7468,11 @@ agilineering.com, 1 agilisium.com, 1 agility-westvlaanderen.tk, 1 -agilityconsulting.be, 1 agill.me, 1 agilob.net, 1 agilonomics.com, 1 agiloo.tk, 1 +agilorianos.com, 1 agilusdiagnostics.com, 1 aging.gov, 1 agingstats.gov, 1 @@ -7522,7 +7484,6 @@ agiosthomas.tk, 1 agirc-arrco.fr, 1 agirlknows.com, 1 -agk88.com, 1 agks02.com, 0 agks1.com, 1 agks116.com, 1 @@ -7540,7 +7501,7 @@ agks70.com, 1 agks71.com, 1 agks79.com, 0 -agks83.com, 1 +agks83.com, 0 agks87.com, 1 agks888.com, 0 agks9.com, 0 @@ -7573,13 +7534,12 @@ agora-verkehrswende.de, 1 agora.co.il, 1 agora.ru, 0 -agorabet.com.br, 1 agoracupom.com.br, 1 agoradanza.tk, 1 agoradesk.com, 1 agorapulse.com, 1 agoratek.fr, 1 -agoraviagem.com.br, 0 +agoraviagem.com.br, 1 agoravisitasguiadas.com, 1 agoravm.tk, 1 agorism.eu.org, 1 @@ -7620,18 +7580,17 @@ agrimet.com.br, 1 agrinous.com, 0 agrinous.com.au, 0 -agrinstands.com, 1 agripartner.fr, 0 agripick.com, 1 agrippa.tk, 1 agriresearch.tk, 1 agrish.tk, 1 agriturpiffer.com, 1 +agrival.com.au, 1 agro-54.ru, 1 agro-dom.solutions, 1 agro-ferma.tk, 1 agro-forestry.net, 1 -agro-iva.com, 1 agro-led.ru, 1 agro-parts.bg, 1 agro.gov.br, 1 @@ -7657,7 +7616,7 @@ agroland.tk, 1 agrolife.tk, 1 agromanagement.kz, 1 -agromester.md, 1 +agromester.md, 0 agromotorsburzaco.com, 1 agron.tk, 1 agronet.gov.co, 1 @@ -7671,10 +7630,10 @@ agroquimicosubeda.com, 1 agrosantos.com.br, 1 agrospan.ga, 1 -agrosuljd.com.br, 1 agroteam.tk, 1 agrotender.com.ua, 1 agrotraktor.gq, 1 +agrovirtual.pt, 1 agrowbio.com, 0 agrus-wow.tk, 1 ags.pt, 1 @@ -7695,7 +7654,7 @@ agul.tk, 1 agullo.tk, 1 aguna.ua, 1 -agung-furniture.com, 1 +agung-furniture.com, 0 agupdate.com, 1 agurskie-vodopadi.ru, 1 agusik.com.ua, 1 @@ -7740,7 +7699,6 @@ ahf.me, 1 ahg-offices.fr, 1 ahg67.fr, 1 -ahhcomfortshoes.com, 1 ahidta.gov, 1 ahiha-design.com, 1 ahiida.com, 1 @@ -7748,7 +7706,6 @@ ahityayinlari.com, 1 ahityayinlari.org, 1 ahj.no, 1 -ahl-net.com, 1 ahl.gov.au, 0 ahl.im, 1 ahlac.tk, 1 @@ -7793,6 +7750,7 @@ ahosamuel.com, 1 ahosting.net, 1 ahouansou.cz, 1 +ahqf.com, 1 ahrefs.com, 1 ahroproject.org, 1 ahrq.gov, 1 @@ -7818,12 +7776,10 @@ ai-defensesolutions.com, 1 ai-frb.com, 1 ai-genit.com, 1 -ai-kyousei.com, 1 ai-lawyer.co.il, 1 ai-pacs.com, 1 ai-practitioners.com, 1 ai-soft.co.jp, 1 -ai.co.nl, 1 ai.futbol, 1 ai.gov, 1 ai.gov.ae, 1 @@ -7831,6 +7787,7 @@ ai00.vip, 1 ai2-jp.com, 1 ai4all.consulting, 1 +ai4i.pl, 1 aiabs.co, 1 aiaccinu.eu.org, 1 aiag.org, 1 @@ -7867,6 +7824,7 @@ aicpastore.com, 1 aicreatorvibes.com, 1 aicredit.ro, 1 +aicsuite.com, 1 aicta.ro, 1 aidablanco.tk, 1 aidaccess.org, 1 @@ -7874,6 +7832,7 @@ aidanpr.com, 1 aidansonlinebooks.com, 1 aidco.net, 1 +aidcrypto.blog, 1 aiddevs.com, 1 aide-hebergement.ca, 1 aide-valais.ch, 1 @@ -7890,13 +7849,13 @@ aidoc.com, 1 aidoru.net, 1 aidoru.top, 1 +aidra.es, 1 aids-dissidents.tk, 1 aids.gov, 1 aids.org.hk, 1 aie.de, 1 aiesecarad.ro, 1 aievaluare.ro, 1 -aifi.or.id, 1 aifieldmanagement.com, 1 aifob.tk, 1 aifriccampbell.com, 1 @@ -7955,7 +7914,6 @@ aiminet.com, 1 aimingforacure.com, 1 aimiracle.ai, 1 -aimixglobal.com, 1 aimless.tk, 1 aimlessempire.tk, 1 aimoda.bid, 1 @@ -8011,6 +7969,7 @@ aipodcast.education, 1 aiprime.solutions, 1 aiproductivelab.com, 1 +aiprojectmanager.es, 1 aiqingli.com, 1 air-business.tk, 1 air-clan.tk, 1 @@ -8116,12 +8075,14 @@ aircrewportpages.com, 1 aircrewtrac.com, 1 airday.tk, 1 +airdeer.com, 1 airdropkings.com, 1 airductcleaninggrandprairie.com, 1 airdur.eu, 1 aireaseleaks.org, 1 airedaleterrier.com.br, 1 airensmuseum.com, 1 +aireporting.org, 1 aires-autoroute-areas.com, 1 airethilien.tk, 1 airetrac.com, 1 @@ -8285,7 +8246,6 @@ airporthotelsgatwick.com, 1 airportknoxville.com, 1 airportnz.com, 1 -airportofdubai.com, 1 airportpadova.com, 1 airportperth.com, 1 airports-paris.com, 1 @@ -8311,7 +8271,6 @@ airship.com, 1 airship.eu, 1 airsidemobile.com, 1 -airsoft.fr, 1 airsoftgrandeabc.com.br, 1 airsofthub.fr, 1 airsoftpark.cz, 1 @@ -8328,6 +8287,7 @@ airtimerewards.co.uk, 0 airtrain.gq, 1 airtrolinc.com, 1 +airtron.com, 1 airventuri.com, 1 airvida.sg, 1 airvpn.org, 1 @@ -8341,10 +8301,10 @@ aisawa22.com, 1 aiscale.fr, 1 aischannel.com, 1 -aischepervers-porn.com, 1 aischools.academy, 1 aisdent.com, 1 aisdr.com, 1 +aisecurityblueprint.com, 1 aisedomains.ga, 1 aisera.com, 1 aish.ml, 1 @@ -8368,7 +8328,6 @@ aita.global, 1 aitanaedu.org, 1 aitf-rousai.org, 1 -aithrive.com, 1 aitidings.com, 1 aitindo.com, 1 aitkincountymn.gov, 1 @@ -8384,7 +8343,6 @@ aiup.date, 1 aiutodomestico.ch, 0 aiva.ai, 1 -aiva.es, 1 aivaclaims.com, 1 aivaras.net, 1 aivd.lol, 1 @@ -8426,7 +8384,9 @@ ajaxtraining.tk, 1 ajaxworld.tk, 1 ajayangdembe.com, 1 +ajaychaudhary.eu, 1 ajbelltouch.co.uk, 1 +ajcloud.net, 1 ajdaranik.com, 1 ajedrezbolivia.tk, 1 ajetaci.cz, 1 @@ -8507,7 +8467,6 @@ akaphonelink.com, 0 akaratasker.com, 1 akari.net, 1 -akariforge.com, 0 akarisoftware.com, 1 akarisoftware.eu, 1 akaritakai.net, 1 @@ -8539,7 +8498,6 @@ akdenizecza.com.tr, 1 akdenizeczam.com, 1 akdenizim.tk, 1 -akdusekbudil.cz, 1 akeeba.com, 1 akeenext.com, 1 akeldam.tk, 1 @@ -8567,6 +8525,7 @@ akhenaten.eu, 1 akhepcat.com, 1 akhilindurti.com, 0 +akhilsudhakaran.com, 1 akhirsaa.com, 1 akhyar.id, 1 akiakira-nsn.gov, 1 @@ -8594,7 +8553,6 @@ akko.wtf, 1 akkordeon-livemusik.de, 1 akkordy-skachat.ga, 1 -akkumulator-kereso.hu, 1 akl.city, 1 aklagare.se, 1 akmatrix.org, 1 @@ -8718,7 +8676,6 @@ alabamanet.tk, 1 alabamaonlinedivorce.com, 1 alabamasoilandwater.gov, 1 -alabamatitlesearch.com, 1 alaboard.com, 1 alabordage.fr, 1 alabuena.com, 1 @@ -8731,6 +8688,8 @@ aladdin.ie, 1 aladdinschools.appspot.com, 1 aladintechnologies.tk, 1 +aladlyhub.com, 1 +alahlypharos.com, 1 alaiabelize.com, 1 alain-webcreator.cf, 1 alainfrancois.eu, 0 @@ -8804,10 +8763,8 @@ alaskafolkarts.tk, 1 alaskajewelry.com, 1 alaskanmalamute.tk, 1 -alaskatitlesearch.com, 1 alastaircoombs.com, 1 alastairs-place.net, 1 -alatest.com, 1 alatienne.fr, 1 alatkesehatan.tk, 1 alaturkaonline.com, 0 @@ -8896,6 +8853,7 @@ albion-swords.com, 1 albion2.org, 1 albionfaeries.org.uk, 1 +albionhatcap.com.au, 1 alblasserdam.nl, 1 albleuchten.de, 1 albme.gov, 1 @@ -8980,7 +8938,7 @@ aldot.gov, 1 aldous-huxley.com, 1 aldridge-ringers.tk, 1 -aldridge.com, 1 +aldridge.com, 0 aldusleaf.org, 1 ale5000.altervista.org, 1 alea-prevention.com, 1 @@ -9126,13 +9084,14 @@ alexandremottier.tk, 1 alexandreshimura.com.br, 1 alexandrevicente.net, 1 +alexandriainternationalschools.com, 0 alexandriamainst.market, 1 alexandrianh.gov, 1 alexandrite.cf, 1 alexandros.io, 0 alexaprinting.tk, 1 alexauto.tk, 1 -alexautrey.com, 1 +alexautrey.com, 0 alexberts.ch, 1 alexbilz.com, 1 alexblanck.com, 1 @@ -9255,10 +9214,11 @@ alfastone.com.ua, 1 alfatar-milk.com, 1 alfavit.cf, 1 +alffert.tech, 1 alfithrah.ac.id, 1 alfonso-baya.tk, 1 alfonsostriano.it, 1 -alfordbenefits.com, 0 +alfordbenefits.com, 1 alfordmedia.com, 1 alformationcouture.fr, 1 alforto.nl, 0 @@ -9294,7 +9254,6 @@ algoexplorer.io, 1 algolia.com, 1 algomadistrictlawassociation.com, 1 -algomotion.me, 1 algonaiowa.gov, 1 algorista.tk, 1 algorithmen-lernen.de, 1 @@ -9303,6 +9262,7 @@ algorithms-visual.com, 1 algorithms.guide, 1 algorithmsbook.com, 1 +algorithmstoday.com, 1 algoritm.gq, 1 algoritmika.org, 1 algoritmususpechu.cz, 1 @@ -9315,7 +9275,7 @@ algotest.in, 1 algovisionhub.com, 1 algrape.com, 1 -alhafeedinteriors.com, 1 +alhajerylifecare.com, 1 alhamedeia.tk, 1 alhidayahkg.com, 1 alhomaidani.com, 1 @@ -9324,7 +9284,6 @@ alhuqul-kh.com, 1 ali-shariati.tk, 1 alia-helianthi.tk, 1 -aliakpoyraz.com, 0 alialkurdy.tk, 1 aliamakeup.com, 1 alianet.org, 1 @@ -9349,7 +9308,6 @@ aliceforchildren.it, 1 alicehairstyling.tk, 1 alicehartley.com, 1 -alicekinkycat.net, 1 alicestudio.it, 1 alicetone.net, 1 alicfcloud.com, 1 @@ -9387,7 +9345,6 @@ aligned.church, 1 alignedchiro.org, 1 aligneddc.com, 1 -alignedweb.com, 1 alignext.io, 1 alignminds.com, 1 alihashemrasheed.com, 1 @@ -9404,7 +9361,6 @@ alimenty.tk, 1 alimtyaz.estate, 1 alimwilliams.tk, 1 -alinalamour.com, 1 alinandrei.com, 1 alinatinen.cf, 1 alinatinen.gq, 1 @@ -9477,7 +9433,6 @@ aljweb.com, 1 alkaabi.io, 1 alkacoin.net, 1 -alkalineionizedwater.org, 1 alkame.com, 1 alkamitech.com, 1 alkanbelgelendirme.com.tr, 1 @@ -9613,7 +9568,6 @@ allcleanportapottyrental.com, 1 allcloud.com, 1 allcooking.tk, 1 -allcookingclub.com, 1 allcouponat.com, 1 allcourts.tk, 1 allcoveredbyac.com, 1 @@ -9664,7 +9618,7 @@ allenkreger.com, 1 allenpcservices.co.uk, 1 allenperformingarts.org, 1 -allensonit.com, 1 +allensstudio.com, 1 allensun.org, 1 allentertainment.de, 1 allenturley.com, 1 @@ -9678,6 +9632,7 @@ allerlei-havelte.nl, 1 allerzeiten.com, 1 allerzieleninhetvondelpark.nl, 1 +alles-bekloppte.de, 1 alles-nur-ge.cloud, 1 allesisgezondheid.nl, 1 allesisonline.nl, 1 @@ -9704,7 +9659,7 @@ allforhon.tk, 1 allform.se, 1 allfortips.com, 1 -allfreshtempca.com, 1 +allfreshtempca.com, 0 allfundsconnect.com, 1 allfur.love, 1 allgadgetsfree.tk, 1 @@ -9889,7 +9844,6 @@ allpaydirect.com, 1 allpedia.tk, 1 allpointsblog.com, 1 -allporn.pics, 1 allporncomic.com, 1 allpornvids.com, 1 allpost.co, 1 @@ -9906,12 +9860,9 @@ allsafemd.com, 1 allsaints.church, 1 allsaintsnz.com, 1 -allsaintspreschoolyj.com.au, 0 allsaintsrr.org, 1 allscammers.exposed, 1 -allschool.com.ng, 1 allscience.tk, 1 -allseasonschimney.com, 1 allseniors.org, 1 allset.ml, 1 allshapes.co.nz, 1 @@ -9956,6 +9907,7 @@ alltownfresh.com, 1 alltracon.com, 1 alltrade.ga, 1 +alltradescover.com.au, 1 alltravelstips.com, 1 alltrippers.com, 1 alltwwk.tk, 1 @@ -10017,7 +9969,6 @@ almasoft.ga, 1 almastabriz.com, 0 almatinki.com, 1 -almatirecompanies.com, 1 almatytips.com, 1 almawsoa.com, 1 almayadeen.education, 1 @@ -10033,12 +9984,12 @@ almende.com, 1 almenrausch-pirkhof.de, 1 almeriaplayer.tk, 1 +almetaluminyum.com.tr, 1 almette.pl, 1 almeva.swiss, 1 almirahomes.com, 1 almirall.com, 1 almiriatechstore.co.ke, 1 -almirvuk.com, 1 almlab.tk, 1 almlc.gov, 1 almokhlifoud.com, 1 @@ -10055,7 +10006,6 @@ almut-zielonka.de, 1 almworks.com, 0 almx.net, 1 -alnaharnews.net, 1 alng.me, 0 alnilam.co.uk, 1 alnitech.com, 0 @@ -10140,7 +10090,6 @@ alpha-force.net, 0 alpha-ink.de, 1 alpha-kamera.de, 1 -alpha.ch, 1 alphaassurances.com, 1 alphabet-z.xyz, 1 alphabetsigns.com, 1 @@ -10153,6 +10102,7 @@ alphachat.net, 1 alphacity.tk, 1 alphaclean-hannover.de, 1 +alphaconcept.ba, 1 alphaconsultancy.sa, 1 alphacorp.tk, 1 alphadance.tk, 1 @@ -10163,6 +10113,7 @@ alphaeducation.edu.vn, 1 alphaetomega3d.fr, 1 alphagames.tk, 1 +alphagrowth.io, 1 alphahosting.hu, 1 alphainsider.com, 1 alphakites.de, 1 @@ -10195,6 +10146,7 @@ alphaworks.it, 1 alphazure.co.uk, 1 alphazure.com, 1 +alphimedia.com, 1 alphipneux.fr, 1 alphline.com.sg, 0 alphonso.tv, 1 @@ -10227,7 +10179,6 @@ alredaldaem.com, 1 alrehmantech.tk, 1 alroniks.com, 0 -alrowadexchange.com, 1 alsaagency.tk, 1 alsabil.tk, 1 alsace-informatique.shop, 1 @@ -10235,7 +10186,7 @@ alshabab.tk, 1 alshamil.tk, 1 alsharkest.net, 1 -alskar.co, 0 +also.cool, 1 alsol.fr, 1 alsonkaw.com, 1 alsops.cf, 1 @@ -10389,6 +10340,7 @@ altopia.com, 1 altoplan.de, 1 altos.tk, 1 +altotieteregiao.com.br, 1 altovoltaggio.tk, 1 altoweb.tk, 1 altphotos.com, 1 @@ -10408,6 +10360,7 @@ altunbas.info, 1 altur.tk, 1 altura.io, 0 +alturadigital.fr, 1 alturiak.net, 1 altus.co.nz, 1 altusbiologics.com, 1 @@ -10463,7 +10416,6 @@ alvirzy.tk, 1 alvixinsurance.com, 1 alvn.ga, 1 -alvorada-rs.com.br, 1 alvordschools.org, 1 alvordtx.gov, 1 alvosec.com, 1 @@ -10476,8 +10428,8 @@ alwayshowher.tk, 1 alwayslookingyourbest.com, 1 alwaysmine.fi, 1 +alwc.ae, 1 alwin.io, 1 -alwistra.eu, 1 alwuz.com, 1 alxclub.tk, 1 alxn-congress-2022.com, 1 @@ -10602,7 +10554,6 @@ amatutis.lt, 1 amaurijogos.tk, 1 amavis.org, 1 -amavita.health, 1 amavo.tk, 1 amaxautomotive.com.au, 1 amayagrowth.fund, 1 @@ -10613,7 +10564,6 @@ amazing-cars98.tk, 1 amazing-castles.co.uk, 1 amazing-maids.com, 1 -amazingbusinessstore.com, 1 amazingribs.com, 1 amazingsmilesfl.com, 1 amazingstore.gq, 1 @@ -10637,6 +10587,7 @@ amazwerk.com, 1 amb.cat, 1 amb.tf, 1 +ambalappuzha.in, 1 ambankspot.com, 1 ambar.org, 1 ambarbyarihant.com, 1 @@ -10731,7 +10682,6 @@ ameliagb.com, 1 ameliastudio.co.uk, 0 ameliatillbryssel.se, 1 -amelielei.net, 1 amello.de, 1 amemei9f-lists.top, 1 amempire.tk, 1 @@ -10740,8 +10690,7 @@ amenhotep.com, 1 ameninalaceira.com.br, 1 amenoskuarto.tk, 1 -ameplumbingnj.com, 1 -amerenillinoissavings.com, 1 +ameplumbingnj.com, 0 ameresco.com, 1 ameri.capital, 1 americ.info, 1 @@ -10775,6 +10724,7 @@ americanhomelandtitle.com, 1 americanimageawards.com, 1 americaninsuranceplus.ml, 1 +americanjihad.com, 1 americankickoff.ga, 1 americanlegaltranscription.com, 1 americanmessaging.net, 1 @@ -10833,6 +10783,7 @@ amfora.gq, 1 amforst.ddns.net, 1 amginternational.org, 1 +amgoc.us, 1 amgreatness.com, 1 amh-entertainments.co.uk, 1 amherstwire.com, 1 @@ -10893,7 +10844,6 @@ aminko.ga, 1 aminoro.de, 1 aminos.tk, 1 -aminta.de, 1 aminullrouted.com, 1 amion.com.ua, 1 amionamiondrugsdotcom.com, 1 @@ -10904,18 +10854,17 @@ amir-tataloo.tk, 1 amirarsalan.tk, 1 amirasyraf.com, 0 -amirautos.com, 0 amirhanova-a.ru, 1 amirkaraj.tk, 1 amis-du-cinema.com, 1 amis-sh.fr, 1 amisdelemm.fr, 1 amisharingstuff.com, 1 +amishoutdoorbuildings.com, 1 amishra.tk, 1 amisoft.co.jp, 1 amisoft.tk, 1 amispaulfeller.fr, 1 -amissing.link, 1 amitopia.tk, 1 amitriptyline-hydrochloride.ga, 1 amitriptyline25mg.cf, 1 @@ -10969,7 +10918,7 @@ amon.tech, 1 amonat-architektur.de, 1 amonatealways.com, 1 -among-us.me, 0 +among-us.me, 1 amongus-guru.ru, 1 amoozesh98.ir, 1 amoralizm.tk, 1 @@ -11051,7 +11000,6 @@ amrctraining.co.uk, 1 amrealtypr.com, 1 amres.pl, 1 -amri.nl, 1 amritps.com, 1 amroelkhatib.fi, 1 amroz.xyz, 1 @@ -11082,7 +11030,6 @@ amtdb.org, 1 amtek.au, 1 amtl.no, 1 -amto-oiladditiv.de, 1 amtra.com.au, 1 amtrakoig.gov, 1 amule.cf, 1 @@ -11097,6 +11044,9 @@ amur-photo.ml, 1 amur.tk, 1 amush.vip, 1 +amusnet.hr, 1 +amusnet.it, 1 +amusnet.ro, 1 amvip9.com, 1 amvisor.com, 1 amvisualgraphics.com, 1 @@ -11110,7 +11060,6 @@ amymabel.com, 1 amymargolislcsw.com, 1 amymartiraphotography.com, 1 -amyred.net, 1 amyria.jp, 1 amyrussellhair.com, 1 amytuarez.ga, 1 @@ -11137,7 +11086,6 @@ anaalontmaagd.tk, 1 anaar.ml, 1 anabarata.tk, 1 -anabecoaj.org, 1 anabijou.com.br, 1 anabolic-stresser.ga, 1 anabolickdieta.ga, 1 @@ -11169,7 +11117,6 @@ anakin.ca, 1 anakliarmalam.ml, 1 anakojm.net, 1 -analbabsi.com, 1 analcancerfoundation.org, 1 analebear.com, 1 analfistula.com.sg, 1 @@ -11196,6 +11143,7 @@ analysts.com, 1 analytics-media.com, 1 analyticscanvas.com, 1 +analyticsfoxsoftwares.com, 1 analytictechgroup.com, 1 analyticum.at, 1 analyticum.com, 1 @@ -11216,7 +11164,6 @@ ananyagupta.tk, 1 anapsi.tk, 1 anaquadrada.com, 1 -anar.biz, 0 anara.fr, 1 anarajaoui.ma, 1 anarcasmetalicos.tk, 1 @@ -11268,7 +11215,7 @@ anblife.com, 1 anborn.tk, 1 anc-media.net, 1 -ancade.es, 0 +ancade.es, 1 ancaebacia.pt, 1 ancarda.net, 1 ancardukids.tk, 1 @@ -11292,6 +11239,7 @@ anchorit.gov, 1 anchoritsg.com, 1 anchorstatebank.com, 1 +anchoryourpresence.com, 1 anchovy.nz, 0 anchr.io, 1 anciennes-automobiles.fr, 1 @@ -11301,7 +11249,6 @@ ancientlorevillage.com, 1 ancientnorth.com, 1 ancientnorth.nl, 1 -ancilebase.com, 1 ancitus.com, 1 anclarma.fr, 1 anco.ly, 1 @@ -11320,7 +11267,6 @@ andalusiaal.gov, 1 andamancapitalpartners.com, 1 andamineglobal.com, 1 -andancoffee.com, 1 andantepiano.studio, 1 andel.info, 0 anders.hamburg, 1 @@ -11391,6 +11337,7 @@ andreamcnett.com, 0 andreapalermo.tk, 1 andreapavone.com, 1 +andrearizzi-solutions.com, 1 andreas-hildebrandt.com, 1 andreas-kurtz.de, 1 andreaseracleous.com, 0 @@ -11404,6 +11351,7 @@ andreaskrasa.com, 1 andreaslicht.nl, 1 andreasolsson.se, 1 +andreatedeschi.it, 1 andrecanuto.com.br, 1 andrecarvalho.net.br, 1 andredaus.com, 1 @@ -11440,6 +11388,7 @@ andreupujol.es, 1 andrew.eu.org, 1 andrew.fi, 1 +andrewazzopardi.org, 1 andrewbennett.ltd, 1 andrewcountymo.gov, 1 andrewdaws.co, 1 @@ -11458,7 +11407,6 @@ andrewmichaud.me, 1 andrewnet.net, 1 andrewpeng.net, 1 -andrewpucci.com, 0 andrewrdaws.com, 1 andrewreff.com, 1 andrewrgoss.com, 1 @@ -11501,7 +11449,6 @@ android-tv.ml, 1 android.com.pl, 1 android.re, 0 -androidapkdata.net, 1 androidcrunch.com, 1 androidfinal.com, 1 androidgaming.tk, 1 @@ -11672,15 +11619,11 @@ angestoepselt.de, 1 angie-webdesign.ch, 1 angiejones.com, 1 -angielynx.net, 1 angiesite.tk, 1 -angioclinic-muenchen.de, 1 -angioclinic.ch, 1 angioclinic.de, 1 angiolinikids.it, 1 angione.ca, 1 angione.se, 1 -angisonline.cz, 1 angiszi.hu, 1 angkapaito.net, 1 angkasa.net.id, 1 @@ -11696,6 +11639,7 @@ angloeastern.com, 1 anglogoldashanti.com, 1 anglopoltransport.pl, 1 +anglucentras.lt, 1 angolo.ga, 1 angora.id, 1 angorarabbitsaspets.com, 1 @@ -11706,7 +11650,7 @@ angrybug.com, 1 angrydragonproductions.com, 1 angrymoulinex.tk, 1 -angryorchard.com, 1 +angryorchard.com, 0 angrysnarl.com, 1 angryteeth.net, 1 angstrommold.com, 1 @@ -11778,7 +11722,6 @@ animalz.ml, 1 animalz.tk, 1 animamega.tk, 1 -animan.ca, 1 animanganetwork.tk, 1 animaproduksiyon.com.tr, 1 animari.at, 1 @@ -11803,6 +11746,7 @@ anime-tip.com, 1 anime-tv.tk, 1 anime-umamusume.jp, 1 +anime.ai, 1 anime.com.br, 1 anime.my, 0 anime1.me, 1 @@ -11831,7 +11775,6 @@ animelesson.ga, 1 animelime.ru, 1 animeonsen.xyz, 1 -animepahe.ru, 0 animeplus1.tk, 1 animepower.gq, 1 animepower.tk, 1 @@ -11889,6 +11832,7 @@ anjara.eu, 1 anjocerdena.com, 1 anjtransportsolutions.com.au, 1 +ankacilekfidesi.com.tr, 1 ankane.org, 1 ankaraarabakiralama.com.tr, 1 ankaraarabakiralama.name.tr, 1 @@ -11922,6 +11866,7 @@ ankaravinckiralama.com.tr, 1 ankarawebtasarim.name.tr, 1 ankarawebtasarim.tk, 1 +ankarawi.com, 1 ankarayedek.com.tr, 1 anker-wladyslawowo.pl, 1 anker.pk, 1 @@ -11952,12 +11897,10 @@ anna-beauty.gq, 1 anna-center.tk, 1 anna-dance.ru, 1 -anna-mai.net, 1 anna-photo.co.uk, 1 anna-soriano.fr, 1 anna.info, 1 annaaurora.eu, 1 -annabelmassina.net, 1 annadebrux.cf, 1 annadebrux.ga, 1 annadebrux.gq, 1 @@ -11983,7 +11926,6 @@ anne-gb.ch, 1 anne-marie.tk, 1 annechristinebrunel.fr, 1 -anneeden-porn.com, 1 anneeden.com, 1 annefit.ro, 1 annefrank.org, 1 @@ -11996,21 +11938,17 @@ annema.biz, 1 annemarielaponder.com, 1 annemariezimmerman.nl, 1 -annetardif.ca, 1 annetta.com, 1 annettewindlin.ch, 1 annevankesteren.nl, 1 annevankesteren.org, 1 anney-life.com, 1 -anniangel-porn.com, 1 annicascakes.nl, 1 anniecloth.com, 1 anniegagnonphotographie.com, 1 anniekheffache.com, 0 -anniescambodian.com, 1 anniesdollhouse.com, 1 annihilation-squad.tk, 1 -annikarose-porn.com, 1 anniversaryforumers.ga, 1 annonasoftware.com, 1 annoncer.ga, 1 @@ -12020,7 +11958,7 @@ annonces34.tk, 1 annonline.com, 1 annonseringonline.se, 1 -annotera.ai, 1 +annotera.ai, 0 announcement.tk, 1 annovasolutions.com, 1 annoyinggui.de, 1 @@ -12030,7 +11968,6 @@ annuaire-auto-ecole.com, 1 annuaire-express.tk, 1 annual.ga, 1 -annualreportowl.com, 1 annuire.org, 1 annuitycommunity.com, 1 annuityequityers.ga, 1 @@ -12069,7 +12006,6 @@ anonym-surfen.de, 0 anonym-surfen.online, 1 anonyme-spieler.at, 1 -anonymous-exchange.com, 1 anonymous.com.pt, 1 anonymousbitcoinexchange.org, 1 anoopcnair.com, 1 @@ -12210,9 +12146,7 @@ anthonymineo.com, 0 anthonymrugacz.com, 1 anthonymrugacz.net, 1 -anthonystephan.com, 1 anthonytimbers.com, 1 -anthonytoday.com, 1 anthonytutorials.tk, 1 anthonyvadala.me, 1 anthos.space, 1 @@ -12269,6 +12203,7 @@ antifaschistischeaktioncelle.tk, 1 antifilter.network, 1 antiformiche.it, 1 +antifragilegrc.com, 1 antifragilepower.com, 1 antifraud.cf, 1 antifraudcentre-centreantifraude.ca, 1 @@ -12355,7 +12290,6 @@ antoninocardillo.com, 1 antonio-gartenbau.de, 0 antonioantunesefilhos.pt, 1 -antonioffernandez.com, 1 antoniojr.adv.br, 1 antoniolatimore.com, 1 antoniomarques.eu, 1 @@ -12365,7 +12299,6 @@ antonis.cy, 1 antonis.org, 1 antonjuulnaber.dk, 1 -antonm.org, 1 antonoff.tk, 1 antonok.com, 1 antonovka.ga, 1 @@ -12393,8 +12326,10 @@ antunes.com, 1 anturis.com, 1 antwerpist.com, 1 +antymo.com, 1 antyware.pl, 1 anubandarage.com, 1 +anubis.ro, 1 anubislinux.tk, 1 anubisz.tk, 1 anujag.tk, 1 @@ -12406,7 +12341,6 @@ anunturitv.ro, 1 anvilbyte.com, 1 anvilmetal.tk, 1 -anvilo.com, 1 anvilsales.tk, 1 anvilsecure.com, 1 anvimall.vn, 1 @@ -12467,8 +12401,7 @@ anyshapemusic.com, 1 anyshow.ga, 1 anystack.xyz, 1 -anythingforsports.com, 1 -anythingrural.com, 1 +anythingforsports.com, 0 anytimefundingers.ga, 1 anytimefundingest.ga, 1 anytimeoffices.ga, 1 @@ -12496,6 +12429,7 @@ aobogo.com, 1 aod-tech.com, 1 aodemoapps.com, 1 +aodfans.com, 1 aodisco.co.uk, 1 aoe9.com, 1 aoemobilehub.com, 1 @@ -12515,6 +12449,7 @@ aonsolutions.com.cy, 1 aonsolutions.gr, 1 aontu.ie, 1 +aop-ffm.de, 1 aopa.org, 1 aopedeure.nl, 1 aorangi-debt.co.nz, 1 @@ -12542,13 +12477,10 @@ ap-mobility.de, 1 ap.icu, 1 ap.nic.in, 1 -ap000.cc, 1 ap111.cc, 1 ap1111.cc, 1 ap2.ch, 1 -ap2222.cc, 1 ap314.com, 1 -ap9999.cc, 1 apa-canal.ro, 1 apache-portal.com, 1 apache.org, 1 @@ -12557,7 +12489,6 @@ apachelounge.com, 1 apacheoffroad.com, 1 apachetoday.com, 1 -apadmi.com, 0 apadrinaunolivo.org, 1 apaeilha.org.br, 1 apaesthetics.com, 1 @@ -12573,11 +12504,9 @@ apartment-in-rijeka.com, 1 apartment-market.ml, 1 apartment.loans, 1 -apartmentkroatien.at, 1 apartmentregister.com.au, 1 apartments-promajna.tk, 1 apartments.co.nz, 1 -apartrentrotterdam.nl, 1 apatransport.com, 1 apbassettsolicitors.co.uk, 1 apbcpa.ca, 1 @@ -12599,7 +12528,6 @@ apec.fr, 1 apecsustain.com, 1 apedreira.com, 1 -apef.ch, 0 apefrog.tk, 1 apeiri.de, 1 apeldoornschebosch.nl, 1 @@ -12609,7 +12537,6 @@ apeleg.no, 1 apelsin.ml, 1 apem.com, 1 -aperainst.com, 1 apercloud.es, 1 aperioadvice.ga, 1 aperiomoney.ga, 1 @@ -12628,9 +12555,9 @@ aperturesciencelabs.de, 1 apertvre.tk, 1 apex-promotion.com, 1 -apex-writers.com, 1 apex.ac, 1 apex.aw, 1 +apexanglerpro.com, 1 apexconsulting.io, 1 apexcorp26.com, 1 apexes.co.jp, 1 @@ -12644,6 +12571,7 @@ apexperformancegym.com, 0 apexpreciousmetals.com, 1 apexremovablecovers.com, 1 +apexsecurityint.com, 1 apextrailers.co.za, 0 apextray.com, 1 apfakenews.com, 1 @@ -12651,7 +12579,6 @@ apfelnews.de, 1 apfelpage.de, 1 apfelrat.de, 1 -apfhaiti.org, 1 apfm.fr, 1 apgen.org, 1 apgw.jp, 1 @@ -12668,7 +12595,6 @@ api.org.tr, 1 api.recurly.com, 1 api.saxo, 1 -api.spa, 1 api.tr, 1 api2cart.com, 1 api42.ch, 1 @@ -12685,7 +12611,6 @@ apienergisahomol.com, 1 apifiregroup.com, 1 apifreaks.com, 1 -apigb.com, 1 apigee.com, 1 apigroupinc.com, 1 apil.org.uk, 1 @@ -12719,7 +12644,7 @@ apk-world.cf, 1 apk.li, 1 apk4fun.com, 1 -apkapp.ru, 1 +apkapp.ru, 0 apkdv.com, 0 apkishop.com, 1 apkmint.co, 1 @@ -12745,6 +12670,7 @@ apmdd.org, 1 apmhealth.com, 1 apmtsales.com, 1 +apn-dz.org, 1 apn-einstellungen.de, 1 apnagujarkhan.tk, 1 apnakhattak.tk, 1 @@ -12769,8 +12695,8 @@ apoia.se, 1 apoiocoletivo.com, 1 apokalipsis.tk, 1 -apola.best, 1 apolitical.co, 1 +apolline.be, 1 apollo.dog, 1 apollocare.com, 1 apollodiet.com, 1 @@ -12786,7 +12712,6 @@ apollowallet.org, 1 apollux.ro, 1 apollyon.work, 1 -apologrouptv.net, 1 apoly.de, 1 aponkral.com, 1 aponkral.com.tr, 1 @@ -12804,7 +12729,6 @@ apordi.fr, 1 aporellos.com, 1 aporter.xyz, 1 -aposan.de, 1 aposke.com, 1 aposke.net, 1 aposke.org, 1 @@ -12817,6 +12741,7 @@ apostasolida.com, 1 apostillelondon.com, 1 apostrophe.pl, 1 +apothecarydouglasville.com, 1 apotheek-ict.nl, 1 apotheekvanwacht.be, 1 apothekeonline.tk, 1 @@ -12826,7 +12751,6 @@ app, 1 app-alp-cp-boost-model.azurewebsites.net, 1 app-at.work, 1 -app-ausnovusportal-uat-ae.azurewebsites.net, 1 app-colissimo.fr, 1 app-control-fcu.de, 1 app-finops-cspcustos.azurewebsites.net, 1 @@ -12928,7 +12852,7 @@ applepiecapital.com, 1 applerepairtoday.com, 1 appleric.tk, 1 -applesaph.nl, 1 +appleseednews.com, 1 applesencia.com, 1 appleslayer.cf, 1 applestat.us, 1 @@ -12941,7 +12865,7 @@ applevalleyca.gov, 1 applewatch.co.nz, 1 applian.com, 1 -appliancepronwi.com, 1 +appliancepronwi.com, 0 appliancerepairteodor.com, 1 appliances-for-home.tk, 1 applicablesecurity.net, 1 @@ -13015,7 +12939,6 @@ appscloudplus.com, 1 appsdock.de, 1 appsecmonkey.com, 0 -appsecwarrior.org, 1 appshandler.com, 1 appshuttle.com, 1 appside.pl, 1 @@ -13037,7 +12960,6 @@ appugo.tk, 1 appui-de-fenetre.fr, 0 appuntamento.it, 1 -appuntisulblog.it, 1 appunwrapped.com, 1 appveyor.com, 1 appwardbeta.com, 1 @@ -13211,7 +13133,7 @@ aquastudios.games, 1 aquasure.com.au, 1 aquatherm72.ru, 1 -aquatiq.com, 1 +aquatiq.com, 0 aquato.com.ua, 1 aquatropical.tk, 1 aquaworld.tk, 1 @@ -13273,7 +13195,6 @@ aradex.de, 1 aradiantlife.org, 1 aradpulse.tk, 1 -arafali.de, 1 arafatx.com, 1 aragotownshipmn.gov, 1 araizahoteles.com, 1 @@ -13305,6 +13226,7 @@ ararrl.com, 1 ararrl.net, 1 ararrl.org, 1 +arasaka.ltd, 1 arasdigital.co, 1 arasikackm.com, 1 arasozgun.net, 1 @@ -13319,6 +13241,7 @@ araxis.com, 1 araya.ga, 1 araya.social, 1 +arazbana.ir, 1 arbaiten.tk, 1 arbautocare.com, 1 arbavere.ee, 1 @@ -13333,6 +13256,7 @@ arbez.org, 1 arbitix.io, 1 arbitmax.com, 1 +arbitrage.net, 1 arbitrarion.com, 1 arbitrary.ch, 1 arbitrations.tk, 1 @@ -13368,8 +13292,10 @@ arcadiaca.gov, 1 arcadiaeng.com, 1 arcadiaquill.com, 1 +arcadiusbusiness.com, 1 arcaik.net, 1 arcaleus.com, 1 +arcamedia.com, 1 arcana-noctis.tk, 1 arcanavana.com, 1 arcandadults.org, 1 @@ -13411,7 +13337,6 @@ archis.de, 1 archispace.com.cn, 1 archistart.net, 1 -archit.in, 1 architecten.pro, 1 architectes.me, 1 architectphd.tk, 1 @@ -13440,7 +13365,7 @@ archivi.ddns.net, 0 archivistas.tk, 1 archivium.biz, 1 -archiweb.pl, 1 +archiweb.pl, 0 archlinux.de, 1 archlinux.org, 1 archlinuxcn.org, 1 @@ -13484,10 +13409,8 @@ arcskoru.com, 1 arcthelad.com, 1 arctic-charge.tk, 1 -arctic-store.com, 1 arctic.ca, 1 arcticfox.email, 0 -arcticfoxes.net, 1 arcticmining.net, 1 arcticpolitics.com, 1 arcticstream.ro, 1 @@ -13529,7 +13452,7 @@ area-pediatrica.it, 1 area.ge, 1 area21.ga, 1 -area3.org, 1 +area33-kc.com, 1 area4pro.com, 1 area51.dyndns1.de, 1 area51bit.com, 1 @@ -13597,6 +13520,7 @@ arevonenergy.com, 0 arexsigorta.com.tr, 1 arezzonotizie.it, 1 +arfigy.hu, 1 arfulus.com, 1 arfycat.com, 1 arga.mn, 1 @@ -13615,6 +13539,7 @@ argentinaxp.com, 1 argentinetownship.gov, 1 argentumonline.tk, 1 +arges.hr, 1 argico.com, 1 argmin.co, 1 argo-vision.com, 1 @@ -13628,7 +13553,7 @@ argos.co.uk, 1 argosasist.co.uk, 1 argosrisk.com, 1 -argoswimvideo.com, 1 +argoswimvideo.com, 0 argotplan.com, 1 argovpay.com, 1 argovpn.com, 1 @@ -13637,10 +13562,12 @@ argumentative-essay.gq, 1 argumentplus.ru, 1 argus01.bg, 1 +argusais.com, 1 argxentakato.me, 1 argyrouminas.digital, 1 argyrouminas.eu, 1 arhan.sh, 1 +arheh.com, 1 arhgrille.com, 1 arhipka.tk, 1 arhitectura.ru, 1 @@ -13661,6 +13588,7 @@ ariana.wtf, 1 arianesoaresarquitetura.com.br, 1 ariashii.tk, 1 +ariaswithatwistreturns.com, 0 aribicara.tk, 1 aricabus.tk, 1 aricaluchalibre.tk, 1 @@ -13705,7 +13633,6 @@ arima.co.ke, 1 arima.tk, 1 arimarie.com, 1 -arina.moscow, 0 arinahashimoto.com, 1 arinde.ee, 1 arinflatablefun.co.uk, 1 @@ -13738,7 +13665,6 @@ arizonabondedtitle.com, 1 arizonaonlinedivorce.com, 0 arizonatech.tk, 1 -arizonatitlesearch.com, 1 arjan.nl, 1 arjandejong.eu, 1 arjanenthijs.nl, 1 @@ -13746,6 +13672,7 @@ arjanvaartjes.net, 1 arjen-robben.tk, 1 arjunasdaughter.pub, 1 +arjunfinancialservices.com, 1 arjunvedbrat.com, 1 arjweb.co.uk, 1 ark.swiss, 1 @@ -13762,9 +13689,7 @@ arkaic.dyndns.org, 1 arkaitzmolinuevo.com, 1 arkanpath.com, 1 -arkansastitlesearch.com, 1 arkazys.com, 1 -arkcapitaltrading.com, 1 arkenstone.ml, 1 arkentosh.com, 0 arkforum.de, 1 @@ -13774,13 +13699,14 @@ arkhangelsk.cf, 1 arkhangelsk.gq, 1 arkhangelsk.tk, 1 -arkhecreative.com, 1 arkholmevillage.ml, 1 arkhub.com, 1 arkhvoid.xyz, 1 arkin.nl, 1 arkion.ai, 1 +arkisali.fi, 1 arkitekter.pro, 1 +arklaystudio.com, 1 arkm6.gq, 1 arknights.work, 0 arknodejs.com, 1 @@ -13853,7 +13779,6 @@ arminc.tk, 1 arminjon.net, 1 arminpech.de, 1 -armo.sk, 1 armond.tk, 1 armorcommercialroofing.com, 1 armorsoft.fr, 1 @@ -13893,7 +13818,7 @@ arndtstowing.com, 1 arne-gammelby.dk, 1 arneheise.com, 1 -arnesegers.be, 1 +arnesegers.be, 0 arnevankauter.com, 0 arnews.nl, 1 arniescastles.co.uk, 1 @@ -13952,7 +13877,6 @@ arooshi.website, 1 arosoft.se, 1 arounddeal.com, 1 -aroundtheclock.ca, 1 arowsoft.tk, 1 arox.eu, 1 aroya.io, 0 @@ -14005,6 +13929,7 @@ arroba.digital, 1 arrotatore.roma.it, 1 arrow-api.nl, 1 +arrow.ee, 1 arrowduty.ml, 1 arrowfastener.com, 1 arrowgrove.com, 0 @@ -14026,6 +13951,7 @@ arsenalperu.tk, 1 arseni-aliakseichyk.com, 1 arsenideas.ga, 1 +arsenkin.ru, 1 arsenyan.cf, 1 arset.net, 1 arshdeepsingh.tk, 1 @@ -14036,6 +13962,7 @@ arshistorica.it, 1 arsindecor.com, 0 arsingh.com, 1 +arsinruggallery.com, 1 arsjuridica.com, 1 arsk1.com, 1 arslanseoinsights.com, 1 @@ -14112,11 +14039,9 @@ artededition.tk, 1 artedellavetrina.it, 1 artedmachado.tk, 1 -artedona.com, 1 arteescuela.com, 1 artefakt.group, 1 artefeita.com.br, 1 -arteid.com, 1 arteinstudio.it, 1 artel.od.ua, 1 artelignum.tk, 1 @@ -14172,9 +14097,7 @@ arthurdev.cf, 1 arthurlaw.ca, 1 arthurlewis.me, 1 -arthuro.ca, 1 arthurrichard.fr, 1 -arthurweder.ch, 1 arti-group.ml, 1 arti-islam.tk, 1 artibirteknikbilisim.com, 0 @@ -14204,7 +14127,6 @@ artificialheights.com, 1 artificialintelligenceproject.com, 1 artificialplants.tk, 1 -artificialpoetry.com, 1 artifort.com, 1 artifuse.ch, 1 artigianociao.jp, 1 @@ -14223,15 +14145,14 @@ artisan.tk, 1 artisanat2france.fr, 1 artisanconstructionco.com, 1 -artisanhd.com, 1 artisanlighting.co.th, 1 +artisanpastrync.com, 1 artisanportrait.com, 1 artisansoftaste.com, 1 artishevski.com, 1 -artiso.pl, 1 +artiso.pl, 0 artistas.me, 1 artistas.pt, 1 -artistcorporation.com, 1 artistedeparis.fr, 1 artistes.com, 1 artisti.net, 1 @@ -14243,6 +14164,7 @@ artistrunwebsite.com, 1 artists.pro, 1 artivo-gallery.com, 1 +artizar.ai, 1 artizlibranza.com, 1 artj.jp, 1 artk-co.ir, 1 @@ -14303,12 +14225,14 @@ artsongcolorado.org, 1 artspac.es, 0 artspark.tk, 1 +artstationery.com, 1 artstudioweb.tk, 1 artsy.cloud, 1 artsygrl.ca, 1 arttel-media.ru, 1 arttempo.re, 1 artucation.eu, 1 +artum.studio, 1 artup.company, 1 arturana.com, 1 arturana.es, 1 @@ -14427,7 +14351,6 @@ asaka-forest-shika.jp, 1 asakoh.co.jp, 1 asal.tk, 1 -asamoda.com, 1 asana.biz, 1 asana.com, 1 asana.plus, 1 @@ -14452,7 +14375,6 @@ asato-jewelry.com, 1 asb.edu.my, 0 asbaces.com, 1 -asbazar.com, 1 asbestos-awareness.cf, 1 asbestos-awareness.ga, 1 asbestos-awareness.gq, 1 @@ -14488,7 +14410,6 @@ ascofiltri.com, 1 ascolibasi.tk, 1 ascom.vi.it, 1 -ascopeshipping.co.uk, 1 ascore.io, 1 ascottestate.co.uk, 1 ascpaphilatelie.eu, 1 @@ -14504,6 +14425,7 @@ aseglobal.com, 0 aseishika.com, 1 aseith.com, 1 +aseityresearch.com, 1 aselectionoffice.gov, 1 aselo.org, 1 asenaru.id, 1 @@ -14517,7 +14439,6 @@ asesoresdelcaribe.com, 1 asesoresvaro.com, 1 asesorialigorred.es, 1 -asesoriavalledor.es, 1 asesuisa.com, 1 aset.fi, 1 asexualitat.cat, 1 @@ -14531,6 +14452,7 @@ asfono.gov, 1 asg-egy.com, 1 asgard-engineering.com, 1 +asgardianpunk.com, 1 asgassociationbenefitplans.com, 1 asgeirolafs.com, 1 asgfinancialadvisors.com, 1 @@ -14550,13 +14472,13 @@ ashd1.goip.de, 1 ashd2.goip.de, 1 ashd3.goip.de, 1 -ashdownriding.co.uk, 1 ashemaletubeplus.com, 1 ashenc.gov, 1 ashenm.ml, 1 asher.dog, 1 asherosborne.com, 1 asheroto.com, 1 +asherrit.com, 1 ashersec.com, 1 ashersgrp.com, 1 ashesdiamonds.com, 1 @@ -14599,7 +14521,6 @@ ashwoodscontracting.com, 1 asia-fhjt.com, 1 asia4five.com, 1 -asiabyte.com, 1 asiadirect.co.th, 1 asiafaninfo.net, 1 asiafood-curator.com, 1 @@ -14615,7 +14536,6 @@ asian.school, 1 asianbeautywholesale.com, 1 asianbusinesscards.com, 1 -asiancammers.com, 1 asiandubfoundation.tk, 1 asianet.tk, 1 asianetbroadband.in, 1 @@ -14657,7 +14577,6 @@ asisee.co.il, 1 asistencialegal.tk, 1 asistentecx.com, 1 -asistko.si, 1 asiyasia.tk, 1 asjablonski.com, 1 ask.stg.fedoraproject.org, 1 @@ -14672,19 +14591,15 @@ askbrake.com, 1 askcaisse.com, 1 askdeliver.tk, 1 -asker-massasje.no, 1 askerweb.cf, 1 askeverythingonline.com, 1 askeygeek.com, 1 -askfoto.com, 1 askfront.com, 1 askgamblers.com, 1 askindia.tk, 1 -askjan.org, 1 askkaren.gov, 1 asklea.ai, 1 asklib.ai, 1 -askmany.ai, 1 askme-events.vip, 0 askme-fast.tk, 1 askme24.de, 1 @@ -14818,6 +14733,7 @@ assamtodayexpress.com, 1 assanti.com, 1 assassinasian.tk, 1 +assault1892.boats, 1 asscast.org, 1 assdecoeur.org, 1 assecuro.com.ua, 1 @@ -14839,11 +14755,10 @@ assentooriginal.com.br, 1 assessmentpractitioner.co.za, 1 assessorindie.tk, 1 -asset-os.jp, 1 +asset-os.jp, 0 assetbacked.capital, 0 asseti.co, 1 asseti.com, 1 -assetinvesting.com, 1 assets.schwarz, 1 assetsec.io, 1 assetsman-assetsvalue.com, 1 @@ -14886,11 +14801,9 @@ asso.com.ua, 1 associationguillaume.com, 1 associationhorizon.tk, 1 -associationvision.com, 1 associazioneaisc.org, 1 associazionerimborsi.it, 1 associazioneterra.it, 1 -assoft.co, 1 assomydesk.fr, 1 asspoop.com, 1 assta.ga, 1 @@ -14988,10 +14901,12 @@ astralriders.tk, 1 astramundo.com, 1 astrapool.ru, 1 +astrasoft.uz, 1 astratech.com.ph, 1 astratech.ph, 1 astrath.net, 1 astrati.com.br, 1 +astrawallet.io, 1 astrea-voetbal-groningen.nl, 1 astrid-hoerr-mann.de, 1 astrid-stolz.de, 1 @@ -15032,7 +14947,6 @@ astronomija.cf, 1 astronomija.tk, 1 astronomygcse.cf, 1 -astropackgulf.com, 1 astropar.tk, 1 astrophena.name, 1 astroscopy.ch, 0 @@ -15060,7 +14974,7 @@ astutr.co, 1 astypic.fr, 1 asual.com, 1 -asuamaytinh.com, 1 +asuamaytinh.com, 0 asucrews.com, 1 asufte.com, 1 asugsvsummit.com, 1 @@ -15108,7 +15022,6 @@ atabekandco.com, 1 ataber.pw, 1 atabor.tk, 1 -atacado.com.vc, 1 atacadocervejeiro.com.br, 1 atacadoclube.com.br, 1 atacadodesandalias.com.br, 1 @@ -15163,12 +15076,10 @@ atelier-naruby.cz, 1 atelier-rk.com, 1 atelier-viennois-cannes.fr, 1 -atelierbeautebk.com, 1 atelierbw.com, 1 ateliercommerce.com, 0 atelierdelachaine.fr, 0 atelierdelacreation.com, 1 -atelierferro.be, 1 atelierhsn.com, 1 atelierica.sk, 1 atelierjs.com, 1 @@ -15181,6 +15092,7 @@ atelierua.com, 1 atelierverbeelding.nl, 1 atelijer.hr, 1 +atemwunder.de, 1 atencionbimbo.com, 0 ateneumontbui.tk, 1 ateneupalafrugell.tk, 1 @@ -15269,7 +15181,6 @@ atisoft.net, 1 atisoft.net.tr, 1 atisoft.org, 1 -atisoft.web.tr, 1 atisoftbarkodetiket.com.tr, 1 atisoftseo.com, 1 atisoftwebtasarim.com, 1 @@ -15299,7 +15210,6 @@ atlantica.tk, 1 atlanticbeachacademy.com, 1 atlanticcitycasino.news, 1 -atlanticcityexperience.org, 1 atlanticcityweekly.com, 1 atlanticcountynj.gov, 1 atlanticcourier.net, 1 @@ -15309,7 +15219,6 @@ atlantichomes.com.au, 1 atlanticmarina.com, 1 atlanticreporting.com, 1 -atlanticwatches.ch, 1 atlantida-amber.org, 1 atlantik.ml, 1 atlantik.tk, 1 @@ -15335,7 +15244,6 @@ atlascloud.cn, 1 atlascoffeeclub.com, 1 atlascultural.com, 1 -atlasdestination.com, 1 atlasdev.io, 1 atlasescorts.com, 1 atlasflare.com, 1 @@ -15378,10 +15286,10 @@ atmos-chem-phys-discuss.net, 1 atmos-chem-phys.net, 1 atmos-meas-tech-discuss.net, 1 +atmos.eu.com, 1 atmos.tk, 1 atmosferasuculenta.pt, 1 atmosferno.cf, 1 -atmospheremarketingwy.com, 1 atmospheric-chemistry-and-physics.net, 1 atmotrack.fr, 1 atmox.eu, 1 @@ -15444,14 +15352,15 @@ atris.media, 1 atriumhotels.gr, 1 atriumschool.gr, 1 +atriumstdenis.ca, 1 atrkadeh.com, 1 atrogi.com, 1 atropos.co, 1 ats.net, 1 -atsfleetservice.com, 1 atsol.com, 1 atspeeds.com, 1 attainableresultsgroup.com, 1 +attalos.life, 1 attanasioluigi.tk, 1 attatroll.de, 1 attawauganfirect.gov, 1 @@ -15484,7 +15393,6 @@ attogtech.com, 1 attorneybiographies.ga, 1 attorneybiographiesest.ga, 1 -attorneyclark.com, 1 attorneygeneral.gov.ly, 1 attorneyjasonstone.com, 1 attosoft.tk, 1 @@ -15593,7 +15501,7 @@ audiolegendsny.com, 1 audiolot.com, 1 audioman.co.uk, 1 -audiomedica.com, 0 +audiomedica.com, 1 audiomind.tk, 1 audiomir.tk, 1 audion.cc, 1 @@ -15614,7 +15522,7 @@ audiovisionelectronica.com.ar, 1 audiovisualmurciano.tk, 1 audisto.com, 1 -audit.one, 1 +audit.one, 0 audit.ovh, 1 audit.tw, 1 audit4seo.ru, 1 @@ -15653,7 +15561,6 @@ augenlaserzentrum-dresden.de, 1 augenlaserzentrum-dresden.eu, 1 augeo.pt, 1 -augeomarketing.com, 1 augesen.tk, 1 augix.net, 1 augmedix.com, 0 @@ -15666,7 +15573,6 @@ augur.us, 1 auguri-shop.ro, 1 august-hoegn.tk, 1 -august-wenzler.de, 1 august.me, 1 augusta-apotheke.nrw, 1 augustaky.gov, 1 @@ -15700,6 +15606,7 @@ aumisc.com, 1 aumonerie-lacatho.fr, 1 aumpram.org, 1 +aunimeda.com, 1 auntiesnorkel.com, 0 auntmia.com, 1 aunto.xyz, 1 @@ -15715,6 +15622,7 @@ aurabasketball.fr, 1 aurabestari.com, 1 aurac.org.nz, 1 +auracompare.com, 1 auraedu.me, 1 aurahiemis.tk, 1 aurahome.studio, 1 @@ -15730,6 +15638,7 @@ auramur.fr, 1 aurantis.it, 1 aurantis.nl, 1 +aurayan.com, 1 aurbrowser.tk, 1 aurdumesti.ro, 1 aurea-sp.org, 1 @@ -15748,6 +15657,7 @@ auricblue.com, 1 auricom.tk, 1 auriculo360.com, 0 +auridigital.com, 1 aurielle.com, 1 auriga.com, 1 aurigadebtadvice.org.uk, 1 @@ -15762,14 +15672,13 @@ aurora.net.au, 0 aurora403.com, 1 aurora911.net, 1 +auroracg.ca, 1 auroracloud.com.au, 1 auroraenergy.com.au, 1 auroraer.com, 1 auroramarionvillepd-mo.gov, 1 auroramj.com, 1 -auroranianoxx.net, 1 auroravtc.com, 1 -auroregaucher.fr, 1 aurory.io, 1 auroz.video, 1 aurtho.com, 1 @@ -15779,6 +15688,7 @@ ausbilderplattform.com, 1 ausbilderplattform.de, 1 ausbilderportal.com, 1 +ausbildex.at, 1 ausbildung-rbg.de, 1 ausbildungplus.de, 1 ausbrightfacilities.com.au, 1 @@ -15793,7 +15703,6 @@ auseal.au, 1 ausec.ch, 0 auservicedeschiens.com, 1 -ausfin.com, 1 ausfinance.net.au, 1 ausgrants.au, 1 ausgrants.com, 1 @@ -15822,7 +15731,6 @@ aussieofficefitout.com.au, 1 aussieservicedown.com, 1 aussiesmostlifted.com.au, 1 -aussiestoresonline.com, 0 austagencies.com.au, 1 austbrokers.com.au, 1 austcm.com.au, 1 @@ -15834,7 +15742,6 @@ austinbestdjs.com, 1 austincardiac.com, 1 austincenters.com, 1 -austincosmetic.com, 1 austinface.com, 1 austinlaw.co.uk, 1 austinnoll.com, 1 @@ -15956,7 +15863,6 @@ autoamericas.show, 1 autoamor.com.br, 1 autoangels.ga, 1 -autoanzeige.com, 1 autoauctionsarizona.com, 1 autoauctionsohio.com, 1 autoauctionsvirginia.com, 1 @@ -15972,7 +15878,7 @@ autobot.com.ua, 1 autobourcier.com, 1 autobraga.ru, 0 -autobudget.money, 1 +autobudget.money, 0 autobus.roma.it, 1 autobuseros4ever.tk, 1 autobusesonline.tk, 1 @@ -15988,7 +15894,7 @@ autochangelog.com, 1 autocheck.co.nz, 1 autocirkel.tk, 1 -autoclean93.fr, 1 +autoclean93.fr, 0 autocmall.com, 1 autocoder.chat, 1 autoconcept.ga, 1 @@ -16038,8 +15944,6 @@ autohit.ro, 1 autohomehub.com, 1 autohunt.ga, 1 -autohut.ca, 1 -autohuttruckcenter.ca, 1 autohysi.com, 1 autoi.ch, 1 autoindustriya.com, 1 @@ -16055,7 +15959,6 @@ autokovrik-diskont.ru, 1 autolackpartner.de, 1 autolatex.cf, 1 -autolawetawroclaw.pl, 1 autoledky.sk, 1 autolet.tk, 1 autoline.link, 1 @@ -16064,13 +15967,12 @@ automagischeberegening.nl, 1 automastercastlerock.com, 1 automateanything.pro, 1 -automatedcloud.africa, 1 automaticagarage.it, 1 automationlab.it.com, 1 automationpro.me, 1 automationsforum.se, 1 automationstore.ga, 1 -automatyczna-identyfikacja.pl, 1 +automatizalok.com, 1 automaxcovington.com, 1 automecanicadosgalegos.pt, 1 automecanicagalegos.pt, 1 @@ -16245,6 +16147,7 @@ autonomie-numerique.fr, 1 autonovinky.cz, 1 autoofficina.it, 1 +autoopravarjunior.cz, 1 autopadconnect.com, 1 autopapo.com.br, 1 autoparts-for-foreigncars.tk, 1 @@ -16363,7 +16266,6 @@ auventsettoilesregional.ca, 1 auventsettoilesregional.com, 1 auvernet.org, 1 -auversum.com, 1 auvicom.nl, 1 auvidos.ru, 1 auviewpoint.tk, 1 @@ -16394,12 +16296,10 @@ avabuswell.com, 1 avacatossiu.tk, 1 avaclub.ga, 1 -avacourcelles.com, 1 avaemr-development-environment.ca, 1 avafrance.fr, 1 avagroup.ga, 1 avaibooksports.com, 1 -avail-sw.io, 1 available.direct, 1 available.is, 1 availablecastles.com, 1 @@ -16479,7 +16379,7 @@ aveclunettesoleil.fr, 1 avecsans.studio, 1 avedesk.org, 0 -avedisrecovery.com, 1 +avedisrecovery.com, 0 aveenstra.com, 1 avegaedge.com, 1 avelengo.org, 1 @@ -16602,6 +16502,7 @@ avisoversigten.dk, 1 avispl.com, 0 avitahealth.org, 1 +avitamd.com, 1 avitek.ru, 1 avitus.hu, 1 aviv-group.at, 1 @@ -16610,6 +16511,7 @@ aviweisfogelinfo.org, 1 avland.me, 1 avlasov.tk, 1 +avlevin.ru, 1 avlrooms.com, 1 avm-multimedia.com, 1 avm99963.com, 1 @@ -16635,9 +16537,7 @@ avocatpenal.net, 1 avocatro.net, 1 avodart.ml, 1 -avogel-company.ch, 1 avogel.ca, 1 -avogel.ch, 1 avogel.co.uk, 1 avogel.de, 1 avogel.gr, 1 @@ -16645,7 +16545,6 @@ avogel.nl, 1 avogel.pt, 1 avogel.si, 1 -avoiding-complexity.de, 1 avoids-troops.gq, 1 avoinna24.fi, 1 avoir.no, 1 @@ -16653,6 +16552,7 @@ avondaleestatesga.gov, 1 avonindiana.gov, 1 avonlearningcampus.com, 1 +avonture.be, 1 avonturierszondergrenzen.nl, 1 avontuurlijk-natuurlijk.be, 1 avonvets.co.uk, 1 @@ -16691,7 +16591,6 @@ avtojurist.ml, 1 avtojurist.tk, 1 avtokar12.ru, 1 -avtom.by, 1 avtomaniya.ml, 1 avtomaniya.tk, 1 avtomarket.ru, 1 @@ -16762,7 +16661,6 @@ awesomeindie.com, 1 awesomelifedeals.today, 1 awesomeperfumes.com, 1 -awesomeprivatetours.com, 1 awesomesheep48.ca, 1 awesomesit.es, 0 awet.info, 1 @@ -16796,7 +16694,6 @@ awsl.tech, 0 awsnuke.com, 1 awsome-books.co.uk, 1 -awssman.com, 1 awsumchan.org, 1 awtogid.com, 1 awxg.com, 1 @@ -16879,6 +16776,7 @@ axisclinico.com, 1 axisdesignarchitects.co.uk, 1 axisdesignarchitects.com, 1 +axisdetailing-wilanow.pl, 1 axisinteriors.net, 1 axisortho.com.sg, 1 axispointarchitects.com, 1 @@ -16919,14 +16817,16 @@ axyl.cloud, 1 axzq.com, 1 ay-net.jp, 1 -ay-tour.ru, 1 ayakatenshi.tk, 1 ayamchikchik.com, 1 ayanomimi.com, 1 ayanrp.com, 1 ayari-yassine.com, 1 +ayasec.ai, 1 ayashev.kz, 1 ayatacademy.net, 1 +ayatolladeath.live, 1 +ayatollahdeath.com, 1 ayatosuzuki.com, 1 aybhjm.me, 1 aycacankurt.com, 1 @@ -17078,7 +16978,6 @@ azafraneshelca.es, 1 azaleos.com, 1 azalhavayolu.com.tr, 1 -azapp-vvv-program-api-dev.azurewebsites.net, 1 azaria.blog, 1 azarkepic.com, 1 azartmania.ga, 1 @@ -17086,6 +16985,7 @@ azarus.ch, 1 azarweb.tk, 1 azauditor.gov, 1 +azbuka-bp.com.ua, 1 azbuka-bp.ru, 0 azbuka-kharkov.com.ua, 1 azcensus2020.gov, 1 @@ -17107,6 +17007,7 @@ azeronline.tk, 1 azertyjobs.com, 1 azey.net, 1 +azf.my.id, 1 azfreaks.tk, 1 azh-kunden.de, 1 azhamevents.com, 1 @@ -17151,6 +17052,7 @@ azredistricting.gov, 1 azrevolutionizingckd.com, 1 azrhymes.com, 1 +azs-nw.ru, 1 azsalud.gov, 1 azsec.biz, 1 azshop.ro, 1 @@ -17159,7 +17061,8 @@ azsupport.com, 1 azsupport.host, 1 azsupport.org, 1 -azt.tec.br, 1 +azt.tec.br, 0 +azte.co, 1 aztecagents.ai, 1 azteenmagazine.com, 1 aztestsmartviewwebapp.azurewebsites.net, 1 @@ -17179,7 +17082,6 @@ azula.tk, 1 azulweb.tk, 1 azur.ovh, 1 -azura-retreats.com, 1 azure, 1 azure-informatique.cloud, 1 azure-rbac-catalog.org, 1 @@ -17219,6 +17121,7 @@ b-lenos.com, 1 b-m-druck.de, 1 b-root-force.de, 1 +b-sec.gmbh, 1 b-secure.co, 1 b-services.net, 0 b-swiss.com, 1 @@ -17258,9 +17161,9 @@ b2bmail.ga, 1 b2bpoke.com, 1 b2it.com.ar, 1 -b2markt.de, 1 b2music.asia, 1 b2og.com, 1 +b2s.org, 1 b3313.org, 1 b3bra.win, 1 b3ia.com, 1 @@ -17278,7 +17181,6 @@ b5i.net, 1 b61688.com, 1 b62aa.com, 1 -b62b.com, 0 b62bb.com, 1 b62cc.com, 1 b62d.com, 1 @@ -17288,7 +17190,6 @@ b6703.com, 1 b6705.com, 1 b6729.co, 1 -b67701.com, 1 b67702.com, 1 b67703.com, 1 b67704.com, 1 @@ -17297,7 +17198,6 @@ b67802.com, 1 b67803.com, 1 b67805.com, 1 -b67901.com, 0 b67902.com, 0 b67903.com, 0 b67904.com, 0 @@ -17416,7 +17316,6 @@ babehunt.tk, 1 babekids.tk, 1 babel.es, 1 -babel.nl, 1 babel.ua, 1 babeleo.com, 1 babelfish.money, 1 @@ -17456,6 +17355,7 @@ babybed.tk, 1 babyboom.pl, 1 babyboomer.org, 1 +babyboomer.ro, 1 babybuddah.ga, 1 babybug.ru, 1 babybunnypictures.tk, 1 @@ -17463,7 +17363,6 @@ babycenter.com, 1 babycezi.ro, 1 babychou.me, 1 -babycr.net, 1 babyfest.nl, 1 babyfights.tk, 1 babyfotograf-schweiz.ch, 1 @@ -17472,7 +17371,6 @@ babygrandegolf.com, 1 babyhealthsummit.pt, 1 babyhop.pl, 1 -babyinthehouse.com.br, 1 babykappy.com, 1 babylonclub.cf, 1 babymall.hk, 1 @@ -17536,7 +17434,7 @@ bachmannyachts.com, 1 bachmatt-baar.ch, 1 bachngocsach.com.vn, 1 -bachoodesign.com, 1 +bachoodesign.com, 0 bachphoto.com, 1 bachweid-baar.ch, 1 baciu.ch, 0 @@ -17549,12 +17447,11 @@ backbay.nl, 1 backd00red.org, 1 backedbycanadians.ca, 0 -backenmachtgluecklich.de, 0 +backenmachtgluecklich.de, 1 backgroundscreenersofamerica.com, 1 backgroundstories.com, 1 backgroundz.net, 1 backhq.com, 1 -backingtrackbrasil.com, 1 backinstockalerts.com, 1 backjump.tk, 1 backlashband.tk, 1 @@ -17583,6 +17480,7 @@ backschues.net, 1 backslash-n.com, 1 backsliderz.uk, 1 +backstage.click, 1 backstienkboys.tk, 1 backstreetbrasil.tk, 1 backstreets-corner.tk, 1 @@ -17754,6 +17652,8 @@ bagsofbounce.co.uk, 1 bagspecialist.nl, 1 bagssale.ga, 1 +bagsterandsons.com, 1 +bagsterautorestorations.com, 1 bagu.biz, 1 bagu.fr, 1 bagumum-kotakediri.com, 1 @@ -17802,6 +17702,7 @@ bailodromo.tk, 1 bailong.kr.ua, 1 bailonga.com, 1 +baimail.com, 1 bain-savon.co.uk, 1 baindayman.com, 1 baindetoile.fr, 1 @@ -17809,7 +17710,6 @@ baipush.ddns.net, 1 baipush1.ddns.net, 1 baircentral.com, 1 -baires.host, 1 bairuo.top, 0 bairwell.com, 1 baise.cf, 1 @@ -17846,9 +17746,9 @@ baka.org.cn, 1 baka.red, 1 bakabt.info, 1 +bakacam.com, 1 bakanin.ru, 1 bakaproxy.moe, 1 -bakar.ca, 1 bakbi.tk, 1 bakchich.biz, 1 bakcor.com, 1 @@ -17893,7 +17793,6 @@ balabarsakhtemani.com, 1 balade-commune.ch, 0 baladecommune.ch, 0 -balador.io, 1 baladygov.com, 1 balafon.cloud, 1 balaganlimited.cf, 1 @@ -17963,7 +17862,6 @@ baliwebsitedesign.info, 1 balkan-observatory.net, 1 balkannightlife.ga, 1 -balkanpharmstore.com, 1 balkoni.gq, 1 balkonien.org, 0 balkonov.com.ua, 1 @@ -18036,7 +17934,7 @@ bamboorose.com, 1 bamboostage.com, 1 bambooviews.com, 1 -bambora.com, 1 +bambora.com, 0 bambrick.com.au, 0 bambuitalia.it, 1 bambukshop.ml, 1 @@ -18057,8 +17955,8 @@ banafsheh.net, 1 banajanitorialservices.com, 1 banananet.work, 1 +bananaspace.co, 1 bananathrash.tk, 1 -bananatreenews.today, 1 bananatrunkingprotocol.com, 1 bananavapes.com, 1 bananenbr0t.de, 1 @@ -18088,7 +17986,7 @@ bandademusicacarrion.tk, 1 bandadestino.tk, 1 bandainamcoent.eu, 1 -bandally.net, 1 +bandally.net, 0 bandamirandadeebro.tk, 1 bandarifamily.com, 1 bandaronline.ml, 1 @@ -18125,11 +18023,11 @@ bandymasarna.tk, 1 baneh-academic.com, 1 banehunter.com, 0 +banelalesend.com, 1 banerka.tk, 1 banes-lab.com, 1 banes.ch, 1 banfieldentertowin.com, 0 -banfieldtravel.it, 1 bangabandhu.tk, 1 bangbangboys.tk, 1 bangberlin.tk, 1 @@ -18144,7 +18042,6 @@ bangkokflightservices.com, 1 bangkoklife.com, 1 bangku.tk, 1 -bangladeshembassy.de, 1 bangladesimagi.tk, 1 banglahotstory.tk, 1 banglargolpo.tk, 1 @@ -18160,7 +18057,6 @@ banja-kulasi.ga, 1 banjonelson.tk, 1 bank, 1 -bank-abc.com, 1 bank-credit.org, 1 bank-laan.dk, 1 bank-yahav.co.il, 1 @@ -18202,7 +18098,7 @@ banknews.ga, 1 banknottakip.com, 1 bankofabbeville.com, 1 -bankofhankou.com, 1 +bankofkunlun.com, 1 bankofrealty.review, 1 bankofthesierra.com, 1 bankpolicies.com, 1 @@ -18219,6 +18115,7 @@ bankvanbreda.be, 0 bankwithfidelity.com, 1 bankwithpioneer.com, 1 +bankx.pl, 1 banmapvn.com, 1 banned-bitches.tk, 1 banner-design.tk, 1 @@ -18240,8 +18137,6 @@ banquevanbreda.be, 0 bansenkou.co.jp, 1 bantaihost.com, 1 -bantchev.com, 1 -bantchev.net, 1 bantenmien.tk, 1 banter.city, 1 bantiki.ga, 1 @@ -18266,7 +18161,6 @@ baoqibiao.com, 1 baoquangninh.vn, 1 baoxiache.com, 1 -baoxue5.com, 0 baoyoany.xyz, 1 baoyony.com, 1 baoyony.xyz, 1 @@ -18283,6 +18177,7 @@ bar-rique.de, 1 bar-valhalla.tk, 1 bar38.tk, 1 +baraba.sh, 1 baraboowi.gov, 1 barabrume.fr, 1 baracca.es, 1 @@ -18318,7 +18213,6 @@ barbiecollectorjapan.gq, 1 barbieforteza.tk, 1 barbinlaw.com, 1 -barbnow.com, 0 barbonnetje.nl, 1 barbosha.ru, 1 barbourcountyal.gov, 1 @@ -18386,6 +18280,7 @@ barinov.tk, 1 baripedia.org, 0 baris-sagdic.com, 1 +bariscan.co, 1 bariseau-mottrie.be, 1 barisi.me, 1 baristador.com, 1 @@ -18397,6 +18292,7 @@ barkio.com, 1 barklanepets.com, 0 barkmembership.com, 1 +barkparks.dog, 1 barkstop.net, 1 barlaplana.es, 1 barlettaviva.it, 1 @@ -18413,10 +18309,12 @@ barnacional.com.au, 1 barnaul-altai.tk, 1 barnaul-news.net, 1 +barnesfamilyroofplumbing.com.au, 1 barnesmoregapgreenway.ie, 1 barnesvilleohio.gov, 1 barneveldcentrum.nl, 1 barney-media.com, 1 +barnflix.net, 1 barnhomega.com, 1 barnman.de, 1 barnumiidev.com, 1 @@ -18462,6 +18360,7 @@ barreiroappraisals.com, 1 barrelfish.org, 1 barrencountyky.gov, 1 +barrera.capital, 1 barrierefreie-medien.info, 1 barrierpestservices.com, 1 barrikade.tk, 1 @@ -18499,6 +18398,7 @@ bartholf.nu, 1 bartlamboo.nl, 1 bartlettil.gov, 1 +bartoccini.me, 1 bartolomebellido.com, 1 bartonmohealth.gov, 1 bartowcountyga.gov, 1 @@ -18563,6 +18463,7 @@ basenio.de, 1 baseresources.com.au, 1 baserverz.ga, 1 +basetherm.com, 1 basetruck.cn, 1 basevtc.fr, 1 baseweb.design, 1 @@ -18675,14 +18576,11 @@ batacas.com, 1 batacatalogo.pe, 1 batailleros.tk, 1 -bataindustrials.ca, 1 bataindustrials.cl, 1 bataindustrials.co.id, 1 bataindustrials.co.in, 1 bataindustrials.co.nz, 1 -bataindustrials.co.th, 1 bataindustrials.co.za, 1 -bataindustrials.com, 1 bataindustrials.com.au, 1 bataindustrials.com.bo, 1 bataindustrials.com.co, 1 @@ -18708,7 +18606,7 @@ batechnic.dk, 1 batelco.com, 1 batemanbuilds.com, 1 -bateriaprofesional.es, 1 +bateriaprofesional.es, 0 baterias.com, 1 bateriasencasa.com, 1 baterioverolety.cz, 1 @@ -18720,6 +18618,7 @@ bath.ltd.uk, 1 bath.men, 1 bath.university, 1 +batharbog.com, 1 bathbodyshop.tk, 1 bathcountyva.gov, 1 bathok.tk, 1 @@ -18770,7 +18669,6 @@ battlefrontoldschool.cf, 1 battlegroundproductions.org, 1 battleguard.net, 1 -battleleague.com.br, 1 battlemedialab.com, 1 battlerealms.cc, 1 battlerite.tk, 1 @@ -18779,7 +18677,6 @@ battreil.tk, 1 batualam88.id, 1 batualam88.online, 1 -batucadastore.nl, 1 batucilegon.com, 1 batukhan.tk, 1 batulicin.tk, 1 @@ -18828,6 +18725,7 @@ bauhoftoo.ee, 1 baukebies.nl, 1 baukelek.tk, 1 +baukultur.ca, 1 baulio.de, 1 baum-gruenpflege.de, 1 baumamont.net, 1 @@ -18849,6 +18747,7 @@ bauthier-occasions.be, 0 bautizodelucia.com, 1 bauwerks-doktor.de, 1 +bav-institut.de, 1 bav.com, 1 bavaria-feuerloeschershop.de, 1 bavarovillage.com, 1 @@ -18876,7 +18775,7 @@ bayarea.gq, 1 bayarea.ml, 1 bayarea.tk, 1 -bayareaexteriorsmd.com, 1 +bayareaexteriorsmd.com, 0 bayareamustangs.tk, 1 bayareaplasticsurgery.com, 1 bayashi.net, 1 @@ -18941,7 +18840,7 @@ bazarow.ru, 0 bazdell.com, 0 baze.cz, 1 -bazel.build, 1 +bazel.build, 0 bazhan.wang, 1 bazinga-events.nl, 1 bazis-kazan.ru, 1 @@ -18953,7 +18852,6 @@ bazos.sk, 1 bb-aroundtheworld.se, 1 bb-es.ca, 1 -bb-vinimport.dk, 1 bb.church, 1 bb37roma.it, 1 bb5197.co, 1 @@ -19027,7 +18925,7 @@ bbwpussytube.com, 1 bbwsexclips.com, 1 bbwteens.org, 1 -bbx.bike, 0 +bbx.bike, 1 bbxin9.net, 1 bbxy.buzz, 1 bc-bd.org, 0 @@ -19064,6 +18962,7 @@ bchep.com, 1 bciltransit.gov, 1 bcited.ai, 1 +bcito.org.nz, 1 bck-lelystad.nl, 1 bckl.me, 1 bclserver.se, 1 @@ -19074,7 +18973,6 @@ bcnet.com.hk, 1 bcoffices.com.mx, 1 bcomm.com.au, 1 -bconcept.be, 1 bcoverart.com, 1 bcpc-ccgpfcheminots.com, 1 bcrnews.tk, 1 @@ -19181,7 +19079,6 @@ beacinsight.com, 1 beacon.bio, 1 beaconcapital.com, 1 -beaconcart.com, 1 beacondb.net, 1 beaconfed.org, 1 beaconhealthoptions.com, 1 @@ -19228,7 +19125,6 @@ bearby.io, 1 bearcloud.id.lv, 1 bearcosports.com.br, 1 -bearcreekcubschildcare.com, 0 bearcreektownshipmi.gov, 1 beard.se, 1 bearded.sexy, 1 @@ -19242,7 +19138,6 @@ bearingworks.com, 1 bearisfair.com, 1 bearlakelife.com, 1 -bearly.ai, 1 bearosaka.com, 1 bearrecords.tk, 1 bearrun.com, 1 @@ -19261,6 +19156,7 @@ beatbikers.com, 1 beatbox.zone, 1 beatbreaker.tk, 1 +beaterstudios.com, 1 beatfeld.de, 1 beatfreaks.tk, 1 beatify.ca, 1 @@ -19318,7 +19214,6 @@ beauty-woman.tk, 1 beauty-yan-enterprise.com, 1 beauty.moe, 0 -beauty24.de, 1 beauty2home.net, 1 beauty77.ch, 1 beautyandboutique.tk, 1 @@ -19343,7 +19238,7 @@ beautylodge.ro, 1 beautynfacts.com, 1 beautyoverture.com, 1 -beautyqlick.com, 1 +beautypages.com.br, 1 beautyschool.od.ua, 1 beautyshots-hamburg.de, 1 beautyspot.tk, 1 @@ -19379,7 +19274,6 @@ beavertails.com, 1 beavertales.ca, 1 beavillabea.it, 1 -beavivo.de, 0 beavrdock.com, 1 beavredock.com, 1 bebaspedia.com, 1 @@ -19440,6 +19334,7 @@ bebro.loan, 1 bebrochka.loan, 1 becallgroup.com, 1 +became.info, 1 becausecapitalism.org, 1 becausewematterlv.com, 1 becausewematterlv.org, 1 @@ -19492,6 +19387,7 @@ bedfordnissanparts.com, 1 bedfordpay.co.uk, 1 bedful.com, 1 +bedhosting.com.br, 1 bedienungsanleitung-deutsch.de, 1 bedienungsanleitung24.de, 1 bedinfo.com, 1 @@ -19513,7 +19409,6 @@ bedrocksoftware.co.uk, 1 bedrockstreaming.com, 1 bedrukt.nl, 1 -bedskill.com, 1 bedste-datingsites.dk, 1 bedstecasinobonusser.dk, 1 bedtco.com, 1 @@ -19564,6 +19459,7 @@ beeming.net, 1 beemprimelogistics.com, 1 beencrypted.com, 1 +beenleighpersonaltrainers.com, 1 beenox.com, 1 beeone.nl, 1 beep.vip, 1 @@ -19587,6 +19483,7 @@ beerjet.bg, 1 beerloga.tk, 1 beernews.ga, 1 +beerpongme.com, 1 beerradar.no, 1 beerradar.party, 1 beersandco.ch, 1 @@ -19605,6 +19502,7 @@ beesnoosa.com, 1 beesoft.com.vn, 1 beesolve.com, 1 +beesparked.nl, 1 beesquare.fr, 0 beestation13.com, 1 beesupport.co.uk, 1 @@ -19620,6 +19518,7 @@ beezkneezcastles.co.uk, 1 beeznest.com, 1 befantasy.tk, 1 +befaster.fit, 1 beffeet.com, 1 befoodsafe.gov, 1 before-and-after.ro, 1 @@ -19636,7 +19535,6 @@ begin-motorcycling.co.uk, 1 begleitung-zuhause.at, 1 begonias.tk, 1 -begovel.shop, 1 begravningaristockholm.se, 1 begravningdirekt.se, 1 begravningikyrkan.com, 1 @@ -19672,6 +19570,7 @@ behealthoncologia.com, 1 behealthyeveryday.eu, 1 behealthyoga.com, 1 +beheeronline.nl, 1 behemoth.cf, 1 beherebethefuture.nl, 1 beherit.pl, 1 @@ -19793,6 +19692,7 @@ belgorod-news.ru, 1 belgorod.ml, 1 belgrademt.gov, 1 +belgrap.nl, 1 belgraver.email, 1 belgraver.eu, 1 belgraver.xyz, 1 @@ -19821,7 +19721,6 @@ bell-meet.de, 1 bell.id.au, 1 bella-abyssinia.tk, 1 -bella-klein.org, 1 bella.network, 1 bellaaroma.com.tw, 1 bellacanzone.it, 1 @@ -19836,7 +19735,6 @@ bellamy.cloud, 1 bellanews.tk, 1 bellaslokal.de, 1 -bellatight.com, 1 bellcarrington.com, 1 belle-bete.ca, 1 belle-epoque-toys.com, 1 @@ -19917,7 +19815,6 @@ bembee.tk, 1 bembem.de, 1 bembergestatewines.com, 1 -bemergroup.com, 1 bemindful.life, 1 bempensadoconsul.com.br, 1 bemsa-gent.be, 1 @@ -19980,7 +19877,6 @@ benedictoaguilar.tech, 1 benedikto.tk, 1 benedyktynki-sakramentki.org, 1 -benedyktynki.info, 1 benee-awraham.nl, 1 benefactgroup.com, 1 benefeds.com, 1 @@ -20019,7 +19915,6 @@ bengalifake.tk, 1 bengalmania.org, 1 bengaltourism.ml, 1 -bengalurugifts.com, 1 bengaratei.com, 1 bengisureklam.com, 1 bengkelkeramik.tk, 1 @@ -20034,7 +19929,6 @@ beniajan.tk, 1 benicee.com, 1 benidormcd.tk, 1 -benihbaik.com, 1 benimsetin.com, 1 benimsetin.org, 1 beninca.link, 1 @@ -20066,7 +19960,6 @@ benleemd.com, 1 benmack.net, 1 benmarron.co.uk, 1 -benmedia.nl, 1 bennet.org, 0 bennettrainey.com, 1 bennettsbouncycastlehire.co.uk, 1 @@ -20145,7 +20038,6 @@ beospain.tk, 1 bep.gov, 1 bephoenix.org.uk, 0 -bepick.blog, 1 bepositive.ml, 1 bepxl.art, 1 bepzi.com, 1 @@ -20317,7 +20209,6 @@ bernerland.cf, 1 bernerland.tk, 1 bernersennen.tk, 1 -berngardt.com, 1 bernhard-eicher.ch, 1 bernhard-resch.at, 1 bernhard-resch.com, 1 @@ -20357,7 +20248,6 @@ berrycheapers.ga, 1 berryevent.es, 0 berryglobal.com, 1 -berrypop.info, 1 berryvillear.gov, 1 berserk.gq, 1 berserk.tk, 1 @@ -20407,19 +20297,19 @@ besiconstruct.be, 1 besidemetal.tk, 1 besikta.se, 1 +besinspain.es, 1 beskar.pro, 1 besked.it, 1 besmartautomation.com, 1 besnik.de, 0 besnik.tk, 1 -besola.de, 1 besole.ch, 1 besolov.tk, 1 besox.be, 1 -bespaarbazaar.nl, 1 bespaarenergie.click, 1 bespaarnu.click, 1 bespoiled.nl, 1 +bespokemerchantsolutions.com, 1 bespokespeaker.uk, 1 bespredel.tk, 1 bessels.tk, 1 @@ -20491,10 +20381,12 @@ bestbudseedbank.com, 1 bestbureau.fr, 1 bestbusinessloans.ai, 1 +bestbuyamicus.com, 1 bestbuyzone.com, 1 bestcamshow.tk, 1 bestcanvaswallart.com, 1 bestcarscyprus.com, 1 +bestcasestud.io, 1 bestcavapoos.com, 1 bestclix.ml, 1 bestcms.tk, 1 @@ -20503,6 +20395,7 @@ bestcreditcards.me, 1 bestcreditcards.news, 1 bestcreditcards.tv, 1 +bestdamcountryjam.com, 1 bestdatingsite.ml, 1 bestdatingsite.tk, 1 bestdeal-umzug.de, 1 @@ -20545,7 +20438,6 @@ besti.it, 1 bestiahosting.com, 1 bestiequiz.com, 1 -besties.house, 1 besties4life.ml, 1 bestill.foundation, 1 bestinductioncooktop.us, 1 @@ -20745,7 +20637,6 @@ bestratedremovals.co.uk, 1 bestratedtransport.com.au, 1 bestrating-hengelo.nl, 1 -bestrcparts.com, 0 bestreleases.tk, 1 bestremote.io, 1 bestrongandhomosexual.top, 1 @@ -20754,12 +20645,12 @@ bestsavesnow.shop, 1 bestsextoys.com, 1 bestsheepadoodles.com, 1 +bestshirtdesigns.com, 1 bestshopping.ga, 1 bestshops.ga, 1 bestsiliconereviews.com, 1 bestsingaporelawyer.com, 1 bestsingingbowls.com, 1 -bestsolaris.biz, 1 bestsolution.at, 1 beststock.kr, 1 beststudio.ru, 1 @@ -20770,7 +20661,6 @@ besttrannytube.com, 1 besttraveluk.ga, 1 bestvape.ie, 1 -bestviolin.com, 1 bestvpnrating.com, 1 bestway-disposal.com, 1 bestwebcams.ga, 1 @@ -20891,7 +20781,6 @@ bet909.com, 1 beta-cell.com, 1 beta-site-staging.azurewebsites.net, 1 -beta.pw, 0 betaa0.com, 1 betaa2.com, 1 betaa3.com, 1 @@ -20997,6 +20886,7 @@ bettaline.com.au, 1 bettashoerepairs.com.au, 1 bettendorf.gov, 1 +bettenhaus-schlafoase.de, 0 better.com, 1 better.fyi, 1 betterbaseball.com, 1 @@ -21110,7 +21000,6 @@ beverhof.nl, 1 beverley.tk, 1 beverleycounselling.co.uk, 1 -beverleymoneyman.com, 1 beverly.tk, 1 beverlydrive.tk, 1 beverlyhills.gov, 1 @@ -21189,14 +21078,12 @@ beyondthebalance.com, 1 beyondthecode.io, 1 beyondthecreek.com, 1 -beyondthefive.org, 0 beyondthemoments.com, 1 beyondtherealm.tk, 1 beyondthisrealm.com.au, 1 beyondtv.ga, 1 beyondweb.net, 1 beyondzeroacademy-reservations.fr, 1 -beyoung.in, 1 bezagentstva.cf, 1 bezbarier.org.pl, 1 bezbednostnaradu.com, 1 @@ -21235,7 +21122,7 @@ bfire.pt, 1 bfkcloud.ddns.net, 1 bflcanada.ca, 1 -bflix.tv, 1 +bflcoaching.com, 1 bflw.pl, 1 bfly.tech, 1 bfob.gg, 1 @@ -21289,12 +21176,14 @@ bh-oberland.de, 1 bh.sb, 1 bhacit.com, 0 +bhagavate.ru, 1 bhameshwarigraphics.com, 1 bharam.be, 1 bharat-connect.com, 1 bharat-media.tk, 1 bharat.in, 1 bharatanatyam-dancer.tk, 1 +bharatbillpay.com, 1 bharath-g.in, 1 bharatskills.gov.in, 1 bharatsofttech.com, 1 @@ -21334,8 +21223,7 @@ bhwfx.com, 1 bhxch.moe, 1 bi-greencore.com, 1 -bi-in-beeld.nl, 1 -bi-jenny.net, 1 +bi-in-beeld.nl, 0 bi-medien.de, 1 bi-siparis.com, 1 bi.je, 1 @@ -21387,6 +21275,7 @@ bibl.net, 1 bible-maroc.com, 1 bible4u.net, 1 +bibleanvil.com, 1 biblear.org, 1 biblebaptistconstantine.org, 1 biblebrainhealth.com, 1 @@ -21394,7 +21283,6 @@ biblegen.com, 1 bibleinsiderest.ga, 1 biblemesh.com, 0 -biblemobile.com, 1 biblesearch.tw, 1 biblesignposts.com, 1 bibleversesfordailyliving.com, 1 @@ -21424,13 +21312,10 @@ bibliotecaguate.ml, 1 bibliotecasantaoliva.tk, 1 bibliotecaumana.it, 1 -bibliotech.com.ar, 1 biblioteka-online.tk, 1 biblioteka17.tk, 1 -bibliotekarien.se, 1 bibliotekha.org, 1 bibliotheka.tk, 1 -bibloteka.com, 1 biblura.com, 1 biboran.ga, 1 biboumail.fr, 1 @@ -21461,11 +21346,9 @@ bidenstopdeportations.com, 1 bidenwhitehouse.gov, 1 bidindustry.com, 1 -bidio.sk, 1 bidman.cz, 1 bidoluindirim.com, 1 bidonline.tk, 1 -bidroomai.com, 1 bidswitch.com, 1 bie.edu, 1 bieg.tk, 1 @@ -21478,7 +21361,7 @@ bielemenklen.tk, 1 bielik.io, 0 bielskoclinic.pl, 1 -bieltech.com.br, 1 +bieltech.com.br, 0 biempire.com, 1 bien-etre-beaute.fr, 1 bien-etre-sante.info, 1 @@ -21486,7 +21369,7 @@ biene.rocks, 1 bieneit.de, 1 bienenfreunde.tk, 1 -bienertplus50.de, 1 +bienenkonigin.site, 1 bienestarinmobiliarioyaliadas.com, 1 bienhacerlimpiezas.es, 1 bienici.com, 1 @@ -21565,6 +21448,7 @@ bigbendsentinel.com, 0 bigbenny.tk, 1 bigbit.tk, 1 +bigblockmotors.ru, 1 bigblue.academy, 1 bigblue.co.il, 1 bigbluecomputers.tk, 1 @@ -21578,7 +21462,6 @@ bigbouncebouncycastles.co.uk, 1 bigbouncetheory.co.uk, 1 bigbounceuk.com, 1 -bigbrake.com, 1 bigbrassblog.com, 1 bigbroeyes.com, 1 bigbunce.ru, 0 @@ -21607,13 +21490,13 @@ bigfamilybigprizes.com.au, 1 bigfreebet.com, 1 bigfreebielist.tk, 1 +bigfun.cz, 1 bigfurryfestival.com, 1 biggernews.gq, 1 biggerpicture.agency, 1 biggerpockets.com, 1 -biggerwebapp.com, 1 +biggerwebapp.com, 0 biggestmorningtea.com.au, 1 -biggive.org, 1 biggles.io, 1 biggreeneggeindhoven.nl, 1 biggsconstruction.com, 1 @@ -21710,7 +21593,6 @@ biharujala.com, 1 bijlesbart.nl, 1 bijlesportal.nl, 1 -bijonszelf.nl, 1 bijou.be, 1 bijoux-fantaisies.eu, 1 bijoux.com.br, 1 @@ -21724,6 +21606,7 @@ bike24.de, 1 bikebay.it, 1 bikeclub.tk, 1 +bikedealz.net, 1 bikehistory.org, 1 bikemaniacs.tk, 1 bikemod.de, 1 @@ -21754,6 +21637,7 @@ bikolix.com, 1 bikroy.com, 1 bikyaku.fun, 1 +bilalkartal.com.tr, 1 bilalozdemir.me, 1 bilanca.com.hr, 1 bilar.tk, 1 @@ -21778,7 +21662,6 @@ biletyplus.ru, 1 biletyplus.ua, 1 bilexmoney.com, 1 -bilgehan.net, 1 bilgiliksel.com, 1 bilgisayarkursu.tk, 1 bilgisayarservisi.com, 1 @@ -21793,7 +21676,6 @@ biliti.pl, 1 bility.fr, 1 biliwind.com, 1 -biljettmonster.se, 1 bilke.org, 0 bilkhidma.com, 1 bilkovita.bg, 1 @@ -21830,6 +21712,7 @@ billiardmaster.com.ua, 1 billiardshub.org, 1 billiebikes.com, 1 +billiekia.com, 1 billigastehemsidan.se, 1 billigbegravning.com, 1 billigbegravningsbyra.com, 1 @@ -21870,7 +21753,6 @@ biltiq.ai, 1 biltullen.com, 1 bilyatcho.com, 1 -bim.physio, 1 bimacitizen.com, 1 bimber.nl, 1 bimbingan.tk, 1 @@ -21918,6 +21800,7 @@ bindb.com, 1 binderbud.com, 1 binding-problem.com, 1 +bindingbridgestours.in, 1 binds.co, 1 binero.com, 1 binets.fr, 1 @@ -21947,7 +21830,7 @@ bingothemesers.ga, 1 bingothemesest.ga, 1 bingx.pro, 1 -binhdang.me, 0 +binhdang.me, 1 binhex.net, 1 binhminhpc.com, 1 biniciliksepeti.com, 1 @@ -22051,7 +21934,7 @@ biokal.nl, 1 biokemonline.com, 1 bioknowme.com, 1 -bioknowme.health, 1 +bioknowme.health, 0 biokoeduca.com, 1 biokoxomodding.tk, 1 biolack.cf, 1 @@ -22113,7 +21996,6 @@ bioselect.com.cy, 1 bioshine.com.sg, 1 bioshome.de, 1 -biosignalanalytics.com, 1 biosky.tk, 1 biosmart.pt, 1 biosolveit.de, 1 @@ -22186,17 +22068,16 @@ birkmayeraerospace.com, 1 birman.tk, 1 birminghamal911.gov, 1 -birminghammoneyman.com, 1 birminghamsunset.com, 1 birnenhain.de, 1 birobidjan.tk, 1 birobidzhan-news.net, 1 birod.fr, 1 birone.tk, 1 -bironthemes.com, 0 +bironthemes.com, 1 birosuli.hu, 1 birouldeimagine.ro, 1 -birow.com, 1 +birow.com, 0 birpufnoktasi.com, 1 birra.tk, 1 birrapenombra.tk, 1 @@ -22219,6 +22100,7 @@ bis-jeddah.com, 0 bis.gov, 1 bisa-sis.net, 1 +bisarray.com, 1 bischoff-mathey.family, 1 biscuit.town, 1 biscuitcute.com.br, 1 @@ -22240,14 +22122,12 @@ bismarck-tb.de, 1 bismarcktribune.com, 1 bismi.solutions, 0 -bisnapi.id, 1 -bisnis.com, 1 bisnisesteen.tk, 1 bisnisinternetgratis.tk, 1 -bisnismuda.id, 1 bisnisonlinecerdas.tk, 1 biso.ga, 1 bisoga.ga, 1 +bison-grid.com, 1 bisport.net, 1 bisq.chat, 1 bisq.wiki, 1 @@ -22288,9 +22168,8 @@ bitcalt.ga, 1 bitchesabroad.com, 1 bitchleaks.com, 1 -bitchyjana.com, 1 bitclusive.de, 1 -bitcoin-2go.de, 1 +bitcoin-2go.de, 0 bitcoin-about.tk, 1 bitcoin-casino-no-deposit-bonus.com, 1 bitcoin-class.com, 1 @@ -22335,7 +22214,6 @@ bitcoinissafe.com, 1 bitcoinku.sh, 1 bitcoinkurs.news, 1 -bitcoinkurs.world, 1 bitcoinmotionpro.com, 1 bitcoinnews.world, 1 bitcoinnotbombs.com, 1 @@ -22350,7 +22228,7 @@ bitcointv.com, 1 bitcoinwalletscript.tk, 1 bitcoinwarszawa.pl, 1 -bitcoinwiki.org, 1 +bitcoinwiki.org, 0 bitcoinx.ro, 1 bitcrazy.org, 1 bitcurrents.net, 1 @@ -22382,7 +22260,6 @@ bititrain.com, 1 bitix.tk, 1 bitjunkiehosting.com, 1 -bitkikoruma.com, 1 bitking-signals.com, 1 bitkiselreyonum.com, 1 bitkom-mitgliederportal.de, 1 @@ -22408,6 +22285,7 @@ bitmoji.com, 1 bitms.tk, 1 bitname.it, 1 +bitnet.ge, 1 bitnoder.com, 1 bitnoise.nl, 1 bitnovo.com, 1 @@ -22432,9 +22310,7 @@ bitsimnow.com, 1 bitsimnow.se, 1 bitsler.ie, 1 -bitsmasherinteractive.com, 1 bitso.com, 1 -bitsody.com, 1 bitsoffreedom.nl, 1 bitspaceonline.ml, 1 bitstack.nz, 1 @@ -22472,7 +22348,6 @@ biupay.com.br, 1 biurokarier.edu.pl, 1 biuropulawy.pl, 1 -biurosuszec.pl, 1 biv.lt, 1 bivg.ru, 0 bivoltwebinar.com, 1 @@ -22487,6 +22362,7 @@ biz-seecrets.gq, 1 biz1.sk, 1 biz4x.com, 0 +bizapps.lv, 1 bizarnijaponsko.cz, 1 bizarrefuture.cf, 1 bizbelarus.tk, 1 @@ -22498,6 +22374,7 @@ bizeau.ch, 1 bizfavor.ml, 1 bizgo.nl, 1 +bizi.eu.org, 1 bizibusiness.com, 0 bizify.co.uk, 0 bizinet.cz, 1 @@ -22514,8 +22391,6 @@ biznesowe.pl, 1 biznet.tk, 1 bizniskatalog.mk, 1 -bizontrip.com, 1 -bizophub.com, 1 bizopia.com, 1 bizor.tk, 1 bizpay.su, 1 @@ -22695,14 +22570,12 @@ bkin-43450.xyz, 1 bkin-46680.xyz, 1 bkk24.de, 1 -bkkf.at, 1 bkkposn.com, 1 bklaindia.com, 1 bkli.me, 1 bkositspartytime.co.uk, 1 bkphcoop.com, 1 bkpictures.nl, 1 -bkpm.tj, 1 bkpsdmkku.id, 1 bksites.tk, 1 bkt.to, 1 @@ -22754,7 +22627,6 @@ black-rosella.tk, 1 black-side.tk, 1 black.com, 1 -blackace.tech, 1 blackagendareport.org, 1 blackandblond.tk, 1 blackanddecker.com, 1 @@ -22828,6 +22700,7 @@ blackl.net, 1 blacklabelcourtreporting.com, 1 blacklabellegalservices.com, 1 +blacklabelvault.com, 1 blacklava.tk, 1 blacklightai.com, 1 blacklightparty.be, 1 @@ -22838,7 +22711,6 @@ blackmaleme.com, 1 blackmark.me, 1 blackmaskpro.gq, 1 -blackmesa.com, 1 blackmetalencyclopedia.tk, 1 blackmetalist.tk, 1 blackmetaller.tk, 1 @@ -22905,6 +22777,7 @@ blackvinegarcollection.com, 0 blackwaterlounge.com, 1 blackwaterutilities.tk, 1 +blackwhitelux.com, 1 blackwidow.tk, 1 blackwire.cl, 1 blackwire.tk, 1 @@ -22982,11 +22855,11 @@ blasdelamo.com, 0 blasdelamo.es, 0 blaser.com, 1 -blasflittchen.net, 1 blasorchester-runkel.de, 1 blastentertainment.co.nz, 1 blastentertainment.com.au, 1 blastersklan.com, 1 +blastic.com, 1 blastoffbuisness.in, 1 blastoffdirt.com, 1 blastofftherapy.com, 1 @@ -23006,6 +22879,7 @@ blau-weiss-aachen.de, 1 blau-weiss-stolberg.de, 1 blaudev.es, 1 +blaue-muschel.de, 1 blauejungsbolzum.de, 1 blaugelb-frankfurt.de, 1 blauglockenbaum.de, 1 @@ -23033,7 +22907,6 @@ blblblblbl.fr, 0 bldigital.it, 1 bleachbattalion.tk, 1 -bleachernation.com, 1 bleaching-tipps.de, 1 bleaklyrics.tk, 1 bleatingsheep.org, 1 @@ -23057,13 +22930,11 @@ blessedguy.com, 1 blessibles.com, 1 blessingtransportbromoijen.com, 1 -blessmylife.com, 1 blessrank.com, 1 blesssemijoiasoficial.com.br, 1 bleta.io, 1 bletinsurance.com, 1 bletvip.com, 1 -bleu-roy.com, 1 bleuwire.com, 1 blevinstirepros.com, 0 blewebprojects.com, 1 @@ -23075,6 +22946,7 @@ blids.nl, 1 blieque.co.uk, 1 bliesener.com, 1 +blieweis.at, 1 blijfbij.com, 1 blijfbij.eu, 1 bliker.ga, 1 @@ -23111,6 +22983,8 @@ blink.mortgage, 1 blinkdir.tk, 1 blinkenlight.com.au, 1 +blinkered.au, 1 +blinkered.com.au, 1 blinkhealth.com, 1 blinking.ml, 1 blinklabs.io, 1 @@ -23234,7 +23108,6 @@ blogdimoda.com, 1 blogdimotori.it, 1 blogdosimoveis.com.br, 1 -blogexpress.org, 1 blogfeng.tk, 1 blogforprofit.tk, 1 blogger.ba, 1 @@ -23273,7 +23146,6 @@ blogsnote.xyz, 1 blogsobretecnologia.com, 1 blogspasest.ga, 1 -blogssl.com, 0 blogstar.tk, 1 blogtechnologiczny.pl, 1 blogtheque.com, 1 @@ -23289,8 +23161,6 @@ blomberg.name, 1 bloms.de, 1 blomsbegravning.se, 1 -blonde-hexe.net, 1 -blondeangels.com, 1 bloo.pw, 1 bloob.io, 1 bloobasket.com, 1 @@ -23312,7 +23182,6 @@ bloodybiz-news.tk, 1 bloodycraft.ml, 1 bloodyhawks.tk, 1 -bloom-track.com, 0 bloom.study, 1 bloomberg.com, 0 bloomberglp.com, 0 @@ -23325,7 +23194,6 @@ bloomingwear.com, 1 bloomingwoods.tk, 1 bloomnail.net, 1 -bloomppm.com, 1 bloomscape.com, 1 blooprintcreation.com, 1 blopezabogado.es, 1 @@ -23342,7 +23210,6 @@ bloxyworld.de, 1 blpress.org, 1 blrjmt.com, 1 -blt-avocat-nantes.fr, 0 bltc.co.uk, 1 bltc.com, 1 bltc.net, 1 @@ -23350,7 +23217,6 @@ bltc.org.uk, 1 blu.ee, 1 bluavido.ml, 1 -blubop.fr, 1 blubux.tk, 1 blucoat.com, 1 bluconductor.com, 1 @@ -23393,7 +23259,6 @@ blueflow.pl, 1 bluefrog.ca, 1 bluefrontier.co.uk, 1 -bluefuzz.nl, 1 bluegenji-esport.fr, 1 bluegifts.ro, 1 bluegoat.jp, 1 @@ -23406,9 +23271,8 @@ blueheronbio.com, 1 bluehillme.gov, 1 bluehr.ph, 1 +bluehybrid.io, 1 blueimp.net, 1 -blueinc.com.au, 1 -blueisafety.com, 1 bluejeans.com, 1 bluekrypt.com, 1 blueledgeclassroom.com, 1 @@ -23441,9 +23305,7 @@ blueprints.com, 1 blueprintsdogstudio.com, 1 blueprintue.com, 1 -blueprogarage.com, 1 bluerange.io, 0 -blueremoval.net, 0 blueride.se, 1 blueridgelife.com, 1 blueridgemachinery.com, 1 @@ -23463,7 +23325,6 @@ blueskyinsure.com, 1 blueskywebdesign.net, 1 bluesnews.tk, 1 -bluesoap.com.au, 1 bluespace.ng, 1 bluespaceenvironments.com, 1 bluespirit.com, 1 @@ -23515,7 +23376,7 @@ blumiges-fischbachtal.de, 0 blummedia.de, 1 blundell.wedding, 1 -bluntandsnakes.com, 1 +bluntandsnakes.com, 0 bluprintoncology.com, 1 bluproducts.com.es, 1 bluquist.com, 1 @@ -23535,6 +23396,7 @@ blutspendedienst.com, 1 bluvacanze.it, 1 bluvras.com, 1 +bluwarden.com, 1 bluware.com, 1 bluxus.com, 1 bluzone.io, 1 @@ -23559,7 +23421,6 @@ bmbeads.ro, 1 bmbfiltration.com, 1 bmblawfirm.com, 1 -bme.com, 1 bmelecevolution.com, 1 bmhglobal.com.au, 1 bmicos.com, 1 @@ -23611,6 +23472,7 @@ bnhhospital.com, 1 bnjpro.dk, 1 bnkconsulting.eu, 1 +bnlaw.com.au, 1 bnlegalmedia.com, 1 bnnuy.com, 1 bnpl.kz, 1 @@ -23677,7 +23539,7 @@ bobaobei.org, 1 bobatoo.co.uk, 1 bobbehrendsroofing.com, 1 -bobbielee.co.uk, 1 +bobbielee.co.uk, 0 bobbyfischer.tk, 1 bobbyhardman.co.uk, 1 bobbylondon.co.uk, 1 @@ -23708,7 +23570,6 @@ bobstikkers.be, 1 bobstronomie.fr, 1 bobsvc.com, 1 -bobvincent.com, 1 bocaaboca.ml, 1 bocabeats.tk, 1 bocada.com, 1 @@ -23743,7 +23604,6 @@ bodkov.com, 1 bodlsc.com, 1 bodrumescmagazin.tk, 1 -bodrus.com, 1 bodsch.com, 1 bodumo.com, 1 bodusod.bg, 1 @@ -23761,6 +23621,7 @@ bodymod.tk, 1 bodymusclejournal.com, 1 bodyofevidence.ca, 1 +bodyologypps.com.au, 1 bodypainting.waw.pl, 1 bodyshaping.ml, 1 bodyshopnews.net, 1 @@ -23780,6 +23641,7 @@ boenyc.gov, 1 boerandolphcountyga.gov, 1 boerderijspel.nl, 1 +boerse.de, 1 boesenlaw.com, 1 boevik.ml, 1 boew.de, 1 @@ -23825,7 +23687,6 @@ boissy-la-riviere.fr, 1 boizeau.fr, 1 bojan.tk, 1 -bojanowskiszkolka.pl, 1 bojianpeng.com, 1 bojiu99.cc, 1 bojoproductions.tk, 1 @@ -23862,7 +23723,6 @@ boldstrokesbooks.com, 1 boldthinkcreative.com, 1 bolduae.com, 1 -bolehvpn.net, 1 bolektro.de, 1 bolele.org, 1 boleleboyz.org, 1 @@ -23905,6 +23765,7 @@ bolos.tk, 1 bolosbatiente.tk, 1 bolsa.tk, 1 +bolsalab.org, 1 bolsasbellagio.com.br, 1 bolshevik.tk, 1 bolshoi.tk, 1 @@ -23974,7 +23835,6 @@ bonapeti.ml, 1 bonaselect.lv, 1 bonbonka.best, 1 -bonbonmania.com, 1 bonbonshop.ro, 1 bonchaboncha.com.tw, 1 bondagefetishstore.com, 1 @@ -24024,7 +23884,6 @@ bonificareambiente.it, 1 bonify.de, 1 bonita.com.br, 1 -bonitadesax.com, 1 bonitamacas.tk, 1 bonitaslecturas.ml, 1 bonitasoft.com, 0 @@ -24047,10 +23906,8 @@ bonniedraw.com, 1 bonnieferrero.com, 0 bonniemistcarwash.com, 1 -bonniestylez.net, 1 bonnins.co.za, 1 bonnsustainabilityportal.de, 1 -bonnydevil.com, 1 bonobo.cz, 1 bonoculturajoven.gob.es, 1 bononiaestate.com, 1 @@ -24113,6 +23970,7 @@ bookinghealth.com, 1 bookingkoala.com, 1 bookinglane.com, 0 +bookingmed.hr, 1 bookingready.com, 1 bookingsrit.tk, 1 bookingtool.com, 1 @@ -24151,7 +24009,6 @@ books4school.com, 1 booksales.tk, 1 booksandcoffee.ml, 1 -bookshaper.ai, 1 bookshare.me, 1 bookshopofindia.com, 1 booksinthefridge.at, 1 @@ -24160,7 +24017,6 @@ bookstores.gq, 1 bookstrap.ga, 1 booksy.com, 1 -bookultra.com, 1 bookvuz.tk, 1 bookworld.gr, 1 bookwormstory.social, 1 @@ -24206,7 +24062,6 @@ booshka.ga, 1 boosinflatablegames.co.uk, 1 boosmanpoolservice.com, 1 -boost-it-solutions.nl, 1 boost.ink, 1 boostdesign.tk, 1 boostenergy.com, 1 @@ -24218,7 +24073,7 @@ boot-berlin.de, 1 bootcampkatwijk.nl, 1 boothillcasino.com, 1 -boothukathalu.in, 1 +boothukathalu.in, 0 bootlabs.net, 1 bootrading.com, 1 boots-shop.tk, 1 @@ -24317,7 +24172,6 @@ bornhack.dk, 1 bornreality.tk, 1 borntobetogether.eu, 1 -borntocover.pl, 1 borntoraid.com, 1 borofamilylegal.com, 1 boros.party, 1 @@ -24357,9 +24211,9 @@ bosdubica.tk, 1 bosekarmelitky.cz, 1 bosengineering.be, 1 +bosexz.com, 1 bosfood.de, 1 boskant.tk, 1 -bosmanka.com, 1 bosnia-online.tk, 1 bosonogka.tk, 1 bospiraat.tk, 1 @@ -24407,14 +24261,13 @@ botanymaxlanka.com, 1 botarticle.ga, 1 botbrother.ml, 1 -botchat.ca, 1 botealis.ch, 0 botebote.lt, 1 botelegram.tk, 1 botguard.net, 1 boticadiservicio.com, 1 botija.tk, 1 -botika.online, 1 +botika.online, 0 botikadiservisio.com, 1 botipedia.tk, 1 botmaker.tk, 1 @@ -24425,6 +24278,7 @@ botosani24.ro, 1 botox.bz, 1 botpago.cl, 1 +botpartshop.com, 1 botschaft.digital, 1 botschaften-an-das-volk-gottes.de, 0 botseller.ai, 1 @@ -24455,7 +24309,6 @@ boudah.pl, 1 boudasedesatka.cz, 1 bouffartigue.fr, 1 -boufs.be, 1 bougeer.gent, 1 bougepourtoi.tk, 1 bougeret.fr, 1 @@ -24481,7 +24334,6 @@ boulderswap.com, 1 boulderwagonroad.org, 1 boulebar.duckdns.org, 1 -boulevard-ruijschenbergh.nl, 1 boulstory.ru, 1 boulzicourt.fr, 1 bouma.social, 1 @@ -24562,6 +24414,7 @@ bounouh.tk, 1 bountiful.ag, 1 bountiful.gov, 1 +bountifulberks.org, 1 bounty.software, 1 bountyfactory.io, 0 bountyhunter.tk, 1 @@ -24585,7 +24438,6 @@ bousai-stock.jp, 1 boutique-box-internet.fr, 0 boutique-opinioes.pt, 1 -boutiquedelhogar.cl, 1 boutiquedoartista.com.br, 1 boutiqueguenaelleverdin.com, 1 boutiquegus.com, 1 @@ -24721,6 +24573,7 @@ bpowell.net, 1 bppulsefleet.com, 1 bpscexamprep.com, 1 +bpsdev.org.uk, 1 bpsis.fr, 1 bpvgoncalves.com, 1 bpvr.ddns.net, 1 @@ -24786,6 +24639,7 @@ brahammn.gov, 1 brahma.world, 1 brahmaclub.nl, 1 +braials.com, 1 braiampeguero.xyz, 1 braiderskaparty.cz, 1 braidice.ga, 1 @@ -24827,7 +24681,6 @@ brainsoftict.nl, 1 brainspawn.tk, 1 brainstache.com, 1 -brainstarling.com, 1 brainstew.tk, 1 brainstorm-audit.bg, 1 brainstormproductions.tk, 1 @@ -24881,10 +24734,12 @@ brandcodestyle.com, 0 brande.ai, 1 brandefense.io, 1 +brandenbauer.com, 1 brandenburgertheater.de, 1 brandeps.com, 1 brandfactory.ml, 1 brandfolder.com, 1 +brandfoto.com, 1 brandhost.tk, 1 brandhout-b-tree.be, 1 brandingcoapps.com, 1 @@ -24912,6 +24767,7 @@ brandons.site, 1 brandontaylor-black.com, 1 brandonweeks.com, 1 +brandpilot.one, 1 brandrocket.dk, 1 brands-clothings.tk, 1 brands-polo.cf, 1 @@ -24955,7 +24811,7 @@ brasil66.tk, 1 brasilandia.tk, 1 brasilcheats.tk, 1 -brasilcursinhos.org, 1 +brasilcursinhos.org, 0 brasilduino.tk, 1 brasilemergenciasmedicas.com.br, 1 brasiliademinasnet.tk, 1 @@ -24976,7 +24832,6 @@ brasshow.com.br, 1 brasspipedreams.org, 1 bratan.ga, 1 -bratgen.net, 1 bratkartoffelking.de, 1 bratskmuseum.ru, 1 bratstvo.tk, 1 @@ -24987,6 +24842,7 @@ brau-ingenieur.de, 1 braudoktor.de, 1 brauingenieur.de, 1 +braumo.com, 1 braunbergerfreelance.com, 1 braunpodiatryplus.com, 1 braunsteinpc.com, 0 @@ -24994,7 +24850,7 @@ brausch.co.nz, 1 brauschtrucking.co.nz, 1 brausestube.de, 1 -brava.cards, 1 +brava.cards, 0 bravaterravinhos.com.br, 1 brave-foods.ch, 0 brave-foods.com, 0 @@ -25055,17 +24911,18 @@ brc.fj.cn, 1 brck.nl, 1 brcshipsupply.com, 1 -brdelivery.com.br, 1 +brdelivery.com.br, 0 breachcandyhospital.org, 1 breachlock.com, 1 breachmedia.ca, 0 bread.fish, 1 breadandlife.org, 0 +breadelibreads.com, 1 breadheads.net, 1 breadmash.tk, 1 breadpirates.chat, 1 breadrosesfund.org, 1 -breakaway-inc.com, 1 +breakaway-inc.com, 0 breakberlin.tk, 1 breakcraft.tk, 1 breakdancer.tk, 1 @@ -25117,11 +24974,11 @@ breezyapp.hu, 1 breezypointmn.gov, 1 breffa.pl, 1 +brefy.com, 1 brege.org, 1 -breger.fr, 1 bregnedal.dk, 1 bregroup.com, 1 -brehoni.cz, 0 +brehoni.cz, 1 brei.nz, 1 breinify.ai, 1 breinify.com, 1 @@ -25138,7 +24995,6 @@ bremen-restaurants.de, 1 bremenfest.com, 1 breml.com, 1 -bremsscheiben.com, 1 brendabecker.com, 1 brendancroker.tk, 1 brendanfarmer.ga, 1 @@ -25150,9 +25006,10 @@ brentfieldschools.cf, 1 brentnewbury.com, 1 brenton.uk, 1 -brentpattersonlaw.com, 1 +brentpattersonlaw.com, 0 brentsoslibraries.org.uk, 1 brentwoodpa.gov, 1 +bresaola.com, 1 bresciatoday.it, 1 breshka.be, 1 bressem.com, 0 @@ -25189,7 +25046,6 @@ brewerybarbotley.com, 1 brewin.ml, 1 brewrest.com, 1 -brewsouth.com, 1 brex.pw, 1 brexit.tk, 1 breyerslakeshoreresort.com, 1 @@ -25230,7 +25086,6 @@ brianpagan.net, 1 brianregan.com, 0 brianroadifer.com, 1 -briansemrau.com, 1 briansmith.org, 1 brianterealtygroup.com, 1 brianum.de, 1 @@ -25302,7 +25157,6 @@ bridgetmcauliffe.ie, 1 bridgetonmo.gov, 1 bridgetownrecords.tk, 1 -bridgetroll.org, 1 bridgewaterma.gov, 1 bridholm.se, 1 brie.tech, 1 @@ -25352,7 +25206,6 @@ brightsport-news.tk, 1 brighttax.com, 0 brightthink.com, 1 -brighttomorrowproductions.com, 1 brightvalley.com.au, 1 brightwakeintranet.co.uk, 1 brightwebsitedesign.co.uk, 1 @@ -25362,6 +25215,7 @@ brigittaspromise.org, 1 brigittebutt.tk, 1 brigittefontaine.tk, 1 +briksai.com, 1 brilalux.pe, 1 brileytownshipmi.gov, 1 brili.com, 1 @@ -25390,7 +25244,7 @@ bringonbusiness.com, 1 brinker.com, 1 brinkhaven.gov, 1 -brinkhu.is, 0 +brinkhu.is, 1 brinksurl.com, 1 brinksurls.com, 1 brinokidzonline.tk, 1 @@ -25403,6 +25257,7 @@ brioukraine.store, 1 brisamar8.de, 1 brisbanecashforcars.com.au, 1 +brisbanepersonaltrainershq.com, 1 brisbanerecordbar.com.au, 1 brisignshop.com.au, 1 briskteaching.com, 1 @@ -25413,14 +25268,12 @@ bristolandwestonsuperbounce.com, 1 bristolctwatersewer.gov, 1 bristolemergencyplumbers.co.uk, 1 -bristolmoneyman.com, 1 bristowpoliceok.gov, 1 brit-thoracic.org.uk, 1 britania.tk, 1 britanicasalud.com.ar, 1 britannia-jewellery.co.uk, 1 britannia.no, 1 -britanniapandi.com, 1 britishairlinesflights.com, 1 britishantiquefurniture.co.uk, 1 britishbee.org.uk, 1 @@ -25457,10 +25310,10 @@ brittas-world.tk, 1 brivawn.com, 1 brix-central.tk, 1 +brixintel.com, 1 brixxonline.nl, 0 brixzer.com, 1 brizawen.com, 1 -brizzybites.com.au, 1 brk-t.com, 1 brk-t.org, 1 brk.dk, 1 @@ -25504,7 +25357,6 @@ broadlytour.com, 1 broadwayfamilydentalpc.com, 1 broadwayplatform.com, 1 -broadwaytravel.com, 1 broadwayva.gov, 1 broadwayvets.co.uk, 1 broansunited.tk, 1 @@ -25567,12 +25419,10 @@ brokernotes.co, 1 brokeryouers.ga, 1 brokeryouest.ga, 1 -brokfolio.com, 1 brokgency.com, 1 brol.eu, 1 brollopsfotografkalmar.com, 1 bromcomvle.com, 1 -bromen.id, 1 bromfietsman.tk, 1 bromideas.ga, 1 bromleymindfulness.org.uk, 1 @@ -25583,7 +25433,6 @@ brondsholm.dk, 1 bronevichok.ru, 1 bronsonsmarketplace.com, 1 -brontech.com, 1 bronwynlewis.com, 1 brony.quest, 1 broochwithme.com, 1 @@ -25592,6 +25441,7 @@ brookecountywv.gov, 1 brookfordnc.gov, 1 brookframework.org, 1 +brooklands.co.nz, 1 brooklinenh.gov, 1 brooklynboyblues.cf, 1 brooklynboyblues.ga, 1 @@ -25619,7 +25469,6 @@ broomecountyny.gov, 1 broomorchard.com, 0 broomstickhub.com, 1 -broraonline.com, 1 brosay-legko.ml, 1 brossmanit.com, 1 brother.com.hk, 1 @@ -25714,6 +25563,7 @@ bruitparif.fr, 1 bruk2fa.no, 1 brukalai.lt, 1 +brukhue.no, 1 brulen.com, 1 brulewi.gov, 1 brumeapp.eu, 1 @@ -25747,6 +25597,7 @@ brunoroquette.com, 1 brunroom.tk, 1 brunswick.com, 0 +brunswickaccountants.com, 1 brunswickcove.com, 1 brunswickfyr.ca, 1 brunswickme.gov, 1 @@ -25769,7 +25620,6 @@ brusselspackagesest.ga, 1 brusselswestapartment.ga, 1 brustzentrum-zuerich-lachen.ch, 1 -brutal.systems, 1 brutalica.tk, 1 brutality.cf, 1 brutdecom.fr, 1 @@ -25842,6 +25692,7 @@ bsdug.org, 1 bse-pictures.de, 1 bsee.gov, 1 +bser-koroshi.org, 1 bserved.de, 0 bsf-knowledgecity.com, 1 bsfamily.tr, 1 @@ -25872,7 +25723,6 @@ bsod.me, 1 bsod.wtf, 1 bsolut.com, 1 -bsolut.de, 1 bsolut.org, 1 bspecialfx.nl, 1 bsrueti.ch, 1 @@ -25897,7 +25747,6 @@ bsurfcr.com, 1 bsuru.xyz, 1 bsv-rehden.de, 1 -bswears.com, 1 bsyx.com.cn, 1 bsyy.com, 1 bszdb.de, 1 @@ -25974,7 +25823,6 @@ buai.gq, 1 buai.ml, 1 buai.tk, 1 -buatcvonline.com, 1 buayacorp.com, 1 bubalova.com, 1 bubbelwafel.nl, 1 @@ -25999,7 +25847,7 @@ bubra.net, 1 bubra.stream, 1 bubsngrubs.com.au, 1 -bubspressurewashing.com, 1 +bubspressurewashing.com, 0 bubty.com, 0 bubu1.eu, 1 bubuland.bg, 1 @@ -26094,7 +25942,6 @@ budgetlob.gov, 1 budgetlovers.nl, 1 budgetrf.tk, 1 -budgetscan.nl, 1 budgewoihp.com.au, 1 budgie.lol, 1 budiarto.id, 1 @@ -26145,6 +25992,7 @@ buffalogaptx.gov, 1 buffalohomerepairs.com, 1 buffalomurdermysterydinner.com, 1 +buffalonews.com, 1 buffaloturf.com.au, 0 buffalowypd.gov, 1 buffbarbell.com, 1 @@ -26172,6 +26020,7 @@ bugfender.com, 1 bugfuzz.com, 1 buggiano.com, 1 +buggybang.com, 1 buggymaven.com, 1 buggywonderland.tk, 1 bugraseyhan.tk, 1 @@ -26233,7 +26082,6 @@ buildtestsolutions.com, 1 buildux.com, 1 buileo.com, 1 -builtbyworkhorse.com, 1 builterra2.azurewebsites.net, 1 builtforblack.com, 1 builtin.com, 1 @@ -26241,6 +26089,7 @@ builtinboston.com, 1 builtinchicago.org, 1 builtincolorado.com, 1 +builtingym.com, 1 builtinla.com, 1 builtinnyc.com, 1 builtinseattle.com, 1 @@ -26248,6 +26097,7 @@ builtinvacuum.com, 1 builtmaven.com, 1 builtory.my, 1 +builtvisible.com, 1 buirey.com, 1 buirey.fr, 1 buissonchardin.fr, 1 @@ -26342,7 +26192,6 @@ bulutimza.com.tr, 1 bulutkey.com, 1 bulvar.tk, 1 -bumart.ro, 1 bumblebee.cf, 1 bumblebeebeekeeping.com, 1 bumblebeekids.uk, 1 @@ -26367,7 +26216,6 @@ buncranacarndonaghgreenway.ie, 1 bund-muelheim.de, 1 bund-von-theramore.de, 1 -bundesamtsozialesicherung.de, 1 bundesanzeieger.com, 1 bundesliga-tickets.com, 1 bundespolizei-forum.de, 1 @@ -26384,6 +26232,7 @@ buniq.com.br, 1 bunix.de, 0 bunker307.tk, 1 +bunker404.net, 1 bunkerhilltx.gov, 1 bunkyo-life.com, 1 bunlarateist.space, 1 @@ -26417,7 +26266,6 @@ buraksuslu.com, 1 burakuckun.com, 1 buralteria.tk, 1 -burasicanakkale.com, 0 buratino.tk, 1 buratiya.tk, 1 burb.social, 1 @@ -26573,6 +26421,7 @@ busesurbanoschile.tk, 1 busflag.tk, 1 bush41library.gov, 1 +bushart.org, 1 bushcraftfriends.com, 1 busheyrangersfc.co.uk, 1 bushfaller-academy.com, 1 @@ -26791,7 +26640,6 @@ businessportal.tk, 1 businesspremium.ga, 1 businesspride.ga, 1 -businessproservices.com, 1 businessproservices.ie, 1 businesspure.ga, 1 businessquality.ml, 1 @@ -26870,7 +26718,6 @@ bustillodeloro.tk, 1 bustmold.com, 1 bustmovesest.ga, 1 -busty-milf.net, 1 bustyarchive.com, 1 bustymilftube.com, 1 bustypassion.com, 1 @@ -26899,7 +26746,6 @@ butcherpaxtattoo.com, 1 butchworx.com, 1 butcombe.com, 1 -buter-petersen.dk, 1 butik-mechty.tk, 1 butikbaski.com, 1 butiko.com.tr, 1 @@ -26922,7 +26768,6 @@ butternutbox.com, 0 butterpaper.com, 1 buttertea.shop, 1 -buttertrick.com, 1 buttimer.tech, 1 buttinette.com, 1 buttonline.ch, 1 @@ -26943,7 +26788,6 @@ buurtpreventiewaalwijk.nl, 0 buurtschapdemarkt.tk, 1 buvik.gov.in, 1 -buviva.com, 1 buvocastings.nl, 1 buxru.tk, 1 buxum-communication.ch, 0 @@ -26991,7 +26835,6 @@ buyazithromycin.gq, 1 buybaclofen.ga, 1 buybettercompost.com, 1 -buybettersoil.com, 1 buybinocularsreviews.com, 1 buybuspar.ga, 1 buybutton.store, 1 @@ -27020,7 +26863,6 @@ buyessays.net, 1 buyessayscheap.com, 1 buyfluoxetineonline.gq, 1 -buyganodermacoffeeonline.com, 1 buygit.com, 1 buygoldreview.com, 1 buyharpoon.com, 1 @@ -27186,9 +27028,7 @@ bxp40.at, 1 by-g.ch, 1 by-robyn.nl, 1 -by-the-sword.com, 1 by-yesilbag.com, 1 -by.city, 1 by1u.com, 1 byadamhr.com, 1 byalexia.gr, 1 @@ -27206,6 +27046,8 @@ bydik.com, 1 bydisk.com, 0 bydleno.cz, 1 +bye404.org, 1 +byebyejunkhaulers.ca, 1 byebyemattress.com, 1 byedzhang.tk, 1 byemediaers.ga, 1 @@ -27294,7 +27136,6 @@ byteorbit.com, 1 bytepen.com, 1 bytepoint-software.nl, 1 -byteridge.com, 1 bytes.fyi, 1 bytesec.net, 1 bytesflow.com, 1 @@ -27311,12 +27152,14 @@ byteterrace.com, 1 bytetime.net, 0 bytevps.nl, 1 +bytewave.pl, 1 bytez.tk, 1 bytheglass.gr, 1 bythen.cn, 0 bytheswordinc.com, 1 bytrain.net, 1 byuro.org, 1 +byzain.net, 1 byzhihuo.com, 1 bz2.pl, 1 bzbet365.com, 1 @@ -27389,13 +27232,12 @@ c21first.co.il, 1 c2athletics.com, 1 c2cdn.xyz, 1 -c2cporn.com, 1 c2fo.com, 1 c2lab.net, 1 c2o2.xyz, 1 c2ogroup.com, 0 c2securelend.com, 1 -c3.ai, 1 +c3.ai, 0 c3.io, 1 c3.pm, 1 c35.design, 1 @@ -27430,6 +27272,7 @@ ca-canovelles.tk, 1 ca-immobilier.fr, 1 ca-key.de, 1 +ca-me.com.sg, 1 ca.gparent.org, 1 ca.search.yahoo.com, 0 ca.sk, 1 @@ -27524,6 +27367,7 @@ cachepreload.com, 1 cachesheriff.gov, 1 cachetur.no, 1 +cacic.com.br, 1 cacic.dev.br, 1 cackette.com, 0 cacko.tk, 1 @@ -27595,7 +27439,7 @@ cadvending.ch, 1 cadwalk.de, 1 cady-jennifer.tk, 1 -cadynce.com, 0 +cadynce.com, 1 cadyreporting.com, 1 caedea.com, 1 caedea.net, 1 @@ -27620,7 +27464,6 @@ cafe-pauline.de, 1 cafeah.com, 1 cafeamazon.tk, 1 -cafeamore.com.br, 1 cafebab.com, 1 cafebeirut.tk, 1 cafecentraal.tk, 1 @@ -27652,7 +27495,6 @@ cafeterya.tk, 1 cafethevibes.com, 0 cafethrive.co.uk, 1 -cafevelo.org, 1 cafevs.com, 0 cafexpro.com, 1 caffe.ga, 1 @@ -27695,6 +27537,7 @@ caiguopeng.com, 1 caileb.com, 1 cailoli.com, 1 +cain-law-llc.com, 1 cainesjannif.com, 1 cainhoyathletic.com, 1 cainiao.moe, 1 @@ -27703,6 +27546,7 @@ caipai.fm, 1 caiqueparrot.com, 1 cairngormcustoms.co.uk, 1 +cairnspersonaltrainers.com, 1 cairnterrier.com.br, 1 cairoflo.com, 1 cairohost.ml, 1 @@ -27716,7 +27560,6 @@ caiwenjian.xyz, 1 caixideal-serralharia.pt, 1 caiyou.com, 1 -caizx.com, 0 caj-eichstaett.de, 1 caja-pdf.es, 0 cajadecoloreshome.com, 1 @@ -27763,6 +27606,7 @@ calabozo.tk, 1 caladan.tk, 1 calaficirecords.cf, 1 +calagopus.com, 1 calaix.click, 1 calamai.nl, 1 calamidad.tk, 1 @@ -27771,8 +27615,7 @@ calantonieta.tk, 1 calassist.ai, 1 calaverascounty.gov, 1 -calaverasmedicalcannabis.com, 1 -calavos.com, 1 +calaverasmedicalcannabis.com, 0 calc.center, 1 calcargo.eu, 1 calcasieu.gov, 1 @@ -27821,9 +27664,10 @@ caldervets.co.uk, 1 caldetes.cat, 1 caldoletto.com, 1 +caldwell.com, 1 caldwellcosdmo.gov, 1 caleaders.cf, 1 -caleatoxic.org, 1 +caledoniagardencentre.com, 1 caledoniaoh.gov, 1 caledonie.tech, 1 calefones-electricos.com, 1 @@ -27840,6 +27684,7 @@ calendriergn.ch, 1 calendriergratuit.fr, 1 calendriers10.com, 1 +caleo.id, 1 caleos.fr, 1 caletka.cz, 1 calgaryconstructionjobs.com, 0 @@ -27878,7 +27723,6 @@ californiapa.gov, 1 californiapayroll.com, 1 californiaschools.us, 0 -californiatitlesearch.com, 1 californiavalues.cf, 1 calim.com.ar, 0 calimero.tk, 1 @@ -27908,7 +27752,6 @@ callcriteria.com, 0 callear.org, 1 callerstrom.se, 1 -callertech.com, 1 callfeatherfall.com, 1 callflex.com.br, 1 callfordataspeakers.com, 1 @@ -27921,6 +27764,7 @@ calligraph.gq, 1 callinangroup.net, 1 callinsdecor.com.br, 1 +calliotel.com, 1 callipeg.com, 1 calljacob.com, 1 callmewatkins.com, 1 @@ -27982,7 +27826,6 @@ camanoislandpilates.com, 1 camaradecomerciosiguatepeque.hn, 1 camaras.uno, 1 -camaraux.com.br, 0 camarilla.tk, 1 camaronazo.com, 1 camarottigrupo.com.br, 1 @@ -28006,7 +27849,6 @@ cambridgeanalytica.cz, 1 cambridgebingo.com, 1 cambridgefinance.com, 1 -cambridgemoneyman.com, 1 cambridgesecuritygroup.org, 1 cambridgetutors.com, 1 cambridgevaulting.com, 1 @@ -28059,14 +27901,12 @@ camgirl-info.net, 1 camgirl.ga, 1 camgo.org, 1 -camguide.net, 1 camhavuz.com, 1 camilamoreno.tk, 1 camilaporto.tk, 1 camilat.tk, 1 camileonline.tk, 1 camilia.io, 0 -camilla-rena.com, 1 camilleroux.com, 1 camilosolutions.com, 1 caminominimalista.com, 1 @@ -28105,7 +27945,6 @@ campbellcountywy.gov, 1 campcambodia.org, 1 campcreekinn.com, 1 -campdesante.com, 1 campdetarragona.tk, 1 campeonatoalemao.com.br, 1 campercollective.com, 1 @@ -28184,7 +28023,6 @@ camview.nz, 1 camworld.com, 1 camzroofing.ca, 0 -can-amchains.com, 1 can-fleet.com, 1 can-tran.com, 1 canabeinternacional.com, 1 @@ -28204,7 +28042,6 @@ canadapet.club, 1 canadapets.club, 1 canadapost-postescanada.ca, 1 -canadapropertyexpert.ca, 1 canadianarcticproducers.com, 1 canadianatheist.ca, 1 canadianatheists.ca, 1 @@ -28283,7 +28120,6 @@ cancioc.com, 1 cancitiprep.ca, 1 cancomputers.hn, 1 -cancomputers.shop, 1 cancunhealthers.ga, 1 candacemckay.com, 1 candaceplayforth.com, 1 @@ -28331,10 +28167,8 @@ candysailing.ml, 1 candysamira.org, 1 candywings.com, 1 -candyxs.org, 1 cane.bg, 1 canek.es, 1 -canelaimobiliaria.com.br, 1 canellayachts.com, 1 canetelareal.tk, 1 canfazz.com, 1 @@ -28349,6 +28183,7 @@ cani-compostelle.fr, 1 canibrowse.net, 1 canidelite-toulouse.fr, 1 +canifa.com, 1 canihavesome.coffee, 0 canile.it, 1 canine.tools, 1 @@ -28358,7 +28193,6 @@ caniphish.com, 1 canitcash.com, 1 canjo.gov, 1 -cankado.com, 1 canker.org, 1 cankhon.tk, 1 cankirihaber.tk, 1 @@ -28376,10 +28210,21 @@ cannabishouseyeg.com, 1 cannabislegality.info, 1 cannabistraininguniversity.com, 1 +cannabivo.ch, 1 +cannabivo.co.uk, 1 cannabivo.com, 1 +cannabivo.de, 1 +cannabivo.fr, 1 +cannabivo.info, 1 +cannabivo.net, 1 +cannabivo.nl, 1 +cannabivo.online, 1 +cannabivo.org, 1 +cannabivo.uk, 1 cannabiz.tk, 1 cannabytes.net, 1 cannacards.ca, 1 +cannadydental.com, 1 cannagent.ai, 1 cannamaca.com, 1 cannaseedsonline.com, 1 @@ -28413,7 +28258,6 @@ canopyservicing.com, 0 canossagardens.org.au, 0 canossahospital.org.au, 1 -canovamedical.com, 1 canperclinicaveterinaria.com, 1 canpp.com.br, 1 canrarantra.tk, 1 @@ -28472,7 +28316,6 @@ cap.gov, 1 cap.mil, 1 cap20.ai, 1 -cap21-lrc.fr, 1 cap50.be, 1 cap73.fr, 1 cap75.com, 1 @@ -28497,8 +28340,6 @@ capellen.tk, 1 capemaypoint.org, 1 capenursery.com.au, 1 -capeoni.fr, 1 -capeprivacy.com, 0 capestone.com.au, 1 capetown.travel, 1 capetowncpf.co.za, 1 @@ -28520,7 +28361,6 @@ capitalcollections.org.uk, 1 capitaldistrictneurofeedback.com, 1 capitaleconomics.com, 1 -capitalendurancegroup.com, 1 capitalengine.io, 1 capitalibre.com, 1 capitalise.ai, 1 @@ -28543,7 +28383,7 @@ capitalrooms.ga, 1 capitalroomsers.ga, 1 capitalscum.tk, 1 -capitalseafoodmarketrdu.com, 1 +capitalseafoodmarketrdu.com, 0 capitalsejours.fr, 1 capitalspiderers.ga, 1 capitalstakepool.info, 1 @@ -28556,6 +28396,7 @@ capitanlorenzana.com, 1 capitapeskanova.tk, 1 capitein.tk, 1 +capitito.com, 1 capitolavenue62.co.in, 1 capitolcarwashwv.com, 1 capitolnational.com, 1 @@ -28633,7 +28474,6 @@ car-solaire.org, 1 car-speed.tk, 1 car-touch.tk, 1 -car.info, 1 car24portal.de, 1 car3d.gq, 1 car4rent.fr, 1 @@ -28653,7 +28493,6 @@ caralarm.cf, 1 caralarm.tk, 1 caralegal.de, 1 -caraliadeluxe.net, 1 caramellespinell.tk, 1 carappraisal.ai, 1 caratennison.net, 1 @@ -28704,6 +28543,7 @@ carbonvision.cn, 0 carbophile.com, 1 carbophile.org, 1 +carbuwatch.fr, 1 carbuzz.com, 1 carceloinfierno.tk, 1 carcheck123.com, 1 @@ -28730,7 +28570,6 @@ cardiagnose.nl, 1 cardiagnostics.tk, 1 cardiffbus.com, 1 -cardiffmoneyman.com, 1 cardinalcpa.ca, 1 cardinaltimes.org, 1 cardington.tk, 1 @@ -28754,7 +28593,7 @@ cardmates.ua, 1 cardmetricsers.ga, 1 cardmetricsest.ga, 1 -cardoni.net, 1 +cardoni.net, 0 cardozo.vargas.nom.br, 1 cardozovargas.cloud, 1 cardozovargas.co, 1 @@ -28768,13 +28607,13 @@ cardprinter.co.il, 1 cardpyramiders.ga, 1 cardrecovery.fr, 1 +cards4.net, 1 cards4jobs.com, 1 cardschat.com, 1 cardsite.ca, 1 cardsolutionsbh.com.br, 1 cardstesting.tk, 1 cardstream.com, 1 -cardswith.love, 1 cardtrekers.ga, 1 cardtrekest.ga, 1 cardtrove.io, 1 @@ -28807,9 +28646,8 @@ careersimulator.com, 0 careersingulf.com, 1 careersinpsychology.org, 1 -careersolutionsbymichelle.com, 1 +careersolutionsbymichelle.com, 0 careerstart.co.jp, 1 -careertransformed.com, 1 carefreeschooling.ca, 1 carefu.link, 1 carefy.ph, 1 @@ -28828,6 +28666,7 @@ carenepal.org, 1 carepan.ga, 1 carepathinnovations.com, 1 +carercircle.com, 1 caresco.nl, 1 careshields.sg, 1 careskillsacademy.co.uk, 1 @@ -28849,7 +28688,6 @@ carforme.gr, 1 carfraemill.co.uk, 1 cargillsbank.com, 1 -cargleme.com, 1 cargo.build, 1 cargobas.com, 1 cargobay.net, 1 @@ -28861,7 +28699,6 @@ caribbean-tekton.com, 1 caribbeanbottlerstt.com, 1 caribuku.tk, 1 -caricature.fr, 0 caricatureavenue.com, 1 carien.eu, 1 carigami.fr, 1 @@ -28903,7 +28740,6 @@ carlili.fr, 0 carlingfordapartments.com.au, 1 carlinmack.com, 1 -carlislebrass.com, 1 carlislecounty.gov, 1 carlitoxxpro.com, 1 carlmcasale.com, 0 @@ -28971,10 +28807,8 @@ carmengrayfanclub.tk, 1 carmeni.tk, 1 carmenmo.com, 1 -carmenpolanco.co, 0 carmensanzchacon.es, 1 carmeny.org, 1 -carmicoffee.com, 1 carmona.gov.ph, 1 carna.tk, 1 carnabrindes.com.br, 1 @@ -28986,7 +28820,6 @@ carnavales.tk, 1 carnavalinrothem.tk, 1 carnedelmercado.com, 1 -carnell.com, 1 carnet-du-voyageur.com, 1 carnetdemotions.com, 1 carni.tk, 1 @@ -29004,7 +28837,6 @@ carnivaltiming.com, 1 carnivorousplants.co.uk, 1 carobme.de, 1 -carocream.org, 1 caroffer.ch, 1 carohq.com, 1 caroinstitute.cf, 1 @@ -29019,7 +28851,6 @@ carolicious.tk, 1 carolina.cz, 1 carolinacourtreporter.com, 1 -carolinaforestvacuum.com, 1 carolinaharboe.baby, 1 carolinaharboe.com, 1 carolinaidea.com, 1 @@ -29032,7 +28863,8 @@ carolineball.com, 1 carolinebazin.fr, 1 carolineeball.com, 1 -carolinegirvan.com, 1 +carolinegirvan.com, 0 +carolinekraft.com.br, 1 carolineovercash.com, 1 carolinepleuvret.fr, 1 carolmolinari.tk, 1 @@ -29059,7 +28891,6 @@ carpetcobblers.ga, 1 carpio.tk, 1 carplus.net, 1 -carportscanberra.com, 1 carportus.com, 1 carprice.auction, 1 carprice.ru, 1 @@ -29163,15 +28994,17 @@ carterstad.se, 1 cartertonscouts.org.nz, 1 cartes-voyance.fr, 1 +cartesdeparis.com, 1 cartesfrance.fr, 1 cartesian.ch, 0 cartesy.de, 1 +cartevieuxmontreal.ca, 1 cartfilm.tk, 1 cartft.com, 1 carthagecement.com.tn, 1 carthagesavings.com, 1 -cartical.de, 1 cartierplan.ga, 0 +cartograf.fr, 1 cartographiepremiereligne.ca, 1 cartoleriabotticelli.it, 1 cartomancieperso.tk, 1 @@ -29243,6 +29076,7 @@ casadasmolas.tk, 1 casadedios.tk, 1 casadegomes.com, 1 +casadeluxo.in, 1 casadentalsas.com, 1 casadetiteres.tk, 1 casadoarbitro.com.br, 1 @@ -29279,7 +29113,6 @@ casapuravidahostel.com, 1 casaraopizzaria.com.br, 1 casaruralsantamaria.tk, 1 -casasacapulcodiamante.com, 1 casasbandeirantes.com.br, 1 casascomdesign.com, 1 casasdeapuestasdeportivas.cl, 1 @@ -29326,7 +29159,6 @@ casertanews.it, 1 cases.lu, 1 cases.media, 1 -casesandclues.co.uk, 1 casetech.com, 1 casetta.net, 1 caseware-idea.ca, 1 @@ -29376,8 +29208,8 @@ casgp.com, 0 cash-bot.tk, 1 cash-generator.tk, 1 -cash.app, 0 -cash.me, 0 +cash.app, 1 +cash.me, 1 cash.nyc, 1 cashamerican.tk, 1 cashati.com, 1 @@ -29424,13 +29256,11 @@ casino-cash-flow.su, 1 casino-cashflow.ru, 1 casino-poker-tour.com, 1 -casino-spelletjes.com, 1 casino-trio.com, 1 casino-z-top.ru, 1 casino.guide, 1 casino.org, 1 casinobonusca.com, 1 -casinobonuscodes365.com, 1 casinobuyersguide.com, 1 casinocashflow.ru, 1 casinocashflow.su, 1 @@ -29535,7 +29365,6 @@ casinocity.sn, 1 casinocity.st, 1 casinocity.sx, 1 -casinocity.tg, 1 casinocity.tv, 1 casinocity.ug, 1 casinocity.uy, 1 @@ -29550,7 +29379,6 @@ casinodecavalaire.com, 1 casinofollower.com, 1 casinolistings.com, 1 -casinologinaustralia.com, 1 casinomucho.com, 1 casinomucho.se, 1 casinoonline39.com, 1 @@ -29585,7 +29413,6 @@ casinospesialisten.net, 1 casinospilnu.dk, 1 casinotokelau.tk, 1 -casinotop1.com, 1 casinotop10.net, 1 casinotopplistan.com, 1 casinotopsonline.com, 1 @@ -29614,6 +29441,7 @@ caspicards.com, 1 caspiconstruction.com, 1 caspiliving.com, 1 +casrai.org, 1 cassclay.com, 1 casscoroadmi.gov, 1 casscountyia.gov, 1 @@ -29622,6 +29450,7 @@ casscountyne.gov, 1 cassembly.fr, 1 cassia.gov, 1 +cassidyjohnstone.exposed, 1 cassies.com.au, 1 cassilandianoticias.com.br, 1 cassimo.com, 0 @@ -29630,7 +29459,6 @@ casso.tk, 1 cassvilletwpwi.gov, 1 cassvillevlgwi.gov, 1 -cast-london.co.uk, 1 castagnino.net, 1 castagnola.tk, 1 castagnonavocats.com, 1 @@ -29646,7 +29474,6 @@ castelli-media.de, 1 castellotti.net, 1 castelsardo.tk, 1 -casterleyrock.com, 1 castforward.de, 1 castglobal-china.biz, 1 casthull.co.uk, 1 @@ -29683,7 +29510,6 @@ castles-in-the-sky.co.uk, 1 castleswa.com.au, 1 castlevaniaspain.tk, 1 -castloop.de, 1 castmagic.io, 0 castor-it.com, 1 castor-it.nl, 1 @@ -29709,6 +29535,7 @@ cat.ma, 1 cat.ne, 1 cat.net, 1 +cat0.net, 1 cataclysmal.org, 1 catalase.ai, 1 catalog-bookinist.tk, 1 @@ -29771,11 +29598,9 @@ catchup-enschede.tk, 1 catcontent.cloud, 1 catcoxx.com, 1 -catech.au, 1 catechese-ressources.com, 1 catedraderechonotarial.es, 1 catedraloscura.tk, 1 -catego.info, 1 catempire.win, 1 catenacondos.com, 1 caterbing.com, 1 @@ -29795,6 +29620,7 @@ catharsis.us.kg, 1 cathcartandwinn.com, 1 cathcartconsulting.com.au, 1 +cathedral.com, 1 cathedralappointments.co.uk, 1 cathedralofsatan.tk, 1 cathelp.cf, 1 @@ -29842,7 +29668,6 @@ catlowe.com, 1 catmash.tk, 0 catme.org, 1 -catmonad.xyz, 1 catmoose.ca, 1 catnetworks.co.jp, 1 catnmeow.com, 1 @@ -29851,7 +29676,6 @@ catpowered.net, 1 catprincess.com.tw, 1 catprint.com, 1 -catrepeller.com, 1 catrins-kunst.de, 1 catsarch.com, 1 catscreativecakes.ga, 1 @@ -29876,6 +29700,7 @@ catus.moe, 1 catvibers.me, 1 catvsmice.com, 1 +catwilliford.com, 1 catworlds.com, 1 catylist.com, 1 catz-productions.tk, 1 @@ -29957,6 +29782,7 @@ cbet.lt, 1 cbfairbairnrealty.com, 1 cbflleida.cat, 1 +cbfp.news, 1 cbg-engadin.com, 1 cbg-it.de, 1 cbhcfl.gov, 1 @@ -29978,6 +29804,7 @@ cboost.nl, 1 cboss.xyz, 1 cbozarks.com, 1 +cbpf.br, 1 cbpridecenter.org, 0 cbr-xml-daily.ru, 1 cbrobot.net, 1 @@ -30028,7 +29855,6 @@ ccc-ffm.de, 1 ccc.eu, 1 ccc.gov, 1 -ccc.org, 1 ccc.xxx, 1 cccadvocate.com, 1 cccc.loan, 1 @@ -30040,6 +29866,7 @@ cccpublishing.com, 1 cccwien.at, 1 cccx.cn, 1 +ccd-oi.com, 1 ccdcare.com, 1 ccdcoe.org, 0 ccddos.club, 1 @@ -30067,6 +29894,7 @@ cclasabana.com.co, 1 cclaw.com.do, 1 ccloyaltyclub.md, 1 +ccm-coeur-et-metabolisme.com, 1 ccmclassic.com, 1 ccmg.com, 1 ccnadesdecero.com, 1 @@ -30185,7 +30013,6 @@ cdp-poznan.pl, 1 cdpn.io, 1 cdrom.ch, 1 -cdrp09.com, 1 cds-certified.com, 1 cds-certified.org, 1 cds-infra.de, 1 @@ -30265,7 +30092,6 @@ ceenaija.com, 1 ceenic.ltd, 1 ceet.biz, 1 -ceetzie.net, 1 ceew.in, 1 cefaction.pt, 1 cefi.work, 1 @@ -30322,7 +30148,6 @@ celebrityscope.net, 1 celebritysrit.tk, 1 celebritytopnews.tk, 1 -celec.io, 1 celectricos.com, 1 celectro-pro.com, 1 celendo.ga, 1 @@ -30345,7 +30170,7 @@ celine-patisserie.fr, 1 celinecity.com, 1 celineitalia.tk, 1 -celiums.ai, 1 +celiums.ai, 0 cellboost.cf, 1 cellcenterchampalimaudfoundation.org, 1 cellebrite.com, 1 @@ -30362,7 +30187,6 @@ cellrg.org, 1 cellsheet.me, 1 cellsys.pl, 1 -celltek-server.de, 1 celltraders.ga, 1 celltypist.org, 1 cellufit.ga, 1 @@ -30388,7 +30212,6 @@ celyrian.com, 1 cemada.cz, 1 cembra.ch, 1 -cemcerkez.com, 1 cement-co2-protocol.org, 1 cementplas.es, 0 cementscience.com, 1 @@ -30413,6 +30236,7 @@ censored.ml, 1 censurfridns.dk, 1 censurfridns.nu, 1 +census.money, 1 census.name, 1 centariuss.ga, 1 centella.me, 1 @@ -30459,7 +30283,6 @@ centralebigmat.eu, 1 centralegedimat.eu, 1 centralengland.coop, 1 -centralesnucleaires.fr, 1 centralfor.me, 1 centralfox.online, 1 centralhaat.com, 1 @@ -30478,7 +30301,6 @@ centralsoft.tk, 1 centralspyers.ga, 1 centralstor.ga, 1 -centraltime.com, 1 centralvalleyharness.org, 1 centralvoice.org, 1 centre-commercial.fr, 1 @@ -30526,7 +30348,6 @@ centrumkulturyslowianskiej.pl, 1 centrumpieknairelaksu.pl, 1 centrumpodpora.pl, 1 -centrumvrijwilligerswerkhethogeland.nl, 1 centruvechisv.ro, 1 centsay.io, 0 centschat.com, 1 @@ -30556,8 +30377,10 @@ centurymine.su, 1 centuryreporters.com, 1 centurystudios.com, 1 +cenycet.com, 1 ceomanipur.nic.in, 1 ceomonthlyest.ga, 1 +cepalabs.cl, 1 cephalexin.ga, 1 cephalexincapsules.ml, 1 cephalexincapsules.tk, 1 @@ -30597,7 +30420,6 @@ ceremonial-magic.com, 1 ceremonialcastings.tk, 1 ceremonialvirtualphd.com, 1 -ceremonybydesign.com.au, 0 cerena-silver.ru, 0 ceres-corp.org, 0 cerezacomunicacion.com, 1 @@ -30732,7 +30554,6 @@ cetak.com.my, 1 cetamol.com, 1 cetangyuk.com, 1 -cetayadigital.com, 1 cetelem.pt, 1 cetelon.tk, 1 ceti.ga, 1 @@ -30741,7 +30562,6 @@ cetorebe.tk, 1 ceu.bg, 1 ceu.edu.ph, 1 -ceuniverse.com, 0 ceva-dsp.com, 1 cevaplari.net, 1 ceven.io, 1 @@ -30768,9 +30588,7 @@ cfan.space, 1 cfasync.ga, 1 cfbenchmarks.com, 1 -cfc-stmoritz.com, 1 cfc-swc.gc.ca, 1 -cfcpestcontrol.com, 1 cfda.gov, 1 cfdata.lol, 1 cfdcre5.org, 0 @@ -30806,7 +30624,6 @@ cfrench.cc, 1 cfs-australasia.com, 0 cfse.biz, 1 -cfsh.tk, 1 cfsrportal.org, 1 cfst.eu.org, 1 cftc.gov, 1 @@ -30824,6 +30641,7 @@ cgalvin.com, 1 cgan.pw, 1 cgbassurances.ch, 0 +cgbf.org, 0 cgbh3.gq, 1 cgbproduction.tk, 1 cgbunch.com, 1 @@ -30849,7 +30667,6 @@ cgsmart.com, 1 cgstprayagraj.gov.in, 1 cgt-univ-nantes.fr, 1 -cgtburgos.org, 1 cgtcaixabank.es, 1 cgtsoft.com, 1 cgtv.ml, 1 @@ -30906,6 +30723,7 @@ chaingpt.org, 1 chainpatrolstatus.com, 1 chainsawprofessional.com, 1 +chainsolve.co.uk, 1 chainwhy.com, 0 chainz.tk, 1 chaip.org, 1 @@ -30935,7 +30753,7 @@ chalons-agglo.fr, 1 chalonsenchampagne.fr, 1 chalov.ml, 1 -chama.gr, 1 +chama.gr, 0 chamanga.store, 1 chamartin.tk, 1 chamath.co.uk, 1 @@ -30974,7 +30792,6 @@ championweb.com.au, 0 championweb.sg, 0 champslearning.co.uk, 1 -champstv1.com, 1 chamudi.lk, 1 chamudi.net, 1 chamurliyski.com, 1 @@ -30989,9 +30806,7 @@ chandradeepdey.com, 1 chandramani.tk, 1 changdunovel.com, 1 -change-coaching-gmbh.ch, 1 change10000lives.com.ph, 1 -changeactivation.com, 1 changeanalytics.us, 1 changebell.com, 1 changechecker.org, 0 @@ -31127,7 +30942,6 @@ charley.tk, 1 charlie-liveshow.com, 0 charlie.im, 1 -charlie2alpha.org, 1 charlie4change.com, 1 charliebighams.co.uk, 0 charliebighams.com, 0 @@ -31140,6 +30954,7 @@ charliehr.com, 1 charliejonas.co.uk, 1 charliejonas.com, 1 +charliekrug.com, 1 charlierogers.co.uk, 1 charlierogers.com, 1 charliescomputerservice.com, 1 @@ -31157,13 +30972,15 @@ charlotte-touati.ch, 1 charlotteanne.tk, 1 charlottecountyva.gov, 1 -charlottedaviesphotography.co.uk, 1 +charlottedanielou.com, 1 +charlottedaviesphotography.co.uk, 0 charlottemi.gov, 1 charlotteskinandlaser.com, 1 charlubermensch.com, 1 charlws.com, 1 charlylou.de, 1 charmander.me, 1 +charmandsoulph.com, 1 charmanterelefant.at, 1 charmcitytech.com, 1 charming-powers.tk, 1 @@ -31203,6 +31020,7 @@ chasqui.store, 1 chasseurdetruites.com, 1 chastitybelts.tk, 1 +chastitytracker.org, 1 chat-buddy.com, 1 chat-cam.tk, 1 chat-edu.org.uk, 1 @@ -31228,6 +31046,7 @@ chatcontrol.se, 1 chatdoguaxinim.tk, 1 chatdrop.org, 1 +chateau-artigues.com, 1 chateau-belvoir.com, 1 chateau-de-cabidos.com, 1 chateau-de-fresnois.com, 1 @@ -31252,18 +31071,19 @@ chatgptwith.me, 1 chatgtd.net, 1 chathamcountync.gov, 1 -chathameducationfoundation.org, 1 +chathameducationfoundation.org, 0 chathamil.gov, 1 chathund.de, 1 chatify.com, 1 chatkisskiss.tk, 1 -chatkitty.com, 0 chatline.cf, 1 chatline.ga, 1 chatline.ml, 1 chatlol.org, 1 chatmaus.ml, 1 chatnederland.eu, 1 +chato.kz, 1 +chato.uz, 1 chatomg.com, 1 chatondesk.com, 1 chatons.org, 1 @@ -31448,13 +31268,11 @@ checkrente.nl, 1 checkreview.in, 1 checkrz.com, 1 -checksfleet.com, 1 checkspf.net, 1 checktheworth.com, 1 checktls.nl, 1 checktype.com, 1 -checkui.com, 1 -checkwebsites.net, 1 +checkui.com, 0 checkyourmath.com, 1 checkyourprivilege.org, 1 checookies.com, 1 @@ -31498,7 +31316,6 @@ chekaonline.com, 1 chekhov.gq, 1 chel.ga, 1 -chelabotanica.com, 1 cheladmin.ru, 1 chelema.xyz, 1 chellame.fr, 1 @@ -31531,7 +31348,7 @@ chemnitz2025.de, 1 chemolak.pl, 1 chemungtownshipil.gov, 1 -chemwatch.net, 1 +chemwatch.net, 0 chenangocountyny.gov, 1 chenapartment.com, 1 chenbo.tk, 1 @@ -31608,7 +31425,6 @@ cheryls.com, 1 cheryltweedy.tk, 1 cherysunzhang.com, 1 -chesapeakecluttercontrol.com, 1 chesapeakeopticallab.com, 1 chesapeakestormwater.org, 1 chesapeakewv.gov, 1 @@ -31651,7 +31467,6 @@ chhlayban.tk, 1 chhy.at, 1 chi-new-energy.com.ua, 1 -chiamami.online, 1 chiangli.ml, 1 chiangmaimontessori.com, 1 chiapasfutbol.com, 1 @@ -31795,12 +31610,9 @@ china-midas.net, 1 china-online-news.tk, 1 china-ru.ru, 1 -china.gs, 1 chinabank.ph, 1 -chinacake.com, 1 chinacdn.org, 1 chinacheers.com, 1 -chinacolour.com, 1 chinadream404.com, 1 chinafree.online, 1 chinafree.site, 1 @@ -31810,12 +31622,9 @@ chinaicpower.org, 0 chinaindexfund.cn, 1 chinainluxury.com, 1 -chinamemo.com, 1 chinamotorsarmenia.am, 1 chinaoptionsfund.cn, 1 -chinaql.com, 1 chinasearch.tk, 1 -chinaseminar.com, 1 chinastory.tk, 1 chinasucksass.com, 1 chinati.org, 1 @@ -31825,7 +31634,6 @@ chinees.restaurant, 1 chinefrancophonie.fr, 1 chinen-hs41.com, 1 -chinese-fuhui.com, 1 chinesebrides.ml, 1 chinesedishes.tk, 1 chinesepen.org, 1 @@ -31839,6 +31647,7 @@ chinookmt.gov, 1 chinookwebdesign.ca, 1 chinovalleyaz.gov, 1 +chinplugins.xyz, 1 chintai.io, 1 chintaparthi.tk, 1 chintaparthihome.tk, 1 @@ -31863,6 +31672,7 @@ chirache.fr, 1 chirality.de, 1 chireiden.me, 1 +chiri56workout.com, 1 chiriri.top, 1 chirkunov.tk, 1 chiro-merksplas.tk, 1 @@ -31873,6 +31683,7 @@ chiromeisjes-boxberg.tk, 1 chiropractic.gr, 1 chiropractorlongmontgpa.com, 1 +chiropractorslongmont.com, 1 chiropraktik-riemann.de, 1 chiropraktik-wildner.de, 1 chiropratiqueraymond.com, 1 @@ -31888,6 +31699,7 @@ chispita.tk, 1 chistesdesebas.tk, 1 chistomaniapro.ru, 1 +chit.fund, 1 chit.search.yahoo.com, 0 chita-news.net, 1 chita.cf, 1 @@ -31901,7 +31713,6 @@ chiucainlaw.co.nz, 1 chiusa-klausen.com, 1 chiva-ariege.fr, 1 -chiyapasal.me, 1 chizouworld.tk, 1 chizra.com, 1 chk-ccs.com, 1 @@ -31938,6 +31749,7 @@ chocoband.cf, 1 chocobon.co, 1 chocodecor.com.br, 1 +chocofox.com, 1 chocoladeverkopers.nl, 1 chocolat-lp2.com, 1 chocolat-suisse.ch, 0 @@ -31961,10 +31773,8 @@ choe.fi, 1 choesfirm.tk, 1 chofan.tk, 1 -choice-design.com.tw, 1 choiceautoloan.com, 1 choicemutual.com, 1 -choiceowners.info, 1 choirofbeirut.cf, 1 choisirmoneau.blog, 1 chokladfantasi.net, 1 @@ -31987,7 +31797,6 @@ choootto.net, 1 choosealicense.com, 1 chooseinvesting.com, 1 -choosemypc.net, 1 choosetech.com.br, 1 choosevalley.co.uk, 1 chooseyourdesinty.tk, 1 @@ -32023,7 +31832,6 @@ chou-chinois.com, 1 choudo-ii-shukan.com, 1 choufei.com, 1 -choukou.com, 1 choushe.com, 1 chowtime.chat, 1 choylifut.tk, 1 @@ -32038,7 +31846,6 @@ chris-vandenberg.de, 1 chris.land, 1 chris05.com, 1 -chrisahrweileryoga.com, 1 chrisaitch.com, 1 chrisandian.com, 1 chrisballam.com, 1 @@ -32047,12 +31854,10 @@ chrisbrowntherapies.co.uk, 1 chrisbryant.me.uk, 1 chrisbulow.uk, 1 -chrisburnell.com, 1 chriscarey.com, 1 chriscelkins.com, 1 chriscutts.uk, 1 chrisdavidphoto.com, 0 -chriseldon.com, 1 chrisfinazzo.com, 0 chrisgieger.com, 1 chrisirwin.ca, 1 @@ -32114,6 +31919,7 @@ christianga.ro, 1 christiangaro.com, 1 christiangaro.email, 1 +christiangaro.info, 1 christiangaro.me, 1 christiangehring.org, 1 christianhaugen.tk, 1 @@ -32135,7 +31941,6 @@ christianr.me, 1 christianrasch.de, 1 christianreimold.de, 1 -christiansandin.com, 1 christiansayswords.com, 1 christiansburgva.gov, 1 christiansciencevancouverwa.org, 1 @@ -32190,7 +31995,6 @@ christopherpfister.de, 1 christopherpritchard.co.uk, 1 christopherterryweddings.co.uk, 1 -christophertruncer.com, 1 christopherwilkinson.co.uk, 1 christopherzoukis.com, 1 christopherzoukis.me, 1 @@ -32203,6 +32007,7 @@ christophsackl.de, 1 christreformedchurchdfw.org, 1 christthekingparish.net, 1 +christtheredeemer.us, 0 christusbruderschaft.de, 1 christwaycounseling.com, 1 christysstampingspot.com, 1 @@ -32226,7 +32031,6 @@ chrixonline.tk, 1 chrizz.ddnss.de, 1 chrom.ar, 1 -chromaitaly.com, 1 chromamastering.com, 1 chromaphile.tk, 1 chromarea.fr, 1 @@ -32263,7 +32067,6 @@ chronotech.fr, 1 chronus.com, 1 chronusgov.com, 1 -chronworx.com, 1 chrony.tk, 1 chroot.co.uk, 1 chrpaul.de, 0 @@ -32293,7 +32096,6 @@ chubr.cf, 1 chubuhokenservice.com, 1 chuckame.fr, 1 -chuckblier.com, 1 chucklesthebeard.website, 1 chuckval.tk, 1 chudnov.tk, 1 @@ -32308,6 +32110,7 @@ chukou.gq, 1 chukou.ml, 1 chukou.tk, 1 +chulife.top, 1 chulinkuei.org.tw, 1 chumy.vn, 1 chun.pro, 1 @@ -32319,9 +32122,8 @@ chungnguyenblog.tk, 1 chungsir.com.pa, 1 chunkeat.cyou, 1 -chunkeat.me, 1 chunkeat.ml, 1 -chuou-labo.com, 1 +chuokakohki.com, 1 chupacabra-drift.pl, 1 chupadelfrasco.com, 1 chupanhcotrang.com, 1 @@ -32367,7 +32169,6 @@ chziq.com, 1 ci-fo.org, 1 ci-suite.com, 1 -ci.com.br, 1 cia-gaming.de, 1 cia.gov, 1 ciad.cz, 1 @@ -32394,7 +32195,6 @@ cianmawhinney.me, 1 cianmawhinney.xyz, 1 ciao.ro, 1 -ciaramamaquinas.com.br, 1 ciaran.lol, 1 ciaran.tk, 1 ciareterapias.com.br, 1 @@ -32422,7 +32222,6 @@ ciclimattio.com, 1 ciclismoyrendimiento.com, 0 ciclista.roma.it, 1 -ciclosis.com, 1 cidaut.es, 1 cidcca.com, 1 cidercms.org, 1 @@ -32449,7 +32248,6 @@ cigarafterten.com, 1 cigarette-electronique.tk, 1 cigarettes-electronik.fr, 1 -cigarterminal.com, 0 cigdelivery.com, 1 ciginsurance.com, 1 cign.nl, 1 @@ -32531,7 +32329,8 @@ cinet.jp, 1 cineterror.tk, 1 cinexilio.tk, 1 -cinicloud.com, 1 +cingozce.net, 1 +cinicloud.com, 0 cinicsystems.tk, 1 ciniticket.com, 1 cink.hu, 1 @@ -32624,11 +32423,12 @@ cirdcil.gov, 1 ciren.cy, 1 cirfi.com, 1 +cirno.pp.ua, 1 cirocunato.tk, 1 cirquequirk.com, 1 cirriton.de, 1 cirro.io, 1 -cirroenergy.com, 1 +cirroenergy.com, 0 cirrusrays.com, 1 cirugiaesteticalarrarte.es, 1 cirugiatotal.com, 1 @@ -32694,6 +32494,7 @@ citatis.fr, 1 citazioni.tk, 1 citeab.com, 1 +cited.best, 1 citeulike.org, 1 citfin.cz, 1 citharas.org, 1 @@ -32906,7 +32707,6 @@ cityofwoodland.gov, 1 cityofwoodward-ok.gov, 1 cityonfire.com, 1 -cityplayers.com, 1 citypress.cf, 1 citypress.ga, 1 citypress.gq, 1 @@ -32935,10 +32735,8 @@ citywage.com, 1 citywalkr.com, 1 citywidealarms.com, 1 -citywidechimneysweephouston.com, 1 citywindsor.ca, 1 citywisdom.tk, 1 -cityworksonline.com, 1 ciubotaru.tk, 1 ciuciucadou.ro, 1 ciucobirbone.it, 1 @@ -32951,6 +32749,7 @@ civicconnectiongroup.com, 1 civicdigest.com.au, 1 civicforum.pl, 1 +civiclegal.com.au, 1 civicnation.org, 1 civicpulseai.ro, 1 civics.us, 1 @@ -33047,7 +32846,6 @@ cl-cloud.spdns.org, 1 cl.search.yahoo.com, 0 cl0ud.hopto.org, 1 -claarycherry.com, 1 clabs.io, 1 clacetandil.com.ar, 1 clactonfencingsupplies.co.uk, 1 @@ -33065,17 +32863,18 @@ claimmosaic.com, 1 claimnote.com, 1 claimoffersnow.shop, 1 -claimpilot.com, 0 claimsadj.com, 1 claimspharmacy.services, 1 +clainker.ai, 1 clairebabai.nl, 1 clairegold.com, 1 -clairelefort-architectes.com, 1 clairescastles.co.uk, 1 clairette-de-die-lantheaume.fr, 1 clairevoyance.tk, 1 +claireyscannedgoods.com, 1 clairgest.ca, 1 clairgest.com, 1 +clairyscannedgoods.com, 1 claitec.com, 1 clak.io, 1 clalbit-checknet.co.il, 1 @@ -33120,7 +32919,6 @@ clara.de, 1 claraanalytics.com, 1 clarabot.com, 1 -clarachampbell.com, 1 claramarie.art, 1 clarasegura.tk, 1 clare3dx.com, 1 @@ -33129,6 +32927,7 @@ claremontyachtclub.org.au, 1 clarendonvt.gov, 1 clarenhealth.com, 1 +clarepartners.co.kr, 1 clarerose.com, 1 claresderibota.tk, 1 claretandbluearmy.tk, 1 @@ -33275,10 +33074,12 @@ clavit4.zone, 1 clawedfrogs.tk, 1 clawnews.de, 1 +claxx.gg, 1 claycountyne.gov, 1 clayelections.gov, 1 clayem.com, 1 claygregory.com, 1 +claylevering.com, 1 claypenblanks.com, 1 claytonca.gov, 1 claytoncapolice.gov, 1 @@ -33295,7 +33096,7 @@ clcv-brest.fr, 1 cldejessey.com, 1 cldfile.com, 1 -cldinc.com, 1 +cldinc.com, 0 cldly.com, 1 clean-cubes.com, 1 clean-mailbox.com, 1 @@ -33328,7 +33129,6 @@ cleanpowerbg.com, 1 cleanrun.com, 1 cleansheetsaz.com, 1 -cleanshelf.com, 1 cleanshield99.com, 1 cleanshot.com, 1 cleanslate.sh, 1 @@ -33347,6 +33147,7 @@ clearchatsandbox.com, 1 clearcreekcountyco.gov, 1 clearcreekcountydronepilot.com, 1 +cleardealstoday.shop, 1 cleared-4-takeoff.com, 1 cleared.io, 1 cleared2hire.com, 1 @@ -33368,13 +33169,12 @@ clearklima.hu, 1 clearlake.com, 1 clearlinux.org, 1 -clearpathtechnology.co.uk, 1 clearpay.co.uk, 1 clearpicturelegalvideo.com, 1 clearpoint.org, 1 clearpointcreditcounselingsolutions.org, 1 clearsailingproperties.com, 1 -clearsiteapp.co.uk, 1 +clearsiteapp.co.uk, 0 clearsoftcomputacion.com, 1 clearstone.au, 1 clearstoneip.com, 0 @@ -33447,10 +33247,10 @@ clevertp.com, 1 cleververmarkten.com, 1 cleververmarkten.de, 1 -clevisto.com, 1 clevon.com, 1 clevon.us, 1 clevoninvestors.com, 1 +clevora.me, 1 clevvi.com.au, 1 clevyr.ai, 1 clevyr.biz, 1 @@ -33486,7 +33286,6 @@ clgp.jp, 1 clgraphix.com, 1 cli.bot, 1 -clial.com, 1 clic-music.com, 1 clica.net, 1 click-7979.com, 1 @@ -33495,7 +33294,6 @@ click2leads.co.uk, 1 click4click.ga, 1 clickandclaim.me, 1 -clickapro.com, 1 clickarmy.com, 1 clickatell.com, 1 clickbizhub.com, 1 @@ -33504,6 +33302,7 @@ clickcell.tk, 1 clickclinicals.com, 1 clickcollect.boutique, 1 +clickdealstoday.shop, 1 clickdebateest.ga, 1 clickdefense.io, 0 clickedu.net, 1 @@ -33514,6 +33313,7 @@ clickheretobegin.tk, 1 clickhost.com.au, 1 clickhouse.tech, 1 +clickidy.com, 1 clickinfo.tk, 1 clickingmad.com, 1 clickipo.com, 1 @@ -33529,7 +33329,7 @@ clicks.codes, 1 clicks24.cf, 1 clicksacolas.com, 0 -clickseek.in, 1 +clickseek.in, 0 clicksengage.com, 1 clickstart.ml, 1 clicktenisdemesa.com.br, 0 @@ -33638,14 +33438,13 @@ clinicelham.com, 1 clinicgrid.co.uk, 1 clinichq.com, 1 -clinicmillennium.by, 1 +clinicmillennium.by, 0 clinicortinascali.com, 1 clinicos.cl, 1 cliniko.com, 1 clinique-ser.ca, 1 cliniquecomplementaire.com, 1 cliniquedacupuncturelajeunesse.com, 1 -cliniquevethuy.be, 1 clinlife.de, 1 clinlife.us, 1 clinpharm.vn, 1 @@ -33679,6 +33478,7 @@ cliqit.com.au, 1 cliquetis.ddns.net, 1 clirnet.com, 1 +clitheroeweather.co.uk, 1 clive.io, 1 cliveptr.cc, 1 clkbw.com, 1 @@ -33735,11 +33535,11 @@ closetedsoul.com, 1 closets-cheap.tk, 1 closient.co, 1 -closient.com, 1 closingholding.com, 1 closingthegap.gov.au, 1 closir.com, 1 closrr.cloud, 1 +closup.tech, 1 clothes-for-school.tk, 1 clothilde-wattelier.fr, 1 clothing-2010.tk, 1 @@ -33821,7 +33621,6 @@ cloudfleet.ai, 1 cloudforce.com, 1 cloudforge.cz, 1 -cloudfree.shop, 1 cloudfronts.com, 1 cloudfudge.com, 1 cloudgray.com.au, 1 @@ -33844,7 +33643,6 @@ cloudmyhome.site, 1 cloudmyhome.top, 1 cloudnas.ru, 1 -cloudnexusit.com, 1 cloudnote.cc, 1 cloudnovi.com, 1 cloudns.net, 1 @@ -33853,7 +33651,6 @@ cloudpage.com, 1 cloudpagesforwork.com, 1 cloudparts.com.tr, 1 -cloudpengu.in, 1 cloudplan.nl, 1 cloudplayy.com, 1 cloudpole.de, 1 @@ -33886,7 +33683,6 @@ cloudsms.com, 1 cloudspace-analytics.com, 1 cloudspeedy.net, 1 -cloudspire.net, 1 cloudstoragecompare.com, 1 cloudstored.nl, 1 cloudstorm.me, 1 @@ -33924,6 +33720,7 @@ clouvways.com, 1 clouwways.com, 1 clouz.de, 1 +clovay.com, 1 clover-sendai.com, 1 clover-vtl.com, 1 cloversonoma.com, 1 @@ -33965,7 +33762,6 @@ club-reduc.com, 1 club-slow.jp, 1 club-soul.tk, 1 -club-tool.nl, 1 club.zj.cn, 1 club1.fr, 1 clubanimal.cl, 1 @@ -34051,7 +33847,7 @@ clubvttlesloupsdemaixe.tk, 1 clubvwgolf.com, 1 clubyachats.com, 1 -clubzap.org, 0 +clubzap.org, 1 clubzero.co, 0 clubzul.com, 1 cluecho.com, 1 @@ -34081,6 +33877,7 @@ clymon.ro, 1 cm-funchal.pt, 1 cm-lagos.pt, 1 +cm-lamego.pt, 1 cm-law.eu, 1 cm-loures.pt, 1 cm-montemorvelho.pt, 1 @@ -34098,6 +33895,7 @@ cmbs.loans, 1 cmc.pt, 0 cmcjanuary.in, 1 +cmcm.lu, 1 cmcp.org, 1 cmcressy.ch, 1 cmd2021acm.com, 1 @@ -34107,7 +33905,6 @@ cmf.qc.ca, 1 cmfcuro.com, 1 cmftech.com, 1 -cmfuchs.de, 1 cmi.no, 1 cmlachapelle.ch, 1 cmlcpa.ca, 1 @@ -34143,7 +33940,6 @@ cmscompany.de, 1 cmscontracts.com, 1 cmsdca.gov, 1 -cmsdestek.com, 1 cmsec.de, 1 cmserviscz.cz, 0 cmsfox.de, 1 @@ -34190,7 +33986,7 @@ cni-certing.it, 1 cni.net.id, 1 cnil.fr, 1 -cnitdog.com, 1 +cnitdog.com, 0 cnj.edu.ar, 1 cnlongtex.com, 1 cnmi.gov, 1 @@ -34249,6 +34045,7 @@ coactive.ai, 0 coag.gov.au, 1 coalcountyok.gov, 1 +coalesce.coach, 1 coalitieduurzamedigitalisering.nl, 1 coalition.tk, 1 coallsl.com.au, 1 @@ -34276,7 +34073,7 @@ coathangerstrangler.com, 1 coating-equipment.com, 0 coats-and-jackets.tk, 1 -coats.com, 0 +coats.com, 1 coatsandcocktails.org, 1 cobaka.tk, 1 cobalt.tools, 1 @@ -34298,7 +34095,6 @@ coca-colasip.com, 1 cocaine.ninja, 1 cocaine.wiki, 1 -cocamarmaquinas.com.br, 1 cocareonline.com, 1 coccinellaskitchen.com, 1 coccinellaskitchen.de, 1 @@ -34402,6 +34198,7 @@ codebrasileiro.tk, 1 codebreak.tk, 1 codebreakers.it, 1 +codecanary.org, 1 codecatalyst.aws, 1 codechum.com, 1 codeclouds.com, 1 @@ -34454,7 +34251,7 @@ codeninja.me, 1 codenlife.kr, 1 codenlife.xyz, 1 -codenode.io, 1 +codenode.io, 0 codeon.ch, 1 codeops.com.tr, 1 codeparva.com, 1 @@ -34473,7 +34270,6 @@ codereduction.promo, 1 coderema.de, 1 coderema.eu, 1 -coderescue.com, 1 codereview.appspot.com, 1 codereview.chromium.org, 1 coderhangout.com, 1 @@ -34486,19 +34282,17 @@ codersatlas.co, 1 codersatlas.xyz, 1 coderus.com, 1 -codes-team.com, 1 codes.pk, 1 codesal.solutions, 1 codesandbolts.com, 1 codeseek.com, 1 codesgroup.tk, 1 -codeslaw.com, 1 codespacearena.com, 1 codesplain.in, 1 codesport.io, 1 codessale.com, 1 codestudies.net, 1 -codesync.sa, 0 +codesync.sa, 1 codetheweb.blog, 1 codetheworld.com, 1 codetrack.se, 1 @@ -34519,7 +34313,6 @@ codevo.org, 1 codevo.ws, 1 codewaifu.com, 1 -codewave.com, 1 codewild.de, 1 codewing.de, 1 codewitchbella.com, 0 @@ -34529,7 +34322,7 @@ codewizards.co.za, 1 codewrecks.com, 1 codex.online, 1 -codexdigital.com, 1 +codexdigital.com, 0 codexio.in, 1 codezeno.com.au, 1 codice-rosso.net, 1 @@ -34555,6 +34348,7 @@ codingfromhell.net, 1 codinghomeworkhelp.net, 1 codinginfinity.me, 1 +codingliteracy.com, 1 codingnbb.com, 1 codingpark.io, 0 codingpedia.org, 1 @@ -34567,7 +34361,7 @@ cododigital.com, 0 codowned.com, 1 codriiiasilor.ro, 1 -codsan.com, 1 +codsan.com, 0 codulrutier.tk, 1 coduzion.com, 1 cody.sh, 1 @@ -34632,7 +34426,6 @@ cognicrypt.de, 1 cognicrypt.org, 1 cognigennetwork.tk, 1 -cognitioncms.com.au, 1 cognitive-enhancers.com, 1 cognitiveapplications.net, 1 cognitivebehaviourtherapytoronto.com, 1 @@ -34650,7 +34443,6 @@ coherenceenergylabs.com, 1 cohob.de, 1 cohort.fit, 1 -cohortis.io, 1 coicompass.com, 1 coiffbot.fr, 1 coiffeurdomicile40.fr, 1 @@ -34680,7 +34472,6 @@ coinjar.com, 1 coinjp.io, 1 coinlend.org, 1 -coinliq.com, 1 coinloan.io, 1 coinmama.com, 1 coinmedium.com, 1 @@ -34716,11 +34507,9 @@ colaboratorija.lt, 1 colabug.com, 1 colace.me, 1 -colafoodcritic.com, 1 colah.com.au, 1 colapsys.net, 1 colarelli.ch, 1 -colarity.ai, 1 colarose.tk, 1 colascore.com, 1 colasrail.com, 1 @@ -34850,7 +34639,6 @@ collegemate.eu, 1 collegenavigator.gov, 1 collegepaperworld.com, 1 -collegephysicsanswers.com, 1 collegeprospectsofcentralindiana.com, 1 collegerover.com, 1 colleges.chat, 1 @@ -34869,7 +34657,6 @@ collezione.it, 1 collide.be, 1 collideascope.co, 0 -colliechatter.com, 1 collierlittler.com, 1 collierlunaire.fr, 1 colliervotes.gov, 1 @@ -34930,7 +34717,6 @@ colorado-locksmith.com, 1 coloradobluebook.gov, 1 coloradochildrep.gov, 1 -coloradocollegiate.com, 1 coloradocountrylife.coop, 1 coloradoer.tk, 1 coloradofamli.gov, 1 @@ -34938,7 +34724,6 @@ coloradorangers.gov, 1 coloradoseodesign.com, 1 coloradosos.gov, 1 -coloradotitlesearch.com, 1 colorbay.com.ua, 1 colorbeta.com, 1 colorblindfilms.com, 1 @@ -34965,7 +34750,6 @@ colors.top, 1 colorsbycarin.com, 1 colortronic.tk, 1 -colorunhas.com.br, 0 colorvibe.ee, 1 colorwow.cf, 1 colorwow.ga, 1 @@ -35021,13 +34805,12 @@ colwichks.gov, 1 colwyn.me, 1 colwynfm.com, 1 -colyakoomusic.com, 1 com-news.io, 1 -com-tic.africa, 1 com.cc, 1 com.com.tr, 1 com.fo, 1 com4.no, 0 +com64.cloud, 1 comactor.com, 1 comactor.fr, 1 comalia.com, 1 @@ -35085,9 +34868,7 @@ comercialmattos.com, 1 comercialroxana.com, 1 comercialtrading.eu, 1 -comerciogallego.es, 1 comeros.be, 1 -comestoarra.com, 1 comet-pct.com, 1 comet-xray.com, 1 comet.eu.org, 1 @@ -35104,11 +34885,14 @@ comex.biz, 1 comfandivirtual.com.co, 1 comff.net, 1 +comfidentia.cl, 1 +comfidentia.com, 1 comfintouch.com, 0 comfis.nl, 1 comfitsweets.co.uk, 1 comfort-place.com.ua, 1 comfortablelife.tk, 1 +comfortair-ac.com, 1 comfortcredit.ru, 1 comfortdelgro.com, 1 comfortingsolutions.pro, 1 @@ -35277,7 +35061,6 @@ compactador-vendetta.tk, 1 compagnidimerenda.tk, 1 compagniecoupable.fr, 1 -compagniedesateliers.com, 0 compagniedesvoyageurs.com, 1 compagniemartin.com, 0 companhiaatlantica.pt, 1 @@ -35297,6 +35080,7 @@ compareairfaredeals.com, 1 compareer.com, 1 compareleasedlines.co.uk, 1 +comparelocal.ca, 1 comparemymobile.com, 1 compareo.au, 1 compareprecios.com, 1 @@ -35312,7 +35096,6 @@ compassfinance.com, 1 compassintladv.com, 1 compassionate-biology.com, 1 -compassionatehlt.com, 1 compasslos.com, 1 compassregroup.com, 1 compattatori.it, 1 @@ -35327,8 +35110,8 @@ compeuphoria.com, 1 compibus.fr, 1 compilenix.org, 0 +compiur.com, 1 complaint.tk, 1 -complaro.com, 1 compleet.com, 1 complete-concrete-concise.com, 1 complete-privacy.tk, 1 @@ -35347,7 +35130,6 @@ completewordsest.ga, 1 complex-kaspiy.tk, 1 complex-organization.com, 1 -complexart.ro, 1 complexcoral.ro, 1 complexity.fm, 1 complexsystems.fail, 1 @@ -35359,7 +35141,6 @@ complianceg.com, 1 compliancehome.com, 1 complianceinsight.ca, 1 -compliancerisksoftware.co.uk, 0 compliancessentials.com, 1 compliantclaw.com, 1 compliantfirmware.com, 1 @@ -35426,7 +35207,6 @@ compuscripts.com, 1 compuseguridad.com, 1 compusrit.tk, 1 -compustore.pe, 1 compustuff.tk, 1 computel.nl, 0 computer-acquisti.com, 1 @@ -35446,7 +35226,6 @@ computerforums.net, 1 computerhilfe-feucht.de, 1 computerjet.ru, 1 -computermaus.com, 1 computernetwerkwestland.nl, 1 computernetwork.be, 1 computerpackages.com, 0 @@ -35523,7 +35302,6 @@ concertcrushers.ga, 1 concertparkingest.ga, 1 concerts-metal.ch, 0 -concertsenboite.fr, 1 concertsponent.tk, 1 concertsto.com, 1 conci.com.ar, 1 @@ -35550,7 +35328,6 @@ concretemachines.be, 1 concretepressurewashing.com, 1 concreterepairconcreteleveling.com, 1 -concreterstoowoomba.com, 1 concreterswollongong.com, 1 concurseirosdeplantao.com.br, 1 concursosabertos.com.br, 1 @@ -35558,13 +35335,12 @@ concursurionline.ro, 1 condemnity.net, 1 condenast.co.uk, 1 -condictor.pl, 1 condignum.com, 1 condit.cf, 1 condit.gq, 1 condit.ml, 1 condizionatore.roma.it, 1 -condo.do, 1 +condominiodoc.ai, 1 condominiorganica.pe, 1 condominiosi.it, 1 condominioweb.com, 1 @@ -35643,17 +35419,15 @@ confluents.fr, 1 conformat.com, 1 conformax.com.br, 1 -conformidoc.com.br, 1 conformist.jp, 1 conformitykills.tk, 1 confort-bebe.fr, 1 confort-sommeil.fr, 1 -conftree.com, 1 +conftree.com, 0 confucio.cl, 1 confused.com, 1 confusion-band.ch, 1 confygo.com, 1 -congafasdesol.com, 1 congdongnhatviet.com, 0 congelado.tk, 1 congelationpunaisedelit.com, 1 @@ -35705,7 +35479,6 @@ connecticutcourtreporter.com, 1 connecticutcourtreporters.com, 1 connecticutnet.tk, 1 -connecticuttitlesearch.com, 1 connectika.io, 1 connecting-software.com, 1 connectingmillions.com, 1 @@ -35764,7 +35537,7 @@ conputant.co, 1 conqi.net, 1 conque.sk, 1 -conquestmuscleactivation.com, 1 +conquerant-opticien.fr, 1 conquistar30dias.com.br, 1 conrad-design.com, 1 conrad-kostecki.de, 1 @@ -35824,7 +35597,6 @@ consorcionacionalideal.com.br, 1 consorciotec.com, 1 consort-ats.com, 1 -consortium.chat, 1 consortiumhealthplans.com, 1 consorzio.org, 1 conspiracionweb.tk, 1 @@ -35842,6 +35614,7 @@ constellatio.com, 1 constellationinternational.ml, 1 constellations.ga, 1 +constellationsfamilialesparis.com, 1 constern.de, 1 consteval.org, 1 constexpr.org, 1 @@ -35873,6 +35646,7 @@ consuldat.com, 1 consulenteambientale.it, 1 consulentedellavoro.it, 1 +consulentedellosgombero.it, 1 consulenza.pro, 1 consulimp.com.br, 1 consult-altius.co.uk, 1 @@ -35892,6 +35666,7 @@ consultinghousenet.tk, 1 consultingnurseest.ga, 1 consultium.io, 1 +consultoraimobiliaria.com.br, 1 consultoriaandrade.com.br, 1 consultoriadeseguranca.com.br, 1 consultoriosodontologicos.com.br, 1 @@ -35904,7 +35679,6 @@ consumer.gq, 1 consumer.org.nz, 1 consumeraction.gov, 1 -consumeraffairs.gov.tt, 1 consumerbureau.gov, 1 consumercal.org, 1 consumerfiles.com, 1 @@ -35936,7 +35710,6 @@ contactbadger.com, 1 contactelus88.fr, 1 contactsrl.it, 1 -contadorespublicos.co, 1 contailor.de, 1 containeroncloud.com, 1 contalbi.pt, 1 @@ -35945,12 +35718,11 @@ contato.vip, 0 contebia.ai, 1 contecgmbh.com, 1 +contee.eu, 1 contegy.com, 1 contempfleury.com, 1 -contemplativeeducation.org, 1 contemptevoke.com, 1 contenedoresdereciclaje.online, 1 -contentcaching.com, 1 contentmachineai.online, 1 contentpass.io, 1 contentpass.net, 1 @@ -35973,6 +35745,7 @@ contortion.tk, 1 contos.cz, 1 contra.com, 1 +contrabandcustoms.com, 1 contrabass.net, 1 contracostacr.gov, 1 contracostacre.gov, 1 @@ -36000,6 +35773,7 @@ contratasegurosalud.com, 1 contratderatisation.net, 1 contratoimediato.com, 1 +contratosdelocacao.com.br, 1 contratti.it, 1 contrattipubblici.org, 1 contrel.be, 1 @@ -36013,6 +35787,7 @@ contro.tk, 1 controlaudits.com, 1 controlbooth.com, 1 +controlcenter.gigahost.dk, 1 controld.com, 1 controle-exportations.fr, 1 controle-technique-ales.fr, 1 @@ -36078,7 +35853,6 @@ conwaymi.gov, 1 conwaypdnh.gov, 1 conwaysc.gov, 1 -conwood.best, 1 conwood.my.id, 1 conxcon.de, 1 coo.ooo, 1 @@ -36143,7 +35917,6 @@ cooljs.me, 1 cooljv.com, 1 coolkidsparty.nl, 1 -coolleader.com, 1 coolmath.cf, 1 coolpi.nl, 1 coolprylar.se, 1 @@ -36211,7 +35984,7 @@ copperart.ca, 1 coppercreekconstruction.ca, 1 copperexports.tk, 1 -copperhaus.com.au, 1 +copperhaus.com.au, 0 copperlantern.tk, 1 coppermein.co.za, 1 coppermine-kickers.tk, 1 @@ -36221,6 +35994,7 @@ coproflash.fr, 1 coprotag.com, 1 coprotag.fr, 1 +coprovia.fr, 1 copurhoca.com, 1 copvillanueva.com, 1 copy-kait.com, 1 @@ -36287,6 +36061,7 @@ cordobaromana.es, 1 cordovapdak.gov, 1 cordovarpd.gov, 1 +cordtape.co.uk, 1 corduroyproducts-velvetjackets.tk, 1 core-networks.de, 1 core-v.cn, 1 @@ -36380,6 +36155,7 @@ cornday.org, 1 cornel1801.com, 1 cornelia-kaufmann.tk, 1 +cornellstudentcenter.link, 1 corner-cabinets.tk, 1 corner-marburg.de, 1 corneranimal.com, 1 @@ -36401,6 +36177,7 @@ cornmachine.com, 1 cornninja.com, 1 cornodo.com, 1 +cornthwaitegroup.com, 1 cornut.fr, 1 cornwallct.gov, 1 cornwallda.co.uk, 0 @@ -36443,7 +36220,6 @@ corposeditora.tk, 1 corposflex.com, 1 corpsepaint.life, 1 -corpshadow.biz, 1 corpulant.coffee, 1 corpulantcoffee.com, 1 corpulent.coffee, 1 @@ -36695,7 +36471,6 @@ countermats.com, 1 countermentors.com, 1 countertopapothecary.com, 1 -countertrade.com, 0 countingdues.com, 1 countingup.com, 1 countmein.org, 1 @@ -36709,7 +36484,6 @@ countrybrewer.com.au, 1 countryfresh.com, 1 countryfunders.com, 1 -countrygrid.com, 1 countryhearthbedandbreakfast.com, 1 countrymountaininn.com, 1 countrymusicchart.net, 1 @@ -36753,12 +36527,14 @@ coursables.com, 1 coursave.com, 1 coursdejaponais.com, 0 +coursdining.com, 1 courseconfidence.com, 1 courseflix.net, 1 coursehero.com, 1 coursehunter.net, 1 courselore.org, 1 courseorbit.com, 1 +courseph.com, 1 coursera.org, 1 coursesidekick.com, 1 courseware.nl, 1 @@ -36818,7 +36594,6 @@ coventry.com, 1 coventrycollege.ac.uk, 1 coventryfdri.gov, 1 -coventrymoneyman.com, 1 coventryuk.tk, 1 covepoconoresorts.com, 1 cover-fashion.de, 1 @@ -36896,12 +36671,11 @@ coze.zone, 1 cozinharaz.com, 1 cozma.fr, 1 -cozmoapp.com, 1 cozmoyachts.com, 1 coztacukrzyca.pl, 1 cozumelisparadise.com, 1 cozyeggdesigns.com, 1 -cozyfarms.in, 1 +cozyfarms.in, 0 cozynergy.com, 1 cp-st-martin.be, 1 cp.pt, 1 @@ -36916,6 +36690,7 @@ cpaneltips.com, 1 cpaor.net, 1 cpaporttraining.org, 0 +cpaps.com.br, 1 cpars.gov, 1 cparta.pro, 1 cpasaguenay.ca, 1 @@ -36923,7 +36698,7 @@ cpasperdu.com, 1 cpbanq.com, 1 cpcbegin.tk, 1 -cpcclarkesville.org, 1 +cpcclarkesville.org, 0 cpchur.ch, 0 cpclayton.com, 1 cpd.org.au, 1 @@ -36980,6 +36755,7 @@ cpu.wiki, 1 cpucheu.com, 1 cpufanshop.ga, 1 +cpuitc.de, 1 cpws.gov, 1 cpxz.nl, 1 cpy.pt, 1 @@ -37052,10 +36828,10 @@ cradleaccounting.com, 0 cradleofaviation.org, 1 cradletocareer.org.uk, 1 -craevidence.com, 1 craft-beer.life, 1 craft-me-in.com, 1 craft.eu.org, 1 +craftadda.com, 0 craftagent.ai, 1 craftandbuild.de, 1 craftbyhand.com, 1 @@ -37064,7 +36840,6 @@ craftchocolate.store, 1 craftcms.com, 1 crafted.cat, 1 -craftedcharmweddingplanning.com, 1 craftedsignal.io, 1 crafterbase.de, 1 crafters-room.com, 1 @@ -37080,10 +36855,12 @@ craftmeow.com, 1 craftmeow.support, 1 craftops.de, 1 -craftottawa.ca, 1 craftshiponline.tk, 1 +craftsindia.com, 1 craftsmandruggets.com, 1 craftsmany.net, 1 +craftsmart.com, 1 +craftsware.com, 1 crafttalk.tk, 1 craftwarehouse.com, 1 craftwmcp.xyz, 1 @@ -37141,6 +36918,9 @@ cratedb.cloud, 1 cratedb.net, 1 crates-io.cn, 1 +cratexcalgary.com, 1 +cratexedm.com, 1 +cratexind.com, 1 cratitadelicioasa.ro, 1 cratss.co.uk, 1 cravingtoquit.com, 1 @@ -37157,10 +36937,11 @@ crawfordtx.gov, 1 crawler.ninja, 1 crawlerdle.com, 1 +crawlsonar.com, 1 crayon.co, 1 crayonsnursery.com, 1 craytos.jp, 1 -crazedknitters.com, 1 +crazenailsbeauty.com, 1 crazilyeverafter.com, 1 crazy-cake.tk, 1 crazy-coders.com, 1 @@ -37174,7 +36955,6 @@ crazycube.fr, 1 crazycube.tk, 1 crazydomains.com.au, 1 -crazydomains.in, 1 crazydrivers.tk, 1 crazydude.tk, 1 crazyfly.tk, 1 @@ -37229,7 +37009,6 @@ creamcastles.co.uk, 1 creamfields.com, 1 creamlanddairy.com, 1 -creamosweb.co, 1 creampiepussytube.com, 1 creamsoft.com, 1 creamycreation.com, 1 @@ -37256,6 +37035,7 @@ createinvoices.net, 1 createitwithcottage.com, 1 creately.com, 1 +createpass.net, 1 createstoke.com, 1 createstudios.com.au, 0 createurshub.com, 1 @@ -37265,7 +37045,6 @@ creatieven.com, 1 creationfox.gq, 1 creations-edita.com, 1 -creationsdharmonie.com, 1 creatisa.cz, 1 creative-cinema.cloud, 1 creative-cinema.de, 1 @@ -37280,11 +37059,11 @@ creativecommons.gr, 1 creativecommonscatpictures.com, 1 creativecommunityforpeace.com, 1 +creativecustom.com.br, 1 creativedijital.com.tr, 1 creativeedge.ch, 1 creativeeducation.tk, 1 creativeexpertdesigner.com, 1 -creativefinisheshub.com, 1 creativegraphix.com, 1 creativeground.com, 1 creativeground.com.au, 1 @@ -37321,6 +37100,7 @@ creatorrm.com, 1 creators.direct, 1 creatorsgarten.org, 0 +creatorstore.co, 1 creatorswave.com, 1 creattic.tk, 1 creatuasociacion.es, 1 @@ -37374,10 +37154,8 @@ creditozen.es, 0 creditozen.mx, 0 creditreport.tk, 1 -creditriskmonitor.com, 1 creditromania.ro, 1 creditshop.com, 1 -creditstandard.com, 1 creditview.ai, 1 creditxpert.com, 1 crednox.com, 1 @@ -37391,13 +37169,13 @@ creeksidecentre.org.uk, 1 creeksideduluth.com, 1 creeksideproconstruction.com, 1 +creelfamilyphilanthropies.com, 1 creep.tk, 1 creepycraft.nl, 1 creepynuts.com, 1 creepystories.tk, 1 creer-mon-business-plan.fr, 1 creer-une-boutique-en-ligne.com, 1 -creermonsite-wp.com, 1 creerunblog.net, 1 creformadosbdp.pt, 1 crei.cat, 1 @@ -37452,12 +37230,11 @@ crex24.com, 1 crfcap.org, 0 crftvideo.com, 1 -crgalvin.com, 1 crgm.net, 1 crhoptimum.ca, 1 cri-paris.org, 0 cria.jp, 1 -criabot.app.br, 1 +criabot.app.br, 0 crianma.com, 0 criaraposta.com.br, 1 crias.fr, 1 @@ -37486,6 +37263,7 @@ crimeamet.ml, 1 crimean-wines.tk, 1 crimeandwar.com, 1 +crimebrasil.com.br, 1 crimefreeliving.com, 1 crimemuseum.org, 1 crimereports.com, 1 @@ -37518,7 +37296,6 @@ crip-usk.ba, 1 criptex.tk, 1 criptocert.com, 1 -criptofy.com, 1 criptoinvest.pt, 1 criptomonedas365.com, 1 criptomoneylite.tk, 1 @@ -37530,6 +37307,7 @@ crisisactual.com, 1 crisisclubers.ga, 1 crisisdelos40.tk, 1 +crisisflare.org, 1 crisisnextdoor.gov, 1 crisispreparedness.com, 1 crismar-flora.tk, 1 @@ -37546,6 +37324,7 @@ crispsheets.com, 1 crispybacon.ml, 1 crisscrossjazz.com, 1 +crisscrossnimble.in, 1 crisssmanmix.tk, 1 cristaissaomarcos.com.br, 1 cristaleslitios.com.mx, 1 @@ -37581,6 +37360,7 @@ criticalculture.gq, 1 criticalculture.ml, 1 criticalgenesis.tk, 1 +criticalitysciences.com, 1 criticalmention.com, 1 criticalminerals.gov, 1 criticalsoftware.com, 1 @@ -37591,7 +37371,9 @@ critiqa.app, 1 critiquejeu.info, 1 critiquejeu.org, 1 +critsci.com, 1 critsci.net, 1 +critsci.org, 1 critter.art, 1 critterculture.com, 1 criu.org, 1 @@ -37607,7 +37389,7 @@ crm.onlime.ch, 0 crm114d.com, 1 crm4eshop.com, 1 -crm911.com, 0 +crm911.com, 1 crmax.de, 1 crmdumariage.com, 1 crmedicalteam.com, 1 @@ -37620,6 +37402,7 @@ crmtaxi.ml, 1 crnajobsite.com, 1 crnalab.net, 1 +crnelson.co.nz, 1 croachlife.com, 1 croatia.hr, 1 crobeauty.com, 1 @@ -37632,6 +37415,7 @@ crockettmyers.com, 1 crockettpups.com, 1 crocky.tk, 1 +croclius.com, 1 crocop.tk, 1 crocs.eu, 1 crocuscoaching.co.uk, 1 @@ -37640,6 +37424,7 @@ crohns-disease.org.uk, 0 croissancelocal.fr, 1 croissant.casa, 1 +cromartycamping.com, 1 cromavista.tk, 1 cromefire.myds.me, 1 cromosceltavigo.tk, 1 @@ -37704,7 +37489,6 @@ crossjoin.pt, 1 crosslifenutrition.co.uk, 0 crosslimit.ga, 1 -crossorange.jp, 1 crossover.tk, 1 crossoverit.com, 1 crosspeakoms.com, 1 @@ -37717,6 +37501,7 @@ crosty.tk, 1 crotchrockets.tk, 1 crow.tw, 1 +crowbots.fr, 1 crowcloud.com, 1 crowcrowcrow.com, 1 crowdamp.live, 1 @@ -37750,12 +37535,10 @@ crownstone.rocks, 1 crowter.li, 1 crowwing.gov, 1 -crowwingenergized.org, 1 croydon-nh.gov, 1 croydonapartments.com.au, 1 croydonbouncycastles.co.uk, 1 croydondrive.org.uk, 1 -croydonlabourgroup.co.uk, 1 crpcentroradiologico.com.br, 1 crrapi.cf, 1 crrapi.xyz, 1 @@ -37766,6 +37549,7 @@ crsserviceogkloak.dk, 1 crstat.ru, 1 crt.cloud, 1 +crt.sh, 1 crt2014-2024review.gov, 1 crtech-solutions.com, 1 crtevents.co.uk, 1 @@ -37773,7 +37557,6 @@ crucibl.ai, 1 crucible.io, 1 crudly.ai, 1 -cruelalice.net, 1 cruelcarbon.tk, 1 cruelgirls.tk, 1 crufad.org, 0 @@ -37785,6 +37568,7 @@ cruiselookout.com, 1 cruisemoab.com, 1 cruisemongers.com, 1 +cruiseping.net, 1 cruisequotes.com, 1 cruises.tk, 1 cruisezoom.com, 1 @@ -37848,6 +37632,7 @@ crypto-gaming.tk, 1 crypto-iptv.online, 1 crypto-replay.com, 1 +crypto-survivors.com, 1 crypto-wiki.tk, 1 crypto.bzh, 1 crypto.gov, 1 @@ -37922,12 +37707,12 @@ cryptorival.com, 1 cryptoscamdb.org, 1 cryptoscope.io, 1 -cryptosender.io, 1 cryptoshot.pw, 1 cryptosolicitations.com, 1 cryptostamp.com, 1 cryptostorm.is, 1 cryptotabworks.ml, 1 +cryptotailor.io, 1 cryptotrendclub.com, 1 cryptoverse-ai.com, 1 cryptoworldnews.world, 1 @@ -37950,7 +37735,6 @@ crystal.com.co, 1 crystaland.bg, 1 crystalapp.ca, 1 -crystalball.photo, 1 crystalcaves.tk, 1 crystalcherryonline.tk, 1 crystalcleaningservicing.com, 1 @@ -37990,6 +37774,7 @@ cs2points.com, 1 csa-clan.tk, 1 csa.co.za, 1 +csa.fyi, 1 csa.support, 1 csaapac.com, 1 csaapac.org, 1 @@ -38039,7 +37824,6 @@ csevolution.tk, 1 csexy.ml, 1 csf.sh, 1 -csfa.be, 1 csfcloud.com, 1 csffa.ca, 1 csfm.com, 1 @@ -38068,6 +37852,7 @@ csilies.de, 1 csillagoszpumi.se, 1 csiltda.cl, 1 +csinnovations.com.br, 1 csiperseus.com, 1 csirt.ee, 0 csitarz.com, 1 @@ -38140,12 +37925,12 @@ ct-static.com, 1 ct-watches.dk, 1 ct.search.yahoo.com, 0 +ct2600.com, 1 ctafo.com, 0 ctauditors.gov, 1 ctbirding.org, 1 ctc-g.com.sg, 1 ctcloud.ml, 1 -ctcom-peru.com, 1 ctconp.org, 1 ctcp.pt, 1 ctdesigner.ca, 1 @@ -38192,11 +37977,14 @@ ctrlalto.com, 1 ctrlaltstream.com, 1 ctrlcvz.tk, 1 +ctrlops.io, 1 ctsd.de, 1 +ctsportsrecovery.com, 1 ctsu.org, 1 cttso.gov, 1 ctu.cz, 1 -ctwsolicitors.co.uk, 0 +ctul.net, 1 +ctwsolicitors.co.uk, 1 ctx.build, 1 ctyrisinkneri.cz, 1 cu247secure.ie, 1 @@ -38215,7 +38003,6 @@ cuautosearch.com, 1 cuban.wiki, 1 cubanchino.tk, 1 -cubanda.de, 1 cubatel.com, 1 cubavisa.uk, 1 cubazineers.ga, 1 @@ -38267,6 +38054,10 @@ cucabot.tk, 1 cucaracha.tk, 1 cuchichi.es, 1 +cucinasano.co.uk, 1 +cucinasano.com, 1 +cucinovo.com, 1 +cuckdle.com, 1 cuckology.com, 1 cuckoohallacademy.org.uk, 1 cuddlecat.io, 1 @@ -38275,10 +38066,8 @@ cudesa.gq, 1 cudesyb.tk, 1 cudoo.de, 1 -cueca.com.br, 1 cuecasdomdiego.com.br, 1 cuecasonline.com.br, 1 -cuentadias.cl, 1 cuentame.io, 1 cuentamecomopaso.es, 1 cuentas-gratis.ga, 1 @@ -38286,7 +38075,6 @@ cuentosyletras.com, 1 cuesplus.com, 1 cuestiondetiempo.tk, 1 -cuethat.com, 1 cuetoems.com, 1 cuevafelina.tk, 1 cuevasymontoto.com, 1 @@ -38359,6 +38147,7 @@ cumberlandcountypa.gov, 1 cumberlanddairy.com, 1 cumberlandrivertales.com, 1 +cumberlink.com, 1 cumbiaperuana.tk, 1 cumbreamazonica.tk, 1 cumfiesta.com, 1 @@ -38431,6 +38220,7 @@ curde.pt, 1 cure53.de, 1 cureatr.com, 1 +curebear.us, 1 cureine.com, 1 curewiki.health, 1 cureyou.com.tw, 1 @@ -38500,9 +38290,9 @@ cursosingles.com, 1 cursossena.co, 1 cursossilvania.com, 1 -cursosypostgrados.com, 1 curtacircuitos.com.br, 0 curtains.bg, 1 +curtainsdating.com, 1 curtis-ne.gov, 1 curtis-smith.me.uk, 1 curtis-smith.uk, 1 @@ -38515,8 +38305,6 @@ curvaverde02.tk, 1 curveprotect.cz, 1 curvissa.co.uk, 1 -curvyjessi.com, 1 -curvysarah.com, 1 cusens.md, 1 cusfit.com, 1 cusgpwoerden.nl, 1 @@ -38653,7 +38441,7 @@ cvtreeserv.com, 0 cvv.cn, 1 cvwdwater.gov, 1 -cvwep.id, 1 +cvwep.id, 0 cvwizard.com, 1 cvwrfut.gov, 1 cw-bw.de, 0 @@ -38689,7 +38477,6 @@ cwmart.in, 1 cwmcarpentry.com, 1 cwmcpe.tk, 1 -cwo.fi, 1 cworkflow.com, 1 cwp.com.sg, 1 cwr.gov, 1 @@ -38750,7 +38537,6 @@ cyberab.org, 1 cyberagentur.de, 1 cyberai.co.th, 1 -cyberai.pl, 1 cyberalternance.com, 1 cyberark.com, 1 cyberarmor.cl, 1 @@ -38758,6 +38544,7 @@ cyberattackincidentresponse.com, 1 cyberaudit.fi, 1 cyberautomobile.tk, 1 +cyberbar.fr, 1 cyberbliss.in, 1 cyberblog.cn, 0 cyberbook.ml, 1 @@ -38782,7 +38569,7 @@ cybercrew.cc, 1 cybercrew.rocks, 1 cybercrime.gov, 1 -cyberd.org, 0 +cyberd.org, 1 cyberdan.co.uk, 1 cyberdean.fr, 1 cyberdefensefirm.org, 1 @@ -38827,12 +38614,13 @@ cyberjake.xyz, 1 cyberkey.cz, 1 cyberkeypoint.com, 1 +cyberking.ae, 1 cyberkov.com, 1 cyberlaracom.fr, 1 cyberlaw.be, 1 cyberlin.org, 1 cyberlinchpin.com, 1 -cyberlinx.com.au, 1 +cyberlinx.com.au, 0 cyberlocos.tk, 1 cyberlounge.ga, 1 cyberlympics.org, 1 @@ -38852,7 +38640,6 @@ cyberneurix.com, 1 cybernews.com, 1 cybernode.host, 1 -cyberogism.com, 1 cyberon.com.au, 1 cyberon.it, 1 cyberoptic.de, 1 @@ -38896,13 +38683,13 @@ cybersecurity.gov, 1 cybersecurity.gr, 1 cybersecurity.run, 1 +cybersecurityad.com, 1 cybersecuritybusiness.ai, 1 cybersecuritydefence.co.uk, 1 cybersecurityincidentresponse.com, 1 cybersecuritysummit.com, 1 cybersecuritywerkt.nl, 1 cyberserver.cz, 1 -cybershark.space, 1 cybershelter.be, 1 cybershieldscan.com, 1 cybershot.tk, 1 @@ -38924,6 +38711,7 @@ cybertalents.com, 1 cyberteam.info, 1 cybertechnics.lk, 1 +cyberthreatintelligencenetwork.com, 1 cyberti.work, 1 cybertinus.nl, 1 cybertip.cz, 1 @@ -38946,7 +38734,9 @@ cyberzones.gq, 1 cyberzy.org, 1 cybiko123.com, 1 -cybilportal.org, 1 +cybliminal.com, 1 +cybliminal.com.au, 1 +cybnode.com, 1 cyborgbase.ai, 1 cyborgtheory.tk, 1 cyboshield.com, 1 @@ -38954,7 +38744,6 @@ cybozu.com, 1 cybrix.io, 1 cybsafe.com, 1 -cycc.cloud, 1 cyclamen.tk, 1 cycledynamics.physio, 1 cyclehackluxembourgcity.lu, 1 @@ -38963,12 +38752,13 @@ cycleshop.com.ua, 1 cyclespares.in, 1 cyclesservice.ru, 1 -cycleterrace.jp, 1 +cycleterrace.jp, 0 cycletours.com, 1 cycletours.nl, 1 cycling74.com, 1 cyclingcoachai.com, 1 cyclingmonthlyest.ga, 1 +cyclingzone.org, 1 cyclisjumper.gallery, 1 cyclize.cf, 1 cyclonedesign.ca, 1 @@ -38987,6 +38777,7 @@ cygenx.com, 1 cygnatus.com, 1 cygnius.net, 1 +cyi001.cn, 1 cyklistika24.cz, 1 cyklokoalicia.sk, 0 cylex-italia.it, 1 @@ -39013,10 +38804,10 @@ cypherock.com, 1 cypherpunk.observer, 1 cypherpunk.ws, 1 +cypherslash.com, 1 cypressca.gov, 1 cypro.co.uk, 1 cyprus-company-for.gr, 1 -cyprus-company-service.com, 1 cyprus-companyformation.com, 1 cyprus-consult.com, 1 cyprustimes.com, 1 @@ -39094,6 +38885,7 @@ d-cuba.com, 1 d-day.tk, 1 d-diabetiki.ru, 1 +d-edge.me, 1 d-eisenbahn.com, 1 d-ku.de, 1 d-macindustries.com, 1 @@ -39156,7 +38948,6 @@ d3xt3r01.tk, 1 d42.no, 1 d4fx.de, 1 -d4insight.com, 1 d4wson.com, 1 d500world.tk, 1 d5197.co, 1 @@ -39170,7 +38961,6 @@ d6c5yfulmsbv6.cloudfront.net, 1 d7031.de, 1 d774.co.uk, 1 -d8.io, 1 d8181.com, 1 d82365.com, 1 d883vip.com, 1 @@ -39217,7 +39007,6 @@ dabro.tk, 1 dabstore.no, 1 dabuzz.tk, 1 -dacada-porn.com, 1 dacadoo.com, 1 dacautocentres.com, 1 daceurope.co.uk, 1 @@ -39229,10 +39018,10 @@ dachdeckerei-hagen.de, 0 dachdeckermeister-egon-weiss.de, 1 dachdeckermeister-moeller.de, 1 +dachdeckerzurich.ch, 1 dachlaeufer.com, 1 dachshundsaspets.com, 1 dachshundtalk.com, 1 -daciaclubnederland.nl, 1 daclog.com.br, 1 daconsult.uk, 1 dacsansach.com, 1 @@ -39248,7 +39037,6 @@ daddylonglegs.tk, 1 daddyschickenshack.com, 0 daddysfranchising.com, 1 -daddysluder.net, 1 dadecityfl.gov, 1 dadecountymo.gov, 1 dadecountymo911.gov, 1 @@ -39265,6 +39053,7 @@ dadrian.io, 1 dadsarmy.tk, 1 dadshoes.net, 1 +dadtale.com, 1 daduke.org, 1 dadwhatcooks.com, 1 daedalusdesigns.co, 1 @@ -39286,6 +39075,7 @@ dafdto.com, 1 dafe2021.ee, 1 dafengding.com, 1 +daffiq.net, 1 daffodilcenter.org, 1 daffodilcenter.org.au, 1 daffodilcentre.com.au, 1 @@ -39293,7 +39083,7 @@ daffodilcentre.org.au, 1 daffodilday.com.au, 1 daffodildaydip.com.au, 1 -daffodilusa.org, 1 +daffodilusa.org, 0 dafont.com, 1 daft.ie, 1 dafta.sh, 1 @@ -39366,7 +39156,6 @@ dailyegyptian.com, 1 dailyfictive.com, 1 dailyfish.ru, 0 -dailyfutbol.com, 1 dailyfx.com, 1 dailyhealthylife.ml, 1 dailyhealthylife.tk, 1 @@ -39395,7 +39184,6 @@ dailysportfan.com, 1 dailytrip.de, 1 dailyusbusiness.tk, 1 -dailyvpn.com, 1 dailywealth.com, 1 dailywork.ga, 1 daimenu.com, 1 @@ -39502,6 +39290,7 @@ daltonohio.gov, 1 daltons.tk, 1 daluju123.com, 1 +dalujuw.com, 1 dalux.com, 0 dalycity.gov, 1 dalycreditcorp.com, 1 @@ -39523,6 +39312,7 @@ damenmode-kleidung.de, 1 damgoodmedia.com, 1 damhnaitdoyle.com, 1 +dami.am, 1 damianmalrechauffe.tk, 1 damianus.hr, 1 damibaby.com.br, 1 @@ -39543,7 +39333,7 @@ damnkid.ml, 1 damnmodz.com, 1 damonline.dk, 1 -damore.nl, 1 +damosta.com, 1 dampedia.com, 1 dampfbahn-leverkusen.com, 1 dampfbahn-leverkusen.de, 1 @@ -39552,6 +39342,7 @@ dampoo.com, 1 damsafety.co.nz, 1 damscheid.de, 1 +damt.io, 1 damuhan.tk, 1 damuliene.lt, 1 damvdolg.gq, 1 @@ -39566,6 +39357,7 @@ danacuan.id, 1 danadameson.tk, 1 danads.com, 1 +danahy.com, 1 danalpay.com, 1 danalytics.com.pe, 1 danamica.dk, 1 @@ -39601,7 +39393,6 @@ dancingcubs.co.uk, 1 dancol.org, 1 danddy.eu, 1 -dandelikaliadventure.com, 1 dandelion.eu, 1 dandelionjunkqueens.tk, 1 dandenongroadapartments.com.au, 1 @@ -39648,11 +39439,11 @@ daniel-san.de, 1 daniel-stahl.net, 1 daniel-topalov.ga, 1 +daniel.pp.ua, 1 daniel.priv.no, 1 daniel.sb, 1 daniela-klaus.de, 1 danielacocco.it, 1 -danielacorahansson.com, 1 danieladentista.com, 1 danielaferpe.tk, 1 danielagustafsson.fi, 0 @@ -39766,7 +39557,6 @@ dankim.de, 0 dankojunasevic.tk, 1 danla.nl, 1 -danlirette.com, 1 danlockton.tk, 1 danma.in, 1 danmaby.com, 1 @@ -39868,6 +39658,7 @@ daralex.ro, 1 daralfajr.site, 1 daramad-telegram.ga, 1 +darashkevich.com, 1 daravk.ch, 1 darbgaldi.lv, 1 darc-mak.de, 1 @@ -39932,7 +39723,6 @@ darkct.com, 1 darkcure.tk, 1 darkdestiny.ch, 1 -darken.eu, 1 darkengine.io, 1 darkengine.net, 1 darkenluster.space, 1 @@ -40026,11 +39816,13 @@ darrenm.net, 1 darrentoh.ai, 1 darrouzettisd.gov, 1 +darsen.ch, 1 dart-tanke.com, 1 dart-tanke.de, 1 dartagnan.com, 1 dartbeginners.tk, 1 dartcarrousel.tk, 1 +darteno.com, 1 dartergroup.com, 1 dartijan.com, 1 dartinc.io, 1 @@ -40052,6 +39844,7 @@ darwinport.com.au, 1 darwinsearch.org, 1 darya.tk, 1 +daryabin.ir, 1 daryl-wilcher.tk, 1 daryl.moe, 1 daryl.one, 1 @@ -40066,7 +39859,6 @@ das-mediale-haus.de, 1 das-sommercamp.de, 1 dasabomobil.de, 1 -dasads.de, 1 dasbaum.ch, 1 dascan.com.br, 1 dasdanny.de, 1 @@ -40080,7 +39872,6 @@ dash.com.co, 1 dashboard.gov.ph, 1 dashboard.run, 1 -dashboardbiodiversiteit.nl, 1 dashboardphilippines.com, 1 dashdoc.eu, 1 dashdrive.net, 1 @@ -40178,6 +39969,7 @@ datacomm.com, 1 datacommissioner.gov.au, 0 datacomp.sk, 1 +dataconductors.com, 1 datacool.tk, 1 datacorp.fr, 0 datadefendersforum.com, 1 @@ -40214,7 +40006,6 @@ dataman.ml, 1 datamate.org, 1 datamatics.com, 1 -datamationgroup.com, 1 datamish.com, 1 datamotion.com, 1 datanaka.com, 1 @@ -40236,7 +40027,6 @@ datasat.solutions, 1 datascene.com.au, 1 datascience-pm.com, 1 -datascience.cafe, 1 datasciencedojo.com, 1 datascope.io, 1 datasharpacademy.com, 1 @@ -40345,7 +40135,7 @@ datos-quimsaitw.es, 1 datosfreak.tk, 1 datost.ai, 1 -datost.com, 1 +datost.com, 0 datovy-portal.cz, 1 datovy-portal.sk, 1 datovyaudit.cz, 1 @@ -40389,8 +40179,9 @@ davecardwell.com, 1 davecarpenterbooks.com, 1 davecloud.fr, 1 -davedavlin.com, 1 +davedavlin.com, 0 daveedave.de, 0 +davelawler.com, 1 davelucia.com, 1 davematthias.com, 1 davemusic.tk, 1 @@ -40399,12 +40190,14 @@ davepullig.co.uk, 1 daveredfern.com, 1 daveroverts.nl, 0 +davesandersofficial.com, 1 davesplace.tk, 1 davetempleton.com, 1 davewallerphotography.com, 1 davewardle.com, 1 davewut.ca, 1 daveyconstructions.com, 1 +davgr.com, 1 davichete.me, 1 david-almeida.co.uk, 1 david-andrawos.fr, 1 @@ -40421,12 +40214,12 @@ david-reess.de, 1 david.kitchen, 1 davidalbert.me, 1 -davidandersson.se, 1 davidaskew.uk, 1 davidbach.com, 1 davidbaechtold.ch, 1 davidbindel.com, 1 -davidbranco.me, 1 +davidbowser.io, 1 +davidbranco.me, 0 davidbrito.tech, 1 davidbyrne.tk, 1 davidcarrollandco.com, 1 @@ -40441,7 +40234,6 @@ davidepalma.it, 1 davidereinato.tk, 1 davidetmagali.fr, 1 -davidfarland.com, 1 davidforward.net, 1 davidg.cc, 1 davidgarza.me, 1 @@ -40552,6 +40344,7 @@ davypropper.com, 1 dawaai.pk, 1 daware.io, 1 +dawbets.com, 1 dawg.eu, 1 dawgs.ga, 1 dawidpotocki.com, 1 @@ -40605,10 +40398,10 @@ daymarksi.com, 1 daymi.co, 0 daymprove.life, 1 -daynia.net, 1 daynightdrugs.com, 1 dayofthegirl.gc.ca, 1 dayoneservices.org, 1 +daypocketapp.com, 1 dayslater.tk, 1 daysnews.tk, 1 dayswithnostabbings.ca, 1 @@ -40675,9 +40468,7 @@ dblcastles.co.uk, 1 dbldub.net, 1 dblfloat.com, 1 -dblsuretybonds.com, 1 dbmiller.org, 1 -dbmnet.be, 1 dbmobil.de, 1 dboptical.com, 1 dbox.ga, 1 @@ -40710,7 +40501,6 @@ dc-elektro.eu, 1 dc-forum.tk, 1 dc-occasies.be, 1 -dc-service.by, 1 dc-solutions.at, 1 dc-texas.com, 1 dc-zone.com, 1 @@ -40721,7 +40511,6 @@ dcard.tw, 1 dcards.in.th, 1 dcareer.tk, 1 -dcarvalho.com.br, 1 dcave.net, 1 dcboe.org, 1 dcbouncycastles.co.uk, 1 @@ -40742,13 +40531,11 @@ dcgprecisionpainters.co.nz, 1 dchatelain.ch, 0 dchauriga.com, 0 -dci3.com, 1 dcimpianti.it, 1 dck.eu, 1 dckhst.de, 1 dcklvr.fr, 1 dcl.re, 1 -dclm.org, 1 dclmwp.com, 1 dcm.com, 1 dcmarvelunited.com, 1 @@ -40905,7 +40692,6 @@ dealerwriter.com, 1 dealerxpert.com.br, 1 dealflowpro.io, 1 -dealha.com, 1 dealhabibi.com, 1 dealinflatables.co.uk, 1 dealjp.com, 1 @@ -40923,13 +40709,15 @@ dealsfromheaven.com, 1 dealsmagnet.com, 1 dealsomart.com, 1 +dealsposted.com, 1 dealspotr.com, 0 dealstreet.fr, 1 +dealtimeworlds.com, 1 dealvolger.nl, 1 dealzbook.ae, 1 dealzbook.bh, 1 dealzbook.com, 1 -dealzme.com, 1 +dealzme.com, 0 dealzsaudi.com, 1 deamonmail.tk, 1 deamsterdam.ml, 1 @@ -40970,7 +40758,9 @@ deavel.fr, 1 deavel.net, 1 deavon.tk, 1 +debabel.org, 1 debacker.biz, 1 +deballiolsociety.org.uk, 1 debarkader34.tk, 1 debarras-diogene.paris, 1 debarrasantony.com, 1 @@ -41008,6 +40798,7 @@ deblier.dynv6.net, 1 deblijedoos.nl, 1 deblocking.ga, 1 +deboekaniers.be, 1 deboo.info, 1 debora-singkreis.de, 1 deborahkaty.tk, 1 @@ -41015,8 +40806,7 @@ debostero.tk, 1 deboutpourlemali.ml, 1 debra-cz.org, 1 -debra-sa.com, 1 -debraj.in, 1 +debraj.in, 0 debranddenbosch.nl, 1 debraschilling.de, 1 debrasclassiccleaning.com, 1 @@ -41041,6 +40831,7 @@ debutaredead.tk, 1 debuyer.com, 1 debzsh.tk, 1 +dec.ma, 1 dec6.gc.ca, 1 decadentdvices.com, 1 decagames.com, 1 @@ -41086,7 +40877,6 @@ deckerammo.com, 1 deckerville-mi.gov, 1 deckfix.co.nz, 1 -deckingwollongong.com, 1 deckshop.pro, 1 declarando.es, 1 declaration250.gov, 1 @@ -41094,7 +40884,6 @@ declarpro.fr, 1 declaw.ai, 1 declivitas.com, 1 -declutteringmymess.com, 1 deco.tax, 1 decoating.pl, 1 decock-usedcars.be, 1 @@ -41183,11 +40972,11 @@ deepcloud.swiss, 1 deepgame.tk, 1 deepgrade.in, 1 +deepharbor.hk, 1 deepharbor.vc, 1 deephill.com, 1 deephue.studio, 1 deepinsight.io, 0 -deepl.com, 1 deepmantis.io, 1 deepmountains.tk, 1 deepnote.com, 1 @@ -41201,11 +40990,11 @@ deepsoulutions.ga, 1 deepsoulutions.gq, 1 deepsoulutions.ml, 1 -deepsync.com, 1 deeptase.co.il, 1 deepu-mathew.tk, 1 deepumathew.tk, 1 deepvalley.tech, 1 +deepwind.ai, 1 deepwoodshop.com, 1 deerf0x.com, 1 deerfieldbeachhistoricalsociety.com, 0 @@ -41231,6 +41020,7 @@ defend2.org, 1 defendanimals.com, 1 defendarm.com, 1 +defenddeschutes.org, 1 defenestrazionedipra.ga, 1 defensegenerator.com, 1 defenseorchestrator.com, 1 @@ -41261,14 +41051,12 @@ defisolutions.ch, 0 defispot.com, 1 defistablecoin.ai, 1 -defkey.com, 1 deflumeriker.com, 1 defmarks.com, 1 defme.eu, 1 defont.nl, 1 defreitas.no, 1 defriesezaak.nl, 1 -deftek.com, 1 defterikebir.tk, 1 deftig-und-fein.de, 1 defunct-engineers.ml, 1 @@ -41317,9 +41105,7 @@ degruchy.org, 1 deguisements-couple.fr, 1 deguisements-gonflables.fr, 1 -degustavending.es, 1 degustuju.cz, 1 -dehardloopwinkel.nl, 1 dehippeouder.nl, 1 dehkade3.ml, 1 dehoga-reisen.de, 1 @@ -41343,6 +41129,7 @@ deinelakaien.tk, 1 deinestrainreviews.de, 1 deinewebsite.de, 1 +deinhalteverbot.de, 1 deinhardt.com, 1 deinjoghurt.de, 1 deinsparen24.de, 1 @@ -41359,7 +41146,6 @@ dejfcold.cz, 1 dejiren.com, 1 dejmidarek.cz, 1 -dejongeakademie.nl, 1 dejongonline.eu, 1 dejorisenkeesshow.tk, 1 dejure.org, 0 @@ -41370,6 +41156,7 @@ dekampioenen.tk, 1 dekas.link, 1 dekasegi-kansai.com, 1 +dekaumzug.de, 1 dekbedden.nl, 1 dekel.co.il, 1 dekeurslagers.nl, 1 @@ -41405,8 +41192,6 @@ delavska.si, 1 delawarehealth.tk, 1 delawarenation-nsn.gov, 1 -delawaresolarinitiative.com, 1 -delawaretitlesearch.com, 1 delawaretwpmi.gov, 1 delay-dengi.cf, 1 delaydengy.tk, 1 @@ -41434,7 +41219,6 @@ delfic.org, 1 delfincharters.com, 1 delfinus.tk, 1 -delftstudy.nl, 1 delhi.edu, 1 delhicleanairforum.tk, 1 delhitownshipmi.gov, 1 @@ -41444,7 +41228,6 @@ deliberatelyclassy.com, 1 delicaclubphils.tk, 1 delicadosonico.tk, 1 -delicale.com.br, 1 delici.art.br, 1 deliciascomercial.com, 1 deliciaskitchen.com, 1 @@ -41460,6 +41243,7 @@ delio.tk, 1 deliride.com, 1 delirio.tk, 1 +delishahk.com, 1 delistudio.cf, 1 delitefully.com, 1 delitto.top, 1 @@ -41499,7 +41283,7 @@ delprete.me, 1 delpuertohealth.gov, 1 delrayengineering.ca, 1 -delsnab.ru, 1 +delsnab.ru, 0 delsolphotography.com, 1 delsun.bg, 1 delta-data.ch, 1 @@ -41535,6 +41319,7 @@ deltaonlineguards.com, 1 deltaphiepsilon.tk, 1 deltaprise-events.de, 1 +deltarealtyllc.com, 1 deltarisk.com, 0 deltaserat.tk, 1 deltaservers.com.br, 1 @@ -41560,7 +41345,6 @@ delycate.com, 1 delycate.fr, 1 delyfrut.cl, 1 -delzottolink.com, 1 demaison.pro, 1 demakkelijkevegan.nl, 1 demander.tk, 1 @@ -41573,6 +41357,7 @@ demcon-industrial.nl, 1 demcon-multiphysics.de, 1 demcon-unmanned.nl, 1 +demcon.com, 1 demcra.com, 0 demedx.at, 1 demenagement-chalon.fr, 1 @@ -41585,7 +41370,6 @@ dementieva-pennetta.tk, 1 demes.tk, 1 demesos.tk, 1 -demetra-site.com.ua, 1 demeubelmakelaar.nl, 1 demeyere-usedcars.be, 1 demfloro.ru, 1 @@ -41611,8 +41395,8 @@ democracy-news.tk, 1 democracy.cf, 1 democracyfund.org, 1 -democracyineurope.eu, 1 democracylive.com, 1 +democratherald.com, 1 democratie.tk, 1 democraziaineuropa.eu, 1 demografia.tk, 1 @@ -41647,7 +41431,6 @@ demoussage-drone.fr, 1 dempe.tk, 1 demsh.org, 1 -demtech.com, 1 demuzere.nl, 1 demuzere.org, 1 demxausa.com, 1 @@ -41671,7 +41454,6 @@ dendi.tk, 1 dendibanget.tk, 1 dendionigi.com, 0 -dendra.io, 0 dendrite.fail, 1 denegka-mgnovenno.cf, 1 denegmnogo.tk, 1 @@ -41770,7 +41552,6 @@ dental-cloud.eu, 1 dental-colleges.com, 1 dental.gq, 1 -dentalasistanim.com, 1 dentalcolleges.tk, 1 dentalib.mx, 1 dentalimplantscost.com.au, 1 @@ -41801,7 +41582,6 @@ dentisteliege.be, 1 dentistesdarveauetrioux.com, 1 dentistnorthmelbourne.com.au, 1 -dentistree.in.ua, 1 dentistsgainesvillega.com, 1 dentistslilburnga.com, 1 dentoncounty.gov, 1 @@ -41831,6 +41611,7 @@ denverroot.com, 1 denvillenj.gov, 1 denvillepolice.gov, 1 +denwaban.jp, 1 deny.sh, 1 denydarko.tk, 1 deobandi.tk, 1 @@ -41848,7 +41629,6 @@ deoperator.nl, 1 deoremann.com, 0 deovergangendan.nl, 1 -depaco.com, 1 depagecms.net, 1 depapboeren.tk, 1 departamentoslosolivos.tk, 1 @@ -41876,6 +41656,7 @@ dependonplus.com, 1 deperewi.gov, 1 dephoro.com, 1 +depict.ai, 1 depicus.com, 1 depijp.tk, 1 depilacionmasculina.ch, 1 @@ -41924,6 +41705,7 @@ depowebstream.com, 1 deppresion.org, 1 deprecate.de, 1 +depremoldu.net, 1 depressionadvice.gq, 1 deprobe.pro, 1 deprofundis.tk, 1 @@ -41958,7 +41740,6 @@ derby.ge, 1 derbybouncycastles.com, 1 derbylegalassistance.com, 1 -derbymoneyman.com, 1 derbyshire-language-scheme.co.uk, 1 derchris.me, 1 derdevel.de, 1 @@ -41969,7 +41750,6 @@ derekandnikka.com, 1 dereklow.co, 1 derekseaman.com, 1 -derekseaman.studio, 1 derewonko.com, 1 derf.fr, 1 derfor.dk, 1 @@ -42031,20 +41811,17 @@ dersimizmatematik.cf, 1 dersoundhunter.de, 1 derssonu.com, 1 -derstreuner.ch, 1 derstulle.de, 1 dert.online, 1 dertouristik.com, 1 -dertraumausstatter-shop.at, 1 derventzis.eu, 1 derventzis.gr, 1 derw.pw, 1 -derwaldschrat.net, 1 derze.cloud, 1 des-hommes-et-des-clous.com, 1 desafiax.com, 1 desafiomovilidadsustentable.com, 1 -desagaz.com, 1 +desagaz.com, 0 desakatorock.tk, 1 desalas.org, 1 desapego.com.br, 1 @@ -42105,7 +41882,6 @@ designarea.tk, 1 designartepublicidad.com, 1 designbro.com, 1 -designburners.com, 1 designbymaja.no, 1 designbymargot.com, 1 designbymargot.fr, 1 @@ -42154,9 +41930,6 @@ designstripe.com, 0 designsystem.gov.scot, 1 designtrc.com, 1 -designville.cz, 1 -designville.eu, 1 -designville.sk, 1 desimpelaere.eu, 1 desinfectantemanos.org, 1 desinfection-gale.fr, 1 @@ -42240,7 +42013,6 @@ destruction-chenilles-processionnaires.com, 1 destruction-frelon-asiatique.com, 1 destructive-revolution.tk, 1 -destructoradepapel.com.es, 1 destruye.es, 1 destudio.org.ua, 1 destyntek.com, 1 @@ -42250,6 +42022,7 @@ deswaffelaars.tk, 1 desy.tk, 1 desyatnichenko.ml, 1 +desygner.com, 0 desynced.rocks, 1 det-blev-ingen-cd.se, 1 det-te.ch, 1 @@ -42263,6 +42036,7 @@ detecte-fuite.ch, 0 detecte.ch, 0 detectefuite.ch, 0 +detectify.com, 1 detection-canine-punaise-paris.com, 1 detectorip.ro, 1 detectro.cc, 1 @@ -42290,7 +42064,6 @@ detroit-english.de, 1 detroit.gov, 1 detroitcrackteam.com, 1 -detroitfastest.org, 1 detroitlabs.com, 0 detroitlocksmiths.net, 1 detroitnews.tk, 1 @@ -42318,6 +42091,7 @@ deurs.fr, 1 deurwaardersveilingen.nl, 1 deusarodrigues.com.br, 1 +deuskai.com, 1 deustech-media.tk, 1 deustech.tk, 1 deutsche-finanzagentur.de, 1 @@ -42353,7 +42127,6 @@ dev-soft.pl, 1 dev-telusdata.com, 1 dev-test.nl, 1 -dev-testing.org, 1 dev-tricks.com, 1 dev-ylinternal.com, 1 dev.inc, 1 @@ -42366,7 +42139,7 @@ devahi.gq, 1 devaland.com, 1 devalbert.com, 1 -devalkincentives.nl, 1 +devalkincentives.nl, 0 devalps.eu, 1 devanstavern.tk, 1 devarena.pp.ua, 1 @@ -42409,7 +42182,6 @@ developpeur-freelance.io, 0 developpeur-web.tech, 0 developpeur-web2.com, 1 -developress.io, 0 develops.co.il, 1 develoself.ga, 1 develotica.com, 1 @@ -42446,7 +42218,6 @@ devilrecords.tk, 1 devils-co.tk, 1 devils-point.de, 1 -devilsophie.net, 1 devimus.com, 1 devin.gay, 1 devin.science, 1 @@ -42479,14 +42250,12 @@ devoc.net, 1 devochki.ga, 1 devolution.ws, 1 -devoncycles.co.uk, 1 devonport.tas.gov.au, 1 devonportairport.com.au, 1 devonsawatzky.ca, 1 devopedia.org, 1 devopers.com.br, 1 devops-playtest.net, 1 -devopsbookmarks.org, 1 devopsfreelance.pro, 1 devopsintegration.io, 1 devopswow.com, 1 @@ -42499,7 +42268,6 @@ devourdestinations.com, 1 devpage.lv, 1 devpayouts.com, 1 -devphp.com, 1 devpod.sh, 0 devpost.com, 1 devpp.com.br, 1 @@ -42533,7 +42301,7 @@ devuan.org, 0 devurandom.tk, 1 devushki.cf, 1 -devvg.co.uk, 1 +devwebsite.uk, 1 devya.es, 1 devyanijayakar.com, 1 devzero.io, 0 @@ -42566,7 +42334,7 @@ dexlex.nl, 1 dexon.ws, 1 dexonservicedeskws.azurewebsites.net, 1 -dexraiden.finance, 1 +dexraiden.finance, 0 dexter.com.pl, 1 dextercd.com, 1 dextermarket.com, 1 @@ -42700,7 +42468,6 @@ dhanur.me, 1 dhanushtechno.in, 1 dharamshi.org, 1 -dharmakit.com, 1 dhaus.de, 1 dhautefeuille.eu, 1 dhauwer.nl, 1 @@ -42708,6 +42475,7 @@ dhayalan.com, 1 dhaynes.xyz, 1 dhde.de, 1 +dhdk7.com, 0 dhdmdkd.com, 1 dheart.net, 1 dhelixnet.de, 1 @@ -42782,7 +42550,6 @@ dialogue.co, 1 dialoguecorp.com, 1 dialoguecorp.eu, 1 -dialox.ai, 1 dialradio24.tk, 1 dialybiendong.tk, 1 diamant.family, 1 @@ -42793,16 +42560,16 @@ diamond-reporting.com, 1 diamond-strip.ru, 1 diamondbluffwi.gov, 1 +diamonddelivers.com, 1 diamondforms.net, 1 diamondgoldcompany.com, 1 diamondgoldmarkcity.cf, 1 diamondgrid.ga, 1 -diamondinterestcoffee.com, 1 +diamondinterestcoffee.com, 0 diamondit.com.au, 1 diamondreporting.com, 1 diamondreportingandvideo.com, 1 diamondsystem.ro, 1 -diamondtechnician.com, 1 diamondyacca.co.uk, 1 diamorphine.com, 1 diamwall.com, 1 @@ -42810,7 +42577,6 @@ dian7la.space, 1 diana-und-aaron.de, 1 dianaconta.pt, 1 -dianadeluxe.net, 1 dianadrive.com, 1 dianakaarina.tk, 1 diananeves.pt, 0 @@ -42824,7 +42590,7 @@ diankou.cn, 1 diankou.com, 1 diankou.com.cn, 1 -diankpi.com, 0 +diankpi.com, 1 diankpi.ws, 1 diannejonesandassociates.com, 1 diannejonesassociates.com, 1 @@ -42854,11 +42620,11 @@ diasporan.ml, 1 diaspordc.com, 1 diaszporaprojekt.org, 1 +diat-app.com, 1 diatr.us, 1 diatrofi-ygeia.gr, 1 diaweb.nl, 1 diazmarco.me, 1 -diazmotorcycles.com, 1 diazpubli.tk, 1 diba.org.cn, 1 dibacode.com, 1 @@ -42875,6 +42641,7 @@ dicelab.co.uk, 1 dicemer.com, 1 dicesites.com, 1 +diceworld.fr, 1 dicgaming.net, 1 dichanho.com, 1 dichvudangkygiayphep.com, 1 @@ -42978,7 +42745,7 @@ dieg.info, 1 diegelernten.de, 1 diegentlemenbittenzurkasse.tk, 1 -diegerbers.de, 1 +diegerbers.de, 0 diegobarrosmaia.com.br, 1 diegocastagna.com, 1 diegodelaprada.com, 1 @@ -43002,7 +42769,6 @@ diekperaiwseis.gr, 1 dielinke-igb.de, 1 dielinke-sachsen.de, 1 -diem25.org, 1 diemanumachts.at, 1 diemattels.at, 1 diemperu.com, 1 @@ -43033,7 +42799,6 @@ dieste.com, 1 dieta-figura.tk, 1 dietandexercises.tk, 1 -dietaryguidelines.gov, 1 dietbrand.eu, 1 dieter.one, 1 dieterglas.de, 1 @@ -43101,12 +42866,9 @@ digicelidgy.com, 1 digicert-support.com, 1 digicert.com.ru, 1 -digicert.nl, 0 -digicode.hu, 1 digicomtel.com.br, 1 digicrew.com, 1 digidaigaku.com, 1 -digifast.com.br, 1 digifloat.io, 1 digifood.com, 1 digifood.fr, 1 @@ -43136,7 +42898,6 @@ digino.xyz, 1 diginow.in, 1 digionline.de, 1 -digiparse.com, 1 digipartindex.ch, 1 digipitch.com, 1 digirechnung.de, 1 @@ -43171,9 +42932,7 @@ digital-liberal.ch, 1 digital-move.co.uk, 1 digital-mu.tk, 1 -digital-park.de, 1 digital-rainbow-dolls.tk, 1 -digital-sculpture.org, 1 digital-vorwaerts.de, 1 digital-watchdog.com, 1 digital.gob.es, 1 @@ -43210,6 +42969,7 @@ digitalchurch.ng, 1 digitalcircusmerch.com, 0 digitalcitizens.uk, 1 +digitalclaim.de, 1 digitalcodes.info, 1 digitalcoffeepodcast.com, 1 digitalcolony.com, 1 @@ -43238,6 +42998,7 @@ digitale-gesellschaft.ch, 1 digitale-oekonomie.ch, 1 digitale-ueberwachung.info, 1 +digitaleanime.dz, 1 digitaleducationarea.tk, 1 digitaleducationpro.tk, 1 digitalehandtekeningen.nl, 1 @@ -43277,7 +43038,6 @@ digitalizer.my.id, 1 digitalizzazioneverona.it, 0 digitalkashmir.ml, 1 -digitalkey.pro, 1 digitalkinginc.com, 1 digitalkuber.com, 1 digitallife.tk, 1 @@ -43318,6 +43078,7 @@ digitalrealitybbs.com, 1 digitalreborn.com, 1 digitalredshirts.com, 0 +digitalresilience.com.au, 1 digitalroma.tk, 1 digitalsafezm.com, 0 digitalscrapbookingstudio.com, 1 @@ -43422,11 +43183,11 @@ dilili.net, 1 dilim.co.il, 1 dilimo.ca, 1 +dilivin.com, 1 dillewijnzwapak.nl, 1 dillonco.gov, 1 dillonm.io, 1 dillynbarber.com, 0 -dilmahtea.me, 1 dilmarames.com, 0 dilolabs.fr, 1 dimagrimentoincorso.it, 1 @@ -43436,7 +43197,6 @@ dimaweb.tk, 1 dimdata.com, 1 dime-staging.com, 1 -dimeko.asia, 1 dimension-foot.com, 1 dimension-pc.com, 1 dimensionjapon.tk, 1 @@ -43467,6 +43227,7 @@ dimmersoakpark.com, 1 dimmersthousandoaks.com, 1 dimmerswestlakevillage.com, 1 +dimo.org, 1 dimokratikiaristera.gr, 0 dimoredimara.com, 1 dimory.com, 1 @@ -43476,7 +43237,6 @@ dinamarcus.com, 1 dinamcii.info, 1 dinamikarosta.ml, 1 -dinamofilms.cl, 1 dinarys.com, 1 dincemlakmerkez.ga, 1 dind.one, 0 @@ -43584,6 +43344,7 @@ directcouriers.com.au, 1 directdawai.com, 1 directfinance.cz, 1 +directhelicopter.com, 1 directhomeremodelinginc.com, 1 direction.lv, 1 directions.ee, 1 @@ -43614,6 +43375,9 @@ directorydisc.ga, 1 directoryworld.tk, 1 directpaydayloansonline.ga, 1 +directright.ca, 1 +directright.net, 1 +directrightcartage.com, 1 directstreet.tk, 1 directsupplyinc.com, 1 directtwo.solutions, 1 @@ -43657,7 +43421,6 @@ dirtyprettyartwear.com, 1 dirtypriscilla.com, 1 dirtyscout.com, 1 -dirtysindy.com, 1 dirtysoundboys.com, 1 dirtytiles.xyz, 1 dirtywoman.tk, 1 @@ -43680,7 +43443,6 @@ disastertalkest.ga, 1 disavowfile.com, 1 disboard.org, 1 -disbug.io, 1 disc-profil.dk, 1 disc.uz, 1 discarica.bari.it, 1 @@ -43728,6 +43490,7 @@ discountpowertx.com, 1 discountravel.tk, 1 discourse.org, 1 +discover-airlines.com, 1 discover-mercure.com, 1 discover-shaken.com, 1 discoverapp.com, 1 @@ -43855,8 +43618,6 @@ disketa.cf, 1 disketteetikette.tk, 1 diskgem.info, 1 -disking.co.uk, 1 -diskmark.com, 1 diskonsepatu.ga, 1 diskursmonitor.de, 1 diskuse-seznam.cz, 1 @@ -43907,6 +43668,7 @@ disti.com, 1 distilleren.tk, 1 distinctdesign2009.com, 1 +distinctiveremodeling.com, 1 distinguishedlegal.com, 1 distinguishedprisoner.com, 1 disto.tk, 1 @@ -43914,7 +43676,6 @@ distortionwizard.com, 1 distortionx.tk, 1 distracteddriving.gov, 1 -distraction-league.de, 1 distraction.gov, 1 distraction.tk, 1 distractors.tk, 1 @@ -43966,11 +43727,11 @@ dittvertshus.no, 1 ditxse6.com, 1 ditxse6.org, 1 +ditz-connect.de, 1 div.energy, 1 diva-app.de, 1 divacresent.tk, 1 divamengemudi.com, 1 -divanogiusto.it, 1 divari.nl, 1 divas.joburg, 1 divatri.tk, 1 @@ -44004,7 +43765,6 @@ divertidores.tk, 1 diverzus.nl, 1 divestos.org, 1 -divewithfrank.com, 1 divhunt.com, 1 divicar.com.br, 1 dividapp.com, 1 @@ -44082,7 +43842,6 @@ dizkofloor.com, 1 dizlexiqa.tk, 1 dizmatt.tk, 1 -dizzie.org, 1 dizzyskills.tk, 1 dizzythewizard.co.uk, 1 dj-damm.tk, 1 @@ -44095,7 +43854,6 @@ dj-leszwolle.nl, 1 dj-morfu.tk, 1 dj-ocean.tk, 1 -dj-oxyd.com, 1 dj-phil.fr, 1 dj-schoolzwolle.nl, 1 dj-wout.tk, 1 @@ -44133,7 +43891,6 @@ djazair.tk, 1 djazim.tk, 1 djbardhi.tk, 1 -djbass.com.se, 1 djbell.tk, 1 djbessi.tk, 1 djbobbytables.com, 1 @@ -44244,6 +44001,7 @@ djsearch.tk, 1 djselo.tk, 1 djsetitalia.tk, 1 +djshanofficiel.com, 1 djshivbabu.tk, 1 djshox.tk, 1 djsina.tk, 1 @@ -44327,7 +44085,6 @@ dl444.net, 1 dl5dt.de, 1 dl5dt.net, 1 -dlabs.codes, 1 dlaces.it, 1 dlaferm.pl, 1 dlagos.com, 1 @@ -44336,7 +44093,6 @@ dlangbajn.com.br, 1 dlazmyslow.pl, 1 dlbouncers.co.uk, 1 -dlclientportal.com, 1 dlcompare.co.uk, 1 dlcompare.com, 1 dlcompare.de, 1 @@ -44352,6 +44108,7 @@ dlevans.com, 1 dlf.exchange, 1 dlford.io, 1 +dlh.de, 1 dlideas.com, 1 dlitz.net, 1 dll4free.com, 1 @@ -44364,8 +44121,8 @@ dlpeterson.com, 1 dlrg-cux-ohz.de, 0 dls.farm, 1 -dlslab.com, 1 dlslab.org, 1 +dlsmdportal.com, 1 dlsolutions-inc.com, 1 dlt.green, 1 dlttrading.com, 1 @@ -44462,7 +44219,6 @@ dmlive.wiki, 1 dmmedya.com, 1 dmmkenya.co.ke, 0 -dmni.my, 1 dmoj.ca, 1 dmosk.ru, 1 dmoz.v.ua, 1 @@ -44479,9 +44235,11 @@ dmtcustoms.co.za, 1 dmu.ac.ae, 1 dmunoz.es, 1 +dmvprepnow.com, 1 dmwaste.com, 0 dmwclan.tk, 1 dmxclan.tk, 1 +dmz.llc, 1 dmz.rs, 1 dmze.tk, 1 dmzlab.se, 1 @@ -44587,7 +44345,6 @@ dnsnox.com, 1 dnspod.ml, 1 dnsrate.com, 1 -dnsrevolve.com, 1 dnsscience.org, 1 dnssec.au, 1 dnssecandipv6.se, 1 @@ -44617,7 +44374,6 @@ doaxacatours.com, 1 dob46.mazowsze.pl, 1 dobavki.club, 1 -dobbshvac.com, 1 dobledemichaeljackson.tk, 1 doblot.com, 1 dobookmark.ml, 1 @@ -44628,7 +44384,6 @@ dobrekupony.sk, 1 dobremedia.sk, 1 dobrenoviny.sk, 1 -dobreoknaszczecin.pl, 1 dobreradio.sk, 1 dobrev.family, 1 dobrinya.tk, 1 @@ -44641,7 +44396,6 @@ dobrynyastyle.ru, 1 dobryprezident.sk, 1 dobrzechow.pl, 1 -dobusinessonline.com, 1 doc-baza.tk, 1 doc-reader-guide.com, 1 doc-sign.fr, 1 @@ -44656,7 +44410,6 @@ docbrown.dk, 1 docbyte.com, 1 doccafe.com, 1 -docebo.com, 1 docemeldoces.com, 1 docendo.es, 1 docesinesqueciveis.com.br, 1 @@ -44711,6 +44464,7 @@ docteur360.com.dz, 1 docteurjacquel.fr, 1 docteurqui.fr, 1 +doctis.de, 1 doctoblog.fr, 1 doctorapuestas.pe, 1 doctorbini.com, 1 @@ -44808,16 +44562,13 @@ doehle-romania.com, 1 doehle-seafront.com, 1 doehlecentro.net.ph, 1 -doehlers.de, 1 doelbeleggen.nl, 1 -doeleman.nl, 1 doelhypotheek.nl, 1 doelhypotheken.nl, 1 doemeemetparta.nl, 1 doener-curator.com, 1 doenets.lk, 1 doenjoylife.com, 1 -doeprojects.com, 1 doernergoldberg.com, 1 doesmycodehavebugs.today, 1 doetwat.nl, 1 @@ -44852,7 +44603,6 @@ doggiespalace.nl, 1 doggingclub.tk, 1 doghandling.tk, 1 -doghome.com, 1 doghousedigital.com, 1 doghub.bg, 1 doginaflat.com, 1 @@ -44870,7 +44620,6 @@ dogprograms.net, 1 dogquiz.azurewebsites.net, 1 dogrescuegreece.nl, 1 -dogsbestbuddy.com, 1 dogscare.tk, 1 dogsforfun.tk, 1 dogsite.tk, 1 @@ -44923,6 +44672,7 @@ dokuev.ga, 1 dokument.tk, 1 dokuraum.de, 1 +dolandskeeterwar.com, 1 dolbyatmosmusiclist.com, 1 dolce-vita-mia.tk, 1 dolcenutrition.uk, 1 @@ -45045,7 +44795,6 @@ domaintm.in, 1 domainvoider.cf, 1 domakidis.com, 1 -domandalo.com, 1 domaniai.com, 1 domarkperu.com, 1 domashnij-pk.ru, 1 @@ -45172,7 +44921,6 @@ domyzitrka.cz, 1 domznak.ru, 1 don-news.tk, 1 -dona.to, 0 donacarlota.net.br, 1 donacije.rs, 1 donaciondeorganos.gov, 1 @@ -45194,7 +44942,6 @@ donatellapratas.com.br, 1 donateway.com, 1 donazione.it, 1 -doncastermoneyman.com, 1 dondiabolo.com, 1 dondonya.com.cn, 1 doneandbilled.com, 1 @@ -45231,9 +44978,8 @@ donislawdev.com, 1 donkerslootjes.nl, 1 donkeytrekkingkefalonia.com, 1 -donmacleod.com, 1 donnaandscottmcelweerealestate.com, 1 -donnabotanica.com.br, 1 +donnabotanica.com.br, 0 donnabrothers.com, 1 donnabuswell.com, 1 donnachie.net, 1 @@ -45241,7 +44987,6 @@ donnahay.com.au, 1 donnanovak.com, 1 donnapepe.tk, 1 -donnapro.com, 1 donnellymech.com, 1 donnerwetter.tk, 1 donngle.com, 1 @@ -45300,7 +45045,7 @@ dontspoil.tv, 1 dontstopcoffee.com, 1 donttradeitin.com, 1 -dontwastethewood.com, 1 +dontwastethewood.com, 0 donumanimo.pl, 1 donutchurroworld.com, 1 donutcompany.co.jp, 1 @@ -45320,9 +45065,10 @@ doodle.com, 1 doodlegames.tk, 1 doodletips.com, 1 -doofer.site, 1 +doodlingstudio.com, 1 doogbot.com, 1 doogej.nl, 1 +dookandflops.com, 1 doolac.com, 1 dooleylabs.com, 1 doomsdaymag.tk, 1 @@ -45348,8 +45094,10 @@ doors-and-windows.tk, 1 doorservice.ml, 1 doorslite.ru, 1 +doorspector.com, 1 doorsystemsweden.se, 1 doortodoor.ml, 1 +doory.net, 1 doorzy.ca, 1 doottrucks.com.au, 1 dopamine.tk, 1 @@ -45370,7 +45118,7 @@ doppler.com, 1 doppler.team, 1 dopplerschirme.com, 0 -doproconstruction.com, 1 +doproconstruction.com, 0 dor-tak.com, 1 dor-tak.ru, 1 dora.moe, 1 @@ -45383,8 +45131,6 @@ doramiru.com, 1 dorams.one, 1 dorcelvision.com, 1 -dorco.be, 1 -dordtpas.nl, 1 doremy.be, 1 dorfkultur.net, 1 dorfzittig.de, 1 @@ -45404,6 +45150,7 @@ dormiu.com, 1 dormiu.com.br, 1 dormkitty.com, 1 +dormmovein.com, 1 dornesolutions.co.za, 1 dorogaminina.tk, 1 doroob.work, 1 @@ -45430,7 +45177,6 @@ dosei.net, 1 dosel.co.in, 1 dosenkiwi.at, 1 -dosenpendidikan.co.id, 1 dosenpintar.com, 1 doserres.tk, 1 dosgame.club, 1 @@ -45489,6 +45235,7 @@ dotjack.hr, 1 dotjesper.com, 1 dotjs.party, 1 +dotker.com, 1 dotkniseandroida.cz, 1 dotkod.pl, 1 dotlab.net, 1 @@ -45586,6 +45333,7 @@ doujinshi.info, 1 doukhobor.org, 1 doulapaid.com, 1 +dourosolucoes.com, 1 dourowineselection.pt, 1 douyin.com, 1 douyinec.com, 1 @@ -45614,14 +45362,12 @@ dovolena-ihned.cz, 1 dowhatmakegood.de, 1 dowhatyoucannow.com, 1 -dowina.com, 1 dowling.nz, 1 dowling.tk, 1 down-load.dynu.net, 1 downalarm.cz, 1 downalarm.sk, 1 downandouts.tk, 1 -downarea.com, 1 downer.email, 1 downer.info, 1 downestan.ga, 1 @@ -45631,7 +45377,7 @@ downievillepudca.gov, 1 download-image.ga, 1 download-knigi.gq, 1 -download-lagu-mp3.com, 1 +download-lagu-mp3.com, 0 downloadabc.cf, 1 downloadapkpokemongo.ga, 1 downloadapkpure.tk, 1 @@ -45645,8 +45391,8 @@ downloadmorestorage.com, 1 downloads.zdnet.com, 1 downloadvipgames.tk, 1 +downpipes.io, 1 downplus.xyz, 1 -downput.com, 1 downsalarm.com, 1 downset.tk, 1 downthebayoucharters.com, 1 @@ -45696,6 +45442,7 @@ dozor.gq, 1 dozor.tk, 1 dozorro.org, 1 +dozzon.com, 1 dp-clan.tk, 1 dp.cx, 1 dp7.ro, 1 @@ -45731,7 +45478,6 @@ dpnt.re, 1 dpoairport.au, 1 dpoairport.com.au, 1 -dpoas.co.il, 1 dpobjetivo.com.br, 1 dpos.info, 1 dposit.com, 1 @@ -45750,6 +45496,7 @@ dptool.com, 1 dpu.lt, 1 dpucarriersma.gov, 1 +dpvs.ca, 1 dr-alexander-henkes.com, 1 dr-amar.tk, 1 dr-bennai.fr, 1 @@ -45770,6 +45517,7 @@ dr-nope.de, 1 dr-nosrat.tk, 1 dr-notemann.de, 1 +dr-perfume.com, 1 dr-store.ru, 1 dr-tsanova.com, 1 dr-vlasak.cz, 1 @@ -45777,7 +45525,6 @@ dr.com.tr, 1 dr.mg, 1 dr2dr.ca, 1 -draabe-nyt.dk, 1 draadloos-besturen.nl, 1 draadloze-noodstop.nl, 1 draagmerriecentrale.nl, 1 @@ -45850,7 +45597,6 @@ dragonwork.me, 1 dragostil.com, 1 dragracing.hu, 1 -drainagedirect.com, 1 drainwllc.com, 1 drak.tk, 1 drakakorp.eu, 1 @@ -45894,7 +45640,6 @@ dras.hu, 1 drasocalzado.com, 1 drasoclothes.com, 1 -drastic-ds.com, 1 drastik.cz, 1 drata.com, 1 drathaisdentista.com.br, 1 @@ -45914,10 +45659,13 @@ drawguess.fun, 1 drawing.tk, 1 drawingcode.net, 1 +drawnlings.com, 1 +drawonamap.com, 1 drawtwo.gg, 1 drawvesly.ovh, 1 drawxp.com, 1 drawzit.com, 1 +drazkowski.eu, 1 drbadnick.tk, 1 drbanerjeecures.in, 1 drbarnabus.com, 0 @@ -45932,7 +45680,6 @@ drcc.site, 1 drchrislivingston.com, 1 drchrono.com, 0 -drclark.pro, 1 drclear.co.uk, 1 drclub.tk, 1 drcorderocirujanoplastico.com, 1 @@ -45946,7 +45693,6 @@ drdinero.com, 1 drdipilla.com, 1 drdixitcosmeticdermatology.com, 1 -drdomain.com, 1 drdripplumbingsydney.com.au, 1 drduru.com, 1 dreadbyte.com, 0 @@ -45997,7 +45743,6 @@ dreamlux.cz, 1 dreamlux.sk, 1 dreammagnets.nl, 1 -dreammeaningnow.com, 1 dreamms.gg, 1 dreamofice.cn, 1 dreamoza.com, 0 @@ -46062,6 +45807,7 @@ dresdner-wohnung.de, 1 dress-cons.com, 1 dressabelle.tk, 1 +dresscodeny.com, 1 dressdiversions.com, 1 dressesbal.tk, 1 dressestore.tk, 1 @@ -46074,6 +45820,7 @@ drewapianostudio.com, 1 drewcountyar.gov, 1 drewfuller.tk, 1 +drewjon.es, 1 drewtransportllc.com, 1 drewuniverse.net, 1 drewzar.com, 1 @@ -46103,7 +45850,6 @@ dricka.tk, 1 driesjtuver.nl, 1 driessen.nl, 1 -driessenconfigurator.com, 1 driessengroep.nl, 1 driessoftsec.tk, 1 driestwegkerk.nl, 1 @@ -46113,7 +45859,6 @@ driftingruby.com, 1 driftkikker.tk, 1 driftrock.com, 1 -drigg.ro, 1 drijfhoutconsultancy.nl, 1 drikkes.com, 1 drikuansvarligt.dk, 1 @@ -46142,6 +45887,7 @@ dripkickzz.com, 1 dripship.club, 1 dripshop.live, 1 +dris.ag, 1 drison.com, 1 drissner.me, 1 drissner.media, 1 @@ -46153,14 +45899,12 @@ driveandpark.nl, 1 drivebespokelab.media, 1 drivebolt.co.uk, 1 -drivecc.com, 1 drivechat.com.au, 1 drivecraft.co.uk, 1 drivecrestwood.com, 1 drivedannyherman.com, 1 drivedavis.com, 1 drivedmbowman.com, 1 -drivedumba.com, 1 drivedvv.ru, 1 driveelectric.gov, 1 driveexport.com, 1 @@ -46227,7 +45971,7 @@ drlynnehinkle.com, 1 drmajpodochirurgia.pl, 1 drmaniplastics.com, 1 -drmarciopsiquiatra.com.br, 1 +drmarciopsiquiatra.com.br, 0 drmarwanbaroud.com, 1 drmaxim.ro, 1 drmichaelwong.com, 1 @@ -46296,7 +46040,6 @@ dropmb.com, 1 droppia.io, 1 dropscapital.com, 1 -dropscloud.spdns.de, 1 dropsdesign.tk, 1 dropshell.net, 1 dropshipbunny.com, 1 @@ -46314,6 +46057,7 @@ drowz.ee, 1 drozd.biz, 1 drozera.com, 1 +drpariafoulady.com, 1 drpatyuen.com, 1 drpetervoigt.ddns.net, 1 drpetervoigt.de, 1 @@ -46338,7 +46082,6 @@ drsoul.band, 1 drstephanieteotia.com, 1 drsturgeonfreitas.com, 1 -drsurvey.com, 1 drt.org.nz, 1 drtchegorko.ru, 1 drthalhammer.at, 1 @@ -46417,6 +46160,7 @@ dryskin.gq, 1 dryskin.ml, 1 dryskin.tk, 1 +drywall.com.co, 1 drywallresponse.gov, 1 dryzgov.tk, 1 drzhnn.com, 1 @@ -46481,7 +46225,7 @@ dso-izlake.si, 1 dsobook.club, 1 dsol.hu, 1 -dsosbelasek.cz, 0 +dsosbelasek.cz, 1 dsouzamusic.com, 1 dsp-wiki.com, 1 dspace.pl, 1 @@ -46489,8 +46233,8 @@ dsphere.in, 1 dspnor.com, 1 dsport.eu, 1 -dsreal.de, 1 dss.ro, 1 +dsso.pro, 1 dsswise.org, 1 dsta.gov.sg, 1 dstamou.de, 1 @@ -46569,7 +46313,6 @@ dual-universe.ga, 1 dual.pw, 0 dualascent.com, 1 -dualbix.com, 1 dualcore.tk, 1 dualexistence.xyz, 1 dualias.xyz, 0 @@ -46587,7 +46330,6 @@ dubaicurtainfixing.ae, 1 dubaiescortlist.com, 1 dubaifitnesschallenge.com, 1 -dubaigrandsale.com, 1 dubailuxuryinvestors.com, 1 dubaipremiuminvest.com, 1 dubairun.com, 1 @@ -46626,7 +46368,6 @@ dubuquecountyiowa.gov, 1 ducadu.com, 0 ducalendars.com, 1 -duch.cloud, 1 duchveliky.com, 1 duchveliky.cz, 1 duchyoffeann.com, 1 @@ -46671,7 +46412,7 @@ duepuntozero.tk, 1 duerlund-falkenberg.dk, 1 duerme.net, 1 -dues-eckert.com, 0 +dues-eckert.com, 1 duesee.org, 1 duesseldorf.tk, 1 duesseldorferheineburschenschaft.tk, 1 @@ -46700,7 +46441,6 @@ duhs.edu.pk, 1 duhurensohn.de, 1 duhy.sk, 1 -duijf.io, 1 duiker101.tk, 1 duitse-herders.tk, 1 duizhangs.tk, 1 @@ -46710,6 +46450,7 @@ dukaj.org, 1 dukaj.tk, 1 dukan-recepty.ru, 1 +dukcapilbvd.com, 1 duke-nukem.tk, 1 dukeandduchessdrivingschool.co.uk, 1 dukemaps.net, 1 @@ -46739,6 +46480,7 @@ dumb-laws.net.ru, 1 dumbdrinker.com, 1 dumbeartech.com, 1 +dumbphone.so, 1 dumek.com, 1 dumek.it, 1 dumeng.org, 1 @@ -46753,7 +46495,6 @@ dunassyn.com, 1 dunatos.tk, 1 dunbarboropa.gov, 1 -dunbarmoving.com, 1 dunberghof.tk, 1 duncancmt.com, 1 duncanfamilytrust.org, 1 @@ -46764,6 +46505,7 @@ dundalkskillnet.ie, 1 dundeeutility.tk, 1 dunedot.tk, 1 +dunerbeach.com, 1 dunesadventure.net, 1 dunescorporation.tk, 1 dunesharbourbeach.com.au, 1 @@ -46785,9 +46527,11 @@ dunlopracing.com, 1 dunmanelectric.com, 0 dunmanpoolandspa.com, 1 +dunn-accounting.com, 1 dunneworthy.com, 1 dunningguard.com, 1 dunningtonaudio.co.uk, 1 +dunromincampground.ca, 1 dunsel.dedyn.io, 1 dunstrath.com, 0 dunwellgroup.info, 1 @@ -46800,7 +46544,6 @@ duofynance.com.br, 1 duohao.xyz, 1 duokey.com, 1 -duolife.us, 1 duoluodeyu.com, 1 duonganhtuan.com, 1 duoqichina.cn, 1 @@ -46828,7 +46571,6 @@ durad.xyz, 1 duraes.pt, 0 durakinesis.tk, 1 -duraklari.net, 1 duramaximportaciones.com, 1 durand.tf, 1 durand.tk, 1 @@ -46840,13 +46582,13 @@ durangonorthstar.com, 1 durantok.gov, 1 durastudio.com, 1 +durbarcurryhouse.com.au, 1 durbeen.pk, 1 durcal.tk, 1 durchblick-shop.de, 1 duredo.com, 1 dureuil.info, 1 durhammaine.gov, 1 -durhammoneyman.com, 1 durhamnh.gov, 1 duria.de, 1 durianexpressdelivery.com.sg, 1 @@ -46903,7 +46645,7 @@ dutchessuganda.com, 1 dutchfoodie.nl, 1 dutchforkrunners.com, 1 -dutchgamblers.nl, 1 +dutchgamblers.nl, 0 dutchglover.tk, 1 dutchheadlines.com, 1 dutchie.info, 1 @@ -46963,7 +46705,6 @@ dvds.casa, 1 dveri-lugansk.tk, 1 dvgsites.com, 1 -dvipadmin.com, 1 dvkg.de, 1 dvminsight.com, 1 dvn.pt, 1 @@ -46972,7 +46713,6 @@ dvoretsvramoni.ru, 1 dvorupotocnych.sk, 1 dvotx.org, 1 -dvrpc.org, 1 dvsngroup.com, 1 dvwc.org, 1 dvx.cloud, 1 @@ -46983,8 +46723,6 @@ dw9.cn, 1 dwaire.com, 0 dwarf.com.tw, 1 -dwarkin.com, 1 -dwavgs888.store, 1 dweilorkest-frederikshaven.tk, 1 dwgeneralcontractors.com, 1 dwgf.xyz, 1 @@ -47010,7 +46748,6 @@ dwz-solutions.eu, 0 dwz-solutions.net, 0 dx-revision.com, 1 -dxa.io, 0 dxcv.net, 1 dxfootball.tk, 1 dxgl.info, 1 @@ -47024,6 +46761,7 @@ dy.express, 1 dy.me, 0 dy1d.com, 1 +dyaautomatizaciones.com, 1 dyachenko.ml, 1 dyarnasd.com, 1 dybuster.at, 1 @@ -47064,6 +46802,7 @@ dylanwolff.com, 1 dylmye.me, 1 dylnuge.com, 1 +dym.asia, 1 dym2012.com, 1 dym2013.com, 1 dym2014.com, 1 @@ -47082,12 +46821,11 @@ dynabob.tk, 1 dynadns.de, 1 dynalogix.eu, 0 -dynamic-movie.com, 1 dynamic-networks.be, 1 dynamicalsystem.work, 1 dynamicathletes.ga, 1 dynamicbusinessconsultants.ga, 1 -dynamiccounselingli.com, 1 +dynamiccounselingli.com, 0 dynamicdesignuk.com, 1 dynamicdiesupply.com, 1 dynamicenergy.co, 1 @@ -47134,6 +46872,7 @@ dyode.com, 1 dyor.io, 1 dypromed.com, 1 +dyremyhr.no, 1 dyrenesverden.no, 1 dyrkar.se, 1 dyrkshop.com, 1 @@ -47338,6 +47077,7 @@ e-launch.nl, 1 e-lexia.com, 1 e-lifetechnology.com, 1 +e-lo.at, 1 e-loshadka.tk, 1 e-mailalias.nl, 1 e-mak.eu, 1 @@ -47437,6 +47177,7 @@ e15r.co, 1 e1981.com, 1 e1e0.net, 0 +e20compliant.com, 1 e23.io, 1 e27.co, 1 e2b.com.au, 1 @@ -47486,6 +47227,7 @@ eadea.net, 1 eadmt.com, 1 eaganmn.gov, 1 +eagclaims.com, 1 eagenda.com.br, 1 eagerlogic.com, 1 eagfinance.cz, 1 @@ -47495,7 +47237,6 @@ eaglecounty.gov, 1 eaglecountyco.gov, 1 eaglecrest.us, 1 -eaglecustomapparel.com, 0 eagleeye.news, 1 eagleeyeroof.com, 1 eaglefireid.gov, 1 @@ -47529,7 +47270,6 @@ eajglobal.uk, 1 eajid.com, 1 eakes.com, 0 -eakingroup.com, 1 eaktarim.com, 1 ealadel.com, 0 ealarm-safemode.ch, 1 @@ -47595,7 +47335,7 @@ earthjustice.org, 1 earthlink.net, 1 earthpoints.org, 1 -earthquake.gov, 0 +earthquake.gov, 1 earthsalala.com, 1 earthseed.cc, 1 earthshotprize.org, 1 @@ -47709,6 +47449,7 @@ easybom.com, 1 easybot.tk, 1 easybranches.com, 1 +easybuy.id, 1 easycater.com, 1 easycoding.org, 1 easycom.tk, 1 @@ -47759,7 +47500,6 @@ easymove.ca, 1 easymove.com, 1 easymovecontainers.com, 1 -easymun.com, 1 easynm.cn, 1 easynotary.ch, 1 easyocm.hu, 1 @@ -47768,6 +47508,7 @@ easypay.bg, 1 easypayment.cf, 1 easypayments.pro, 1 +easypds.com.au, 1 easypets.fr, 0 easypost.com, 1 easypractice.net, 1 @@ -47814,9 +47555,9 @@ eating-better.org, 1 eatingasturias.com, 1 eatinglinks.tk, 1 -eatingreorder.com, 1 eatmebudapest.hu, 1 eatmportal.eu, 1 +eatmydata.uk, 1 eaton-works.com, 1 eatonbrowncountywi.gov, 1 eatouteatwell.com, 1 @@ -47836,6 +47577,7 @@ eauxdevienne.fr, 1 eava.ga, 1 eavafm.com, 1 +eavestrough.to, 1 eaviora.com, 1 eazy.de, 1 eazy.gr, 1 @@ -47886,6 +47628,7 @@ ebcired-nsn.gov, 1 ebcreation.com, 1 ebdaa-business.com, 1 +ebdadvisory.com, 1 eben18.net, 1 ebenda.org, 1 ebenica.sk, 1 @@ -47902,7 +47645,6 @@ ebics.cz, 1 ebics.hu, 1 ebics.sk, 1 -ebiene.com, 1 ebike-connect.com, 1 ebikeanswers.com, 1 ebikemod.de, 1 @@ -47923,7 +47665,6 @@ ebolacharts.ga, 1 ebolavirus.tk, 1 ebony.social, 1 -ebonycammers.com, 1 ebonyfantasies.com, 1 ebonylog.com, 1 ebonymgp.com, 1 @@ -47950,12 +47691,14 @@ eboxtenders.com, 1 ebpc.com.au, 1 ebpgateway.com, 1 +ebr.exchange, 1 ebrahimhadimarket.com, 1 ebrdbusinessguide.com, 1 ebrnd.de, 1 ebrofoods.es, 0 ebru-gundes.tk, 1 ebrununkasnagi.com, 1 +ebrx.net, 1 ebs.to, 1 ebscomedical.com, 1 ebsedu.org, 1 @@ -47980,19 +47723,15 @@ ecardoo.org, 1 ecargo.co.nz, 1 ecarscash.com, 1 +ecarter.co, 1 ecat.ua, 1 ecaterina.tk, 1 -ecbahia.com, 1 ecbs.org, 1 ecbt.co.il, 1 eccan.scot, 0 eccc.pl, 1 ecchidreams.com, 1 eccma.org, 1 -ecco-verde.at, 1 -ecco-verde.com, 1 -ecco-verde.de, 1 -ecco-verde.it, 1 eccoholiday.com, 1 eccoilmenu.it, 1 eccologic.net, 1 @@ -48022,7 +47761,6 @@ echobridgepartners.com, 1 echocolate.xyz, 1 echodesk.work, 1 -echodyne.com, 0 echoesbase.com, 1 echoeshq.com, 0 echoesin.com, 1 @@ -48137,6 +47875,7 @@ ecoheatcool.co.uk, 1 ecohimdv.tk, 1 ecohostingservices.uk, 1 +ecoimprovements.co.uk, 1 ecoindia.tk, 1 ecojob.ga, 1 ecolala.my, 1 @@ -48164,7 +47903,6 @@ ecologeek.tk, 1 ecologiapolitica.info, 1 ecologica.it, 1 -ecologistasenaccion.org, 1 ecologiya.tk, 1 ecologs.ie, 1 ecoloriptv.tk, 1 @@ -48209,6 +47947,7 @@ economizaplay.com.br, 1 economycarrentalscyprus.com, 1 economydiva.com, 1 +economyseptictankserviceal.com, 1 econsorzio.com, 1 econstitution.bg, 1 econsumer.gov, 1 @@ -48283,7 +48022,6 @@ ect-telecoms.com, 1 ectfsaz.com, 1 ectora.com, 1 -ectpro.co.th, 1 ecttaz.com, 1 ecuadorlibrered.tk, 1 ecuashop.ec, 1 @@ -48393,7 +48131,6 @@ edgecustomersportal.com, 1 edgeinvestments.estate, 1 edgeless.pp.ua, 0 -edgelogs.com, 1 edgemagazine.net, 1 edgeofnoservers.com, 1 edgeorbital.io, 1 @@ -48427,6 +48164,7 @@ edinburghcastle.scot, 0 edinburghtipps.de, 1 edinburghtips.com, 1 +ediqy.com.br, 1 edirnehaber.tk, 1 edirnehaberleri.tk, 1 edisoft.dz, 1 @@ -48443,10 +48181,8 @@ edited.at, 1 edited.be, 1 edited.ch, 1 -edited.cz, 1 edited.de, 1 edited.nl, 1 -edited.pl, 1 editflow.org, 1 edith-thellmann.com, 1 edithlouw.tk, 1 @@ -48477,7 +48213,6 @@ edmoncu.com, 1 edmondok.gov, 1 edmundcelis.com, 1 -edmundo.ro, 1 edmundy.tk, 1 edocr.com, 1 edok.com.br, 1 @@ -48583,7 +48318,6 @@ eduhub.ml, 1 eduhublisbon.com, 1 eduid.se, 1 -eduif.nl, 0 edukar.xyz, 1 eduki.com, 1 edukle.com, 0 @@ -48672,10 +48406,8 @@ eeehh.com, 1 eeetrust.org, 1 eef.com.pe, 1 -eegaming.org, 1 eegaming.tk, 1 eehaa.com.au, 1 -eeia.com, 1 eeiletudiant.com, 1 eek.nz, 0 eekelen.net, 1 @@ -48708,6 +48440,7 @@ eevie.io, 1 eevpn.com, 1 eewna.org, 1 +eex.com, 1 eexecutive.in, 1 eeyo.re, 1 eeyo.uk, 1 @@ -48753,6 +48486,7 @@ effectualness.co.za, 1 effectualness.web.za, 1 effer.me, 1 +efferenthq.com, 1 effex.ru, 1 effexorgeneric.ml, 1 efficiencyvermont.com, 1 @@ -48869,7 +48603,6 @@ egins.tk, 1 egipet-tiz.tk, 1 egiptwakacje.tk, 1 -egitim.academy, 1 egito.pl, 1 egittophilia.tk, 1 eglantier.eu, 1 @@ -48891,7 +48624,6 @@ egoroskope.tk, 1 egos-online.com, 1 egoscolumn.tk, 1 -egotripproductions.org, 1 egoutierrpaquette.ca, 1 egrabby.com, 1 egrasmanipur.nic.in, 1 @@ -48929,6 +48661,7 @@ eharmony.ca, 1 eharmony.com, 1 ehazi.hu, 1 +ehbo-woenselnoord.nl, 1 ehbsecuritydavy.be, 1 ehcommerce.com, 1 ehe-ring-verloren.de, 1 @@ -48943,7 +48676,6 @@ ehgi.nl, 1 ehgn.nl, 1 ehif.ee, 1 -ehipaa.com, 1 ehlers-net.de, 1 ehlersdanlos.dk, 1 ehlersdanlos.tk, 1 @@ -48956,7 +48688,6 @@ ehourapp.com, 1 ehpad-ariege.fr, 1 ehpsmt.gov, 1 -ehr.bg, 1 ehr.gov, 1 ehrby.se, 1 ehrdata.com, 1 @@ -49003,7 +48734,7 @@ eightvirtues.tk, 1 eighty-aid.com, 1 eightyfour.ca, 1 -eightyrecipes.com, 1 +eightyrecipes.com, 0 eightysoft.de, 1 eigpropertyauctions.co.uk, 1 eihaikyo.com, 1 @@ -49038,6 +48769,7 @@ einfach-was-eigenes.com, 1 einfach-was-eigenes.de, 1 einfachkiss.at, 0 +einfachtherapie.de, 1 einfachwaseigenes.de, 1 einheizpreis.de, 1 einhorn.space, 1 @@ -49068,6 +48800,7 @@ eisenabi.de, 1 eisenbahnfreunde-lengerich.de, 1 eisenberg.co.za, 1 +eisenfrank-shop.de, 1 eisenhowerlibrary.gov, 1 eisenhut.family, 1 eisenkoeck.org, 1 @@ -49149,6 +48882,7 @@ ekho.tk, 1 ekimae-pharma.jp, 1 ekimma.com, 1 +ekinsokmen.net, 1 ekiphost.com, 1 ekivita.eu, 1 eklepka.com, 1 @@ -49195,9 +48929,7 @@ ekusoft.sk, 1 ekwador.com, 1 ekyu.moe, 1 -ekzcrosstour.ch, 1 ekzotika.tk, 1 -el-akses.com, 1 el-cell.com, 1 el-d.in, 1 el-group07.bg, 1 @@ -49226,6 +48958,7 @@ elalmibar.com, 1 elamcy.com, 1 elana.lt, 1 +elanasport.com, 1 elanis.eu, 1 elanterna.ro, 1 elaon.de, 0 @@ -49343,7 +49076,6 @@ electionpresidentiellegabon2009.ga, 1 elections-sintmaartengov.org, 1 elections.ca, 1 -electionsbycounty.com, 1 electionsdatabase.com, 1 electionsshelbytn.gov, 1 electmikewaters.com, 1 @@ -49447,7 +49179,7 @@ elegance-lingerie.com, 1 elegance-sm.com, 1 elegance96.tk, 1 -elegancecement.com, 0 +elegancecement.com, 1 elegansia-piscine.fr, 1 elegant-design.tk, 1 elegant-techno.com, 1 @@ -49484,7 +49216,6 @@ elektro-mag.com, 1 elektro-metz.de, 1 elektro-pfeiffer.de, 1 -elektro-praha10.cz, 1 elektro-reibsch.de, 1 elektro-stock.de, 1 elektro-wandelt.de, 1 @@ -49508,7 +49239,6 @@ elektronickakancelar.cz, 1 elektroniksigarasehri1.com, 1 elektronix.tk, 1 -elektronomi.com, 1 elektropartner.nu, 0 elektropost.org, 1 elektroprom.tk, 1 @@ -49700,6 +49430,7 @@ elicdn.com, 1 elie.net, 1 elielaloum.com, 0 +elienrebirth.org, 1 elifelabs.com, 1 elifesciences.org, 1 elifo.com.cn, 1 @@ -49721,7 +49452,6 @@ elimitecreamforsale.ga, 1 elimperiolatino.com, 1 elina.pp.ua, 0 -elinaflower.com, 1 elinedetrouwambtenaar.nl, 1 elinformatico.tk, 1 elink.io, 1 @@ -49734,6 +49464,7 @@ eliotchs.org, 1 eliott.cc, 1 eliottlavier.com, 1 +elipsplastics.com, 1 elis2go.com, 1 elisa.ee, 1 elisabeth-kostecki.de, 1 @@ -49761,6 +49492,7 @@ elit.ro, 1 elitav.be, 1 elite-design.tk, 1 +elite-dubai-escorts.com, 1 elite-enc.tk, 1 elite-forums.tk, 1 elite-fuite.fr, 1 @@ -49790,7 +49522,6 @@ eliteco.tk, 1 elitedns.info, 1 elitedns.org, 1 -eliteensino.com.br, 1 elitefintechglobal.com, 1 elitegameservers.net, 1 eliteholidaylights.com, 1 @@ -49802,7 +49533,6 @@ elitenovice.tk, 1 elitepartner.de, 1 elitephysiotherapy.com.au, 1 -eliteprofit.fr, 1 elitepumps.net, 1 eliterequestboard.tk, 1 eliteself.tech, 1 @@ -49820,10 +49550,10 @@ elizabethbarrett.exposed, 1 elizabethcitync.gov, 1 elizabethefle.com, 1 -elizabethgreenfield.com, 1 elizabethhospeech.com, 1 elizabethtaderera.me, 1 elizabethtown-ny.gov, 1 +elizadc.me, 1 elizafranklin.com, 1 elizaminami.com.br, 1 eljef.me, 1 @@ -49838,6 +49568,7 @@ elkocountynv.gov, 1 elkodaily.com, 1 elkovplus.cz, 1 +elks-1719.org, 1 elkvalley-nsn.gov, 1 ell-net.tokyo, 1 ella-kwikmed.com, 0 @@ -49864,6 +49595,9 @@ ellhofen-peccioli.de, 1 ellianhasalon.com, 1 elliboettcher.de, 1 +elliejames.me, 1 +elliemals.com, 1 +elliephotography.ca, 1 ellierider.com, 1 ellierose.photography, 1 elligre.tk, 1 @@ -49879,6 +49613,7 @@ elliottallanhilsinger.com, 0 elliottbernstein.com, 1 elliottgaming.ga, 1 +elliottinsurance.com.au, 1 elliottinsuranceservices.com, 1 elliottwoodworking.com, 1 ellipsoid.cf, 1 @@ -49890,7 +49625,6 @@ ellisleisure.co.uk, 1 ellisvanlaarhoven.tk, 1 elliteshop.vn, 1 -elliyoung.com, 1 elloadingjr.ga, 1 ellocursos.com.br, 1 ellsaesser.net, 1 @@ -49921,6 +49655,7 @@ elmotaz.com, 1 elmresan.ir, 1 elmundodeloso.tk, 1 +elmuroinverso.cl, 1 elmwoodmi.gov, 1 elnan.do, 1 elnegocioperfecto.tk, 1 @@ -49961,6 +49696,7 @@ elperiodicodelaenergia.com, 1 elpincho.tk, 1 elpo.net, 1 +elportolaundry.com, 1 elpradopaloalto.com, 1 elpreciosostud.com, 1 elpreco.ro, 1 @@ -49990,7 +49726,6 @@ elsector7.tk, 1 elsemanariodesalamanca.tk, 1 elsg.co.uk, 1 -elshop1eu.com, 1 elshou.com, 1 elslab.com, 1 elsoundspeakers.com, 1 @@ -50025,7 +49760,6 @@ eluparastinsulti.ee, 1 eluvade.com, 1 eluvio.com, 1 -elvac.eu, 1 elvalordelsaliments.cat, 1 elvcino.com, 0 elverdaderoamor.tk, 1 @@ -50045,6 +49779,7 @@ elvy.nl, 1 elweronete.tk, 1 elwix.com, 1 +elwoodpersonaltrainers.com, 1 elyazmusic.com, 1 elyland.net, 1 elyonyireh.edu.co, 1 @@ -50073,6 +49808,7 @@ email.eu, 1 email.it, 1 email.repair, 0 +email.tr, 1 email24.cf, 1 email2gallery.com, 1 emailable.com, 1 @@ -50089,6 +49825,7 @@ emailing.ga, 1 emaillagebaingenial.ca, 1 emailmasker.nl, 1 +emailmebutton.com, 1 emailmeform.com, 1 emailoctopus.com, 0 emailprivacytester.com, 1 @@ -50125,7 +49862,7 @@ embaleo.com, 1 embaleo.es, 1 embarcados.com.br, 0 -embark.studio, 0 +embark.studio, 1 embarkcard.com, 1 embarkok.com, 1 embarpet.com.br, 1 @@ -50160,7 +49897,6 @@ emceemanic.tk, 1 emcentrix-com-site-mvc.azurewebsites.net, 1 emcoirrigation.ca, 1 -emcremodel.com, 1 emcspotlight.com, 1 emdad-persian.ir, 1 emdadkhodrokaraj.ir, 1 @@ -50175,7 +49911,6 @@ emekegitimakademi.com, 1 emeklifinans.com, 1 emeklive.co.il, 1 -emeliecrystal.net, 1 emeliefalk.se, 1 emelies-inspiration.tk, 1 emem.no, 1 @@ -50190,6 +49925,7 @@ emeraldcoastrideshare.com, 1 emeraldcoasturgentcare.com, 1 emeraldheights.tk, 1 +emeraldonion.org, 1 emeres.tk, 1 emergenceinsurance.com, 1 emergency-broadcast-system.tk, 1 @@ -50220,7 +49956,6 @@ emil-reimann.de, 1 emil.click, 0 emileon.gr, 1 -emilianomaccaferri.com, 1 emiliaperkkola.fi, 0 emiliederavinspain.tk, 1 emiliehouse.net, 1 @@ -50248,7 +49983,7 @@ emilywufaith.tk, 1 emina-arapovic.tk, 1 eminafans.tk, 1 -eminem.net, 1 +eminem.net, 0 eminem50cent.com, 1 eminencecapital.com, 0 eminencepools.com, 1 @@ -50256,6 +49991,7 @@ emirates247.com, 0 emiratesairline.co.uk, 0 emirefek.net, 1 +emirfurkan.com, 1 emirichardson.com, 1 emisoralavozdedios.tk, 1 emissionsgroup.com, 1 @@ -50277,7 +50013,6 @@ emmabeckettlifecoach.co.uk, 1 emmabolton.uk, 1 emmad.net, 1 -emmadreams.net, 1 emmaengel.de, 1 emmajayne.tk, 1 emmalegalnurse.com, 1 @@ -50285,8 +50020,6 @@ emmaliddell.com, 0 emmanuelle-et-julien.ch, 1 emmaowl.com, 1 -emmastarr.net, 1 -emmaste.edu.ee, 1 emmastree.com, 1 emmauspa.gov, 1 emmauspd.gov, 1 @@ -50352,6 +50085,7 @@ emperor-penguin.com, 1 emperor-penguins.com, 1 emperoranimeindo.tk, 1 +empetua.com, 1 empietraining.com, 0 empinfo.com, 1 empire-forum.tk, 1 @@ -50419,7 +50153,7 @@ empresasavenda.pt, 1 empresautil.tk, 1 emprestimodedinheiro.com.br, 1 -emprisebank.com, 1 +emprisebank.com, 0 emprunterlivre.ci, 1 empsi-sup.com, 1 emptiness.cf, 1 @@ -50552,11 +50286,13 @@ encurta.ml, 1 encycarpedia.com, 1 end.tf, 1 +endal.gay, 1 endangeredwatch.com, 1 endavantstap9b.tk, 1 endbeachpollution.sydney, 1 endbegins.tk, 1 endbox.email, 1 +endcast.net, 1 endcottagevets.co.uk, 1 enddd.org, 1 ende-x.com, 1 @@ -50570,7 +50306,7 @@ ender.moe, 1 ender3.info, 1 enderandrew.com, 1 -enderbycamping.com, 0 +enderbycamping.com, 1 enderdash.com, 1 enderdrachelp.ddns.net, 1 enderhost.tk, 1 @@ -50586,7 +50322,6 @@ endlessgrind.com, 1 endlessvideo.com, 1 endlesswebsite.tk, 1 -endo-shika.info, 1 endocarditis.au, 1 endocore.io, 1 endodanli.com, 1 @@ -50672,11 +50407,12 @@ energiavitalmedicina.com.br, 1 energicertifikat.fi, 1 energie-nederland.nl, 1 +energieberatung-jettke.de, 1 energieconsultonline.nl, 1 energiedeliemers.nl, 1 energiemines.ma, 1 energiequellen.net, 1 -energiewende.com.br, 1 +energiewende.com.br, 0 energise.co.nz, 1 energnist.dk, 1 energo.eng.br, 0 @@ -50750,7 +50486,6 @@ enfantsdelarue.ch, 1 enfantsoleil.ca, 1 enfasyperfumarias.com, 1 -enfermeira.pt, 1 enfieldheightsacademy.org.uk, 1 enfinnit.com, 1 enflow.nl, 1 @@ -50768,10 +50503,10 @@ engagekingston.com, 1 engagelogic.com, 1 engageminty.com, 1 +engagepresentations.com, 1 engagerm-prod-web-01.azurewebsites.net, 1 engagewarnerrobinsga.gov, 1 engagewell.com, 1 -engagingmuscles.com, 1 engagio.com, 1 engalego.tk, 1 enganchesevilla.es, 1 @@ -50798,7 +50533,6 @@ engima.nl, 1 enginebase.nl, 1 engineer-kobe.ga, 1 -engineer-route.com, 1 engineer.org.my, 0 engineeringforkids.com, 1 engineeringidea.ga, 1 @@ -50907,7 +50641,6 @@ enlacolonia.com, 1 enlamochiladeadri.com, 1 enlasnubes.tk, 1 -enlazandoalmas.com, 1 enlaztravel.com, 1 enlightenspeech.com, 1 enlightsec.se, 1 @@ -50935,6 +50668,7 @@ enosisbd.com, 1 enosiseurotrade.com, 1 enosistrade.com, 1 +enosysmonk.com, 1 enot32.ru, 1 enoteca.do, 1 enoteca.roma.it, 1 @@ -50998,6 +50732,7 @@ enstavideo.com, 0 ensured.com, 1 ensured.nl, 1 +ensureinsured.io, 1 ensuritymobile.com, 1 ensurtec.com, 1 ensy.cz, 1 @@ -51006,9 +50741,11 @@ entabe.jp, 1 entactogens.com, 1 entasyonline.com, 1 +entbastel.de, 1 entdeckertouren.com, 1 enteente.com, 1 entelodont-laboratory.cz, 1 +ententaxi.de, 1 enter.co, 1 enteratesoria.tk, 1 enterclaim.com, 1 @@ -51055,7 +50792,6 @@ entrepreneurialopensource.org, 1 entrepreneurmuslima.com, 1 entrepreneurnight.com, 1 -entrepreneurresources.com, 1 entreprise-courtois-88.fr, 1 entreprise-innovante.fr, 1 entreprise-ravalement-facade.paris, 1 @@ -51220,8 +50956,9 @@ eonwavesstudio.com, 1 eop.gov, 1 eopac.net, 1 -eoperth.com.au, 1 +eoperth.com.au, 0 eoril.com, 1 +eos-globalcollection.com, 1 eos-utvalget.no, 0 eosagonline.ru, 1 eosguru.ru, 1 @@ -51238,7 +50975,6 @@ epaperframe.com, 1 epasar.my, 0 epaslaugos.lt, 1 -epassage24.de, 1 epavape.eu, 1 epave.paris, 1 epawnatl.com, 1 @@ -51343,6 +51079,7 @@ eppelduerferjugend.lu, 0 eppelpress.lu, 0 eppingnh.gov, 1 +eppingpersonaltrainers.com, 1 epracawpolsce.pl, 1 eprdco.gov, 1 eprezto.com, 1 @@ -51367,6 +51104,7 @@ eptg.hu, 0 eptirgotajs.lv, 1 eptools.nl, 1 +eptronics.com, 1 epu-crestois.fr, 1 epubreader.net, 1 epubreader.org, 1 @@ -51463,7 +51201,9 @@ erboristeria.milano.it, 1 erboristeria.roma.it, 1 erbt.tk, 1 +erc05.ru, 1 erc721c.com, 1 +ercankoclar.com, 1 ercasdieagentur.de, 1 erciyesspor.tk, 1 erclab.kr, 1 @@ -51522,7 +51262,7 @@ ericafielderstudio.com, 1 ericairwin.com, 1 ericccheng.com, 1 -ericdeanseaton.com, 1 +ericdeanseaton.com, 0 ericdiao.com, 1 ericdobson.com, 1 ericfm.tk, 1 @@ -51584,9 +51324,9 @@ eringmaguire.com, 1 erinias.net, 1 erinmyers.us, 1 -erisa.uk, 1 erisinfo.com, 1 eristajanmutka.com, 1 +erit-inc.jp, 1 eritiaprivacidad.com, 0 erito.com, 1 eritonetwork.com, 1 @@ -51607,6 +51347,7 @@ ermak.tk, 1 erman.ga, 1 ermanyaman.com.tr, 1 +ermaseedseg.com, 1 ermeglio.com, 1 ermitano.cf, 1 ernal.net, 1 @@ -51632,7 +51373,6 @@ erosads.com, 1 erosbeautyandwellness.com, 0 eroscomixitalia.tk, 1 -erosescort.org, 1 erosmowy.pl, 1 erosofia.tk, 1 erosvet.cz, 1 @@ -51645,7 +51385,6 @@ erotikstahrtseite.gq, 1 erotikstahrtseite.tk, 1 erotismo.co, 1 -erozine.jp, 0 erp-systems.ovh, 1 erpcargo.com, 0 erpclaw.ai, 1 @@ -51817,14 +51556,13 @@ escortz.gq, 1 escoteiros.tk, 1 escovator-records.tk, 1 -escribasign.com.br, 1 +escr0w.io, 1 escritoresdelcomahue.tk, 1 escritoriohs.com.br, 1 escriva.org, 1 escrocratie.tk, 1 escrowalliance.com, 1 escspain.tk, 1 -escuelacaninalatejera.es, 1 escueladego.tk, 1 escueladelsabor.com, 1 escueladeministerioytecnologia.com, 1 @@ -51833,6 +51571,7 @@ escuelotika-online.tk, 1 escursione.it, 1 esd.cc, 1 +esd.equipment, 1 esdarat.ml, 1 esdcybersecurity.eu, 1 esdiscuss.org, 1 @@ -51841,7 +51580,6 @@ eseances.ch, 1 esecuredata.com, 1 esemtia.com, 1 -esenkuruyemis.com, 1 esentri.com, 1 eservices-greece.com, 1 eservices-mccat.gov.bf, 1 @@ -51853,9 +51591,9 @@ esfl.com.au, 1 esg-abi2001.de, 1 esgen.org, 1 -esgforum.com.br, 1 +esgforum.com.br, 0 esginnova.com, 1 -esginside.com.br, 1 +esginside.com.br, 0 esgr.in, 1 esgrevents.mil, 1 esh.ink, 1 @@ -51871,11 +51609,11 @@ eshoprzd.ru, 1 eshorizonte2020.es, 1 eshotsaatleri.com, 1 -esiac.net, 1 esideshop.com, 1 esiedu.com, 1 esiga.mx, 1 esign.sh, 1 +esignandpay.net, 1 esignering.se, 1 esigtorg.ru, 0 esike.hu, 1 @@ -51884,7 +51622,7 @@ esilverstone.pl, 1 esim-urlaub.de, 0 esim.io, 1 -esim365.ru, 1 +esim365.ru, 0 esimplr.com, 1 esimvoyage.fr, 1 esimy.net, 1 @@ -51902,7 +51640,6 @@ esko.bar, 1 eskritt.ca, 1 eskuvoivideohd.hu, 1 -eskypartners.com, 1 esl.org, 1 eslamahmed.tk, 1 esleme.com, 1 @@ -51917,6 +51654,7 @@ esmart.pk, 1 esmart.ro, 1 esmejor.tk, 1 +esmi.es, 1 esmincg2t1.com, 1 esmoker.bg, 1 esmuefektivs.lv, 1 @@ -51930,6 +51668,7 @@ esolbooks.com, 1 esolcourses.com, 1 esolia.co.jp, 1 +esolucionait.com, 1 esomeprazole1.gq, 1 eson.eu, 1 esono.de, 1 @@ -51968,6 +51707,7 @@ especes.org, 1 especializasaudecursos.com.br, 1 especiallysilver.com, 1 +especiaselreloj.com, 1 espectro.tk, 1 espejo.tk, 1 espejocofrade.tk, 1 @@ -51990,7 +51730,6 @@ espocada.com, 1 espoonkumi.fi, 0 esport-agency.fr, 1 -esporters.today, 1 esports.info.bd, 1 esportsbattles.ga, 1 esportslens.com, 1 @@ -52002,7 +51741,6 @@ espricrea.com, 1 esprihealth.com, 1 espritguitare.com, 1 -espritguitare.fr, 1 esprk.com, 1 espub.org, 0 esq, 1 @@ -52012,7 +51750,6 @@ esquirelaw.com, 1 esquirelawfirm.com, 1 esquirelawservices.com, 1 -esquirereality.com, 1 esra.gq, 1 esrarengizkasabahd.tk, 1 esrhd.com, 1 @@ -52047,7 +51784,9 @@ essenciasparis.com.br, 1 essendi.de, 1 essenglish.org, 1 +essens.ru, 1 essentialinteriors.ga, 1 +essentialmovestowellness.com, 1 essentialsource.net, 1 essentialsspa.ca, 1 essentiapura.com, 1 @@ -52062,7 +51801,6 @@ essex.cc, 1 essexcountyvermont.gov, 1 essexhighways.org, 1 -essexmoneyman.com, 1 essexregionalnj.gov, 1 essextech.org, 0 essextimbercraft.co.uk, 1 @@ -52072,6 +51810,7 @@ esslym.com, 1 essnet.co.jp, 1 essoduke.org, 1 +essonneinfo.fr, 1 essplusmed.org, 1 essr.org.uk, 1 esss.co, 1 @@ -52102,7 +51841,6 @@ estellaequipment.com, 1 esteniomexico.com, 1 esteria.eu, 0 -esteriliza-me.org, 1 esterilizacion-perros.es, 1 esterior.net, 1 estet.tk, 1 @@ -52110,7 +51848,6 @@ estetica.host, 1 esteticajustino.com.br, 1 esteticamicali.com.ar, 1 -esteticaprofana.it, 1 estetici.com, 1 esteticka-chirurgie-nohy.cz, 1 estetista.net, 1 @@ -52138,7 +51875,6 @@ estopero.tk, 1 estopwatch.net, 1 estorgio.com, 1 -estrabota.com, 1 estradatech.org, 1 estradiolbestellen.gq, 1 estrasol.com.mx, 1 @@ -52238,7 +51974,7 @@ eternalparking.eu, 1 eternalparking.net, 1 eternalparking.org, 1 -eternalpeaceseaburials.com, 1 +eternalpeaceseaburials.com, 0 eternalsymbols.com, 1 eternalwine.com, 1 eternaya.com, 1 @@ -52268,7 +52004,6 @@ ethelbrooks.es, 1 ether.school, 1 etherandir.com, 1 -etherapeut.de, 1 etherderbies.com, 1 etherdream.com, 1 ethereal-skies.tk, 1 @@ -52363,7 +52098,9 @@ etsradio.org, 1 etsu.edu, 1 ettbattreinternet.se, 1 +ettebiz.ai, 1 etterforsker1.no, 1 +ettihad.org, 1 ettin-router.com, 1 ettin-router.cz, 1 ettin-router.de, 1 @@ -52444,7 +52181,7 @@ eulekarstva.uz, 1 eulen.com, 1 eulenschmiede.de, 1 -euler.finance, 1 +euler.finance, 0 euleres.tk, 1 eulerhermes.be, 1 eulerhermes.bg, 1 @@ -52507,7 +52244,7 @@ eurekahomeappliances.com, 1 eurekatech.eti.br, 1 eurekatownshipmi.gov, 1 -eurekka.me, 0 +eurekka.me, 1 euren.se, 1 euripidis.photography, 1 euritaprinter.com, 0 @@ -52516,19 +52253,14 @@ euro-construction.co.uk, 1 euro-issues.tk, 1 euro-servers.de, 1 -euro.org, 1 euro.ro, 1 -euro17promotora.com.br, 1 euroasia-tm.com, 1 eurobahn.de, 1 eurobattle.tk, 1 -eurobeaute.be, 1 eurobilltracker.tk, 1 eurobjj.com, 1 eurocarparks.ie, 1 eurocertificazione.it, 1 -eurocity.mt, 1 -eurocitymalta.com, 1 eurocleanfrance.fr, 1 eurococos.com.ua, 1 eurocomcompany.cz, 0 @@ -52565,6 +52297,7 @@ eurolink.tk, 1 eurolocarno.es, 1 eurologix.com, 1 +euroloo.com, 1 euroluxgradnja.rs, 1 euromalha.com.br, 1 euroman.ga, 1 @@ -52612,7 +52345,6 @@ europeannewschool.eu, 1 europeanpolice.net, 1 europeanpreppers.com, 1 -europeanspring.net, 1 europeanstudies-chemnitz.de, 1 europeantransportmanagement.com, 0 europedigital.cloud, 1 @@ -52646,6 +52378,7 @@ eurousa.us, 1 eurovision-romania.tk, 1 eurovision.ie, 1 +eurowings.com, 1 eurozhartleys.com, 1 eurozhartleys.com.au, 1 eurseo.com, 1 @@ -52671,7 +52404,6 @@ euvetted.com, 1 euvo.tk, 0 euwid.de, 1 -euwind.com, 1 euzissima.com.br, 1 ev-schule.de, 1 ev-zertifikate.de, 1 @@ -52681,7 +52413,6 @@ eva42.com, 1 evaali.fi, 1 evaalordiah.tk, 1 -evaberg.net, 1 evacleaners.com, 1 evacs.net, 1 evacs.org, 1 @@ -52750,7 +52481,7 @@ eve-ua.com, 1 eve.tax, 1 eve0s.com, 1 -eveaz.com, 1 +eveaz.com, 0 evec.in, 1 eveco-mebel.ga, 1 evedanjailbreak.com, 1 @@ -52762,6 +52493,7 @@ evelin.tk, 1 evelinalondon.nhs.uk, 1 evelyndayman.com, 1 +even-faster-betty.com, 1 evenbijproaten.online, 1 evendesign.gq, 1 evenimenteromania.tk, 1 @@ -52773,7 +52505,6 @@ event-register.jp, 1 event-reisen.tk, 1 event-wunsch.de, 1 -event.coffee, 1 event1teamstore.com, 0 event4fun.no, 1 event64.ru, 1 @@ -52850,7 +52581,6 @@ everaerts.eu, 1 everand.com, 1 everberg.tk, 1 -everchanging.de, 1 evercheck.com, 1 everdivemarine.com, 1 everestbankltd.com, 1 @@ -52870,7 +52600,6 @@ evergreenilder.tk, 1 evergreenlangladewi.gov, 1 evergreenpeo.com, 1 -evergreenproclean.com, 1 evergreenrockford.com, 1 evergreenservice.net, 1 everhome.cloud, 1 @@ -52889,9 +52618,9 @@ everready.tk, 1 everride.com, 1 everseo.tk, 1 -eversightwealth.com, 1 everstage.com, 1 evertonarentwe.com, 1 +evertoolkit.com, 1 evertradeelectronics.com, 1 evertrust.fr, 1 evertry.co, 1 @@ -52957,6 +52686,7 @@ evidenze.com, 1 evidenze.org, 1 evies.tk, 1 +evifer.com, 1 evil-empire.tk, 1 evil-needle.com, 1 evilbeasts.ru, 1 @@ -52994,7 +52724,6 @@ evlv.energy, 1 evmodssweden.se, 1 evo-ai.com, 1 -evo-exchange.com, 1 evo.moe, 1 evoco.vc, 0 evodation.com, 1 @@ -53003,8 +52732,8 @@ evoix.com, 1 evojska.tk, 1 evoke.ie, 1 -evokeearlylearning.com.au, 1 evol-ve.nl, 1 +evolnero.de, 1 evolucioneducativa.com.ec, 1 evolucionestudios.com.bo, 1 evolucionradio.tk, 1 @@ -53116,7 +52845,6 @@ exact-distribution.com, 1 exact-online-apps-by-invantive.com, 1 exact.realty, 1 -exactgold.com, 1 exactlyinfinite.com, 1 exactphilosophy.net, 1 exactrealty.no, 1 @@ -53129,6 +52857,7 @@ exalea.eu, 1 exalthost.com, 1 exam.tools, 1 +examanet.com, 1 exambot.cf, 1 exambot.ga, 1 exambot.gq, 1 @@ -53143,6 +52872,7 @@ exampaperarchive.com, 1 example-llm.com, 1 example-llm.de, 1 +example.ee, 1 example.ng, 1 exampleessays.com, 1 examroll.fr, 1 @@ -53150,17 +52880,16 @@ examroom.ai, 1 examsite.tk, 1 examsmate.in, 1 -examsoft.com, 1 examticket.tk, 1 examtools.org, 1 exarcheia.link, 1 -exarcheia.ru, 1 exarius.org, 1 exashop.tn, 1 exaspace.de, 1 exatadiesel.com.br, 1 exatmiseis.net, 0 exatom.io, 1 +exauro.de, 1 exavo.fr, 1 exayard.com, 1 excaliburmatrix.tk, 1 @@ -53171,11 +52900,10 @@ excel-mechanical.com, 1 excelbusinessservices.ie, 1 excelcenter.org, 1 -exceldatapro.com, 1 exceldor.ca, 1 exceldor.com, 1 exceldorcooperative.ca, 1 -exceleron.com, 1 +exceleron.com, 0 exceleron.in, 1 excelgum.ca, 1 excelkursdirekt.eu, 1 @@ -53235,7 +52963,6 @@ execupharm.jp, 1 execution.biz.tr, 1 executive-recruit.com, 1 -executivecoachgroup.com, 1 executivemarketing.co.za, 1 executiveprodry.com, 1 executiverecruitment.co.uk, 1 @@ -53265,6 +52992,7 @@ exexcarriers.com, 1 exforo.tk, 1 exfuga.com, 1 +exhibit509.com, 1 exhibitbridge.ca, 1 exhibitbridge.com, 1 exhibits2u.com, 1 @@ -53310,6 +53038,7 @@ exomind.gq, 1 exon.io, 1 exonip.de, 1 +exonore.fr, 1 exonovov.tk, 1 exordiumconcepts.com, 1 exosama.com, 1 @@ -53375,13 +53104,11 @@ experiumorocco.com, 1 expero.ru, 1 experpento.tk, 1 -expert-batiment-rouen.fr, 1 expert-comptable-vichy-moulins-allier.fr, 1 expert-voronezh.tk, 1 expert.cz, 1 expert96.cf, 1 experta.bg, 1 -expertairductcleaninghouston.com, 1 expertbrand.pl, 1 expertccw.com, 1 expertcen.ru, 1 @@ -53419,13 +53146,11 @@ explicamente.pt, 1 explode.tk, 1 explodie.org, 1 -exploit-db.com, 1 exploit.cz, 0 exploit.party, 1 exploited.cz, 1 exploithe.net, 1 explorance.com, 1 -exploraturuta.com, 1 exploravacations.in, 1 explore-being-human.org, 1 explore-hiroshima-tour.com, 1 @@ -53595,6 +53320,7 @@ extraordinaryfuture.ai, 1 extrapagetab.com, 1 extrasavesnow.shop, 1 +extrashifty.com, 1 extrashop.be, 1 extraspaces.co.uk, 1 extratext.at, 1 @@ -53625,6 +53351,7 @@ exudestudios.tk, 1 exum.tk, 1 exusi.ai, 1 +exusiai.org, 1 exvisits.tk, 1 exwaiti.com, 1 exxoncannabis.com, 1 @@ -53637,7 +53364,7 @@ eye-clan.com, 1 eye-move.nl, 1 eye-vet.co.uk, 1 -eye.security, 1 +eye.security, 0 eye7.in, 1 eyeandfire.com, 1 eyeball.ml, 1 @@ -53681,7 +53408,6 @@ ezakazivanje.rs, 1 ezakopane.pl, 1 ezcater.com, 1 -ezcesspoollongisland.com, 1 ezcourseonline.com, 1 ezec.com.tw, 1 ezee-fix.co.uk, 1 @@ -53693,7 +53419,6 @@ ezhub.de, 1 ezik-ido.tk, 1 ezinezone.tk, 1 -ezinternet.com.au, 1 ezitech.com, 1 ezkeel.com, 1 ezloans4realestate.com, 1 @@ -53701,10 +53426,11 @@ ezmedix.ua, 1 ezmob.com, 1 ezmoddingz.tk, 1 -eznetworks.com.br, 0 +eznetworks.com.br, 1 ezochat.com, 1 ezopus.com, 1 ezorgportaal.nl, 1 +ezra-spinning-tops.com, 1 ezrent.tk, 1 ezsavers.ga, 1 ezsaversers.ga, 1 @@ -53723,6 +53449,7 @@ ezzarware.nl, 1 ezzhole.net, 1 f-401.com, 1 +f-almeida.group, 1 f-centre.ru, 1 f-droid.org, 1 f-mall.jp, 1 @@ -53838,7 +53565,6 @@ fabian-zoske.de, 1 fabian.gq, 1 fabianackle.ch, 1 -fabianbeiner.com, 0 fabianbeiner.de, 0 fabianbertona.com, 1 fabianegli.ch, 1 @@ -53962,8 +53688,6 @@ fachim.tk, 1 fachiri.tk, 1 fachschaften.org, 1 -fachschaftslisten.at, 1 -fachschaftslisten.org, 1 fachversand-hennes.de, 1 facialcare.tk, 1 facialexercising.com, 1 @@ -54013,11 +53737,10 @@ facts-about-bees.ml, 1 factsiknow.in, 1 factslider.tk, 1 -factsvision.sr, 1 factua.nl, 1 factum-info.net, 0 factuon.com, 1 -facturare.online, 1 +facturare.online, 0 factureenlinea.com, 0 facturx-pret.fr, 1 factuur.pro, 1 @@ -54079,7 +53802,6 @@ fahrenwal.de, 1 fahrenwalde.de, 1 fahrradreisen-wanderreisen.de, 1 -fahrservice-herrmann.de, 1 fahrwerk.io, 1 fahrzeug-talk.de, 1 fahverk-msk.ru, 1 @@ -54098,12 +53820,10 @@ failstats.net, 0 faimdevoyages.com, 1 faimmobiliare.it, 1 -fainlogistics.com, 1 faionic.de, 1 fair-fish-database.net, 1 fair-fish.net, 1 fairan.ir, 1 -fairbill.com, 1 fairbot.cf, 1 fairbot.gq, 1 fairbot.ml, 1 @@ -54134,7 +53854,6 @@ fairgolfteams.com, 1 fairhavenvt.gov, 1 fairleevt.gov, 1 -fairline.com, 1 fairlingtonumc.org, 1 fairmates.tk, 1 fairmonthotsprings.com, 1 @@ -54169,6 +53888,7 @@ faithcentercogop.net, 1 faithfulcounseling.com, 1 faithfulfaye.nl, 1 +faithfulheartselc.org, 1 faithfully.tk, 1 faithfulroad.org, 1 faithleaks.org, 0 @@ -54207,7 +53927,6 @@ faketaxi.com, 1 fakhrudin.tk, 1 fakinga.tk, 1 -fakir-show.nl, 0 fakt.tk, 1 faktenfaktenfakten.tk, 1 faktly.ch, 1 @@ -54332,10 +54051,10 @@ familleshilton.com, 1 family-clinic.tk, 1 family-intervention.com, 0 -familyace.cz, 1 familyandfriends-railcard.co.uk, 1 familybusinessatlantic.ca, 1 familybusinessusa.com, 1 +familycase.ai, 1 familyclinicstl.com, 1 familyconventioners.ga, 1 familyd-c.com, 1 @@ -54351,7 +54070,6 @@ familytreewebinars.com, 0 familyzone.ga, 1 famion.eu, 1 -famiport.com, 1 famlefeber.nl, 1 famonitor.com, 1 famosas.cf, 1 @@ -54363,6 +54081,7 @@ famousit.nl, 1 famousmodels.tk, 1 famouspdf.gq, 1 +famousquotefrom.com, 1 famre.de, 1 famreijnen.nl, 0 famvsomeren.nl, 1 @@ -54408,8 +54127,8 @@ fanjiong.com, 1 fanniemaeloans.tk, 1 fanning.tk, 1 +fanny-labbe.fr, 1 fannyips.tk, 1 -fanohus.de, 1 fanohus.dk, 1 fanorama.tk, 1 fanosak.tk, 1 @@ -54459,6 +54178,7 @@ fantasypartyrental.com, 0 fantasysports.tk, 1 fantasysportsnews.org, 1 +fantasyteam.io, 1 fantgames.com, 1 fantinisfantasy.cf, 1 fantinishop.com, 1 @@ -54505,7 +54225,6 @@ farbeyondourstars.com, 1 farbyin10.com, 1 farcecrew.de, 0 -farcon.com, 1 farda.gov, 1 fareast.cf, 1 fareast.ga, 1 @@ -54526,6 +54245,7 @@ farhadexchange.com, 1 farhandanish.tk, 1 farhandigital.id, 1 +farhath.net, 1 farian.tk, 1 faribanx-porn.com, 1 faribanx-xxx.com, 1 @@ -54554,6 +54274,7 @@ farmauna.com, 1 farmaweb.be, 1 farmbureauinsurance-mi.com, 1 +farmcloud.fr, 1 farmer-miniaturen.tk, 1 farmerbrossamples.com, 1 farmerfairness.gov, 1 @@ -54567,7 +54288,7 @@ farmhouse.com.sg, 1 farming.co.uk, 1 farmingtonlaxwi.gov, 1 -farmio.io, 1 +farmio.io, 0 farmmaximizer.com, 1 farmmonitor.africa, 1 farmocracy.in, 1 @@ -54659,6 +54380,7 @@ fashionsuits.tk, 1 fashionsummer.tk, 1 fashiontrendsetter.com, 1 +fashiontvluxeresort.com, 1 fashionunited.at, 1 fashionunited.be, 1 fashionunited.ca, 1 @@ -54752,6 +54474,7 @@ fasterfront.com, 1 fasterfront.com.br, 1 fasternie.tk, 1 +fastestfreelancers.com, 1 fastestknowntime.com, 1 fastfast.click, 1 fastfix.nl, 1 @@ -54788,7 +54511,6 @@ fastserv.pl, 1 fastshop.com.pl, 0 fastspring.com, 1 -faststage.ch, 1 fasturl.ml, 1 fastvanya.com, 1 fastvelocityers.ga, 1 @@ -54835,6 +54557,7 @@ fatzebra.com.au, 1 fau-bremen.tk, 1 fau8.ml, 1 +faucet-pipeline.org, 1 fauceton.cf, 1 fauceton.tk, 1 faucetslist.tk, 1 @@ -54849,6 +54572,7 @@ faustodiiorio.com, 1 fautchen.eu, 1 fauteuil-bebe.fr, 1 +fautor.dpdns.org, 1 fauv.art, 1 fauveal.xyz, 1 fauvettes.be, 1 @@ -54871,6 +54595,7 @@ favoritestudenters.ga, 1 favoritestudentest.ga, 1 favoritetechers.ga, 1 +favotransfer.de, 1 favouritequotations.ca, 1 favro.com, 1 favrotest.com, 1 @@ -54917,6 +54642,7 @@ fbcfairburn.com, 1 fbcopy.com, 1 fbctx.gov, 1 +fbet.ly, 1 fbf.gov, 1 fbfwd.email, 1 fbi.gov, 1 @@ -54937,7 +54663,6 @@ fbthirdpartypixel.com, 1 fburl.com, 1 fbwat.ch, 1 -fbwifi.com, 1 fc-corvinul.tk, 1 fc-software.it, 1 fc8882.net, 1 @@ -54960,7 +54685,7 @@ fcdemuis.tk, 1 fcdenhaag-holi.tk, 1 fcdordrecht.tk, 1 -fcfelectricalbrisbane.com.au, 1 +fcfelectricalbrisbane.com.au, 0 fcforum.net, 1 fcgmd.gov, 1 fcht.fr, 1 @@ -54976,7 +54701,6 @@ fcprovadia.com, 1 fcr.pp.ua, 1 fcrmedia.be, 1 -fcrrijswijk.nl, 1 fcs-embedded.com, 1 fcsarajevo.tk, 1 fcsic.gov, 1 @@ -55103,7 +54827,6 @@ fedoracommunity.org, 1 fedorahosted.org, 1 fedoralinux.or.kr, 1 -fedoranews.org, 1 fedorapeople.org, 1 fedoraproject.org, 1 fedorblog.tk, 1 @@ -55118,6 +54841,7 @@ fedsfeedfamilies.gov, 1 fedshat.space, 1 fedshirevets.gov, 1 +fedux.com.ar, 1 feecotec.com, 0 feed-back.com, 1 feedback-project.eu, 1 @@ -55143,7 +54867,6 @@ feedthefuture.gov, 1 feedthegreek.tk, 1 feedtube.com, 1 -feedus.io, 1 feeg-wage.gc.ca, 1 feegg.com.br, 1 feek.org, 1 @@ -55180,6 +54903,7 @@ fefacaram.com.br, 1 fefe-individual.de, 1 fefe.cloud, 1 +fefeloffgroup.com, 1 fefelovalex.ru, 1 feg-wge.gc.ca, 1 fegame.eu, 1 @@ -55209,7 +54933,6 @@ feistyduck.com, 1 feisworld.com, 0 feitam.es, 1 -feittinf.org.br, 0 feixiang.eu.org, 1 feixiang.pp.ua, 1 feiya.ng, 1 @@ -55381,7 +55104,6 @@ ferienhaus-danemark-privat.de, 1 ferienhaus-laesoe.de, 1 ferienhaus-montenegro.tk, 1 -ferienhaus-polchow-ruegen.de, 0 ferienhaus-urlaub-danemark.de, 1 ferienhausprovence.ch, 1 ferienwohnung-hafeninsel-stralsund.de, 1 @@ -55454,7 +55176,6 @@ ferrlens.com, 1 ferro-design.tk, 1 ferrodata.de, 1 -ferronweb.org, 1 ferrousmoon.com, 1 ferrovial.com, 1 ferrtrack.com, 1 @@ -55484,6 +55205,7 @@ fesoftware.net, 1 festaprylar.se, 1 festar.tk, 1 +festbogen.dk, 1 festesuniversitaries.tk, 1 festfabriken.se, 1 festin.tk, 1 @@ -55529,10 +55251,10 @@ fetishzone.org, 1 fetlife.com, 1 fetlinks.ga, 1 +fetope.com, 1 fetrabuv.com, 1 fettbrot.tk, 1 fettburger.com, 1 -fettrechner.com, 1 feudalisten.de, 1 feudaltactics.com, 1 feudias.com, 1 @@ -55555,7 +55277,6 @@ feutri.org, 1 fevo.us, 1 fevolden.com, 1 -fewo-groden.de, 1 fewo-hafeninsel-stralsund.de, 1 fewo-thueringer-wald.de, 1 fewo-wendl.de, 1 @@ -55594,6 +55315,7 @@ ffbsee.net, 0 ffc-gerlingen.de, 1 ffdfrontroyal.com, 1 +ffdservices.com, 1 ffestiniogtravel.com, 1 fff-du.de, 1 fff-musique.fr, 1 @@ -55605,12 +55327,11 @@ ffis.me, 0 ffn-connect.de, 1 ffnm.org, 1 -ffoodtrucks.fr, 1 +ffoodtrucks.fr, 0 ffprofile.com, 1 ffrev.de, 1 ffsbgateway.com, 1 ffsociety.nl, 1 -fftech.se, 1 ffty2.com, 1 ffw-zeven.de, 1 ffwd-it.nl, 1 @@ -55648,7 +55369,7 @@ fhfaoig.gov, 1 fhi.nl, 1 fhinds.co.uk, 0 -fhkheating.com.au, 1 +fhkheating.com.au, 0 fhm.duckdns.org, 1 fhmkh.cn, 1 fhome.ch, 1 @@ -55662,7 +55383,6 @@ fiam.me, 1 fianna.tk, 1 fianoromano.news, 1 -fiaoakland.org, 1 fiasgo.dk, 1 fiataldivat.hu, 1 fibank.bg, 1 @@ -55683,10 +55403,10 @@ ficharjmd.es, 1 fichier-pdf.fr, 0 fichtefreunde.de, 1 -fickfreundinnen.net, 1 fickweiler.nl, 1 ficlab.com, 1 fico.com, 1 +ficohsa.ni, 1 ficor.gov, 1 fid-elite.ch, 0 fidbank.co.uk, 1 @@ -55709,6 +55429,7 @@ fidhouriet.ch, 1 fidlar.com, 1 fidmmuseum.org, 0 +fidns.fi, 1 fido.gov.au, 1 fidoo.com, 1 fiduciaire-ratio.ch, 0 @@ -55723,7 +55444,6 @@ fieldelectriconline.com, 1 fieldgroupny.com, 1 fieldsgynroboticsurgery.com, 1 -fieldstat.com, 1 fieldworkbrewing.com, 1 fieldworks.ne.jp, 1 fiemmeimpianti.it, 0 @@ -55872,7 +55592,6 @@ filiotech.com, 1 filiotech.pl, 1 filip-prochazka.com, 0 -filipi.no, 1 filipinasdailynews.tk, 1 filipinochinese.tk, 1 filipinostaff.uk, 1 @@ -55961,7 +55680,6 @@ fin.ddns.net, 1 fin.ee, 0 fin4i.it, 1 -fina-foxy.com, 1 finagosolo.com, 1 finajoliat.com, 1 finakalendrar.se, 1 @@ -55988,13 +55706,13 @@ financeaffiliateprograms.com, 1 financecontrol.tk, 1 financeinterface.tk, 1 -financejobs.ch, 1 financenews.tk, 1 financestead.com, 1 financetool.de, 1 financetwenty.com, 1 financewhile.com, 1 financewithcromulent.com, 1 +financewizard.com, 1 financial-law.tk, 1 financial-standby.de, 1 financialfreedomaus.com, 1 @@ -56009,6 +55727,7 @@ financierajuriscoop.com.co, 1 financniexperti.sk, 1 finansesak.lv, 1 +finansh.in, 1 finansinspektionen.se, 1 finansy.tk, 1 finanz-planer.net, 1 @@ -56031,6 +55750,7 @@ finbuzz.ru, 1 fincafresh.is, 1 fincas-ruiz.com, 1 +fincash.com.br, 1 finccam.com, 1 fincent.xyz, 1 finch.am, 1 @@ -56059,7 +55779,6 @@ findedeinencoach.net, 1 findete.tk, 1 findeth.io, 1 -findfaults.net, 1 findfriends.cc, 1 findheim.at, 0 findinggenius.com, 1 @@ -56072,7 +55791,6 @@ findjeen.com, 1 findlayohio.gov, 1 findlimitsers.ga, 1 -findlocalproduce.co.uk, 1 findmacrophage.com, 1 findmail.ga, 1 findmassmoney.gov, 1 @@ -56101,6 +55819,7 @@ findyour.diet, 1 findyourdreams.tk, 1 findyourinfluence.com, 1 +findyourrace.com.br, 1 findyourvoice.ca, 1 fine-mach.com, 1 fine-services.paris, 1 @@ -56251,11 +55970,14 @@ fireflybayandbasin.com, 1 fireflyemilyremler.com, 1 fireflygatlinburg.com, 1 +fireflystack.com, 1 firehada.com, 1 +firehouse360.com, 1 firehousemouse.com, 1 firehustle.net, 1 fireintheholevideos.tk, 1 fireleadership.gov, 1 +firelightstudio.space, 1 firelinkshrine.xyz, 1 firemail.de, 1 firemaker.tk, 1 @@ -56268,6 +55990,7 @@ fireplex.co.uk, 1 fireportal.cz, 1 fireportal.sk, 1 +firerabbit.com, 0 fireradio.tk, 1 firerain.me, 1 fireservicerota.co.uk, 1 @@ -56360,7 +56083,6 @@ firstechpayments.com, 0 firstenergyservice.com, 1 firstever.eu, 1 -firstfederalbath.com, 1 firstflare.io, 1 firstgenmc.com, 1 firstgov.gov, 1 @@ -56372,6 +56094,7 @@ firstlab.com, 1 firstlayout.net, 1 firstlegal.group, 1 +firstlight.baby, 1 firstlightinspirations.tk, 1 firstlinesecurities.com, 1 firstload.tk, 1 @@ -56386,7 +56109,7 @@ firstphilec.com, 1 firstplace.ga, 1 firstpoint.com.tr, 1 -firstqa.com, 0 +firstqa.com, 1 firstresponder.gov, 1 firstshowing.net, 1 firstsiteguide.tk, 1 @@ -56424,7 +56147,6 @@ fisera.cz, 1 fish-hook.ru, 0 fish-n-chips.uk, 1 -fish.lgbt, 1 fish2.me, 1 fish24.bg, 1 fishbattle.io, 1 @@ -56445,12 +56167,13 @@ fishgen.no, 1 fishing-battery.com, 1 fishingforsolitude.com, 1 +fishingspot.com, 1 fishingworld.tk, 1 fishingzone.bg, 1 fishman.idv.tw, 1 fishoftheday.tv, 1 fishserver.net, 1 -fishspecies.nz, 1 +fishspecies.nz, 0 fishtacos.blog, 1 fishtank.ga, 1 fishycam.com, 1 @@ -56519,7 +56242,6 @@ fitnessbenefit.com, 1 fitnessbest.com, 1 fitnessfreedomathletes.com, 1 -fitnesshaber.com, 1 fitnesskarate.club, 1 fitnessmaus.com, 1 fitnessplanet.best, 1 @@ -56533,6 +56255,7 @@ fitodifesa.it, 1 fitotovar.ru, 1 fitpass.co.in, 1 +fitraj.com, 1 fitrecepty.info, 1 fitspring.com, 1 fitssey.com, 1 @@ -56542,7 +56265,6 @@ fittmetlynn.nl, 1 fittydent.bg, 1 fitvermogen.nl, 1 -fitxxxsandy.net, 1 fitz-family.com, 1 fitzroyit.com, 1 fitzsim.org, 1 @@ -56573,7 +56295,6 @@ fixcyprus.cy, 1 fixedcostagents.com, 1 fixedcostclaw.com, 1 -fixedfeeplacements.co.uk, 1 fixedgear.tk, 1 fixedpricemovers.com, 0 fixedtoday.com.au, 1 @@ -56609,7 +56330,6 @@ fixverkaufen.de, 1 fixville.co, 1 fiyaai.com, 1 -fiyatagel.com, 1 fiyatinedir.net, 1 fizadvocaten.nl, 1 fiziktedavi.name.tr, 1 @@ -56638,7 +56358,6 @@ fizzstudio.org, 1 fj.je, 1 fj.search.yahoo.com, 0 -fjallbackacamping.se, 1 fjallconnections.com, 1 fjant.tk, 1 fjco.alsace, 1 @@ -56651,6 +56370,7 @@ fjordboge.dk, 1 fjordenpaard.tk, 1 fjordfire.com, 1 +fjordline.com, 1 fjordrykkur.is, 1 fjsb.com, 1 fjugstad.com, 1 @@ -56666,7 +56386,6 @@ fkmt-server.net, 1 fkosquad.moe, 1 fktpm.ru, 1 -fl-ad.com, 1 fl.ru, 1 fl3xx.com, 1 flabacinov.ga, 1 @@ -56736,12 +56455,10 @@ flanderslaw.com, 1 flanga.io, 0 flanigan.tk, 1 -flanschspreizer.at, 1 flapoverspeed.com, 1 flapperistic.tk, 1 flappypepe.com, 1 flare.cloud, 1 -flared.net, 1 flaretechnologies.io, 1 flarewalker.eu, 1 flarewalker.net, 1 @@ -56754,6 +56471,7 @@ flash.homes, 1 flashbackband.tk, 1 flashbeat.tk, 1 +flashcards.pt, 1 flashcover.com.br, 1 flasheschile.tk, 1 flashgamedev.tk, 1 @@ -56767,6 +56485,7 @@ flashmodz.be, 1 flashoffersnow.shop, 1 flashpegasus.com.br, 1 +flashprotest.live, 1 flashsale.com.pk, 1 flashsale.pk, 1 flashsale.store, 1 @@ -56796,6 +56515,7 @@ flatrate.com, 0 flatrocktentpark.com.au, 1 flatrooms-chiemgau.de, 1 +flatsbratislava.com, 1 flatsearchpro.com, 1 flatsomestudio.ir, 1 flatsurfers.eu, 1 @@ -56850,9 +56570,9 @@ fleetofhope.tk, 1 fleetone.com.au, 1 fleetpal.io, 0 -fleetserviceoftulsa.com, 1 fleetssl.com, 1 fleettools.tk, 1 +fleetup.in, 1 fleetwiz.com.au, 1 fleetyards.net, 1 fleisch.club, 1 @@ -56870,7 +56590,6 @@ fleshwound.tk, 1 fletcherdigital.com, 1 fletcherdoescrime.com, 1 -fletcherssolicitors.co.uk, 1 fletchmusic.tk, 1 fletchto99.com, 1 fletesymudanzasbaratas.com, 1 @@ -56897,6 +56616,8 @@ flexdrukker.nl, 1 flexfone.dk, 1 flexforcemonkey.com, 1 +flexgs.ca, 1 +flexgs.net, 1 flexhyp.de, 1 flexi-dance.pl, 1 flexi-scale.com.my, 0 @@ -56992,7 +56713,6 @@ flippers-leuven.be, 1 flipphotography.ga, 1 flipping.land, 0 -flipsidexr.com, 1 fliptable.org, 1 flipweb.tk, 1 flirt-norden.de, 1 @@ -57009,7 +56729,6 @@ flixed.io, 1 flixflex.tk, 1 flixone.com, 1 -flixpatrol.com, 1 flixports.com, 1 flmedicaidmanagedcare.com, 1 flo-bois-services.fr, 1 @@ -57090,6 +56809,7 @@ florencewi.gov, 1 florenciaextrema.tk, 1 florenciasabio.com, 1 +florentino.studio, 1 florentinraud.net, 1 floresastrid.tk, 1 floresdoprado.com.br, 0 @@ -57129,7 +56849,6 @@ floridagulfyacht.com, 1 floridahealthcareconnections.gov, 1 floridaimigracao.com, 1 -floridaplasticsurgery.com, 1 floridaroofdesign.com, 1 floridarrc.com, 1 floridaschools.us, 0 @@ -57173,6 +56892,7 @@ flowauditor.com, 1 flowbased.eu, 1 flowbuk.me, 1 +flowcert.com.br, 1 flowcount.xyz, 1 flowcrypt.com, 1 flowctory.com, 1 @@ -57184,7 +56904,7 @@ flowerdelivery.tk, 1 flowerdesign.tk, 1 flowergurlcrafts.com, 1 -flowergypsies.com, 1 +flowergypsies.com, 0 flowerinsnow.cn, 1 flowerinsnow.online, 1 flowermound.gov, 1 @@ -57212,6 +56932,7 @@ flowinity.host, 1 flowinvoice.com, 1 flowio.cz, 1 +flowly-ai.online, 1 flowly.run, 1 flowlytics.host, 1 flowmann.com, 1 @@ -57240,10 +56961,8 @@ flra.gov, 1 flrs.co.uk, 1 flsa6.gov, 1 -flsc.co, 1 flslawyer.com, 1 flst.link, 1 -fltitlesearch.com, 1 flu.gov, 1 flubio.de, 1 flubiostudios.com, 1 @@ -57271,6 +56990,7 @@ fluidattacks.org, 1 fluidattacks.tech, 1 fluidbb.co.uk, 1 +fluidics-equipment.com, 1 fluidsealing.com.au, 1 fluitbeurt.nl, 1 flukestar.tk, 1 @@ -57286,16 +57006,17 @@ fluoxetine.net, 1 flusszs.tk, 1 fluteandpianoteaching.co.uk, 1 -flutedrinks.com, 1 flutterwave.com, 1 fluuxly.com, 1 +flux.la, 1 flux360.net, 1 +fluxelektryka.pl, 1 fluxforge.com, 1 fluxnet.tk, 1 fluxoid.com, 1 fluxpoint.xyz, 1 flv.co.nz, 1 -flvs.life, 1 +flvs.life, 0 flvyingeagle.ga, 1 flws.cl, 1 fly, 1 @@ -57327,6 +57048,7 @@ flyhealthy.gov, 1 flyhood.net, 1 flying-angels.tk, 1 +flying-dudes.de, 1 flyingangels.cf, 1 flyingbasicsest.ga, 1 flyingcloud.com, 1 @@ -57369,7 +57091,6 @@ flytrap.in, 1 flywebservices.nl, 1 flywind.ml, 1 -flyzold.com, 1 flyzone.tk, 1 flyzoomattzir.com, 1 fm-digitize.de, 1 @@ -57435,6 +57156,7 @@ fnews.tk, 1 fnfmods.net, 1 fng.gov.co, 1 +fngroup.com.sg, 1 fngroup.sg, 1 fnh.org, 1 fnka.de, 1 @@ -57443,7 +57165,9 @@ fnlife.com, 1 fnlife.com.my, 1 fnn-creameries.com, 1 +fnn.com.sg, 1 fnncreameries.com, 1 +fnndairies.com, 1 fnnfoods.com, 1 fnof.ch, 1 fnordserver.eu, 1 @@ -57451,6 +57175,7 @@ fnpvenues.com, 1 fnrs.nl, 1 fnscatania.tk, 1 +fnthai.com, 1 fnthaidairies.com, 1 fnz.com, 1 foair.me, 0 @@ -57466,7 +57191,6 @@ focanocliente.com.br, 1 focenter.com, 1 focomentoring.com.br, 1 -focored.com, 1 focus2career.com, 0 focusbet-api.com, 1 focuscomic.com, 1 @@ -57478,10 +57202,12 @@ focusproductions.tk, 1 focusreferrals.co.uk, 1 focustec.tk, 1 +focusti.com.br, 1 focustuningclub.tk, 1 fodder.ga, 1 foe-sniper.com, 1 foehl.de, 1 +foehnerstall.de, 1 foempe.com, 1 foepwned.com, 1 foerderverein-horrheim.de, 0 @@ -57508,7 +57234,7 @@ fokep.no, 1 fokos.de, 0 fokus.ag, 1 -fokusfalter.ch, 1 +fokustest.com, 1 fol.tf, 1 folar.ga, 1 folclore.tk, 1 @@ -57520,7 +57246,7 @@ foliagefriend.com, 1 foliencenter24.com, 1 folio.no, 1 -foliovision.com, 1 +foliovision.com, 0 foljeton.dk, 0 folk.as, 1 folk.tk, 1 @@ -57534,7 +57260,6 @@ folkrace.tk, 1 folktalerecords.tk, 1 folktellers.tk, 1 -folkweb.net, 1 follandviolins.com, 1 follow-app.fr, 0 follow-the-leader.tk, 1 @@ -57564,7 +57289,6 @@ fondazione-menarini.com, 1 fondbaikal.ml, 1 fondsnieuws.nl, 1 -fondsvermittler.com, 1 fondzee.cz, 1 fonemisitme.com, 1 foneria.com.tr, 0 @@ -57584,7 +57308,6 @@ fontawesome.com, 1 fonte-trading.com, 1 fontein.de, 1 -fontela.es, 1 fontenelegroup.com, 1 fontnegar.ir, 1 fontocean.com, 1 @@ -57655,7 +57378,6 @@ foodfeature.ga, 1 foodflower.ga, 1 foodgecko.ga, 1 -foodgenieai.com, 1 foodglamour.ga, 1 foodglory.ga, 1 foodgoddess.ga, 1 @@ -57667,7 +57389,6 @@ foodhandy.ga, 1 foodhotrod.ga, 1 foodhusky.ga, 1 -foodiecritic.com, 1 foodieso.com, 1 foodintergrity.ga, 1 foodiron.ga, 1 @@ -57793,7 +57514,6 @@ footloose.co.uk, 1 footmercato.net, 1 footparisien.com, 1 -footstepsinthegambia.com, 0 footstepsontheglobe.com, 1 foottube.com, 1 footvillewi.gov, 1 @@ -57809,6 +57529,7 @@ forajeputuri-denisipari.ro, 1 foranimalsforearth.com, 1 forat.tk, 1 +forauto.ro, 1 foray-jero.me, 1 foraz.tk, 1 forberedt.no, 1 @@ -57819,8 +57540,6 @@ forcamp.ga, 1 forcastdof.com, 1 force-shadow.tk, 1 -force-unleashed.com, 1 -force-unleashed.de, 1 force-user-content.com, 1 force.com, 1 force4racing.co.uk, 1 @@ -57847,7 +57566,6 @@ foreclosurecitiesers.ga, 1 foredata.fi, 1 forefront.dental, 1 -forefrontcloud.com, 1 foreign-language-colleges.com, 1 foreignassistance.gov, 1 forem.com, 0 @@ -57860,7 +57578,6 @@ forensicshieldlegal.net, 1 forensicsinfo.ga, 1 forensicsinfoest.ga, 1 -forensik.me, 1 forensiq.pt, 1 forensischepsychiatrie.tk, 1 forers.com, 1 @@ -57891,6 +57608,7 @@ forestsystems.com, 1 foresttownrcwi.gov, 1 forestvets.com, 1 +forethought-studio.com, 1 forever-pto.com, 1 forever.gq, 1 foreverbreak.com, 1 @@ -57929,7 +57647,6 @@ forge.my.id, 1 forge.st, 1 forgedshield.com, 1 -forgemedia.io, 1 forgetfulmomma.com, 1 forgetme.ga, 1 forgetme.gq, 1 @@ -57949,7 +57666,6 @@ forixseo.com, 1 fork-portal.ml, 1 forkfeeds.com, 1 -forkid.com, 1 forkknifeswoon.com, 1 forklabs.cc, 1 forklift.name.tr, 1 @@ -57968,9 +57684,7 @@ formalistgallery.com, 1 formalize.com, 1 formalux.com.au, 1 -formand.ru, 1 formanov.com, 0 -formap.co, 1 formapi.io, 1 formascan.fr, 1 formassembly.com, 1 @@ -57983,6 +57697,7 @@ formation-intergeneration.com, 1 formation-russe-paris.com, 1 formation.ai, 1 +formation.tech, 1 formationaumagnetisme.fr, 1 formationgit.com, 1 formationgit.fr, 1 @@ -58038,6 +57753,7 @@ forologikidilosi.com.gr, 1 foromasters.tk, 1 forosdelmisterio.tk, 1 +forourownholdings.com, 1 forourselves.com, 1 forowarhammer.tk, 1 forpet.bg, 1 @@ -58093,6 +57809,7 @@ forthvalleykeswick.co.uk, 1 fortifydiy.com, 1 fortigate.es, 1 +fortilayer.eu, 1 fortinetsecuressap.com, 1 fortipartner.co.uk, 1 fortipartner.com, 1 @@ -58103,6 +57820,7 @@ fortipartner.uk, 1 fortis174.ru, 1 fortisadhesives.com.au, 1 +fortisadversis.com, 1 fortisinc.com, 1 fortissimusbellator.pt, 1 fortmatic.com, 1 @@ -58122,7 +57840,6 @@ fortresslinux.com, 1 fortresslinux.nl, 1 fortresslinux.org, 1 -fortricks.in, 0 fortscratchley.com.au, 1 fortuna-apotheke-lahnstein.de, 1 fortuna-loessnitz.de, 1 @@ -58150,8 +57867,6 @@ forum-egypte.tk, 1 forum-expert.tk, 1 forum-gilee.cf, 1 -forum-goszakaz.ru, 1 -forum-kinozal-tv.appspot.com, 1 forum-mercury.tk, 1 forum-noginska.tk, 1 forum-peugeot.com, 1 @@ -58178,7 +57893,7 @@ forumrowerowe.org, 1 forums4everyone.tk, 1 forumsampdoria.tk, 1 -forumsaudedigital.com.br, 1 +forumsaudedigital.com.br, 0 forumsearch.tk, 1 forumsig.net, 1 forumsrussia.ga, 1 @@ -58264,7 +57979,6 @@ fotografie-presets.nl, 1 fotografies.tk, 1 fotografija.tk, 1 -fotografoivanalmeida.com.br, 1 fotografontes.com.br, 1 fotografos.com, 1 fotografos.com.pt, 1 @@ -58313,10 +58027,7 @@ found.center, 1 found.com, 1 foundationalucc.com, 1 -foundationassure.com, 0 foundationmaintenance.com, 1 -foundationprogramme.nhs.uk, 1 -foundationrepairannarbor.com, 0 foundationrepairasheville.com, 1 foundationrepairbasementwaterproofingtn.com, 1 foundationrepairchicagoil.com, 1 @@ -58329,7 +58040,6 @@ foundrehotels.com, 1 foundries.io, 1 foundry.cash, 1 -foundry512.com, 1 foundryhome.com, 1 foundtesham.ru, 1 fountain.com, 1 @@ -58369,13 +58079,11 @@ fox.my, 0 fox13now.com, 1 fox17online.com, 1 -fox47news.com, 1 foxandfish.be, 1 foxart.com.tr, 1 foxbenjaminfox.com, 1 foxbnc.uk, 1 foxcav.es, 1 -foxcityflix.com, 1 foxcloud.tk, 1 foxcon.tk, 1 foxdeli.com, 0 @@ -58403,6 +58111,7 @@ foxtrotfm.tk, 1 foxus.lt, 1 foxy-it.com.ua, 1 +foxyav.com, 1 foxycredit.com, 1 foxygf.com, 1 foxytubes.com, 1 @@ -58547,6 +58256,7 @@ framer.studio, 1 framer.website, 1 framerjs.com, 1 +framerusercontent.com, 1 framesdirect.com, 1 framesi.cz, 1 framindmap.org, 1 @@ -58609,8 +58319,6 @@ francoexpeditionperu.com, 1 francofunghi.tk, 1 francois-occasions.be, 1 -francoiscarrier.com, 1 -francoise-janssens.be, 1 francoislaude.fr, 1 francoislepage.com, 0 franconia.space, 1 @@ -58638,14 +58346,12 @@ frankelod.com, 1 frankenfresh.de, 1 frankenlehrmittel.de, 1 -frankenpost.com, 1 frankenweb.tk, 1 frankeschenfelder.de, 0 frankeurope.com, 1 frankferrari.tk, 1 frankfu.ltd, 0 frankfurter-kaffeeroesterei.de, 1 -frankfurtergirl.net, 1 frankfurtpass.de, 1 frankhaarlem.tk, 1 frankieakam.xyz, 1 @@ -58682,7 +58388,6 @@ frankviola.me, 1 frankviola.net, 1 frankviola.org, 1 -frankwei.xyz, 0 frankyan.com, 1 frankychen.net, 1 franmerino.tk, 1 @@ -58723,7 +58428,6 @@ fraserandneave.sg, 1 fraserengineco.com, 1 frasesconemocion.com, 1 -frasesdodia.com, 1 frasesparaface.com.br, 1 frasestop.com, 1 frasestop.com.br, 1 @@ -58765,6 +58469,7 @@ frc.us.com, 1 frccsgo.tk, 1 frcdr.org, 1 +frcshubert.com, 1 frdl.ch, 1 freak-show.tk, 1 freak-team.tk, 1 @@ -58811,8 +58516,6 @@ freddyvasquez.com, 1 freddyxvasquez.com, 1 fredericdesforges.com, 1 -fredericfrancois.com, 1 -fredericheim.fr, 1 frederickearlstein.com, 1 frederickmd.gov, 1 fredericksburg.com, 1 @@ -58829,7 +58532,7 @@ fredoniaaz.gov, 1 fredoniaiowa.gov, 1 fredoniawi.gov, 1 -fredperry.hu, 0 +fredperry.hu, 1 fredriksslaktforskning.se, 1 fredriksslekt.se, 1 freds.cloud, 1 @@ -58865,13 +58568,10 @@ free.sh, 1 free.tools, 1 free6to12yo.gq, 1 -freeadhdquiz.com, 1 freeaf.gq, 1 freeagent.tk, 1 -freeanxietyquiz.com, 1 freeartico.ga, 1 freeassange.net, 1 -freeattachmentstyletest.com, 1 freeauction.tk, 1 freeauroraoperations.tk, 1 freebacklinksforyoudirectory.tk, 1 @@ -58886,12 +58586,12 @@ freebookdomain.tk, 1 freebookslibrary.gq, 1 freeboson.org, 1 -freebpdtest.com, 1 freebsd.la, 1 freebsd.me, 1 freebsdbrasil.com.br, 1 freebus.org, 1 freecam2cam.site, 1 +freecashcalculator.com, 1 freechatlines.com, 1 freecloud.at, 1 freeclubpenguin.tk, 1 @@ -58906,7 +58606,6 @@ freedatingonline.ml, 1 freedback.com, 1 freedeals4u.ga, 1 -freedepressionquiz.com, 1 freedev.cz, 1 freedgb.com, 1 freedirectory.tk, 1 @@ -58917,7 +58616,6 @@ freedom35.org, 0 freedomains4all.tk, 1 freedomarchitects.co.uk, 1 -freedomcore.io, 1 freedomcourtreporting.com, 1 freedomcourtreporting.link, 1 freedomdiver.org, 1 @@ -58942,13 +58640,11 @@ freedomsanctuary.co.uk, 1 freedomsaukwi.gov, 1 freedomsvoice.org, 1 -freedomvote.nl, 1 freedomwill.tk, 1 freedomworldoutreach.com, 1 freeebooksblog.com, 1 freeenglishhelp.com, 1 freefallproductions.tk, 1 -freefemale.com, 1 freefilesync.org, 1 freefincal.com, 1 freeflightstoitaly.ngo, 1 @@ -58996,8 +58692,7 @@ freemor.ca, 1 freemotion.tk, 1 freemovieonline.ga, 1 -freenarcissisttest.com, 1 -freenato.com, 0 +freenato.com, 1 freenet.com.ng, 1 freenetflow.com, 1 freenetproject.org, 1 @@ -59047,10 +58742,8 @@ freerun.cn, 0 freesarah.com, 1 freesat.cn, 1 -freeschematest.com, 1 freeschool.cf, 1 freescorefast.com, 1 -freeseedsonline.com, 1 freesexvideo.pro, 1 freesexvidz.com, 1 freeshell.de, 1 @@ -59069,7 +58762,6 @@ freespanlift.com, 1 freesports.ml, 1 freestart.hu, 1 -freesteam.net, 1 freestylemartialarts.tk, 1 freesunday.tk, 1 freetagboards.tk, 1 @@ -59095,6 +58787,7 @@ freewarez.org, 1 freewave.dev, 1 freewave.online, 1 +freewayprojects.com, 1 freewaywarehouse.com, 1 freewebcamsex.me, 1 freewebh0st.tk, 1 @@ -59188,6 +58881,7 @@ fresh-info.tk, 1 fresh-networks.net, 1 fresh.co.il, 1 +freshauto.com.ua, 1 freshbean.club, 1 freshcar.bg, 1 freshcode.nl, 1 @@ -59212,7 +58906,6 @@ freshsexpics.com, 1 freshsnap.org.au, 1 freshtest.tk, 1 -freshwave.gr, 1 fresno.tk, 1 fresnocountyjobs.gov, 1 fresnofloodcontrol.gov, 1 @@ -59284,7 +58977,6 @@ friendships.org, 1 friendsnew.com, 1 friendsnomore.tk, 1 -friendsofmacdonald.nl, 1 friendsofmagnacarta.tk, 1 friendsofoldstthomas.org, 1 friendsofthehoneybee.co.uk, 1 @@ -59419,7 +59111,6 @@ frontierclimate.com, 1 frontiernav.net, 1 frontiernetworks.co.uk, 1 -frontiers.nl, 1 frontiersinflight.com, 0 frontigate.com, 1 frontline.cloud, 1 @@ -59539,10 +59230,8 @@ fsbtahlequah.com, 1 fsch2009.com, 1 fsck.cz, 1 -fsclnj.org, 1 fscott.de, 1 fsd.gov, 1 -fsdfsd.net, 1 fse-dominos.com, 1 fselka.is, 1 fseo.tk, 1 @@ -59577,6 +59266,7 @@ fstpn.cloud, 1 fstpn.de, 1 fstpn.es, 1 +fstpn.eu, 1 fstpn.info, 1 fstpn.io, 1 fstpn.it, 1 @@ -59589,7 +59279,6 @@ fstpn.shop, 1 fstpn.si, 1 fstpn.uk, 1 -fsub.de, 1 fsvoboda.cz, 1 ft0.sh, 1 ftang.de, 1 @@ -59720,7 +59409,6 @@ fukn.jp, 1 fuku-fashion.nl, 1 fukuda-systems.com, 1 -fukui-dc.com, 1 fukuko.biz, 1 fukuko.xyz, 1 fukumoto.tokyo, 1 @@ -59761,6 +59449,7 @@ fullmetalconsulting.tk, 1 fullmoondesignhouse.tk, 1 fullmoonhentai.tk, 1 +fullmouthdentalimiplants.com.au, 1 fullmouthdentalimplants.com.au, 1 fullpaisa.com, 1 fullsize.ml, 1 @@ -59774,6 +59463,7 @@ fully-covered.tk, 1 fully-hair.tk, 1 fullzest.com, 1 +fulmenx.com, 1 fultoncountyar.gov, 1 fultoncountyil.gov, 1 fultoncountyilelections.gov, 1 @@ -59824,10 +59514,10 @@ fundacjatreenity.pl, 1 fundaekhaya.co.za, 1 fundamentalrightsforum.eu, 1 -fundamentals.lu, 1 fundamentt.com, 1 fundayltd.com, 1 fundbiz.co.uk, 1 +fundbright.sg, 1 fundcapitalnow.com, 1 fundcompare.co.nz, 1 fundedschools.ml, 1 @@ -59855,6 +59545,7 @@ funeralshowers.ga, 1 funeralshowest.ga, 1 funerare-cazacu.com, 1 +funerare24.ro, 1 funfactorleeds.co.uk, 1 funfacts.cz, 1 funfm.tk, 1 @@ -60037,6 +59728,7 @@ furkot.it, 1 furkot.pl, 1 furkot.ro, 1 +furkot.tr, 1 furlan.co, 0 furlan.tk, 1 furlog.it, 1 @@ -60067,6 +59759,7 @@ furry.dk, 1 furry.gay, 1 furry.loan, 1 +furry.re, 1 furrycdn.org, 1 furrycon.top, 1 furrycraft.ga, 1 @@ -60123,13 +59816,11 @@ fusionauth.io, 1 fusionbd.net, 1 fusiondelave.com, 1 -fusionespeluqueria.es, 1 fusionfacades.co.uk, 0 fusionfactory.tk, 1 fusiongaming.de, 1 fusioninvoice.com, 1 fusionpatrol.com, 0 -fusionplatter.eu, 1 fusions.co.jp, 1 fusionstudios.tk, 1 fuso.net, 1 @@ -60146,7 +59837,6 @@ fut21gen.com, 1 futa.agency, 1 futa.wiki, 1 -futacockinside.me, 1 futalis.de, 1 futarara.ga, 1 futaritomo.tk, 1 @@ -60207,6 +59897,7 @@ futureproperty.in, 1 futures.io, 1 futuresafe.com, 0 +futuresharks.com, 1 futuresinmarketing.co.uk, 1 futuresonline.com, 0 futuresound.tk, 1 @@ -60272,6 +59963,7 @@ fwtewm.com, 1 fwtpic.com, 1 fwup.org, 1 +fwupd.org, 1 fx-rating.com, 1 fx-w.io, 1 fx.to, 1 @@ -60296,7 +59988,6 @@ fxopen.com, 1 fxopen.com.au, 1 fxopen.com.br, 1 -fxopen.ru, 1 fxp.at, 1 fxp.co.il, 1 fxpig-ib.com, 1 @@ -60338,7 +60029,6 @@ fyss.ga, 1 fysuite.com, 1 fytorio-pasxalis.gr, 1 -fyvel.io, 1 fyziotonka.sk, 1 fzoske.de, 1 fzx750.ru, 1 @@ -60347,7 +60037,6 @@ g-c-z.cc, 1 g-center.tk, 1 g-dart.com, 1 -g-dent-alps.jp, 1 g-electricity.ml, 1 g-fruit.gr, 1 g-lab.xyz, 1 @@ -60365,14 +60054,11 @@ g.wtf, 1 g00228.com, 1 g01.in.ua, 1 -g0158.com, 0 -g0881.com, 1 g0l4.top, 1 g0man.com, 1 g0nz0.me.uk, 1 g1313g.com, 1 g15ubezpieczenia.pl, 1 -g2-inc.com, 1 g20.org, 1 g2jp.uk, 1 g2pla.net, 1 @@ -60500,14 +60186,12 @@ gadgetmaniac.tk, 1 gadgets-cars.com.es, 1 gadgets-mall.com, 1 -gadgets4all.pt, 1 gadgetsandwearables.com, 1 gadgetsgigabytesandgoodwill.com, 1 gadgetshome.ml, 1 gadgetslab.tk, 1 gadingpromosindo.tk, 1 gadkiy-farm.tk, 1 -gadrian.com.br, 1 gadsdensoefl.gov, 1 gadse.games, 1 gadzilla.tk, 1 @@ -60515,8 +60199,8 @@ gaelico.tk, 1 gaestehaus-leipzig.de, 1 gaestehaus-monika.com, 0 +gaetan-moreau.fr, 1 gaetanosonline.com, 0 -gafachi.com, 1 gafan.cf, 1 gaff-rig.co.uk, 1 gaffel.co, 1 @@ -60533,7 +60217,6 @@ gagramore.cf, 1 gaiafood.co, 1 gaiamiacola.it, 1 -gaianutri.fr, 1 gaijin.network, 1 gailfellowsphotography.com, 1 gainbridge.io, 1 @@ -60589,6 +60272,7 @@ galaxus.fr, 1 galaxus.it, 1 galaxus.nl, 1 +galaxy-world.net, 1 galaxy.edu.pe, 1 galaxyfreedom.com, 1 galaxymedia.tk, 1 @@ -60656,7 +60340,6 @@ gallatinmt.gov, 1 gallbladder.sg, 1 galle.cz, 1 -galleonwaymedical.com.au, 1 galleriacontinua.com, 1 gallerify.eu, 1 gallery-easysolution.tk, 1 @@ -60707,7 +60390,6 @@ gambitnash.co.uk, 1 gambitnash.com, 1 gambitprint.com, 1 -gamblere.com, 1 gamblersgaming.eu, 1 gamblerspick.com, 1 gambling-business.club, 1 @@ -60723,7 +60405,6 @@ game-serverhosting.de, 1 game-slate.com, 1 game.es, 1 -game4less.com, 1 game818play.com, 1 game88play.com, 1 gameanalytics.com, 0 @@ -60752,6 +60433,7 @@ gamefarm.ru, 1 gamefear.ga, 1 gamefear.tk, 1 +gamefinity.net, 1 gameflip.com, 1 gamefoster.com, 1 gamefreek.tk, 1 @@ -60777,6 +60459,7 @@ gameloft.ga, 1 gamelok.ga, 1 gamemakers.tk, 1 +gamenetwork.pl, 1 gamenew.tk, 1 gameofbooks.de, 1 gameonespirit.tk, 1 @@ -60799,6 +60482,7 @@ gamereactor.asia, 1 gamereactor.cn, 1 gamereactor.de, 1 +gamereactor.dk, 1 gamereactor.es, 1 gamereactor.eu, 1 gamereactor.fi, 1 @@ -60841,6 +60525,7 @@ gamesgalaxy.it, 1 gamesgate.tk, 1 gameship.ga, 1 +gameshopenter.com, 1 gameshopsrbija.com, 1 gameshowchallenge.ie, 1 gamesmagic.tk, 1 @@ -60855,7 +60540,6 @@ gamestic.nl, 1 gamesunited.tk, 1 gameszone.tn, 1 -gametilt.com, 1 gametium.com, 1 gametium.es, 1 gametowndev.tk, 1 @@ -60911,11 +60595,11 @@ gamlub.com, 1 gamma-travel.fr, 1 gamma.fi, 1 -gammabeyond.com, 1 gammagroup.co, 1 gammaknife.com, 1 gammaphibeta.tk, 1 gammonvillage.com, 1 +gamoldes.pt, 1 gamrenovation.ca, 1 gamtosgidas.lt, 1 gan.wtf, 1 @@ -60942,8 +60626,7 @@ ganneff.de, 0 gannett-cdn.com, 1 gannettinnovation.com, 1 -ganoderma4in1coffee.com, 1 -ganodermacoffee.com, 1 +ganoderma4in1coffee.com, 0 ganodermatiendaonline.com, 1 gansevoorthotelgroup.com, 1 gant.ninja, 1 @@ -61006,7 +60689,6 @@ gardarika.tk, 1 garden-land.ga, 1 garden-life.org, 1 -garden-view.com, 1 garden4less.co.uk, 1 gardenandhens.com, 1 gardenblog.tk, 1 @@ -61059,6 +60741,7 @@ garnuchbau.de, 1 garo.email, 1 garo.ninja, 1 +garo.services, 1 garochristian.us, 1 garona.ru, 1 garotadeestilo.tk, 1 @@ -61118,7 +60801,7 @@ gasb87leaseaccounting.com, 1 gasbarkenora.com, 1 gasenergy.kz, 1 -gasesdelaguajira.com, 1 +gasestepiesa.ro, 1 gasfitermaipu.cl, 1 gasherde.tk, 1 gashtline.ir, 1 @@ -61143,7 +60826,6 @@ gassyukumenkyoguide.com, 1 gastarbajter.tk, 1 gastechmexico.net, 1 -gastepress.com, 1 gastfamilie.de, 1 gasthausbauernhof.ch, 1 gasthaustalacher.ch, 1 @@ -61175,7 +60857,6 @@ gatehub.net, 1 gatekiller.co.uk, 1 gatemaster.ga, 1 -gatemotorskyalami.co.za, 1 gatemoves.com, 1 gatenz-panel.com, 0 gatesfoundation.org, 1 @@ -61198,7 +60879,6 @@ gathu.co.ke, 1 gatilagata.com.br, 1 gatilhoarmas.com.br, 1 -gatitlesearch.com, 1 gatlinheatandair.com, 1 gatlink.tk, 1 gatomix.net, 1 @@ -61219,7 +60899,6 @@ gautierpascal.fr, 1 gauting.de, 1 gav.sh, 1 -gavarny.be, 1 gavaskee.com, 1 gaveme.top, 1 gavilanz.ddnsfree.com, 1 @@ -61233,7 +60912,6 @@ gavlix.se, 1 gaw.sh, 1 gawel.ch, 1 -gawinex.com, 1 gay-jays.com, 1 gay.amsterdam, 1 gay.systems, 1 @@ -61241,7 +60919,6 @@ gayauthors.org, 1 gaycammers.com, 1 gaychatrooms.tk, 1 -gaycock4u.com, 1 gayfeedr.com, 1 gayfish.org, 1 gayfish.party, 1 @@ -61294,6 +60971,7 @@ gba.gob.ar, 1 gbatroid.com, 1 gbbb-berlin.com, 1 +gbchellammop.org, 1 gbcindustry.com, 1 gbcomm.tk, 1 gbcsummercamps.com, 1 @@ -61325,7 +61003,6 @@ gbronka.com, 1 gbrx.com, 0 gbs.com.ua, 1 -gbs.sa.com, 1 gbsapri.it, 1 gbsvelasco.com, 1 gbthome.com, 1 @@ -61345,6 +61022,7 @@ gcgroup.io, 1 gchp.ie, 0 gchq.wtf, 1 +gcja22.me, 1 gclegal.com.au, 0 gcmrc.gov, 1 gcmsnotesrequest.ca, 1 @@ -61400,6 +61078,7 @@ gdufe.top, 1 gdwtowbars.com, 1 gdz.tv, 1 +gdz4you.com, 1 ge1.me, 0 ge3k.net, 1 gea-waldviertler.at, 1 @@ -61409,7 +61088,6 @@ geamurioglinzi.ro, 1 gear-acquisition-syndrome.community, 1 gear4music.ch, 1 -gear4music.com, 1 gear4music.dk, 1 gear4music.es, 1 gear4music.fr, 1 @@ -61425,6 +61103,8 @@ gearnews.tk, 1 gearset.com, 1 gearsupply.com, 0 +geartechsol.com, 1 +geartp.com, 1 geaskb.nl, 0 geasrl.com.ar, 1 geass.xyz, 1 @@ -61474,7 +61154,6 @@ geekariom.com, 0 geekashell.tk, 1 geekbundle.org, 1 -geekcircuit.com, 1 geekcore.tk, 1 geekcq.com, 1 geekcreations.co.uk, 1 @@ -61506,6 +61185,7 @@ geekstreet.fr, 1 geekstuff.tk, 1 geektarven.com, 1 +geektechinsider.com, 1 geektechsolutions.com.au, 1 geektechypro.tk, 1 geektopia.es, 1 @@ -61523,13 +61203,14 @@ geekzuprepairs.com, 1 geelaeden.de, 1 geele.co.th, 1 +geelongpersonaltrainers.com, 1 +geelongpersonaltrainres.com, 1 geely.ci, 1 geelyuzbekistan.uz, 1 geemprestimos.com, 1 geen.gp, 1 geenspam.net, 1 geerdsen.net, 1 -geertjanvanhest.nl, 1 geertswei.nl, 1 gees.ch, 1 geesthof.de, 1 @@ -61594,7 +61275,7 @@ geli-graphics.com, 1 gelijk.cf, 1 gelisimakademi.com.tr, 1 -gelkanet.hu, 1 +gelkanet.hu, 0 gellenhaza.hu, 1 gellenhazikozoshivatal.hu, 1 gellis12.ca, 1 @@ -61620,6 +61301,7 @@ gemailt.net, 1 gemaskeerd.nl, 1 gematik.de, 1 +gemawardian.com, 1 gemax-online.de, 1 gembet99.com, 1 gemdirt.com, 1 @@ -61646,12 +61328,14 @@ gemooi.com, 1 gemour.pl, 1 gemquery.com, 1 +gemsen.com, 1 gemstones.com, 1 gemwerx.com, 1 gen.cn.eu.org, 1 gen.net.eu.org, 1 gen3marketing.com, 1 genaropretill.com, 1 +genaya.com, 1 genbars.jp, 1 genbrugge.tk, 1 genchev.io, 0 @@ -61683,7 +61367,6 @@ genegraph.eu, 1 genehightower.com, 1 genehome.com.au, 1 -genejournal.blog, 1 genelhaberler.tk, 1 genemesservwparts.com, 1 genemon.at, 1 @@ -61701,7 +61384,6 @@ general-directorate-of-administration.gov.lb, 1 general-insurance.tk, 1 generalarcade.com, 1 -generalassemb.ly, 1 generalcustomshop.com.br, 1 generali-investments-portal.cz, 1 generali-worldwide.com, 1 @@ -61774,7 +61456,6 @@ genestho.lt, 1 genetargetsolutions.com.au, 1 genetco.live, 1 -geneticrescue.science, 1 genetidyne.com, 1 geneuse.ai, 1 geneva-marketing.com, 1 @@ -61797,7 +61478,7 @@ genii-lab.de, 1 geniodonna.it, 1 geniofinanciero.org, 1 -geniosport.com, 1 +geniosport.com, 0 genioyfigura.tk, 1 geniusclan.tk, 1 geniuses.gq, 1 @@ -61842,7 +61523,6 @@ genoveve.de, 1 genpathdiagnostics.com, 1 gensenwedding.jp, 1 -genshiken-itb.org, 0 gensi.pro, 1 gensicke.de, 1 gensleiten.de, 1 @@ -61851,7 +61531,8 @@ gensokyo.re, 1 gensolarenergy.com, 1 gensonline.eu, 1 -gentagroup.com, 1 +genspector.com, 1 +gentagroup.com, 0 gentapps.com, 1 gentcdn.com, 1 gentcityofmusic.be, 1 @@ -61868,17 +61549,13 @@ gentleearcare.co.uk, 1 gentleentuit.be, 1 gentlent.blog, 1 -gentlent.co, 1 gentlent.com, 1 gentlent.eu, 1 gentlent.group, 1 gentlent.help, 1 -gentlent.info, 1 gentlent.io, 1 -gentlent.org, 1 gentlent.tech, 1 gentlent.uk, 1 -gentlent.us, 1 gentlent.xyz, 1 gentlentgroup.com, 1 gentlentssl.com, 1 @@ -61904,6 +61581,7 @@ geo-industrie.fr, 1 geo-portale.it, 1 geo-television.de, 1 +geo2concept.com, 1 geoapps.nl, 0 geoarchive.tk, 1 geoautopilot.com, 1 @@ -62073,11 +61751,11 @@ geraintwhite.co.uk, 1 gerald-zojer.com, 1 geraldpeters.com, 1 +geraldtonaircharter.com.au, 1 geralyntaylor.com, 1 geranium.dk, 1 gerard-klooster.net, 1 gerardforcada.com, 1 -gerardgg.com, 1 gerardinden.nl, 1 gerardmccabe.com.au, 1 gerardozamudio.mx, 1 @@ -62106,7 +61784,6 @@ germain.cc, 1 germainedecapuccini.com.kw, 1 germaintechnologies.com, 1 -germanaudiobooks.com, 1 germanclarkoh.gov, 1 germancoding.com, 1 germancoding.de, 1 @@ -62119,7 +61796,6 @@ germanophobia.tk, 1 germanrhymes.de, 1 germanrojas.ga, 1 -germantaste.com, 1 germantolobis.lt, 1 germantownpolicewi.gov, 1 germantownwi.gov, 1 @@ -62270,7 +61946,6 @@ geteducation.tk, 1 geteduroam.no, 1 getelectronics.tk, 1 -getelpis.co, 1 getemsal.com, 1 getescrowest.ga, 1 getevidenceers.ga, 1 @@ -62312,7 +61987,7 @@ getitpeople.com, 1 getjerry.com, 1 getjms.com, 1 -getkeyport.com, 1 +getken.ai, 1 getkeyup.com, 1 getkleend.com, 1 getlaminas.org, 1 @@ -62340,7 +62015,6 @@ getmytranscript.org, 1 getmywellness.com, 1 getnamed.ai, 1 -getnegotiated.com, 1 getnetset.com, 1 getnetworkvisibility.com, 1 getnew.tk, 1 @@ -62358,13 +62032,13 @@ getpaidtodev.com, 1 getpavedmidmichigan.com, 1 getpayever.com, 1 -getpeachy.org, 1 getpet.lt, 1 getplus.com.au, 1 getpool.co.il, 1 getpro.plumbing, 1 getprohealth.com, 1 getpromo.cf, 1 +getpsolid.com, 1 getpublii.com, 1 getraenke-hoffmann.de, 1 getready2dance.tk, 1 @@ -62417,6 +62091,7 @@ getthinkworksafe.co.uk, 1 getticker.com, 1 gettingtvers.ga, 1 +gettoplisted.com, 1 gettopquality.com, 1 gettrack.us, 1 getts.ro, 1 @@ -62430,7 +62105,6 @@ getvendorhub.com, 1 getwashed.net, 1 getwatchy.com, 1 -getwebsitecost.com, 1 getwemap.com, 1 getwork.tk, 1 getworkshopmanuals.com, 1 @@ -62541,7 +62215,6 @@ ggmmontascale.it, 1 ggops.gr, 1 ggpoker.com, 1 -ggpuketi.com, 1 ggretrobox.com, 1 ggrks.lol, 1 ggs-marschallstrasse.de, 1 @@ -62650,7 +62323,7 @@ giannakis.tk, 1 giannopoulos-realestate.gr, 1 giannopoulos.edu.gr, 1 -gianproperties.com, 1 +gianproperties.com, 0 giant-panda.com, 1 giant-tortoise.com, 1 giantmagellan.org, 1 @@ -62689,7 +62362,6 @@ gidapgs.cf, 1 gidaveri.com, 1 gidc.gd, 1 -gidding.net, 1 giddyaunt.net, 1 giddyup.to, 1 gidive.com, 1 @@ -62763,7 +62435,6 @@ gigantism.com, 1 gigantron.com, 1 gigaone.pl, 1 -gigapc.be, 1 gigarange.org, 1 gigarange.xyz, 1 gigasoft.tk, 1 @@ -62793,7 +62464,7 @@ gil.gg, 1 gilandrad.tk, 1 gilangcp.com, 1 -gilbert-schmalriede.de, 1 +gilbert-schmalriede.de, 0 gilbertosimoni.tk, 1 gilbertsvilleny.gov, 1 gildan.com, 1 @@ -62911,11 +62582,7 @@ girl.science, 1 girlan.net, 1 girlbaito.jp, 1 -girlboss.systems, 1 -girlcock.gay, 1 -girlcock.systems, 1 girldevelopit.com, 1 -girldick.ceo, 1 girldick.gay, 1 girlfriend.gq, 1 girlgrind.com, 1 @@ -62939,12 +62606,10 @@ girlsnightin.org.au, 1 girlsnitein.com.au, 1 girlz.jp, 1 -giro.hu, 1 girolabs.com, 1 gironde-tourisme.fr, 1 giroskuter.ga, 1 girsedesign.de, 1 -girskii.com, 1 girtby.net, 1 gis.ee, 1 gisac.org, 1 @@ -62978,7 +62643,6 @@ gite-ambleteuse.tk, 1 gite-le-pascaud.fr, 1 gitecolombedesbois.com, 1 -gitelermitage.be, 1 gites-melaual.fr, 1 gitgenius.co, 1 github.blog, 1 @@ -63001,17 +62665,14 @@ gittr.ch, 1 gitvibe.com, 1 giuem.com, 1 -giuliano.design, 1 giuliawylde.com, 1 giulliamodas.com.br, 1 giunchi.net, 1 giuseppebuccheri.it, 0 -giuseppemacario.men, 1 giuseppepreviti.it, 1 giusyesabatino.it, 1 givaudan.com, 1 give.net, 1 -give2charity.co, 1 givealign.com, 1 giveasquare.com, 1 giveasquare.net, 1 @@ -63073,7 +62734,6 @@ gju.edu.jo, 1 gjung.com, 1 gk-it.ru, 1 -gkcmp.com.br, 1 gkconsultancy.tk, 1 gkdforum.eu.org, 1 gkdworld.com, 1 @@ -63114,6 +62774,7 @@ glaeser-it.de, 1 glaesle.cloud, 1 glahcks.com, 1 +glaidx.com, 1 glama.ai, 1 glamadelaide.com.au, 1 glami.com.tr, 1 @@ -63131,6 +62792,7 @@ glamtoptiers.co.za, 1 glamur-video.com, 1 glanzodergarnicht.com, 0 +glas-haas.de, 1 glas-systeme.eu, 1 glascentro-gmbh.de, 1 glascentro.de, 1 @@ -63158,7 +62820,6 @@ glassemployees.com, 1 glassfoxowo.com, 1 glasshouse.com.tr, 1 -glassicasino.in, 1 glasslikes.com, 1 glassnebula.com, 1 glassner.org, 1 @@ -63239,7 +62900,6 @@ glidingshop.de, 1 glidingshop.eu, 1 gliihc.net, 1 -glimhome.com, 1 glimpses.tk, 1 glini.net, 1 glit.sh, 1 @@ -63249,7 +62909,6 @@ glitchonline.com, 1 glitchtip.com, 1 glitchworks.ch, 1 -glitterblast.uk, 1 glitteringmariah.tk, 1 glitzerstuecke.de, 1 gliwka.eu, 1 @@ -63459,7 +63118,6 @@ gloryofloveband.tk, 1 gloryofmusic.tk, 1 gloryrise.tk, 1 -glorysite.com, 1 glorystar.ml, 1 glosiko.cn, 1 glosiko.com.cn, 1 @@ -63481,7 +63139,6 @@ glovitech.co.kr, 1 glowcdn.com, 1 glowfic.com, 1 -glowis.com.tr, 1 glowup-peptides.com, 1 glp1thailand.com, 1 glp1versus.com, 1 @@ -63489,6 +63146,7 @@ glreit.com, 1 glsauto.com, 1 glue.tk, 1 +glue42.ai, 1 gluechapter.ga, 1 glueck-im-norden.de, 1 gluecksgriff-taschen.de, 1 @@ -63526,10 +63184,11 @@ gmaetk.com, 1 gmail, 1 gmail.com, 0 +gmail.wf, 1 +gmail.yt, 1 gman.bot, 1 gmanlabs.com, 1 gmasil.de, 1 -gmatic.info, 1 gmavsg.org, 1 gmbh-kiekin.de, 1 gmc-mca.org, 1 @@ -63570,14 +63229,6 @@ gmv.com, 1 gmw-hannover.de, 1 gmw-ingenieurbuero.de, 1 -gmx.at, 1 -gmx.ch, 1 -gmx.co.uk, 1 -gmx.com, 1 -gmx.de, 1 -gmx.es, 1 -gmx.fr, 1 -gmx.net, 1 gnacsports.com, 1 gnagismen.tk, 1 gnaptracker.tk, 1 @@ -63626,7 +63277,6 @@ go-down.tk, 1 go-embedded.de, 1 go-go.link, 1 -go-hijra.com, 1 go-kuwait.tk, 1 go-life.com.tw, 1 go-mail.me, 1 @@ -63648,7 +63298,6 @@ go4it.ro, 0 go4rest.de, 1 go5.io, 1 -go6.si, 1 go6lab.si, 0 go889w.com, 1 goabase.com, 1 @@ -63691,7 +63340,6 @@ gochinesename.com, 1 gociicii.com, 1 gocivilairpatrol.com, 1 -gock.systems, 1 gockelsee.de, 1 gockhuatsuky.tk, 1 goclark.at, 1 @@ -63708,6 +63356,7 @@ godalivetpalandet.tk, 1 godall.tk, 1 godan.tech, 1 +godanriver.com, 1 godark.uk, 1 godating.tk, 1 godaxen.tv, 1 @@ -63730,7 +63379,6 @@ godmusicapp.com, 1 godnathistorie.dk, 1 godns.ru, 1 -godofporn.com, 1 godollo.hu, 1 godoter.cn, 1 godoza.tk, 1 @@ -63775,13 +63423,14 @@ goetec.ac.uk, 1 goetemp.de, 1 goethe-gymnasium-stolberg.de, 1 -goethe-quartier-heidelberg.de, 1 +goethe-quartier-heidelberg.de, 0 goetheschule-giessen.de, 1 goetic.space, 1 goettinger-katzenschutz.de, 1 goetzinger-web.de, 1 goexam.net, 0 gofabcnc.com, 1 +gofeas.co.uk, 1 goffertpraat.nl, 1 gofigure.fr, 0 gofile.link, 1 @@ -63830,7 +63479,6 @@ goingbeyondsunday.com, 1 goingblack.org, 1 goinggreenshow.gq, 1 -goingnz.com, 1 goingreen.com.au, 1 goirlanda.es, 1 goizalde.tk, 1 @@ -63856,7 +63504,6 @@ gold-fm.ml, 1 gold-mosaic.ru, 1 gold.my, 1 -gold99999.com, 1 goldankauf1875.at, 1 goldband.tk, 1 goldbar.com.hk, 1 @@ -63886,7 +63533,6 @@ goldeneggs.club, 1 goldeneyesantafe.com, 1 goldenfashion.co.za, 1 -goldenfawz.com, 1 goldengatexpress.org, 1 goldenglow.fans, 1 goldenhillsoftware.com, 1 @@ -63970,6 +63616,7 @@ golfbeautyers.ga, 1 golfbeautyest.ga, 1 golfbettingsystem.co.uk, 1 +golfbirdie.xyz, 1 golfbroadcasterers.ga, 1 golfbroadcasterest.ga, 1 golfbyzipers.ga, 1 @@ -63990,9 +63637,8 @@ golfinginjuriesers.ga, 1 golfkulur.is, 1 golfplus.fr, 1 -golfrange-ffm.de, 1 +golfrange-ffm.de, 0 golfscape.com, 1 -golfshirtsjohannesburg.co.za, 1 golfshirtwholesalejohannesburg.co.za, 1 golftournamentgifts.tk, 1 golftradr.com, 1 @@ -64001,8 +63647,9 @@ golikes.ml, 1 golind.com, 1 golink.co, 0 +golinketchum.com, 1 golkowreporters.com, 1 -golnet.hu, 0 +golnet.hu, 1 goloa.fr, 1 goloaninsurance.tk, 1 goloborodko.net, 1 @@ -64062,11 +63709,13 @@ gonoodle.com, 1 gonortheast.co.uk, 1 gontagro.com.ua, 1 +gontter.com, 1 gonulyoluturizm.com.tr, 1 gonumber.ga, 1 gonvarri.com, 1 gonx.dk, 0 gonz0.com.ar, 1 +gonzales.click, 1 gonzalesca.gov, 1 goo.gl, 1 goo4it.nl, 1 @@ -64080,13 +63729,12 @@ goodant.top, 1 gooday.life, 1 goodbalancefeature.com, 1 -goodbeast.com, 1 +goodbeast.com, 0 goodbriar.com, 1 goodchoiceflowers.com, 1 gooddatingsites.ml, 1 gooddayatwork.co.uk, 1 gooddomain.co, 1 -gooddomain.com, 1 gooddomainna.me, 1 goodearth.com.tw, 1 goodees.com, 1 @@ -64140,7 +63788,6 @@ goodtotell.nl, 1 goodtrader.tk, 1 goodtrip.kr, 1 -goodviolin.com, 1 goodway.tv, 1 goodwillbusiness.org, 1 goodwillindy.org, 1 @@ -64148,7 +63795,6 @@ goodwillnne.org, 1 goodwin43.ru, 0 goodybalt.ru, 1 -goodydoggy.com, 1 goodyearsotn.co.uk, 1 goofy.gr, 1 google, 1 @@ -64178,7 +63824,6 @@ goonersworld.co.uk, 1 gooodnews.ga, 1 goooo.info, 1 -gooseberries.ch, 0 goosecreeksc.gov, 1 goosementor.com, 1 goosepondfarm609.com, 1 @@ -64189,6 +63834,7 @@ gootleeg.com, 1 gootleeg.eu, 1 gooty.ru, 1 +gopa.cl, 1 gopacificcity.com, 1 gopass-dev.com, 1 gopass.health, 1 @@ -64235,6 +63881,8 @@ gordowebdesign.com, 1 gordvorets.tk, 1 gordyf.com, 1 +gorebayairport.ca, 1 +gorebayairport.com, 1 gorebrothers.com, 1 goreperry.com, 1 gorepriest.tk, 1 @@ -64280,14 +63928,12 @@ gosarhiv.tk, 1 goscg.com, 1 goseafari.com, 1 -gosekku.com, 1 gosemo.com, 1 gosfordfoundationtrust.org.au, 1 goshawkdb.io, 1 goshiba.pl, 1 goshin-group.co.jp, 1 goshop.pl, 1 -goshopnow.co.za, 1 goshrink.ca, 1 gosifa.com, 1 gosifan.com, 0 @@ -64336,6 +63982,7 @@ gotene.se, 1 gotepisodes.tk, 1 gotforumers.ga, 1 +gotgeeks.nl, 1 gotgenes.com, 0 gothailand.cf, 1 gothamcateringnyc.com, 1 @@ -64439,13 +64086,13 @@ govsales.gov, 1 govsentinel.com.br, 1 govtjobs.blog, 1 -govtjobweb.com, 1 govtrack.us, 1 govvacationrewards.com, 1 govype.com, 1 gow220.ru, 1 gowalk.de, 1 gowancommunications.com, 1 +gowanusbooks.com, 1 gowatermarkdesign.com, 1 gowe.wang, 0 gowerstkindergarten.com.au, 1 @@ -64496,7 +64143,6 @@ gpony.fr, 1 gppdash.co.za, 1 gpremium.cl, 1 -gpridezone.com, 1 gps-coordinaten.nl, 1 gps-fleettracking.ga, 1 gps-track-sys.info, 1 @@ -64642,7 +64288,6 @@ gramati.com.br, 1 grameenbazar.pl, 1 grameenponno.com, 1 -gramercyarts.com, 1 gramilano.com, 1 gramlee.com, 1 grammar.hu, 1 @@ -64651,7 +64296,6 @@ grammaroftheshot.com, 1 grammofono.gr, 1 grampage.ru, 1 -gramtarang.org.in, 1 gran-hermano.tk, 1 granagroup.eu, 1 granalacant.tk, 1 @@ -64670,6 +64314,7 @@ grand-knighki.gq, 1 grand-roissy-tourisme.com, 1 grand-sity.ru, 1 +grandair.blog, 1 grandalfa.co.nz, 1 grandblanctwpmi.gov, 1 grandboats.com, 1 @@ -64687,11 +64332,13 @@ grandfallscamp.com, 1 grandfieldok.gov, 1 grandfootball.tk, 1 +grandgameawards.com, 1 grandhomemx.com, 1 grandhotelbrno.cz, 1 grandhotelswanage.co.uk, 1 grandi-books.gq, 1 grandiegames.com, 1 +grandirensilence.com, 1 grandisco.tk, 1 grandiscontionline.com, 1 grandislandne.gov, 1 @@ -64728,6 +64375,7 @@ granishe.com, 1 granit-capital.ga, 1 granitbank.ro, 1 +graniteandstonegallery.com.au, 1 granitebaydermatologyandlaser.com, 1 graniteclub.com, 1 graniteescrow.com, 1 @@ -64761,6 +64409,7 @@ grantmagazine.com, 1 grantmorrison.net, 1 grantpeier.com, 1 +grantseeker.io, 1 grantsmasters.com, 1 grantsolutions.gov, 1 granttwpstclairmi.gov, 1 @@ -64790,7 +64439,6 @@ graphicinfo.com, 1 graphicnab.com, 1 graphicps.com, 1 -graphicsdeal.com, 1 graphicspace.tk, 1 graphicz.ml, 1 graphimode.com, 1 @@ -64851,7 +64499,6 @@ gravicgroup.com, 1 gravilink.com, 1 gravirovshik.ru, 1 -gravitascreative.net, 1 gravitational.co, 1 gravitational.com, 1 gravitational.io, 1 @@ -64860,7 +64507,7 @@ graviton.work, 1 gravity-inc.net, 1 gravitygolf.xyz, 1 -gravityinvestments.com, 1 +gravityinvestments.com, 0 gravitylab.fr, 0 gravityledger.com, 1 gravitynode.ovh, 1 @@ -64871,7 +64518,6 @@ gravityresearchgroup.tk, 1 gravytrain.tk, 1 gray.network, 1 -grayarrow.com, 1 graycat.ml, 1 graydaze.com, 0 grayduck.mn, 1 @@ -64880,7 +64526,6 @@ graymatter.ch, 1 graymatter.news, 1 grayowlworks.com, 1 -grayrectangle.com, 1 graysantiques.com, 1 grayslakeadvisors.com, 1 grayson.edu, 1 @@ -64909,6 +64554,7 @@ greataustralianrun.com.au, 1 greatbarrierisland.nz, 1 greatbarriers.com.au, 1 +greatcbdshop.com, 1 greatdane.com, 1 greatdanemowers.com, 1 greatdayinamerica.com, 1 @@ -64954,7 +64600,6 @@ greatwalluae.com, 1 greatwaterfilters.com.au, 0 greatwebdesign.uk, 1 -greauxx.com, 1 grechutaszkolenia.pl, 1 grecia.it, 1 greciahora.com, 1 @@ -65033,7 +64678,6 @@ greenetwpclintonpa.gov, 1 greenews.ga, 1 greenfever.pl, 1 -greenfielddynamics.com, 1 greenfieldlaxwi.gov, 1 greenfieldwi.gov, 1 greenforum.tk, 1 @@ -65062,7 +64706,6 @@ greenline.financial, 1 greenline.hr, 1 greenliquidsystem.com, 1 -greenmaquinas.com.br, 1 greenmesg.org, 1 greenmind.tk, 1 greenmoon.tk, 1 @@ -65078,7 +64721,7 @@ greenplanet.tk, 1 greenplanetgardening.eu, 1 greenplanetgrass.com.au, 1 -greenplus.com.es, 1 +greenradi.us, 1 greenridgemo.gov, 1 greenroach.ru, 1 greenroom.tk, 1 @@ -65139,7 +64782,6 @@ greer.ru, 1 greetingcdsers.ga, 1 greetingcdsest.ga, 1 -greg-gaar.com, 1 greg.red, 1 gregaftayev.com, 1 gregans.ie, 1 @@ -65154,7 +64796,6 @@ gregmarziomedia.com, 1 gregmc.ru, 1 gregmckeown.com, 0 -gregmilton.com, 1 gregmote.com, 1 grego.pt, 1 gregoirow.be, 1 @@ -65237,7 +64878,6 @@ gricargo.com, 1 grid.is, 1 gridale.org, 1 -gridcatalyst.org, 1 gridcodestudio.com, 1 gridcog.be, 1 gridcog.com, 1 @@ -65269,6 +64909,7 @@ grifomarchetti.com, 1 grifone.tk, 1 griftersnet.com, 1 +grig-teo.space, 1 grigo.ga, 1 grigo.tk, 1 grigorev.tk, 1 @@ -65288,9 +64929,7 @@ grimorium.tk, 1 grimsbydns.com, 1 grimsbyhosting.co.uk, 1 -grimsbymoneyman.com, 1 grimsbysoilandmulch.ca, 1 -grimsteadgame.com, 1 grindau.com, 1 grinday.tk, 1 grindgore.tk, 1 @@ -65315,7 +64954,6 @@ griyadenature.tk, 1 griyo.online, 1 grizz.gdn, 1 -grizzenergygum.com, 1 grizzlys.tk, 1 grnbank.com, 1 groaccess.com, 1 @@ -65323,6 +64961,7 @@ grocerytv.com, 1 grochow.cloudns.org, 1 grockradio.ga, 1 +grocock.me.uk, 1 grocy.info, 1 groda.art, 1 groeigenoten.online, 1 @@ -65346,6 +64985,7 @@ gromasikov.tk, 1 gromman.com, 1 gromovphotography.tk, 1 +grondius.com, 1 groningerkustvaart.tk, 1 gronngronn.no, 1 groomlake.tk, 1 @@ -65395,7 +65035,6 @@ groundspan.com, 1 groundthumpinmotors.com, 1 group14.technology, 1 -group4layers.net, 1 groupama.hu, 1 groupama.sk, 1 groupamadirekt.hu, 1 @@ -65414,6 +65053,7 @@ groupeaccedia.org, 1 groupecjl.com, 1 groupeconseilera.com, 1 +groupeconseilia.fr, 1 groupeconseilringuet.ca, 1 groupeconseilringuet.com, 1 groupegus.com, 1 @@ -65500,8 +65140,8 @@ gruasllanos.cl, 1 grubiradovi.rs, 1 gruble.de, 1 -gruca.com.br, 1 grucha-sound.pl, 1 +grudcomullan.com, 1 grueberstein.de, 1 gruelang.org, 1 gruenderlehrstuhl.de, 1 @@ -65511,7 +65151,6 @@ gruener-salon-bochum.de, 1 gruenerpass.co.at, 1 gruenes-wp.de, 1 -gruenhagenlaw.com, 1 gruenkraft.co.at, 1 gruenland-online.de, 1 gruenprint.de, 1 @@ -65555,7 +65194,6 @@ grupoauxteclic.com, 1 grupoavante.com.mx, 1 grupobit.net, 1 -grupocnj.com.br, 1 grupodcasa.tk, 1 grupodecoroinhaspnsa.tk, 1 grupodepasajeros.tk, 1 @@ -65600,7 +65238,6 @@ gruppakolibri.ml, 1 gruppe-casablanca.tk, 1 gruppe.schwarz, 1 -grupporigoni.com, 1 grupposanmarco.eu, 1 grupposiciliaviola.tk, 1 gruppotac.com, 1 @@ -65620,6 +65257,7 @@ gryffin.ga, 1 gryffin.ml, 1 gryffin.tk, 1 +grypas-ai.com, 1 gryphzia.cf, 1 gryte.tk, 1 gs-pflege.de, 1 @@ -65654,7 +65292,6 @@ gslb.co, 1 gsm-info.tk, 1 gsmbrick.com, 1 -gsmface.hu, 1 gsmkungen.com, 1 gsmmedia.tk, 1 gsmsale.nl, 1 @@ -65669,7 +65306,6 @@ gspos.website, 1 gsrank.org, 1 gsrc.io, 1 -gstackrankers.com, 1 gstcalc.nz, 1 gstehlik.com, 1 gstrans.bg, 1 @@ -65709,7 +65345,6 @@ gtin.pro, 1 gtin1.com, 1 gtk-tim.ru, 1 -gtlaun.ch, 0 gtld.fyi, 1 gtm-server.com, 1 gtm.com.pl, 1 @@ -65758,6 +65393,7 @@ guamcourts.gov, 1 guanggaonet.com, 1 guanggunyyw.com, 1 +guanggyyw.com, 1 guangjiangk.com, 1 guangyy.com, 1 guanquan.com, 1 @@ -65776,8 +65412,6 @@ guardedbox.com, 1 guardedbox.es, 1 guarderiajackson.tk, 1 -guardfos.com, 1 -guardfos.pl, 1 guardiabermellon.tk, 1 guardian-codex.tk, 1 guardian-heliotrope.tk, 1 @@ -65785,7 +65419,6 @@ guardian360.nl, 1 guardianangelportraits.com, 1 guardianapp.com, 1 -guardiancappartners.com, 1 guardiandigital.com, 1 guardianerm.net, 1 guardianexercise.com.au, 1 @@ -65821,6 +65454,7 @@ gudrunsleiter.it, 1 gueckgueck.tk, 1 guegan.de, 1 +gueite.com, 1 guejarsierra.es, 1 guejarsierra.tk, 1 guell.email, 1 @@ -65878,7 +65512,6 @@ guiadoeco.com.br, 1 guiaextra.com, 1 guiahotelera.com.co, 1 -guialegal.co, 1 guiaminhasaude.net, 1 guiaprofesional.co, 1 guiarestobar.com.co, 1 @@ -65963,7 +65596,6 @@ guineapig101.com, 1 guineapigmustach.es, 1 guineecheck.org, 1 -guinel-johnson.fr, 0 guinguetteclovis.com, 1 guise.tk, 1 guitar-guitar.ru, 1 @@ -65980,7 +65612,6 @@ guj.nic.in, 1 gujarat.tk, 1 guki.me, 1 -gula.com.bo, 1 gulabovski.ga, 1 gulcinulutuna.com, 1 guldhaug.org, 1 @@ -65990,7 +65621,6 @@ gulfbreezefence.com, 1 gulfcoastfirm.com, 1 gulfcoastwaterauthoritytx.gov, 1 -gulfdinar.com, 1 gulffamilyclinic.com, 1 gulfstream.ru, 0 gulfvestors.com, 1 @@ -66056,7 +65686,6 @@ guralptechnic.com, 1 gurbetilan.com, 1 guri.ml, 1 -gurkantuna.com, 1 gurl.eu.org, 1 gurleyal.gov, 1 gurmat.info, 1 @@ -66118,6 +65747,7 @@ gutendag.ga, 1 gutetexte.tk, 1 guthabenkarten-billiger.de, 1 +guthmann.estate, 1 gutieli.com, 1 gutierrezvidal.tk, 1 gutools.co.uk, 1 @@ -66131,8 +65761,7 @@ gutsyhr.com, 1 gutterbus.com, 1 guttercleaningcardiff.co.uk, 1 -gutterguardcharlotte.com, 0 -guttergurugeelong.com.au, 1 +guttergurugeelong.com.au, 0 gutteringservices.ie, 1 guttermaster.co.uk, 1 gutterpupper.com, 1 @@ -66140,7 +65769,6 @@ gutuia.blue, 1 gutzfit.com, 0 guug.ml, 1 -guuhanalytics.com.br, 1 guuru.ru, 1 guus-thijssen.nl, 1 guvernalternativa.ro, 1 @@ -66220,6 +65848,7 @@ gxiangsoft.com, 1 gxm5.com, 1 gxmyqy.net, 1 +gxql.cn, 1 gyaanam.guru, 1 gyaanprasaar.tk, 1 gyannews.ga, 1 @@ -66235,7 +65864,6 @@ gyg.si, 1 gyg.st, 1 gying.in, 1 -gying.net, 1 gying.org, 1 gying.si, 1 gyjbyev.ga, 1 @@ -66269,7 +65897,6 @@ gymnertia.com, 1 gymone.co.za, 1 gymonlondon.com, 1 -gympap.de, 1 gympsycho.com, 1 gymtriplex.es, 1 gymvilla.nl, 1 @@ -66580,10 +66207,9 @@ haehnlein.at, 1 haemka.de, 1 haemmerle.net, 1 -haemonetics.com, 1 +haemonetics.com, 0 haens.li, 1 haert.nl, 1 -haesoolee.com, 1 haeuslers.com.au, 1 haewen.art, 1 hafcareclinic.com, 0 @@ -66676,7 +66302,7 @@ hairpins.tk, 1 hairsalon-wish.com, 1 hairstyles-salon.tk, 1 -hairvisionsintl.com, 1 +hairvisionsintl.com, 0 hairyfilm.com, 1 hairymilfpics.com, 1 hairypussyvideos.net, 1 @@ -66700,7 +66326,6 @@ hajery.com, 1 hak-lab.com, 1 hak-zona.tk, 1 -hak.edu.ee, 1 haka.se, 1 hakam.my.id, 1 hakama-sendai.com, 1 @@ -66749,7 +66374,6 @@ half.in.th, 1 halfbeasters.ga, 1 halfbeastest.ga, 1 -halff.com, 1 halfhosting.de, 1 halfmba.com, 1 halfords.com, 0 @@ -66760,7 +66384,6 @@ halic.tk, 1 halifaxboropdpa.gov, 1 halifaxma.gov, 1 -halifaxmoneyman.com, 1 halifaxsailingclub.org.uk, 1 halilication.com, 1 halilova.ga, 1 @@ -66822,11 +66445,12 @@ halselodge.com.au, 1 halseyor.gov, 1 halt.org, 1 -halterner-tc.de, 1 halteverbot-wesel.de, 1 +halunke.jetzt, 1 halv.me, 1 halvalla.tk, 1 halyul.com, 1 +halz.org, 1 halzine.xyz, 1 ham.study, 1 hamacho-kyudo.com, 1 @@ -66835,11 +66459,11 @@ hamaslul.com, 1 hamave.nl, 0 hambook.org, 1 +hambot.fr, 1 hamburg1.de, 1 hamburger-umzuege.de, 1 hamburger-wirtschaft.de, 1 hamburgerland.tk, 1 -hamburgerwithcheese.com, 1 hamdenct.gov, 1 hamdiscussions.com, 1 hameddental.com, 1 @@ -66957,7 +66581,6 @@ handigehannie.nl, 1 handinhandhrd.eu, 0 handler.lv, 1 -handlerparts.de, 1 handlerparts.fi, 1 handlerparts.fr, 1 handlerparts.no, 1 @@ -66975,6 +66598,7 @@ handpresso.com, 1 handsender-express.com, 1 handshake.co.za, 1 +handshakerhub.com, 1 handsome-samurai.jp, 1 handsomeabel.tk, 1 handsonscience.com.au, 1 @@ -66997,7 +66621,9 @@ handyrecovery.com, 1 handyschaft.de, 1 handysex.live, 1 +handytreff.de, 1 haneenshirt.com, 1 +hanekawa.network, 1 hanetf.com, 1 hanewin.net, 1 hanf-magazin.com, 1 @@ -67027,6 +66653,7 @@ hanjuapp.com, 1 hanke.se, 1 hanketoke.com, 1 +hankooknegyed.hu, 1 hanksservice.com, 1 hankyu-square.jp, 1 hanlonhouse.us, 1 @@ -67138,7 +66765,6 @@ happybabyhappymama.nl, 1 happybeerdaytome.com, 1 happybirthdaywisher.com, 1 -happybounce.co.uk, 1 happychat.io, 1 happychungus.tk, 1 happycoder.net, 0 @@ -67179,7 +66805,7 @@ happynight.tk, 1 happypawsjournal.com, 1 happypixeldesigns.com, 1 -happyplantparent.com, 1 +happyplantparent.com, 0 happyproject.in, 1 happyretail.ai, 1 happyrunning.tk, 1 @@ -67193,7 +66819,7 @@ happytours.cf, 1 happytugs.com, 1 happyukgo.com, 1 -happywater.my, 1 +happywater.my, 0 happyweekend.ga, 1 happywheels1.online, 1 hapronailz.tk, 1 @@ -67245,11 +66871,11 @@ hardeecountyfl.gov, 1 hardeeflvotes.gov, 1 hardeman.nu, 0 +harden.wiki, 1 hardenburghny.gov, 1 hardenize.com, 1 hardesec.com, 1 hardfloorcleaninglondon.co.uk, 1 -hardforum.com, 1 hardfought.org, 1 hardgame.tk, 1 hardgospelcafe.tk, 1 @@ -67345,7 +66971,7 @@ harmreduction.org, 1 harmreductionwa.org, 1 harms.io, 1 -harmsboone.org, 1 +harmus.ro, 1 harness.io, 1 harnet.store, 1 harnettcountync.gov, 1 @@ -67395,11 +67021,9 @@ harrisontownshipmi.gov, 1 harrisx.com, 1 harrodsburgky.gov, 1 -harrogatemoneyman.com, 1 harry-baker.com, 1 harry-hk.tk, 1 harryagustiana.tk, 1 -harryanddavid.com, 1 harrychristensen.tk, 1 harrymcgee.tk, 1 harrymclaren.co.uk, 1 @@ -67432,7 +67056,6 @@ hartmancpa.com, 1 hartmann-hartmann.eu, 1 hartmann.art, 1 -hartmannindustries.com, 1 hartmannsoft.com, 1 hartonfilm.com, 1 hartsfieldrock.tk, 1 @@ -67444,7 +67067,7 @@ hartzer.com, 1 haru-restaurant.tk, 1 haruhi.org.ua, 1 -harukakikuchi.com, 1 +harukakikuchi.com, 0 harukawa.moe, 1 harunafilez.tk, 1 harvard-ma.gov, 1 @@ -67593,12 +67216,10 @@ haus-henne.de, 1 haus-mittelpunkt.de, 1 haus-momo.ch, 1 -haus-renovierer.de, 1 haus.bio, 1 hausarbeit-ghostwriter.com, 1 hausdorf.ru, 1 hausen-wzbg.de, 1 -hausfrauficken.com, 1 haushalts-magazin.de, 1 haushaltsaufloesung-zentrum.de, 1 haushenne.de, 1 @@ -67618,12 +67239,12 @@ hautehorlogerie.org, 1 hautemontagne.com, 1 hauteprovenceinfo.com, 1 -hautetime.com, 1 hautsache-friesoythe.de, 1 hautsdefrance.fr, 1 hautzentrum-innenstadt.de, 1 havaci.tk, 1 havadurumu15gunluk.org, 1 +havalimanitransferim.com, 1 havanaheritage.org, 1 havarijna-sluzba-bratislava.sk, 1 havasformula.com, 1 @@ -67659,19 +67280,19 @@ hawaiiforbernie.com, 1 hawaiinet.tk, 1 hawaiipolice.gov, 1 -hawaiititlesearch.com, 1 hawaiiusafcu.com, 1 hawaindustrial.com, 1 hawat.cz, 1 hawawa.kr, 1 hawesandcurtis.co.uk, 1 +hawesandcurtis.com.au, 1 +hawesandcurtis.de, 1 hawickvets.co.uk, 1 hawit-steuerberatung.de, 1 hawit-steuerberatung.support, 1 hawk-la.com, 1 hawkargentina.com, 1 hawkdns.info, 1 -hawkesburycas.com.au, 1 hawkeye247.com, 0 hawkeyeia.gov, 1 hawkeyeinsight.com, 1 @@ -67725,6 +67346,7 @@ hazarainternational.com, 1 hazarapeople.com, 1 hazaristan.asia, 1 +hazdovacemissionswarrantysettlement.com, 1 haze-productions.com, 1 hazelhof.nl, 1 hazelkid.tk, 1 @@ -67919,7 +67541,6 @@ healingthenaturalway.cf, 1 healingthenaturalway.ga, 1 healingthenaturalway.gq, 1 -healingwell.com, 1 healingwithvibrationsummit.com, 1 healinlife.com, 1 healmaster.net, 1 @@ -68283,7 +67904,6 @@ heap.zone, 1 heapsofheaven.com, 1 hear.com, 1 -hearchina.com, 1 heardcountyathletics.com, 1 hearfool.cc, 1 hearhere.io, 1 @@ -68319,7 +67939,6 @@ heartsmentor.com, 1 heartsucker.com, 0 hearttruth.gov, 1 -heartway.xyz, 1 heartwoodart.com, 1 hearty.biz, 1 hearty.blog, 1 @@ -68336,7 +67955,6 @@ hearty.studio, 1 hearty.taipei, 1 hearty.tech, 1 -heartyapp.com, 0 heartyapp.tw, 1 heartymail.com, 1 heaslip-aluminium-smelter-engineering.com, 1 @@ -68352,12 +67970,14 @@ heathercutler.ca, 1 heathercutlerfoundation.org, 1 heatherleysephotography.com, 1 +heatherlochhoa.com, 1 heathersmithcommercial.com, 1 heathersnotes.com, 1 heatingequipment.tk, 1 heatingupdates.com, 1 heatwrap.de, 1 heaven-boutique.de, 0 +heavenconnect.app, 1 heavenlybeauty.tk, 1 heavenlyindianrestaurant.com.au, 1 heavenlyseals.com, 1 @@ -68435,7 +68055,6 @@ heejun.store, 1 heeler.red, 1 heello.es, 1 -heerenveen.nl, 1 heerenveenlokaal.nl, 1 heerlijkland.com, 1 heerlijkland.nl, 1 @@ -68458,6 +68077,7 @@ heheparty.com, 1 heheparty.net, 1 heheparty.org, 1 +hehn-falkensee.de, 1 hehn-hnd.de, 1 hehn.de, 1 hehome.xyz, 0 @@ -68527,6 +68147,7 @@ heion.id, 1 heiraten-gardasee.de, 1 heiraten-venedig.de, 1 +heircalc.com, 1 heiri-web.ch, 1 heirportal.com, 1 heise.cf, 1 @@ -68553,6 +68174,7 @@ hekwerken.tk, 1 helabet.com, 1 helabet.ng, 1 +heladerialaartesana.es, 1 heladospipos.ga, 1 helagotaland.ga, 1 helagotaland.gq, 1 @@ -68562,6 +68184,7 @@ helco.xyz, 1 helden-spielen.de, 1 heldenhalde.de, 1 +heldevia.ch, 1 heldmayer.com, 1 heldtech.services, 1 heldundsexgott.de, 1 @@ -68570,7 +68193,7 @@ helemduruth.com, 1 helena-loos.de, 1 helena.care, 1 -helenabay.com, 1 +helenabay.com, 0 helenair.com, 1 helenakmiec.pl, 1 helenapaparizouspainfanclub.tk, 1 @@ -68586,6 +68209,7 @@ helensmithpr.co.uk, 1 helenssjoholm.cf, 1 helenssjoholm.ga, 1 +helensvalepersonaltrainers.com, 1 helenturkington.com, 1 helenvalsj.tk, 1 helenwade.tk, 1 @@ -68651,7 +68275,6 @@ helkyn.org, 1 hell.rodeo, 1 hell.sh, 1 -hellasceramics.com, 1 hellband.tk, 1 hellblade.tk, 1 hellblast.tk, 1 @@ -68723,7 +68346,6 @@ helloworldhost.com, 0 helloyubo.com, 1 hellraid.com, 1 -hellraisercut.cz, 1 hellseeker.tk, 1 hellsinkivampires.tk, 1 hellskitchenrecipes.com, 1 @@ -68748,7 +68370,6 @@ helonic.com, 1 help-me.today, 1 help207.me, 1 -help360.com, 1 help911.com, 1 helpadmin.net, 0 helpamericavote.gov, 1 @@ -68762,7 +68383,6 @@ helpero.pl, 1 helpfulcash.com, 1 helpfulinsightsolution.com, 1 -helpfulreviewer.com, 1 helpguru.eu, 1 helpkoil.com, 1 helplightning.com, 1 @@ -68771,13 +68391,13 @@ helpmainstreet.com, 1 helpmij.cf, 1 helpout.us, 1 -helpowl.com, 1 helppc.com.ua, 1 helprb.ru, 1 helpscoutdocs.com, 1 helptasker.net, 1 helptasker.org, 1 helptasker.ru, 1 +helptexts.com, 1 helpticket.ml, 1 helpticket.tk, 1 helpukrainians.ro, 1 @@ -68802,6 +68422,7 @@ helvia.ai, 1 helyxdesign.com.au, 1 hemagon.com, 1 +hemalia.com, 1 hemanklerehab.com, 1 hemaroids.tk, 1 hemato.ai, 1 @@ -68909,6 +68530,7 @@ henryveraonline.net, 1 hensiek.com, 1 hensin.com, 1 +henspartygeelong.com.au, 1 hentai-paradise.fr, 1 hentai.it, 1 hentaigirls.net, 1 @@ -68944,7 +68566,6 @@ her123.win, 1 herald-review.com, 1 herald.ga, 1 -heraldcourier.com, 1 heraldik-wiki.de, 1 heraldmakassar.com, 1 heratnews.tk, 1 @@ -68969,7 +68590,6 @@ herbivorization.com, 1 herblaysurseine.fr, 1 herbnal.com, 1 -herbosia.fr, 1 herbreathonglass.tk, 1 herbsociety.org, 1 herbstgroup.io, 1 @@ -69033,6 +68653,7 @@ hermesawards.com, 1 hermesoft.at, 1 hermessenger.fr, 1 +hermetas.org, 1 hermetien.tk, 1 hermietkreeft.site, 0 herminghaus24.de, 1 @@ -69058,7 +68679,6 @@ herod.tk, 1 heroes3stat.tk, 1 heroeshomeadvantage.com, 1 -heroesoftomorrow.nl, 0 heroesorchestra.com, 1 herofil.es, 1 herogaming.net, 1 @@ -69072,8 +68692,6 @@ heroplusgroup.com, 0 heroxin.com, 1 herpderpderpderp.com, 1 -herpes-no.com, 1 -herq.top, 0 herr-webdesign.de, 1 herrald-skeeleren.tk, 1 herramientasbazarot.com, 1 @@ -69122,6 +68740,7 @@ hesgotrizz.com, 1 heshamelsawah.clinic, 1 heshamselim.tk, 1 +hesklo.com, 1 hessabras.ir, 1 hesselsfarmsupply.ca, 1 hessen-forst.de, 1 @@ -69154,7 +68773,6 @@ heth.me, 1 hethely.ch, 1 hetiservices.com, 1 -hetjop.nl, 1 hetkomtnooitmeergoed.nl, 1 hetmanrecovery.com, 1 hetmedialab.nl, 1 @@ -69202,6 +68820,7 @@ hexcode.in, 1 hexdatabase.com, 1 hexed.it, 1 +hexelglobe.com, 1 hexenturmblick.de, 1 hexforged.com, 1 hexhu.com, 1 @@ -69241,6 +68860,7 @@ heybookmark.gq, 1 heybritney.tk, 1 heybyrdie.com, 1 +heychandmama.com, 1 heydenbluth.de, 1 heydorff.duckdns.org, 1 heydottore.com, 1 @@ -69270,9 +68890,7 @@ hf51-domeinen.nl, 1 hf51.nl, 1 hfa3.org, 1 -hfam.chat, 1 hfh-gmbh.de, 1 -hfholidays.co.uk, 1 hfikq8.cf, 1 hflsdev.org, 0 hfma.org.uk, 1 @@ -69303,7 +68921,6 @@ hgwld.com, 1 hgyo.me, 1 hgyoseo.com, 1 -hh-autos.com, 1 hh-host.de, 1 hh-massage.de, 1 hh-medic.com, 1 @@ -69333,7 +68950,7 @@ hi-million.ml, 1 hi-newspaper.ml, 1 hi-res.cloud, 1 -hi-res.com.cn, 1 +hi-res.com.cn, 0 hi-res.vip, 1 hi-sense.ir, 1 hi-techcrimes.net, 1 @@ -69344,13 +68961,13 @@ hibanaworld.com, 1 hibari-dent.jp, 1 hibbingmn.gov, 1 -hibeijing.com, 1 hibernianhealth.com, 1 hibin.tk, 1 hibiny.ru, 1 hibiscuscoastfinancialservices.com.au, 1 hibiscusprintshop.com, 1 hiboomapp.com, 1 +hiboubox.fr, 1 hiccupsandjuice.co.uk, 1 hicklinghacks.co.uk, 1 hickmancountytn.gov, 1 @@ -69375,7 +68992,6 @@ hiddenhand.finance, 1 hiddenhillsexteriorlighting.com, 1 hiddenimage.ml, 1 -hiddenmalta.net, 1 hiddenpalms.tk, 1 hiddenredknights.tk, 1 hiddenrefuge.eu.org, 1 @@ -69406,7 +69022,6 @@ hieisuki.ga, 1 hielscher.com, 1 hien.cf, 1 -hierank.org, 1 hierden-bosch.nl, 1 hierdenbosch.nl, 1 hierer.com, 1 @@ -69513,12 +69128,12 @@ higsegeirl.com, 1 higueras.tk, 1 hihello.com, 1 -hiig.edu.ee, 1 hiii.au, 1 hiitrepublic.com.au, 1 hiiumeretuulepark.ee, 1 hiiw.cloud, 1 hiiw.de, 1 +hijabi.vip, 1 hijyenbelgesi.tr, 1 hik-cloud.com, 1 hikagestudios.com, 1 @@ -69534,7 +69149,6 @@ hikingmonthlyest.ga, 1 hikka.ru, 1 hikkoseek.jp, 1 -hikyu.it, 0 hilahdih.cz, 1 hilalnews.ga, 1 hilariannetwork.com, 1 @@ -69545,7 +69159,6 @@ hilde.link, 1 hildedevolderchocolatier.be, 1 hiledge.com, 1 -hilfe.de, 1 hilfiker.cloud, 1 hilfikernet.ch, 1 hilfikers.com, 1 @@ -69582,7 +69195,6 @@ hilltopsurgicalhospital.ga, 1 hilltopviewsonline.com, 1 hilnu.com, 1 -hilomrm.com, 1 hilunetan.tk, 1 hima.com, 1 himalaiblanket.com, 1 @@ -69591,7 +69203,6 @@ himalayaninstitute.org, 1 himarijuana.tk, 1 himawari-scanlator.tk, 1 -himawari-shika.org, 1 himaxym.com, 1 himcy.ga, 1 himei.city, 1 @@ -69600,7 +69211,6 @@ himj.de, 1 himnosycanticos.org, 1 himpler.com, 0 -himprom.com, 1 hin10.com, 1 hinaryazan.com, 1 hinata-hidetoshi.com, 1 @@ -69620,15 +69230,16 @@ hindweb.tk, 1 hinesitecoding.com, 1 hingle.me, 1 +hingston.org, 1 hinhanhykhoa.com, 1 hinkel.tk, 1 -hinketsujyoshi-no-torisetsu.com, 1 hinotify.io, 1 hinsdaledental.com, 0 hintergedanken.com, 0 hinterposemuckel.de, 1 hintleshamhall.co.uk, 1 hinto.com.au, 1 +hints.fans, 1 hintss.pw, 0 hiob.fr, 0 hiofd.com, 1 @@ -69651,6 +69262,7 @@ hipnosisyterapias.com, 1 hipnotista.tk, 1 hipocampo.org, 1 +hipocratesapp.cl, 1 hipodromcasusu.tk, 1 hippies.com.br, 1 hippo.com, 1 @@ -69689,7 +69301,6 @@ hirevets.gov, 1 hirevo.eu, 1 hirewiz.tk, 1 -hirezzportal.com, 1 hirify.fr, 1 hiring-process.org, 1 hiringopps.com, 1 @@ -69745,6 +69356,7 @@ historiasdepueblo.es, 1 historiasyrelatos.tk, 1 historiasztuki.tk, 1 +historicalcoins.org, 1 historicalsocietyofsomersethills.org, 1 historicengland.org.uk, 1 historicizam.tk, 1 @@ -69843,6 +69455,8 @@ hiyobi.org, 1 hiyoko.group, 1 hiyuki2578.net, 1 +hizakura.net, 1 +hizakura.nl, 1 hizhina-hagrida.ru, 1 hizliresim.com, 1 hizlisoy.av.tr, 1 @@ -69894,7 +69508,6 @@ hkgix.net, 1 hkl-gruppe.de, 1 hkm-webdesign.ca, 1 -hkm-webdesign.com, 1 hkmap.co, 1 hkmap.com, 1 hkmap.net, 1 @@ -69929,11 +69542,13 @@ hlib.com.my, 1 hlidani-tornado.cz, 1 hlinformatics.nl, 1 +hlink.pt, 1 hliuma.org, 1 hllr.xyz, 1 hlm.network, 1 hlm.support, 1 hlm.wtf, 1 +hlmrentcar.com, 1 hlmtechnologies.com, 1 hln.be, 1 hloe0xff.ru, 1 @@ -69942,7 +69557,7 @@ hls-tutorial.tk, 1 hlsblog.com, 1 hlsjgw.com, 1 -hlsmandarincentre.com, 1 +hlsmandarincentre.com, 0 hlstory.tk, 1 hltdos.com, 1 hltk.fi, 1 @@ -69959,6 +69574,7 @@ hmarchat.tk, 1 hmbana.org, 1 hmcdj.cn, 1 +hmcprivatecredit.com.au, 1 hmdqr.me, 1 hmeonot.org.il, 1 hmforces-railcard.co.uk, 1 @@ -70001,6 +69617,7 @@ hoardit.ml, 1 hoathienthao.com, 1 hoathienthao.vn, 1 +hoax.social, 1 hobartok.gov, 1 hobartpersonaltrainers.com, 1 hobarttownhotel.com.au, 0 @@ -70014,6 +69631,8 @@ hobbydo.ga, 1 hobbydo.gq, 1 hobbyhorseslovakia.com, 1 +hobbyland.eu, 1 +hobbystic.pl, 1 hobbyweeklyers.ga, 1 hobbyweeklyest.ga, 1 hoberg.ch, 1 @@ -70069,7 +69688,6 @@ hoe.re, 1 hoegl.com, 0 hoeheterobenjij.nl, 1 -hoejetaastrupprovsti.dk, 1 hoelty.network, 1 hoemepage.com, 1 hoerbuecher-und-hoerspiele.de, 1 @@ -70117,13 +69735,12 @@ hohemark.de, 1 hohenpoelz.de, 1 hohezinsen.at, 1 -hohl.com.br, 1 hohlhupe.de, 1 hohlhupen.de, 1 -hohljohndeere.com.br, 1 hohm.in, 1 hohma.tk, 1 hohny.gov, 1 +hoi.amsterdam, 1 hoikin.tk, 1 hoiku-map.tokyo, 0 hoiku-navi.com, 0 @@ -70163,7 +69780,6 @@ holdinghandsbrazil.com, 1 holdmybeer.io, 1 holdmyframe.com, 1 -holdmymeme.com, 1 holdperson.tk, 1 holebedeljek.hu, 1 holeboom.com, 1 @@ -70179,7 +69795,6 @@ holidaycity.org, 1 holidayclub.tk, 1 holidayformula.ru, 1 -holidayhomesindubai.ae, 1 holidayhousemi.com, 1 holidayincotswolds.co.uk, 1 holidayletsnorthyorkshire.co.uk, 1 @@ -70222,7 +69837,6 @@ hollowman.ml, 1 hollowwinds.xyz, 1 holly.lgbt, 1 -hollybanks.net, 1 hollybonnerdesigns.com, 1 hollyforrest.ca, 1 hollyforrestphotography.ca, 1 @@ -70232,7 +69846,6 @@ hollyloless.org, 1 hollyspringsfarmnac.com, 1 hollyspringsms.gov, 1 -hollywoodbios.com, 1 hollywooddriver.com, 1 hollywoodhelicopters.com, 1 hollywoodstars.tk, 1 @@ -70288,7 +69901,6 @@ holywhite.com, 1 holywr.it, 1 holzbau-lepski.de, 1 -holzed.com, 1 holzhandel-stefan.de, 1 holznagel.eu, 1 holznagel.org, 1 @@ -70303,6 +69915,7 @@ homato.uk, 1 homberg.de, 1 hombresg.net, 1 +home-co.com.au, 1 home-design.bg, 1 home-hunts.com, 1 home-insurance-quotes.tk, 1 @@ -70494,10 +70107,8 @@ homefromhomecornwall.co.uk, 1 homegang.ga, 1 homegardendecoration.tk, 1 -homegardenresort.nl, 1 homegeo.ga, 1 homegreens.eu, 1 -homegrounds.co, 1 homegun.ga, 1 homeideasanddesigns.tk, 1 homeimagician.com.au, 1 @@ -70532,7 +70143,6 @@ homelion.ga, 1 homelove.tk, 1 homelovehome.tk, 1 -homelykw.com, 1 homemadetips.ga, 1 homemadetipsers.ga, 1 homemadetipsest.ga, 1 @@ -70591,7 +70201,7 @@ homerex.ga, 1 homero.tk, 1 homeruninsurance.com, 1 -homesafedryerventsac.com, 1 +homesafedryerventsac.com, 0 homesbyayres.com, 1 homeschoolinkorea.tk, 1 homeseguridad.com, 1 @@ -70623,7 +70233,7 @@ hometownticketing.com, 1 hometrust.ca, 0 hometunnel.de, 0 -hometurfdallas.com, 1 +hometurfdallas.com, 0 homeunder.ga, 1 homeunion.tk, 1 homeview.ga, 1 @@ -70644,6 +70254,7 @@ homezlog.com, 1 homfyrent.com, 1 homie.nl, 1 +homiplay.io, 1 homitov.tk, 1 homitra.com, 1 hommecontemporain.org, 1 @@ -70651,7 +70262,6 @@ homnest.fr, 0 homnya.com, 1 homo.ga, 1 -homo1145.xyz, 1 homofaberevent.com, 1 homofo.tk, 1 homoglyph.net, 1 @@ -70706,6 +70316,7 @@ honeycome-recruit.com, 0 honeycreeper.com, 1 honeycrypt.com, 1 +honeydolly.com, 1 honeyfungus.com, 1 honeygirl.tk, 1 honeyspot.de, 1 @@ -70713,7 +70324,6 @@ honeysucklewhite.com, 1 honeytoon.com, 1 honeytracks.com, 1 -honeyxlips.com, 1 hong.com.br, 1 hong.io, 1 hongbomiao.com, 1 @@ -70745,6 +70355,7 @@ hoodiessouthafrica.com, 1 hoodrivercounty.gov, 1 hoodsite.com, 1 +hoodtrace.com, 1 hoofcareunltd.com, 1 hoofdredacteuren.nl, 1 hoogdam.tk, 1 @@ -70783,6 +70394,7 @@ hootsuite.com, 1 hootv.lt, 1 hootworld.net, 0 +hootz.eu, 1 hoovism.com, 1 hop-ict.nl, 1 hop.exchange, 1 @@ -70792,13 +70404,13 @@ hopeforlorn.tk, 1 hopeforukraine.org.uk, 1 hopefultexas.com, 0 +hopeinpain.org, 1 hopemeet.info, 1 hopepartnershipproject.com, 1 hopesanddreams.org.uk, 1 hopewellpolicenj.gov, 1 hopeworld.pro, 1 hopglass.eu, 1 -hopglass.net, 1 hopi.com.tr, 1 hopict.nl, 1 hopital-tarascon09.fr, 1 @@ -70840,7 +70452,6 @@ horefice.me, 1 horgenberg.com, 1 horiconwi.gov, 1 -horizon-garde.com, 1 horizon.com, 1 horizon.ne.jp, 1 horizondds.com, 1 @@ -70949,7 +70560,6 @@ hospicespringfling.org, 1 hospicewebsite.org, 1 hospicewise.org, 1 -hospicjumzory.pl, 1 hospitable.com, 1 hospital.org.uk, 1 hospitalcmq.com, 1 @@ -70977,7 +70587,7 @@ hostalk.net, 1 hostalog.com, 1 hostalsanmarcos.tk, 1 -hostanalytics.com, 1 +hostanalytics.com, 0 hostarea51.com, 1 hostathome.fr, 1 hostaz.net, 1 @@ -70986,7 +70596,7 @@ hostchina.net, 1 hostcloud.ml, 1 hostcoz.com, 1 -hostcsr.com, 1 +hostcsr.com, 0 hostdns.com, 1 hosted-power.com, 1 hostedcomments.com, 1 @@ -71036,7 +70646,7 @@ hostingopenclaw.com, 1 hostingorservers.com, 1 hostingphp.ch, 1 -hostingselector.com, 1 +hostingselector.com, 0 hostingsolutions.cz, 1 hostingsupremo.com, 1 hostingsvizzera.com, 1 @@ -71051,7 +70661,6 @@ hostmeapp.com, 1 hostmijnpagina.nl, 1 hostmodern.com.au, 1 -hostmore.com.br, 1 hostnook.com, 1 hostonssd.ga, 1 hostpoint-static.ch, 1 @@ -71065,6 +70674,7 @@ hostx.lk, 1 hostynet.com, 1 hostynet.fr, 1 +hostynet.net, 1 hosuronline.com, 1 hosuto.nl, 1 hot-and-new.gr, 1 @@ -71079,9 +70689,7 @@ hotaircoldlove.tk, 1 hotaru.tk, 1 hotbabe.ml, 1 -hotbabesplus.com, 1 hotbeats.tk, 1 -hotbella.net, 1 hotblondepussy.com, 1 hotbrains.com.br, 1 hotbustymoms.com, 1 @@ -71111,7 +70719,6 @@ hotel-du-parc-allevard.fr, 1 hotel-fleuralp.it, 1 hotel-garni-letizia.it, 0 -hotel-insectes.be, 1 hotel-jahnatal.de, 1 hotel-kontorhaus.de, 1 hotel-krone.ch, 1 @@ -71163,15 +70770,16 @@ hotelmariasas.it, 1 hotelmelograno.eu, 1 hotelmirage-bg.com, 1 +hotelmuniz.com.ar, 1 hotelnagarkotparadise.tk, 1 hotelpalotacity.hu, 1 hotelparqcentral.com, 1 hotelpenzance.com, 1 +hotelping.net, 1 hotelplanner.com, 1 hotelplazataranto.com, 1 hotelpromo.codes, 1 hotelreis.com.br, 1 -hotelrepublicsd.com, 1 hotels-insolites.com, 1 hotels-resorts-in-crimea.tk, 1 hotels3d.com, 1 @@ -71208,7 +70816,6 @@ hotelylangylang.re, 1 hotelzapse-aurora.tk, 1 hotesb.net, 1 -hotevi.com, 1 hotfallingdevil.vip, 1 hotfiesta.ml, 1 hotgames.rw, 1 @@ -71251,14 +70858,11 @@ hotproxy.gq, 1 hotpussypics.com, 1 hotpussytube.com, 1 -hotrender.com, 1 hotroviettel.vn, 1 -hotschneckchen.net, 1 hotscripting.tk, 1 hotset.com, 1 hotsex.tv, 1 hotsexvids.net, 1 -hotshira.com, 1 hotshotsleeves.com, 1 hotsmi.cf, 1 hotsnack.cz, 1 @@ -71266,7 +70870,6 @@ hotspringcountysoar.gov, 1 hotspringsar.gov, 1 hotspringscountywy.gov, 1 -hotsvenja.com, 1 hottakes.com, 1 hotteprofessionnelle.fr, 1 hottestguyoftech.com, 1 @@ -71291,7 +70894,6 @@ hourlyringtonesest.ga, 1 hourpendulum.com, 1 hoursback.co.uk, 1 -hoursofoperation.biz, 1 house-sparrow.com, 1 houseandgarden.co.uk, 1 houseandhounddogwalkers.com, 1 @@ -71344,7 +70946,6 @@ houston-nannies.com, 1 houston-probate-law.com, 1 houstonaudubon.org, 1 -houstonauthorizedrepair.com, 1 houstoncenterforvaluedliving.com, 1 houstoncosoal.gov, 1 houstoncountyal.gov, 1 @@ -71393,6 +70994,7 @@ how-to-write-a-book.ml, 1 how2dev.tools, 1 how2shout.com, 1 +how2vote.au, 1 howandwhys.com, 1 howardchippewawi.gov, 1 howardconnected.com, 1 @@ -71475,7 +71077,7 @@ hoz.land, 1 hozana.si, 0 hozinga.de, 1 -hozio.com, 1 +hozio.com, 0 hozio.net, 1 hozkomurcu.com, 1 hozonshoku.com, 1 @@ -71486,16 +71088,10 @@ hp0000.cc, 1 hp111.cc, 1 hp1111.cc, 1 -hp222.cc, 1 -hp2222.cc, 1 -hp333.cc, 1 -hp3333.cc, 1 hp42.de, 1 -hp444.cc, 1 hp4444.cc, 1 hp555.cc, 1 hp5555.cc, 1 -hp8888.cc, 1 hpage.com, 1 hpbn.co, 1 hpc.mil, 1 @@ -71504,7 +71100,6 @@ hpfxd.com, 1 hphp.ga, 1 hpisavageforum.com, 1 -hpk.edu.ee, 1 hpkp-faq.de, 1 hpmleadership.com, 1 hpneo-conseil.com, 1 @@ -71526,6 +71121,7 @@ hqwebhosting.tk, 0 hqy.moe, 1 hqy2000.com, 1 +hr-4-me.ru, 1 hr-automation.eu, 1 hr-books.shop, 1 hr-clan.tk, 1 @@ -71558,6 +71154,7 @@ hrcrew.com.au, 1 hrd-sec.com, 1 hrdinaadcera.cz, 1 +hrdinov.cz, 1 hrdns.de, 1 hrej.eu, 1 hrejterzy.com, 1 @@ -71603,6 +71200,7 @@ hrumka.net, 1 hrw.org, 1 hrw66.cc, 1 +hrwf.eu, 1 hrwsba.gov, 1 hrxkauppa.fi, 1 hry.cz, 1 @@ -71629,7 +71227,6 @@ hsivonen.com, 1 hsivonen.fi, 1 hsivonen.iki.fi, 1 -hsjdzaragoza.es, 1 hskernel.com, 1 hskin.top, 1 hsm-eldesafio.tk, 1 @@ -71655,6 +71252,7 @@ hstspreload.org, 1 hstudio.tk, 1 hsutilitiesms.gov, 1 +hsvwilnis.nl, 1 hsx.com, 1 hsys.eu, 1 hszemi.de, 1 @@ -71852,6 +71450,7 @@ hudeem-vmeste.ml, 1 hudhaifahgoga.co.za, 1 hudhomestore.gov, 1 +hudig.pl, 1 hudless.com, 1 hudobniny.net, 1 hudognik.com, 1 @@ -71865,7 +71464,6 @@ huehnerartikel.de, 1 hueiyeh.com, 1 huelgajusticiaextremadura.tk, 1 -huemeyraophelia.com, 1 huemul.studio, 1 huengsberg.com, 1 huertgenwald.de, 1 @@ -71881,11 +71479,10 @@ huffduffer.com, 1 huffsinsurance.com, 1 hug0.cz, 1 -hugearns.com, 1 hugebeasters.ga, 1 hugebeastest.ga, 1 hugetits.tv, 1 -huggies.com.au, 1 +hugeziyuan.com, 1 huggovie.sk, 1 huggy.moe, 1 hughescountyok911.gov, 1 @@ -71930,7 +71527,6 @@ huisartsenpraktijkheemraadssingel.nl, 1 huisartsenpraktijksonmezer.nl, 1 huisartsenpraktijkzonnehoed.nl, 1 -huisartsenpraktijkzwalm.be, 1 huisdierinfopunt.tk, 1 huiser.nl, 1 huisfind.nl, 1 @@ -71950,7 +71546,6 @@ hulii.com.au, 1 hulkbay.tk, 1 hulkweb.tk, 1 -hullmoneyman.com, 1 hullseals.space, 1 hullteam.com, 1 huloveyou.com, 1 @@ -71986,7 +71581,6 @@ humanistgruppen.tk, 1 humanities.gov, 1 humanitiesacademicpublishers.com, 1 -humanitiesnebraska.org, 1 humanity.com, 1 humanize.security, 1 humanizeai.tech, 1 @@ -71998,7 +71592,6 @@ humanrights-geneva.info, 1 humanrights.gov.au, 0 humanrights.tk, 1 -humanrightscareers.com, 1 humanrightseducation.cn, 1 humanrightswatch.org, 1 humanshiftpaper.com, 1 @@ -72032,7 +71625,6 @@ humblecraft.tk, 1 humbledmba.com, 1 humblemechanic.com, 1 -humblenano.africa, 1 humblenano.io, 1 humboldt-wi.gov, 1 humboldtcavotes.gov, 1 @@ -72056,6 +71648,7 @@ hummy.tk, 1 hummy.tv, 1 humo.be, 1 +humoliquidoperu.com, 1 humor-life.tk, 1 humor-web.tk, 1 humor.cf, 1 @@ -72086,7 +71679,7 @@ hundlee.tk, 1 hundred100.net, 1 hundredforhundred.com, 1 -hundredhills.wine, 1 +hundredhills.wine, 0 hundskolorna.se, 1 hundter.com, 1 hundur.tk, 1 @@ -72147,7 +71740,6 @@ huoyankan.com, 1 huoyou.com, 1 hupoints.com, 1 -hurdafiyatlari.site, 1 hurdaphysio.fi, 1 hurinkazan2020.com, 1 hurix.ai, 1 @@ -72175,7 +71767,6 @@ huseyinpala.com, 1 hushfile.it, 1 hushhtech.com, 1 -hushhush.ai, 1 hushlayer.com, 1 hushpuppiesobuv.ru, 1 husic.net, 0 @@ -72207,7 +71798,6 @@ huwjones.me, 1 huwshepheard.com, 1 huxcoconstruction.com, 1 -huxixs.com, 1 huxley.net, 1 huynhviet.com, 1 huyvu.nl, 1 @@ -72235,6 +71825,7 @@ hvhercules.tk, 1 hvhindia.in, 1 hvllucinvtion.tk, 1 +hvng.net, 1 hvnn.nl, 1 hvorschool.tk, 1 hvr.co.il, 1 @@ -72248,6 +71839,7 @@ hwag-pb.de, 1 hwasung.com.vn, 1 hwc.com.mx, 1 +hwchronicle.com, 1 hwe.nz, 1 hwehealthiertogether.nhs.uk, 1 hwinfo.tk, 1 @@ -72343,7 +71935,6 @@ hydrozone.fr, 1 hyec.jp, 1 hyfood.it, 1 -hygeiadairy.com, 1 hygienet.be, 1 hygraph.com, 1 hyhealth.it, 1 @@ -72376,7 +71967,6 @@ hyperbolic-mayonnaise-interceptor.ovh, 1 hyperd.sh, 1 hyperdesign.com, 1 -hyperdiscipline.xyz, 1 hyperemesis.ie, 1 hyperfuse.net, 1 hyperfuze.co.uk, 1 @@ -72392,9 +71982,8 @@ hypernode.com, 1 hyperonline.tk, 1 hyperplanning.fr, 1 -hyperpop.ca, 0 -hyperppl.com, 1 hyperreal.info, 1 +hyperresponsa.ch, 1 hypersequent.com, 1 hypershell.tk, 1 hypersomnia.com, 1 @@ -72408,6 +71997,7 @@ hypervsn.com, 1 hypexstore.tk, 1 hyphen.co.za, 1 +hypherdyne.com, 1 hypno-thera.fr, 1 hypnobb.com, 1 hypnos.hu, 1 @@ -72461,6 +72051,7 @@ hyra.tk, 1 hyrin.tk, 1 hyrius.net, 1 +hyrrial.fr, 1 hyrulekingdom.tk, 1 hyrumcity.gov, 1 hys-te-ria.tk, 1 @@ -72473,7 +72064,6 @@ hysupchile.cl, 1 hytale.com, 1 hytaleid.com, 1 -hytaletrack.com, 1 hytravel.it, 1 hytzongxuan.com, 1 hytzongxuan.top, 1 @@ -72532,7 +72122,6 @@ i-proswiss.com, 0 i-r-a.tk, 1 i-r-t.de, 1 -i-readycentral.com, 1 i-red.info, 1 i-scream.space, 1 i-sports.cz, 1 @@ -72552,6 +72141,7 @@ i24.host, 1 i2capmark.com, 1 i2forensicmasters.com, 1 +i2mnetwork.fr, 1 i2pc.es, 1 i2pgit.org, 1 i2x.cc, 1 @@ -72581,7 +72171,6 @@ iabot.tk, 1 iacee.org, 1 iacono.com.br, 0 -iactor.co.jp, 1 iactu.info, 1 iacuwise.com, 1 iadore.tk, 1 @@ -72592,7 +72181,6 @@ iaen.edu.ec, 1 iaeste.or.jp, 1 iaf.gov, 1 -iaf.nu, 1 iafd.com, 0 iafda.org, 1 iafisgroup.com, 1 @@ -72612,7 +72200,6 @@ iamconnected.eu, 1 iamedicale.fr, 1 iamexperts.consulting, 1 -iamhealthystore.com, 1 iamhenryjvera.com, 1 iaminashittymood.today, 1 iamjoshellis.com, 1 @@ -72682,6 +72269,7 @@ iavicenne.com, 1 iawx.net, 1 iaxx.eu, 1 +iazzie.com.br, 1 ib-batereau.de, 1 ib-kreindl.at, 1 ib-zentrale.de, 1 @@ -72721,6 +72309,7 @@ ibericarreicomsa.es, 1 ibericartechnik.es, 1 ibetora.com, 1 +ibexinsights.co, 1 ibexpackaging.com, 1 ibexrepair.co.uk, 0 ibhgospel.com, 1 @@ -72731,7 +72320,8 @@ ibilog.net, 1 ibinsurance.com.au, 1 ibipoint.com, 1 -ibiu.xyz, 0 +ibiza-cannabis-clubs.com, 1 +ibizacannabisclubs.com, 1 ibizads.tk, 1 ibk.at, 1 iblackfriday.ro, 1 @@ -72755,7 +72345,6 @@ ibq.life, 1 ibra.org.uk, 1 ibrainmedicine.org, 1 -ibrave.nl, 0 ibrom.eu, 1 ibron.co, 0 ibsglobal.co.za, 1 @@ -72768,7 +72357,6 @@ ibuluxe.com, 1 ibuprofens.gq, 1 iburgs.com, 1 -ibutv.com, 1 ibuzz.tk, 1 ibwc.gov, 1 ibwil.com, 1 @@ -72803,7 +72391,7 @@ iccxx.cn, 0 icd-codes.org, 1 icd-diagnostica.com, 1 -icd360s.de, 1 +icd360s.de, 0 icddd.pl, 1 icdgroup.net, 1 icdigital.fr, 1 @@ -72844,6 +72432,8 @@ icelook.tk, 1 icemakerrepairaustin.com, 1 icemoto.tk, 1 +icemountain.com.my, 1 +icemountain.com.sg, 1 icemyworld.tk, 1 icenter.ee, 1 icentury.ca, 1 @@ -72908,7 +72498,6 @@ icolabo.yokohama, 1 icolc.net, 1 icollezionisti.com, 1 -icom.edu, 1 icomputeconsulting.com, 1 icomuk.co.uk, 1 icon-programming.tk, 1 @@ -72958,7 +72547,6 @@ ict.govt.nz, 1 ict.in, 1 ictbaneninnederland.nl, 1 -ictcareer.ch, 1 ictfreak.nl, 1 icthealth.nl, 1 ictinforensics.org, 1 @@ -73003,7 +72591,6 @@ idahofarmbureauinsurance.com, 1 idahohde.org, 0 idahohealth.tk, 1 -idahotitlesearch.com, 1 idaich.com, 1 idanie.cf, 1 idaspis.com, 1 @@ -73028,6 +72615,7 @@ ideaboxapp.com, 1 ideacouture.com, 0 ideadozz.hu, 1 +ideafe.org, 1 ideageek.net, 1 ideagenpentana.com, 1 ideagenqpulse.com, 1 @@ -73050,6 +72638,7 @@ idealize.ml, 1 idealmature.com, 1 idealmilf.com, 1 +idealnastrona.pl, 1 idealni-hypoteka.cz, 1 idealog.id, 1 idealsegurancaeletronica.com.br, 1 @@ -73066,6 +72655,7 @@ ideascollide.com, 1 ideasdigitales2025.es, 1 ideasenfoto.com, 0 +ideasforonline.com, 1 ideashop.com, 1 ideasledgrowth.com, 1 ideasroom.eu.org, 1 @@ -73102,6 +72692,7 @@ identifytag.com, 1 identigraf.center, 1 identikpkh.com, 1 +identisoft.pt, 1 identity-hash.online, 1 identity-project.com, 1 identity.aero, 1 @@ -73114,6 +72705,7 @@ ideologiaycultura-ap.tk, 1 ideorealm.tk, 1 idered.net, 1 +idermobilya.com, 1 idesign.tk, 1 idesoft.com, 1 idesoft.eu, 1 @@ -73140,7 +72732,6 @@ idleleo.com, 1 idlemon.net, 1 idlethoughtsandramblings.com, 1 -idlewildflowers.com, 1 idlxb.com, 1 idmanagement.gov, 1 idmaster.ml, 1 @@ -73170,9 +72761,9 @@ idrissi.eu, 1 idrivegroup.ie, 1 idrix.com.ec, 1 -idroot.us, 1 idrycolumbus.com, 1 idsafe.co.za, 1 +idsb.com.my, 1 idsc.com.tw, 1 idscomm.ca, 1 idsconsulting.co.nz, 1 @@ -73255,7 +72846,6 @@ iffland-hoeren.de, 1 ifgcdn.com, 1 ifh.cc, 1 -ifia.com, 1 ifindapple.com, 1 ifinity.org, 1 ifisher.xyz, 1 @@ -73278,7 +72868,6 @@ ifort.fr, 1 ifoss.me, 1 ifpi.se, 1 -ifrabb.fr, 1 iframefinancement.be, 1 ifreemax.ml, 1 ifreetion.cn, 1 @@ -73310,7 +72899,6 @@ igamingnews.com, 1 igamingnyheder.dk, 1 igamingpocketdirectory.com, 1 -igamingsuppliers.com, 1 igarage.nl, 0 igc-market.by, 1 igc-market.ru, 1 @@ -73363,13 +72951,11 @@ ignca.gov.in, 1 ignet.gov, 1 ignite-reading.com, 1 -ignite.cz, 1 igniteautomotive.co.uk, 1 ignitedfire.eu, 1 ignitedmindz.in, 1 igniteenergy.co.uk, 1 igniteheatcool.com.au, 1 -igniteyoursellingpotential.com, 1 ignitiondeck.com, 1 ignitours.com, 1 igor-hristenko.tk, 1 @@ -73408,7 +72994,6 @@ igshop.ir, 1 igsmgmt.com, 1 igtsolutions.com, 1 -iguacumaquinas.com.br, 1 igualdaton.org, 1 iguana.bg, 1 iguanacruda.tk, 1 @@ -73466,7 +73051,6 @@ ihrschutz24.de, 1 ihsan-fund.com, 1 ihsangans.my.id, 1 -ii-vi.com, 1 ii.cx, 1 ii5197.co, 1 ii6729.co, 1 @@ -73513,14 +73097,12 @@ iitranslation.com, 1 ij.rs, 1 ijceo.org, 1 -ijdc.org.in, 1 ijji.tv, 1 ijk.nl, 1 ijmondlijn.nl, 1 ijmuiderstrand.tk, 1 ijnokmpl.cf, 1 -ijonis.com, 1 -ijpmediagroup.com, 1 +ijonis.com, 0 ijpress.com, 1 ijsbaanwitten.nl, 1 ijsblokjesvormen.nl, 1 @@ -73578,8 +73160,9 @@ iknowthatgirl.com, 1 iknowthatgirlpremium.com, 1 ikonikas.com, 1 +ikonmktg.com, 1 ikoreg.nl, 1 -ikra24.in.ua, 1 +ikra24.in.ua, 0 ikrab.club, 1 iks.moe, 1 iksi.me, 1 @@ -73616,6 +73199,7 @@ ilconiglioblu.it, 1 ilcorrieredellacitta.com, 1 ilcourthelp.gov, 1 +ilctucson.com, 1 ildan.ai, 1 ildepu.tk, 1 ildisagio.tk, 1 @@ -73629,7 +73213,6 @@ ilektronika-farmakeia-online.gr, 1 ilemonrain.com, 1 ileonidze.tk, 1 -ilerisc.com, 1 iletisimmakinesi.com, 1 iletiyonetimi.com, 1 iletmen.com, 1 @@ -73660,7 +73243,6 @@ ilimitar.tk, 1 ilin.dk, 1 ilin.xyz, 1 -iling.me, 1 iliny.hu, 1 ilio.com, 1 ilionsky.com, 1 @@ -73684,7 +73266,6 @@ illinoiscourtscommission.gov, 1 illinoishealth.tk, 1 illinoisschools.us, 0 -illinoistitlesearch.com, 1 illiweb.com, 1 illjinx.info, 1 illnation.tk, 1 @@ -73742,13 +73323,11 @@ ilpiacenza.it, 1 ilpuntomagazine.it, 1 ilpuntosano.it, 1 -ilro.cloud, 1 ilrovescio.info, 1 ils-savaient.fr, 1 ils.lt, 1 ilsalvagente.it, 1 ilsedelangeforum.tk, 1 -ilsofvilnius.lt, 1 iltec.ru, 1 iltis.live, 1 iltis.rocks, 1 @@ -73759,7 +73338,6 @@ ilug-ktm.tk, 1 iluman.tk, 1 ilumantio.tk, 1 -ilumina2photo.es, 1 iluminatia.com, 1 ilunion.tk, 1 ilusionistas.tk, 1 @@ -73771,14 +73349,12 @@ ilya.top, 1 ilyabakhlin.com, 1 im-a.cricket, 1 -im-alter-daheim.ch, 0 im-c-shop.com, 1 im-defensoras.org, 1 im-haus-sonnenschein.de, 1 im-in.space, 1 im-internet-geld-verdienen.tk, 1 im-menuiserie.fr, 1 -im-razmakh.ru, 1 im-s.net, 1 im-schlachthof.de, 1 im4h.de, 1 @@ -73793,8 +73369,8 @@ image4arab.tk, 1 imagealbums.tk, 1 imagecom.tk, 1 +imagecompressor.tools, 1 imagecurl.com, 0 -imagelr.com, 1 imagen891.tk, 1 imagenesdedibujosalapizfacilesdehacer.com, 1 imagensdemarca.pt, 1 @@ -73831,7 +73407,6 @@ imajjeans.com, 1 imakash.gq, 1 imamenu.com, 1 -imamiyadental.jp, 1 imanageproducts.co.uk, 1 imanageproducts.com, 1 imanageproducts.uk, 1 @@ -73874,22 +73449,22 @@ imdbpro.com, 1 imdbresume.com, 1 ime-a-tolerancia-eredmenye.club, 1 +ime-natural-perfume.com.au, 1 imed.com.pt, 1 imed.pt, 1 imedi.it, 1 -imediabay.com, 1 imediafly.com, 1 imediato.pt, 1 imeigsx.com, 1 -imena-znachenie.ru, 1 imenalfa.com, 1 imendit.de, 1 imenieto.com, 1 +imer.av.tr, 1 imeria.tk, 1 imerys-mineraux-decoratifs.com, 1 imesh-light.tk, 1 imex-dtp.com, 1 -imforza.com, 0 +imforza.com, 1 img.ovh, 1 imgaa.com, 1 imgbb.com, 1 @@ -73900,8 +73475,9 @@ imgmodels.com, 0 imgo.ga, 1 imgo.tk, 1 +imgossip.com, 1 imgossip.net, 1 -imgup.co, 1 +imgproxy.org, 1 imguploaden.nl, 1 imhealth.co.uk, 1 imhua.com, 0 @@ -73909,6 +73485,7 @@ imi-rhapsody.eu, 0 imibo.com, 1 imicroscope.tk, 1 +imigos.com, 1 imigrate.me, 1 imin.co, 1 iming.fr, 1 @@ -73922,7 +73499,6 @@ imizicyber.com, 1 imjason.hk, 1 imjo.in, 1 -imjosepho.lol, 1 imjustcreative.com, 1 imkan.tours, 1 imkerei-bad-oldesloe.de, 1 @@ -74082,6 +73658,7 @@ imobiliariaprofit.com.br, 1 imobiliariarealdream.com.br, 1 imobilien.tk, 1 +imobpages.com.br, 1 imocor.com, 1 imocor.com.br, 1 imoe.fun, 0 @@ -74092,6 +73669,7 @@ imolog.cl, 1 imoner.ga, 1 imoneynet.com, 1 +imonq.am, 1 imonter.ru, 1 imorano.it, 1 imos3d.com, 1 @@ -74100,6 +73678,7 @@ imouyang.com, 0 imove-germany.de, 1 imoveisavenda.rio.br, 1 +imovelguide.com.br, 1 imp-iraq.com, 1 impac-systems.com, 1 impact-fluids.com, 1 @@ -74118,17 +73697,16 @@ impactparcels.co.uk, 1 impactphysio.co.uk, 1 impactpub.ch, 0 +impactusfootball.com, 1 impactyou-academy.nl, 1 impactyou.nl, 1 impakho.com, 1 impalaparts.com, 1 -imparat.de, 0 imparostobene.it, 1 impartner.com, 1 impaya.online, 1 impec-cable.com, 1 impeka.in, 1 -impelsys.com, 1 impelup.com, 1 impendulo.org, 1 imperator-janssens.tk, 1 @@ -74192,7 +73770,8 @@ imprensaglobal.com.br, 1 imprenta.bg, 1 imprentamanonelles.com, 1 -impres.com, 1 +imprentapr.net, 1 +impres.com, 0 impresa-di-pulizie.milano.it, 1 impresadipulizia.milano.it, 1 impresadipulizia.roma.it, 1 @@ -74238,12 +73817,10 @@ impulsatumarca.es, 1 impulse-akademie.de, 1 impulse-clan.de, 1 -impulsewebdesign.nl, 1 impulsocristiano.com, 1 imput.net, 1 imqrscan.com, 1 imranc.ca, 1 -imranhasan.info, 1 imranhossen.ml, 1 imransarwar.com, 1 imrbq.com, 1 @@ -74406,7 +73983,6 @@ incrediblez.tk, 1 increment.com, 1 incrementation.net, 0 -incrementx.com, 1 increso.it, 0 incrom.com, 0 incrona.com, 1 @@ -74426,6 +74002,7 @@ indegene.com, 1 indeika.ml, 1 indeksonline.tk, 1 +indelevel.tech, 1 indemer.mc, 1 indenturaswork.lt, 1 independenceia.gov, 1 @@ -74469,7 +74046,6 @@ indiaflowermall.com, 1 indiafm.tk, 1 indiaforums.com, 1 -indiafoss.net, 1 indiainvestments.wiki, 1 indiamistress.tk, 1 indianacareerconnect.com, 1 @@ -74482,11 +74058,11 @@ indianapolispsychologistsers.ga, 1 indianapolispsychologistsest.ga, 1 indianareflux.com, 1 -indianatitlesearch.com, 1 indianawaterdamagerepairpros.com, 1 indianbeauty.ml, 1 indianbridalservices.com, 1 indianbrides.cf, 1 +indiancountryguide.com, 1 indiancreekvillagepdfl.gov, 1 indiandramasonline.tk, 1 indianengineer.tk, 1 @@ -74521,7 +74097,6 @@ indicana.pl, 1 indicatifs.fr, 1 indicelectronics.com, 1 -indichosts.net, 1 indicia.nl, 1 indico.tk, 1 indicodata.ai, 1 @@ -74551,9 +74126,9 @@ indinet.co.in, 1 indioca.gov, 1 indir2017.tk, 1 +indiragandhi.com, 1 indirhadi.tk, 1 indirimkuponumarketim.com, 1 -indirimlim.com, 1 indistopia.com, 1 inditip.com, 1 indivicloud.me, 0 @@ -74608,6 +74183,7 @@ indusfastremit-us.com, 1 indushospital.org.pk, 1 indust.me, 1 +industechinnova.com, 1 industreegroupstadium.com.au, 1 industreiler.com.br, 1 industriadelfuturo.com, 1 @@ -74713,7 +74289,6 @@ infinity-photography.co.uk, 0 infinity-store.fr, 1 infinitybc.se, 1 -infinitybooksindia.in, 1 infinityels.com, 1 infinityend.de, 1 infinityfaces.tk, 1 @@ -74741,7 +74316,6 @@ inflammatory.tk, 1 inflanev.com, 1 inflatablehire-scotland.co.uk, 1 -inflatablesny.com, 1 inflatamania.com, 1 inflate-a-bubbles.co.uk, 1 inflatiecalculator.nl, 1 @@ -74787,7 +74361,7 @@ infobiznes.cf, 1 infobiznes.ga, 1 infobiznes.tk, 1 -infoblox.com, 0 +infoblox.com, 1 infobot.email, 1 infobot.eu, 1 infobot.nl, 1 @@ -74808,7 +74382,6 @@ infoderechopenal.es, 1 infodis.com, 1 infoduv.fr, 1 -infoeccos.com, 1 infofactory.it, 1 infofarmacos.cl, 1 infoflora.ch, 1 @@ -74908,7 +74481,7 @@ infoschool.ml, 1 infosec-tools.de, 1 infosec.exchange, 0 -infosec.sk, 1 +infosec.md, 1 infosecchicago.com, 1 infosecdecompress.com, 1 infosecindex.com, 1 @@ -74941,19 +74514,22 @@ infowheels.tk, 1 infoworm.org, 1 infoyarsk.com, 1 -infpik.store, 1 infra-se.com, 0 +infra-trust.org, 1 infra-voice.hu, 1 infra.beer, 1 infra.land, 1 infraball.com, 1 infrabase.cc, 1 infrabox.nl, 1 +infrabyte.com.au, 1 +infracache.com, 1 infracron.com, 1 infradio.am, 1 infradive.com, 1 infraedifice.com, 1 infraenlinea.com, 1 +infrafor.us, 1 infragardnational.org, 1 infralicht.nl, 1 infraloon.com, 1 @@ -74963,7 +74539,7 @@ infranium.info, 1 infranium.net, 1 infranium.org, 1 -infrapass.com, 1 +infrapack.com, 1 infrapedia.ch, 1 infrapirtis.lt, 1 infraplushk.com, 1 @@ -75016,7 +74592,6 @@ ingfreelancer.com, 1 ingfss.ru, 1 inghamcountymi.gov, 1 -ingjobs.ch, 1 ingkprf.ru, 1 inglebycakes.co.uk, 1 inglesencanada.cf, 1 @@ -75062,7 +74637,6 @@ inilahjateng.com, 1 inilahkalsel.com, 1 inilahkendari.com, 1 -inilahtv.com, 1 inima.org, 1 inimicalpart.com, 1 inin.gq, 1 @@ -75121,7 +74695,6 @@ inl.gov, 1 inl.int, 1 inlandwaterwaylistings.com, 1 -inletangler.com, 1 inlimiters.ga, 1 inlimitest.ga, 1 inline-online.tk, 1 @@ -75160,6 +74733,7 @@ inmusicfestival.com, 1 inmyhead.tk, 1 inn-skin.ru, 1 +inn.law, 1 innaresting.net, 1 innari.it, 1 innatepotatoes.com, 1 @@ -75191,6 +74765,7 @@ inno2grid.com, 1 innocence.org.cn, 0 innocenceseekers.net, 1 +innocito.com, 1 innogames.com, 1 innogames.de, 1 innohb.com, 1 @@ -75198,14 +74773,14 @@ innomax.com, 1 innomotion.eu, 1 innomotion.nl, 1 -innosec.ch, 1 +innosec.ch, 0 innosoftfusiongo.com, 1 innosysdelft.com, 1 innoteknology.com, 1 -innova-online.at, 1 innova-scape.info, 1 innovacion.ai, 1 innovacoachgroup.com, 1 +innovacom.eu, 1 innovairservices.ch, 0 innovamedical.co.uk, 1 innovaptor.at, 1 @@ -75260,8 +74835,6 @@ inotic.ir, 1 inovalon.com, 1 inovalon.global, 1 -inovamaquinas.com, 1 -inovamaquinas.com.br, 1 inovamedia.net, 1 inovangroup.com.tr, 1 inovaqb.pt, 1 @@ -75282,6 +74855,7 @@ inpector.de, 1 inpharmation.com, 1 inphima.de, 1 +inphysico.com, 1 inpresso.pl, 1 inprode.com, 1 inprofit.eu, 1 @@ -75371,7 +74945,6 @@ insolent.ch, 1 insomnia-isterica.tk, 1 insomnia.gr, 1 -insomniaapp.com, 0 insomniac.games, 1 insomniac.pl, 1 insomniac.ro, 1 @@ -75379,6 +74952,7 @@ insource.org, 1 inspaceindustrial.com, 1 inspect-solutions.com, 1 +inspectassets.co.za, 1 inspectia.io, 1 inspiraenterprise.com, 1 inspirationallight.com, 1 @@ -75435,6 +75009,7 @@ instahub.net, 0 instalamosyreformamos.es, 1 instalatii-pardoseala.ro, 1 +installateursportaal.nl, 1 installation-hotte-cuisine.com, 1 installation-of-xenon.tk, 1 installationdehotte.com, 1 @@ -75453,7 +75028,6 @@ instant.io, 1 instantautosite.org, 1 instantboats.com, 1 -instantcryptomix.com, 1 instanteindeleble.com, 1 instantessay.tk, 1 instantfinishers.ga, 1 @@ -75563,6 +75137,7 @@ intab.io, 1 intafe.co.jp, 1 intajmob2.net, 1 +intakeai.info, 1 intakelens.com, 1 intakesync.com, 1 intakings.tk, 1 @@ -75572,7 +75147,6 @@ intcn.ru, 1 intechdaybcp.com, 1 intechenviro.com, 1 -intecore.com, 1 inteforge.com, 1 integ.jp, 1 integr8t.net, 1 @@ -75588,12 +75162,12 @@ integralrechner.de, 1 integralschool.ru, 1 integralthread.com, 1 +integramicro.com, 1 integrammes.fr, 1 integramossst.com, 1 integratec.show, 1 integratedaesthetics.com, 1 integratedbms.co.za, 1 -integratedmedicalonline.com, 1 integratedphysio.com.au, 1 integration-mouvements-oculaires.com, 0 integrativetherapy.com.mt, 1 @@ -75637,14 +75211,14 @@ intellektuaalomand.ee, 1 intelliance.eu, 1 intellibill.io, 1 +intellicene.com, 1 intellicore.cl, 1 intellicus.com, 1 intellicyb.com, 1 intellify.me, 1 intelligence-explosion.com, 1 -intelligentglo.fi, 1 intelligentgo.org, 1 -intelligentit.io, 0 +intelligentit.io, 1 intelligentnegotiator.com, 0 intelligentrics.com, 1 intelligentwaves.com, 1 @@ -75661,7 +75235,6 @@ intelly365.nl, 1 intelogix.com, 1 intelrealsense.com, 1 -inteltechniques.com, 1 intelx.io, 1 intencje.pl, 1 intenirphoto.tk, 1 @@ -75675,7 +75248,6 @@ inter-news.tk, 1 interabbit.co, 1 interabbit.com, 1 -interacademybrazil.com.br, 1 interacthindu.tk, 1 interactiveanddesign.com, 1 interactivedigesters.ga, 1 @@ -75726,6 +75298,7 @@ interdescargas.tk, 1 interdez.com.ua, 1 interender.com, 1 +interesnyimir.com, 1 interessengemeinschaft-pregelstrasse.tk, 1 interesting.ac.cn, 1 interestingfacts.gq, 1 @@ -75733,7 +75306,6 @@ interface-systems.de, 1 interface31.ru, 1 interfaceaudit.com, 1 -interfaceware.com, 1 interfloraservices.co.uk, 1 interflores.com.br, 1 interfug.de, 1 @@ -75804,7 +75376,6 @@ internationaltercumeburosu.com.tr, 1 internationaltranslating.com, 1 internationalweekly.tk, 1 -internect.co.za, 1 internet-aukcion.info, 1 internet-department.net, 1 internet-drive.tk, 1 @@ -75834,7 +75405,6 @@ internetkunskap.se, 1 internetline.tk, 1 internetmagaz.tk, 1 -internetmarketingprofitscenter.com, 1 internetmarkets.net, 1 internetmedia.si, 1 internetmineers.ga, 1 @@ -75861,7 +75431,6 @@ internetverkstan.se, 1 internetzaim.tk, 1 internetzentrale.net, 1 -internetzonei.com, 1 internews24.com, 1 interparcel.com, 1 interpass.id, 1 @@ -75915,7 +75484,7 @@ inthe10.com, 1 inthechair.com, 1 inthechileanwoods.tk, 1 -inthecompanyofguides.com, 1 +inthecompanyofguides.com, 0 inthekjv.com, 1 inthepicture.com, 1 inthevip.com, 1 @@ -75989,7 +75558,7 @@ intuitionlegal.com.au, 1 intuitlearn.com, 1 intux.be, 0 -intvonline.com, 1 +intvonline.com, 0 intvoting.com, 1 intygrate.com, 1 inu.nl, 1 @@ -76021,6 +75590,7 @@ invariax.com, 1 invata-ma.ro, 1 invenio.software, 1 +inveniofinancial.com, 1 invenpro.tech, 1 inventarioti.serveftp.net, 1 inventati.org, 1 @@ -76038,6 +75608,7 @@ inventorybase.co.uk, 1 inventorybase.com, 1 inventoryimages.co.uk, 1 +inventoryoperations.com, 1 inventos.tk, 1 inventoseinventores.com, 1 inventum.cloud, 1 @@ -76061,6 +75632,7 @@ investasimudah.tk, 1 investasipasti.tk, 1 investbit.nl, 1 +investeam.org, 1 investegate.de, 1 investelogo.com.br, 1 investgold.ml, 1 @@ -76147,7 +75719,6 @@ invitationtrackerers.ga, 1 invitationtrackerest.ga, 1 invitebiz.tk, 1 -invitelink.in, 1 invitepeople.com, 1 invitescafe.com, 1 invito.tk, 1 @@ -76190,7 +75761,7 @@ iocgpt.com, 1 iochicago.net, 1 iocorp.jp, 1 -iocp.org, 0 +iocp.org, 1 ioctl.cc, 1 iocurrents.com, 0 iodb.ru, 1 @@ -76244,7 +75815,7 @@ iosartstudios.gr, 1 iosco.org, 1 iosecurity.co.za, 1 -ioserve.net, 1 +ioserve.net, 0 iosjailbreakiphone.com, 0 iosme.ga, 1 iosolutions.cl, 1 @@ -76259,7 +75830,6 @@ iotanodes.org, 1 iotekha.tv, 1 iotflowers.com, 1 -iotjenik.eu, 1 iotmu.com, 1 iotportal.tk, 1 iotrasloco.it, 1 @@ -76278,7 +75848,6 @@ iowasmokefreeair.gov, 1 iowastatedaily.com, 1 iowastem.gov, 1 -iowatitlesearch.com, 1 iowaworks.gov, 1 iowaworksforveterans.gov, 1 iowawx.com, 1 @@ -76321,8 +75890,8 @@ iparduotuves.lt, 1 iparenda.tk, 1 iparkki.com, 1 -ipaustralia.gov.au, 1 ipay2day.com, 1 +ipbox.dpdns.org, 1 ipcc-wg3.gov, 1 ipcim.com, 1 ipclabs.tk, 1 @@ -76361,6 +75930,7 @@ iphoned.nl, 1 iphonekaitori.tokyo, 0 iphonemobile.ro, 1 +iphonerecycling.com, 1 iphoneunlock.nu, 1 ipid.me, 1 ipidcreator.eu, 1 @@ -76387,7 +75957,6 @@ ipms.nl, 1 ipmscorp.com, 1 ipmsdeutschland.de, 1 -ipn.cloud, 1 ipnoze.com, 1 ipnrt.net, 1 ipo.inf.br, 1 @@ -76400,6 +75969,7 @@ ipon.hu, 1 ipon.ro, 1 ipoteka.az, 1 +ipotekebi.ge, 1 ipow.tk, 1 ipperde.tk, 1 ippis.rw, 1 @@ -76417,7 +75987,6 @@ iproov.com, 1 iprox.nl, 1 iprpetitiondenied.com, 1 -iprs.top, 1 ips-consult.nl, 1 ips-sachsen.de, 1 ips.com.my, 1 @@ -76439,9 +76008,11 @@ iptoasn.com, 1 iptops.com, 1 iptor.com, 1 +iptorian.ai, 1 iptv-best.com, 1 iptv-luxury.com, 1 iptv.ge, 1 +iptv.team, 1 iptvanbieter4k.com, 1 iptvcanada.biz, 1 iptvfriend.ga, 1 @@ -76481,6 +76052,7 @@ iqos.ml, 1 iqphone.cf, 1 iqphone.ga, 1 +iqraproject.com, 1 iqsecurity.eu, 1 iqsmn.org, 0 iqtechportal.com, 1 @@ -76522,7 +76094,6 @@ iranpedia.tk, 1 iranrebate.com, 1 iranturkey.info, 1 -iranvpn.com, 1 iranwiki.ovh, 1 iraq2u.tk, 1 iraq4u.tk, 1 @@ -76572,7 +76143,7 @@ ireneskralen.tk, 1 irenictherapy.com, 1 irentcar.com.tw, 1 -ireps.gov.in, 1 +ireps.gov.in, 0 iresineworld.tk, 1 irf2.pl, 1 irfanweb.cf, 1 @@ -76603,7 +76174,6 @@ irische-segenswuensche.info, 1 irisconseil.com, 1 irisdesideratum.com, 1 -irisdupau.nl, 1 irisfansite.tk, 1 irisflowerhotel.com, 1 irish.radio, 1 @@ -76643,6 +76213,7 @@ iroisedh.fr, 1 irokotv.com, 1 iron-infos.cf, 1 +iron-velvet.de, 1 iron.io, 1 ironarch.net, 1 ironbelly.pro, 1 @@ -76650,7 +76221,6 @@ ironbowhealthcare.com, 0 ironbreedclassic.com, 1 ironcage.tk, 1 -ironcladapp.com, 1 ironcleanse.com, 1 ironcompass.io, 1 ironcountyut.gov, 1 @@ -76682,7 +76252,6 @@ iroomz.co.uk, 1 iroquoiscountyil.gov, 1 irpadafrique.ml, 1 -irr52.ru, 1 irr59.ru, 1 irreviastudios.com, 1 irrewilse.se, 1 @@ -76693,9 +76262,11 @@ irscouponsest.ga, 1 irse.org, 1 irstaxforumonline.com, 1 +irt.cx, 1 iruca.co, 1 iruniruten.tk, 1 irvetclinic.com, 1 +irvinedds.com, 1 irvineinternal.com, 1 irvinekentucky.gov, 1 irvingbooks.com, 1 @@ -76720,7 +76291,6 @@ isa5417.com, 1 isaa.cl, 1 isaac.run, 1 -isaaccs.org, 1 isaacgolding.com, 1 isaackabel.cf, 1 isaackabel.ga, 1 @@ -76810,7 +76380,6 @@ ishiharaken.com, 1 ishii.de, 1 ishikawadc.jp, 1 -ishiro.me, 1 ishland.com, 1 ishtamar.fr, 1 ishtyl.com, 1 @@ -76824,7 +76393,6 @@ isimonbrown.co.uk, 1 isimonline.tk, 1 isincheck.com, 1 -isiponline.ca, 1 isis.cloud, 1 isiso.com.tr, 1 isistomie.com, 0 @@ -76835,7 +76403,6 @@ isitnuclearwaryet.com, 1 isitrest.info, 1 isitshotime.com, 1 -isiwebapp.com, 1 iska.plus, 0 iskanderbroere.nl, 1 iskaron.de, 1 @@ -76865,7 +76432,6 @@ islamicsolution.tk, 1 islamipages.tk, 1 islamisgreat.tk, 1 -islamiyet.gen.tr, 0 islamiyet.tk, 1 islamnews.ga, 1 islamnewss.tk, 1 @@ -76893,7 +76459,7 @@ islandreporters.com, 1 islandsofgreenturtles.tk, 1 islandwaterparkac.com, 1 -islandwidelandsurveyors.com, 1 +islandwidelandsurveyors.com, 0 islasvirgenes.org, 1 islatortuga.eu, 1 islekyapi.com, 1 @@ -76905,6 +76471,7 @@ islief.com, 1 islightdown.today, 1 islipny.gov, 0 +islom.uz, 1 islykaithecutest.cf, 1 islykaithecutest.ml, 1 ismail-biber.tk, 1 @@ -76913,7 +76480,6 @@ ismart.org, 1 ismekkurs.com, 1 ismena.bg, 1 -ismetroburning.com, 1 isminc.com, 1 ismmed.org, 1 ismywebsitepenalized.com, 1 @@ -76955,6 +76521,7 @@ isotope.gov, 1 isotopes.gov, 1 isovideo.com, 1 +isp6.net, 1 ispactivo.com, 1 ispadmin.eu, 1 ispanika.tk, 1 @@ -76996,9 +76563,6 @@ israelstory.org, 1 israkurort.com, 1 isramedia.tk, 1 -isreedyinthe.uk, 1 -isreedyinthe.us, 1 -isreedyintheuk.com, 1 isrib.com, 1 isrss.com, 1 issacdelgado.com, 1 @@ -77015,7 +76579,6 @@ issnet.ga, 1 issnet.gq, 1 issuecapture.com, 1 -issuehub.de, 1 issuerconsulting.com, 1 issues.email, 1 issuetrak.com, 1 @@ -77080,7 +76643,6 @@ iswag.se, 1 iswanto.com, 1 iswao-onlinexcontest.com, 1 -iswapgh.com, 1 isy3deco.com, 0 isync.tw, 1 isyscm.com, 1 @@ -77119,6 +76681,7 @@ it-safely.de, 1 it-seems-to.work, 1 it-service24.com, 1 +it-sicherheit-aus-deutschland.de, 1 it-specialist.com.ua, 1 it-stack.de, 1 it-stek.ru, 1 @@ -77224,7 +76787,7 @@ itcybersecurity.gr, 1 itdashboard.gov, 1 itdata.tk, 1 -itdesign.de, 1 +itdesign.de, 0 itdpends.ca, 1 itds-consulting.com, 1 itds-consulting.eu, 1 @@ -77247,7 +76810,6 @@ itemcreator.tk, 1 itemmc.com, 1 itempathy.com, 1 -itemyapi.com, 1 iteon.pl, 1 itepechi.me, 1 iteracy.com, 1 @@ -77268,10 +76830,7 @@ itforprof.com, 1 itg.com.pl, 1 itg.net.pl, 1 -itgadgetsonline.com, 0 itgeeks.nl, 1 -itgoesup.com, 1 -itgoesupent.com, 1 itgoesupentertainment.com, 1 ithakama.com, 1 ithakama.cz, 1 @@ -77286,7 +76845,6 @@ ithuthuat.vn, 1 itibharari.edu.in, 1 itikon.com, 1 -itilo.de, 0 itinerariummentis.org, 1 itineris.co.uk, 1 itinero.xyz, 1 @@ -77310,7 +76868,6 @@ itmastersupport.tk, 1 itmatournai.tk, 1 itmedicinai.lt, 1 -itmindscape.com, 1 itms.co.jp, 1 itnet.com.ua, 1 itnota.com, 1 @@ -77340,7 +76897,6 @@ itplace.bg, 1 itpol.dk, 1 itpress.fi, 1 -itprosmgmt.com, 1 itprotect.pl, 1 itqlatam.com, 1 itrad.ie, 1 @@ -77415,6 +76971,7 @@ itslife.in, 1 itslolly.com, 1 itsloution.tk, 1 +itslug.com, 1 itsm.tools, 1 itsmeaxel.ovh, 1 itsmeit.co, 0 @@ -77431,11 +76988,11 @@ itspartytimesweetinflations.com, 1 itspersonalizeders.ga, 1 itspersonalizedest.ga, 1 -itspersonaltraining.nl, 1 itsquiet.org, 1 itsrana.com, 1 itssolidest.ga, 1 itsstefan.eu, 1 +itssujeeth.com, 1 itstartswithme.ca, 0 itstatic.tech, 1 itstimetravel.com, 1 @@ -77507,6 +77064,7 @@ iv4kiso.com, 1 iva.ge, 1 ivahbbiz.tk, 1 +ivamit.com, 1 ivan-maliy.tk, 1 ivan-popov.tk, 1 ivan-tadej.tk, 1 @@ -77521,6 +77079,7 @@ ivandafish.net, 1 ivanderevianko.com, 1 ivanesalud.com, 1 +ivanfitro.com, 1 ivanguaderrama.com, 1 ivaniglesias.es, 1 ivanilla.org, 1 @@ -77538,6 +77097,7 @@ ivanya.tk, 1 ivanzorin.cf, 1 ivarfinance.com, 1 +ivatlegal.com, 1 ivdda.com, 1 ivdnt.org, 1 iveaghgardenhotel.ie, 1 @@ -77626,11 +77186,9 @@ iwd.gc.ca, 1 iwebdna.com, 0 iwebing.tk, 1 -iweblab.it, 1 iwebsolution.tk, 1 iwec.pk, 1 iwex.swiss, 1 -iwf.sport, 1 iwhite.tk, 1 iwiki.net, 1 iwill.tr, 1 @@ -77648,8 +77206,8 @@ iww.org.au, 1 ix.run, 1 ix8.ru, 0 +ixc.co.kr, 1 ixconsult.eu, 1 -ixg.llc, 1 ixiacom.com, 1 ixigua.com, 1 ixingchen.org.cn, 0 @@ -77671,7 +77229,6 @@ ixypsilon.net, 1 iy.uy, 1 iyadalkassab.com, 1 -iyan.es, 1 iyanla.com, 1 iyanmv.com, 1 iyassu.com, 1 @@ -77739,9 +77296,6 @@ izzat.me, 1 izzqz.me, 1 izzy.is, 1 -izzy.kiwi, 1 -izzycat.net, 1 -izzymendosa.net, 1 izzyontour.tk, 1 j-annonce.co.il, 1 j-harrison-media.co.uk, 1 @@ -77838,7 +77392,6 @@ jaberg-rutschi.ch, 1 jabergrutschi.ch, 1 jabjab.de, 1 -jablanac.com, 1 jabodent.com, 1 jabonariumshop.com, 1 jabou.co.uk, 1 @@ -77889,7 +77442,6 @@ jackops.com, 1 jackpearce.co.uk, 1 jackpothappy.com, 1 -jackpotinsight.com, 1 jackpots.ch, 1 jackripper.tk, 1 jackrussel.tk, 1 @@ -77927,7 +77479,6 @@ jackwarren.info, 1 jackwinhui.com, 1 jackwu.net, 1 -jackylawless.net, 1 jackyliao.me, 1 jackyliao123.tk, 1 jackysjourney.de, 1 @@ -77947,11 +77498,10 @@ jacool.tk, 1 jacopo.tk, 1 jacopogiorgini.it, 1 -jacopomolina.me, 1 jacquant.be, 1 jacquelinebellefontaine.co.uk, 1 jacquelinesdream.tk, 1 -jacques-sanchez.com, 1 +jacques-sanchez.com, 0 jacquesdedixmude.eu, 1 jacquin.bzh, 1 jacquin.eu, 1 @@ -77967,6 +77517,7 @@ jaderoller.com, 1 jadesong.cn, 0 jadesong.net, 1 +jadhavedutech.com, 1 jadhunaidi.net, 1 jadid-alwadifa.com, 1 jadiercms.cf, 1 @@ -77993,7 +77544,6 @@ jagspecialisters.ga, 1 jagspecialistest.ga, 1 jaguar-network.com, 1 -jaguar-print.ru, 1 jaguarkuda.com, 1 jaguarlandrover-asse.be, 1 jaguarlandrover-occasions.be, 1 @@ -78029,7 +77579,6 @@ jakarta-tourism.go.id, 1 jakarta.ee, 1 jakartaee.org, 1 -jakartaone.org, 1 jake.ac, 1 jakeedwards.info, 1 jakefieldhouse.co.uk, 1 @@ -78065,9 +77614,9 @@ jakubmeysner.com, 1 jakubsindelar.cz, 1 jakubvrba.cz, 1 -jakumammy.pl, 1 jal-ja.com, 1 jala.tech, 1 +jalanyu.com, 1 jalebiyat.tk, 1 jaleesa.sa, 1 jaleo.cn, 1 @@ -78125,6 +77674,7 @@ jamesnorth.productions, 1 jamespiepmeier.com, 1 jamespreade.xyz, 1 +jamespthurn.com, 1 jamesredmond.tk, 1 jamesrobertson.net, 1 jamesrobertson.sh, 1 @@ -78168,18 +77718,17 @@ jamil-cloud.com, 1 jaminidesign.com, 1 jaminit.co.uk, 1 +jaminit.me, 1 +jaminit.xyz, 1 jamis.online, 1 jamiviz.com, 1 jamjestsimon.pl, 1 jamminjarsonline.com, 1 -jammucake.com, 1 jammy4312.me, 1 jamonesrute.com, 1 jamonsilva.com, 1 -jampedals.com, 1 jamrulidze.com, 1 jamstack.icu, 1 -jamstallt.se, 1 jamstatic.fr, 1 jamusa.tk, 1 jamyeprice.com, 0 @@ -78308,22 +77857,20 @@ japanmotors.sn, 1 japannext.co.jp, 1 japanphilosophy.com, 0 -japanporns.pro, 1 japanroll.cf, 1 japansepuzzel.tk, 1 japantravel.tk, 1 -japanwowsex.com, 1 jape.today, 1 japico.or.jp, 1 japlin.io, 1 japlin.tk, 1 japonskonamiru.cz, 1 -japonyol.net, 1 japornpics-video.com, 1 japow.tw, 1 japowater.com, 1 jappleng.com, 1 japreviu.com, 1 +japyaroundworld.com, 1 jaquelin.tk, 1 jar.cool, 1 jaraizaboli.tk, 1 @@ -78392,6 +77939,7 @@ jasco.gov, 1 jasekeke.co.kr, 1 jaseng.ga, 1 +jasett.ca, 1 jasewhite.com, 1 jashinchan.cn, 1 jasik.xyz, 0 @@ -78408,6 +77956,7 @@ jason-isaacs.tk, 1 jason.red, 1 jasonamorrow.com, 0 +jasonbruder.com, 1 jasoncosper.com, 1 jasoncs.eu.org, 1 jasonf.com, 1 @@ -78452,7 +78001,6 @@ jatransportadora.com, 1 jaumepons.net, 1 jav.ad, 1 -jav.hk, 1 java-fan.tk, 1 java-for-minecraft.com, 1 java-tracking.gq, 1 @@ -78482,6 +78030,7 @@ javierflorescastillero.es, 0 javiergddw.com, 1 javierjurado.tk, 1 +javierlorente.es, 1 javiermascherano.tk, 1 javiersanchez.tk, 1 javitron.tk, 1 @@ -78496,12 +78045,14 @@ jawharati.tk, 1 jaxfstk.com, 1 jaxmore.com, 1 +jaxsjunk.com, 1 jaxxnet.co.uk, 1 jay4.is, 1 jayanthreddy.ml, 1 jaybeez.tk, 1 jaybrokers.com, 1 jaydehaidar.com, 1 +jaydenart.com, 1 jaydenrichardson.com, 1 jaydenwilliams.xyz, 1 jayfrogel.com, 1 @@ -78518,7 +78069,7 @@ jaypandit.me, 1 jaypark.gq, 1 jaypeeonline.tk, 1 -jaysanart.com, 0 +jaypetrusma.com, 1 jaysaw.me, 1 jayshettycoaching.com, 1 jayspage.tk, 1 @@ -78540,7 +78091,6 @@ jazzfeet.co.uk, 1 jazzfest.dk, 1 jazzhead.com, 1 -jazzindeck.com, 1 jazzleadsheets.com, 1 jazzman.tk, 1 jazzy-feet.com, 1 @@ -78583,7 +78133,7 @@ jcaicedo.tk, 1 jcarmand.com, 1 jcaslabs.com, 1 -jcatechnologies.com, 1 +jcatechnologies.com, 0 jcbank.com, 1 jcbank.com.jo, 1 jccars-occasions.be, 1 @@ -78592,9 +78142,7 @@ jcchouinard.com, 1 jccomunicaciones.net, 1 jcdenast.tk, 1 -jcelectronics.com.au, 1 jchn.be, 1 -jci.bio, 1 jci.care, 1 jci.cc, 1 jci.charity, 1 @@ -78722,7 +78270,6 @@ jeannecalment.com, 1 jeannedekkers.tk, 1 jeannekunst.tk, 1 -jeannelucienne.fr, 1 jeannette-py.fr, 1 jeanniegraefe.tk, 1 jeannotbel.tk, 1 @@ -78744,7 +78291,6 @@ jecjacshop.com, 1 jecnetwork.gq, 1 jed.site, 1 -jeda.ch, 1 jeda.im, 1 jedatw.com, 1 jedayoshi.com, 1 @@ -78808,6 +78354,7 @@ jeffhoyphotography.com, 1 jeffhuxley.com, 1 jeffkaliel.com, 0 +jeffkershner.com, 1 jeffok.com, 1 jeffpenchoff.com, 1 jeffreyhaferman.com, 1 @@ -78847,7 +78394,6 @@ jelleluteijn.pro, 1 jelleraaijmakers.nl, 1 jellinbah.com.au, 1 -jellybeanpress.com, 1 jellyfin.one, 1 jellyfin.spdns.eu, 1 jellyfish.co, 1 @@ -78865,6 +78411,7 @@ jemezsprings-nm.gov, 1 jemnezymy.com, 1 jemoreng.tk, 1 +jemputan-karyawan.site, 1 jems-il.gov, 1 jena-fans-aurich.tk, 1 jena.de, 1 @@ -78879,7 +78426,6 @@ jenelle.ml, 1 jeneratorkiralama.name.tr, 1 jenever.amsterdam, 1 -jeney.eu, 1 jenhargrovephotography.com, 1 jenileephotographyphotos.com, 1 jenin.ml, 1 @@ -78910,7 +78456,6 @@ jennymovies.com, 1 jennysarl.ch, 0 jennysource.tk, 1 -jennystella.net, 1 jennythebaker.com, 1 jeno.cf, 1 jenolson.net, 1 @@ -79055,13 +78600,13 @@ jetapi.org, 1 jetcard.co.uk, 1 jetcharterbozeman.com, 1 -jetcost.com, 1 jetcraft.tk, 1 jetdrywallinteriors.com, 1 jetedhumain.fr, 1 jetgatepower.com, 1 jethash.io, 1 jetkittens.co.uk, 1 +jetly.ai, 1 jetmirshatri.com, 0 jetmusic.tk, 1 jetpack.com, 1 @@ -79119,8 +78664,7 @@ jey-line.de, 1 jezebelsromance.com, 1 jezero.tk, 1 -jezzicat.org, 1 -jf-igrejanovadosobral.pt, 1 +jf-igrejanovadosobral.pt, 0 jf-madalena.tk, 1 jf-sulpice.notaires.fr, 1 jf886.cc, 1 @@ -79149,7 +78693,6 @@ jfy.jp, 1 jg-cdn.com, 1 jg-skid.me, 1 -jg-tc.com, 1 jg078.com, 1 jg8nid.tech, 1 jgambard.me, 1 @@ -79204,6 +78747,7 @@ jiangmei.ml, 1 jiangmen.tk, 1 jiangrun.com, 1 +jiangsgallery.com, 1 jiangshiart.com, 1 jiangtuliquor.com, 1 jiangwu.eu, 1 @@ -79258,6 +78802,7 @@ jiheng.tk, 1 jiid.ga, 1 jiji-bd.com, 1 +jiji.al, 1 jiji.cd, 1 jiji.cg, 1 jiji.co.ci, 1 @@ -79269,6 +78814,7 @@ jiji.com.et, 1 jiji.com.gh, 1 jiji.lk, 1 +jiji.mk, 1 jiji.ng, 1 jiji.sn, 1 jiji.ug, 1 @@ -79355,7 +78901,6 @@ jinkou.gq, 1 jinkou.ml, 1 jinliming.ml, 1 -jinma.site, 1 jino.gq, 1 jinritemai.com, 1 jinriys.com, 1 @@ -79363,6 +78908,7 @@ jinspace.net, 1 jintaiyang123.org, 1 jintao.hu, 1 +jinxuan-saas.cn, 1 jinzai-ikusei.org, 1 jip2011.jp, 1 jipsnel.nl, 1 @@ -79406,6 +78952,8 @@ jj6957.co, 1 jj9297.co, 1 jj9728.co, 1 +jjb.cool, 1 +jjb.zone, 1 jjcf.de, 1 jjfloor.com.au, 1 jjfxz.com, 1 @@ -79432,6 +78980,7 @@ jkinteriorspa.com, 1 jkjpm.com, 1 jkloli.tk, 1 +jklsolutions.com.br, 1 jkmoving.com, 0 jkng.eu, 1 jkpg-kontoret.se, 0 @@ -79454,6 +79003,7 @@ jl-picard.tk, 1 jlbleakley.com, 1 jld.paris, 1 +jldatrum.com, 1 jldlawyers.com, 1 jlgsepticllc.com, 1 jlifeoc.com, 1 @@ -79507,9 +79057,7 @@ jmftechnologies.com, 1 jmg3.dynu.net, 1 jmgpstudio.com, 1 -jmgservices.org, 1 jmha.live, 1 -jmhits.com, 1 jmisern.com, 0 jmk.hu, 1 jmlegrand.com, 1 @@ -79588,6 +79136,7 @@ jobbradar.ai, 1 jobbsafari.no, 0 jobbsafari.se, 0 +jobbtrackr.se, 1 jobcenter.tk, 1 jobcheck.com, 1 jobcorps.gov, 1 @@ -79626,7 +79175,6 @@ jobs.schwarz, 1 jobs.su, 1 jobs.ua, 1 -jobs4sales.ch, 1 jobscan.co, 1 jobsconnected.com, 1 jobscore.com, 1 @@ -79645,7 +79193,6 @@ jobtools.tk, 1 jobtread.com, 1 joburgplumbing.co.za, 1 -jobwinner.ch, 1 jobynet.tk, 1 jobytoys.cl, 1 jobzcorner.tk, 1 @@ -79718,7 +79265,6 @@ jofel-kinderkleding.tk, 1 jofogas.hu, 1 jogg.info, 1 -jogg.nl, 0 joggers.tk, 1 joggingtips.ga, 1 jogi-server.de, 1 @@ -79738,10 +79284,8 @@ johann.tk, 1 johanna-besmier.fr, 1 johanna.gallery, 1 -johannabest.com, 1 johannaojanen.com, 1 johannavarmala.fi, 1 -johannes-schaefer.de, 1 johannes-sprink.de, 0 johannes-zinke.de, 1 johannes.wtf, 1 @@ -79825,6 +79369,7 @@ johnsoncowy.gov, 1 johnsongenealogy.net, 1 johnsonho.net, 1 +johnsonjohns.com, 1 johnsons-wellfield.co.uk, 1 johnsons.tk, 1 johnsonscorporate.com.au, 1 @@ -79849,6 +79394,7 @@ joi-dhl.ch, 0 join-aomori.jp, 1 join-stories.com, 1 +join.com, 1 joinamericacorps.gov, 1 joinamericorps.gov, 1 joincahoot.com, 1 @@ -79870,7 +79416,6 @@ joinsparq.com, 0 joinspot.io, 1 jointheconversationnotl.org, 1 -jointherlworld.com, 1 jointheruminati.com, 1 jointheunseen.com, 1 jointotem.com, 1 @@ -79878,7 +79423,6 @@ jointsache.com, 1 joinupguard.com, 1 joj.sk, 1 -jojo-kiss.com, 1 jojo-pieism.tk, 1 jokedalderup.nl, 1 jokerme.com, 1 @@ -79890,7 +79434,7 @@ jolette-hernandez.tk, 1 joletteperu.tk, 1 jolicode.com, 1 -jolienoir.net, 1 +joliestudio.it, 1 joliet.gov, 1 jolina.pl, 1 joline.me, 1 @@ -79935,7 +79479,6 @@ jonaskarlssonfoto.se, 1 jonaskjodt.com, 1 jonaskoeritz.de, 1 -jonaskruckenberg.de, 0 jonaslovatouniverse.tk, 1 jonasvildmark.com, 1 jonaswitmer.ch, 1 @@ -80049,6 +79592,8 @@ jophson.tk, 1 joqi4.gq, 1 jora.biz, 1 +joram.eu, 1 +joran.online, 1 joran.org, 1 jorcus.com, 1 jordan-armstrong.tk, 1 @@ -80060,7 +79605,6 @@ jordanlys.com, 1 jordanmetal.tk, 1 jordanmlu.nl, 1 -jordannight.net, 1 jordanny.gov, 1 jordanp.engineer, 1 jordanpark.com, 0 @@ -80105,6 +79649,7 @@ jose-latino.tk, 1 jose-manuel-benito-alvarez.tk, 1 josebernabe.ch, 1 +joseenrique.es, 1 joseenriquegonzalez.tk, 1 joseetesser.nl, 1 josef-lotz.de, 1 @@ -80159,6 +79704,7 @@ joshs.guide, 1 joshs.photos, 1 joshschmelzle.com, 1 +joshsisto.com, 1 joshspage.ltd.uk, 1 joshspage.uk, 1 joshthewanderer.com, 1 @@ -80178,7 +79724,6 @@ josien.net, 1 josineto.art, 1 josipovicstevo.tk, 1 -josisummer.net, 1 josmith.co.za, 1 joso.tk, 1 josoansi.de, 1 @@ -80203,8 +79748,6 @@ jourbook.cf, 1 jourdain.pro, 1 jourdespa.fr, 1 -jourjcouture.com, 1 -journal-officiel.ga, 1 journaldufumeur.ch, 1 journales.com, 1 journalgameers.ga, 1 @@ -80215,6 +79758,7 @@ journalism.org, 1 journaliste.tk, 1 journalisticapp.com, 1 +journalnow.com, 1 journals.ru, 1 journalstar.com, 1 journaltimes.com, 1 @@ -80253,7 +79797,6 @@ joyas.gt, 1 joyberryenterprises.com, 1 joyblz.com, 1 -joybuggy.com, 1 joyce.tk, 1 joycefeng.com, 1 joycejamiewedding.com, 1 @@ -80319,7 +79862,6 @@ jpralves.net, 1 jpram.net, 1 jproducts.nl, 1 -jproxx.com, 1 jps-selection.co.uk, 1 jps-selection.com, 1 jps-selection.eu, 1 @@ -80358,7 +79900,6 @@ jrock.tk, 1 jrock.us, 1 jrockrevolution.com, 1 -jrom.net, 1 jross.me, 1 jrroofinglancs.co.uk, 1 jrrw.de, 1 @@ -80460,7 +80001,6 @@ jtopgame.top, 1 jtownacademy.com, 1 jtrojanowska.pl, 1 -jtroofs.com, 1 jts3servermod.com, 1 jtsrepair.ca, 1 jttech.se, 1 @@ -80561,7 +80101,7 @@ juhosaastamoinen.net, 1 juhudikilimo.com, 1 juice.cf, 1 -juicebox.com.au, 1 +juicebox.com.au, 0 juicefin.com, 1 juices.com.sg, 1 juicipattiesfranchising.com, 1 @@ -80577,7 +80117,7 @@ jukovka.tk, 1 juku-wing.jp, 1 julb.de, 1 -julditec.com, 0 +julditec.com, 1 jule-spil.dk, 1 julenetxaniz.eus, 1 julenlanda.com, 0 @@ -80619,7 +80159,6 @@ juliaoantiguidades.com.br, 1 juliapp.io, 1 julias.zone, 1 -juliasugar.net, 1 juliawebber.co.za, 1 juliazeengardendesign.co.uk, 1 julibear.com, 1 @@ -80646,7 +80185,6 @@ juliesliberties.fr, 1 juliet-squad.tk, 1 julietous.be, 1 -julietta-sanchez.org, 1 juliettejones.co.uk, 1 juliettesinteriors.co.uk, 1 julio.jamil.nom.br, 1 @@ -80678,6 +80216,7 @@ jumpandjivechildrensparties.co.uk, 1 jumparoundbouncycastles.co.uk, 1 jumparty.co.uk, 1 +jumpcloud.com, 1 jumpeasy.com.au, 1 jumperke.be, 1 jumperweb.tk, 1 @@ -80711,7 +80250,6 @@ junethack.net, 1 junetrucking.com, 1 junews.it, 1 -junfk.shop, 1 jungamer.uk, 1 junge-linke.tk, 1 jungefreiheit.de, 1 @@ -80771,6 +80309,7 @@ jupianku.com, 1 jupiteram.com, 1 juppy.tk, 1 +juqed.com, 1 jura-reiseschutz.de, 1 jura-versicherungen.de, 1 juragan.ga, 1 @@ -80790,7 +80329,6 @@ jurimatic.com, 1 jurisap.com.br, 1 jurisapiens.com, 0 -jurisconsulto.mx, 1 juriscoop.com.co, 1 juriskc.com, 1 jurislex.tk, 1 @@ -80872,6 +80410,7 @@ justgiving.io, 1 justgiving.nl, 1 justgiving.services, 1 +justgrin.ca, 1 justguard.be, 1 justice-rains-from-above.tk, 1 justice.gc.ca, 1 @@ -80933,6 +80472,7 @@ juurussuo.tk, 1 juus.ee, 1 juusujanar.eu, 0 +juva.nl, 1 juvenile-studios.de, 1 juventudcanaria.org, 1 juventudevareira.tk, 1 @@ -81004,7 +80544,6 @@ jzeb.co, 1 jzminimalist.com, 1 jzuwork.lt, 1 -jzwebdesign.ie, 1 jzz.cool, 1 jzzfyw.com, 1 k-45.ru, 1 @@ -81035,8 +80574,7 @@ k.tt, 1 k0a1ex.com, 1 k1024.org, 1 -k2.works, 1 -k21academy.com, 1 +k16.is, 1 k24klik.com, 1 k258059.net, 1 k29.ee, 1 @@ -81083,7 +80621,6 @@ k87133.com, 0 k87136.com, 0 k875.co, 0 -k88107.com, 0 k88127.com, 0 k88256.com, 1 k88257.com, 1 @@ -81128,7 +80665,6 @@ kab-s.de, 1 kabachok.tk, 1 kabal.tk, 1 -kabanabeach.fr, 1 kabardinka.ga, 1 kabardino-balkariya.ml, 1 kabbalah-events.com, 1 @@ -81173,7 +80709,6 @@ kacperstapor.com, 1 kacy-kisha.com, 1 kada.lk, 1 -kadalove.net, 1 kaddex.xyz, 1 kadeatwood.com, 1 kadenba.ch, 1 @@ -81201,7 +80736,6 @@ kaeme.com, 1 kaeptns-sechser.de, 1 kaeru-seitai.com, 1 -kaesehagen.nl, 1 kafe-cigarko.cz, 1 kafe.ai, 1 kafecigarko.cz, 1 @@ -81220,7 +80754,6 @@ kagami.tk, 1 kagata-kids.com, 1 kagawanissin.co.jp, 1 -kageani.com, 1 kagebyvyre.tk, 1 kagel.ch, 1 kages.at, 1 @@ -81272,8 +80805,6 @@ kairoscope.org, 1 kairoscyprus.com, 1 kairosinsider.fr, 1 -kais08.com, 1 -kaisanord.org, 1 kaiseraerospace.tk, 1 kaiserburg-nuernberg.de, 1 kaiserskorpion.de, 1 @@ -81283,7 +80814,6 @@ kaisyo.co.jp, 1 kaitol.click, 1 kaitseministeerium.ee, 0 -kaity-sun.com, 1 kaiusaltd.com, 0 kaiva.cl, 1 kaiva.eu, 1 @@ -81366,6 +80896,7 @@ kalender10.com, 1 kalerne.tk, 1 kaleus.xyz, 1 +kalevios.com, 1 kalfeher.com, 1 kalhotkomat.cz, 1 kalhufvudet.se, 1 @@ -81421,7 +80952,6 @@ kalsbouncies.com, 1 kaltenbrunner.it, 1 kalterersee.ch, 1 -kaltmiete.com, 1 kaluga-news.net, 1 kaluga.cf, 1 kaluga.gq, 1 @@ -81465,7 +80995,6 @@ kamgraphica.com, 1 kami-riha.com, 1 kamien-ogrodowy.tk, 1 -kamienie-migdalkowe.pl, 1 kamikami.eu, 1 kamikatse.net, 1 kamikatzerl.net, 1 @@ -81479,7 +81008,6 @@ kamin-island.ru, 1 kaminoke.info, 0 kaminoyamasaigube.com, 1 -kamio.co.uk, 1 kamisato-ent.com, 1 kamistik.com, 1 kamitech.ch, 1 @@ -81497,9 +81025,8 @@ kampanyaplus.com, 1 kampanyaradar.com, 1 kampffische.tk, 1 -kampfsportschule-einherjar.de, 1 +kampfsportschule-einherjar.de, 0 kampkoetter.de, 1 -kampong.social, 1 kampova.sk, 1 kamppailusali.fi, 1 kampungcyber.tk, 1 @@ -81594,7 +81121,7 @@ kannata.ml, 1 kannegieser.de, 1 kannegieser.net, 1 -kanneldiamond.com, 1 +kanneldiamond.com, 0 kano.fan, 0 kano.tk, 1 kanoonkehaath.in, 1 @@ -81609,7 +81136,6 @@ kansaslabor.gov, 1 kansasnet.tk, 1 kansassheriffs.org, 1 -kansastitlesearch.com, 1 kansasui.gov, 1 kansasvaccine.gov, 1 kansasvoterinfo.gov, 1 @@ -81637,6 +81163,7 @@ kaosintesta.tk, 1 kap-kirche.de, 1 kap.pe, 1 +kapa7.com, 1 kapadia.org, 1 kapageridis.com, 1 kapakinig.org, 1 @@ -81655,6 +81182,7 @@ kapler.family, 1 kaplonrealty.com, 1 kapmer.fr, 1 +kapot.in.ua, 1 kappamuepsilon.org, 1 kappar.is, 1 kapparhokappa.tk, 1 @@ -81683,6 +81211,7 @@ karabuk78.com, 1 karabukhaber.tk, 1 karachay.tk, 1 +karachichaathouse.com, 1 karada.live, 1 karadenizhaberleri.tk, 1 karadenizmetal.tr, 1 @@ -81721,7 +81250,6 @@ kardia-bordeauxdoggen.tk, 1 kardize24.pl, 1 kardjali.bg, 1 -kardla.edu.ee, 1 kareenaworld.tk, 1 karel-it.be, 1 karelgol.tk, 1 @@ -81753,7 +81281,6 @@ karimsaadati.tk, 1 karin-ewald.de, 1 karina-perez.es, 1 -karinahh.net, 1 karinheinenmaassen.nl, 1 karinov.co.id, 0 karinwerner.com, 1 @@ -81782,7 +81309,6 @@ karlskronajk.tk, 1 karlsmithmn.org, 1 karlson.gq, 1 -karlswift.com, 0 karlzotter.com, 1 karmaful.de, 0 karmapafoundation.eu, 1 @@ -81835,6 +81361,7 @@ kartek.com, 1 kartel.org.uk, 1 kartenplanet.ch, 1 +karthikgohul.in, 1 kartikmohta.com, 1 karting-normandie.fr, 0 kartoffel-stampfer.com, 1 @@ -81874,7 +81401,7 @@ kashmirartquest.tk, 1 kashmirdmc.co.in, 1 kashousing.tk, 1 -kashta-svgeorgi.com, 1 +kashta-svgeorgi.com, 0 kasiafricagroup.org, 1 kasinoilmanrekisteroitymista.io, 1 kasinonetti.com, 1 @@ -81885,6 +81412,7 @@ kaskodev.com, 1 kaskojs.com, 1 kaskoqa.com, 1 +kaskus.co.id, 1 kasowitz.com, 1 kasparovru.ml, 1 kasparovru.tk, 1 @@ -81903,8 +81431,6 @@ kassola.tk, 1 kastamonuhaberleri.tk, 1 kastankaoffice.cz, 1 -kastas.com, 1 -kastas.com.tr, 1 kasteelhoensbroek.nl, 1 kastelruth.biz, 1 kastemperaturen.ga, 1 @@ -81914,13 +81440,14 @@ kastuvas-tau.lt, 1 kasu.ga, 1 kasvall.com, 1 +kasyanovgroup.ru, 1 kasyna-internetowe.com, 1 kasynoanalyzer.com, 1 kat.ai, 1 kat.cat, 1 -kat.tf, 0 kat4at.tk, 1 katabump.com, 1 +katabump.fr, 1 katagena.com, 1 kataiszilveszter.hu, 1 katalog-parfyum.tk, 1 @@ -81940,11 +81467,11 @@ katarios.tk, 1 katarpilar.com, 1 katartika.tk, 1 -kataumi-shika.jp, 1 katavagroup.com, 1 katazuketai.net, 1 katc.com, 1 kate-beckinsale.tk, 1 +katechnova.com, 1 katedra.de, 1 kateduggan.com, 1 kateduggan.net, 1 @@ -81984,8 +81511,6 @@ katia-belam.com, 1 katiebenson.tk, 1 katiechai.xyz, 1 -katiepears.net, 1 -katieriker.com, 1 katieskandy.co.uk, 1 katieskastles.co.uk, 1 katio.net, 1 @@ -82006,6 +81531,7 @@ katrinjanke.de, 0 katscastles.co.uk, 1 katsiavarasorthopedics.gr, 1 +katsouris.co.uk, 1 katsuandhisfriends.com, 1 katsunet.com, 1 kattelus.tk, 1 @@ -82020,6 +81546,7 @@ katzrkool.xyz, 1 kau-boys.com, 1 kau-boys.de, 1 +kauaihempco.com, 1 kauf.eco, 1 kaufberatung.community, 1 kaufda.de, 1 @@ -82090,6 +81617,7 @@ kayphi.com, 0 kayseri.bel.tr, 1 kayserihaberleri.tk, 1 +kayservices.co.uk, 1 kaysville.gov, 1 kaysvillechurch.com, 0 kayteedidquiltsandmore.com, 1 @@ -82108,7 +81636,6 @@ kazap.co.uk, 1 kazard.co.za, 1 kazarmy.tk, 1 -kazeso.kz, 1 kazettadigitalizalas.hu, 1 kazfeed.com, 1 kazgeodor.kz, 1 @@ -82132,7 +81659,6 @@ kb1000.de, 1 kb1313.com, 1 kb16.de, 1 -kb35.net, 1 kb38.net, 1 kb5050.com, 0 kb5757.com, 1 @@ -82173,7 +81699,6 @@ kc9.vip, 1 kca2009.com, 1 kcagsolutions.com, 1 -kcalb-ltd.com, 1 kcc8.com, 1 kcchung.com, 1 kcci.com, 1 @@ -82188,7 +81713,6 @@ kcnawatch.org, 1 kcnexp.eu.org, 1 kcnwallet.com, 1 -kcnxp.com, 1 kcomi.com, 1 kcor.org, 1 kcptun.com, 1 @@ -82224,7 +81748,7 @@ kdoslavi.cz, 1 kdproduction.cz, 1 kdramaholic.com, 1 -kdrcoding.com, 0 +kdrcoding.com, 1 kdrive.tk, 1 kdt-lille.com, 1 kduggan.net, 1 @@ -82256,7 +81780,6 @@ kecht.at, 1 keckmedicine.org, 1 kecrily.me, 1 -kedaricapital.com, 1 kedero.com, 1 kedhtm.us.kg, 1 kedi.tk, 1 @@ -82291,9 +81814,11 @@ keep-ready.com, 1 keep-smiling.tk, 1 keep.moe, 1 +keep.repair, 0 keepa.com, 1 keepagree.gq, 1 keepavalue.com, 1 +keepbasis.com, 1 keeperapp.com, 1 keeperhub.com, 1 keepersecurity.ca, 1 @@ -82412,7 +81937,6 @@ kellyvoice.tk, 1 kellywebcam.tk, 1 kelmia.com, 1 -keln.net, 1 kelowellness.io, 1 kelp.agency, 1 kelsa.io, 0 @@ -82442,6 +81966,7 @@ kemhan.go.id, 1 kemian.de, 1 kemifilani.ng, 1 +kemikon.com, 1 kemnacarwash.com, 1 kemono.cr, 1 kemono.in.th, 1 @@ -82464,11 +81989,11 @@ kemsamnhatban.gq, 1 kemsamnhatban.ml, 1 kemsamnhatban.tk, 1 -kemsia.nl, 1 ken-electric.com.br, 1 ken.fm, 1 kenbillionsyuan.tk, 1 kenda.eu.org, 1 +kendaldatasettlement.com, 1 kendaliomega.id, 1 kendall.productions, 1 kendallcountyil.gov, 1 @@ -82489,7 +82014,8 @@ kenhhomestay.com, 1 kenhv.com, 1 keniff.gq, 1 -kennards.co.nz, 1 +kenjidev.com, 1 +kennards.co.nz, 0 kennebec.gov, 1 kennebunksavings.com, 1 kennedy.cf, 1 @@ -82504,7 +82030,6 @@ kennisknooppuntparticipatie.nl, 1 kennisnetwerkparkeren.nl, 1 kennispleinzingeving.nl, 1 -kenny-peck.com, 1 kenny.technology, 1 kennynet.co.uk, 1 keno.im, 1 @@ -82534,7 +82059,6 @@ kentradioaeromodelers.com, 1 kentuckyartisandistillery.com, 1 kentuckyderby.com, 1 -kentuckytitlesearch.com, 1 kenus.ovh, 1 kenvix.com, 0 kenwood-electronics.co.uk, 1 @@ -82567,6 +82091,7 @@ keramed.ga, 1 keramed.gq, 1 keratee.com, 1 +kerayo.com, 1 kerb-grossauheim.de, 1 kerb.com, 1 kercovaparty.tk, 1 @@ -82586,10 +82111,10 @@ kernel-error.de, 1 kernel-panik.me, 1 kernel-video-sharing.com, 1 +kerneli.fi, 1 kernelops.ru, 1 kernelpanics.nl, 1 kernkompas.nl, 1 -kernmetpit.nl, 1 kernpharmatulado.com, 1 kernsdumpsters.com, 1 kerocristais.pt, 0 @@ -82602,6 +82127,7 @@ kerroscale.in, 1 kerrybluephotography.com, 1 kerrydavisguitars.tk, 1 +kershuffle.com, 1 kersmexico.com, 1 kerstpagina.tk, 1 kerstpakkettenplaza.nl, 1 @@ -82629,6 +82155,7 @@ kesko.fi, 0 keskraamatukogu.ee, 1 kesselrun.goip.de, 1 +kessiapacheco.com.br, 1 kesslerandsons.com, 1 kesspay.io, 1 kesteren.org, 1 @@ -82732,7 +82259,6 @@ keyblock.tk, 1 keyboard-monkeys.net, 1 keybored.co, 1 -keycat.de, 1 keycdn.com, 1 keycodingjohannesburg.co.za, 1 keydelay.tk, 1 @@ -82765,7 +82291,6 @@ keysix.com, 1 keysmedspa.com, 1 keysofart.com, 1 -keysso.net, 1 keystone-europe.com, 1 keystoneco.gov, 1 keystoneops.education, 1 @@ -82795,7 +82320,7 @@ kf8957.com, 0 kfassessment.eu, 1 kfbl.cc, 1 -kfc.bike, 0 +kfc.bike, 1 kfgleasing.pl, 1 kfintech.com, 1 kfjgyb.com, 0 @@ -82842,6 +82367,7 @@ khabarovsk-news.net, 1 khacdauth.com, 1 khachhangvietnam.tk, 1 +khaddict.com, 1 khadishalatina.com, 1 khakasiya.ml, 1 khakasiya.tk, 1 @@ -82860,9 +82386,9 @@ khalidalnajjar.com, 1 khalidmail.tk, 1 khaliinfo.tk, 1 -khalilicollections.org, 1 khaliqsyed.com, 1 khalti.com, 1 +khanawada.com, 1 khangzhie.io, 1 khanh.id, 1 khankandi.tk, 1 @@ -82873,6 +82399,7 @@ kharkiv.tk, 1 kharkov-news.ru, 1 kharkov.tk, 1 +kharris.info, 1 khas.co.uk, 1 khatapana.com, 1 khatnip.net, 1 @@ -82938,7 +82465,6 @@ kiapartsnow.com, 1 kiapps.ovh, 1 kiarayoga.com, 1 -kiarey.net, 1 kiasarnews.tk, 1 kiasystems.com, 1 kib-ut2fp.com.my, 1 @@ -82955,7 +82481,6 @@ kickback-studios.com, 1 kickbackservices.com, 0 kickico.com, 1 -kickitfootball.com.au, 1 kicksecure.com, 1 kickshack.tk, 1 kicksonfire.com, 1 @@ -82979,17 +82504,14 @@ kiddies.tk, 1 kiddieskingdom.tk, 1 kiddyboom.ua, 1 -kiddyland.co.jp, 1 kidfitseries.com.au, 1 kidify.co.uk, 1 kidisov.tk, 1 -kidm4k.com, 0 +kidiu.com, 1 kidney.ca, 0 kidolori.com, 1 kidonng.me, 1 -kids-concept.de, 1 kids-education.games, 1 -kids-ok.com, 1 kids-world.dk, 1 kids.gov, 1 kids2day.in, 1 @@ -83091,7 +82613,6 @@ kikchat.co.il, 1 kiki.ee, 1 kikikanri.biz, 1 -kikivega.net, 1 kikki.io, 1 kikoskia.com, 0 kiku.pw, 1 @@ -83100,7 +82621,6 @@ kilian.gallery, 1 kiliansommer.de, 1 kilianvalkhof.com, 1 -kiliflix.de, 1 kilimstyle.com, 1 kilincsilver.com, 1 kilinskiego12.pl, 1 @@ -83149,7 +82669,6 @@ kimballwv.gov, 1 kimberleythomson.tk, 1 kimberlyal.gov, 1 -kimberlycaprice.com, 1 kimberlydelarosa.com, 1 kimberlytank.com, 1 kimboggusphotography.com, 1 @@ -83172,7 +82691,6 @@ kimondesk.com, 1 kimonocloud.com, 1 kimonoplatform.com, 1 -kimoo.co, 1 kimootoko.net, 0 kimotodental.com, 1 kimotrip.com, 1 @@ -83183,7 +82701,6 @@ kimsufi-jordi.tk, 1 kimtran.kim, 1 kimtstore.com, 1 -kimxxx.org, 1 kin-mail.at, 1 kin-mail.de, 1 kin-mail.net, 1 @@ -83240,10 +82757,8 @@ kinderland.bg, 1 kindermarket.bg, 1 kindernothilfe.de, 1 -kinderopvangthuis.nl, 1 kinderosteopathie-osteopathie.de, 1 kinderpneumologie.ch, 1 -kindersoldaten.com, 1 kindertagespflege-rasselbande-halle.de, 1 kinderzorg.tk, 1 kindesfreude.ch, 1 @@ -83284,8 +82799,6 @@ kingbot.tk, 1 kingchess.vip, 1 kingcourriel.fr, 1 -kingcute.com, 1 -kingdombuilderschurch.org, 1 kingdomcincy.com, 1 kingdomcitymo.gov, 1 kingdomcrawlers.tk, 1 @@ -83310,7 +82823,6 @@ kingofthecastlesrhyl.co.uk, 1 kingpin.pro, 1 kingpincages.com, 1 -kingroot.com, 1 kings-potong.com, 1 kings-world.net, 1 kingsaft.net, 1 @@ -83334,10 +82846,8 @@ kingstonma.gov, 1 kingstonsoftware.de, 1 kingstream.uk, 1 -kingsvetcentre.com, 1 kingtech8.tk, 1 -kingtreasure.com, 1 -kingtreasures.com, 1 +kingwaybagger.de, 1 kingyard.com, 1 kingyo-bowl.com, 1 kinherit.co.uk, 1 @@ -83447,6 +82957,7 @@ kirakorosi.tk, 1 kiralikjeneratorankara.tk, 1 kirana.studio, 1 +kiranc.me, 1 kiraricchu.com, 1 kirarie-kusatsu.com, 1 kiratime.hu, 1 @@ -83537,7 +83048,6 @@ kisulki.tk, 1 kisumuterraceapartments.tk, 1 kisvasut.tk, 1 -kit.com, 1 kita-bicibici.de, 1 kita-freie-schule.de, 1 kita-mfg.com, 1 @@ -83565,14 +83075,12 @@ kitchenware.tk, 1 kitchfurnit.tk, 1 kitconsulting.ninja, 1 -kitdro.com, 1 kite-surf.tk, 1 kite-surfen.tk, 1 kiteboard-selbstbau.tk, 1 kitebowl.ru, 1 kitenation.com, 1 kiternet.ru, 1 -kiterocket.com, 1 kiteschoolamsterdam.nl, 1 kiteschooledam.nl, 1 kiteschoolnoordwijk.nl, 1 @@ -83607,7 +83115,6 @@ kittmedia.com, 0 kittnerbg.com, 1 kittpress.com, 0 -kitty-core.org, 1 kitty.garden, 1 kittyblair.org, 1 kittybp2.com, 1 @@ -83619,7 +83126,6 @@ kittymoth.art, 1 kittypryde.tk, 1 kittystar.com, 1 -kittywilder.com, 1 kivacontainer.com, 1 kivitelezesbiztositas.hu, 1 kivitv.com, 1 @@ -83640,7 +83146,6 @@ kiwipedia.sk, 1 kiwiplace.com, 0 kiwitastic.com, 1 -kiwox.cl, 1 kixby.com, 1 kizetroniko.tk, 1 kizkulesi.tk, 1 @@ -83654,7 +83159,6 @@ kj1396.net, 1 kjall.me, 1 kjarafelag.is, 1 -kjarni.cc, 1 kjarrval.is, 1 kjccradio.tk, 1 kjchernov.info, 1 @@ -83665,7 +83169,6 @@ kjellvn.net, 1 kjfaudio.com, 1 kjg-dossenheim.org, 0 -kjkesklinna.edu.ee, 1 kjmedia.dk, 1 kjnotes.com, 1 kjothollin.is, 1 @@ -83704,14 +83207,12 @@ kkmzt.com, 1 kkn.moe, 1 kknapredak-rubin.tk, 1 -kkpig.cn, 1 kkpp.ga, 1 kkren.me, 0 kks.ch, 1 kksg-sulzbach.de, 1 kksg.com, 0 kkws.co, 1 -kkychristianblog.com, 1 kkyy.me, 1 kl008888.com, 1 klaarvoormorgen.com, 1 @@ -83732,6 +83233,7 @@ klaps.space, 1 klapsinakis.gr, 1 klapty.com, 1 +klaravex.com, 1 klares-licht.de, 1 klarheit.at, 1 klarika.com, 1 @@ -83782,6 +83284,7 @@ kleim.fr, 1 klein.paris, 1 klein.yt, 1 +kleinanzeigen.de, 1 kleine-dingen.nl, 1 kleine-strandburg-heringsdorf.de, 0 kleine-strandburg-zinnowitz.de, 1 @@ -83829,6 +83332,7 @@ klevatech.co.za, 1 kleverltd.ru, 1 klevos.ro, 1 +kli.best, 1 kli.is, 0 klickinvite.com, 1 klickstdu.com, 1 @@ -83845,6 +83349,7 @@ klima.com, 1 klimaanlage-fehler.net, 1 klimaatadaptatienederland.nl, 1 +klimaatfix.nl, 1 klimaatkids.be, 1 klimaatklaar.nl, 1 klimaatkrachtig.nl, 1 @@ -83880,6 +83385,7 @@ klinknetz.de, 0 klinkov.tk, 1 klipa.tk, 1 +klipist.com, 1 klischee-frei.de, 1 klishyn.com, 1 klitmoeller.de, 1 @@ -83921,6 +83427,7 @@ kluberphoto.hu, 1 klubfitness.pl, 1 klubgerlach.sk, 1 +klubklar.dk, 1 klubryadom.ru, 1 klubwsl.tk, 1 kluchkin-ai.com, 1 @@ -83998,6 +83505,7 @@ kneli.co.il, 1 knep.me, 0 kneppe.me, 1 +knesiyah.com, 1 knetmon.com, 1 knetterbak.nl, 1 kngk-transavto.ru, 1 @@ -84043,19 +83551,18 @@ knize.tech, 1 kniznice.cz, 1 knjazevac.tk, 1 -knkv.nl, 1 knmv.nl, 1 knnet.ch, 1 knoji.com, 1 knoop38.nl, 1 knop.info, 0 knopf.com.pl, 1 -knorrnet.de, 1 knotenpunkt-nbg.de, 1 knotgroepuithoorn.nl, 1 knotme.eu, 1 knotme.pl, 1 knottcountyky.gov, 1 +knotty.toys, 1 knovos.com, 1 know-howsystems.net, 1 know.cf, 1 @@ -84069,7 +83576,6 @@ knowledgeforce.com, 1 knowledgeforprofit.com, 1 knowledgehook.com, 1 -knowledgesuccess.org, 1 knowlevillagecc.co.uk, 1 knownsec.cf, 1 knowrentalsers.ga, 1 @@ -84111,7 +83617,6 @@ knuwiki.tk, 1 knx-trade.ru, 1 knxstore.cz, 1 -knyawningrenovation.com, 0 knzb.nl, 1 ko-private-diary.com, 1 ko80.com, 1 @@ -84127,7 +83632,6 @@ koanga.com.au, 1 koat.com, 1 koba.jp, 1 -kobalto.es, 1 kobapaycash.com, 1 kobayashi-zeimukaikei.jp, 1 kobb.tk, 1 @@ -84152,6 +83656,7 @@ kobudo49.fr, 1 koc-konstruktionen.de, 1 kocaelihaber.tk, 1 +kocaeliinsaatyapi.com.tr, 1 kocaelitasarim.com, 1 kocaelitasarim.com.tr, 1 kocaeliyazilim.com, 1 @@ -84188,20 +83693,22 @@ kode-it.de, 1 kode.ch, 0 kodelabs.com, 1 -koderclub.com, 1 kodes.com.tr, 1 kodexplorer.ml, 1 kodi-tutorials.com, 1 kodify.net, 1 kodigo.me, 1 -kodineuerleben.eu, 1 +kodineuerleben.eu, 0 kodinkuvalehti.fi, 1 kodioso.com, 1 kodiqa.com, 1 kodkollen.com, 1 kodkollen.se, 1 +kodlor.com, 1 kodomocorona.com, 1 koe.hn, 1 +koe40-performance.de, 1 +koe40.de, 1 koebbes.de, 1 koef.nl, 1 koehlhoff.de, 1 @@ -84247,7 +83754,6 @@ kohlmajer.de, 1 kohlpharma.com, 1 kohparadise.com, 1 -koidulag.edu.ee, 1 koifish.org, 1 koing.de, 1 koinpark.com, 1 @@ -84264,6 +83770,7 @@ koketteriet.se, 0 kokk.loan, 1 koklonya.com, 1 +koklureklam.com, 1 kokoiroworks.com, 1 kokomo.com.au, 1 kokomoprivateisland.com, 1 @@ -84271,7 +83778,6 @@ kokona.ch, 1 kokonetworks.com, 1 kokoroheart.cf, 1 -kokoronomori.jp, 1 kokos.pl, 1 koksijde.be, 1 kokteili.tk, 1 @@ -84290,7 +83796,7 @@ kolbeck.tk, 1 kolbeinsson.se, 1 kolboapp.com, 1 -kolbofilter.com, 1 +kolbofilter.com, 0 kolcsey.eu, 1 kolfan.tk, 1 kolhozik.ml, 1 @@ -84308,8 +83814,6 @@ kollandsrud.tk, 1 kollawat.me, 1 kollegamenti.it, 1 -kollegie.com, 1 -kollegier.com, 1 kollekt.be, 1 kollner.com, 1 kolmann.at, 1 @@ -84353,11 +83857,9 @@ komicloud.com, 1 komidoc.com, 1 kominfo.go.id, 0 -kominki-sauny.pl, 1 komintern43.tk, 1 komischkeszeug.de, 0 komitur.tk, 1 -komlangs.nl, 1 kommaer.dk, 1 komment.ml, 1 kommerciya.cf, 1 @@ -84385,6 +83887,7 @@ kompliant.nu, 1 kompotik.tk, 1 komputer-net.tk, 1 +komputerowaklinika.pl, 1 kompymascotas.com, 1 komsija.tk, 1 komsomolka.works, 1 @@ -84397,7 +83900,6 @@ konata.tech, 1 konbantsan.com.tr, 1 koncertbooking.com, 1 -koncertit.com, 1 kondakov.link, 1 kondakovgorin.us, 1 kondakovvg.com, 1 @@ -84433,7 +83935,6 @@ kondisave.info, 1 kondisave.net, 1 kondisave.org, 1 -kondo-kougei.co.jp, 1 konectbus.co.uk, 1 konectus.io, 1 koneti.fr, 1 @@ -84455,6 +83956,7 @@ kongressband.de, 1 koniag-gs.com, 1 konijnen-knaagdieren.tk, 1 +koniko.bg, 1 konila.com, 1 koningerik.nl, 1 konings.it, 1 @@ -84509,7 +84011,6 @@ kontomatik.com, 1 kontorhaus-stralsund.de, 1 kontracrew.tk, 1 -kontramarka.ua, 1 kontrapolis.info, 1 kontrastonline.tk, 1 kontrol40.com, 1 @@ -84567,7 +84068,6 @@ koparrestaurant.is, 1 kopatych.tk, 1 kopeechka.ml, 1 -kopeika.shop, 1 koperateur.com, 1 kopeyka.cf, 1 kopfgeld.tk, 1 @@ -84591,7 +84091,7 @@ kopular.com, 1 kopyandsonslandscaping.com, 1 kopykatz.org, 0 -kor1xbet.com, 1 +kor1xbet.com, 0 kora-go.tk, 1 koraalduikers.be, 1 korabi.tk, 1 @@ -84607,7 +84107,6 @@ kordamentha.com, 1 kordamentha.com.au, 1 kordut.tk, 1 -korea-1xbet.com, 1 korea-chain.com, 1 korea1x-bet.com, 1 koreabestood.ga, 1 @@ -84620,15 +84119,11 @@ koreanure.tk, 1 koreapro.org, 1 koreascience.kr, 1 -koreashop24.com, 1 koreasurveillance.com, 1 -koredia.com, 1 -koreimob.com.br, 1 korelogic.com, 1 koresageart.com, 1 korespondent.tk, 1 korext.com, 1 -korfbal.nl, 1 korfballeague.nl, 1 korhonen.cc, 1 korikart.net, 1 @@ -84653,10 +84148,10 @@ kortgebyr.dk, 1 korttipeli.com, 1 korund.tk, 1 +korvythbot.com, 1 kos4all.com, 1 kos9078.com, 1 kosaki.moe, 1 -kose.edu.ee, 1 koshakovo.ga, 1 koshechka.tk, 1 koshercutleryers.ga, 1 @@ -84670,7 +84165,6 @@ koshturada.by, 1 koshvolt.com, 1 kosinc.org, 1 -koskamp.nl, 1 koskampopleidingen.nl, 1 koskinen.co, 1 kosmart.site, 1 @@ -84683,7 +84177,6 @@ kosmosfestival.tk, 1 kosmosol.it, 1 kosmosradio.tk, 1 -koso.me, 1 kosovitolinks.tk, 1 kosovo.gq, 1 kosovotravels.com, 1 @@ -84734,7 +84227,6 @@ kotori.style, 1 kotorimusic.ga, 1 kotoriyama.com, 1 -kotrak.com, 1 kotsilkovi.com, 1 kottbulle.net, 1 kotthaus-bs.de, 1 @@ -84762,6 +84254,7 @@ kovachica.tk, 1 kovacia.com, 1 kovaldo.ru, 1 +kovar.kr, 1 kovelai.com, 1 kovil.ai, 1 kovnsk.net, 1 @@ -84775,7 +84268,6 @@ kowarschick.de, 1 koyaanisqatsi.tk, 1 koyarecipes.com, 1 -koyariz.com.tr, 1 koyo.kr, 1 koyou-nara.com, 1 koyso.com, 1 @@ -84785,7 +84277,7 @@ kozamac.com, 1 kozansa.net, 1 kozarac.tk, 1 -kozawa.tokyo, 1 +kozawa.tokyo, 0 kozbox.com, 1 kozentic.com, 1 kozgi.com, 1 @@ -84800,9 +84292,10 @@ kp-opt.ru, 1 kp0808.cc, 1 kp0809.com, 1 -kp2222.cc, 1 +kp1111.cc, 1 kp4444.cc, 1 kp45.ru, 1 +kp6666.cc, 1 kp7777.cc, 0 kpfanworld.com, 1 kpinvest.eu, 1 @@ -84856,7 +84349,6 @@ kraftek.cf, 1 kraftfahrtversicherungen24.de, 1 kraftmaid.com, 1 -kraftochbalans.se, 1 kraftway.ru, 1 kraftzeiten.de, 1 krag.be, 1 @@ -84935,6 +84427,7 @@ krc.link, 1 krch.tk, 1 krdekam.com, 1 +krdf.ge, 1 krealabs.fr, 1 kreanoid-clientportal-aus-dev.azurewebsites.net, 1 kreanoredact-portal-aus-dev.azurewebsites.net, 1 @@ -84956,7 +84449,6 @@ kredibanka.net, 1 kredigram.com, 1 kredit-mit-negativer-schufa.com, 1 -kredit-ohne-schufa.de, 1 kredit24.de, 0 kredita.dk, 1 kreditano.ro, 1 @@ -84970,6 +84462,7 @@ kredytybezprowizji24.pl, 1 kredytzen.pl, 0 kredz.com.br, 1 +kreeda.tech, 1 krefindo.de, 1 kreft.tk, 1 kreftprzewieda.pl, 1 @@ -85029,7 +84522,6 @@ krishhomesserviceapartments.com, 1 krishin.tk, 1 krishna.fi, 1 -krishnakalisaha.com, 1 krishnendu.com, 1 krishofer.com, 1 kriskonaturopathic.com, 1 @@ -85044,6 +84536,7 @@ kristall.tk, 1 kristenpaigejohnson.com, 1 kristianperak.com, 1 +kristianshapiro.de, 1 kristiescholten.com, 1 kristiineautorent.ee, 1 kristina-lari.ru, 1 @@ -85090,20 +84583,19 @@ kromciri.gq, 1 krome.sg, 1 krometis.com, 1 +krometisanalytics.com, 1 kromozottrud.hu, 1 krona.ddns.net, 1 kronofogden.se, 1 kronosfitwear.com.br, 1 kronosproject.tk, 1 kronospsi.es, 1 -krony.de, 1 kronych.cz, 1 kroo.com, 1 kroon.email, 1 kroonlocks.com, 1 kropkait.pl, 1 kroschke.de, 1 -krosno24.com, 1 krosovki-nike.tk, 1 kross1308.de, 1 krossakorven.tk, 1 @@ -85120,6 +84612,7 @@ krsvrs.nl, 1 krti.com.ua, 1 krtl.net, 1 +krtl.top, 1 krubik.tk, 1 kruchefssensors.azurewebsites.net, 0 kruchheartbeatdev.azurewebsites.net, 1 @@ -85135,7 +84628,6 @@ krugson.net, 1 kruidenboeket.be, 1 kruin.net, 1 -kruindy.com, 1 kruis.tk, 1 kruisselbrink.com, 1 kruk.co, 1 @@ -85267,12 +84759,12 @@ ksero.wroclaw.pl, 0 kserownia.eu, 1 ksexec.gov, 1 -ksg.edu.ee, 1 ksgamerz.ga, 1 kshb.com, 1 kshlm.in, 1 kshop.gr, 1 kshub.gov, 1 +ksi.sh, 1 ksiegarniabk.pl, 1 ksiga.org, 1 ksiopea.com, 1 @@ -85285,6 +84777,7 @@ ksmsindia.com, 1 ksnl.net, 1 ksoftware.tk, 1 +ksol.com.au, 1 ksolovev.com, 1 ksolves.com, 1 ksopp.si, 1 @@ -85293,7 +84786,7 @@ kspt.edu.tt, 1 ksrevenue.gov, 1 ksrv.jp, 1 -kss.com.au, 1 +kss.com.au, 0 ksst.by, 1 ksstille.de, 1 kst-dlvr.tk, 1 @@ -85326,11 +84819,11 @@ kthnxbai.xyz, 1 ktk-pc.de, 1 ktkprom.com, 1 +ktlastovic.cz, 1 ktlikescoffee.com, 1 ktlspedition.de, 1 ktm-troxler.de, 1 ktnv.com, 1 -ktozvonil.net, 1 ktozvonitvam.ru, 1 ktphapn.org, 1 ktube.yt, 1 @@ -85343,8 +84836,10 @@ ku6.bid, 1 kua.com, 1 kuai-ssl.com, 1 +kuaibys.com, 1 kuaishou.cf, 1 kuaitiyu.org, 1 +kuajingbase.com, 1 kualitatem.com, 1 kuario.com, 1 kuartelgeneral.com, 1 @@ -85360,7 +84855,7 @@ kubanitoscali.com, 1 kubays.com, 1 kubeofficebooth.com, 1 -kubequest.online, 1 +kubequest.online, 0 kuberkaitseliit.ee, 1 kuberm.com, 1 kubern.at, 1 @@ -85369,7 +84864,7 @@ kubica.ch, 1 kubierecki.pl, 1 kubiqo.io, 1 -kubit.ai, 1 +kubit.ai, 0 kubit.co, 1 kubit.us, 1 kubmeta.com, 1 @@ -85406,6 +84901,8 @@ kuepper.tk, 1 kuerbis.org, 1 kuestensiegel.de, 1 +kuesterameling.org, 1 +kuesync.com, 1 kufry.cz, 1 kuhajvaskupaj.si, 1 kuhakukawa.ml, 1 @@ -85423,6 +84920,7 @@ kukeri-karlovo.tk, 1 kuketz-blog.de, 1 kuketz-security.de, 1 +kuki.al, 1 kukuklok.com, 1 kukuma.tk, 1 kukutza.tk, 1 @@ -85433,7 +84931,6 @@ kulatapohadka.cz, 1 kulde.net, 1 kuldeepg.tk, 1 -kuliahwisatahati.com, 0 kulikov.tk, 1 kulinarika.net, 1 kulinariya.tk, 1 @@ -85455,7 +84952,6 @@ kultus-mv.de, 1 kum.dk, 1 kuma-it.de, 1 -kumacdn.club, 1 kumanovo.tk, 1 kumaraguruparan.tk, 1 kumataro.com, 1 @@ -85502,7 +84998,7 @@ kunststaub.fm, 1 kunststoffzaun-berlin.de, 1 kunstundkulturradioschoepfwerk.tk, 1 -kunstundphysik.de, 1 +kunstundphysik.de, 0 kunstundunrat.de, 0 kunugi-inc.com, 1 kunyit.com, 1 @@ -85520,6 +85016,7 @@ kupid.com, 1 kupinska.pl, 1 kupipled.cf, 1 +kupisafe.com, 1 kupislivki.tk, 1 kupitmtz.gq, 1 kupitraktor.gq, 1 @@ -85569,6 +85066,7 @@ kuroha.co.uk, 0 kuroinu.jp, 1 kuroit.com, 0 +kuromanta-rock-fes.jp, 1 kurona.ga, 1 kuronarupolyphenol.jp, 1 kuropatina.tk, 1 @@ -85585,7 +85083,6 @@ kursy-sep.com.pl, 1 kursy-zawodowe24.pl, 1 kursyjezykowelublin.pl, 1 -kursypolska.pl, 1 kurszielnull.de, 1 kurt-und-herma-roemer-stiftung.de, 1 kurtdeutscher.com, 1 @@ -85633,6 +85130,7 @@ kutsankaplan.com, 1 kutten.lu, 1 kuttler.eu, 1 +kutuama.com, 1 kutvonen.net, 1 kutyabarathelyek.hu, 1 kutyamacskashop.hu, 1 @@ -85674,7 +85172,6 @@ kvest-v-moskve.ga, 1 kvestiks.ru, 1 kvetinyumarkety.cz, 1 -kvetuvplotu.cz, 1 kvhv-brussel.be, 1 kvilt.dk, 1 kvint.bg, 1 @@ -85684,7 +85181,6 @@ kvmcloud.net, 0 kvn.tf, 1 kvnsport.ru, 1 -kvrapi.com, 1 kvraudio.com, 1 kvrwines.com, 1 kvs-demo.com, 1 @@ -85698,7 +85194,6 @@ kwai.tv, 1 kwalifikacje.gov.pl, 1 kwamenamintanyarku.com, 1 -kwanafo.space, 1 kwattz.ai, 1 kwc.gov, 1 kwcolville.com, 1 @@ -85750,14 +85245,12 @@ kyblik.fun, 1 kyc-systems.com, 1 kycisrael.com, 1 -kydara.com, 0 kyivparts.com, 1 kyj250.com, 1 kyj322.com, 1 kyj511.com, 1 kyj522.com, 1 kyj544.com, 1 -kyj55.com, 1 kyj56.com, 1 kyj57.com, 1 kyj577.com, 1 @@ -85816,7 +85309,6 @@ kyoto-sowa.co.jp, 1 kyoto-tomoshibi.jp, 1 kyp.ai, 1 -kyrabanx.org, 1 kyrainvestments.com, 1 kyranis.net, 1 kyrgizion.tk, 1 @@ -85861,7 +85353,6 @@ l214.com, 1 l2dragonland.tk, 1 l2family.net, 1 -l2network.eu, 1 l2news.ga, 1 l2relax.ml, 1 l2support.tk, 1 @@ -85942,11 +85433,10 @@ labels.co.ke, 1 laberkosmos.tk, 1 labguidotti.it, 1 -labianstore.com, 1 labiblioafronebrulepas.com, 0 labie.eu, 1 labin.tk, 1 -labina.com.tr, 1 +labina.com.tr, 0 labinator.com, 1 labinsights.com, 1 labirint.cf, 1 @@ -86120,33 +85610,25 @@ ladybird.tk, 1 ladybirdeducation.co.uk, 1 ladyblack.tk, 1 -ladyblackdiamoond.com, 1 ladyboy.tv, 1 ladyboyfiles.com, 1 ladyboytube.tv, 1 ladybugjam.com, 1 ladycafe.io, 1 ladyescorts.com, 1 -ladyestelle.org, 1 -ladyisabell666.com, 1 ladykarame.org, 1 ladylakefl.gov, 1 -ladylatoria.net, 1 ladylucks.co.uk, 1 ladymadd.fr, 1 ladymakeup.com.ua, 1 ladymayonline.tk, 1 -ladymeli.org, 1 ladyofhopeparish.org, 1 ladyofsongstv.com, 1 ladyoxytocin.com, 1 ladysecrets.cf, 1 ladysecrets.ga, 1 ladyshields.com, 1 -ladysybella.net, 1 ladytron.tk, 1 -ladyvampira.com, 1 -ladyvictoriavalente.com, 1 ladywine.co.uk, 1 ladywishlist.my.id, 1 laecosmetic.com, 1 @@ -86166,8 +85648,6 @@ laetitia-casta.fr, 1 laetitia-hypnocoach.fr, 0 laettnercamps.com, 1 -laeva.edu.ee, 1 -laextra.mx, 0 lafafutu.com, 1 lafansite.tk, 1 lafattoriabiologica.com, 1 @@ -86202,6 +85682,7 @@ lafraia.com, 1 lafraia.com.br, 1 lafraise.pro, 1 +lafrance.club, 1 lafrenchtech.com, 1 lafsc.co.uk, 0 lafuriadelguardiancelta.tk, 1 @@ -86215,10 +85696,11 @@ lagardere-tr.it, 1 lagardere-tr.ro, 1 lagavach.com, 1 -lagencerie.fr, 1 +lagencerie.fr, 0 lagera-m-residence.com, 1 lagerauftrag.info, 0 laget.se, 1 +laghiinitalia.com, 1 lagier.xyz, 1 lagin.cz, 1 laginghanda.gov.ph, 1 @@ -86259,7 +85741,6 @@ lai.is, 1 laidingyi.com, 1 laifstyle.se, 1 -lailabanx.org, 1 lain.la, 1 lain.wiki, 1 laindonleisure.co.uk, 1 @@ -86296,7 +85777,6 @@ lakecitybank.com, 1 lakecitydepositionreporter.com, 1 lakeclerkfl.gov, 1 -lakecookexteriors.com, 1 lakecountryhouse.co.uk, 1 lakecountyclerkfl.gov, 1 lakecountyco.gov, 1 @@ -86304,8 +85784,10 @@ lakedeltonwi.gov, 1 lakeelmo.gov, 1 lakefs.cloud, 1 +lakegenevanews.net, 1 lakegenevapiercompany.com, 1 lakehavasuhouserentals.com, 1 +lakehousemusicacademylms.com, 1 lakelafayettemo.gov, 1 lakemary-doctor.com, 1 lakemillsiowa.gov, 1 @@ -86362,8 +85844,6 @@ lalegroup.com.tr, 0 lalelal.me, 1 lalenteja.net, 1 -lalettrepatriote.com, 0 -lalimentari.com, 1 lalin.gal, 1 lalokura.tk, 1 lalouviere.fr, 1 @@ -86417,12 +85897,12 @@ lamedubois-parquet.fr, 1 lamei-group.com, 1 lamergameryt.xyz, 1 +lamersenvisser.nl, 1 lamersfam.com, 1 lamet-kher.tk, 1 lameusame.be, 1 lamialiguria.it, 1 lamigoshevora.pt, 1 -laminado.com, 1 laminar.work, 1 laminine.info, 1 laminsaho.tk, 1 @@ -86439,7 +85919,7 @@ lamparassevilla.com, 1 lampbooks.gq, 1 lampco.com, 1 -lamper-design.nl, 1 +lamperia24.com, 1 lampertheimer-zeitung.de, 1 lamplightvideo.com, 1 lampposthomeschool.com, 1 @@ -86450,6 +85930,7 @@ lamsa.com.mx, 0 lamsa.tk, 1 lamscommunity.org, 1 +lamtechnology.com, 1 lamudi.ga, 1 lamuebleriavirtual.co, 1 lamuixeranga.tk, 1 @@ -86466,7 +85947,6 @@ lanahallen.com, 1 lanaikitchens.com, 1 lanailsupplies.com, 1 -lanaturedaure.com, 1 lanausea.tk, 1 lanbroa.eu, 1 lancashirebeekeepers.org.uk, 1 @@ -86482,6 +85962,7 @@ lancefourstar.com, 1 lancejames.com, 1 lancelafontaine.com, 1 +lancelinoceanclassic.com.au, 1 lancelucido.tk, 1 lancemanion.com, 1 lancerspiritonline.com, 1 @@ -86491,6 +85972,7 @@ lanconstruct.be, 1 lancyvbc.ch, 0 land.nrw, 0 +landandcreek.com, 1 landart.tk, 1 landasocial.com, 1 landassessmentservices.com, 0 @@ -86555,7 +86037,6 @@ landvaart.nl, 1 landverliebt.de, 1 landware.cf, 1 -landwellsystem.com, 1 landzicht.tk, 1 lane.computer, 1 lanefinder.com, 1 @@ -86599,7 +86080,6 @@ lanispa.com, 1 lankana.tk, 1 lankarkivet.tk, 1 -lankatongtravel.lk, 1 lanlaog.com, 1 lanmail.tk, 1 lannamontessori.com, 1 @@ -86639,7 +86119,6 @@ laobayy.com, 1 laoctavadireccion.tk, 1 laodongkynghi.info, 1 -laohei.org, 0 laohuangba.com, 1 laohys.com, 1 laolaweb.tk, 1 @@ -86657,7 +86136,6 @@ lapageamelkor.org, 1 lapaginadejuanjo.tk, 1 lapaksulawesi.tk, 1 -lapakus.com, 1 laparcela.tk, 1 laparoscopyhospital.com, 1 lapasticcerianaturale.store, 1 @@ -86716,14 +86194,11 @@ larabergmann.de, 1 larabouillere.fr, 1 laracode.eu, 1 -laracumkitten.org, 1 laradiorespuestas.tk, 1 laraemarcos.ga, 1 laraeph.com, 1 larafabian.tk, 1 -larafoxx.org, 1 larakitap.com.tr, 1 -laralove.org, 1 laramewa.tk, 1 laramiecountywy.gov, 1 laramuredesmots.fr, 1 @@ -86857,6 +86332,7 @@ laslo-hauschild.eu, 1 lasmallbizonline.gov, 1 lasmesas.tk, 1 +lasmeta.io, 1 lasmorfianapoletana.com, 1 lasofertas.tk, 1 lasourisglobe-trotteuse.tk, 1 @@ -86885,6 +86361,7 @@ last-modified.com, 1 last-strike.org, 1 lastation.ca, 1 +lastatlas.com, 1 lastbooks.gq, 1 lastcast.bg, 1 lastcraft.ru, 1 @@ -86973,10 +86450,10 @@ latifitness.com, 1 latifolia.com, 1 latimport.sk, 1 -latinacammers.com, 1 latinalternative.com, 1 latinapress.it, 1 latinatoday.it, 1 +latindance.be, 1 latinmusiccollection.tk, 1 latinoguysporn.com, 1 latinpressinc.com, 1 @@ -87008,7 +86485,6 @@ latuadro.ga, 1 laturrenewable.com, 1 latvenergo.lv, 1 -latvia-news.com, 1 latviaonline.tk, 1 latvijasvejaparki.lv, 1 latymer-upper.org, 1 @@ -87028,6 +86504,7 @@ laughingloon.com, 1 laughlinfss.com, 1 laughlinfss.marketing, 1 +laukjadi.com, 1 laukstein.com, 1 laulina.fr, 1 laultimaestacion.tk, 1 @@ -87037,12 +86514,14 @@ launchfinderest.ga, 1 launchpad-app2.com, 1 launchpadder2.com, 1 +launchpadly.co, 1 launchpadwebdesigns.com, 1 +launchstats.ru, 1 +launchzone.co, 1 laundrydaddy.com, 1 laundrylessonsers.ga, 1 laundrylessonsest.ga, 1 laundryshoplocator.com, 1 -laupapk.edu.ee, 1 laurable.com, 1 lauradavis.net, 1 laurainnes.tk, 1 @@ -87083,6 +86562,7 @@ lauruslabs.com, 1 lausannedentiste.ch, 0 lausannelovers.ch, 0 +lausitz-digital.com, 1 laut.digital, 1 lautsprecherforum.eu, 1 lauxincost.cf, 1 @@ -87110,10 +86590,10 @@ lavatrom.com, 1 lavavetri.it, 1 lavdiazofficial.tk, 1 -laveg.edu.ee, 1 lavenderx.org, 1 laventura.tk, 1 laventusdigital.co.uk, 1 +lavesy.de, 1 lavhire.tk, 1 laviedalex.ovh, 1 lavinaec.com, 1 @@ -87137,7 +86617,6 @@ lavozdelamusicachilena.tk, 1 lavozderanquil.tk, 1 lavril.fr, 1 -lavronorte.com.br, 1 law-ag.com, 1 law-clinic-kiel.de, 1 law-colleges.com, 1 @@ -87152,7 +86631,7 @@ lawcadia.com, 1 lawcancer.cf, 1 lawcollaborator.com, 1 -lawcore.com.ua, 1 +lawcore.com.ua, 0 lawcover.com.au, 1 lawda.ml, 1 lawdepot.ca, 1 @@ -87275,6 +86754,7 @@ lazytapir.com, 1 lazytux.org, 1 lazywaves.tk, 1 +lazzo.es, 1 lazzo.ml, 1 lazzzy.com, 1 lb-music.tk, 1 @@ -87303,6 +86783,7 @@ lbsgroup.co.uk, 1 lbshoes.bg, 1 lbwl.com, 1 +lbysw.com, 1 lc-home.it, 1 lc-promiss.de, 1 lc040.com, 1 @@ -87369,7 +86850,6 @@ lcmhub.com, 1 lcmmadison.org, 1 lcnwallet.com, 1 -lcnxp.com, 1 lcog-or.gov, 1 lcpud.org, 1 lcr94.org, 1 @@ -87379,6 +86859,7 @@ lcsoftware.tk, 1 lcsomo.gov, 1 lcti.biz, 1 +lctollett.com, 1 lcv-psi.com, 1 lcv-psi.com.br, 1 lcv.email, 1 @@ -87410,6 +86891,7 @@ ldlorangecountylocksmith.com, 1 ldm-systems.ru, 1 ldm2468.com, 1 +ldmyqc.com, 1 ldnio.pk, 1 ldoe-grantprogram.com, 1 lds52mm.com, 1 @@ -87467,6 +86949,7 @@ leadersaudit.ga, 1 leadership-insight.nz, 1 leadershipconnect.io, 0 +leadershipconvention.ca, 1 leadgenie.me, 1 leadinforce.com, 1 leadingagile.com, 1 @@ -87487,7 +86970,6 @@ leafandseed.co.uk, 1 leafans.tk, 0 leafbodhi.com, 1 -leafclient.com, 1 leafcreations.org, 1 leafext.de, 0 leafinote.com, 1 @@ -87506,8 +86988,6 @@ leakfix.nl, 1 leaknet.tk, 1 leakyspigot.com, 0 -lealove.net, 1 -lealuestern.com, 1 lean-consulting.cf, 1 lean.org.br, 1 leanatom.com, 1 @@ -87697,6 +87177,7 @@ lectronz.com, 1 lecturaweb.tk, 1 lecul.site, 1 +led-sk.ru, 1 led.xyz, 0 leda.tv, 1 ledburyvets.co.uk, 1 @@ -87749,7 +87230,6 @@ leecountyil.gov, 1 leecountync.gov, 1 leedsheritagetheatres.com, 1 -leedsmoneyman.com, 1 leee.eu.org, 1 leee.nl.eu.org, 1 leefgratis.tk, 1 @@ -87781,7 +87261,6 @@ leetbunny.tk, 1 leetcode.com, 1 leetcode.net, 1 -leetizia.net, 1 leetsuliangkkproduction.tk, 1 leevealdc.com, 1 leeyoungaeph.tk, 1 @@ -87938,11 +87417,12 @@ legendesdechine.ch, 0 legendgrafix.tk, 1 legendhasit.co.nz, 1 -legendofdragoon.org, 1 legendofkrystal.com, 1 legendofmi.com, 1 legends-game.ru, 0 legendwiki.com, 1 +legeneering.com, 1 +legeneering.com.au, 1 leger-voertuigen.tk, 1 legere.info, 1 leggings-grossesse.fr, 1 @@ -87970,7 +87450,7 @@ legna.roma.it, 1 legnami24.it, 1 lego-ostergewinnspiel.de, 1 -legoktm.com, 0 +legoktm.com, 1 legoutcheznous.com, 1 legow.tk, 1 legrand-ia.gov, 1 @@ -88008,7 +87488,6 @@ leicacyprus.com, 1 leicester.bike, 1 leicesterastronomicalsociety.co.uk, 1 -leicestermoneyman.com, 1 leicestervt.gov, 1 leics.com, 1 leideninternationalreview.com, 1 @@ -88046,9 +87525,6 @@ leitz-cloud.com, 1 lejaimesteticaspa.com, 1 lejardindesmesanges.fr, 1 -lejlax.com, 1 -lejournaldublog.com, 1 -lekarkabajkopisarka.pl, 1 lekarz-wizyty.pl, 1 lekasedgar.com, 1 lekkergebierd.nl, 1 @@ -88073,7 +87549,6 @@ lellikellyshop.bg, 1 lellyboi.ml, 1 lelubre.info, 1 -lelulove.net, 1 lelux.net, 1 lelystadairport.nl, 1 lem0n.cc, 1 @@ -88084,7 +87559,6 @@ lemanbleu.ch, 1 lemarcheatavola.com, 1 lemarcheelagrandeguerra.it, 1 -lemasdupalus.com, 1 lematelas.fr, 1 lemazol.fr, 1 lemberg.ml, 1 @@ -88122,14 +87596,11 @@ lemx.exchange, 1 lena-klein.de, 1 lena-klein.eu, 1 -lena-nitro.org, 1 lenafonster.se, 1 lenagroben.de, 1 lenaic.me, 1 lenalio.fr, 1 -lenamorino.net, 1 lenardoips.tk, 1 -lenasophie.net, 1 lence.net, 1 lencia.ga, 1 lenczewski.ddns.net, 1 @@ -88216,7 +87687,7 @@ leocollo.com, 1 leodraxler.at, 1 leoj.de, 1 -leojweda.com, 1 +leojweda.com, 0 leola.cz, 1 leola.sk, 1 leolabs.space, 1 @@ -88225,6 +87696,7 @@ leomax.ru, 1 leomwilson.com, 0 leon-16255.space, 1 +leon-obermayr.com, 1 leon-security.com, 1 leon-tec.co.jp, 1 leon-tech.com, 1 @@ -88252,7 +87724,6 @@ leoncss.ml, 1 leongalin.tk, 1 leonidas-dovido.tk, 1 -leoniepur-porn.com, 1 leonieslonging.org, 1 leonklingele.de, 1 leonorebrandwebsites.nl, 1 @@ -88374,7 +87845,6 @@ lesensducachet.fr, 1 lesershop24.de, 1 lesexperts.net, 1 -lesfouines.com, 1 lesfurets.com, 1 lesgitesdusapey.fr, 0 lesgoodnews.fr, 1 @@ -88392,6 +87862,8 @@ leslinq.com, 1 lesmajuscules.fr, 1 lesmatinesdheres.fr, 1 +lesmetatags.fr, 1 +lesmicrocrechesdellupia.fr, 1 lesmills-redirect-test.azurewebsites.net, 1 lesminimondes.fr, 1 lesmobiles.com, 1 @@ -88415,7 +87887,6 @@ lessets-graphiques.com, 1 lessgo.ee, 1 lessharp.com, 1 -lessiamia.net, 1 lessing-photo.com, 1 lessing.consulting, 1 lessonsofacto.com, 1 @@ -88428,7 +87899,6 @@ lestudiopecot.fr, 1 lesvacances.info, 1 lesvertsmaroc.tk, 1 -lesy.eu, 1 lesycr.cz, 1 leszonderstress.nl, 1 leta-pane.cz, 1 @@ -88497,7 +87967,6 @@ letsgocasino.com, 1 letsgocasino.net, 1 letsgowhilewereyoung.com, 1 -letsight.com, 1 letsknow.ga, 1 letsknow.tk, 1 letsme.sh, 1 @@ -88532,9 +88001,6 @@ letvikar.dk, 1 letweedoo.com, 1 letwithpuffin.co.uk, 1 -letwork.be, 1 -letwork.de, 1 -letyro.pl, 0 letzi-immobilien.ch, 1 letzpass.com, 1 letztegeneration.org, 1 @@ -88579,8 +88045,7 @@ levendwater.org, 1 levensbron.nl, 1 leventismotors.com.ng, 1 -leverageedu.com, 1 -leverj.io, 1 +leverageedu.com, 0 levermann.eu, 1 leviaan.nl, 1 leviathan-studio.com, 1 @@ -88631,6 +88096,7 @@ lewistonutah.gov, 1 lewood.io, 0 lewt.me, 1 +lex-innovation.fr, 1 lex-legal.com.ua, 1 lex18.com, 1 lexaidxb.com, 1 @@ -88644,8 +88110,6 @@ lexe.club, 1 lexeri.com, 1 lexgeneris.com, 1 -lexgo.be, 1 -lexgo.lu, 1 lexianna.studio, 1 lexico.pt, 1 lexicography.online, 1 @@ -88684,13 +88148,11 @@ lexsonic.com, 1 lextechsuite.com, 1 lextilia.com, 1 -lexum.com, 1 lexuspartsnow.com, 1 lexvantage.com.br, 1 lexway.pk, 1 leyaonline.com, 1 leybelsgarden.cf, 1 -leyden.pl, 1 leyendaluzrenacer.com, 1 leyeslaboralesdecolorado.gov, 1 leyfutmex.com, 1 @@ -88702,7 +88164,6 @@ lezdomsm.com, 1 lezen.tk, 1 leziblog.com, 1 -lezzetyurdu.com.tr, 1 lfashion.eu, 1 lfc.com.pl, 1 lfcnsv.de, 1 @@ -88755,12 +88216,14 @@ lgzyj.com, 1 lhajn.cz, 1 lhakustik.se, 1 +lhalondon.com, 1 lhconsult.tk, 0 lheinrich.org, 1 lhero.org, 1 lhffinanceira.online, 1 lhm.com, 1 lhm.de, 1 +lhnlm.fr, 1 lhost.su, 1 lhp-creation.fr, 1 lhpk.no, 1 @@ -88778,8 +88241,6 @@ li.finance, 1 li.search.yahoo.com, 0 li1436-89.members.linode.com, 1 -lia-fox.org, 1 -liaengel.com, 1 liakhova.com, 1 lialion.de, 1 liam-is-a-nig.ga, 1 @@ -88799,12 +88260,10 @@ liangfaner.com, 0 liangmian.com, 1 liangxingai.com, 1 -liangyichen.net, 0 lianhe-aigen.com, 1 lianka.eu, 1 lianka.pl, 1 lianka.uk, 1 -lianseng.com, 1 liantao.com, 1 lianwen.kim, 1 liaozheqi.cn, 1 @@ -88816,7 +88275,6 @@ libapps.com, 0 libapps.net, 0 libauth.com, 1 -libbitcoin.org, 1 libcal.com, 1 libcal.net, 1 libchat.com, 1 @@ -88846,9 +88304,10 @@ liberatupotencial.site, 1 liberda.nl, 1 liberdademg.com.br, 1 +liberecoapp.com.ar, 1 +liberecohelados.com.ar, 1 liberecstehovani.cz, 1 libermoto.fr, 1 -liberta-me.org, 1 libertacao.tk, 1 libertadgreen.tk, 1 libertarian-party.com, 1 @@ -88903,13 +88362,11 @@ libraideos.tk, 1 librairiezbookstore.com, 1 libranet.eu, 1 -libraproje.com, 1 librariansteach.com, 1 libraries.vic.gov.au, 1 librarika.com, 1 librarium.tk, 1 library-quest.com, 1 -library.nhs.uk, 1 libraryh3lp.com, 1 libraryofcode.org, 1 libraryofcode.us, 1 @@ -88928,6 +88385,7 @@ libreexpresion.tk, 1 libreho.st, 1 librelamp.com, 1 +libreludo.org, 1 libremail.nl, 1 librends.org, 1 libreofficefromcollabora.com, 1 @@ -88957,6 +88415,7 @@ libus.pro, 1 libusova.pro, 1 libvolk.org, 1 +libwebsockets.org, 1 libwizard.com, 1 libwizard.net, 1 libyanexpert.ml, 1 @@ -89004,7 +88463,6 @@ lide.cz, 1 lide.eu, 1 lidel.org, 1 -lidepla.com, 1 lider24.eu, 1 lidernaturascarlettbados.com, 1 liderok.tk, 1 @@ -89050,7 +88508,6 @@ lierohell.tk, 1 liersgevoel.nl, 1 liesbethkeijzer.nl, 1 -lifamily.xyz, 1 lifanov.com, 1 life-emotions.pt, 0 life-in-hell.tk, 1 @@ -89086,7 +88543,6 @@ lifehacker.com, 1 lifeinaus.com.au, 1 lifeinhellfansite.tk, 1 -lifeinhex.com, 1 lifeinsurancepro.org, 1 lifeis.money, 1 lifeisabug.com, 1 @@ -89147,6 +88603,7 @@ lifetimefitness.tk, 1 lifetimemedsers.ga, 1 lifetimemedsest.ga, 1 +lifetimeroofingrenovation.com, 1 lifetimetraining.co.uk, 1 lifetoolscdc.com, 1 lifetree.network, 1 @@ -89162,6 +88619,7 @@ liftedpixel.net, 1 liftgiving.com, 1 liftie.info, 1 +liftinglogs.com, 1 liftmind.ai, 1 lig.ink, 0 liga.ng, 1 @@ -89176,7 +88634,6 @@ light.mail.ru, 1 lightandvideo.com, 1 lightbearer.tk, 1 -lightbluelearning.com, 0 lightbook.org, 1 lightcraftmc.tk, 1 lightdark.xyz, 1 @@ -89216,6 +88673,7 @@ lightupkapiti.nz, 1 lightupporirua.nz, 1 lightwave-relay.net, 1 +lightwaves.io, 1 lightwitch.org, 0 lightworks.tk, 1 lightyear.ai, 1 @@ -89234,13 +88692,15 @@ lihj.me, 1 lihuenjardin.com, 1 liikluslab.ee, 1 +liinkfy.com, 1 liip.ch, 1 liisauusitaloarola.fi, 1 liivimeretuulepark.ee, 1 liivrand.ee, 1 -lijana.rs, 1 +lijana.rs, 0 lijero.co, 1 liji.ru, 1 +lijie.org, 1 lijstbob.nl, 1 lijstje.be, 1 lijstje.nl, 1 @@ -89254,6 +88714,7 @@ likecrabwalkslowly.ml, 1 liked.hu, 1 likefast.tk, 1 +likegeeks.com, 1 likehifi.de, 1 likenewhearing.com.au, 1 likenosis.com, 1 @@ -89300,7 +88761,6 @@ lille.ml, 1 lillieprivat.org, 1 lilly-lil.net, 1 -lilly-lil.org, 1 lillylove.net, 1 lillywhitehotelgroup.com.au, 1 lilou-sportswear.com, 1 @@ -89314,11 +88774,13 @@ lily-luv.com, 1 lily.flowers, 1 lilyallenlife.ga, 1 +lilydalepersonaltrainers.com, 1 lilylasvegas.com, 1 lilypad.gg, 1 lilypadspa.net, 1 lilypadwikisecret.tk, 1 lilysbouncycastles.com, 1 +lilysecondchance.org, 1 lilyvet.com, 1 lim-light.com, 1 lim.gr, 1 @@ -89377,7 +88839,6 @@ limoforsale.com, 1 limoshka.ru, 1 limousine.milano.it, 1 -limousineservicezurich.com, 0 limouzines.cf, 1 limouzy-combi.com, 1 limpid.nl, 1 @@ -89388,11 +88849,9 @@ lin.fi, 1 linahuang.com, 1 linaklein.de, 1 -linalove.net, 1 linalynn.com, 1 linan.site, 1 linaproclinic.com, 1 -linawinter.com, 1 linawinter.net, 1 linbobo.com, 1 lincasonline.tk, 1 @@ -89415,7 +88874,6 @@ lincolncountywy.gov, 1 lincolnil.gov, 1 lincolnimps.tk, 1 -lincolnmoneyman.com, 1 lincolnmouraimoveis.com, 1 lincolnmouraimoveis.com.br, 1 lincolnparkpressurewashing.com, 1 @@ -89429,7 +88887,6 @@ lindadetmayer.com, 1 lindakloenreizen.nl, 0 lindalap.fi, 1 -lindalush.net, 1 lindamadu.com.br, 1 lindanblog.com, 1 lindaolsson.com, 0 @@ -89473,6 +88930,7 @@ lineamagazin.ru, 0 lineamortal.tk, 1 linebet.com, 1 +linebook.ink, 1 linebooks.cf, 1 linedance.tk, 1 lineengraver.com, 1 @@ -89486,6 +88944,7 @@ lineto.com, 1 linext.cn, 0 linfamilygc.com, 1 +lingala-facile.com, 1 lingerie-coquine.fr, 1 lingerie.com.br, 1 lingeriebym.nl, 1 @@ -89545,7 +89004,6 @@ linkbong.tk, 1 linkbooks.ga, 1 linkborn.com, 1 -linkboxai.com, 1 linkcat.tk, 1 linkcodegenerator.com, 1 linkdesign.tk, 1 @@ -89586,7 +89044,6 @@ linkroll.cf, 1 links22.com, 1 linksafe.ga, 1 -linksbfinance.com, 1 linksbridge.com, 0 linkscloud.org, 1 linksecure.nl, 1 @@ -89597,6 +89054,7 @@ linksol-inc.com, 1 linksonar.io, 1 linkspace.tk, 1 +linkss.express, 1 linkstations.com, 1 linkstellar.com, 1 linktgo.com, 1 @@ -89605,7 +89063,6 @@ linkthisstatus.ml, 1 linkto.cf, 1 linku.com, 1 -linkupcareer.id, 0 linkurio.us, 1 linkurious.com, 1 linkuva.tk, 1 @@ -89669,7 +89126,6 @@ linssindustries.com, 1 lintenritueel.com, 1 linu.gq, 1 -linuos.com, 1 linusdrop.tips, 1 linuslagerhjelm.se, 1 linusruckstuhl.ch, 1 @@ -89692,13 +89148,11 @@ linux.fi, 1 linux.im, 1 linux.pizza, 1 -linux0001.com, 1 linux3.org, 1 linux4.de, 1 linux4all.tk, 1 linuxarequipa.tk, 1 linuxbabe.com, 1 -linuxbg.eu, 1 linuxbierwanderung.com, 0 linuxbloc.tk, 1 linuxbolt.com, 1 @@ -89715,6 +89169,7 @@ linuxguard.io, 1 linuxguru.tk, 1 linuxhandbook.com, 0 +linuxhome.it, 1 linuxhostsupport.com, 1 linuxiac.com, 1 linuxiuvat.de, 1 @@ -89740,7 +89195,6 @@ liodiscoveryservices.co.in, 1 lion-app.de, 1 lion-heart.men, 1 -lion-king.ru, 1 lion-log.com, 1 lion3star.store, 1 lionard.com, 1 @@ -89748,7 +89202,6 @@ lionelversum.de, 1 lionesstamar.com, 1 lionfitness.it, 1 -lionheartsecurityservices.com, 1 lionkitchenremodel.com, 1 lionland.tk, 1 lionpa.ws, 1 @@ -89763,10 +89216,9 @@ lipacom.ga, 1 lipartydepot.com, 1 lipator.cf, 1 -lipaversavers.com, 1 +lipaversavers.com, 0 lipeck.ga, 1 lipeck.tk, 1 -lipetral.com.br, 1 lipetsk-centralniy.cf, 1 lipetsk-news.net, 1 lipetsk48.tk, 1 @@ -89783,7 +89235,6 @@ liq.com.br, 1 liqd.net, 1 liqiuyu.com, 0 -liqourltd.com, 1 liqueur.wiki, 1 liquid.cz, 1 liquid.network, 1 @@ -89801,13 +89252,13 @@ liquidsound88.com, 1 liquidwarp.net, 1 liquidweb.tk, 1 -liquipedia.net, 1 liquiritia.tk, 1 liquorama.com, 1 liquorland.com.au, 1 liqwid.finance, 1 lirelesgens.com, 1 liress.gq, 1 +lireunlivre.com, 1 lirico.ca, 1 lirion.de, 1 lirlandais.ch, 0 @@ -89819,6 +89270,7 @@ lisa-mainz.tk, 1 lisa.xyz, 1 lisabagnall.com, 1 +lisabronner.com, 1 lisadelbo.tk, 1 lisahh-jayne.com, 0 lisahutson.co.uk, 1 @@ -89853,8 +89305,10 @@ lislan.org.uk, 1 lisloi.be, 1 lisnail.gr, 1 +lisns-group.com, 1 lisowski-photography.com, 1 lispeechtherapy.com, 1 +lispor.com, 1 lissabon.tk, 1 lissabonsite.tk, 1 lissajouss.tk, 1 @@ -89877,7 +89331,6 @@ listen.dk, 1 listener.ga, 1 listening-skills.eu, 1 -listenkj.com, 1 listenup.study, 1 lister-kirchweg.de, 1 listerplace.co.uk, 1 @@ -89888,7 +89341,6 @@ listkeeper.io, 0 listminut.be, 1 listofcamsites.com, 1 -listoffreeware.com, 0 listraj.com, 1 listratenkov.com, 1 lists.fedoraproject.org, 1 @@ -89900,7 +89352,6 @@ lit-services.com, 1 lita.or.jp, 1 litaheart.jp, 1 -litarvan.com, 1 litcc.com, 1 litchfieldpark.gov, 1 litchidova.nl, 1 @@ -89926,7 +89377,6 @@ litebit.eu, 1 litebitcdn.eu, 1 litebooks.gq, 1 -litecache.de, 1 litecloud.ml, 1 litehost24.tk, 1 litemind.com, 0 @@ -89960,12 +89410,14 @@ litkicks.com, 1 litnetwork.org, 1 litolin.tk, 1 +litorallimpo.com.br, 1 litoslab.nl, 1 litportal.gq, 1 litteraturkanonen.se, 1 littery.com, 1 little-brother.eu, 1 little-cake.com, 0 +little-johnny.io, 1 little-luk.com, 1 little-news.gq, 1 little-shield.com, 1 @@ -90002,12 +89454,11 @@ littleireland.co.uk, 1 littlejandbigcuz.com.au, 1 littlejunglebg.com, 1 -littlelotsonline.com, 1 +littlelaters.com, 1 littlelucifercafe.tk, 1 littlemaple.tk, 1 littlemaster.tk, 1 littlenamehub.com, 1 -littlenicky.org, 1 littlenina.nz, 0 littlenomadsrecipes.com, 1 littleorangecookbook.com, 1 @@ -90151,7 +89602,6 @@ livermoreca.gov, 1 livermorefireco.gov, 1 liverobot888.com, 1 -liverpoolmoneyman.com, 1 liverylive.com, 1 livesexcalls.co.uk, 1 livesimply.me, 1 @@ -90190,7 +89640,6 @@ livingdex.ca, 1 livinghebrew.tk, 1 livinginretrospect.com, 1 -livingintemeculaca.com, 1 livingislands.org, 1 livinglifesecurely.com, 1 livinglink.be, 1 @@ -90218,13 +89667,11 @@ livresetmanuscrits.com, 1 livroseuniformes.com.br, 1 lixi.today, 1 -lixiang.in.ua, 1 lixiaoyu.live, 1 lixinnovations.com, 1 lixis.com, 1 lixu.com, 1 lixx.org, 1 -lixxil.de, 1 liyaozhen.com, 1 liyin.date, 1 liyong.com, 1 @@ -90249,7 +89696,6 @@ lizz.ee, 1 lizzandra.tk, 1 lizzaran.io, 1 -lizzian.uk, 1 lizzwood.com, 1 lizzythepooch.com, 1 lj-creation.com, 1 @@ -90305,6 +89751,7 @@ llinternational.tk, 1 llkterraplanagem.com.br, 1 llmcartel.com, 1 +llmsource.com, 1 lloretparty.de, 1 lloyd-day.me, 1 lloydrogerspencer.com, 1 @@ -90324,12 +89771,14 @@ lmintlcx.com, 1 lmis.gov.et, 0 lmmtfy.io, 1 +lmpbrskt.com, 1 lmr.com, 1 lmrcirurgiaplastica.pt, 1 lmrcouncil.gov, 1 lmsal.com, 1 lmsaura.com.br, 1 lmscit.com, 1 +lmsmoodletest.xyz, 1 lmsvisao.com, 1 lmsvisao.com.br, 1 lmsvisaocontabilidade.com, 1 @@ -90360,6 +89809,7 @@ lnk.dk, 1 lnmlaser.com, 1 lnoldan.com, 1 +lnom.at, 1 lnr-news.ru, 1 lnrnews.ru, 1 lnsk.lt, 1 @@ -90379,7 +89829,6 @@ loadhourly.tk, 1 loading.se, 1 loadme.ml, 1 -loador.com, 1 loadover.me, 1 loadwallet.com, 1 loafhead.me, 1 @@ -90429,6 +89878,7 @@ localethereum.com, 1 localexpert.realestate, 1 localexpress.io, 0 +localeye.shop, 1 localfirstbank.com, 1 localgaragedoorsfl.net, 1 localgavel.com, 1 @@ -90446,12 +89896,12 @@ locallawfirms.com, 1 locallhost.me, 1 locallinkgalway.ie, 1 -locallures.com, 1 localmonero.co, 1 localnetwork.nz, 1 localnode.net, 1 localops.co, 0 localpartner.fr, 1 +localping.net, 1 localplumber-uk.com, 1 localprideart.com, 1 localprivatediary.com, 1 @@ -90470,7 +89920,6 @@ localstudio.tk, 1 localtownhouses.ga, 1 localtransitionslearning.eu, 1 -locanada.ca, 1 locar-lecridelharfang.xyz, 1 locas.me, 1 locatecellphone.gq, 1 @@ -90522,7 +89971,6 @@ locklock.com.br, 1 locklockbrasil.com.br, 1 locknlockbrasil.com.br, 1 -locknology.net, 1 lockpick.nl, 1 lockpicks.se, 1 lockr.jp, 1 @@ -90542,7 +89990,6 @@ locksmithmidrand24-7.co.za, 1 locksmithmissouricity.com, 1 locksmithsammamishwa.com, 1 -locksmithsanantonio-247.com, 1 locksmithsanantoniotexas.com, 1 locksmithsbuda.com, 1 locksmithscottsdaleaz.com, 1 @@ -90570,6 +90017,7 @@ locus.tk, 1 locutusvader.com, 1 lodash.com, 0 +lodbooks.com, 1 loddeke.eu, 1 lode.li, 1 lode.tk, 1 @@ -90681,7 +90129,7 @@ logisparte.com, 1 logisplus.ca, 1 logistica.it, 1 -logisticschina.com, 1 +logisticoo.com, 1 logitel.de, 1 logitheque.com, 1 logitheque.tk, 1 @@ -90713,6 +90161,7 @@ logopedischcentrum.nl, 1 logopedista.roma.it, 1 logopedistalanni.it, 1 +logopoios.com, 1 logoprofi.tk, 1 logosautomations.com, 1 logosnet.com.br, 1 @@ -90732,7 +90181,6 @@ logwise.com, 1 logze.nl, 1 lohanaflores.com.br, 1 -loheprobado.com, 1 lohkoketju.fi, 1 lohmeyer.cc, 1 lohnsteuerhilfe.net, 1 @@ -90746,6 +90194,7 @@ lois-bullion.com, 1 lois.cf, 1 loisircreatif.net, 0 +loitzschuetz.de, 1 loja-meltech.com.br, 1 lojaapi.com, 1 lojaapoio.com.br, 1 @@ -90774,7 +90223,6 @@ lojamagicalx.com, 1 lojamultplick.com.br, 1 lojaodo9.com.br, 1 -lojapneusxpress.com.br, 1 lojaprimemed.com.br, 1 lojaprojetoagua.com.br, 1 lojashampoo.pt, 1 @@ -90805,8 +90253,6 @@ lokomotivaplzen.cz, 1 lokuma.ai, 1 lola.by, 1 -lolacandy.com, 1 -lolalacita.net, 1 lolbird.tk, 1 lolcats.cat, 1 lolchat.tk, 1 @@ -90851,7 +90297,6 @@ lolipop-iot.eu, 1 lolipops.ga, 1 lolis.stream, 1 -lolis3.com, 1 lolitalechat.com, 1 lolivpn.com, 1 lolkmal.myaddr.io, 1 @@ -90909,7 +90354,6 @@ londonjob.tk, 1 londonkan.jp, 1 londonlondon.uk, 1 -londonmoneyman.com, 1 londonnorthwesternrailway.co.uk, 1 londonpropertymatch.com, 1 londonschool.mx, 1 @@ -90934,7 +90378,6 @@ long-journey.com, 1 long-stories-short.org, 1 long0318.com, 1 -long0555.com, 1 long0556.com, 1 long0728.com, 1 long0776.com, 1 @@ -90959,6 +90402,7 @@ longerwords.com, 1 longest.tk, 1 longestday.org.au, 1 +longeva.bio, 1 longevita.co.uk, 1 longevitadental.com, 1 longevityfaq.com, 1 @@ -90972,7 +90416,7 @@ longislandbusiness.info, 1 longislanddigestive.com, 1 longislandevictions.com, 1 -longislandsewerandwatermain.com, 1 +longislandsewerandwatermain.com, 0 longislandtaxresolution.com, 1 longitudeinsurance.com.au, 1 longjing.com, 1 @@ -90994,7 +90438,6 @@ longting.com, 1 longuevillehouse.ie, 1 longviewnc.gov, 1 -longwise.net, 1 longwoodwrestling.com, 1 lonleymoon.tk, 1 lonniec.com, 1 @@ -91035,8 +90478,6 @@ loop.us, 1 loopback.kr, 1 loopclubapp.com, 1 -loopcore.de, 1 -loopgolf.co, 0 loophq.com, 1 loopingtag.eu, 1 loopingz.com, 1 @@ -91073,7 +90514,6 @@ loquo.com, 1 loqyu.co, 1 lor.kharkov.ua, 1 -lora.bot, 1 loracheadle.com, 1 loraincountyohio.gov, 1 loraincountyrecorder.gov, 1 @@ -91104,7 +90544,6 @@ lore.azurewebsites.net, 1 lore.website, 1 loredrop.com, 1 -loreedeslandes.com, 1 lorena-salido.tk, 1 lorenadumitrascu.ro, 1 lorengraff.net, 1 @@ -91132,7 +90571,6 @@ lornategeorge.tk, 1 lorqui.tk, 1 lorrainehamilton.net, 1 -lorucreative.fi, 1 los-diablos.tk, 1 los11mandamientos.tk, 1 losangelescarpetcleaning.com, 1 @@ -91252,7 +90690,6 @@ lothai.re, 1 lothiandisabilitysport.co.uk, 1 lothlorien.ca, 0 -lotioito.com.br, 1 lotl.ru, 1 lotn.mobi, 1 lotnews.net, 1 @@ -91263,7 +90700,6 @@ lotrarts.com, 1 lotrsketch.com, 1 lotse-it.de, 1 -lotsynergy.com, 1 lottcarey.org, 1 lotteo.com, 1 lotterycodex.com, 1 @@ -91280,7 +90716,6 @@ lottonigeria.com, 1 lottopark.com, 1 lottos.com.au, 1 -lottosquad.net, 1 lottozambia.com, 1 lotus-den.com, 1 lotusbook247.com, 1 @@ -91298,7 +90733,6 @@ loud-dragon.tk, 1 louderfaster.co.uk, 1 loudersent.ga, 1 -loudgrowth.com, 1 loudmouth.tk, 1 loudontn911.gov, 1 loudouncountyva.gov, 1 @@ -91320,9 +90754,9 @@ louisianalifesciences.gov, 1 louisianamo.gov, 1 louisiananetzero.gov, 1 +louisianarecoveryauthority.org, 1 louisianarural.gov, 1 louisianassbci.gov, 1 -louisianatitlesearch.com, 1 louisroyer.ovh, 1 louisville.gov, 1 louisvillecarguys.com, 1 @@ -91331,7 +90765,6 @@ louisvillene.gov, 1 louisvilleohio.gov, 1 louiza.tk, 1 -loujaxx.net, 1 loukkos.ma, 1 loungeballin.org, 1 loungecafe.net, 1 @@ -91372,6 +90805,7 @@ lovebusinesseastmidlands.com, 1 lovebusinessexpo.co.uk, 1 lovebusinessnetworking.co.uk, 1 +lovecentralcoast.com, 1 lovecourtreporting.com, 1 lovecrystal.co.uk, 1 lovecsnov.tk, 1 @@ -91443,7 +90877,6 @@ lovetime.co.il, 1 lovetowork.tk, 1 loveuno.com, 1 -loveweddingphotosandfilm.co.uk, 1 loveyouhome.ua, 1 lovg.ren, 1 lovi.at, 1 @@ -91515,13 +90948,13 @@ lphispano.tk, 1 lpiem.fr, 1 lpisd.org, 1 +lpkgyokai.com, 1 lpkosovo.tk, 1 lplbullets.com, 1 lpm.london, 1 lpmkonji.cf, 1 lpnjobsite.com, 1 lps.in.ua, 1 -lpsales.ca, 1 lpsolutions.com, 1 lpt-nebreziny.cz, 1 lpt-nebreziny.eu, 1 @@ -91623,6 +91056,7 @@ lu.search.yahoo.com, 0 lu0.org, 1 lu2343.com, 1 +lua-script.ru, 1 luacustica.tk, 1 luademelsexshop.com, 1 lual.tk, 1 @@ -91634,10 +91068,9 @@ lubartow24.pl, 1 lubchemspecialties.com, 0 lubenergy.com.ar, 1 +lubik.tech, 1 lubosabo.tk, 1 lubot.net, 1 -lubotodorov.com, 1 -lubrary.com, 1 lubuskibs.pl, 0 luc-nutrition.tk, 1 luc-oberson.ch, 0 @@ -91654,7 +91087,6 @@ lucaplus.com, 1 lucarautti.com, 1 lucarelli.fr, 1 -lucarrilho.com.br, 1 lucasartsclassics.com, 1 lucasbasler.com, 1 lucasbastos.com, 1 @@ -91671,6 +91103,7 @@ lucasjquinn.com, 1 lucaslarson.net, 1 lucasmateus.ga, 1 +lucasschuermann.com, 1 lucastefanelli.dk, 0 lucciolachile.com, 1 luce.life, 1 @@ -91696,7 +91129,6 @@ lucidya.com, 0 lucie-parizkova.cz, 1 lucielavickova.com, 1 -lucieradosinska.cz, 1 luciezimmerova.cz, 1 luciferblog.tk, 1 luciferianism.tk, 1 @@ -91719,7 +91151,6 @@ lucky-numbers.ru, 1 lucky-time.tk, 1 lucky13strategies.com, 1 -lucky7s.com, 1 luckyabonent.ml, 1 luckybeantravel.com, 1 luckyblockland.fr, 1 @@ -91728,7 +91159,6 @@ luckycloud.de, 1 luckydoglodge.net, 1 luckyemail.ml, 1 -luckyfeel.com, 1 luckyfrog.hk, 1 luckyhours.xyz, 0 luckymice.ml, 1 @@ -91784,6 +91214,7 @@ luenwarneke.com, 1 lufa.com, 1 luftfilterbegehren.at, 1 +lufthansa.at, 1 lufthansa.com, 1 luftreiniger.biz, 1 lugandbezel.com, 1 @@ -91888,7 +91319,6 @@ lule-kendo.tk, 1 lulilop.com, 1 lulka.net, 1 -lullugun.net, 1 luls.tk, 1 lulu960.xyz, 1 luluexchange.com, 1 @@ -91906,7 +91336,6 @@ lumberjackman.tk, 1 lumbre-encendedores.com, 1 lumchan.tk, 1 -lumen-science.com, 1 lumenira.com, 1 lumenore.com, 0 lumenproduct.com, 1 @@ -91925,6 +91354,7 @@ luminateimpactlab.com, 1 lumindigital.com, 0 lumineled.se, 1 +luminentis.net, 1 lumingze.eu.org, 0 luminia-informatique.fr, 1 lumitop.com, 1 @@ -91962,7 +91392,6 @@ lunaonline.tk, 1 lunapps.com, 1 lunar6.ch, 0 -lunares.pl, 1 lunarflake.com, 1 lunarhost.cf, 1 lunarian.uk, 1 @@ -92035,7 +91464,6 @@ luoxianjun.com, 1 luoxingyu.ml, 1 lupa.cz, 1 -lupa.mk, 1 lupacentrum.pl, 1 luparacoes.com.br, 1 lupecode.com, 1 @@ -92103,6 +91531,7 @@ lux-house.tk, 1 lux-optica.pl, 1 luxanos.com, 1 +luxapps.lu, 1 luxarchive.tk, 1 luxarymodels.com, 1 luxaterra.com, 1 @@ -92123,6 +91552,7 @@ luxfosdecoenterprise.com, 1 luxhair.com.ua, 1 luxhome.tk, 1 +luxin.sh, 1 luxinfine.su, 1 luxlms.com, 1 luxmedprotez.com, 0 @@ -92165,12 +91595,10 @@ luxurystays.in, 1 luxurythatlasts.com, 1 luxuryweddingsindonesia.com, 1 -luxushair.com, 1 luxusnataliri.cz, 1 luxusnivoucher.cz, 1 luxusnyvoucher.sk, 1 luxvacuos.net, 1 -luxvide.it, 1 luxwatch.com, 1 luxyachtingreece.com, 1 luyckx.net, 1 @@ -92181,9 +91609,11 @@ luziekurth.com, 1 luzion.in, 1 luzsaude.pt, 1 +lv.com, 1 lv.lk, 1 lv.search.yahoo.com, 0 lv0.it, 0 +lvadviser.com, 1 lvcservicesplus.com.au, 0 lvcshu.com, 1 lvdgroup-innov8.com, 1 @@ -92236,7 +91666,6 @@ lycly.me, 1 lycoris.eu.org, 1 lydiamar.ph, 1 -lydianibley.com, 1 lydiawebfans.tk, 1 lydudlejning.net, 1 lyfbits.com, 1 @@ -92255,7 +91684,6 @@ lymia.moe, 1 lymiahugs.com, 1 lyna.ml, 1 -lyncoin.com, 1 lyndhurstohio.gov, 1 lyndo.ga, 1 lyndontownshipmi.gov, 1 @@ -92324,7 +91752,6 @@ lyx.dk, 1 lyxel-staging.tk, 1 lyyb.com, 1 -lz.lv, 1 lz.sb, 1 lz233.ac.cn, 1 lzahir.com, 1 @@ -92384,7 +91811,6 @@ m134.eu, 1 m1gun.tk, 1 m1hax.uk, 1 -m1r2.com, 1 m23cal.eu, 1 m24o.net, 1 m2am.fr, 1 @@ -92407,11 +91833,13 @@ m4rcus.de, 1 m4rkos.de, 1 m5197.co, 1 +m5duk.com, 1 m5industries.com, 1 m5wl5r.com, 1 m6729.co, 1 m6957.co, 1 m6pub.fr, 1 +m7.vc, 1 m7info.com, 1 m7kni.com, 1 m7mzo.com, 1 @@ -92448,7 +91876,6 @@ maakan.in, 1 maaldrift.tk, 1 maarivpn.com, 1 -maarja.edu.ee, 1 maartenderaedemaeker.be, 1 maasdonk.nl, 1 maaspoortsportsenevents.nl, 1 @@ -92477,6 +91904,7 @@ mac-i-tea.ch, 0 mac.ao, 1 macabeo.bio, 1 +macabro.mx, 1 macailabritton.com, 1 macalha.com, 1 macallan-tls.com, 1 @@ -92578,11 +92006,9 @@ macperformanceguide.com, 1 macpress.com.br, 1 macreosolutions.com, 1 -macroad.com, 1 macrobills.com, 1 macroeng.tk, 1 macrofab.com, 1 -macrofly.com, 1 macrogamer.com, 1 macrogrant.com, 1 macropremia.com.ar, 1 @@ -92627,12 +92053,10 @@ madebyyolanda.com, 1 madecenter.com.br, 1 madechocolaterie.nl, 0 -madeforthefuture.com, 1 madeglobal.com, 1 madeinabyss-manga-new.com, 1 madeinamerica.gov, 1 madeincana.com, 1 -madeincanarias.net, 1 madeinchezmoi.net, 0 madeinsport.com, 1 madeintheshadelr.com, 1 @@ -92758,6 +92182,7 @@ maerklinstore-muehlheim.de, 1 maersktankers.com, 1 maestroblocks.com, 1 +maestrobpm.com.br, 1 maestrocabins.co.uk, 1 maestrocasas.es, 1 maestrocasas.pt, 1 @@ -92768,7 +92193,6 @@ maestrowu.com, 1 maeva-beauty.com, 1 maeva-beauty.fr, 1 -maeva.com, 1 maevelyfotografia.com, 1 maewongaming.tk, 1 maff.co.uk, 1 @@ -92820,20 +92244,18 @@ magdalenatransa.tk, 1 magdeburg.directory, 1 magdic.eu, 1 -magebit.com, 0 magebrawl.com, 1 magehouse.co.uk, 1 -magel.io, 1 magellan-met.ru, 1 magellan.ai, 1 magellan.money, 1 magenda.sk, 1 -magendarmbeschwerden-koblenz.de, 1 magenkompass.de, 0 magentacares.com, 1 magentazorg.nl, 1 magento-ecommerce.it, 1 magento2.hu, 1 +magentoeesti.eu, 1 magentrix.com, 0 magepro.fr, 1 mager.org, 1 @@ -92882,6 +92304,7 @@ magickmale.de, 1 magiclen.org, 1 magicline.com, 1 +magicnotes.ai, 1 magicocuoredimamma.it, 1 magicolr.com, 1 magicomotor.com, 1 @@ -92912,6 +92335,7 @@ magna-carta.co.za, 1 magnacumlaude.co, 1 magnamus.it, 1 +magnapharm.eu, 1 magnatronic.com.br, 1 magneetfolie.nl, 1 magnes.priv.pl, 1 @@ -92946,7 +92370,6 @@ magniezetassocies.fr, 1 magnific.tk, 1 magnifiscent.com, 1 -magniflood.com, 1 magnisgroup.eu, 1 magnit-akciya.tk, 1 magnit-news.ru, 1 @@ -92954,6 +92377,7 @@ magnitola.ml, 1 magnolia.com.my, 1 magnolia.com.sg, 1 +magnoliadairy.com.sg, 1 magnoliadoulas.com, 1 magnoliaglobal.com, 1 magnoliaicecream.com.sg, 1 @@ -92990,16 +92414,13 @@ mahalaraibanda.ro, 1 mahali.tk, 1 mahallekulturu.com, 1 -mahalux.com, 1 -mahalux.cz, 1 mahalux.de, 1 -mahalux.eu, 1 -maharashtrian.com, 1 maharishikaa.org, 1 mahaskacountyia.gov, 1 mahatenders.gov.in, 1 mahatmarice.com, 1 mahatmayoga.org, 1 +mahavidya.academy, 1 mahawi.sk, 1 mahayana.tk, 1 mahbobmax.tk, 1 @@ -93019,6 +92440,7 @@ mahjong.org, 1 mahjonggames.tk, 1 mahjongrush.com, 1 +mahjplay.events, 1 mahler.io, 1 mahmoodmehrabi.com, 1 mahmoodmehrabi.ir, 1 @@ -93037,7 +92459,6 @@ maialeechin.com, 0 maiateam.pt, 1 maib.tas.gov.au, 1 -maid.gay, 1 maid.gg, 1 maid.tk, 1 maidalawfirm.com, 1 @@ -93064,7 +92485,6 @@ mail-usa.com, 1 mail.ch, 1 mail.co.uk, 1 -mail.com, 1 mail.cx, 1 mail.de, 1 mail.fr, 1 @@ -93148,7 +92568,6 @@ mailxpress.ga, 1 maimaiyeuem.tk, 1 maimemostatus.com, 1 -maimonides-foundation.org, 1 maimounayoussef.com, 1 main-spitze.de, 1 main1.host, 1 @@ -93161,6 +92580,7 @@ mainframeserver.space, 1 mainfrankentheater.de, 1 mainhattan-handwerker.de, 1 +mainhoster.de, 1 mainhuyahan.tk, 1 mainlined.org, 1 mainroller.de, 1 @@ -93174,7 +92594,6 @@ mainzer-allerlei.de, 1 maioresemelhores.com, 1 mair.best, 1 -mairaf.com, 1 mairangiautomotive.co.nz, 1 mairateam.com, 1 mairie-landry.com, 1 @@ -93197,6 +92616,7 @@ maison-auriat.fr, 1 maison-du-mineur.com, 1 maison-eureka.fr, 1 +maison2com-event.fr, 1 maisondelafigue.com, 1 maisondepax.com, 1 maisondidon.com, 1 @@ -93206,7 +92626,6 @@ maisonsaintfort.fr, 1 maisonsdenfrance-cls.fr, 1 maisonstpaul.fr, 1 -maisonwow.fr, 1 maisproduzida.com.br, 1 maitemerino.net, 1 maitheme.com, 1 @@ -93306,7 +92725,6 @@ makermiles.com, 1 makermiles.net, 1 makermiles.org, 1 -makersempire.com, 1 makerspace-gt.de, 1 makesenseofdata.co.uk, 1 maketheconnection.net, 1 @@ -93324,6 +92742,7 @@ makhzan.org, 1 maki-chan.de, 1 maki.cafe, 1 +makifves.com, 1 makilingchallenge.tk, 1 making-it.nl, 1 making-space.com, 1 @@ -93333,7 +92752,7 @@ makingmemoney.ml, 1 makingmoneyathome.tk, 1 makingmoves.gq, 1 -makkenzo.com, 0 +makkenzo.com, 1 makkiyaz.tk, 1 makkusu.photo, 1 maklerinfo.biz, 1 @@ -93445,6 +92864,7 @@ malinaclub.com, 1 malinheadview.ie, 1 malinmethod.com, 1 +malipi.de, 1 malirstvimh.cz, 1 malisheva-blog.cf, 1 malisheva-blog.ga, 1 @@ -93476,7 +92896,6 @@ malmyzh.tk, 1 malone.link, 0 maloneyja.com, 1 -malonu.vn, 1 malorita.tk, 1 malp.cc, 1 malphisruul.de, 1 @@ -93515,7 +92934,6 @@ mamanzari.com, 1 mamanzaris.com, 1 mamaplus.net, 1 -mamaquinas.com.br, 1 mamaruga.com, 1 mamasday.org, 1 mamasguiderecipes.com, 1 @@ -93600,7 +93018,6 @@ mandala-book.tk, 1 mandanudes.ae, 1 mandarinplay.tk, 1 -mandatkollen.se, 1 mandcbouncycastlehire.co.uk, 1 mandefender.tk, 1 mandela-effect-wiki.tk, 1 @@ -93622,7 +93039,6 @@ manekin.gq, 1 manekin.ml, 1 manelbenlloch.com, 1 -maneql.co.jp, 1 manere.eu, 1 manesht.ir, 1 manforums.com, 1 @@ -93638,7 +93054,6 @@ manga-passion.de, 1 manga-republic.com, 1 manga168.com, 1 -mangabenim.com, 1 mangabond.tk, 1 mangaboxes.ml, 1 mangacat.ga, 1 @@ -93661,6 +93076,7 @@ mango888.com, 1 mangochill.com, 1 mangomfb.com, 1 +mangoroyalerecords.com, 1 mangoservers.tk, 1 mangotwoke.co.uk, 1 mangrum.net, 1 @@ -93705,12 +93121,15 @@ maniththakur.com, 1 manito.kr, 0 manitoba.ca, 1 +manitoulinairport.ca, 1 +manitoulinairport.com, 1 manitoulinglobalforwarding.co, 1 manitoulinglobalforwarding.com, 1 manitoulinglobalforwarding.mx, 1 manitoulingolf.com, 0 manitoulinusedequipment.ca, 1 manitoulinusedequipment.com, 1 +manitoulinwarehousing.com, 1 manitouspringsco.gov, 1 manitowoccountywi.gov, 1 manitowocwi.gov, 1 @@ -93742,7 +93161,6 @@ manofmany.com, 1 manogara.tk, 1 manoha-proservices.fr, 1 -manoila.co.uk, 0 manoirdecontres.com, 1 manojsharan.me, 1 manolitodarts.tk, 1 @@ -93754,7 +93172,6 @@ manporn.xxx, 1 manpro.systems, 1 manprojects.co.uk, 1 -mansage.com, 1 mansarda-life.net, 1 mansdell.net, 1 mansfeld.pl, 1 @@ -93773,7 +93190,7 @@ mantaro.site, 1 manteca.gov, 1 manteena.com.au, 1 -mantella.nl, 0 +mantella.nl, 1 mantenimiento-zaragoza.com, 1 mantenimientodeinstalacioneselectricas.es, 1 mantenimientoimpresoras.com, 1 @@ -93787,10 +93204,8 @@ mantraptownshipmn.gov, 1 manu.quebec, 1 manual-pdf.com, 1 -manual-user-guide.com, 1 manualcert.ie, 1 manualeusoemanutenzione.com, 1 -manualowl.com, 1 manualredeye.com, 1 manualsalgadeiralucrativa.com.br, 1 manualscollection.com, 1 @@ -93816,8 +93231,6 @@ manuelsebe.com, 1 manufacturing.gov, 1 manulife.ca, 1 -manumagnum.com, 1 -manupgrade.com, 1 manuscript.com, 1 manusiasosial.tk, 1 manusje-van-alles.nl, 1 @@ -93871,11 +93284,14 @@ maowtm.org, 1 maozedong.red, 1 map-immo.fr, 1 +map.au, 1 map.fund, 1 map45.onthewifi.com, 1 map4erfurt.de, 1 map4jena.de, 1 +map4u.com, 1 mapa-airsoft-akci.cz, 1 +mapa-do-mundo.com, 1 mapa1.com, 1 mapadados.com, 1 maparz.com, 1 @@ -93885,10 +93301,10 @@ mapblender.com, 1 mapc.ro, 1 mapchange.org, 1 -mapdap.com, 1 mapduce.com, 1 mapdump.com, 1 mapgear.nl, 0 +maphilosophie.com, 1 mapillary.com, 1 mapitcontrol.com, 1 maplebgm.cc, 1 @@ -93900,15 +93316,14 @@ maplehousehomeinvestors.com, 1 maples.com, 1 mapletime.com, 1 -mapletokyo.top, 1 mapletonmn.gov, 1 maplevalleytwpmi.gov, 1 maplewood.tk, 1 maplewoodnj.gov, 1 mapmatix.com, 1 +mappi.net, 1 mappinandwebb.com, 1 mappingspaceperu.com, 1 -maprao.xyz, 1 mapresidentielle.fr, 1 mapscloud.com, 1 mapsindoors.com, 1 @@ -94013,7 +93428,7 @@ marchand.net.pl, 1 marchcharge.com.au, 1 marchellenevers.tk, 1 -marchesini.com, 1 +marchesini.com, 0 marchesini.com.ua, 1 marchhappy.tech, 0 marchinghatters.tk, 1 @@ -94039,6 +93454,7 @@ marcoduenki.ch, 1 marcoececilia.it, 1 marcoetheridgefiction.com, 1 +marcoheijkoop.nl, 1 marcoklomp.nl, 1 marcokuoni.ch, 1 marcolattanzio.tk, 1 @@ -94060,6 +93476,7 @@ marcusberley.com, 1 marcusbreda.com.br, 1 marcusburghardt.tk, 1 +marcuscole.me, 1 marcusds.ca, 1 marcusporter.tk, 1 marcusquinn.com, 1 @@ -94069,6 +93486,7 @@ mardigrasnapkins.com, 1 mardinhaberleri.tk, 1 mardinsondakika.tk, 1 +mare-digital.com, 1 mare92.cz, 1 marechal-company.com, 1 mareforfa.com, 1 @@ -94146,6 +93564,7 @@ mariaterbildt.tk, 1 mariavilleme.gov, 1 mariberceritera.online, 1 +maribyrnongpersonaltrainers.com, 1 marico.com, 1 maridacaterini.it, 1 maridana.lt, 1 @@ -94157,7 +93576,6 @@ mariecurie.tk, 1 mariekedenbraber.nl, 1 mariel-news.net, 1 -mariella-sun.net, 1 marielouise.tk, 1 mariemccaig.co.uk, 1 marien-bouwens.be, 1 @@ -94166,7 +93584,6 @@ marienvillefire.com, 1 mariereichl.cz, 1 mariescountymo.gov, 1 -marieskyler.net, 1 marijnroovers.eu, 1 marijuana-seeds.nl, 1 marijuanajobscannabiscareers.com, 1 @@ -94184,9 +93601,7 @@ marina-group.tk, 1 marina-tsvetaeva.ml, 1 marinaboats.com, 1 -marinaborregoterapeuta.pt, 1 marinadarje.com, 1 -marinamontana.net, 1 marinapozzoli.tk, 1 marinaquip.com, 1 marinarinaldi.ml, 1 @@ -94209,7 +93624,7 @@ marinettewi.gov, 1 mario-ancic.tk, 1 mario-sarto.com, 0 -mario.com.ua, 0 +mario.com.ua, 1 mario420.ga, 1 marioabela.com, 1 mariofrazao.com.br, 1 @@ -94238,10 +93653,8 @@ marisamorby.com, 0 marisasitaliankitchen.com, 1 mariskavankasbergen.nl, 1 -mariskax.net, 1 marismenos.tk, 1 maritiemshertogenbosch.nl, 1 -maritime-mea.com, 1 maritimehistory.org.uk, 1 maritimeinfosec.org, 1 maritlarsen.ml, 1 @@ -94330,6 +93743,7 @@ marketmotion.com.au, 1 marketnews.com, 0 marketone.com, 1 +marketping.net, 1 marketplace.tf, 1 marketplacetue.nl, 1 marketramp.de, 1 @@ -94361,7 +93775,6 @@ markllego.com, 1 markmccluretoday.com, 1 markmesh.com, 1 -markmet.fi, 0 markmetcalfe.io, 1 markmorris.com.au, 0 markocloud.com, 1 @@ -94526,10 +93939,10 @@ marsmediavideo.com, 1 marsriva.pk, 1 marstonsapprenticeships.co.uk, 1 +mart.in, 1 marta-chat.ga, 1 marta.uz, 0 martacollmarine.science, 1 -martacooks.com, 1 martagoraca.pl, 1 martcms.com, 1 martelange.ovh, 1 @@ -94635,7 +94048,6 @@ marusoftware.net, 1 marussy.com, 1 marustat.ru, 1 -maruyama-dc.net, 1 marvaco.cf, 1 marvaco.ga, 1 marvaco.tk, 1 @@ -94676,6 +94088,7 @@ marvnetforum.ml, 1 marvnetforum.tk, 1 marvos.se, 1 +marwad.com, 1 marwadionline.com, 1 marxist-club.org, 1 marxist.party, 1 @@ -94699,10 +94112,9 @@ marymaloney.tk, 1 marymarcotte.com, 1 marypierce.tk, 1 -maryrock.net, 1 +marypressing.fr, 1 marysvilleks.gov, 1 marytetzstore.com.br, 1 -marywet.net, 1 mas.be, 1 mas.bg, 1 masaarchive.org, 1 @@ -94730,7 +94142,6 @@ masculinemindset.com, 1 masdemariette.com, 1 masdemexico.com, 1 -masdr.sa, 1 masduta.co, 1 masdzub.com, 1 maservant.com, 1 @@ -94793,17 +94204,18 @@ mass-analytica.com, 1 mass.pt, 1 mass511.com, 1 -massachusettstitlesearch.com, 1 massada.nu, 1 massaer.tk, 1 massage-californien.tk, 1 massage-colleges.com, 1 +massage-kirchlengern.de, 1 massage-la-clusaz.com, 0 massage-technique.tk, 1 massage-vitalite.fr, 1 massage-well.ch, 1 massageandwellbeing.com, 1 massagecupping.com, 1 +massageenger.de, 1 massagegunadvice.com, 1 massagehabits.com, 0 massagekartan.ga, 1 @@ -94814,14 +94226,12 @@ massaggio.it, 1 massagik.ml, 1 massana.es, 1 -massanews.com, 1 massarbsettlement.com, 1 massauditor.gov, 1 massazh.cf, 1 massbank.eu, 0 massconsultores.com, 1 masse.org, 1 -masseyrack.com, 1 masshelpline.com, 1 masshost.tk, 1 masshpc.gov, 1 @@ -94850,6 +94260,7 @@ mastellone.us, 1 master-education.jp, 1 master-net.org, 1 +master-plan.com.ar, 1 master-tmb.ru, 1 master-zone.com, 1 master.shop, 1 @@ -94857,6 +94268,7 @@ masterassignmentwriter.com, 1 mastercardpac.com, 1 mastercareplus-demo.com, 1 +mastercareplus-staging.com, 1 mastercareplus-uat.com, 1 mastercareplus.com, 1 mastercontrolgov.com, 1 @@ -94945,9 +94357,8 @@ matc.ca, 0 matc.net, 1 match.audio, 1 -match.by, 1 +match.by, 0 matcha-iga.jp, 1 -matcha14.com, 1 matchable.io, 1 matchable.uk, 1 matchflix.ch, 1 @@ -95023,7 +94434,6 @@ mathesonsteplock.ca, 1 matheusmacedo.ddns.net, 1 mathewlane.com, 1 -mathewlaverty.ca, 1 mathfilm.dk, 1 mathias.re, 0 mathiasbynens.be, 1 @@ -95050,7 +94460,6 @@ mati.gq, 1 mati.lol, 0 mati.tk, 1 -matias-emanuel.shop, 1 matiasbrunacci.com, 1 matiaskorhonen.fi, 1 maticz.com, 1 @@ -95073,12 +94482,14 @@ matolab.lt, 1 matomari.tk, 1 matopu.tk, 1 +matoseduao.com, 1 matosinfo.com, 1 matosinfo.fr, 1 matoutepetiteboutique.com, 1 matov.tk, 1 matovaya-pomada.ml, 1 matozone.com, 1 +matplastic.com, 1 matpools.com, 1 matraquilhosalgarve.pt, 1 matraquilhosbeirainterior.pt, 1 @@ -95111,6 +94522,7 @@ matroskin.ml, 1 matrx.tw, 1 matsaservicios.com, 1 +matsluijten.nl, 1 matsson.com, 1 matstodin.is, 1 matsu-semi.com, 1 @@ -95156,6 +94568,7 @@ mattga.ca, 1 mattgemmell.com, 1 mattgoddardphotography.co.uk, 1 +mattheerema.com, 1 matthew-carson.info, 1 matthewaker.com, 1 matthewbarnesmusic.com, 1 @@ -95287,7 +94700,6 @@ mauletsmallorca.tk, 1 maumovie.ml, 1 maunayogastudio.com, 1 -maunder.ru, 1 maunium.net, 1 maurice-brant.uk, 1 maurice-walker.com, 0 @@ -95296,7 +94708,6 @@ mauriceje.ga, 1 mauricespapens.tk, 1 mauricio-ochmann.tk, 1 -mauriciog.com.ar, 0 mauricioghiorzi.com.ar, 0 mauricioquadradoconsultor.com.br, 1 mauricioquadradocontador.com.br, 1 @@ -95328,7 +94739,6 @@ mavgroup-eu.com, 1 mavic.com, 1 mavicafegrill.com, 1 -maviepearl.net, 1 mavncy.com, 1 mavrick.tk, 1 mavro.cf, 1 @@ -95372,6 +94782,7 @@ maxbike.tk, 1 maxboehme.net, 1 maxboobs.com, 1 +maxbrc.com, 1 maxbruckner.de, 1 maxbruckner.org, 1 maxbuelk.de, 1 @@ -95415,6 +94826,7 @@ maximegagnon.io, 1 maximemalfoy.com, 1 maximemichaud.me, 1 +maximiles.co.uk, 1 maximilian-graf.de, 1 maximilian-greger.com, 1 maximilian-staedtler.de, 1 @@ -95454,12 +94866,12 @@ maxmusic.tk, 1 maxmusical.ml, 1 maxnac.tk, 1 -maxnews.mn, 1 maxogles.com, 0 maxopen.cf, 1 maxostapenko.com, 1 maxp.info, 0 maxpapildai.lt, 1 +maxpet.co.uk, 1 maxpoint.it, 1 maxportal.tk, 1 maxr1998.de, 0 @@ -95483,6 +94895,7 @@ maxuniverse.de, 1 maxus.tk, 1 maxval.com, 1 +maxvet.co.uk, 1 maxvibe.rocks, 1 maxwaellenergie.de, 1 maxweiss.io, 1 @@ -95517,7 +94930,6 @@ mayersoncreative.com, 1 mayfairlakes.org, 1 mayfairlimo.eu, 1 -mayfairturkishkebabcuisine.com, 1 mayfairwecare.com, 1 mayfieldheightsohio.gov, 1 mayflowerbocawina.tk, 1 @@ -95592,8 +95004,6 @@ mbda.gov, 1 mbdrogenbos-usedcars.be, 1 mbeach.fr, 1 -mbed.com, 1 -mbed.org, 1 mbedcloud.com, 1 mbedcloudintegration.net, 1 mbfiles.tk, 1 @@ -95611,7 +95021,9 @@ mbr.moe, 1 mbr.pw, 1 mbrd.de, 1 +mbrental.fr, 0 mbrjun.cn, 1 +mbspsu.ac.in, 1 mbsunu.com, 1 mbsync4supply.com, 1 mbt-constructions.co.uk, 1 @@ -95624,11 +95036,10 @@ mc-auth.com, 1 mc-connect.net, 1 mc-jobs.net, 1 -mc-mods.org, 1 mc-servers.com, 1 mc-sin.ch, 1 mc-teemocraft.tk, 1 -mc-venture.net, 0 +mc-venture.net, 1 mc.ax, 1 mc007.xyz, 1 mc2.plus, 1 @@ -95641,9 +95052,9 @@ mcandido.it, 1 mcaps-mn.gov, 1 mcavallo.com, 1 -mcaz.nl, 1 mcb-bank.com, 1 mcba.com.br, 1 +mcbr.cn, 1 mcc.edu.ph, 1 mcc.gov, 1 mccabes.com.au, 1 @@ -95688,7 +95099,6 @@ mcead.com, 1 mceconferencecentre.eu, 1 mceducation.com, 1 -mcelebi.net, 1 mcelhanney.com, 1 mcemyigit.com.tr, 1 mcescher.com, 1 @@ -95706,8 +95116,6 @@ mcgill.ca, 1 mcgillsbuses.co.uk, 1 mcgovernance.com, 1 -mcgrailvineyards.com, 1 -mcgrand.shop, 1 mcgrandshop.eu, 1 mcgrathnicol.com, 1 mcgregortx.gov, 1 @@ -95780,6 +95188,7 @@ mconverter.eu, 1 mcos.nc, 1 mcoutinho.pt, 1 +mcp-katalog.ru, 1 mcpaoffice.com, 1 mcpart.land, 1 mcpat.com, 1 @@ -95790,7 +95199,6 @@ mcpizy.com, 1 mcplayman.de, 1 mcprocdn.com, 1 -mcptotal.io, 1 mcptotal.net, 1 mcr.pt, 1 mcraft.ru, 1 @@ -95837,7 +95245,6 @@ md-progressistes.fr, 1 md-service.net, 1 md28.in, 1 -md5check.com, 1 mda.gov.br, 1 mdaemon.de, 1 mdaemon.tips, 1 @@ -95856,7 +95263,7 @@ mddetails.com, 1 mddietclinic.com, 1 mddistributorsstore.com, 1 -mdeep.ru, 0 +mdeep.ru, 1 mdek.at, 1 mdewendt.de, 1 mdf-bis.com, 0 @@ -95880,15 +95287,14 @@ mdpharma.com, 1 mdpp.com.br, 1 mdpparish.com, 1 +mdqcodeai.com.ar, 1 mdroo.com, 1 mdrsp.de, 1 mdrthmcs.io, 1 mds-paris.com, 1 mdsave.com, 1 -mdscomp.net, 1 mdsconsultinglombok.com, 1 mdtaxconnect.gov, 1 -mdtitlesearch.com, 1 mdtorelli.it, 1 mdwedding168.com, 1 mdwellness.ca, 1 @@ -95945,6 +95351,7 @@ mearsconnect.com, 1 mearstransportation.com, 1 measureaustralia.com.au, 1 +measureinsats.com, 1 measurementsolutionsinc.com, 0 measureyourpenis.today, 1 meat-berry.ru, 1 @@ -96036,7 +95443,6 @@ mec0835.com, 1 mec0837.com, 1 mec0838.com, 1 -mec0851.com, 0 mec0859.com, 1 mec0870.com, 1 mec0872.com, 1 @@ -96111,7 +95517,6 @@ mectilde.info, 1 mecu.com, 1 med-colleges.com, 1 -med-fine.com, 1 med-flex.com, 1 med-line.cf, 1 med-metrix.com, 0 @@ -96134,7 +95539,6 @@ medbiocompany.com, 1 medbiocompany.ml, 1 medbreaker-friends.at, 1 -medbreaker.one, 0 medcartoon.com, 1 medcentr.online, 1 medcir.com.br, 1 @@ -96149,6 +95553,7 @@ meddigital.com, 1 meddin.com, 1 mede-handover.azurewebsites.net, 1 +medebridge.com.au, 1 medec.ec, 1 medecine.ai, 1 medecinesalternatives-developpementspirituelcreatif.com, 1 @@ -96160,12 +95565,13 @@ medellinencanciones.tk, 1 medex.health, 1 medfind.link, 1 +medflow.it, 1 medfordoregon.gov, 1 medfordwi.gov, 1 medgenome.com, 1 medgetech.com, 1 medguide-bg.com, 1 -medgyd.lt, 0 +medgyd.lt, 1 medhacooks.com, 1 medhiwa.com, 1 medhy.fr, 0 @@ -96188,7 +95594,6 @@ media-street.co.uk, 1 media-weber.net, 1 media-webs5.com, 1 -media-wind.com.tw, 1 media24.world, 1 media4u.tk, 1 mediaarea.net, 1 @@ -96206,7 +95611,7 @@ mediaelf.freeboxos.fr, 1 mediafly.com, 1 mediaforkids.org, 1 -mediageneous.com, 1 +mediageneous.com, 0 mediagetnews.tk, 1 mediagrand.net, 1 mediahaus.de, 0 @@ -96222,7 +95627,6 @@ mediamora.nl, 1 medianbases.ga, 1 mediantechnologies.com, 1 -mediantlabs.com, 1 mediaoffice.ae, 1 mediapark.uz, 1 mediapart.fr, 1 @@ -96234,7 +95638,7 @@ mediarenegades.net, 1 mediarithmics.com, 1 mediarithmics.io, 1 -mediaroom.ai, 1 +mediaroom.ai, 0 mediarquita.com, 1 medias-presse.info, 1 mediasagasocialseo.com, 1 @@ -96284,7 +95688,6 @@ medicalonliner.tk, 1 medicaloptica.es, 1 medicalpeople.tk, 1 -medicalphysicistservices.com, 1 medicalplaza.ua, 1 medicalpsiho.ro, 1 medicalsite.tk, 1 @@ -96345,7 +95748,7 @@ mediniti.com, 0 medino.com, 1 medinorte.es, 1 -mediro-ict.co.za, 1 +mediro-ict.co.za, 0 medirota.com, 1 medisca.com, 1 medisense.tk, 1 @@ -96371,6 +95774,7 @@ mediweed.tk, 1 medizin18.at, 1 mediziner-goettingen.tk, 1 +medizinstudium24.de, 1 medja.net, 1 medklee.com, 1 medkliniks.ru, 1 @@ -96410,13 +95814,13 @@ medspecial.tk, 1 medstatix.co, 1 medsync.nl, 1 -medtalents.ch, 1 medtech-jp.net, 1 medtechedge.com.au, 1 medtehnika.ua, 1 medtown.cloud, 1 medtronicpain.com, 1 meduna.org, 1 +meduno.eu, 1 medunovi.com, 1 meduza.io, 1 medva1997.tech, 1 @@ -96476,6 +95880,7 @@ meettheslavs.com, 1 meetville.com, 1 meetwagen.nl, 1 +meetwise.uk, 1 meetyou.me, 1 meewan.fr, 1 meezjewelry.vn, 1 @@ -96520,7 +95925,6 @@ megakoncert90.cz, 1 megalibportal.ga, 1 megalibrarygirl.ml, 1 -megalogistic.ru, 1 megalol.tk, 1 megalomanager.com, 1 megalonomia.ml, 1 @@ -96562,19 +95966,18 @@ megaviews.tk, 1 megawatt.news, 1 megawebsite.tk, 1 -megaxchange.cash, 1 megaxchange.com, 1 megaxchange.org, 1 megayachts.world, 1 megazigzag.com, 1 megbarretto.com.br, 1 -megestrol.com, 1 megeve-tourisme.fr, 1 megger-aktionen.de, 1 megger.li, 1 meggidesign.com, 1 meggie.tk, 1 megh.tv, 1 +meghroop.tech, 1 megin.gq, 1 megin.tk, 1 meginajums1.space, 1 @@ -96612,6 +96015,7 @@ mehrgarh.tk, 1 mehrleben.at, 1 mehrnevesht.com, 1 +mehrtens.com, 1 mehrwert.de, 1 mehrz.ad, 1 mehtagroup.in, 1 @@ -96683,7 +96087,6 @@ meinhard.com, 1 meinpflegedienst.net, 1 meinprospekt.de, 1 -meinsite.online, 1 meinstartinsleben.com, 1 meinstartinsleben.de, 1 meinstift.ch, 1 @@ -96726,8 +96129,6 @@ mejorfiltrodeagua.com, 1 mejorlaptop.com, 1 mejovonakowogov.gq, 1 -mejpbs.com, 0 -mek.technology, 1 mekajen.com, 1 mekaleskirit.tk, 1 mekanismo.tk, 1 @@ -96788,9 +96189,12 @@ melbetua.com, 1 melbourneapartments.website, 1 melbournecabs13.com.au, 1 +melbournecbdpersonaltrainers.com, 1 melbournecivilcelebrant.tk, 1 melbournecopywriter.com.au, 1 melbournecosmeticdentists.com, 1 +melbourneemergencydentists.com, 1 +melbournefrenectomyprocedures.com, 1 melbournehousesitters.com, 1 melbournepersonalfitness.com.au, 1 melcher.it, 1 @@ -96810,6 +96214,7 @@ meledee.com, 1 meleeweb.net, 1 melenchatsmelenchiens.fr, 1 +melenium.net, 1 meleracupuncture.com, 1 melhorcondominio.pt, 1 melhoria.co.uk, 1 @@ -96817,18 +96222,15 @@ meli.la, 1 melia.com, 1 melicatessen-ulm.de, 1 -melideluxe.org, 1 melihacar.com.tr, 1 melikoff.es, 1 melina-schefczyk.de, 1 -melinacurves.com, 1 melinamay.net, 1 melini.hu, 1 melino.com.ua, 1 meliovate.io, 1 melisica.tk, 1 melissaadkins.com, 1 -melissadeluxe.com, 1 melissageorge.tk, 1 melissalb.tk, 1 melissatani.com, 1 @@ -96871,8 +96273,6 @@ melp.lt, 1 melp.lv, 1 melp.pl, 1 -melpomene.me, 1 -melrosemichaels.net, 1 melrosewi.gov, 1 melsungenonline.com, 0 meltdownresearch.com, 1 @@ -96893,6 +96293,7 @@ membershipservices.org.uk, 1 membersolutions.com, 1 memberstweets.com, 1 +membrn.ai, 1 memdoc.org, 1 meme, 1 meme.com, 0 @@ -96911,14 +96312,12 @@ memind.net, 1 memiux.com, 1 memo-linux.com, 1 -memo-werbeartikel.de, 1 memo.de, 1 memo.ee, 1 memoire-resistance-ariege.fr, 1 memoireimplicite.com, 1 memoirmedie.dk, 1 memolestas.tk, 1 -memolife.de, 1 memorablebuys.co.uk, 1 memorablewords.org, 1 memoriaacademy.com, 1 @@ -96932,6 +96331,7 @@ memorizer.pl, 1 memoryex.net, 1 memoryjoggerlibrary.com, 1 +memorykeep.online, 1 memorylines.ml, 1 memoryofyou.eu, 1 memoryplex.com, 1 @@ -97001,7 +96401,6 @@ mendozagenevieve.com, 1 mendrala.eu, 1 mendrala.net, 1 -menegaro.com.br, 1 menelaostore.com, 1 menerga.it, 0 menghao.com, 1 @@ -97015,7 +96414,6 @@ mengyibai.com, 1 menhera.org, 0 menielias.com, 0 -meninapreciosa.com.br, 1 menira.com, 1 menlo-partner1-admin.com, 1 menlo-partner1.com, 1 @@ -97053,6 +96451,7 @@ mensajitos.tk, 1 mensarena.gr, 1 mensasifrovacka.cz, 1 +mensch-in-einklang.de, 1 menschocolat.jp, 1 mensconvoy.tk, 1 menselijkembryo.tk, 1 @@ -97067,7 +96466,7 @@ mentalcalculations.tk, 1 mentalcraft.tk, 1 mentalevolution.tk, 1 -mentalhealthmn.org, 1 +mentalhealthsf.org, 1 mentalhealthtimes.tk, 1 mentalistkesicitakimlar.com, 1 mentaliya.online, 1 @@ -97084,7 +96483,6 @@ mentimeter.com, 1 mentionlink.com, 1 mentiq.az, 1 -mentisapp.com.br, 1 mentolo.tk, 1 mentonein.gov, 1 mentor-fit.com, 1 @@ -97094,10 +96492,10 @@ mentorzografos.gr, 1 menucost.com, 1 menuel.me, 1 +menuella.com, 1 menufree.org, 1 menuiserie-deumer.be, 1 menuiseriebertin.ca, 1 -menukart.com, 1 menumag.bg, 1 menupay.com, 1 menureader.ml, 1 @@ -97129,7 +96527,6 @@ mer-solutions.com, 1 mer30daru.com, 1 mera.ddns.net, 1 -mera25.de, 1 merabsurviladze.com, 1 merafsolutions.com, 1 meraki.hu, 1 @@ -97190,6 +96587,8 @@ mercatino-olomouc.cz, 0 mercatinomusicale.com, 1 mercatoday.com, 1 +mercatofficine.com, 1 +mercatofficine.fr, 1 mercatoitticosbt.it, 1 mercatotime.com, 1 mercatus.ro, 1 @@ -97218,7 +96617,7 @@ mercredifiction.io, 1 mercure.dk, 1 mercury-pool.com, 1 -mercury.com, 1 +mercury.com, 0 mercury.foundation, 0 mercury.photo, 1 mercurycards.com, 1 @@ -97231,6 +96630,7 @@ merelaager.ee, 1 merelskleertjes.tk, 1 merenbach.com, 1 +merendonacademy.com, 1 merenita.eu, 1 merenita.net, 1 mereuaproapepentrucopii.ro, 1 @@ -97280,12 +96680,14 @@ mernau.co, 1 merojob.com, 1 merorme.com, 1 +merovino.eu, 1 +merovino.nl, 1 merpay.com, 1 merrettsurvey.com, 1 merri.net, 1 merrickcountyne.gov, 1 -merricot.co.uk, 1 merrillanwi.gov, 1 +merrilyapp.com, 1 merrimacwi.gov, 1 merry-christmas.co.in, 1 merrychristmas.ml, 1 @@ -97308,7 +96710,6 @@ merzai.co.uk, 1 mes-bouquins.fr, 1 mes-courriers.fr, 1 -mes-finances.be, 1 mes-vacances.tk, 1 mes10doigts.ovh, 1 mesa.be, 1 @@ -97326,6 +96727,7 @@ mesh.gov, 1 meshboard.ai, 1 meshcore.forum, 1 +meshcorepolska.org, 1 meshdigital.io, 1 meshesha.solutions, 1 meshflow.be, 1 @@ -97333,13 +96735,13 @@ meshinspector.com, 1 meshintranet.com, 1 meshlib.io, 1 -meshnet.nl, 1 meshup.net, 1 mesjumelles.fr, 1 meskiukas.tk, 1 mesmer.tk, 1 mesmerus.net, 1 mesnumeriques.fr, 1 +mesobafrica.com, 1 mesologie-soesterberg.nl, 1 mesomeds.com, 1 mesonandino.tk, 1 @@ -97401,6 +96803,8 @@ metacortex.cf, 1 metacred.com, 1 metadata.be, 1 +metadata.co.jp, 1 +metadata.tokyo, 1 metadedi.net, 1 metadesign.com, 1 metadoi.org, 1 @@ -97442,12 +96846,13 @@ metallomania.it, 1 metallosajding.ru, 1 metallrecycling.org, 1 +metalltorg24.ru, 1 metalmaniac.tk, 1 metalmonocle.com, 0 metalnight.tk, 1 metalnivrati-iasenko.com, 1 metalochimice.ro, 1 -metalpackage.com, 1 +metalocus.es, 0 metalpesado.tk, 1 metalrip.com, 1 metalsoviet.tk, 1 @@ -97480,7 +96885,6 @@ metasolutions.se, 1 metastasys.net, 1 metastitch.in, 1 -metasurfaces.com, 1 metasurfforecast.com, 1 metasymbolic.studio, 1 metasysteminfo.com, 1 @@ -97544,7 +96948,6 @@ meticae.com, 1 metiers.ma, 1 metin2.community, 1 -metitlesearch.com, 1 metiz.site, 1 metkos.pl, 1 metkov.com.ua, 1 @@ -97619,7 +97022,6 @@ metsosivut.fi, 1 metspoedbeschikbaar.nl, 1 mett.nl, 1 -metteframarketing.dk, 1 mettelenejohansson.dk, 1 metthefarmer.com, 1 mettin.org, 1 @@ -97649,7 +97051,6 @@ meusartis.ca, 1 meuscabeloscacheados.com.br, 1 meuscuidadospessoais.com, 1 -meusextosentido.com, 1 meusonze.com.br, 1 meusucesso.com, 1 meutia.net, 1 @@ -97666,7 +97067,6 @@ mexaliu.ml, 1 mexby.com, 1 mexeo.re, 1 -mexicankrill.com, 1 mexico.rs, 1 mexico.sh, 1 mexicobeachfl.gov, 1 @@ -97713,7 +97113,7 @@ mfgo.link, 1 mfgusa.com, 1 mfi.center, 1 -mfi.co.nz, 1 +mfi.co.nz, 0 mfi.io, 1 mfiles.pl, 1 mfinanse.pl, 1 @@ -97724,21 +97124,23 @@ mfmd.pt, 1 mfoda-eg.com, 1 mfrepair.com, 1 +mfrm.com, 1 mft.global, 1 mfxer.com, 1 mfxm.fr, 1 -mfyy123.com, 1 mg5webapp.com, 1 mgabehaviortherapy.com, 1 mgaconsulting.org.uk, 1 mgae.com, 0 mgahomecare.com, 1 +mgal.nl, 1 mgaroz.pro, 1 mgclercoh.gov, 1 mgcs.org, 1 mgdecor.co.uk, 1 mgdigitalmarketing.com.au, 1 mgfashion.ae, 1 +mgfgroup.com, 1 mggs.org, 1 mghiorzi.com.ar, 0 mgi.gov, 1 @@ -97770,7 +97172,7 @@ mgtbaas.eu, 1 mh-cdn.de, 1 mh-hannover.de, 0 -mh-lg.de, 1 +mh-lg.de, 0 mhabdullah.tk, 1 mhadegree.org, 1 mhadot.com, 1 @@ -97834,10 +97236,8 @@ mia.tw, 0 mia3d.fr, 1 miaa.org, 1 -miaadler.net, 1 miabaka.moe, 1 miability.com, 1 -miablow.net, 1 miacuario.cl, 1 miadennees.com, 0 miagentemicasa.com, 1 @@ -97874,6 +97274,9 @@ miavierra.org, 1 mibaso.com, 1 mibeneficio.cl, 1 +mibesis.com, 1 +mibesis.eu, 1 +mibesis.si, 1 mibh.de, 1 miboulot.com, 1 mibuiin.com, 1 @@ -97889,7 +97292,6 @@ micanetic.com, 1 micareklamajansi.com, 1 micasayestilo.com, 1 -micatalogo.club, 1 micauriasa.ro, 1 micay.ca, 1 micbase.com, 1 @@ -97964,7 +97366,6 @@ michaelvician.me, 0 michaelwermeester.com, 1 michaelwillner.de, 1 -michaelwmckinney.com, 1 michaelworth.au, 1 michal-smahel.cz, 1 michal-spacek.com, 1 @@ -97993,7 +97394,6 @@ michelangelofoundation.org, 1 michelbenita.com, 1 michelcoumes.com, 1 -micheldoultremont.com, 1 michele.ga, 1 micheledawsonphotography.com, 1 michelefaccioni.it, 1 @@ -98004,7 +97404,6 @@ michelkok.tk, 1 michellavat.com, 1 michellebarr.com, 1 -michellegradyphotography.com, 1 michellelowery.com, 1 michellesmassage2go.com, 1 michelletmc.com, 1 @@ -98023,9 +97422,7 @@ michiganlegalhelp.org, 1 michiganrebates.com, 1 michigantestingairbalancing.com, 1 -michigantitlesearch.com, 1 michilaw.com, 1 -michmexguides.com.mx, 1 michu.pl, 1 mickael-martin-nevot.com, 1 mickael.org, 1 @@ -98051,6 +97448,7 @@ micraftspirits.com, 1 micralite.com, 1 micro-credit.tk, 1 +microapplink.com, 1 microballscrew.com, 1 microbiologist.tk, 1 microbiologyinfo.com, 1 @@ -98059,6 +97457,7 @@ microbird.club, 1 microbladingbysandramaria.de, 1 microblink.com, 1 +microbot.uk, 1 microcert.cn, 1 microcomploja.com.br, 1 microcosm.com, 1 @@ -98082,12 +97481,12 @@ micromaid.cf, 1 micromata.de, 1 micromicro.cc, 1 -micronfts.com, 1 micronotfound.gq, 1 micropigmentacaobh.com.br, 1 micropigmentadordesucesso.com, 1 micropigpets.com, 1 microprofile.io, 1 +micropromote.io, 1 microsoft, 1 microsoftedgeinsider.com, 1 microtel2notch.tk, 1 @@ -98109,7 +97508,6 @@ midasteknologi.com, 1 midcarolinaregionalairport.com, 1 midcarolinaregionalairport.org, 1 -midcityhr.com, 1 midcoastproperties.com, 1 middag.com.br, 1 middascachaca.com.br, 1 @@ -98124,8 +97522,6 @@ middletownri.gov, 1 midea.kg, 1 mideo.tk, 1 -midesa.eu, 1 -midesa.it, 1 midevibez.com, 1 midgawash.com, 1 midheaven.ru, 1 @@ -98171,6 +97567,7 @@ midwestern.edu, 1 midwesternpsych.org, 1 midwestinjurylawyers.com, 1 +midwestpartscenter.com, 1 midwestragdolls.com, 1 midwestrecyclingcorp.com, 1 midwestroofingnd.com, 1 @@ -98196,6 +97593,7 @@ mieterschutzkartei.de, 1 mietwohnungen-vermietung.com, 1 mieuxgrandir.ch, 0 +mifemincode.bg, 1 mifflincountypa.gov, 1 miffy.me, 1 mifi.holdings, 1 @@ -98242,9 +97640,8 @@ migueloblitas.tk, 1 miguelpallardo.tk, 1 miguelquijano.com.co, 1 -miguelstreeservices.com, 1 +miguelstreeservices.com, 0 mihaelacozma.ro, 0 -mihaijoe.fr, 1 mihaiordean.com, 1 mihaiturcu.ninja, 1 mihalgrameno.ml, 1 @@ -98263,6 +97660,7 @@ miih-kiosk.com, 1 miihawk.com, 1 miikun95.net, 1 +miikun95.website, 1 miimhort.com, 1 miisy.com, 1 miisy.eu, 1 @@ -98311,6 +97709,7 @@ mijnstembureau-eindhoven.nl, 1 mijnstembureau-emmen.nl, 1 mijnstembureau-enschede.nl, 1 +mijnstembureau-ermelo.nl, 1 mijnstembureau-geldrop-mierlo.nl, 1 mijnstembureau-gilzerijen.nl, 1 mijnstembureau-goirle.nl, 1 @@ -98468,7 +97867,6 @@ mil0.com, 1 milac.eu, 1 milacronindia.com, 1 -milaelaine.net, 1 milagrotequila.com, 1 milahendri.com, 1 milakirschner.de, 1 @@ -98503,6 +97901,7 @@ milchplus.de, 1 milchweg.com, 1 milcrofton.gov, 1 +milda.studio, 1 mildnode.com, 1 mile6.com, 1 milehighfcu.org, 1 @@ -98513,8 +97912,10 @@ mileno.fr, 1 mileonapp.com, 1 miles-and-more-kreditkarte.com, 0 +miles-and-more.com, 1 miles.no, 0 milesaddict.com, 1 +milesandmore.com, 1 milesapart.dating, 1 milescitymt.gov, 1 milesconsulting.io, 1 @@ -98581,14 +97982,12 @@ millburyma.gov, 1 millcreekut.gov, 1 millcreekwa.gov, 1 -millefleurs.eu, 1 millenn.photos, 1 millennialbella.net, 1 millennium-thisiswhoweare.net, 1 millenniumfalcon.org, 1 millenniumsg.com, 1 millenniumsg.com.au, 1 -miller-alex.de, 1 miller-fukuda.es, 1 miller-fukuda.pl, 1 miller-shop.cf, 1 @@ -98604,6 +98003,7 @@ millersburgoregon.gov, 1 millhill.org.uk, 0 millhousen.tech, 1 +milliardaire-business.com, 1 milliarden-liste.de, 1 millibirlik.tk, 1 millibitcoin.jp, 1 @@ -98626,6 +98026,7 @@ millsymills.com, 1 milltime.se, 1 millwoodwa.gov, 1 +millytattoo.com, 1 milmesetas.com, 1 milmiedos.tk, 1 milnerga.gov, 1 @@ -98653,7 +98054,6 @@ milwaukeeinternational.tk, 1 milwaukeetool.eu, 1 mim-standaard.nl, 1 -mim.am, 1 mim.properties, 1 mimamau.de, 1 mimavision.ddns.net, 1 @@ -98685,16 +98085,13 @@ min.kiwi, 0 min2.ru, 1 minacssas.com, 1 -minademonic.org, 1 minaio.tk, 1 minakov.pro, 0 -minamassimo.org, 1 minamo.io, 1 minantavla.se, 0 minapan.ro, 1 minapin.com, 1 minasian.com, 1 -minasverde.com.br, 1 minato-home-care.jp, 1 minato.network, 1 minbrew.com, 1 @@ -98735,6 +98132,7 @@ mindfactory.de, 1 mindflowmarketing.com, 0 mindfront.ai, 1 +mindfront.engineering, 1 mindfully.com, 0 mindfulnessjourney.ca, 1 mindfulslumber.com, 1 @@ -98755,7 +98153,6 @@ mindox.com.br, 1 mindportal26.net, 1 mindprod.com, 1 -mindq.co.uk, 1 mindrazr.com, 1 mindresti.tk, 1 mindscapephotos.de, 0 @@ -98777,7 +98174,6 @@ mine260309.me, 0 minebazaar.net, 1 minebitcoin.tk, 1 -minecity.fun, 1 minecraft-asylum.de, 1 minecraft-game.ga, 1 minecraft-gilde.de, 1 @@ -98812,7 +98208,6 @@ minehattan.de, 1 minelands.ml, 1 minelight.ml, 1 -minelucky.net, 1 minepack.net, 1 mineprime.ru, 1 mineralnibani.bg, 1 @@ -98936,9 +98331,9 @@ ministyle.ro, 1 minitec.ro, 1 minitruckin.net, 1 -minitrucktalk.com, 1 minitube.com, 1 minivaro.de, 1 +miniverse.gr, 1 miniverse.social, 1 minivideoadapterssales.tk, 1 minix.jp, 0 @@ -98961,7 +98356,6 @@ minnesotaequipment.com, 1 minnesotahealthcareconsortium.gov, 1 minnesotalakemn.gov, 1 -minnesotatitlesearch.com, 1 minng.cc, 1 minnippi.com.au, 1 minnisites.com, 1 @@ -98977,7 +98371,6 @@ minorisa.tk, 1 minoritywhip.gov, 1 minorsurgery.co.uk, 1 -minorukai.com, 1 minotauro.com.ar, 1 minotnd.gov, 1 minoxbahia.com.br, 1 @@ -99005,8 +98398,6 @@ mintert.net, 1 mintitafever.tk, 1 mintlab26.cc, 1 -mintlayer.org, 1 -mintmystory.com, 1 minto.cc, 1 minton.systems, 1 mintosoft.net, 1 @@ -99020,6 +98411,7 @@ minu.link, 1 minube.co.cr, 1 minucio.co, 1 +minuitcapital.com, 1 minul.in, 1 minus12.ru, 1 minutamody.cz, 1 @@ -99079,9 +98471,9 @@ mirage-project.tk, 1 miragenews.com, 1 miragg.cf, 1 -miragrey-porn.com, 1 miraheze.org, 1 mirai-coupon.com, 1 +mirai-product.jp, 1 miraizu-recruit.com, 1 miraizu.jp, 1 mirakl.com, 0 @@ -99089,6 +98481,7 @@ miramanga.org, 1 miramar-bournemouth.com, 1 miramar.ca, 1 +miramarlabs.ai, 1 miramichireader.ca, 1 mirandaberkhof.com, 1 mirandakids.bg, 1 @@ -99131,7 +98524,6 @@ mironov.tk, 1 miroslav.ca, 1 miroslav.id, 1 -mirotakampus.com, 1 mirprav.tk, 1 mirri.net, 1 mirrordata.net, 1 @@ -99170,6 +98562,7 @@ miscuadros.tk, 1 miscursosdebelleza.com, 1 miseguridadsocial.gov.co, 1 +miseguroonline.com, 1 misfit-media.com, 1 mishamayfairart.com, 1 mishaomar.tk, 1 @@ -99177,6 +98570,7 @@ mishpatim.tk, 1 mishrahome.com, 1 mishraweb.com, 1 +misidy.com, 1 misiepluszowe.com, 1 misinstrumentos.com, 1 misite.ddns.net, 1 @@ -99191,12 +98585,9 @@ misreports.in, 1 miss-inventory.co.uk, 1 miss-perruque.com, 0 -miss.com.tw, 1 miss.you, 1 -missadrastea.org, 1 missaocadastrobv.com.br, 1 missblisshair.com.au, 1 -missdoertie.net, 1 missdream.org, 1 missegle.com, 1 missevent.pl, 1 @@ -99217,7 +98608,6 @@ missionsuccesssolutions.com, 1 missionviejo.gov, 1 mississaugaelite.com, 1 -mississippititlesearch.com, 1 missive.org, 1 misskey.art, 1 missmaid.co.uk, 1 @@ -99230,14 +98620,11 @@ missouri-sky.tk, 1 missouricity-airductcleaning.com, 1 missouriheatingcoolingadvice.com, 1 -missourititlesearch.com, 1 misspoliticsaustralia.cf, 1 misspoliticsaustralia.ga, 1 misspoliticsaustralia.gq, 1 misspoliticsaustralia.ml, 1 misss.fun, 1 -missswan.com, 1 -misstaiwanese.com, 1 missthetoro.tk, 1 misstika-bijoux.com, 1 misstress.cf, 1 @@ -99293,11 +98680,11 @@ mit.dk, 1 mit.gg, 0 mita-beutel.tk, 1 -mita.me, 1 mitarbeiterbefragungen.com, 1 mitarbeitermotivation-anleitungen.de, 1 mitarrangement.dk, 1 mitchell.to, 1 +mitchellboyan.com, 1 mitchellcountync.gov, 1 mitchkalf.nl, 0 mitchkiah.com, 1 @@ -99311,12 +98698,14 @@ mitenloytaatyota.fi, 1 mitensaadatoita.fi, 1 mitensaadatyota.fi, 1 +mitequi.io, 1 mitev.gq, 1 mitfahrgelegenheit.de, 1 mitfreespeech.org, 1 mitgrussen.de, 1 mithaqgrc.com.sa, 1 mithgol.tk, 1 +mithra.llc, 1 mithril.email, 1 mithrilimagination.com, 1 mithypnoseweiter.de, 1 @@ -99336,7 +98725,7 @@ mito-huutou.shop, 1 mito-meishi.shop, 1 mitokashi.ml, 1 -mitometals.lv, 0 +mitometals.lv, 1 mitotalplay.com.mx, 1 mitragacor.org, 1 mitrainfosarana.co.id, 1 @@ -99369,7 +98758,7 @@ mittdolcino.com, 0 mittelalter-lexikon.de, 1 mittelhessen.de, 1 -mittelneufnach.de, 1 +mittelneufnach.de, 0 mittelunsachlich.de, 1 mittendorff.tk, 1 mittenofficesystems.com, 1 @@ -99384,6 +98773,7 @@ mitzpettel.com, 1 miui-germany.de, 1 miukimodafeminina.com, 1 +miumiu.market, 1 mividasecreta.tk, 1 mivm.cn, 1 mivne.co.il, 1 @@ -99442,7 +98832,6 @@ miyamane-room.com, 1 miyanaga.tech, 1 miyasyou.com, 1 -miyatadc-ike.com, 1 miyatakaikei.com, 1 miyavru.com, 1 miyazakian.com, 1 @@ -99450,7 +98839,6 @@ miyokoofficial.com, 1 miyokosamurai.com, 1 miyoshi-kikaku.co.jp, 1 -miyoshi-kikaku.com, 0 mizar.im, 0 mizarije-zaloznik.si, 1 mizik.cz, 1 @@ -99472,8 +98860,10 @@ mjc-psicologa.com, 1 mjcstsul2022.tk, 1 mjf.cz, 1 +mjgreenguard-landscaping.com.au, 1 mjhs.org, 1 mjhsfoundation.org, 1 +mjimarketing.com, 1 mjjshow.eu.org, 1 mjlwebdev.pl, 1 mjmoccasions.com, 1 @@ -99555,8 +98945,10 @@ mkmassagesalon.cz, 1 mkmaster.tk, 1 mkmedien.tk, 1 +mkod.duckdns.org, 1 mkoppmann.at, 1 mkor.je, 1 +mkp-corp.pt, 1 mkpdeepclean.com, 1 mkplandeki.com, 1 mkplandeki.pl, 1 @@ -99578,6 +98970,8 @@ mkws.sh, 1 ml-brand.com, 1 ml-engineering.nl, 1 +ml-trade.com, 1 +ml-webdevelopment.de, 1 ml.tax, 1 ml246.me, 0 mlada-moda.cz, 1 @@ -99621,7 +99015,7 @@ mlokcleaning.com, 1 mlonline.com.mx, 1 mloska.tk, 1 -mlotfycarrental.com, 0 +mlotfycarrental.com, 1 mlp.horse, 1 mlpavimentosdehormigonimpreso.com, 1 mlpk.cz, 1 @@ -99634,7 +99028,6 @@ mlstverse.org, 1 mltrade.ml, 1 mlv-psychosomatik.de, 1 -mlv.me, 1 mlytics.com, 1 mm-sol.com, 1 mm13.at, 1 @@ -99660,7 +99053,6 @@ mmcase.ml, 1 mmdriving.ca, 1 mme.re, 1 -mmhome.fr, 1 mmilog.hu, 1 mmimicro.com, 1 mminsco.com, 0 @@ -99686,7 +99078,6 @@ mmpiservices.fr, 1 mmprojects.nl, 1 mmquality.com, 1 -mmr.ua, 1 mms.is, 1 mmsindustries.com, 1 mmsl.cz, 1 @@ -99729,7 +99120,6 @@ mnium.de, 1 mnjg123.de, 1 mnmedia.io, 1 -mnmt.no, 1 mnnknz.de, 1 mno.family, 1 mnocea.eu, 1 @@ -99901,7 +99291,6 @@ mochizuki.moe, 0 mochoko.com, 1 mock1ngbb.com, 1 -mockcop.org, 1 mockerel.com, 1 mockers.tk, 1 mockif.com, 1 @@ -99916,7 +99305,6 @@ moda-line.ml, 1 moda-querida.de, 1 modacompleta.com.br, 1 -modafilmdmodafinil.com, 1 modafinil.wiki, 1 modafinilyes.com, 1 modafo.com, 1 @@ -99976,6 +99364,7 @@ modellismo.roma.it, 1 modelmyretirement.com, 1 modelpiper.com, 1 +modelretirement.com, 1 models-resource.com, 1 modelspoor-projecten.nl, 1 modelverse.online, 1 @@ -99983,7 +99372,6 @@ modem.cf, 1 modemchild.net, 1 modenatoday.it, 1 -modenodf.ru, 1 moderatoren.org, 1 modern-gaming.ga, 1 modern-metal-solutions.com, 1 @@ -100036,7 +99424,6 @@ modperl.pl, 1 modpop.se, 1 modrynstudio.com, 0 -modsecurity.net, 1 modszombies.com, 1 modul21.eu, 1 modul8r.com, 1 @@ -100191,7 +99578,6 @@ mojo.az, 1 mojo.so, 1 mojoco.co.za, 1 -mojogaragedoors.com, 1 mojomen.com, 1 mojomen.org, 1 mojoshowers.ga, 1 @@ -100210,7 +99596,6 @@ mokenney.com, 1 mokhan.ca, 1 mokkalab.de, 1 -moklee.com.sg, 1 mokrynskyi.com, 1 moksha-movement.com, 1 mokujinken.tokyo, 1 @@ -100219,7 +99604,7 @@ molaclothing.pt, 0 mold-tech.com, 1 mold.world, 1 -molddesigner.com, 1 +moldetipo.pt, 1 moldova-online.ml, 1 moldovanka.tk, 1 moldovawall.tk, 1 @@ -100230,6 +99615,7 @@ molehill.it, 1 molenaagtekerke.tk, 1 molenaar-ricardo.tk, 1 +molendadevelopment.pl, 1 molexces.com, 0 molezzo.com, 1 molinillo.tk, 1 @@ -100244,7 +99630,6 @@ mollyjayne.com, 1 mollyringworm.tk, 1 mollyspub.fr, 1 -mollysun.net, 1 molodost.ga, 1 molodost.gq, 1 molodost.tk, 1 @@ -100259,7 +99644,6 @@ moltenplastic.xyz, 0 molti.hu, 1 molusk.ml, 1 -molwick.com, 1 mom.life, 1 moma.co.uk, 1 momentalno.tk, 1 @@ -100292,7 +99676,6 @@ momou.ch, 1 momovahed.com, 1 moms.com, 1 -momsagainstcooties.com, 1 momsbangteens.com, 1 momsdemandaction.org, 1 momslickteens.com, 1 @@ -100332,7 +99715,6 @@ monarcjuexpo.ch, 1 monaroindustrial.com.au, 1 monasschminkzauber.de, 1 -monasteriumlab.com, 1 monautah.gov, 1 monaviza.com, 1 monays.ga, 1 @@ -100405,10 +99787,12 @@ moneyhash.io, 1 moneyinorder.net, 1 moneymania.tk, 1 +moneymarket.com.au, 1 moneymint.com, 0 moneyonchain.com, 1 moneyreal.tk, 1 moneyreview.gr, 1 +moneyro.cards, 1 moneysavingpro.com, 0 moneysmart.gov.au, 1 moneysmart.net.au, 1 @@ -100428,7 +99812,6 @@ monheganplantation.gov, 1 monhomecinema.fr, 0 monibu.org, 1 -monicadurr.com, 1 monicahq.com, 1 monicanaranjo.tk, 1 monicapotter.tk, 1 @@ -100486,10 +99869,10 @@ mono-money.com, 1 mono0x.net, 1 monobunt.at, 1 -monochrome-games.com, 1 monocircus.com, 1 monocyte.host, 1 monodrama.tk, 1 +monofer.com.hk, 1 monohost.ml, 1 monokli.tk, 1 monolith.plus, 1 @@ -100548,7 +99931,6 @@ monstl.com, 1 monstresdesfetes.com, 1 mont-thabor.fr, 1 -monta.nl, 1 montack.de, 1 montagetravel.com, 1 montagnainitalia.com, 1 @@ -100556,13 +99938,12 @@ montajtamirmobilya.com, 1 montala.com, 1 montalvofarret.xyz, 1 +montameucurriculo.com, 1 montanabiack.de, 1 montanacreativitymovement.tk, 1 montanaguard.gov, 1 -montanaitservices.com, 0 montanaonlinedivorce.com, 1 montanarenewables.org, 1 -montanatitlesearch.com, 1 montanawi.gov, 1 montarosa.tk, 1 montcalmcountymi.gov, 1 @@ -100610,6 +99991,7 @@ montiallison.com, 1 monticelloky.gov, 1 monticellomn.gov, 1 +montipallidi.it, 1 montmebwarszawa.pl, 1 montoneros.tk, 1 montop.tk, 1 @@ -100650,7 +100032,6 @@ moodifiers.com, 0 moodle.gq, 1 moodle.servebbs.com, 1 -moodlecfp.pt, 1 moodlegnr.pt, 1 moodmagicmusic.com, 0 moodup.team, 1 @@ -100661,7 +100042,6 @@ mooka.tk, 1 moola.market, 1 moom20101234567890.tk, 1 -moon-runners.net, 1 moon.fish, 1 moonagic.com, 1 moonagic.io, 1 @@ -100675,6 +100055,7 @@ moondroo.com, 1 moondrop.org, 1 moondsee.de, 1 +mooneepondsaccountants.com, 1 moonfist.eu, 1 moonflux.com, 1 moonfreak.tk, 1 @@ -100683,6 +100064,7 @@ mooninvoice.com, 1 moonkin.eu, 1 moonlabs.nl, 1 +moonlane.art, 1 moonlight-show.tk, 1 moonlightdesign.org, 1 moonlightlovers.com, 1 @@ -100710,6 +100092,7 @@ moonsmanagement.be, 1 moonsoonlabs.com, 1 moonspell.com, 1 +moontaj.com, 1 moonwolfwiccanschool.tk, 1 moonzerotwo.tk, 1 mooo.asia, 1 @@ -100774,7 +100157,7 @@ morbius.cz, 1 morbotron.com, 1 morchstore.com, 1 -mordamla.com, 1 +mordeo.fr, 1 mordor.email, 1 mordor.land, 1 mordovia.cf, 1 @@ -100880,7 +100263,7 @@ morphisec-utp.com, 1 morphitattachments.com.au, 1 morphysm.co, 1 -morphysm.com, 1 +morphysm.com, 0 morphysm.de, 1 morphysm.io, 1 morphysm.org, 1 @@ -100888,6 +100271,7 @@ morrellllc.com, 0 morrharet.se, 1 morris.computer, 1 +morrisdewett.com, 1 morristownvt.gov, 1 morrisvillemo.gov, 1 morrisvillenc.gov, 1 @@ -100896,7 +100280,6 @@ morsang.net, 1 morsekit.com, 1 morsel.ca, 1 -morselife.org, 1 mortaltorment.tk, 1 mortazavifar.com, 1 morteau.org, 1 @@ -100967,14 +100350,12 @@ mosquito-code.com, 1 mosquito-sklep.pl, 1 mosquitojoe.com, 1 -mosr.sk, 1 -mossad.gov.il, 1 +mossad.gov.il, 0 mossan.net, 1 mosshi.be, 1 mossipanama.com, 1 mossylog.tk, 1 most.tk, 1 -mostaccino.com, 1 mostafabanaei.cf, 1 mostazaketchup.com, 1 mostbet.com, 1 @@ -101001,6 +100382,7 @@ motabilitythebigevent.co.uk, 1 motat.nz, 1 motd.ch, 1 +motdepasse.pro, 1 mote.org, 1 moteksystems.com, 1 moteksystems.net, 1 @@ -101011,7 +100393,7 @@ motherbrain.tk, 1 motherearth.cf, 1 mothereff.in, 0 -motherfluxer.ai, 1 +motherfluxer.ai, 0 motherherb.com, 1 motherhood.se, 1 motherhoodinblack.com, 1 @@ -101081,7 +100463,6 @@ motorcitycasino.com, 1 motorcyclenews.com, 1 motorcyclestudies.org, 1 -motordates.com, 1 motordearranque.com.br, 1 motoreflex.pe, 1 motorfinanceonline.com, 1 @@ -101110,7 +100491,6 @@ mototsi.com, 1 mototuristas.tk, 1 motovaruosad.ee, 1 -motovated.co.nz, 0 motovrienden.tk, 1 motowilliams.com, 1 motoworld.biz, 1 @@ -101121,15 +100501,16 @@ mott.pe, 1 motte.tattoo, 1 motto-iikoto.com, 1 -motum.no, 1 motumblekinge.se, 1 motumport.se, 1 motun.ga, 1 motur.co.in, 1 moturua.nz, 1 +motuscommercials.co.uk, 1 motusins.com, 1 motusrenaultbloemfontein.co.za, 1 motusrenaultmenlyn.co.za, 1 +motusuk.com, 1 motywacyjnedna.pl, 1 mou-pmr.tk, 1 moube.fr, 1 @@ -101151,10 +100532,10 @@ mountain-bike-morocco.com, 1 mountain-retreat-center.com, 1 mountain-rock.ru, 1 -mountainbatchers.de, 1 mountainbell.net, 1 mountainchalet.blue, 1 mountaincitytx.gov, 1 +mountaindogconsulting.com, 1 mountaingrovemo.gov, 1 mountainprotocol.com, 1 mountainsandmist.com, 1 @@ -101205,11 +100586,9 @@ moval.gov, 1 movavi.id, 1 movavi.ru, 1 -movcyber.com, 1 moveceara.com.br, 1 movefi.com.br, 1 moveisdecoracao.com.br, 1 -moveissul.com.br, 1 moveitmoveitmovers.com, 0 moveltix.net, 1 movemais.com, 1 @@ -101291,6 +100670,7 @@ moy-biznes.tk, 1 moy-gorod.od.ua, 0 moy.cat, 1 +moyakraina.es, 1 moybiznes.tk, 1 moyce.co.za, 1 moyer.pub, 0 @@ -101311,6 +100691,9 @@ mozgb.ru, 1 mozgovoy.tk, 1 mozhiyodu.com, 1 +mozi.su, 1 +mozi1924.com, 1 +mozilla-insights.org, 1 mozilla-russia.org, 1 mozilla.cz, 1 moztopup.com, 1 @@ -101458,7 +100841,6 @@ mrdayman.com, 1 mrdk.uk, 1 mre.to, 1 -mredsanders.net, 0 mrephrase.com, 1 mrfactors.com, 1 mrfd.nl, 1 @@ -101499,7 +100881,6 @@ mrmarcie.com, 1 mrmasaleh.com, 1 mrmatt.io, 1 -mrmave.work, 1 mrmeeb.co.uk, 1 mrmemory.co.uk, 1 mrmeomeo.xyz, 1 @@ -101534,7 +100915,6 @@ mrshahin.cf, 1 mrshang.tk, 1 mrsheep.win, 1 -mrsigncompany.com, 1 mrsjinthelibrary.com, 1 mrsk.me, 1 mrssclaus.ca, 1 @@ -101578,6 +100958,7 @@ msbmb.com, 1 msc-fivem.shop, 1 mscc.mu, 1 +mschwaerzler.com, 1 msda23.gov, 1 msdprojectclearmo.gov, 1 msebera.cz, 1 @@ -101636,6 +101017,7 @@ msnr.net, 1 msoffice-inc.net, 1 msoida.me, 1 +msokolow.waw.pl, 1 msoll.de, 1 msoll.eu, 1 msoutlook.info, 0 @@ -101661,6 +101043,7 @@ mss6.com, 1 mssa.jp, 1 msscholz.de, 1 +mssdy.com, 1 mssm-portal.com, 1 mssora.com, 1 mssys.de, 0 @@ -101680,6 +101063,7 @@ msuna.net, 1 msv-limpezas.pt, 1 mswdtemplate.com, 1 +mswebx.com, 1 mswww.pl, 1 msxi.com, 1 msyndicate.com, 1 @@ -101753,6 +101137,7 @@ mtn-media.de, 1 mtncoi-coe.com, 1 mtnmanager.com, 1 +mtnmanager.net, 1 mtnmedia.group, 1 mtnvalleyhospice.org, 1 mtnwebwiz.com, 1 @@ -101783,6 +101168,7 @@ mtz80-mtz82.gq, 1 mtzbelarus.gq, 1 mtzfederico.com, 1 +mtzy.me, 1 mu-sigma.com, 1 mu-venezuela.tk, 1 mu-wi.gov, 1 @@ -101799,6 +101185,7 @@ mubacodebm.com, 1 mubarak-card.com, 1 mubase.dk, 1 +mubixlabs.studio, 1 muble.tk, 1 muc.space, 1 muceniece.tk, 1 @@ -101819,7 +101206,6 @@ mucustoms.com, 1 mudanzasacuna.com.co, 1 mudanzasytransportesbh.com, 1 -mudaomundo.org, 1 mudasobwa.tk, 1 mudbenesov.cz, 1 mudcomplex.ga, 1 @@ -101865,6 +101251,7 @@ mugsocks.com.au, 1 muguangzhan.com, 1 muhabbet.org, 1 +muhamiturkey.com, 1 muhammadlukman.ml, 1 muhammadmunif.ml, 1 muhammed.tk, 1 @@ -101892,7 +101279,6 @@ mujerescolombianas.tk, 1 mujeresparalasalud.org, 1 mujeryempresa.es, 1 -mujeryfamilia.com, 1 mujlinux.cz, 1 mujoco.org, 1 muk-kobetsu.com, 1 @@ -101906,7 +101292,6 @@ mukkmukk.com, 1 mukli.hu, 1 muku-flooring.com, 1 -mukurtu.org, 1 mukuru.com, 1 mukwa.gov, 1 mula.tk, 1 @@ -101923,13 +101308,17 @@ mulholland.ai, 1 muling.lu, 1 mulk.hopto.org, 1 +mulkly.com, 1 mullens-usedcars.be, 1 mullett-townshipmi.gov, 1 mullettlakelistings.com, 1 +mullicahill.com, 1 mulligangear.com, 0 mullinsfarms.com, 1 mullv.ad, 1 mullvad.net, 1 +mulo.games, 1 +mulo.world, 1 multerer.biz, 1 multi-cryptex.gq, 1 multi-fruit.tk, 1 @@ -101942,6 +101331,7 @@ multiaxisinc.ca, 1 multibomasm.com.br, 1 multicoin.capital, 0 +multiconnect.it, 1 multiconsumos.tk, 1 multicore.cl, 1 multicorpbra.com, 1 @@ -101975,7 +101365,6 @@ multiplexcy.com, 1 multiplier-effect.org, 1 multiplies.tk, 1 -multiply.co.za, 1 multipotential-labo.com, 1 multipuntos.ml, 1 multiqris.id, 1 @@ -101988,12 +101377,12 @@ multitec.nl, 1 multitek.no, 1 multitenantlaravel.com, 1 -multiterm.org, 1 multitheftauto.com, 1 multithreadingandvfx.org, 1 multitool.cf, 1 multitraf.ga, 1 multiusaha.my.id, 1 +multiverselab.net, 1 multivideo.tk, 1 multivpn.com.de, 1 multivpn.com.ua, 1 @@ -102035,9 +101424,7 @@ mundodewill.com.br, 1 mundodosagapornis.tk, 1 mundoead.com.br, 1 -mundoemalerta.com, 1 mundofoto.tk, 1 -mundofriki.es, 1 mundogamers.top, 1 mundogesath.com, 1 mundoguatemalteco.com, 1 @@ -102053,7 +101440,6 @@ mundosteampunk.club, 1 mundosuiri.ml, 1 mundowanderlust.com, 1 -mundschenk.at, 1 mundtec.com.br, 1 munduberriak.com, 1 munduch.cz, 1 @@ -102097,15 +101483,12 @@ muratatifsayar.com.tr, 1 muratbekgi.com, 1 muratcileli.tk, 1 -muratoff.pp.ua, 1 muratore-roma.it, 1 -muratyurtoglu.com, 1 murciacobras.tk, 1 murciaprocuradores.tk, 1 murderbysound.servebeer.com, 1 murdercube.com, 1 murena.io, 1 -murer-specialisten.dk, 1 murfreesboroar.gov, 1 murfy.kiwi, 1 murfy.nz, 1 @@ -102149,15 +101532,16 @@ musasionline.com, 1 musaslush.com, 1 muscatinecountyiowa.gov, 1 +muscatinejournal.com, 1 musch.uno, 1 muscle-home.fr, 1 muscle-tg.com, 1 -muscleandrecovery.com, 1 musclecarresearch.com, 1 musclecarsillustrated.com, 1 muscles.cf, 1 musclethesis.com, 1 musclethesis.com.br, 1 +muscletrailers.com.au, 1 muscloud.net, 1 musco.ru, 1 muscolinomusic.com, 1 @@ -102166,6 +101550,7 @@ museclef.com, 1 musecomunicazione.it, 1 musedash.moe, 1 +musee-du-louvre.com, 1 museeducolombier.fr, 1 museepab.fr, 1 musehelix.com, 1 @@ -102195,6 +101580,7 @@ mushman.tk, 1 mushroomcloud.moe, 1 mushroomnetwork.co.za, 1 +music-buddha.com, 1 music-colleges.com, 1 music-is-my-life.de, 1 music-privilege.fr, 1 @@ -102203,7 +101589,6 @@ music.amazon.com, 1 musica.com, 1 musicales.tk, 1 -musicall.com, 1 musicalschwarzenburg.ch, 1 musicandrelated.tk, 1 musicapara.net, 1 @@ -102255,7 +101640,7 @@ musicwelltech.es, 1 musicwide.net, 1 musigama.tk, 1 -musik-reitemann.de, 1 +musik-reitemann.de, 0 musiker.tk, 1 musikhaus-korn.de, 1 musikholics.com, 1 @@ -102295,7 +101680,6 @@ mussalains.com, 1 musselsblog.com, 1 mussila.com, 1 -mussonsppe.com, 1 mussonstrading.com, 1 mustafaozbag.com, 1 mustangapparel.ca, 1 @@ -102315,7 +101699,6 @@ musttest.eu, 1 musttest.net, 1 musttest.org, 1 -mustwatch.com, 1 musubi-dev.net, 1 musulmanesnuevos.tk, 1 mutabakat.org.tr, 1 @@ -102354,12 +101737,13 @@ muv.co.uk, 1 muvy.tube, 1 muwi.tk, 1 -muxicloudy.de, 1 muxup.com, 1 muy.ooo, 1 muydelgada.com, 1 +muyingt.com, 1 muyinternetsante.tk, 1 muyuanku.com, 1 +muz2u.ru, 1 muzdv.ru, 1 muzenzacrianca.tk, 1 muzeumkomiksu.eu, 0 @@ -102378,7 +101762,7 @@ muzikantine.nl, 1 muzikbank.com.tr, 1 muzike.tk, 1 -muzline.ua, 0 +muzline.ua, 1 muzmo.ga, 1 muzprosvet.tk, 1 muzykanawesele.info, 1 @@ -102402,9 +101786,6 @@ mvmm.fr, 1 mvn.lu, 1 mvno.io, 1 -mvorisek.com, 1 -mvorisek.cz, 1 -mvpeyes.com, 1 mvpinfo.ga, 1 mvpower.pt, 1 mvpzd.com, 1 @@ -102417,16 +101798,18 @@ mvwoensel.com, 1 mvzstartpagina.tk, 1 mw-power.ru, 1 +mw.coach, 1 mw.search.yahoo.com, 0 mwai.edu.ph, 1 mwamitours.com, 1 -mwancloud.com, 1 +mwancloud.com, 0 mwanevents.com, 1 mwanmobile.com, 1 mwavuli.co.ke, 1 mway.io, 0 mwba.org, 0 mwc.mw, 1 +mwcitizen.skin, 1 mwcwallet.com, 1 mwdsls.gov, 1 mwe.st, 1 @@ -102450,7 +101833,6 @@ mww.moe, 1 mwxjacg.com, 1 mx-qr.com, 1 -mx-server.uk, 1 mx-solutions.net, 1 mx.org.ua, 1 mx.search.yahoo.com, 0 @@ -102488,7 +101870,6 @@ my-gps-tracker.co.uk, 1 my-host.ovh, 1 my-hps.de, 1 -my-ifms.com, 0 my-ip.work, 1 my-itbk.de, 1 my-kirov.tk, 1 @@ -102537,7 +101918,6 @@ my.tiaa.org, 1 my.urown.cloud, 1 my.usa.gov, 1 -my143.link, 1 my1health.com, 1 my1login.com, 1 my2pmclub.com, 1 @@ -102581,6 +101961,7 @@ myathena.ai, 0 myatipfile.com, 1 myatlwings.com, 1 +myauthordesk.com, 1 myauto.ml, 1 mybackyardcourtli.com, 1 mybadguy.com, 1 @@ -102625,8 +102006,7 @@ mybro.tv, 1 mybrokenheart.tk, 1 mybsms.gr, 1 -mybts.fr, 0 -mybuddytheplumberparkcity.com, 1 +mybts.fr, 1 mybudgetapp.com, 1 mybuildingcertifier.com.au, 1 mybupa.com.au, 1 @@ -102827,7 +102207,6 @@ myfirstcallmedical.com, 1 myfirstchessclub.com, 1 myfishpalace.at, 1 -myfitmare.com, 1 myfitnessbenefit.com, 1 myfitnesscare.com, 1 myfitsociety.com, 1 @@ -102861,7 +102240,7 @@ mygarito.com, 1 mygate.at, 0 mygaysitges.com, 1 -mygd.org, 1 +mygd.org, 0 mygear.live, 1 mygedit.com, 1 mygedit.info, 1 @@ -102871,7 +102250,6 @@ mygeek911.com, 1 mygenderation.com, 1 mygeorges.fr, 1 -mygeorgia.org, 1 mygermanuniversity.com, 1 mygest.me, 1 myggkungen.se, 1 @@ -102888,11 +102266,11 @@ mygolod.com, 1 mygomel.tk, 1 mygov.scot, 1 -mygr8app.com, 1 mygreatjob.eu, 1 mygreatwebsite.co.uk, 1 mygreencloset.com, 1 mygrodno.tk, 1 +mygsb.net, 1 mygtcup.co, 1 mygve.com, 1 mygymer.ch, 1 @@ -102922,7 +102300,7 @@ myhotgirls.ml, 1 myhouseofpizza.com, 1 myhousestats.com, 0 -myhrconsultantllc.com, 1 +myhrconsultantllc.com, 0 myhsatoday.com, 1 myhub.eu.org, 1 myhurlburt.marketing, 1 @@ -103013,6 +102391,7 @@ mymagic.ml, 1 mymagnifi.org, 1 mymailboxpro.cf, 1 +mymailing.ch, 1 mymailspace.ml, 1 mymaineconnection.gov, 1 mymanagement.ml, 1 @@ -103046,14 +102425,12 @@ mympdv.com, 1 mymsr.de, 0 mymun.com, 1 -mymun.net, 1 mymusiclist.alwaysdata.net, 1 mymusique.tk, 1 mymx.lu, 0 mynak.se, 1 mynameisivan.ru, 1 mynameistavis.com, 1 -mynametags.ae, 1 mynametags.be, 1 mynametags.com, 1 mynametags.com.br, 1 @@ -103099,7 +102476,6 @@ mynutrientcloud.com, 1 mynxtcld.spdns.de, 1 myoctocat.com, 1 -myoddlittleworld.com, 1 myodysi.com, 1 myofficeconnect.co.uk, 1 myokaloosa.gov, 1 @@ -103304,10 +102680,8 @@ mysociety.ml, 1 mysockfactory.ch, 1 mysoft.com.tr, 1 -mysoftbtrans.com, 1 mysoftebelge.com, 1 mysoftlonca.com, 1 -mysorry.com, 1 mysoundtalks.com, 0 mysourcebank.com, 1 mysourceofhealth.com, 0 @@ -103324,7 +102698,6 @@ mystery-science-theater-3000.de, 0 mysteryfun.house, 1 mysterymind.ch, 0 -mysteryplay.com, 1 mysteryshow.site, 1 mysterytag.com, 1 mystgames.tk, 1 @@ -103342,7 +102715,6 @@ mystocks.africa, 1 mystore24.us, 1 mystormshield.eu, 0 -mystorydoctor.com, 1 mystorymonster.com, 1 mystown.org, 1 mystream.com, 0 @@ -103392,17 +102764,15 @@ mytourplan.eu, 1 mytraiteurs.com, 1 mytraning.cf, 1 -mytransmissionexperts.com, 1 +mytransmissionexperts.com, 0 mytravelblog.de, 1 mytravelguide.tk, 1 mytreasury.gov, 1 mytrewithen.co.uk, 1 mytrialist.org, 1 mytrinity.com.ua, 1 -mytroc.pro, 1 -mytruecare.org, 0 +mytroc.pro, 0 mytrustadviser.com, 1 -mytty.net, 1 mytu.cloud, 1 mytuleap.com, 1 mytun.com, 1 @@ -103455,10 +102825,11 @@ mywellness360.in, 1 mywikis.net, 1 mywonderkitchen.com, 1 -mywonderland.co.nz, 1 +mywonderland.co.nz, 0 mywoodbridgedentist.com, 1 myworkboard.com, 1 myworkfromhome.ml, 1 +myworkplaceperks.ca, 1 myworldbbs.tk, 1 myworth.com.au, 1 mywrecklawyer.com, 1 @@ -103478,7 +102849,6 @@ mz2026.cc, 1 mz2027.cc, 1 mz2028.cc, 1 -mz2029.cc, 1 mz2030.cc, 1 mz2031.cc, 1 mz2032.cc, 1 @@ -103551,7 +102921,7 @@ n64.cc, 1 n6729.co, 1 n6957.co, 1 -n7.education, 0 +n7.education, 1 n7186c.com, 1 n8.gay, 1 n854.com, 1 @@ -103582,6 +102952,7 @@ naarenaa.tk, 1 naaronstoe.nl, 1 nab-services.ml, 1 +nabadcs.ae, 1 nabard.xyz, 1 nabble.org, 1 nabc.au, 1 @@ -103653,11 +103024,9 @@ nadilo.com.br, 1 nadine-birkner.de, 1 nadine-chaudier.net, 1 -nadinecays.com, 1 nadinethings.gq, 1 nadir.tk, 1 nadjabenaissa.tk, 1 -nadjasummer.com, 1 nadlan.immo, 1 nadlerdentistry.com, 1 nadoba-msk.ru, 0 @@ -103723,7 +103092,6 @@ naijabased.fun, 0 naijapickup.com, 1 naijaxnet.com.ng, 1 -naijjobs.com, 1 naika.clinic, 1 nailartstudio.it, 1 nailattitude.ch, 0 @@ -103752,6 +103120,7 @@ najarkadeh.com, 1 najbezpieczniejsze.pl, 1 naji-astier.com, 1 +najmon.media, 1 najprzepis.pl, 1 najrecept.sk, 1 naka.io, 1 @@ -103769,7 +103138,6 @@ nakayama.industries, 1 nakayamaresearch.com, 1 nakazanie.ga, 1 -nakazawa-iin.com, 1 naked.pics, 1 nakedalarmclock.me, 1 nakedgirls247.xxx, 1 @@ -103863,7 +103231,6 @@ namskra.is, 1 namspi.uz, 1 namu.la, 1 -namu.live, 1 namu.news, 1 namu.wiki, 1 nan.you, 1 @@ -103952,7 +103319,6 @@ napcae.de, 1 napfmomente.de, 1 naphex.rocks, 1 -napi.edu.ee, 1 napikuponok.hu, 1 napilol.ml, 1 napisdata.us, 1 @@ -104002,6 +103368,7 @@ narardetval.se, 1 narasi.news, 1 narasi.tv, 1 +naraxia.com, 1 narcissism.tk, 1 narcocheck.com, 1 narcoticsanonymous.tk, 1 @@ -104025,6 +103392,7 @@ naris-grc.com, 1 narko-stop.org, 1 narkocenter116.ru, 1 +narkologicheskay-pomoshch.ru, 1 narmafzar.tk, 1 naro-np.jp, 1 naro-oh.jp, 1 @@ -104037,6 +103405,7 @@ naroph.jp, 1 naroska.name, 1 narpes.fi, 1 +narramorph.com, 1 narrativ.com, 1 narrative-health.com, 1 narrative.network, 1 @@ -104046,6 +103415,7 @@ narthollis.net, 1 nartkoc.com, 1 nartlift.com, 1 +naru.build, 1 narushil-pdd.cf, 1 narushil-pdd.ga, 1 narushil-pdd.gq, 1 @@ -104058,7 +103428,6 @@ narutoshippuden.tk, 1 narutoshow.tk, 1 narutouzumaki.tk, 1 -narutowicza47.pl, 1 nary-software.com, 1 narzedziait.pl, 1 narzedziownia.top, 1 @@ -104074,12 +103443,11 @@ naschenweng.info, 1 naschtastisch.de, 1 nascloud.be, 1 -nasdarq.com, 1 +nasdarq.com, 0 nasecasomira.cz, 1 naseehah.ga, 1 nasehyar.ir, 1 naserron.gr, 0 -nasetema.cz, 1 nasets-marcusgard.se, 1 nash-dom.tk, 1 nash-megagid.tk, 1 @@ -104119,7 +103487,6 @@ nassautrafficny.gov, 1 nasscom.in, 1 nassconorfolk.com, 1 -nasserdkhalili.com, 1 nast.ro, 1 nast.tk, 1 nastationztv.com, 1 @@ -104129,6 +103496,7 @@ nastycomics.eu, 1 nastysclaw.com, 1 nasvyazi.ga, 1 +naswatch.com, 1 naszezgnilebloto.pl, 1 naszslub2026.pl, 1 naszymzdaniem.pl, 1 @@ -104140,8 +103508,6 @@ natalia-shablo.ru, 1 natalia-venezuela.tk, 1 natalia.ovh, 1 -nataliapearl.com, 1 -nataliealba.net, 1 nataliehershlag.tk, 1 nataliyabag.com, 1 natalsentido.com, 1 @@ -104163,7 +103529,7 @@ nate.sh, 1 nateandxtina.wedding, 1 natedryer.com, 1 -nateev.fr, 1 +nateev.fr, 0 nategreen.org, 0 natelefon.tk, 1 natenom.de, 1 @@ -104173,7 +103539,7 @@ nateschulz.com, 0 natesigal.com, 1 natevolker.com, 1 -natgo.xyz, 1 +natfrp.com, 1 nathalie-guillaumin.coach, 1 nathaliedijkxhoorn.com, 1 nathaliedijkxhoorn.nl, 1 @@ -104232,7 +103598,6 @@ nationalmattressday.com, 1 nationalmemorialdayparade.com, 1 nationalmower.com, 1 -nationalnursinghomelawyers.com, 1 nationalopera.ml, 1 nationalpriorities.org, 1 nationalregiftingday.com, 1 @@ -104321,7 +103686,6 @@ natureaction100.org, 1 natureandculture.org, 0 natureartns.ru, 1 -natureclaim.com, 1 naturecoaster.com, 1 naturedao.hk, 1 natureisland.tk, 1 @@ -104384,6 +103748,8 @@ nav.co, 1 nav.no, 1 nav.ro, 1 +navacqs-prod.com, 1 +navacqs-test.com, 1 navadebejar.tk, 1 navajasdesupervivencia.es, 1 navajocountysheriff.gov, 1 @@ -104396,8 +103762,6 @@ navarraaluminio.com, 1 navarrete.tk, 1 navasdelpinar.com, 1 -navasoft.com.tr, 1 -naveengranites.com, 1 naveenmofficial.com, 1 navegantesdelcosmos.ec, 1 navegarea.tk, 1 @@ -104458,6 +103822,7 @@ nazarenoviso.tk, 1 nazbol.tk, 1 nazevfirmy.cz, 1 +nazimsafak.tr, 1 nazmulislam.cf, 1 nazo.run, 1 nazoryzakazniku.cz, 1 @@ -104514,6 +103879,7 @@ nbb.com, 1 nbc.com.tr, 1 nbc26.com, 1 +nbccf.org, 1 nbeuk.com, 1 nbexecutivesolutions.com, 1 nbf.ae, 1 @@ -104532,14 +103898,13 @@ nbranded.lt, 1 nbri.ru, 1 nbriresearch.com, 1 -nbrown.us, 1 nbwp.uk, 1 nbx.com, 1 nc-beautypro.fr, 1 +nc-check.de, 1 nc-formation.fr, 1 nc-network.io, 1 nc3rs.org.uk, 1 -ncaaclaimsettlement.com, 1 ncalculators.com, 1 ncamarquee.co.uk, 1 ncarmine.com, 1 @@ -104643,7 +104008,6 @@ ndata.us, 1 ndcurvemaster.com, 1 ndd.govt.nz, 1 -ndeb-bned.ca, 1 ndeoye.org, 1 ndesignprojects.com, 1 ndev.tk, 1 @@ -104654,6 +104018,7 @@ ndi.org, 1 ndiama.eu.org, 1 ndiga.org, 1 +ndiscleaningservices.net.au, 1 ndispersonaltrainer.com.au, 1 ndisreview.gov.au, 1 ndk.cz, 1 @@ -104713,10 +104078,10 @@ nebix.tk, 1 nebohost.tk, 1 neboley.cf, 1 +nebraska.gov, 1 nebraskadrypeas.gov, 1 nebraskajudicial.gov, 1 nebraskaresearch2.gov, 1 -nebraskatitlesearch.com, 1 nebraskawheat.gov, 1 nebucadnezzer.tk, 1 nebulae.co, 1 @@ -104731,7 +104096,6 @@ nebux.io, 1 nec-x.com, 1 necd.me, 1 -nechtan.io, 1 necio.ca, 1 necklacen.com, 1 necord.com, 1 @@ -104766,6 +104130,7 @@ nedimon.gq, 1 nedir.help, 1 nednex.com, 1 +nedops.nl, 1 nedpac.org, 1 nedviga.gq, 1 nedviga.tk, 1 @@ -104773,7 +104138,6 @@ nedvizhimostthailand.ml, 1 nedvrf.ru, 1 nee.tw, 1 -neecist.org, 1 needfire.ga, 1 needflare.com, 1 needing.cf, 1 @@ -104944,7 +104308,6 @@ nelsonworldwide.com, 1 nelswong.com, 1 nelt.com, 1 -nelty.be, 1 nema.gov.au, 0 nemagiya.tk, 1 nemahacountyne.gov, 1 @@ -105009,11 +104372,10 @@ neodraykl.com, 1 neodruid.tk, 1 neoedresources.org, 1 -neoeliteconsulting.com, 1 +neoeliteconsulting.com, 0 neofeli.fr, 1 neofinancial.com, 1 neogames.com.co, 1 -neohu.com, 0 neohype.co, 1 neojo.org, 1 neoko.fr, 1 @@ -105036,7 +104398,6 @@ neonnova.ca, 1 neonpublic.ai, 1 neons.org, 1 -neontemple.net, 1 neontri.com, 1 neoone.art, 0 neophilus.net, 1 @@ -105048,7 +104409,6 @@ neopredix.tech, 1 neoreflex.nz, 1 neorsd.org, 1 -neosdesignstudio.co.uk, 1 neosecurityteam.tk, 1 neoshomo.gov, 1 neoskosmos.info, 1 @@ -105060,7 +104420,6 @@ neosys.com, 1 neosys.eu, 1 neotech-solutions.com, 1 -neoteric.eu, 0 neotiv.com, 1 neotracker.io, 0 neovapo.com, 1 @@ -105084,6 +104443,7 @@ nepellion.org, 1 nepezzano13.com, 1 nepfi.com, 1 +neph.social, 1 nephelae.eu, 1 nephology.net.au, 1 nephrogo.com, 1 @@ -105103,6 +104463,7 @@ neptunenow.com, 1 neptunosrefugio.tk, 1 nepu.tk, 1 +nerangpersonaltrainers.com, 1 nerazzurrisiamonoi.it, 1 nerba.net, 1 nerd.gallery, 1 @@ -105126,6 +104487,7 @@ nerdpol.ch, 1 nerdpol.org, 1 nerdpress.net, 1 +nerdragestudios.com, 1 nerds-gegen-stephan.de, 0 nerds.company, 0 nerdsin.space, 1 @@ -105177,9 +104539,9 @@ nesscitycatholic.org, 1 nessimworks.com, 0 nesstormented.tk, 1 +nest-gefuehl.at, 1 nest-property.com, 1 -nesta.ie, 1 -nestbynature.com, 1 +nest1hs.com.au, 1 nestdesigndeco.com, 1 nestforms.com, 1 nestinarka-park.com, 1 @@ -105224,13 +104586,11 @@ netcake.in, 1 netcapital.com, 1 netcat.ovh, 1 -netcattle.com, 1 netcd.tk, 1 netcenteret.tk, 1 netco-group.de, 1 netco-privacy.de, 1 netco-system.de, 1 -netconnect.at, 0 netcoresmartech.com, 1 netcosa.com, 1 netcourtreporter.com, 1 @@ -105259,6 +104619,7 @@ netevents.org, 1 netexlearning.com, 1 neteye.ru, 1 +netezbe.cz, 1 netfabb.com, 0 netface.com.br, 1 netfiles.de, 1 @@ -105357,6 +104718,7 @@ netrecruituk.co.uk, 1 netresec.com, 1 netreviews.tk, 1 +netriders.academy, 1 netrift.uk, 1 netrino.be, 1 netrino.info, 1 @@ -105419,7 +104781,6 @@ nettoyagesleriverain.com, 1 nettskjema.no, 1 nettverk.fi, 1 -nettx.co.uk, 1 nettype.ca, 1 netube.org, 1 netunia.org, 1 @@ -105449,6 +104810,7 @@ network.ae, 0 network23.nl, 1 networkarena.tk, 1 +networkassistance.de, 1 networkcoverageplus.com, 1 networkdiode.com, 1 networkdiode.eu, 1 @@ -105526,6 +104888,7 @@ neuralink.com, 1 neuralkids.org, 1 neuraphic.com, 1 +neurastruct.com.au, 1 neureichenau.de, 1 neurexhealth.ai, 1 neurido.net, 1 @@ -105534,6 +104897,7 @@ neurocny.cloud, 1 neurococi.org, 1 neurococi.ro, 0 +neurodiversum.space, 1 neuroeconomics.org, 1 neuroeconomicstudies.org, 1 neuroethics.com, 1 @@ -105576,11 +104940,11 @@ neutron.ch, 1 neutronfire.com, 1 neutroodor.com, 1 -nev.si, 1 +nev.si, 0 neva-star.ml, 1 neva.li, 1 nevadacampaigncontributions.com, 1 -nevadacoffee.com, 1 +nevadacoffee.com, 0 nevadaconservativenews.com, 1 nevadacountyca.gov, 1 nevadacourtcases.com, 1 @@ -105597,7 +104961,6 @@ nevadasheriff.org, 1 nevadaslavemaster.com, 1 nevadataxrates.com, 1 -nevadatitlesearch.com, 1 nevadawhistleblowers.com, 1 nevalleynews.org, 1 nevam.cf, 1 @@ -105621,7 +104984,6 @@ nevers.fr, 1 neverwasinparis.com, 1 neveu.tech, 0 -nevim-co-varit.cz, 1 nevivur.net, 1 nevocloud.com, 1 nevolution.me, 1 @@ -105658,7 +105020,7 @@ newannualfestival.com.au, 1 newapparatus.com, 0 neware.cat, 1 -newark-airportparking.com, 0 +newark-airportparking.com, 1 newarkca.gov, 1 newarkohio.gov, 1 newarkwi.gov, 1 @@ -105689,7 +105051,6 @@ newbuilding.tk, 1 newburybouncycastles.co.uk, 1 newburyportma.gov, 1 -newcab.de, 1 newcapitaldev.com, 1 newcarlisleohio.gov, 1 newcars.tk, 1 @@ -105699,7 +105060,6 @@ newcastleconventionbureau.com.au, 1 newcastlelibraries.com.au, 1 newcastlememorialwalk.com.au, 1 -newcastlemoneyman.com, 1 newcastlemuseum.com.au, 1 newcastleok.gov, 1 newcastlevenues.com.au, 1 @@ -105715,7 +105075,6 @@ newcombny.gov, 1 newcometals.com, 1 newconcept.tk, 1 -newconceptelec.be, 1 newcreamforface.com, 1 newcreationperso.com.br, 1 newcurve.tk, 1 @@ -105734,7 +105093,6 @@ newedgeink.ca, 1 newelliottwaverule.org, 1 newemage.com.mx, 1 -newendsoft.com, 0 newengineer.com, 1 newenglandfiberglasswindows.com, 1 newenglandradioforum.tk, 1 @@ -105767,7 +105125,6 @@ newgrowthpress.com, 1 newguidance.ch, 0 newhade.ddns.net, 1 -newhampshiretitlesearch.com, 1 newhamyoungbloods.co.uk, 1 newhavenmurdermystery.com, 1 newhavenshiami.gov, 1 @@ -105784,7 +105141,6 @@ newipswichnh.gov, 1 newisys.com, 1 newjerseysolarinitiative.com, 1 -newjerseytitlesearch.com, 1 newjerseyvideography.com, 1 newkaliningrad.ru, 1 newlands-fasteners.com.au, 1 @@ -105804,7 +105160,6 @@ newmedia.gotdns.com, 1 newmediaone.net, 1 newmex.com.br, 1 -newmexicotitlesearch.com, 1 newmilfordct.gov, 1 newmilfordnj.gov, 1 newmill.com, 1 @@ -105875,6 +105230,7 @@ news123.ga, 1 news12elite.tk, 1 news17.tk, 1 +news19.org, 1 news24rus.tk, 1 news29.tk, 1 news4me.sg, 1 @@ -105998,7 +105354,6 @@ newyorkreporting.com, 1 newyorkrp.tk, 1 newyorkschools.us, 0 -newyorktitlesearch.com, 1 newzashitnik.tk, 1 newzealandadventure.tk, 1 newzealandheatpumps.co.nz, 1 @@ -106007,7 +105362,6 @@ newzvilla.ga, 1 nex.io, 1 nex.li, 1 -nexa-c.com, 1 nexacu.com.au, 1 nexadevs.com, 1 nexafuze.com, 1 @@ -106039,13 +105393,14 @@ nexitdata.com, 1 nexiumgeneric.tk, 1 nexlyrai.uk, 1 -nexocap.cl, 1 +nexocap.cl, 0 nexon.com.au, 1 nexopd.com, 1 nexrbx.com, 1 nexril.net, 0 nexs.gg, 1 nexscience.tk, 1 +nexsms.ai, 1 nexsol-tech.ch, 1 next-fact.com, 1 next-geek.fr, 1 @@ -106070,6 +105425,7 @@ nextcloud.tel, 1 nextclouddarwinkel.nl, 1 nextclouddavid.duckdns.org, 1 +nextdayoff.com, 1 nextdoorhobby.com, 1 nextdoorhobby.de, 1 nextdyna.co.jp, 1 @@ -106082,6 +105438,7 @@ nextgen-wealth.com, 1 nextgen.com, 0 nextgen.sk, 1 +nextgenaidigest.com, 1 nextgenerationaccessories.com, 1 nextgenerationaccessories.online, 1 nextgenerationaccessories.ru, 1 @@ -106122,7 +105479,6 @@ nextvision.pt, 1 nextwab.com, 1 nextworldcoding.ga, 1 -nextxidentity-dev.azurewebsites.net, 1 nextzen.com.bd, 1 nexus, 1 nexus-crm.co.uk, 0 @@ -106210,7 +105566,6 @@ nfwkh.de, 1 ng-musique.com, 1 ng-stroy.bg, 1 -ng.edu.ee, 1 ngappliances.co.uk, 0 ngarate.com, 1 ngatikoata.com, 1 @@ -106246,7 +105601,7 @@ ngo.email, 1 ngo.luxe, 1 ngo.xxx, 1 -ngobrolgames.com, 1 +ngobrolgames.com, 0 ngontinhtruyen.com.vn, 1 ngoresan.tk, 1 ngorod.tk, 1 @@ -106258,7 +105613,6 @@ nguoimuahangmy.com, 1 nguru.net, 1 nguyenanhung.com, 1 -nguyencucthanh.com, 1 nguyenductrong.net, 1 nguyenduythiem.com, 0 nguyenfamily.cc, 1 @@ -106273,7 +105627,6 @@ ngxpagespeed.com, 1 ngxpkg.com, 1 nh.ee, 1 -nhacthanhcavietnam.com, 1 nhai.gov.in, 0 nhance.pl, 1 nharper.org, 1 @@ -106286,7 +105639,6 @@ nhdecoration.fr, 1 nhdsd.xyz, 1 nhdsilentheroes.org, 1 -nhg.nl, 1 nhheaf.org, 1 nhjvillalmanzo.tk, 1 nhlocalgrocer.com, 1 @@ -106315,14 +105667,17 @@ niagara.ru, 0 niagaraconstruction.org, 1 niagarafalls.ca, 1 +niagarainfosec.ca, 1 niallator.com, 1 niawier-wetsens.tk, 1 +nibayyw.com, 1 nibbler.ai, 1 nibblespot.com, 1 nibert.fr, 1 nibiru.com.uy, 1 nibl.com.np, 1 nibletllc.com, 1 +nibol.com.bo, 1 nibouw.nl, 1 nic.ads, 1 nic.android, 1 @@ -106371,7 +105726,6 @@ nica.org.sg, 1 nicadestino.com, 1 nicaieri.ro, 1 -nicanordic.com, 1 nicastrosalvatore.tk, 1 nicat.cf, 1 nicava.com.mx, 1 @@ -106395,7 +105749,6 @@ nicesurf.tk, 1 nicetits.pics, 1 nicevillefl.gov, 1 -niceviolin.com, 1 nicgoa.nic.in, 1 nicheosala.info, 1 nicheosala.tk, 1 @@ -106443,7 +105796,6 @@ nickmazuk.com, 1 nickmchardy.com, 1 nickmiller.ie, 1 -nickmorri.com, 0 nickmorris.name, 0 nicknames.tk, 1 nicknamez.tk, 1 @@ -106471,10 +105823,9 @@ nickwasused.ml, 1 nickwasused.tk, 1 nickwatton.com, 0 -nickyfoxx.net, 1 nicn.me, 1 nico.st, 1 -nicoacosta.me, 0 +nicoacosta.me, 1 nicochinese.com, 1 nicoknibbe.nl, 1 nicoladixonrealestate.com, 0 @@ -106495,7 +105846,6 @@ nicolasiung.me, 0 nicolasjpsanchez.com, 1 nicolasmeric.ovh, 1 -nicolasortiz.com, 1 nicolasprovost.tk, 1 nicolaszambetti.ch, 1 nicolaus.sk, 1 @@ -106525,6 +105875,7 @@ nicotinecali.com, 1 nicotorrenga.nl, 1 nicovip.com, 0 +nicplatform.org, 1 nicscommissioners.org, 1 nicsezcheckfbi.gov, 1 nicsys.de, 1 @@ -106535,6 +105886,7 @@ nidhoeggr.duckdns.org, 1 nidialozano.com, 1 nidosinu.com, 1 +nidran.eu, 1 nidsuber.ch, 1 nie-wieder-muede.de, 1 niebieska-fala-spokoju.pl, 1 @@ -106586,7 +105938,6 @@ nieuwsberichten.eu, 1 nieuwsbzk.nl, 1 nieuwsfiets.nu, 1 -nieuwsienw.nl, 1 nieuwslagmaat.nl, 1 nifc.gov, 1 niferry.co.uk, 1 @@ -106604,6 +105955,7 @@ nigellasativa.info, 1 nigelpentland.co.uk, 1 nigelpentland.net, 1 +nigelpentland.uk, 1 nigelsnotebook.com, 1 nigelwright.com, 1 nigelwrightgroup.com, 1 @@ -106629,7 +105981,6 @@ nighthawkstrategies.com, 1 nightingalescareathome.com, 1 nightinvasion.org, 1 -nightkiss66.org, 1 nightlight.gg, 1 nightlive.tk, 1 nightmail.net, 1 @@ -106642,7 +105993,7 @@ nightpass.tk, 1 nights-of-the-turntable.com, 1 nightscapes.tk, 1 -nightscout.cloud, 1 +nightscout.cloud, 0 nightscout.sk, 1 nightshiftsec.ai, 1 nightsi.de, 1 @@ -106706,6 +106057,7 @@ nikesoccerbodotoutlet.ga, 1 nikest.cf, 1 nikest.tk, 1 +niketgupta.com, 1 nikeyichinese.com, 1 nikhilramakrishnan.tk, 1 nikhilsd.com, 1 @@ -106722,7 +106074,6 @@ nikkei225jp.com, 1 nikkila.me, 1 nikkotaytay.tk, 1 -nikksno.io, 1 niklasbabel.com, 1 niklashagman.se, 1 niklasstinkt.com, 1 @@ -106770,7 +106121,6 @@ nilianwo.com, 1 nilmaraquintela.com.br, 1 nilnasc.com, 1 -nilosoft.com, 1 niloxy.com, 1 nilpointer.com, 1 nilrem.org, 0 @@ -106783,7 +106133,6 @@ nimber.pt, 1 nimbl.nz, 1 nimble.com.br, 1 -nimblefins.co.uk, 1 nimbo.com.au, 1 nimbus-link.co.uk, 1 nimbus-net.tk, 1 @@ -106812,7 +106161,6 @@ ninasky.tk, 1 ninasofian.ro, 1 ninaundandre.de, 0 -ninavegas.net, 1 ninchat.com, 1 nine-chronicles.com, 1 ninedaysmore.tk, 1 @@ -106829,11 +106177,13 @@ ninex.org, 1 ninfora.com, 1 ning.bo, 1 +ningmengysw.com, 1 ningwei.net, 1 niniko.tk, 1 ninja-corner.tk, 1 ninja.it, 1 ninjamagic.tk, 1 +ninjamaria.com, 1 ninjaremap.com, 1 ninjaseo.es, 1 ninjasquad.fr, 1 @@ -106871,6 +106221,7 @@ nipponsteelwelding-thai.co.th, 1 nippynet.tk, 1 niprojmidialysis.com, 1 +niprojmimedical.com, 1 niprojmipharma.com, 1 nirada.info, 1 nirbhayamc.com, 1 @@ -106905,7 +106256,6 @@ nisselist.tk, 1 nisselrooij.nl, 1 nissens.com, 0 -nisseymaquinas.com.br, 1 nissinfoods.com, 1 nist.tech, 1 nitecore.ga, 1 @@ -107015,7 +106365,6 @@ nkfs.org, 1 nkg-mosbach.de, 1 nkg.com.au, 1 -nkhr-c.com, 1 nkjwmn.com, 1 nkjwrs.com, 1 nkkr.hu, 1 @@ -107049,7 +106398,6 @@ nlrb.gov, 1 nlrwu.gov, 1 nluug.nl, 1 -nlx.ai, 1 nlyfeue.gq, 1 nm-arge10.de, 1 nm.cx, 1 @@ -107099,7 +106447,6 @@ nna774.net, 1 nnas.org.uk, 1 nnc.im, 1 -nndfn.com, 1 nnet.ca, 1 nnews.tk, 1 nni-pulse-engagement-dev.azurewebsites.net, 1 @@ -107115,11 +106462,8 @@ nnnnn.click, 1 nnrevolt.com, 1 nnsc.tf, 1 -nnss.gov, 1 nntb.no, 1 no-andishan.ir, 1 -no-b.kiev.ua, 1 -no-bet.ru, 1 no-bull.sh, 1 no-data.tk, 1 no-dev.de, 1 @@ -107165,6 +106509,7 @@ nobackups.com, 1 nobananas.ee, 1 nobasico.com.br, 1 +nobdy.my, 1 nober.tk, 1 nobesity.in, 1 nobetcieczaneveri.com, 1 @@ -107206,7 +106551,6 @@ nocoffee.tech, 1 nocoffeetech.de, 1 nocommentsallowed.com, 1 -nocr.net, 1 nocreyentes.org, 1 nocrm.io, 1 noctinus.tk, 1 @@ -107330,7 +106674,6 @@ nolovus.com, 1 nolt.io, 1 nolte-tver.ru, 1 -nolto.com, 0 nolutut.ga, 1 nomada.gt, 1 nomada.tools, 1 @@ -107338,7 +106681,6 @@ nomadcasino.com, 1 nomadgrowth.cl, 1 nomadichome.com, 1 -nomadichome.org, 1 nomadichomes.com, 1 nomadichomes.org, 1 nomadicrootsco.com, 1 @@ -107374,6 +106716,7 @@ nonemail.ch, 1 nonemu.ninja, 1 noneuclideanconcepts.com, 1 +nongorr.com, 1 nonkyc.io, 1 nonlin-processes-geophys.net, 1 nonnaloreta.it, 1 @@ -107384,8 +106727,6 @@ nonprofit.info, 1 nonprofitdrupal.org, 1 nonqmloans.com, 1 -nonsa.pl, 1 -nonstopairductcleaning.com, 1 nonstopairductcleaninghoustontx.com, 1 nonstopjob.ga, 1 nonstopkino.at, 1 @@ -107440,7 +106781,6 @@ nopropaganda.tk, 1 nopuedesdejarlopasar.es, 1 nora-bolig.no, 1 -nora-devot.com, 1 noraahost.com, 1 noracora.com, 1 norad.sytes.net, 1 @@ -107508,7 +106848,6 @@ nordsec.com, 1 nordseeblicke.de, 1 nordstaragency.hu, 1 -nordstarfossils.com, 1 nordvec.com, 1 nordvpn.com, 1 nordwaldzendo.de, 0 @@ -107591,15 +106930,14 @@ northbrisbaneapartments.com.au, 1 northcapitalb.com, 1 northcarolinahealth.tk, 1 -northcarolinatitlesearch.com, 1 northcharlestonsc.gov, 1 +northcoastbrewing.com, 1 northcoastpsychotherapy.com.au, 1 northcotemanor.co.uk, 1 northcountyfire.gov, 1 northcountykiaparts.com, 1 northcreekresort.com, 1 northcreekresortblue.ca, 1 -northdakotatitlesearch.com, 1 northdallasendo.com, 1 northdavisfireut.gov, 1 northdevonbouncycastles.co.uk, 1 @@ -107716,7 +107054,7 @@ nosoxo.com, 1 nosproduitsdequalite.fr, 1 nossasenhoradodesterro.com.br, 1 -nossasenhoradopranto.pt, 1 +nossasenhoradopranto.pt, 0 nossorepresentante.com.br, 1 nostalgia-90s.com, 1 nostalgicinfinity.tk, 1 @@ -107725,7 +107063,6 @@ nostalgiktv.ml, 1 nostalgimidi.se, 1 nostaljicicekcilik.com, 1 -nostar.fr, 1 nosteria.com, 1 nostoautomaatti.fi, 1 nostosh.eu.org, 1 @@ -107746,6 +107083,7 @@ notabug.eu, 1 notabug.org, 1 notadd.store, 1 +notafine.nz, 1 notaiomenghini.it, 1 notairejonquiere.ca, 1 notairejonquiere.com, 1 @@ -107876,7 +107214,6 @@ notsoape.com, 1 nottawatwpisabellami.gov, 1 nottinghammd.com, 1 -nottinghammoneyman.com, 1 nottinghilleditions.com, 1 notto.ovh, 1 notube.cc, 1 @@ -107924,10 +107261,8 @@ novamont.com, 1 novanetwork.ml, 1 novania.fr, 1 -novanice.net, 1 novanta.pl, 1 novantaphotonics.com, 0 -novaofcalifornia.com, 0 novaprac.com, 1 novaquantum.com, 1 novaquark.com, 1 @@ -107971,6 +107306,7 @@ novema.jp, 1 novenopiso.tk, 1 noventiq.nl, 1 +novexazen.com, 1 novezamky.tk, 1 novgorod-news.net, 1 novgorod24.tk, 1 @@ -108018,7 +107354,6 @@ novosad-kom.tk, 1 novosel.ga, 1 novoselie.ga, 1 -novoshoes.com.au, 1 novosibavia.ru, 0 novosibirsk-news.net, 1 novosti-novorossii.ml, 1 @@ -108036,6 +107371,7 @@ novu.com, 1 novum.is, 1 novumclinic.pl, 1 +novumnet.com.br, 0 novurania.com, 0 novusnews.co.uk, 1 novusnews.de, 1 @@ -108080,7 +107416,6 @@ noxiouspl.uk, 1 noxomusic.com, 1 noxveri.com, 1 -noxx.global, 1 noxx.solutions, 1 noxx.uk, 1 noy.asia, 1 @@ -108097,9 +107432,7 @@ np-edv.at, 1 np.search.yahoo.com, 0 np39.de, 1 -npaf.org, 1 npass.us, 1 -npath.de, 1 npbeta.com, 1 npbooking.ro, 1 npc.org.au, 1 @@ -108127,6 +107460,7 @@ npws.net, 1 nqesh.ph, 1 nqhomeinsurance.gov.au, 1 +nqvinh.tech, 1 nrac.or.jp, 1 nrail.eu, 1 nrb06.ru, 1 @@ -108156,12 +107490,13 @@ ns-frontier.com, 1 ns-hook.dk, 1 ns.gov, 1 +ns.wiki, 1 ns0.ca, 1 ns230kvopenhouse.com, 1 ns2servers.pw, 1 nsa.ovh, 1 nsadns.uk, 1 -nsaec.com, 1 +nsaec.com, 0 nsamail.uk, 1 nsapb.bg, 1 nsb.lk, 1 @@ -108214,7 +107549,6 @@ nslone.com, 1 nsm.ee, 1 nsmail.cn, 1 -nsms.com, 1 nsncatalog.com, 1 nso.ie, 1 nso.li, 1 @@ -108243,10 +107577,11 @@ nswcc.org.au, 1 nswedu.link, 1 nsworks.com, 0 +nswpolicefitnesstest.com.au, 1 nszero.tk, 1 nta-net.nl, 1 ntags.org, 1 -ntangledstate.com, 0 +ntangledstate.com, 1 ntarasioannis.gr, 1 ntcoss.org.au, 1 ntcp.ph, 0 @@ -108277,7 +107612,6 @@ ntppool.com, 1 ntppool.net, 1 ntppool.org, 1 -ntq.technology, 1 ntr.my.id, 1 ntreizel.com, 1 nts.com, 1 @@ -108288,7 +107622,6 @@ ntx360grad-fallakte.de, 1 ntz.im, 1 nu-pogodi.net, 1 -nu.com.mx, 1 nu.fi, 1 nu91.nl, 1 nuacht.ie, 1 @@ -108308,7 +107641,6 @@ nubium.net, 1 nubla.fr, 1 nubla.io, 1 -nubnology.com, 1 nubraza.com, 1 nubu.at, 1 nubunk.com.ng, 0 @@ -108346,7 +107678,6 @@ nuestraboda.ec, 1 nuestragente.com, 1 nuestrasdanzashn.tk, 1 -nuetel.com, 1 nuevacombarbala.tk, 1 nuevaimagenpublicidad.es, 1 nuevapublicidad.tk, 1 @@ -108409,7 +107740,6 @@ numaxion.fr, 1 number.academy, 1 number.com.br, 1 -number.me, 1 numbercult.net, 1 numberspiral.pt, 1 numbertowords.in, 1 @@ -108435,7 +107765,6 @@ numismaticacoan.com, 1 numismatix.de, 1 numismed-seniorcare.de, 1 -numisquare.com, 1 numista.com, 1 nummer378.de, 1 nummernschild.de, 1 @@ -108476,7 +107805,6 @@ nurkamol.com, 1 nurmio.fi, 1 nurnabi.ml, 1 -nurolyn.store, 1 nurrobin.de, 1 nurseactioners.ga, 1 nurseactionest.ga, 1 @@ -108504,7 +107832,6 @@ nussschale.eu, 1 nutbot.co.uk, 1 nutleyarchives.org, 1 -nutleyeducationalfoundation.org, 1 nutleyef.org, 1 nutleyhistoricalsociety.org, 1 nutmeg.com, 1 @@ -108526,14 +107853,18 @@ nutrisoy.com.sg, 1 nutristories.gr, 1 nutritea.com.sg, 1 +nutritea.sg, 1 nutrition.gov, 1 nutritiondynamixrd.com, 1 nutritionfitness.fr, 1 +nutritionistmelbourne.com.au, 1 +nutritionistperth.com.au, 1 nutritious.cf, 1 nutriwell.com.sg, 1 nutriwellglobal.com, 1 nutrizionista.roma.it, 1 nutrizionisti.milano.it, 1 +nutro.cloud, 1 nutroeffect.com, 1 nuts-choco.com, 1 nutsforfruits.com.au, 1 @@ -108550,7 +107881,6 @@ nuvo-hub.com, 1 nuvolosicuro.io, 1 nuvotheagency.com, 1 -nuvpad.com, 1 nuvto.me, 1 nuvvo.org, 1 nuwave.com, 0 @@ -108560,7 +107890,7 @@ nuzhenkredit.gq, 1 nuzhenkredit.ml, 1 nuzhenkredit.tk, 1 -nuzpost.com, 1 +nuzpost.com, 0 nv-art.ru, 1 nv.tj.cn, 1 nvbw.de, 1 @@ -108582,6 +107912,7 @@ nvgopelecteds.com, 1 nvgoptracker.com, 1 nvh.group, 1 +nvhlab.com, 1 nvhsecho.com, 1 nvi-go.nl, 1 nviewscareer.com, 1 @@ -108610,7 +107941,7 @@ nwaafund.org, 1 nwarskin.com, 1 nwbc.gov, 0 -nwcc.bike, 0 +nwcc.bike, 1 nwcg.gov, 1 nwcouncil.gov, 1 nwea.nl, 1 @@ -108638,7 +107969,6 @@ nwuss.okinawa, 1 nx42.pw, 1 nxcloud.ml, 1 -nxdomain.info, 1 nxedge.com, 1 nxit.ca, 1 nxnt.link, 1 @@ -108647,13 +107977,11 @@ nxstudios.tk, 1 nxth.io, 1 nxtport.eu, 1 -nxtrunn.com, 1 +nxtrader.io, 1 nxxcloud.nl, 1 -ny-events.club, 1 nya-cloud.com, 1 nya.as, 1 nya.one, 1 -nya.show, 1 nya.work, 1 nyaan.net, 1 nyaan.org, 1 @@ -108661,7 +107989,6 @@ nyadisk.net, 1 nyahururu.tk, 1 nyaken.tk, 1 -nyallpurposepaving.com, 1 nyan.it, 0 nyan.kim, 1 nyangasm.com, 0 @@ -108681,7 +108008,6 @@ nycdentalimplantscenter.com, 1 nyce.net, 1 nycestateest.ga, 1 -nycgangland.com, 1 nycoyote.org, 1 nycpac.net, 0 nycris.com, 1 @@ -108830,7 +108156,6 @@ o0c.cc, 1 o15y.com, 1 o2design.tk, 1 -o2solutions.ae, 1 o2ss.com, 0 o36533.com, 1 o365info.com, 1 @@ -108990,7 +108315,6 @@ obnalichka.gq, 1 obnalichka.tk, 1 obocat.tk, 1 -oboes.top, 1 obol.tech, 1 obomne.tk, 1 obozrevatel.tk, 1 @@ -109001,7 +108325,6 @@ obrasereformasembh.com, 1 obraz-ural.ru, 1 obrazcovdvor.bg, 1 -obrela.com, 1 obreshkovisin.bg, 1 obreshkovisin.com, 1 obrobka-zdjec.pl, 1 @@ -109137,6 +108460,7 @@ ochioneta.es, 1 ochk.org, 1 ochki-linzi.tk, 1 +ochobeatsmedia.net, 1 ochranaprirody.cz, 1 ochrepoint.com.au, 1 ochsenfeld-fotografie.de, 1 @@ -109240,7 +108564,6 @@ ocularbaby.com.br, 1 oculta.ml, 1 oculus.com, 1 -ocun.net, 1 ocunclaimed.gov, 1 ocuuc.org, 1 ocvote.gov, 1 @@ -109256,7 +108579,7 @@ odbtomsk.ru, 1 odd17.org, 1 oddetall.no, 1 -oddfellowwellness.com, 1 +oddfellowwellness.com, 0 oddformrecords.tk, 1 oddintely.com, 1 oddity.tk, 1 @@ -109274,6 +108597,7 @@ oddtime.net, 1 oddtx.org, 1 ode.red, 0 +odebouchage.fr, 1 odejdamoda.tk, 1 odensc.com, 1 odensc.me, 1 @@ -109294,7 +108618,6 @@ odinraz.ga, 1 odinseye.net, 1 odinson.tk, 1 -odiqco.com.bd, 1 odisealinux.com, 0 odishainfo.tk, 1 odisseo.io, 1 @@ -109344,7 +108667,6 @@ oeirasmoveteclab.pt, 1 oeitss.gob.es, 1 oeko-bundesfreiwilligendienst-sh.de, 1 -oeko-jahr-jubilaeum.de, 1 oekokiste-ingolstadt.de, 0 oel-beck.de, 1 oelbilder-oelmalerei.de, 1 @@ -109375,13 +108697,11 @@ ofallonil.gov, 1 ofallonmo.gov, 1 ofasoft.com, 1 -ofbdc.org.au, 1 ofcampuslausanne.ch, 0 ofcr.co.jp, 1 ofelia.tk, 1 ofenbau-melle.de, 1 ofertasadsl.com, 1 -ofertasinternet.com, 1 ofertastop.es, 1 ofertemutare.ro, 1 ofertolino.fr, 1 @@ -109396,6 +108716,7 @@ offbyinfinity.com, 1 offcasesstore.com, 1 offcenit.no, 1 +offene-nachbarschaft-kiwittsmoor.de, 1 offenekommune.de, 1 offenes-deutschland.de, 1 offensity.com, 1 @@ -109504,7 +108825,6 @@ oflow.me, 0 ofo2.com, 0 ofogh.co, 1 -oformi.net, 1 oformit-zajm-kruglosutochno.ga, 1 oformlaj.ga, 1 ofpad.com, 1 @@ -109552,6 +108872,7 @@ ogsh.net, 1 ogui.de, 1 ogunquit.gov, 1 +ogunsec.com, 1 ogurishun.tk, 1 ogurus.com, 1 ogyaa.jp, 0 @@ -109582,10 +108903,8 @@ ohiostateparks.gov, 1 ohiostatepress.org, 1 ohiot21.gov, 1 -ohiotitlesearch.com, 1 ohiotobacco21.gov, 1 ohiowebtech.com, 1 -ohleschefs.com, 1 ohling.org, 1 ohm.sg, 1 ohmanager.kr, 1 @@ -109606,7 +108925,6 @@ ohsweetart.com, 1 ohtoy.com, 1 ohverynice.ml, 1 -ohvoice.com, 1 ohwatch.co.za, 1 ohwowlash.com, 1 ohyooo.com, 1 @@ -109705,10 +109023,10 @@ okkur.team, 1 okkurlabs.com, 1 oklahomaced3.gov, 1 +oklahomagmenginelitigation.com, 1 oklahomamoversassociation.org, 1 oklahomanotepro.com, 1 oklahomasoftwaresolutions.com, 1 -oklahomatitlesearch.com, 1 oklahomaworkstogether.gov, 1 okmirror.net, 1 okmulgeecounty.gov, 1 @@ -109822,6 +109140,7 @@ oldinnpub.tk, 1 oldita.ru, 1 oldliverpoolrailways.tk, 1 +oldmontrealmap.ca, 1 oldonyosafaris.com, 1 oldpc.com.ua, 1 oldports.org, 1 @@ -109937,6 +109256,7 @@ olivetownship-mi.gov, 1 olivetti.it, 1 olivia.cf, 1 +oliviabailey.co, 1 olivialufkin.tk, 1 olivier-giroud.tk, 1 olivier-rochet.com, 1 @@ -109965,6 +109285,7 @@ ollo.ga, 1 ollornog.de, 1 olltechjob.com, 1 +ollympus.tech, 1 olmari.fi, 1 olmet.pl, 1 olmik.net, 1 @@ -109992,7 +109313,6 @@ oltrecsd.com, 1 oluchiedmundmusic.com, 1 oludeniz.tk, 1 -olustvere.edu.ee, 1 olxa.tk, 1 olxdir.tk, 1 olyfed.com, 1 @@ -110008,7 +109328,6 @@ olympic-lodge.com, 1 olympic-research.com, 1 olympicfitness.com.mx, 1 -olympiclodge.com, 1 olympiclodgebyayres.com, 1 olympicreporting.com, 1 olympionici.cz, 1 @@ -110090,11 +109409,11 @@ omid16b.com, 1 omidfan.ir, 0 omiltem.net, 1 -omintmais.azurewebsites.net, 0 +omind.ai, 1 omipicon.io, 1 omkarpathak.in, 1 omlpar.gov, 1 -omm.com, 1 +ommaroo.com, 1 omn.cc, 1 omne.foundation, 1 omnel.ml, 1 @@ -110195,6 +109514,7 @@ onaccount.co.nz, 1 onai.es, 1 onairshop.fr, 1 +onalpleksi.com, 1 onatech.com.ph, 1 onavstack.net, 1 onawaymi.com, 1 @@ -110224,7 +109544,6 @@ ondeck.com.au, 1 ondemandassociate.com, 1 onderka.com, 1 -onderneembaar.nl, 1 ondernemenindenbosch.nl, 1 ondernemeninshertogenbosch.nl, 1 onderzoeksraad.nl, 1 @@ -110236,6 +109555,7 @@ ondrakutil.cz, 1 ondrej.org, 1 ondrejvasicek.cz, 1 +one-acleaning.com, 0 one-clue.com, 1 one-cozmic.com, 1 one-dot.de, 1 @@ -110252,6 +109572,7 @@ oneai.eu, 1 oneancienthope.com, 1 oneandfree.org.au, 1 +oneapi.work, 1 onebanc.ai, 1 onebelo.tk, 1 onebigcow.com, 1 @@ -110344,6 +109665,7 @@ oneononeonone.de, 1 oneononeonone.tv, 1 oneontahighalumni.org, 1 +onepayroll.com, 1 onepeloton.ca, 0 onepeloton.co.uk, 0 onepeloton.com, 0 @@ -110414,6 +109736,7 @@ ong.ng, 1 ong.or.at, 1 ongao.top, 1 +ongconseil.org, 1 ongelukvandaag.nl, 1 ongewenstretour.nl, 1 ongiaenegogoa.com, 1 @@ -110427,12 +109750,10 @@ oni-test.nl, 1 oni.nl, 1 onibolt.com, 1 -onice.ch, 1 onicore.cf, 1 onidesign.tk, 1 onihidden.net, 1 onimaodonto.com.br, 1 -onimpuls.de, 1 oninpresento.ga, 1 onion.net.eu.org, 1 onionbot.ga, 1 @@ -110515,7 +109836,7 @@ onlinecashloanz.com, 0 onlinecasino.amsterdam, 1 onlinecasinoerdk.com, 1 -onlinecasinofriend.com, 0 +onlinecasinofriend.com, 1 onlinecasinoground.nl, 1 onlinecasinoknowhow.com, 1 onlinecasinoselite.org, 1 @@ -110526,7 +109847,6 @@ onlinechallenge.nl, 1 onlinecollegeessay.com, 1 onlinecosmeticsstore.tk, 1 -onlinecounselingprograms.com, 1 onlinecrafts.tk, 1 onlinecredite.ro, 1 onlinedapoxetina.gq, 1 @@ -110548,10 +109868,12 @@ onlinehashfollow.com, 1 onlinehsa.com, 1 onlinehypermarket.ru, 1 +onlineindia.tech, 1 onlineinfo.freesite.host, 1 onlineinfographic.com, 1 onlineinsurancetips.ga, 1 onlinejobs.ga, 1 +onlinejourno.com, 1 onlinekansspel.cf, 1 onlinekansspel.tk, 1 onlinekasino.de, 1 @@ -110566,11 +109888,11 @@ onlinemarketingmuscle.com, 1 onlinemarketingtraining.co.uk, 1 onlinembapage.com, 1 -onlinemswprograms.com, 1 onlinenewspaperclassifieds.com, 1 onlineordersnow.com, 1 onlinepay.tk, 1 onlinepaydayloans365.tk, 1 +onlinepersonaltrainer.net.au, 1 onlineplay.ml, 1 onlinepokieau.net, 1 onlinepokies.me, 1 @@ -110584,12 +109906,9 @@ onlinescams.uk, 1 onlineschipaanpak.nl, 1 onlinesearningstips.ga, 1 -onlineseminar.com, 1 onlineseminar.es, 1 -onlineseminar.nl, 1 onlineservisprogrami.com, 1 onlineshopsatkhira.tk, 1 -onlinesim.com, 1 onlinesitereviews.com, 1 onlinesloten.nl, 1 onlinesorusor.cf, 1 @@ -110597,7 +109916,6 @@ onlinesports.cf, 1 onlinesports.tk, 1 onlinestatic.net, 0 -onlinestoresite.com.au, 1 onlinestudyhub.com, 1 onlinesudoku.tk, 1 onlinesystem.jp, 1 @@ -110651,7 +109969,6 @@ onlytarts.com, 1 onlyu.eu, 1 onlyveg.tk, 1 -onlyvintagewatches.com, 1 onlyvips.club, 1 onmaps.de, 1 onmaru.com, 1 @@ -110661,6 +109978,7 @@ onnee.ch, 1 onnia.ai, 1 ono.ac.il, 1 +onoff.vn, 1 onohawaiianbbq.com, 1 onondaga.gov, 1 ononoki.org, 1 @@ -110715,7 +110033,7 @@ onthemend.com, 1 onthesocials.com.au, 1 onthisday.com, 1 -ontimeemergencyroadsideandbatteryservice.com, 1 +ontimeemergencyroadsideandbatteryservice.com, 0 ontogenese.net, 1 ontopoflove.nl, 1 ontora.ee, 1 @@ -110787,7 +110105,6 @@ oosolutions.nl, 1 oostendevooranker.be, 0 oot.rs, 1 -ootoolkit.us, 1 op3racional.eu, 1 opaatct.com, 1 opaco.tk, 1 @@ -110839,10 +110156,9 @@ open-sauce-recipes.co.uk, 1 open-source.gr, 1 open-spending.eu, 1 -open-systems.com, 1 +open-systems.com, 0 open-work.space, 1 -open-xchange.com, 1 -open.ch, 1 +open.ch, 0 open.film, 1 open.my.id, 1 openaccess.nz, 1 @@ -111014,6 +110330,7 @@ operahedeland.dk, 1 operamrhein.de, 1 operanavigation.ro, 1 +operans.ai, 1 operatic.gq, 1 operation.de, 1 operationhomefront.org, 1 @@ -111031,7 +110348,6 @@ operebem.com.br, 1 operette-beinwil.ch, 1 operhive.com, 1 -opernball.com, 1 operweave.com, 1 opforintel.com, 1 opgani7.info, 1 @@ -111067,11 +110383,11 @@ oplata-vklike.tk, 1 oplata.uz, 1 oplium.com, 0 +oplop.appspot.com, 1 opm.gov, 1 opmaakonderscheidingen.nl, 1 opnx.dk, 1 opnxng.com, 1 -opomec.com, 1 opop.cz, 1 opopulechki.tk, 1 oporaua.org, 1 @@ -111100,7 +110416,6 @@ oppostore.co.uk, 1 oppoweb.ml, 1 oppress.life, 1 -oppressed.news, 1 oppstartslos.no, 1 oppwa.com, 1 opq.pw, 1 @@ -111136,8 +110451,6 @@ opswat.com, 1 opswill.com, 1 optalysys.com, 1 -opteamax.de, 1 -opteamax.eu, 1 optenhoefel.de, 1 optgo.com.ua, 1 opti-net.at, 1 @@ -111161,7 +110474,6 @@ optik-trosdorff.de, 1 optikabane.com, 0 optikflow.com, 1 -optikoscolombia.com, 1 optilan.tk, 1 optimabus.com, 1 optimakers.pl, 1 @@ -111215,6 +110527,7 @@ optimusprime.pl, 1 optinf.ca, 1 optinf.com, 1 +options-strategies.com, 1 optionsfund.cn, 1 optionskredit.ag, 1 optionskredit.biz, 1 @@ -111225,8 +110538,6 @@ optionskredit.org, 1 optionsloop.com, 1 optionstraderjourney.com, 1 -optipunt.com, 1 -optique-morice.com, 1 optisell.ga, 1 optmos.at, 1 optoconn.com, 1 @@ -111240,7 +110551,6 @@ optru.eu.org, 1 optrust.com, 1 optumsecurity.com, 1 -opture.ch, 1 optymyze.com, 1 opulentdivision.com, 0 opus-codium.fr, 1 @@ -111287,6 +110597,7 @@ orangeappalam.com, 1 orangecarrier.com, 1 orangecityfl.gov, 1 +orangecloud.report, 1 orangecorners.com, 1 orangefinanse.com.pl, 1 orangehome.ga, 1 @@ -111309,7 +110620,7 @@ orangeshop.ee, 1 orangesmile.com, 1 orangesnowman.com, 1 -orangesquash.org.uk, 0 +orangesquash.org.uk, 1 orangesquirrelevents.co.uk, 1 orangetexas.gov, 1 orangetrialtech.com, 1 @@ -111356,7 +110667,6 @@ orcasecurity.io, 1 orchardnh.org, 1 orchardpure.com, 1 -orchestra-ppm.io, 1 orchestra.tk, 1 orchestremetropolitain.com, 1 orchidee-mariage.com, 1 @@ -111423,7 +110733,6 @@ oregonpasturenetwork.org, 1 oregonstatetreasury.gov, 1 oregonstudentaid.gov, 1 -oregontitlesearch.com, 1 orel-city.ml, 1 orel-news.net, 1 orel-sait.tk, 1 @@ -111479,6 +110788,7 @@ organo.pk, 1 organspende-register.de, 1 orgasmium.com, 1 +orgasmos.com, 1 orged.de, 1 orgsyn.in, 1 orgtech.ga, 1 @@ -111499,7 +110809,6 @@ orientprive.com, 1 oriflamesamara.tk, 1 oriflameszepsegkozpont.hu, 1 -orifonline.ro, 0 origamiii.me, 1 origamiking.wiki, 1 origemtemperos.com.br, 1 @@ -111512,7 +110821,6 @@ originalabsinthe.com, 1 originalblackfilms.ga, 1 originalescaro.tk, 1 -originalmamaspizza.com, 1 originalmusicstream.tk, 1 originalpharmacygrup.ml, 1 originalreading.com, 1 @@ -111541,12 +110849,12 @@ orion180.com, 1 orioneclipse.com, 1 orionelement.com, 1 +orionfinancialservices.com, 1 oriongames.eu, 1 orionhermeticinterventions.com, 1 orionintel.es, 1 orionlab.com.br, 1 oris.design, 1 -oris.edu.ee, 1 orisline.com, 1 oritain.com, 1 oriveda.com, 1 @@ -111570,6 +110878,7 @@ orleansiowa.gov, 1 orleika.ml, 1 orlowisko.pl, 1 +ormeaupersonaltrainers.com, 1 ormondcatclinic.com, 1 ormsson.is, 1 ornc.org, 1 @@ -111625,7 +110934,6 @@ orthopedicsalon.tk, 1 orthoquest.ca, 1 orthotrafficest.ga, 1 -orthotrain.de, 1 ortiatuttogas.it, 1 ortigasmalls.com, 1 ortigueira.ga, 1 @@ -111730,12 +111038,11 @@ osdforum.org, 1 osdgen.com, 1 osdls.gov, 1 -osduforum.org, 1 ose49.fr, 1 oseido.tk, 1 osepideasthatwork.org, 1 osereso.tn, 1 -oserver.click, 1 +oserver.click, 0 oses.mobi, 1 osetia.tk, 1 osetinskie-pirogi.ga, 1 @@ -111765,10 +111072,9 @@ osintcat.net, 1 osioptoelectronics.com, 1 osipenko.ua, 1 -osiris-ai.co.uk, 1 +osiris-ai.co.uk, 0 osirisrising.tk, 1 osirisrp.online, 1 -osirium.com, 1 osiriz.xyz, 1 oskargajcowski.pl, 1 oskarkopra.fi, 1 @@ -111798,10 +111104,12 @@ osmosis-inversa.online, 1 osmre.gov, 1 osmt.cc, 1 -osneycapital.com, 1 +osmthfrance.fr, 1 osnova.cz, 1 osnovazabor.ru, 1 osobniterapeutka.cz, 1 +osobnitreneriplzen.cz, 1 +osobnitrenerivpraze.cz, 1 osobnyak.tk, 1 osohq.com, 1 osolutionscorp.com, 1 @@ -111906,6 +111214,7 @@ otherkinforum.com, 1 otherwise.tk, 1 othrys.net, 1 +oticasriopreto.com.br, 1 oticasvisao.net.br, 1 otima.digital, 1 otimismoemrede.tk, 1 @@ -111913,6 +111222,7 @@ otinane.eu, 1 otiocafes.com, 1 otipax.ru, 1 +otiumplan.ca, 1 otkm-stuttgart.tk, 1 otman.ai, 1 otng.us, 1 @@ -111976,7 +111286,6 @@ otya.me, 1 ouaibe.qc.ca, 1 ouaie.be, 1 -ouaisetalors.fr, 1 ouattara.ch, 1 oudemuziek.nl, 1 ouders-uit-elkaar.nl, 1 @@ -111992,7 +111301,7 @@ oujj.link, 1 ouldlamara.tk, 1 oulmes.ma, 1 -oulunjujutsu.com, 1 +oulunjujutsu.com, 0 ouminews.net, 1 oumlaut.net, 1 oumsnatch.com, 1 @@ -112010,6 +111319,7 @@ ourcloud.at, 1 ourcodinglives.com, 1 ourcomeback.gov.au, 1 +ourcommons.co, 1 ourcreolesoul.com, 1 ourcybercommunity.com, 1 ourdocuments.gov, 1 @@ -112034,7 +111344,6 @@ ourocg.cn, 1 ourodaestrela.pt, 1 ouroestrela.pt, 1 -ouroh2.com, 1 ouronyx.com, 0 ouropal.com, 1 ourplan.ch, 1 @@ -112093,7 +111402,6 @@ outilsfroids.net, 1 outincanberra.com.au, 1 outinnationalsecurity.org, 1 -outland.club, 1 outlaw-star.tk, 1 outletcity.bg, 1 outletstoresmalls.com, 1 @@ -112134,7 +111442,7 @@ ovalle.tk, 1 ovallevirtual.tk, 1 ovarit.rip, 1 -ovarixia.fr, 1 +ovarixia.fr, 0 ovasys.eu, 1 ovationhand.com, 0 ovaz.gov, 1 @@ -112213,7 +111521,6 @@ oviasport.com, 1 ovidro.pt, 0 oviser.ml, 1 -ovisito.com, 1 ovisy.com, 1 ovladim.az, 1 ovmgroup.eu, 1 @@ -112235,6 +111542,7 @@ ovvy.net, 0 ow.gr, 1 ow.ls, 1 +owater.fr, 1 owater.org, 1 owatonna.gov, 1 owatonnagrows.gov, 1 @@ -112282,7 +111590,6 @@ owncloud.com, 1 ownerbusiness.org, 1 ownerinspections.com.au, 1 -ownhost.com, 1 ownhosting.cloud, 1 ownhosting.de, 1 owningless.fr, 1 @@ -112291,7 +111598,7 @@ ownsky.com, 1 ownsport.fr, 1 owntips.ml, 1 -owntournament.org, 1 +ownyourdemand.com, 1 ownyourfamily.com, 1 owo.rs, 1 owo.vn, 1 @@ -112334,6 +111641,7 @@ oxidecomputer.social, 1 oxidized.org, 1 oxigenica.com, 1 +oxigenio.com, 1 oxigenoinformatica.tk, 1 oximedia.ga, 1 oximoron.tk, 1 @@ -112348,7 +111656,7 @@ oxos.com, 1 oxotscovid.com, 1 oxq.io, 1 -oxsyntax.io, 1 +oxsyntax.io, 0 oxt.co, 1 oxxengarde.de, 1 oxydac.com, 1 @@ -112403,7 +111711,6 @@ ozawadental.com, 1 ozaymotor.com, 1 ozbasdemir.com, 1 -ozbekistanhavayolu.com.tr, 1 ozbolt.eu, 1 ozcare.org.au, 1 ozcreatives.tech, 1 @@ -112417,7 +111724,6 @@ ozelmarmaratip.com, 1 ozemsec.com.br, 1 ozero-kardyvach.ru, 1 -ozgesezen.com, 1 ozgoz.com, 1 ozgpp.de, 1 ozgur.ca, 1 @@ -112448,6 +111754,7 @@ ozvoip.net, 1 ozvolvo.org, 1 ozyurttesisat.com, 1 +ozzmoo.com, 1 ozzyfant.de, 1 p-art.design, 1 p-e-g.org, 1 @@ -112482,10 +111789,8 @@ p2ply.org, 1 p2pool.observer, 1 p30mororgar.ir, 1 -p333b.net, 1 p333e.net, 1 p333j.net, 0 -p35consulting.com, 1 p36533.com, 1 p4.pm, 1 p4c-admin.azurewebsites.net, 1 @@ -112522,6 +111827,7 @@ paaseiland.org, 1 paaspasst.de, 1 paass.net, 0 +paavo.ee, 1 paazmaya.fi, 1 pablikado.cz, 1 pablo-serrano.com, 0 @@ -112548,7 +111854,7 @@ pabloarteaga.uk, 1 pabloarteaga.xyz, 1 pablocamino.tk, 1 -pablocelorio.com, 1 +pablocano.es, 1 pablofain.com, 0 pablofonta.es, 1 pablogracia.es, 1 @@ -112688,7 +111994,6 @@ padujob.com, 1 padujobs.com, 1 padujokes.com, 1 -padunetwork.com, 1 paduplace.com, 1 paduserver.com, 1 paduserver.de, 1 @@ -112723,7 +112028,7 @@ paganistisch-forum.tk, 1 pagarpanel.xyz, 1 pagatuarriendo.cl, 1 -pagbem.com.br, 1 +pagbem.com.br, 0 pagbitcoin.com, 1 page, 1 page-engine.tk, 1 @@ -112733,8 +112038,10 @@ pageboard.io, 1 pagebuilderaddons.com, 1 pagecrafter.com, 1 +pagecrawl.io, 1 pagedesignpro.com, 1 pagedesignshop.com, 0 +pageduo.ai, 1 pagefoundry.de, 1 pagefulloflies.io, 1 pagehost.one, 1 @@ -112742,7 +112049,6 @@ pagenews.tk, 1 pagenstedt.de, 1 pageonstage.at, 1 -pagerankkings.com, 1 pagerduty.com, 1 pageroonline.com, 1 pages-tocaven.com, 1 @@ -112777,7 +112083,6 @@ pahui.ml, 1 pahuudenanatomia.fi, 0 paid.tools, 1 -paide.edu.ee, 1 paidsurveys.tk, 1 paidtocode.com, 1 paidtodesign.com, 1 @@ -112793,7 +112098,7 @@ painefamily.co.uk, 1 painesvillemunicipalcourt-ohio.gov, 1 painful.fun, 1 -painkiller-tech.com, 1 +painkiller-tech.com, 0 painprep.com, 1 paint-it.pink, 1 paint4.life, 1 @@ -112811,9 +112116,11 @@ paintpaina.com, 1 paintstaintt.com, 1 paio2-rec.com, 1 +paipresentebrinquedos.com.br, 1 paipuman.jp, 1 paireepinart.com, 1 pairsclassifiedads.tk, 1 +pairuk.org, 1 paisa-dev.azurewebsites.net, 1 paisagia.com, 1 paisagia.com.br, 1 @@ -112873,7 +112180,7 @@ palamaailmalta.fi, 1 palant.info, 1 palantir.com, 1 -palatin.at, 1 +palatin.at, 0 palatineil.gov, 1 palationtrade.com, 1 palatofrisco.com, 1 @@ -112997,6 +112304,7 @@ panamacitypolice.gov, 1 panamatravel.tk, 1 panamatrippin.com, 1 +panamerachauffeurs.com, 1 panangelium.tk, 1 panasca.is, 1 panascais.at, 1 @@ -113037,7 +112345,6 @@ panda-lang.net, 1 panda-life.tk, 1 panda.tf, 1 -pandababy.bg, 1 pandacard.org, 1 pandacbd.com, 1 pandadoc.com, 1 @@ -113049,10 +112356,9 @@ pandamoto.fr, 1 pandaplanes.com, 1 pandapsy.com, 1 +pandaren.org, 1 pandascrow.io, 1 pandasilk.com, 1 -pandavpn.pro, 1 -pandavpnpro.com, 1 pandelys.tk, 1 pandemicflu.gov, 1 pandemicoversight.gov, 1 @@ -113071,7 +112377,7 @@ pandorarox.com, 1 pandorawiki.org, 1 pandorum.cf, 1 -pandos.pl, 1 +pandos.pl, 0 panduan-hamil.tk, 1 pandymic.com, 1 pandys.org, 1 @@ -113116,7 +112422,6 @@ panjiva.com, 1 pankiewiczlaw.com, 1 pankoff.net, 1 -panmill.xyz, 1 panmourovaty.cz, 1 panmuseum.gr, 1 panna-blues.tk, 1 @@ -113124,7 +112429,6 @@ pannellisolari.roma.it, 1 panneton.net, 1 panodprodukcjimuzycznej.pl, 1 -panop.io, 1 panopterra.com, 1 panoptic.in, 1 panoramacambios.com, 1 @@ -113154,7 +112458,6 @@ panthenolplus.co.uk, 1 panthenolplus.com, 1 pantherage.co.uk, 1 -pantherauto.no, 1 pantherxrare.com, 1 panthi.lk, 1 pantingly.tk, 1 @@ -113168,7 +112471,6 @@ pantuflas.tk, 1 pantypit.com, 1 pantzr.nl, 1 -panwchi.com, 1 panyajt.in.th, 1 panzdravi.cz, 1 panzer72.ru, 1 @@ -113194,10 +112496,9 @@ papadoccaffe.pt, 1 papago-taiwan.com, 1 papaimama.ru, 1 -papaisoft.com, 1 +papaisoft.com, 0 papajohns.com.ec, 1 papajohns.jo, 1 -papakarlohas.ru, 1 papakarlotools.ru, 1 papakatsu-life.com, 1 papapa-members.club, 1 @@ -113243,6 +112544,7 @@ papotage.net, 1 papouille.ml, 1 pappacoda.it, 1 +pappardellesitalianrestaurant.com.au, 1 pappasappar.se, 1 pappu.tk, 1 pappys.kitchen, 1 @@ -113283,7 +112585,6 @@ paradisetownshipmi.gov, 1 paradisim.tk, 1 paradisu.fr, 1 -paradoxdesigns.org, 1 paradoxhotels.com, 1 paradoxium.ml, 1 paradymecompanies.com, 0 @@ -113365,7 +112666,6 @@ parejaideal.es, 1 parelectric.com, 1 paremedical.au, 1 -paremvasi.net, 1 parentassociation.com.au, 1 parenteimoveis.com.br, 1 parenthaven.com, 1 @@ -113389,7 +112689,6 @@ parfumi.tk, 1 parfumtester-100.ml, 1 parhoonshop.com, 1 -pari-match.in, 1 pari-vinci.org, 1 pari.cafe, 1 pari.cz, 1 @@ -113404,13 +112703,11 @@ parimatch-sport.com, 1 parimatch-sports.com, 1 parimatch.co.tz, 1 -parimatch.com, 1 parimatch.in, 1 parimatchsports.com, 1 parimatchtop.com, 1 parina.vn, 1 pario.li, 1 -pariopay.com, 1 paripesa.com, 1 paripesa.ng, 1 paris-avenues.com, 1 @@ -113428,6 +112725,7 @@ parisdomino.tk, 1 parisereporters.com, 1 parishofcove.org.uk, 1 +parishofsjbolgc.org, 1 parishoftheholycross.org, 1 parishome.jp, 1 parismalleg.com, 1 @@ -113437,7 +112735,7 @@ pariu.online, 1 parizhanka.tk, 1 park.gd, 1 -parkable.com, 1 +parkable.com, 0 parkackermann.com, 1 parkairecrossing.com, 1 parkandridecityofnewcastle.com.au, 1 @@ -113514,6 +112812,8 @@ parkwhiz.com, 1 parlament.cf, 1 parlamento.gub.uy, 1 +parlanchines.com, 1 +parlays.live, 1 parleamonluc.fr, 1 parleu2016.nl, 1 parleu2017.ee, 1 @@ -113537,7 +112837,6 @@ paronubi.com, 1 parool.nl, 1 parorrey.com, 1 -parosvoyages.gr, 1 parovozov.ga, 1 paroxetine.gq, 1 parperfeito.pt, 1 @@ -113548,6 +112847,7 @@ parquettista.milano.it, 1 parquettista.roma.it, 1 parquettisti.roma.it, 1 +parrain.com, 1 parratennis.com.au, 1 parriswakefield.com, 1 parrocchiadimeana.tk, 1 @@ -113559,6 +112859,7 @@ parsdev.com, 0 parsec.app, 1 parsemail.org, 1 +parsemeet.com, 1 parsepipe.com, 1 parser.name, 1 parser.nu, 1 @@ -113570,6 +112871,7 @@ parsonsfamilyhomes.com, 1 parsonspdks.gov, 1 parsuv.ir, 1 +part-recovery.com, 1 parta.io, 1 partadvantage.com, 1 partage.ovh, 1 @@ -113660,7 +112962,6 @@ partyphoto.tk, 1 partyrocksbounce.co.uk, 1 partyschnaps.com, 1 -partyshop.ge, 1 partyshowlatam.com, 1 partysoundandlighthire.co.uk, 1 partytime-uk.co.uk, 1 @@ -113669,7 +112970,7 @@ partyyy.io, 1 partyzone.ie, 1 paru-design.com, 1 -parupu.com, 1 +parvalorem.pt, 1 parxanalytics.com, 1 parxsolutions.com, 1 parys.org, 1 @@ -113686,7 +112987,6 @@ pascal-ua.tk, 1 pascal-wittmann.de, 1 pascalgames.tk, 1 -pascalhargarter.de, 0 pascalleguern.com, 1 pascalmenuiserie.fr, 1 paschmid.ch, 1 @@ -113715,6 +113015,7 @@ passandsecure.fr, 1 passau-webdesign.com, 1 passbolt.com, 1 +passburn.com, 1 passedport.eu, 1 passedport.net, 1 passedport.org, 1 @@ -113773,7 +113074,6 @@ passwordsapp.org, 1 passwordscon.com, 1 passwordsecurity.info, 1 -passwordsecuritycenter.com, 0 passwordsheeters.ga, 1 passwordsheetest.ga, 1 passwordsleakcheck-pa.googleapis.com, 1 @@ -113790,6 +113090,8 @@ pasteanon.com, 1 pastebin.bet, 1 pasteblin.com, 1 +pastecmd.com, 1 +pastecommand.com, 1 pasteht.ml, 1 pasteleriaflomar.es, 1 pasterial.hopto.org, 1 @@ -113830,9 +113132,7 @@ pataua.kiwi, 1 patchassociates.com, 1 patchli.fr, 1 -patchofabsence.com, 1 patchpulse.org, 1 -patchstack.com, 1 patchyvideo.com, 1 patdorf.com, 1 patechmasters.com, 1 @@ -113884,7 +113184,6 @@ patlis.com, 1 patmanx.tk, 1 patna-pomosht.eu, 1 -pato114.com, 1 patorganiser.co.uk, 1 patorganiser.com, 1 patorganiser.com.au, 1 @@ -113921,7 +113220,6 @@ patrickhoving.nl, 1 patrickjosephdailey.com, 1 patrickkaminski.com, 1 -patrickmahaffy.com, 0 patrickpeeters.com, 1 patrickryanturner.com, 1 patrickveluwenkamp.com, 1 @@ -113933,10 +113231,8 @@ patrikx3.com, 1 patrimoine-neuwiller.fr, 0 patrimon.ai, 1 -patrimoniumtouraine.com, 1 patriotbearingsupply.com, 1 patriotcs.tk, 1 -patriotinsurancebrokers.com, 0 patriotlandscapesupply.com, 1 patriotleague.org, 1 patriotlicense.org, 1 @@ -113961,9 +113257,9 @@ pattevegan.com, 1 pattiblair.com, 1 pattoes.ga, 1 -pattyboobs.net, 1 pattyliao.com, 1 pau.fr, 1 +paubarrena.com, 1 pauct.com, 1 paudley.ca, 1 paudley.org, 1 @@ -114073,7 +113369,6 @@ pavelich.ca, 1 pavelich.com, 1 pavelitus.tk, 1 -pavelkawellness.com, 1 pavelrebrov.com, 1 pavelstriz.cz, 1 pavementpr.com, 1 @@ -114119,7 +113414,6 @@ pawproject.org, 1 pawserv.pw, 0 pawsitiv.space, 1 -pawslog.org, 1 pawson.tk, 1 pawsru.org, 1 pawtraitcaptures.com.au, 1 @@ -114128,52 +113422,33 @@ paxerahealth.com, 1 paxhouse.net, 1 paxwinkel.nl, 1 -pay.accountant, 1 -pay.apartments, 1 -pay.basketball, 1 pay.bike, 1 -pay.business, 1 -pay.catering, 1 -pay.cleaning, 1 pay.codes, 1 pay.com.au, 1 -pay.condos, 1 pay.construction, 1 pay.consulting, 1 pay.contractors, 1 -pay.dance, 1 pay.dental, 1 -pay.dentist, 1 -pay.dog, 1 pay.energy, 1 pay.equipment, 1 -pay.faith, 1 pay.fitness, 1 -pay.football, 1 pay.gallery, 1 pay.gifts, 1 pay.gov, 0 -pay.hockey, 1 pay.hospital, 1 -pay.insure, 1 pay.jewelry, 1 pay.kitchen, 1 pay.lawyer, 1 pay.luxury, 1 pay.marketing, 1 pay.parts, 1 -pay.photography, 1 pay.photos, 1 pay.pizza, 1 pay.plumbing, 1 -pay.rent, 1 pay.repair, 1 -pay.report, 1 pay.sb, 1 pay.school, 1 pay.ski, 1 -pay.storage, 1 -pay.surf, 1 pay.taipei, 1 pay.technology, 1 pay.tennis, 1 @@ -114204,6 +113479,7 @@ paycomdfw.com, 0 paycomonline.com, 0 paycrest.io, 0 +payday.vip, 1 paydollar.com, 1 paye.net, 0 payeasy.tech, 1 @@ -114213,6 +113489,7 @@ payforpeople.nl, 1 payforplaynevada.com, 1 paygears.com, 1 +paygosatis.com, 1 payground.com, 1 paygvpn.com, 1 payhub.jp, 1 @@ -114320,7 +113597,6 @@ pb.ax, 0 pbaby.com, 1 pback.se, 1 -pband.ch, 1 pbbm.com.ph, 1 pbc.gov, 1 pbcables.tk, 1 @@ -114333,6 +113609,7 @@ pbforestry.net, 1 pbgfl.gov, 1 pbgroup.hu, 1 +pbh-btn.com, 1 pbhs.co.uk, 1 pbiexplorer.com, 1 pbla.biz, 1 @@ -114451,9 +113728,9 @@ pcsafe.cf, 1 pcsbrasil.ml, 1 pcscotus.gov, 1 +pcserein.fr, 1 pcservice.slask.pl, 1 pcsetting.com, 1 -pcsoft.fr, 1 pcsolutionsofwillis.ga, 1 pcsolutionsofwillis.gq, 1 pcstoronto.ca, 0 @@ -114479,6 +113756,7 @@ pcwdevtwebsite.azurewebsites.net, 1 pcweb.info, 1 pcwshop.hu, 1 +pd-ing.com, 1 pd1rnt.nl, 1 pdamerica.org, 1 pdau.edu.ua, 1 @@ -114494,7 +113772,7 @@ pdf-tool.fr, 1 pdf.io, 1 pdf4me.com, 1 -pdf4pro.com, 1 +pdfbadger.com, 1 pdfbear.com, 1 pdfbook-dl.ml, 1 pdfbooksonline.gq, 1 @@ -114515,6 +113793,7 @@ pdihc.com, 1 pdiomede.com, 1 pdkrawczyk.com, 1 +pdlozano.com, 1 pdmonroewi.gov, 1 pdox.net, 1 pdpa.ai, 1 @@ -114523,6 +113802,7 @@ pdsk.ch, 1 pdtech.ltd, 1 pdtppfl.gov, 1 +pdv-expert.com, 1 pdvault.co, 1 pdvconstru.com.br, 1 pdxcoinclub.org, 1 @@ -114592,7 +113872,6 @@ pebkac.gr, 0 peblet.be, 1 pebook.tk, 1 -pebuu.com, 1 pec-email.com, 1 pec.net, 1 pecadis.de, 1 @@ -114693,6 +113972,7 @@ peers.cloud, 1 peers.gq, 1 peers.tk, 1 +peerspot.com, 1 peersquaders.ga, 1 peersquadest.ga, 1 peerview.com, 1 @@ -114719,6 +113999,7 @@ peihouston.com, 1 peippo.at, 1 peirong.me, 1 +pejabat.id, 1 pejetroperformance.com.br, 0 pejupiel.com, 1 pekarnasazava.cz, 1 @@ -114751,8 +114032,8 @@ pelicancontainers.com, 1 pelicanconveyancing.co.uk, 1 pelicanottertailmn.gov, 1 -pelicanparty.games, 1 pelicans.tk, 1 +pelicanunderground.com, 1 peliculaonline.tk, 1 peliculaslatino.tk, 1 pelikone.fi, 1 @@ -114768,17 +114049,20 @@ pelmeniuralskie.tk, 1 pelo.tk, 1 pelopoplot.com, 0 -pelosanimais.org, 1 peloton-technologies.com, 1 pelsu.fi, 1 peluche-animaux.fr, 1 peluche.tk, 1 peluqueriacanina.tk, 1 peluqueriacaninacavecanem.es, 1 +pelvicfloor-physio.com.au, 1 +pelvicfloorphysio.net.au, 1 pemagear.com, 1 pemagrid.org, 1 pemangkin.my, 1 +pemantauankelas.my.id, 1 pemasalem.com, 1 +pembiayaanbpkb.com, 1 pembinewi.gov, 1 pemborongbangunan.id, 1 pembrokenc.gov, 1 @@ -114820,6 +114104,7 @@ penguingogo.com, 1 penguinos.tk, 1 penguinrandomhousegrupoeditorial.com, 1 +penguins.ca, 1 penguinshome.tk, 1 penguinvillage.info, 1 penholder.ga, 1 @@ -114831,9 +114116,6 @@ pennergold.net, 1 pennhillspa.gov, 1 pennsauken.gov, 1 -pennsbury.pa.us, 1 -pennsylvaniasolarinitiative.com, 1 -pennsylvaniatitlesearch.com, 1 penny.at, 1 penny.cz, 1 penny.it, 1 @@ -114856,7 +114138,6 @@ penpalworld.com, 1 penril.net, 1 penrite.pl, 1 -penrose.edu, 1 pens-money.cf, 1 pens-money.ga, 1 pens-money.gq, 1 @@ -114891,6 +114172,7 @@ pensiunealido.ro, 1 pensumvirtual.tech, 1 pentagon-area.tk, 1 +pentagon-group.co.uk, 1 pentagram.cf, 1 pentagram.me, 1 pentagrid.ch, 1 @@ -114984,6 +114266,7 @@ peplex.ddns.net, 1 peplex.nl, 1 peppelmedi.fi, 1 +pepperoni.tatar, 1 peppertalks.com, 1 pepperydance.top, 1 pepsi.investments, 1 @@ -114997,7 +114280,6 @@ pequenosbichos.com.br, 1 pequenosfavoritos.com.br, 0 per-olsson.se, 1 -perala.me, 1 peraparker.cz, 1 perberestja.gq, 1 perceptive.pro, 1 @@ -115047,7 +114329,6 @@ perfect8.com.tw, 1 perfectaparasols.com, 1 perfectbalance.tech, 1 -perfectbitches.com, 1 perfectcommunity.ga, 1 perfecteclass.com.cy, 1 perfectfocuseyecare.com, 1 @@ -115064,7 +114345,6 @@ perfectplrarticles.ga, 1 perfectpussypics.com, 1 perfectsize.pl, 1 -perfectskinstudio.co.uk, 1 perfectsoft.tk, 1 perfecttank.de, 1 perfecttimingtoday.com, 1 @@ -115126,7 +114406,6 @@ periscope.tv, 1 periscopeup.com, 1 perishablepress.com, 1 -peritaje.pro, 1 perkilo.eu, 1 perkinsplumbing.co.zw, 1 perks.ee, 1 @@ -115147,6 +114426,7 @@ permaculture.cf, 1 permaditya.my.id, 1 permagard.co.uk, 1 +permajack.com, 1 permajackstlouis.com, 1 permak.com.tr, 1 permak.tk, 1 @@ -115171,6 +114451,7 @@ permiscoderoute.fr, 1 permisecole.com, 1 permistheoriqueenligne.be, 1 +permitcontainerhomes.com, 1 permitting.gov, 1 permutationcity.net, 1 pernod-ricard.io, 1 @@ -115185,6 +114466,8 @@ perpetuum.tk, 1 perrau.lt, 0 perreiraproperties.com, 1 +perrier-larron.com, 1 +perrier-larron.fr, 1 perritas.tk, 1 perritos.tk, 1 perron.ml, 1 @@ -115206,12 +114489,11 @@ persey-ssm.com.ua, 1 persey.tk, 1 persian-clan.tk, 1 +persianaselegance.com, 1 persianasluxor.com.mx, 1 -persianasmodernasluxury.com, 1 persiandating.tk, 1 persianmassagetherapy.com, 1 persianrom.com, 1 -persianwithel.com, 1 persiart.shop, 1 persiennexperten.se, 1 persistence.one, 1 @@ -115242,14 +114524,29 @@ personalnames.net.ru, 1 personalpages.us, 1 personalstructures.com, 1 +personaltrainer-adelaide.com.au, 1 +personaltrainer-brisbane.com.au, 1 +personaltrainer-jobs.com.au, 1 +personaltrainer-melbourne.com.au, 1 +personaltrainer-nearme.com.au, 1 personaltrainer-senti.de, 1 +personaltrainer-sydney.com.au, 1 +personaltrainer-townsville.com.au, 1 +personaltrainerballarat.com.au, 1 +personaltrainerbendigo.com.au, 1 personaltrainercanberra.com.au, 1 +personaltrainercourse.com.au, 1 personaltrainerdarwin.com.au, 1 personaltraineressendon.com.au, 1 personaltrainergeelong.com.au, 1 personaltrainergoldcoast.com.au, 1 personaltrainerhobart.com.au, 1 +personaltrainerjobs.net.au, 1 +personaltrainernearme.au, 1 +personaltrainernewcastle.com.au, 1 personaltrainerportmelbourne.com.au, 1 +personaltrainersouthmelbourne.com.au, 1 +personaltrainerwollongong.com.au, 1 personaltransporter.es, 1 personalwebsite.services, 1 personcar.com.br, 1 @@ -115270,7 +114567,8 @@ persuasionmatters.com, 0 perthdayhospital.com.au, 1 perthhillsarmadale.com.au, 1 -perthpainspecialists.com.au, 0 +perthpainspecialists.com.au, 1 +perthpersonaltrainers.com, 1 perthshireholidaycottages.co.uk, 1 perthunicyclists.tk, 1 perthweekend.com.au, 1 @@ -115341,7 +114639,6 @@ pestpatrol.ga, 1 pestpilis.hu, 1 pestra.tk, 1 -pestridproducts.com, 1 pestwerkz.com.sg, 1 pet-cat-accessories.ml, 1 pet-distributor.cz, 1 @@ -115365,13 +114662,13 @@ petcareonline.com, 1 petcharte.ga, 1 petclassy.ga, 1 -petclaw.com, 1 petcle.com, 1 petclient.ga, 1 petco.com, 1 petcollections.ga, 1 petcollector.ga, 1 petcolor.ga, 1 +petcornerdubai.com, 1 petcounty.ga, 1 petcrawler.ga, 1 petdairy.com, 1 @@ -115464,7 +114761,6 @@ petitions.pro, 1 petitmaison.net, 1 petitnuagephotographie.be, 1 -petitsfrenchies.com, 1 petitu.mx, 1 petkiss.ga, 1 petknight.ga, 1 @@ -115516,7 +114812,6 @@ petroleum-schools.com, 1 petroleumservicecompany.com, 1 petroll.ga, 1 -petropoulos.ng, 1 petroscand.eu, 1 petrostathis.com, 0 petrotamin.ir, 1 @@ -115530,11 +114825,13 @@ pets4adoption.tk, 1 pets4life.com.au, 1 petsafe.net, 0 +petsales.net.au, 1 petsaze.com, 1 petscams.com, 1 petsdeners.ga, 1 petsdenest.ga, 1 petsfilled.us, 1 +petshopsorocaba.com.br, 1 petskb.com, 1 petsmartcorporate.com, 0 petsnapshot.ga, 1 @@ -115558,6 +114855,7 @@ pettravelindo.com, 1 pettreasure.ga, 1 pettreats.com.br, 1 +pettus.shop, 1 petunder.ga, 1 peturnashes.ga, 1 petutility.tk, 1 @@ -115582,6 +114880,7 @@ pexagontech.com, 1 peyote.org, 1 peyote.wiki, 1 +peytonwebster.com, 1 peyukoshop.com, 1 pf.dk, 1 pfa.or.jp, 1 @@ -115623,7 +114922,7 @@ pflanzen-shop.ch, 1 pflanzen-werkstatt.de, 1 pflege.ch, 1 -pflegedienst-stier.de, 1 +pflegedienst-stier.de, 0 pflegedienstadelina.de, 1 pfmeasure.com, 1 pfnpc.org, 1 @@ -115662,7 +114961,6 @@ pgmjr.com, 1 pgmsource.com, 1 pgmsp.net, 1 -pgmtechnologies.com, 1 pgnd.net, 1 pgnetwork.io, 1 pgnetwork.net, 1 @@ -115693,7 +114991,7 @@ phagyo.com, 1 phaidonbrand.com, 1 phalcon.com, 1 -phannuoc.net, 1 +phannuoc.net, 0 phantasia.tk, 1 phantasie.cc, 1 phantasmag.gq, 1 @@ -115732,6 +115030,7 @@ pharmalab.eu, 1 pharmalab.fr, 1 pharmapackages.com.pk, 1 +pharmaping.net, 1 pharmaplan.com, 1 pharmapolitics.com, 1 pharmasana.co.uk, 1 @@ -115809,6 +115108,7 @@ philinnon.net, 1 philip.im, 1 philipbuckmaster.co.uk, 1 +philipcullen.me.uk, 1 philipdb.com, 1 philipdb.nl, 1 philipdeussen.com, 1 @@ -115818,7 +115118,6 @@ philipkdick.tk, 1 philipkobelt.ch, 0 philiplowran.tk, 1 -philipmcaputo.com, 0 philipmordue.co.uk, 1 philipmorrisdirect.co.uk, 1 philipoff.com, 1 @@ -115903,6 +115202,7 @@ phoenix-correspondence-commission.gov, 1 phoenix-zug.ch, 1 phoenixadvisers.com, 1 +phoenixbins.com, 1 phoenixboard.tk, 1 phoenixcourt.gov, 1 phoenixdepositionservices.com, 1 @@ -115926,7 +115226,6 @@ phone-spy.ml, 1 phonedoc.it, 1 phonefilter.co.uk, 1 -phonefleet.fr, 1 phoneia.com, 1 phoneincentivesers.ga, 1 phoneincentivesest.ga, 1 @@ -115954,7 +115253,6 @@ phonetrack.tk, 1 phonetracker.pro, 1 phonex.bg, 1 -phonex.com.mx, 1 phoneyourselfers.ga, 1 phoneyourselfest.ga, 1 phonicarecords.com, 1 @@ -116024,7 +115322,6 @@ photonics.bg, 1 photonis.com, 1 photonmatters.com, 1 -photonsensor.com, 1 photonsphere.org, 1 photopalace.tk, 1 photophobia.tk, 1 @@ -116057,7 +115354,6 @@ photune.net, 1 phoxden.net, 1 php.watch, 1 -php8developer.com, 1 phpadmin666.com, 1 phpbb-tutorials.cf, 1 phpcraft.de, 1 @@ -116069,7 +115365,6 @@ phpkoru.com, 1 phpliteadmin.org, 1 phpmyadmin.net, 1 -phpmyfaq.com, 1 phpmynewsletter.com, 1 phpnuke-guatemala.tk, 1 phpprime.com, 1 @@ -116093,6 +115388,7 @@ phrlegal.com, 1 phro.love, 1 phronesis.net, 1 +phronimalabs.com, 1 phruse.com, 1 phryanjr.com, 0 phryneas.de, 1 @@ -116151,11 +115447,12 @@ physiobalance.nl, 1 physiobrite.tk, 1 physioclinickenya.com, 1 +physiohealthandperformance.com.au, 1 physiointel.com, 1 +physiomassage.com.au, 1 physiomeproject.org, 1 physionova-badenstedt.de, 1 physiopraxisteam.de, 1 -physiosense.net, 1 physioteam-franz.de, 1 physiotherapie-buk.de, 1 physiotherapie-concept.de, 1 @@ -116183,7 +115480,6 @@ piai.gq, 1 piai.ml, 1 piai.tk, 1 -piajuly.net, 1 piancangzhan.com, 1 pianetaottica.eu, 1 pianetaottica.info, 1 @@ -116321,7 +115617,6 @@ piebridge.me, 1 pieceofcake.solutions, 1 piecesofmind.in.rs, 1 -piecestech.com, 0 piechart.ga, 1 piedraconstruction.ma, 1 piedrahita.tk, 1 @@ -116509,6 +115804,7 @@ pinceaux.org, 1 pincha.com.tw, 0 pinched.ga, 1 +pinchon.ovh, 1 pinchoparados.tk, 1 pinchuk.tk, 1 pincong.rocks, 1 @@ -116525,7 +115821,6 @@ pinecone.io, 0 pinecountymn.gov, 1 pinedadegiguela.tk, 1 -pinedahair.com, 1 pinefinancialgroup.com, 1 pinegrovetownshipmi.gov, 1 pineislandmn.gov, 1 @@ -116544,13 +115839,11 @@ pingnp.me, 0 pingodoce.pt, 1 pingperfect.com, 1 -pingpongparkinson.at, 1 pingrc.net, 1 pingsut.com, 1 pinguinita.tk, 1 pinguinreal.sk, 1 pingvinofnet.ml, 1 -pinhadigital.com, 1 pinigseu.xyz, 1 pinimg.com, 1 pininfarina.it, 1 @@ -116616,7 +115909,7 @@ pinse.la, 1 pinsi.pt, 1 pinsource.kz, 1 -pinspiration.com, 1 +pinspiration.com, 0 pinta.tk, 1 pinterest.at, 1 pinterest.ca, 1 @@ -116711,7 +116004,6 @@ piraten-recording.tk, 1 piratepay.io, 0 pirates-comic.com, 1 -piratesbrewcoffee.net, 1 pirateserp.com, 1 piratesforums.co, 1 piratesofthewadden.tk, 1 @@ -116724,7 +116016,7 @@ pirofire.com, 1 pirogi.ga, 1 piroleikki.co.jp, 1 -pirscapital.com, 1 +pirscapital.com, 0 pirxpilot.me, 1 pisaggni.ch, 1 pisanpeikot.tk, 1 @@ -116787,9 +116079,9 @@ pitpipe.com, 1 pitrick.tk, 1 pitrivertribe.gov, 1 +pitshift.com, 1 pitsnap.io, 1 pitsstop.nu, 1 -pitstoparabia.com, 1 pitsundaorgan.tk, 1 pittandmoore.co.nz, 1 pittmancentertn.gov, 1 @@ -116807,6 +116099,7 @@ piute.gov, 1 piutesd.gov, 1 pivbar.tk, 1 +pivi.ch, 1 pivio.nl, 1 pivnica.cf, 1 pivnica.ga, 1 @@ -116844,6 +116137,7 @@ pixelfed.cr, 1 pixelfiends.tk, 1 pixelforgedeveloper.com, 1 +pixelgate.dog, 1 pixelglance.com, 1 pixelgliders.de, 1 pixelglue.com.au, 1 @@ -116889,7 +116183,6 @@ pixinfo.com, 1 pixlfox.com, 1 pixloc.fr, 1 -pixma140.com, 1 pixodo.tk, 1 pixojo.tk, 1 pixon-chemie.com, 1 @@ -116911,8 +116204,6 @@ pizza-curator.com, 1 pizza-house.tk, 1 pizza-t.co.il, 1 -pizza2020andcatering.com, 1 -pizza2kebab.com.au, 1 pizzablab.com, 1 pizzaboy.cz, 1 pizzaboys.com, 1 @@ -116929,7 +116220,6 @@ pizzaplus.tk, 1 pizzariapartiupizza.com.br, 1 pizzariaroma.cf, 1 -pizzaslut.xyz, 1 pizzeriaamadeus.hr, 1 pizzeriaveneziana.it, 1 pj11018.com, 1 @@ -116977,6 +116267,8 @@ pl-trans.tk, 1 pl.search.yahoo.com, 0 pl19.de, 1 +plabayo.com, 1 +plabayo.tech, 1 placasonline.com.br, 1 place-for-you.com, 1 place-twist.com, 1 @@ -117010,7 +116302,6 @@ plainfieldpolicenj.gov, 1 plainfieldvt.gov, 1 plainfin.me, 1 -plaingreenloans.com, 1 plainjs.com, 1 plainlanguage.gov, 1 plainsboronj.gov, 1 @@ -117072,7 +116363,6 @@ planetarian.moe, 1 planetarica.org, 1 planetasilius.tk, 1 -planetasuboficial.com.br, 1 planetau2.com, 1 planetbreath.ch, 0 planetchiropracticga.com, 1 @@ -117102,21 +116392,20 @@ planetradio.tk, 1 planetromeo.com, 1 planetromeofoundation.org, 1 -planetscale.com, 0 planetstimes.com, 1 planettimer.com, 1 planetun.mobi, 1 planetweb.tk, 1 planetwild.com, 1 planfitcraft.com, 1 -planful.com, 1 +planful.com, 0 planify.in, 1 planify.io, 0 planisanin.tk, 1 planiserin.tk, 1 planisware.cn, 1 planisys.net, 1 -planit-inc.com, 1 +planit-inc.com, 0 planitis.net, 1 planitz.com, 1 planitz.net, 1 @@ -117148,14 +116437,13 @@ plantationsnicholas.com, 1 plantbasedblonde.com, 1 plantbasedsis.com, 1 -plantcare.es, 1 +plantcare.es, 0 plantcareforbeginners.com, 1 planteforum.no, 1 plantennatuurlijk.nl, 1 -plantenvinder.nl, 0 plantepakken.dk, 1 plantes.ch, 1 -plantezcheznous.com, 1 +plantezcheznous.com, 0 planther.nl, 1 plantiary.com, 1 plantidentification.co, 0 @@ -117226,7 +116514,6 @@ plathome.co.jp, 1 platiniumreciclados.com, 1 platiniumvapes.com, 1 -platinnetz.com, 1 platinnetz.de, 1 platinum1.ru, 1 platinumalertsers.ga, 1 @@ -117267,7 +116554,6 @@ plausibility.cloud, 1 plaut.sk, 1 plavdoma.com.ua, 1 -plavnik.shop, 1 plavormind.tk, 1 play, 1 play-best-games.com, 1 @@ -117426,6 +116712,7 @@ plexnet.cz, 1 plexopedia.com, 1 plexpy13.ddns.net, 1 +plextura.com, 1 plexusmd.com, 0 plexusworldwide.com, 1 plgr.cc, 1 @@ -117510,6 +116797,7 @@ plumperthumbs.com, 1 plumpie.net, 0 plumplm.com, 1 +plumroll.com, 1 plumsail.com, 1 plumz.me, 1 plungepools.ae, 1 @@ -117567,7 +116855,6 @@ pm-schilderwerk.nl, 1 pm-tm.info, 1 pm.gov.au, 1 -pm.gov.ly, 1 pm.me, 1 pm.ua, 1 pm.uz, 1 @@ -117621,7 +116908,6 @@ pmsoft.nl, 0 pmt-documenten.nl, 1 pmtech.inf.br, 1 -pmu.com.pl, 1 pn.com.au, 1 pn.id.lv, 1 pnakosoft.com.au, 1 @@ -117633,9 +116919,7 @@ pneumania.fr, 1 pneumatici.roma.it, 1 pneumogen.net, 1 -pneupro.ma, 1 pneuscentergilly.be, 1 -pnevmo-trade.ru, 1 pnfiles.tk, 1 png.ai, 1 png.am, 1 @@ -117655,7 +116939,6 @@ po-krasivi.bg, 1 po.cash, 1 po.ne, 1 -po.net, 1 poac.net, 1 pobierz.pl, 1 pobuduj.com.ua, 1 @@ -117842,7 +117125,6 @@ podivilov.com, 1 podivilov.cz, 1 podivilov.net, 1 -podivilov.org, 1 podivilov.ru, 1 podmedia.network, 0 podnikatel.cz, 1 @@ -117899,7 +117181,6 @@ pogljad-brest.tk, 1 pogodavolgograd.tk, 1 pogodok.tk, 1 -pogomate.com, 0 pogoprompt.ai, 1 pogotowie-komputerowe.tk, 1 pogotowiekomputeroweolsztyn.pl, 1 @@ -117908,7 +117189,6 @@ poh.cz, 1 pohlmann.io, 0 pohmagazine.org, 1 -pohoron.ru, 1 poimel.ga, 1 poimenidou.gr, 1 poimskaya.ru, 1 @@ -118014,6 +117294,7 @@ pokyciunamai.lt, 1 pokysoia.gov, 1 pol-members.com, 1 +polacy.es, 1 polaire.org, 1 polak-import.tk, 1 polan.tk, 1 @@ -118026,6 +117307,7 @@ polarbear.army, 1 polarhome.tk, 1 polaris-psychology.com, 1 +polarisapp.ca, 1 polarisapp.xyz, 1 polarisengineering.com, 1 polarispool.com, 0 @@ -118092,13 +117374,13 @@ polish-translator.net, 1 polish-translators.net, 1 polishdating.cf, 1 -polishedconcretenewcastle.com, 1 polishfabrics.com, 1 polishforums.com, 1 polishhockey.tk, 1 polishmarriage.org, 1 polishprofessionalsinboston.org, 1 polishtranslation.com, 1 +polisi.ge, 1 polisi.go.tz, 1 polisipati.tk, 1 polismar.com, 1 @@ -118137,6 +117419,7 @@ politraq.com, 1 politsei.ee, 0 politvesti.tk, 1 +polixis.com, 1 polizialocale-bassavalpusteria.bz.it, 1 polkcountyne.gov, 1 polkcountywi.gov, 1 @@ -118185,9 +117468,7 @@ poltavanews.ru, 1 poltax.com.pl, 1 poltek-petrokimia.ac.id, 0 -poltsamaa.edu.ee, 1 -poltsamaalasteaed.edu.ee, 1 -polvoagencia.com.br, 1 +polvoagencia.com.br, 0 polvoz.com, 1 poly-glot.ai, 1 polyatomic.ai, 1 @@ -118216,6 +117497,7 @@ polyr.xyz, 1 polyring.ch, 1 polysfarm.com, 1 +polytecstadium.com.au, 1 polytekniskforening.dk, 1 polyvalents.fr, 1 pomate.cc, 1 @@ -118244,7 +117526,6 @@ pompefunebrilariviera.it, 0 pompeii.tickets, 1 pompes-funebres-girard.com, 1 -pomphreyslaw.com, 1 pon.com, 1 ponabana.com, 1 ponavia-rezidence.cz, 1 @@ -118261,7 +117542,6 @@ ponga.se, 1 pongplace.com, 1 ponio.org, 1 -ponio.xyz, 1 ponpokorin.tk, 1 ponpon.tk, 1 ponteggi.it, 1 @@ -118288,14 +117568,12 @@ poochpark.tk, 1 poodlefan.net, 1 poohcottage.co.uk, 1 -pooi.me, 1 pookhaarden.nl, 1 pookienettoyage.fr, 1 pookl.com, 1 pool-selber-bauen.de, 1 -poolcalculator.net, 0 +poolcalculator.net, 1 pooletranslation.com.au, 1 -pools.shop, 1 poolsafely.gov, 1 poolsafety.gov, 1 poolsonline.tk, 1 @@ -118367,7 +117645,6 @@ popphoto.nl, 1 poppingdance.tk, 1 poppleriverwi.gov, 1 -poppsylvie.com, 1 poppylala.com, 1 popravilam.by, 1 popravilam.com, 1 @@ -118430,8 +117707,6 @@ porn24-7.com, 1 porn77.info, 1 pornagent.de, 1 -pornbabetyra.net, 1 -pornbabetyra.org, 1 pornbay.eu, 1 pornbay.org, 1 pornblog.org, 1 @@ -118594,7 +117869,6 @@ portoccd.org, 0 portofala.pt, 1 portofbellingham.gov, 1 -portofcc.com, 1 portofedmonds.gov, 1 portofephrata.gov, 1 portofnenana.gov, 1 @@ -118727,6 +118001,7 @@ postern.org, 1 postern.uk, 1 posters.win, 1 +postersenstickers.nl, 1 posterspy.com, 1 postfalls-naturopathic.com, 1 postfalls.gov, 1 @@ -118745,11 +118020,11 @@ postman.com, 1 postman.ga, 1 postmarka.tk, 1 -postmaster.boats, 1 postmatescode.com, 1 postmelody.gr, 1 postmerkezi.tk, 1 postmistress.email, 1 +postmortem-tradingjournal.com, 1 postmusicologia.tk, 1 postn.eu, 1 postnext.com, 0 @@ -118758,6 +118033,8 @@ postora.cloud, 1 postoyanstvo.cf, 1 postpot.co.kr, 1 +postsabuy.com, 1 +poststar.com, 1 poststroke.ru, 1 postsubmeta.net, 1 postureanalysismachine.com, 1 @@ -118879,7 +118156,7 @@ power-flowengineer.com, 1 power-magnetic.ml, 1 power-of-interest.com, 0 -power-plugins.com, 1 +power-plugins.com, 0 power-recovery.com, 1 power-sunshine.jp, 1 power-technology.com, 1 @@ -118898,6 +118175,7 @@ powercod.tk, 1 powercolor.com, 1 powercomputers.nl, 1 +powerconcept.be, 1 powercounty.gov, 1 powercv.ro, 1 powerdepo.com, 1 @@ -118916,11 +118194,11 @@ powerhouseforensics.com, 1 powerhousegym.co, 1 powerinboxperformance.com, 1 +powerkeys.com.br, 1 powerlifting.tk, 1 powerling.com, 0 powerlp.com, 1 powerman.name, 1 -powerman.top, 1 powerofmilk.com, 1 powerpc.pt, 1 powerpilot.co.za, 1 @@ -118953,7 +118231,7 @@ powersergwiringconsultants.com, 1 powershaper.io, 1 powershellmagic.com, 1 -powersmithsolar.com, 1 +powersmithsolar.com, 0 powersportos.com, 1 powersrealtygrp.com, 1 powerstreet.cloud, 1 @@ -118997,6 +118275,7 @@ pozo.in, 1 pozzitiv.ro, 1 pp-performance.com, 1 +pp-portal.co.nz, 1 pp.es, 1 pp3345.net, 1 pp5197.co, 1 @@ -119008,7 +118287,6 @@ ppam.de, 0 ppapogey.com, 1 ppapogey.ru, 1 -ppc-doktor.cz, 1 ppcgeeks.com, 1 ppcpump.com, 1 ppcsesco.com, 1 @@ -119023,12 +118301,14 @@ ppissis.com.cy, 1 ppktgti.top, 1 ppld.org, 1 +ppli.solutions, 1 pplog.info, 1 pplog.net, 1 pplsoft.nl, 1 pplsvc.com, 1 pplusp.dk, 1 ppmhpm.com, 1 +ppmlocal.com, 1 ppmoon.com, 1 ppms.gov, 1 ppooii.com, 1 @@ -119042,6 +118322,7 @@ ppsoft.org, 1 ppt.org, 1 ppuglobe.com, 1 +ppulegal.com, 1 ppweb.pro, 1 ppy.sh, 1 pqcrypta.com, 1 @@ -119049,6 +118330,7 @@ pqg.capital, 1 pqgruber.com, 1 pqscript.com, 1 +pr-jf.de, 1 pr-news.spb.ru, 1 pr-project.tk, 1 pr.search.yahoo.com, 0 @@ -119065,7 +118347,7 @@ prabhasakshi.com, 1 prabirghosh.tk, 1 prac.to, 1 -praca-karkonosze.pl, 1 +praca-karkonosze.pl, 0 prachiiimohite.tk, 1 prachtigparijs.nl, 1 pracovita.pl, 1 @@ -119073,30 +118355,27 @@ pracsuite.com, 1 practera.com, 1 practical-lean.com, 1 -practicalcontracting.ca, 1 practicalgrowth.life, 1 practicalhomes.com.au, 1 practicallyunhackable.com, 1 -practicalmamawellness.com, 1 practicalneurology.com, 1 practicepanther.com, 1 practicepath.com, 1 practiso.io, 1 +practisphere.com, 1 practixdevelopment.com, 1 practo.com, 1 practodev.com, 1 +practopulse.com, 1 pracusalev.tk, 1 pradcooutdoorbrands.com, 1 pradeek.tk, 1 -pradeepagrawal.com, 1 pradersystems.ch, 1 pradmin.ru, 1 pradnik.pl, 1 prado.it, 1 pradohalcones.com, 1 -pradotv.com, 1 pradyumnashome.com, 1 -praedixa.com, 1 praemoveo.net, 1 praeparation-keppner.de, 1 praerien-racing.com, 1 @@ -119132,7 +118411,6 @@ prakhar.uk, 1 prakharprasad.com, 1 prakharvarta.com, 1 -praksite.fr, 1 praktijkbeoordelen.nl, 1 praktijkdata.nl, 1 praktijkevolve.nl, 1 @@ -119178,6 +118456,7 @@ pratosirunin.ga, 1 pratyu.sh, 1 prauxilium.com, 1 +prava24.com, 1 pravac.de, 1 pravagolosa.cf, 1 pravagolosa.ga, 1 @@ -119186,7 +118465,6 @@ praveenawstest1.tk, 1 praveenravichandran.xyz, 1 pravex.com.ua, 1 -pravlife.ru, 1 pravnisistem.rs, 1 pravo-brest-belarus.tk, 1 pravo911.tk, 1 @@ -119220,9 +118498,8 @@ praxxiiglobal.com, 1 praxxys.ph, 1 prayag.tk, 1 -prayer.today, 1 +prayer.today, 0 prayertrains.com, 1 -prayontario.org, 1 prazdnik-volgodonsk.tk, 1 prazdniki-sait.tk, 1 prazdniktost.tk, 1 @@ -119237,6 +118514,7 @@ pre-commit.com, 1 pre-renewal.com, 1 preadmit.com.au, 1 +preapps.com, 1 precambridge.tk, 1 precaria.org, 1 precedecaritas.com.br, 1 @@ -119244,7 +118522,7 @@ precept.uk.com, 1 preci0.com, 1 preciadictos.tk, 1 -precio-facil.com, 1 +preciflix.com.br, 1 preciofishbone.de, 1 preciosmejores.com, 1 preciousdad.com, 1 @@ -119280,7 +118558,6 @@ predivo.ch, 1 predmetnyj-fotograf.by, 1 prednisolone1.gq, 1 -predoiu.ro, 1 predsfan.com, 1 predskazanie.cf, 1 predskazanie.ml, 1 @@ -119291,8 +118568,6 @@ preejaculation.ga, 1 preezy.de, 1 pref.oita.jp, 1 -prefabricadosdelcaribe.com, 1 -prefabrik-ev.com, 1 prefect.cloud, 1 prefect.io, 0 prefereal.com, 1 @@ -119334,6 +118609,7 @@ premazon.com, 1 premdev.co.uk, 1 preme.name, 1 +premed.de, 1 premier-mt.uk, 1 premier-pallets.com, 1 premier-stores.co.uk, 1 @@ -119349,7 +118625,6 @@ premierleague.gq, 1 premierloto.cm, 1 premierloto.co.ke, 1 -premiermarketing.co.nz, 1 premierokchomebuyers.com, 1 premierpavingandasphalt.com, 1 premierpedsny.com, 1 @@ -119363,7 +118638,6 @@ premiovapozicovna.sk, 1 premiovicentejorgesilva.pt, 0 premised.land, 1 -premium-development.net, 1 premium-leech.com, 1 premium-rum.de, 1 premium-security.com, 1 @@ -119371,11 +118645,11 @@ premiumcredit.am, 1 premiumdesign.hr, 1 premiumhealth.be, 1 -premiumkeystore.com, 1 +premiumkeystore.com, 0 premiumlegalsupport.ga, 1 premiumpeaches.com, 1 premiumpictureframing.com, 1 -premiumplus.io, 0 +premiumplus.io, 1 premiumshop24.de, 1 premiumsmile.ru, 1 premiumtimesng.com, 1 @@ -119405,6 +118679,7 @@ preparedparents.org, 1 prepareforthesat.com, 1 preparetheword.com, 1 +prepfba.com, 1 preply.com, 1 prepping.com, 0 prepr.io, 1 @@ -119461,7 +118736,6 @@ presscenter.jp, 1 presscommunity.tk, 1 presscuozzo.com, 0 -pressed.com, 1 pressemeddelelse.dk, 1 pressfreedomtracker.us, 1 pressidium.com, 1 @@ -119472,7 +118746,6 @@ pressnewscafe.gq, 1 pressofatlanticcity.com, 1 pressoffice.direct, 1 -pressography.org, 1 presson.shop, 1 pressreleasecentral.tk, 1 pressreleasepedia.tk, 1 @@ -119490,7 +118763,6 @@ prestar.com.my, 1 prestaservice.org, 1 prestaservicesgroup.com, 1 -prestashopmanager.com, 1 prestashow.com, 1 prestashow.pl, 1 prestatest.tk, 1 @@ -119525,6 +118797,7 @@ pretome.info, 1 pretor-sa.com, 1 pretr4x.com, 1 +pretrialfocusgroup.com, 1 pretrialservices.gov, 1 prettier.fun, 1 pretty-liars.tk, 1 @@ -119538,7 +118811,6 @@ prettyporn.com, 1 prettysimplemom.com, 1 prettyskin.com.tw, 1 -prettythai.com, 1 prettytunesapp.com, 1 pretzelhands.com, 0 pretzelx.com, 1 @@ -119549,7 +118821,6 @@ prevailventurecapital.com, 1 prevajalska-agencija.si, 1 prevascloud.com, 1 -prevencia.net, 0 preventfalls.com, 1 preventive-therapy.com, 1 preventshare.com, 1 @@ -119582,8 +118853,6 @@ price.com.hk, 1 priceaccesshire.com.au, 1 priceactionhelp.com, 1 -priceblink.com, 1 -pricefx.com, 0 pricefx.eu, 1 pricegg.com, 1 pricegg.com.ua, 1 @@ -119660,7 +118929,6 @@ primanota.ch, 0 primapak.bg, 1 primarium.info, 1 -primary.health, 1 primarycareconnect.com.au, 1 primarypetvet.com, 1 primasmartwatches.de, 1 @@ -119691,7 +118959,6 @@ primeops.co, 1 primepest.net, 1 primeprime.cf, 1 -primepuff.ca, 1 primer.io, 1 primeratx.gov, 1 primersbc.com.br, 1 @@ -119732,6 +118999,7 @@ princessyachts.com, 1 princetonmn.gov, 1 princetonradiationoncology.com, 1 +princetonrailroadmuseum.org, 1 princetontxcdc.gov, 1 princevikal.cf, 1 princez.uk, 1 @@ -119754,10 +119022,6 @@ prinice.org, 1 print-street.tk, 1 print4450.com, 1 -printable-map-az.com, 1 -printablemapaz.com, 1 -printablemapforyou.com, 1 -printandgo.fr, 1 printaxis.fr, 1 printbase.cz, 0 printbigjournal.tk, 1 @@ -119811,6 +119075,7 @@ prioritysignsandgraphics.com, 0 priorlakemn.gov, 1 priscillacouto.com.br, 1 +prishtinasmartcity.com, 1 prism-glass.com, 1 prisma.io, 0 prisma.tk, 1 @@ -119846,7 +119111,6 @@ privacycloud.nl, 1 privacydesign.ch, 1 privacydev.net, 1 -privacyend.com, 1 privacyfenceanddeckllc.com, 1 privacyforpatriots.com, 1 privacyget.tk, 1 @@ -119862,7 +119126,6 @@ privacystatement.tk, 1 privacysvcs.net, 1 privacyweek.at, 1 -privacyweek.de, 1 privacyweek.eu, 1 privacyweek.wien, 1 privacyweekvienna.at, 1 @@ -119895,6 +119158,7 @@ privateideas.de, 1 privateinvestigatoredu.org, 1 privatejosh.cf, 1 +privatemidwives.com, 1 privatemillionaire.com, 1 privatemusic.stream, 1 privatenebula.eu, 1 @@ -119919,7 +119183,7 @@ privelust.nl, 1 priverify.com, 1 privilegevisa.fr, 1 -privlabs.io, 1 +privlabs.io, 0 privo.com, 1 privod-okna.ru, 1 privorot.cf, 1 @@ -120000,7 +119264,6 @@ proact-it.co.uk, 1 proactivenews.ml, 1 proactivsports.com, 1 -proactivsports.net, 1 proadvanced.com, 1 proadvisorcoach.com, 0 proaktiv.io, 1 @@ -120056,7 +119319,6 @@ processesinmotion.com, 1 processevolution.com.au, 1 processtec.com.br, 1 -prochainephase.com, 1 procharter.com, 1 proclaiminteractive.com, 1 proclick-digital.com, 1 @@ -120065,7 +119327,7 @@ procode.gq, 1 procom-automation.com, 1 procomservices.com, 1 -procontrolservices.com, 1 +procontrolservices.com, 0 procore.com, 0 procostamar.com, 1 procountor.fi, 1 @@ -120113,7 +119375,6 @@ productfetcher.com, 1 productfurniture.ga, 1 productionscime.com, 1 -productiv.com, 1 productive.io, 0 productiveplastics.com, 1 productlab.solutions, 1 @@ -120174,7 +119435,6 @@ professionalmicroblading.it, 1 professionalportfolio.ga, 1 professionalrakeback.com, 1 -professions.org.ru, 1 professor-d.ga, 1 professorwidget.tk, 1 proffbar.ru, 1 @@ -120222,7 +119482,6 @@ profondeville-sharks.be, 1 profor.cz, 1 proformer.io, 1 -profound-world.com, 1 profoundry.co, 1 profoundsyntax.com, 1 profritual.ru, 1 @@ -120264,7 +119523,6 @@ program-and.work, 1 programaarista.com, 1 programador-web-freelance.es, 1 -programadoresanonimos.com.br, 1 programadoresdepre.com.br, 1 programagetit.com.br, 1 programagrowup.com.br, 1 @@ -120286,6 +119544,7 @@ programnews.tk, 1 programsareproofs.com, 1 programsupport300procent.com, 1 +programtalk.com, 1 prograph.tk, 1 prograppa.tk, 1 progre.ss, 1 @@ -120304,7 +119563,6 @@ progressnet.nl, 1 progressportaal.nl, 1 progresswww.nl, 1 -progroep.nl, 1 progtime.net, 1 progweb.it, 1 proheadshots.uk, 1 @@ -120421,6 +119679,7 @@ promedentecuador.com, 1 promedlatam.com, 1 promedyczny.pl, 1 +promenadaoffices.ro, 1 promet.si, 0 prometey.tk, 1 prometheanfire.net, 1 @@ -120434,6 +119693,7 @@ promisedland.tk, 1 promisesaplus.com, 1 promislovik.tk, 1 +promly.ai, 1 prommontag.com, 1 promo-brille.at, 0 promo-brille.ch, 0 @@ -120452,7 +119712,6 @@ promocoesbrastemp.com.br, 1 promocoespg.pt, 1 promocomputers.nl, 1 -promodance.cz, 1 promodoble.com, 1 promods.net, 1 promods.store, 1 @@ -120501,6 +119760,7 @@ prontoai.co.uk, 1 prontointerventofognature.roma.it, 1 prontointerventoimmediato.it, 1 +prontolar.net, 1 prontolockandkey.com, 1 prontopaga.com, 1 prontoprint.com.ua, 1 @@ -120518,6 +119778,7 @@ proos.nl, 1 prooved.xyz, 1 prop365.com, 1 +propads.ai, 1 propaganda.love, 1 propagandablog.de, 0 propagationtools.com, 1 @@ -120531,6 +119792,7 @@ propeld.com.au, 1 propellerbonds.com, 1 propercoatpainting.com, 1 +properliance.com, 1 propermatches.com, 1 properpittsburgh.com, 1 propersky.com, 0 @@ -120545,6 +119807,7 @@ property.ie, 1 property.tz, 1 propertyauctionaction.co.uk, 1 +propertycare.co.za, 1 propertycareincorporated.com, 0 propertycrawl.com, 1 propertydealer.ga, 1 @@ -120570,6 +119833,7 @@ propfirmdiscount.com, 1 prophetdesign.ch, 1 proplandrealtor.com, 1 +proplnx.com, 1 propolisturkiye.tk, 1 proporcer.tk, 1 proposeinspain.net, 1 @@ -120602,9 +119866,6 @@ prosocialmachines.com, 1 prosoft.com.es, 1 prospectky.gov, 1 -prospecto.ee, 1 -prospecto.hr, 1 -prospecto.lt, 1 prospekteer.com, 1 prosperafrica.gov, 1 prosperbot.com, 1 @@ -120616,6 +119877,7 @@ prosperstack.com, 1 prosperx.co.uk, 1 prosperxaccountants.co.uk, 1 +prosphya.com, 1 prospo.co, 1 prosportovani.cz, 1 prossur.fr, 1 @@ -120757,10 +120019,8 @@ providencecmc.com, 1 providencemurdermystery.com, 1 providenceut.gov, 1 -providenthousing.com, 1 providential.be, 1 providerlijst.ml, 1 -providesys.cl, 1 providmedical.com.ua, 1 provincialrubber.co.uk, 1 provinciaotlavoro.it, 1 @@ -120785,6 +120045,7 @@ proxaccess.com, 1 proxaiqc.com, 1 proxar.co.uk, 1 +proxara.ai, 1 proxidize.com, 1 proxiel.com, 1 proxify.io, 1 @@ -120792,7 +120053,7 @@ proximity.foundation, 0 proximity.ga, 1 proximity.studio, 1 -proximity.tech, 1 +proximity.tech, 0 proximityradio.fr, 1 proximo.com.uy, 1 proximo.tk, 1 @@ -120817,6 +120078,7 @@ proyectostep.tk, 1 prozac20mg.cf, 1 prozeny.cz, 1 +prozero.com.br, 1 prozesswunder.com, 1 prozorlivec.tk, 1 prpbt.io, 1 @@ -120913,7 +120175,6 @@ psezalla.es, 1 psf.ad, 1 psg-calw.de, 1 -psge.ps, 1 pshar.ma, 1 pshul.com, 1 pshweb.tk, 1 @@ -121044,7 +120305,6 @@ psychologos.life, 1 psychologue-a-paris.com, 1 psychologue-grenoble.org, 1 -psychologueboutant.fr, 1 psychologydegreeguide.org, 1 psychologyforasafeclimate.org, 0 psychologytests.tk, 1 @@ -121089,6 +120349,7 @@ psygame.cf, 1 psyh.tk, 1 psyhelp.ro, 1 +psyhelpapp.ru, 1 psyk-patienten.tk, 1 psykologtidningen.cf, 1 psykologtidningen.ga, 1 @@ -121179,7 +120440,6 @@ pub-online.ro, 1 pubclub.com, 0 pubgexplorer.com, 1 -publanda.nl, 1 public-g.de, 1 public-measures.com, 1 public-projects.com, 1 @@ -121271,7 +120531,6 @@ pujcky.cz, 1 pujd3.gq, 1 puka.cc, 1 -puka.edu.ee, 1 pul-ingenieure.de, 1 pula-site.tk, 1 pulb.at, 1 @@ -121280,7 +120539,7 @@ pulinkai.eu.org, 1 pulinkai.xyz, 1 pulito.it, 1 -pulitoken.net, 1 +pulitoken.net, 0 pulitoperfetto.ddns.net, 1 pulizia.roma.it, 1 puliziacantine.it, 1 @@ -121314,7 +120573,6 @@ pulsnitzer-lebkuchen.shop, 0 pulsnitzer-pfefferkuchen.shop, 0 pulsr.ml, 1 -pulsus.mobi, 1 pultsar.com, 1 pulviscard.it, 1 pulvislab.it, 1 @@ -121326,6 +120584,7 @@ pumiroots.com, 1 pump19.eu, 1 pumpen-blum.de, 1 +pumpproof.com, 1 pumuntincu.eu.org, 1 punaise-de-lit-paris.com, 1 punat.tk, 1 @@ -121363,6 +120622,7 @@ puntaprop.com, 0 puntcunts.com, 1 puntocroce.tk, 1 +puntodeventadigital.net, 1 puntogommevenegono.it, 1 puntonium.hu, 1 puntopropiedad.com, 1 @@ -121413,10 +120673,11 @@ purebuttons.com, 1 purecodedigital.com, 1 puredayshop.com.tw, 1 -puredigital.nl, 1 +puredigital.nl, 0 puredisinfecting.com, 1 puredisinfection.com, 1 purefarminggame.com, 1 +purefix.pl, 1 purefoot.jp, 1 pureholisticwellness.com, 0 purekrea.com, 1 @@ -121437,13 +120698,12 @@ puretone.pro, 1 pureunpay.com, 1 pureuspeptide.com, 1 -purevicky.com, 1 purewaterguide.net, 1 purewealth.cloud, 1 purfaction.nl, 1 purinaexpress.com, 0 puritanas.tk, 1 -puritas.lk, 1 +puritas.lk, 0 purits.de, 1 purityclothing.co.uk, 1 puritydairy.com, 1 @@ -121493,7 +120753,6 @@ purupuru.school, 1 purwantara.id, 1 puryearlaw.com, 1 -pusan.ac.kr, 1 pusatinkubatorbayi.com, 0 pusatlicense.com, 1 pusatlojistik.com, 1 @@ -121505,7 +120764,6 @@ pushmetrics.io, 1 pushoflove.com, 1 pushok.tk, 1 -pushpanel.io, 1 pushphp.com, 1 pushponline.com, 0 pushthebutton.tk, 1 @@ -121550,6 +120808,7 @@ puttymonos.work, 1 putzigdesign.de, 1 puurzeewolde.nl, 1 +puuseppmeister.ee, 1 puuur-interiors.nl, 1 puvus.org, 1 puxlit.net, 1 @@ -121580,7 +120839,6 @@ pvideo.cz, 1 pvlrmnnk.com, 1 pvp-factions.fr, 1 -pvp.edu.ee, 1 pvpagario.tk, 1 pvpcraft.ca, 1 pvpctutorials.de, 1 @@ -121624,7 +120882,6 @@ pwskills.com, 1 pwss.gov.au, 0 pwud.ga, 1 -pwwpcd.us, 1 pwwsd.org, 1 pwxcontracting.com, 1 px.works, 0 @@ -121667,7 +120924,6 @@ pyjy.org, 0 pylastra.com, 1 pylon.bot, 1 -pymescentro.net, 1 pymestari.com, 1 pymtreceipt.com, 1 pyopenssl.org, 1 @@ -121768,7 +121024,7 @@ qao.qld.gov.au, 1 qaq.cloud, 1 qaq.icu, 0 -qaq.su, 0 +qaq.su, 1 qarto.com, 1 qashio.com, 1 qask.ml, 1 @@ -121783,7 +121039,6 @@ qaz.cloud, 1 qbasic.tk, 1 qbasicsite.tk, 1 -qbcorescripts.com, 1 qbh.pl, 1 qbiltrade.com, 1 qbits.li, 1 @@ -121791,7 +121046,6 @@ qbrix.dk, 1 qbstores.com, 1 qbug.cf, 1 -qc-ikonwork.com, 1 qc.search.yahoo.com, 0 qcash.tw, 1 qcbrna.qa, 1 @@ -121812,13 +121066,14 @@ qcstudentcenter.com, 0 qcstyleacademy.com, 0 qctimes.com, 1 -qcuarto.com.py, 0 +qcuarto.com.py, 1 qdabogados.com, 1 qde.com, 1 qde.net, 1 qde.org, 1 qde.social, 1 qdep.net, 1 +qdeusercontent.com, 1 qdm.tw, 1 qdolor.com, 1 qdon.space, 1 @@ -121826,7 +121081,6 @@ qdrcst.com, 1 qdstationary.co.uk, 1 qdstationery.co.uk, 1 -qdzx.net.cn, 1 qe-lab.at, 1 qed.ai, 1 qeddi.com.au, 1 @@ -121838,6 +121092,7 @@ qera.studio, 1 qeshmminer.com, 1 qewc.com, 1 +qex.africa, 1 qfes.qld.gov.au, 1 qfig.au, 1 qfixinfo.com, 1 @@ -121883,7 +121138,6 @@ qin.moe, 1 qincai.xyz, 1 qingan.ca, 1 -qingchuan.cc, 1 qingkong.net, 1 qinglingyu.cn, 1 qingly.me, 1 @@ -121905,6 +121159,7 @@ qitmeir.com, 1 qiu.moe, 0 qiuche.com, 1 +qiukedao.com, 1 qiuwenbaike.cn, 1 qiwi.be, 1 qixi.biz, 0 @@ -121971,7 +121226,6 @@ qotw.net, 1 qover.com, 1 qoyyim.com, 1 -qp666d.com, 0 qpai.net, 1 qpaypro.com, 1 qpcna.org, 1 @@ -122013,7 +121267,6 @@ qrcodewiz.com, 1 qrcontagion.com, 0 qristianuli.com, 0 -qrlfinancial.com, 0 qrma.com.au, 1 qrmagic.com, 1 qrmenex.com, 1 @@ -122093,10 +121346,10 @@ qualith.tk, 1 qualithm.com, 1 quality-automation.de, 0 -quality-homeservice.com, 1 +quality-homeservice.com, 0 quality-life.gr, 1 qualitycarbonfiber.com, 1 -qualitycesspool.com, 1 +qualitycesspool.com, 0 qualitycommerical.com, 1 qualityconcreteleveling.com, 1 qualityconcreterepair.com, 1 @@ -122133,7 +121386,7 @@ quanterix.com, 1 quanterra.ch, 0 quantfury.com, 1 -quanthealth.ai, 1 +quanthealth.ai, 0 quanthealthlabs.com, 1 quanti.au, 1 quanticlab.com, 1 @@ -122167,7 +121420,6 @@ quantumcrypto.nl, 1 quantumdynamics.ae, 1 quantumfinance.com.au, 1 -quantumfinancialgrp.com, 1 quantumharmonics.org, 1 quantuminformationframework.com, 1 quantumlink.tk, 1 @@ -122204,6 +121456,7 @@ quarus.net, 1 quasar.gr, 1 quasarcr.com, 1 +quasarcybertech.com, 1 quasarelectronics.co.uk, 1 quasarhomes.com, 1 quasarnet.gr, 1 @@ -122215,6 +121468,7 @@ quassowski.de, 1 quatermass.tk, 1 quaternion.tk, 1 +quatorziensenchemin.org, 1 quattro.tk, 1 quatuor-courtage.fr, 1 quaxio.com, 1 @@ -122235,7 +121489,7 @@ quebeccat.com, 1 quebeccats.com, 1 quebecdogs.com, 1 -quebecsolidaire.net, 1 +quebecsolidaire.net, 0 quebrandoasalgemas.com.br, 1 quecheeclub.com, 1 quecom.eu, 1 @@ -122245,12 +121499,10 @@ queencreekaz.gov, 1 queencreekcounseling.com, 1 queenhub.tk, 1 -queenkedi.net, 1 queenlexie.tk, 1 queenmargaret.ddns.net, 1 queenofvogue.com, 1 queenondvd.tk, 1 -queenparis-porn.com, 1 queenrocks.tk, 1 queensafaris.com, 1 queensbotanical.org, 1 @@ -122258,7 +121510,6 @@ queenshaflo.com, 1 queenslandtonguetieclinic.com.au, 1 queenspark.com, 1 -queenspartyhall.com, 1 queensrdapartments.com.au, 1 queenstyles.tk, 1 queentitine.com, 1 @@ -122294,7 +121545,7 @@ quentar.tk, 1 quentin-informatique.fr, 1 quentin-sauvetre.fr, 1 -quentinaurat.com, 1 +quentinaurat.com, 0 quentinb.giize.com, 1 quentinchevre.ch, 1 quentingemine.be, 1 @@ -122329,6 +121580,7 @@ questiii.com, 1 question.cf, 1 questionandanswer.ml, 1 +questionpilot.com, 1 questionyu.com, 0 questofaidance.tk, 1 questoj.cn, 1 @@ -122347,6 +121599,7 @@ quic.cf, 1 quic.fr, 1 quic.ovh, 1 +quicdecode.com, 1 quichante.com, 1 quiche-quic.cf, 1 quichost.com, 1 @@ -122359,11 +121612,11 @@ quickcel.tk, 1 quickcrypt.org, 1 quickcuttreeservice.com, 1 -quickdiamond.com, 1 quickelectricity.com, 1 quickerticker.tk, 1 quickformspro.com, 1 quickidearecipes.com, 1 +quickie.wiki, 1 quickinfosystem.com, 1 quickjobsfinder.com, 1 quicklinks.tk, 1 @@ -122388,7 +121641,6 @@ quickudpinternetconnections.com, 1 quickvideo.tk, 1 quickyshare.com, 1 -quickztna.com, 1 quicomo.it, 1 quics.io, 1 quidax.com, 1 @@ -122406,6 +121658,7 @@ quietcorner.cloud, 1 quietfield.in, 1 quietlife.tk, 1 +quietox.com, 1 quietplace.tk, 1 quietstudyactivities.tk, 1 quietus.gq, 1 @@ -122415,6 +121668,7 @@ quiksite.com, 1 quillandinkroleplay.com, 1 quillandquire.com, 1 +quillivantxrhcp.com, 1 quilmo.com, 1 quiloric.com, 1 quilteronfire.com, 1 @@ -122537,7 +121791,6 @@ qvoicenews.com, 1 qvq.cloud, 1 qvq.one, 1 -qvtrk.com, 1 qwant.com, 1 qwantjunior.com, 1 qwanturank.news, 1 @@ -122575,6 +121828,7 @@ qzhou.ddns.net, 1 qzin.jp, 1 qzr.fi, 1 +r-1.ch, 1 r-ay.cn, 1 r-baruth.de, 1 r-core.org, 1 @@ -122590,7 +121844,6 @@ r-rehab.online, 1 r-rehab.org, 1 r-rwebdesign.com, 1 -r-s.one, 1 r-sec.se, 1 r-t-b.fr, 1 r-t-n.tk, 1 @@ -122650,6 +121903,7 @@ raas.today, 1 raassembly.com, 1 raaynk.com, 1 +rab-arztbesuche.de, 1 rabalefood.com, 1 raballder.tk, 1 rabatcity.tk, 1 @@ -122697,6 +121951,7 @@ racedrop.tk, 1 racelandky.gov, 1 racemanager.io, 1 +racerscarparts.store, 1 racesimscoring.com, 1 racetraq.net, 1 rachaelcorciaphotography.com, 1 @@ -122740,7 +121995,6 @@ racunalo.com, 1 racunovodstvo-prina.si, 1 raczinnovacios.hu, 1 -rad-route.de, 1 rad.com, 1 rad.plus, 1 rad2share.com, 1 @@ -122778,10 +122032,8 @@ radchakan.com, 1 radcliffky.gov, 1 radconinc.net, 1 -raddeluxe.com, 1 radechefonne.it, 1 radegundisfest.de, 1 -radekmazar.eu, 1 radekprusa.net, 1 radgi.com, 1 radharanikijay.tk, 1 @@ -122820,7 +122072,6 @@ radio-one.ml, 1 radio-online.com, 1 radio-online.tk, 1 -radio-pulsar.com, 1 radio-pulsar.eu, 1 radio-t.com, 1 radio-utopie.de, 1 @@ -122892,7 +122143,6 @@ radiogear.ru, 1 radiogetsemani.tk, 1 radiogomezone.tk, 1 -radiogra.pl, 1 radioharrastus.tk, 1 radioheikrekel.tk, 1 radiohlam.cf, 1 @@ -122970,7 +122220,6 @@ radiosimba.ug, 1 radiosound95.it, 1 radiosterrekijker.tk, 1 -radiostrada.pl, 1 radiosummernight.ch, 1 radiosuperplus.tk, 1 radioszczecin.pl, 1 @@ -122999,7 +122248,6 @@ raditool.pl, 1 radium-it.ru, 1 radium.group, 1 -radiumone.io, 1 radiusone.com, 1 radixsalon.tk, 1 radixweb.com, 1 @@ -123071,6 +122319,7 @@ ragnance.fr, 1 ragnaroktop.com.br, 1 ragnarredbeard.com, 1 +ragsha.com, 1 ragsnprints.com, 1 ragt.ag, 1 ragunda.se, 1 @@ -123085,6 +122334,7 @@ raheel.tk, 1 raheem.consulting, 1 raheem.marketing, 1 +rahemoon.com, 1 rahenytennis.tk, 1 rahil-p.com, 1 rahilworld.tk, 1 @@ -123102,7 +122352,6 @@ raidentawork.lt, 1 raiderhacks.com, 1 raidertimes.com, 1 -raidstone.net, 1 raidstone.rocks, 1 raiffeisen-gv.ch, 1 raiffeisen-kosovo.com, 0 @@ -123123,7 +122372,6 @@ railbird.nl, 1 railbus.fan, 1 railcard.co.uk, 1 -railcarrxqa.com, 1 railclub.tk, 1 railfans.ca, 1 railgun.ac, 1 @@ -123167,6 +122415,28 @@ rainbow-web.com, 1 rainbowbrains.com, 1 rainbowcomputer.tk, 1 +rainbowcups.at, 1 +rainbowcups.bg, 1 +rainbowcups.ch, 1 +rainbowcups.cz, 1 +rainbowcups.de, 1 +rainbowcups.dk, 1 +rainbowcups.ee, 1 +rainbowcups.eu, 1 +rainbowcups.fi, 1 +rainbowcups.fr, 1 +rainbowcups.hu, 1 +rainbowcups.it, 1 +rainbowcups.lt, 1 +rainbowcups.lv, 1 +rainbowcups.nl, 1 +rainbowcups.no, 1 +rainbowcups.pl, 1 +rainbowcups.pt, 1 +rainbowcups.ro, 1 +rainbowcups.se, 1 +rainbowcups.si, 1 +rainbowcups.sk, 1 rainbowflowers.co.uk, 0 rainbowheart.com, 1 rainbowinflatables.co.uk, 1 @@ -123196,13 +122466,13 @@ rainnetwork.tk, 1 rainnny.club, 1 rainpaper.com, 1 +rainrule.com, 1 raintreatment.ga, 1 rainuk.com, 1 raipet.no-ip.biz, 1 raipet.spdns.eu, 1 rais-on.com, 1 raise-educationandwellbeing.co.uk, 1 -raisecalculator.com, 1 raisects.co.uk, 1 raisedandrooted.com, 1 raiseeducationtrust.org, 1 @@ -123258,6 +122528,7 @@ raku-lab.jp, 1 raku.bzh, 1 raku.land, 1 +rakusaku.com, 1 rakuvisa.com, 1 ralaoui.me, 1 raleighadultmedicine.com, 1 @@ -123298,6 +122569,7 @@ rama.ovh, 1 ramanujantest.in, 1 ramapada.com, 1 +ramaproxy.com, 1 ramatola.uk, 0 ramblingrf.tech, 1 rambo.codes, 1 @@ -123366,7 +122638,6 @@ randallcraig.com, 1 randallso.gov, 1 randallwilk.com, 1 -randburgplumber-247.co.za, 1 randburgplumbing.co.za, 1 randdtaxcreditspecialists.com, 1 randmevape.net, 1 @@ -123375,7 +122646,6 @@ randolfrichardson.com, 1 randolphcountyal.gov, 1 randolphcountyil.gov, 1 -random-abstract.com, 1 random-numbers.org, 1 random-password.org, 1 random-project.com, 1 @@ -123393,12 +122663,9 @@ randombrainwave.ml, 1 randombyte.com, 0 randomcharacters.online, 1 -randomcouples.com, 1 randomdomain.io, 1 randomforestweb.com, 1 randomforum.tk, 1 -randomgays.com, 1 -randomgirlsoncam.com, 1 randomideas.me, 1 randomizer.space, 1 randomkindness.tk, 1 @@ -123411,7 +122678,6 @@ randomstuffproductions.tk, 1 randomtest.cf, 1 randomthings.cf, 1 -randomtrans.com, 1 randomuuid.org, 1 randomweb.tk, 1 randonneursg.com, 1 @@ -123470,7 +122736,6 @@ rantamplan.tk, 1 rantanda.com, 1 ranters.nl, 1 -rany.eu.org, 1 ranyeh.co, 1 ranyeh.com, 1 ranzbak.nl, 1 @@ -123499,9 +122764,7 @@ raphaelschmid.eu, 1 raphaelschneider.de, 1 raphrfg.com, 1 -rapidapp.io, 1 rapidcenter.tk, 1 -rapidcityjournal.com, 1 rapidclick.net, 1 rapiddrains.co.uk, 1 rapidessay.com, 1 @@ -123540,6 +122803,7 @@ rarediseaseday.org, 1 rarefish.tk, 1 rarename.tk, 1 +raresum.com, 1 raristizabal.com, 1 rarity.tools, 1 raritysniper.com, 1 @@ -123586,7 +122850,6 @@ rassadacvetov.com, 0 rasset.ie, 1 rassistem.rs, 1 -rassro.sk, 1 rassveta.ru, 1 rastabooks.ga, 1 rasteniem.ru, 1 @@ -123642,7 +122905,6 @@ rattanfurniturefairy.co.uk, 1 rattattees.com, 1 rattenkot.io, 1 -rattohnos.com.ar, 1 ratujemystopy.pl, 1 ratujemyzwierzaki.net, 1 ratujmydzikiekoty.org, 1 @@ -123715,7 +122977,6 @@ rawfin.tv, 1 rawfitco.com.au, 1 rawforce.tk, 1 -rawley.co.uk, 0 rawlinswy.gov, 1 rawlord.ga, 1 rawmarkable.co.uk, 1 @@ -123832,6 +123093,7 @@ rca2015.ru, 1 rcbanger.tk, 1 rccars.info, 1 +rccbpo.com, 1 rcclub.com, 1 rccofeaston.org, 1 rccom.ru, 1 @@ -123997,15 +123259,14 @@ readmynews.cf, 1 readnovelis.com, 1 readpages.gq, 1 +readshayari.in, 1 readsportsonly.com, 0 readup.tk, 1 ready-leaf.com, 1 ready4bf.tk, 1 ready5g.net, 0 readycentbid.com, 0 -readycentral.com, 1 readychurchsites.com, 1 -readyclassroomcentral.com, 1 readycolorado.gov, 1 readycontacts.com, 1 readyeutaw.gov, 1 @@ -124049,6 +123310,7 @@ realestagency.com, 1 realestate-in-uruguay.com, 1 realestateagent-directory.com, 1 +realestatebees.com, 1 realestateblogs.tk, 1 realestateboston.tk, 1 realestatebydawn.ca, 1 @@ -124084,7 +123346,6 @@ realizarse-japan.com, 1 realizegov.com, 1 realkeywords.ga, 1 -reall.uk, 1 realliance.net, 1 reallife-it.de, 1 reallifeforums.com, 0 @@ -124104,7 +123365,6 @@ realmaturetube.com, 1 realmixwell.tk, 1 realmjoin.com, 0 -realmofespionage.xyz, 1 realmoney.games, 1 realnba.com, 1 realneo.me, 1 @@ -124122,7 +123382,6 @@ realtime-chart.info, 1 realtimenetworks.com, 1 realtimeregister.com, 1 -realtorjohnfincher.com, 1 realty-pochta.tk, 1 realtybymonica.com, 1 realtyfeature.com, 0 @@ -124140,7 +123399,6 @@ realwinner.es, 1 realworksforms.com.au, 1 realworldholidays.co.uk, 1 -realytics.io, 1 realyux.com, 1 reancos.report, 1 reane.pp.ua, 1 @@ -124151,6 +123409,7 @@ rearmatch.ga, 1 reasonresearch.com, 1 reaven.nl, 1 +reawakened.one, 1 rebabusiprojects.co.za, 1 rebajasoferta.com, 1 rebaltica.lv, 1 @@ -124267,7 +123526,7 @@ reclaimmysparkle.com, 1 reclamejagers.nl, 1 reclamewereldsmp.eu, 1 -reclee.com, 1 +reclee.com, 0 reclinerfactory.com, 1 reclusiam.net, 1 recmon.hu, 1 @@ -124284,6 +123543,7 @@ recommendatron.co.uk, 1 recommends.ml, 1 reconocimientoincan.org.mx, 1 +reconocimientosmedicosmalaga.es, 1 recordagrave.org, 1 recordati.com.tr, 1 recordmeeting.jp, 1 @@ -124311,6 +123571,7 @@ recruitskill.ga, 1 recruitskill.gq, 1 recruitwithclutch.com, 1 +recrypt.net, 1 rectale.xyz, 1 rectecforum.com, 1 rectoraudiparts.com, 1 @@ -124345,6 +123606,7 @@ red-orbita.com, 1 red-panda.be, 1 red-planet.tk, 1 +red-star-fixed-matches.com, 1 red-t-shirt.ru, 1 red-team.com, 1 red-train.de, 1 @@ -124406,7 +123668,6 @@ rede-t.com, 1 redearsliderturtles.com, 1 rededecuidadores.pt, 1 -redeemerlutheranschoolkokomo.org, 1 redeemmovie.com, 1 redefertig.de, 1 redefiningstrength.com, 1 @@ -124417,7 +123678,7 @@ redenvelope.co, 1 rederastreio.com, 1 redes-neuronales.tk, 1 -redesim.ru, 1 +redesim.ru, 0 redeyecare.com, 1 redeyeguatemala.tk, 1 redeyenetworks.com, 1 @@ -124430,6 +123691,8 @@ redfox-media.net, 1 redfox-media.org, 1 redfoxmarketiing.com, 1 +redfoxwebdesign.com.au, 0 +redfpe.es, 1 redfrogbeach.com, 0 redgatesoftware.co.uk, 1 redgeek.cf, 1 @@ -124475,7 +123738,7 @@ redite.co, 1 redivis.com, 1 redkite.se, 0 -redknothomes.com, 1 +redknothomes.com, 0 redlands.gov, 1 redlandspd.gov, 1 redlatampp.org, 1 @@ -124494,7 +123757,6 @@ redlionclub.ga, 1 redlionhockwold.com, 1 redloeki.tk, 1 -redmangallpsychologists.com.au, 0 redmas.com.co, 1 redmeatradio.com, 1 redmedview.com, 1 @@ -124590,6 +123852,7 @@ reebelo.co.nz, 1 reebelo.com.au, 1 reececustom.com, 1 +reecesfitness.com, 1 reedablez.com, 1 reedgroup.com, 1 reedsvillewi.gov, 1 @@ -124597,12 +123860,15 @@ reefpark.pl, 1 reeftrip.com, 1 reehomes.com, 1 +reel-gmbh.de, 1 reel360.com, 1 reelaxmedia.com, 1 reelchicago.com, 1 +reelectlhm.com, 1 reelengine.online, 1 reelgame.ml, 1 reelix.za.net, 1 +reelmotion.fit, 1 reelnews.ga, 1 reelranking.com, 1 reels.in.th, 1 @@ -124630,6 +123896,7 @@ refcc.co.uk, 1 refer.codes, 1 refer.nhs.uk, 1 +refera.au, 1 referat.club, 1 referati.tk, 1 referdell.com, 1 @@ -124655,6 +123922,7 @@ reflectionsinfocus.com, 1 reflectionsonthebay.org.au, 1 reflecton.io, 1 +reflectoring.io, 1 reflectson.org, 1 refletindosaude.com.br, 1 refletirpararefletir.com.br, 1 @@ -124679,7 +123947,6 @@ refpa.top, 1 refpa4496162.top, 1 refpa5446390.top, 1 -refpaasxufov.top, 1 refpabei.top, 1 refpabuyoj.top, 1 refpadewok.com, 1 @@ -124689,18 +123956,15 @@ refpakrtsb.top, 1 refpanjoke.com, 1 refpaqutiu.top, 1 -refparrknf.top, 1 refpasra.host, 1 refpasrasw.world, 1 -refpaswoon.top, 1 refpatqltx.top, 1 refpavikwm.top, 1 -refpavnpad.top, 1 refpazkjixes.top, 1 reframeituk.org.uk, 1 reframepractice.com, 1 refre.in, 1 -refresh-dc.org, 1 +refresh-dc.org, 0 refreshcamping.com, 1 refreshcartridges.co.uk, 1 refreshingserum.com, 1 @@ -124713,6 +123977,7 @@ refuelcreative.com.au, 0 refuelmcconnell.marketing, 1 refugee-law-clinic-kiel.de, 1 +refugeefestival.org, 1 refugeephrasebook.de, 1 refundo.cz, 1 refundo.sk, 1 @@ -124817,8 +124082,11 @@ registerforum.org, 1 registerguardcapital.com, 1 registertovoteflorida.gov, 1 +registeryour.in, 1 registr.io, 1 +registrace.online, 1 registrar.pt, 1 +registrarindia.com, 1 registrarowl.com, 1 registrarplus.net, 1 registrarplus.nl, 1 @@ -124844,7 +124112,6 @@ regressplattform.ch, 1 regtech.tk, 1 regtify.com, 1 -regtransfers.co.uk, 1 reguladordevoltagem.com.br, 1 regularlabs.com, 1 regulations.gov, 1 @@ -125006,6 +124273,7 @@ relationalplayground.com, 1 relations-business.com, 1 relationsatwork.net, 1 +relationshipcare.ie, 1 relationsproblem.nu, 1 relativitymc.org, 1 relatosypoesias.tk, 1 @@ -125107,7 +124375,6 @@ remi-saurel.com, 1 remi-theriault.com, 1 remi-ziolkowski.fr, 1 -remiafon.com, 1 remiandre.fr, 1 remicade.com, 1 remifajardo.cf, 1 @@ -125131,7 +124398,7 @@ remodelate.mx, 1 remodelhealth.com, 0 remodulin.com, 1 -remondacastro.com.ar, 1 +remondacastro.com.ar, 0 remonline.ru, 1 remont-45.tk, 1 remont-kazan.tk, 1 @@ -125141,7 +124408,6 @@ remont-rukami.tk, 1 remontdot.tk, 1 remontfirm.tk, 1 -remonti.info, 1 remontkompyutera.tk, 1 remontlog.com, 1 remontmax.bg, 1 @@ -125173,17 +124439,15 @@ remsoft.com.br, 1 remuneracions.cat, 1 remwhile.com, 1 -remy-app.com, 1 +remy-app.com, 0 remyb.me, 1 remyphotography.fr, 1 remyroguevolution.tk, 1 remzi.info, 1 renaatsioncke.com, 1 renaissanceklc.com, 1 -renaissanceproperty.ie, 1 renalco.ch, 1 renard-pierne-avocats.fr, 1 -renascercorretora.com.br, 1 renascerstp.org, 0 renataginecologista.com.br, 1 renate-kretschmer.de, 1 @@ -125224,10 +124488,10 @@ renecoignard.de, 1 renecoignard.fr, 1 renecoignard.net, 1 -renecoignard.org, 1 renecoignard.ru, 1 renekoot.nl, 0 renem.net, 0 +renepardon.de, 1 reneploetz.de, 1 reneschmidt.de, 1 reneschroeter.de, 1 @@ -125245,7 +124509,6 @@ renhub.no, 1 renicimery.com.br, 1 renila.com.br, 1 -renjyaku-dental.com, 1 renkatsu.fr, 1 renkenlaw.com, 1 renklihobi.com, 1 @@ -125304,7 +124567,6 @@ rent.ie, 1 rent.men, 1 rentacar.name.tr, 1 -rentacaramerica.com, 1 rentacarankara.com.tr, 1 rentacarizmir.com.tr, 1 rentaciudadana.co, 1 @@ -125324,7 +124586,6 @@ rentberry.com, 1 rentbrowser.com, 1 rentcafe.co.uk, 1 -rentegral.com, 1 rentenantrag-hilfe-leipzig.de, 1 renteriq.com.au, 1 rentex.com, 0 @@ -125342,8 +124603,6 @@ rentmasseur.com, 1 rentmen.eu, 1 rentmybrains.com, 1 -rentnow.my, 1 -rents.ma, 1 rentyard.net, 1 renuo.ch, 1 renusoni.ga, 1 @@ -125364,7 +124623,6 @@ repairdriveshafts.tk, 1 repairingmobile.tk, 1 repairit.support, 1 -repairland.gr, 1 repairlinkshop.com, 1 repairmate.com.au, 1 repairtly.com, 0 @@ -125417,6 +124675,7 @@ report-it.trade, 1 report-uri.com, 1 report.cf, 1 +reportaya.com.mx, 1 reportband.gov, 1 reporte.tk, 1 reportercareer.ga, 1 @@ -125529,7 +124788,6 @@ resensor.io, 1 reserva-agora.pt, 1 reservadecitasonline.com, 1 -reservaelcortijosuitehouse.com, 1 reservaspro.es, 1 reservationsair.com, 1 reservetonshift.com, 1 @@ -125604,6 +124862,7 @@ resort-islands.net, 1 resort-nuvola.be, 1 resort.ga, 1 +resorto.io, 1 resortrealty.com, 0 resorts.ru, 1 resortsupportfiji.com, 1 @@ -125623,7 +124882,6 @@ respiratortest.com, 1 respire-yoga.fr, 1 respon.jp, 1 -responer.com, 1 respons.je, 1 respons.me, 1 respons.mobi, 1 @@ -125643,7 +124901,6 @@ responsivemiracle.com, 1 responsivepaper.com, 1 respostas.com.br, 1 -respublica.cl, 1 ressourceportal.dk, 1 ressourcesindivior.com, 1 ressourcesleopharma.fr, 1 @@ -125699,15 +124956,16 @@ restorationcommercialroofing.com, 1 restorationphotos.tk, 1 restorehair.com, 1 +restoreresearch.uk, 1 restorerivers.eu, 1 restorers.org.uk, 1 restorethegulf.gov, 1 restoringhopeberks.org, 1 restormel-handyman.co.uk, 1 restoruns.com, 1 +restping.net, 1 restrealitaet.de, 1 restream.fi, 1 -restructurethesystem.us, 1 resultcrop.vip, 1 resultscx.com, 1 resultsdate.news, 1 @@ -125843,7 +125101,7 @@ reurbcaceres.com.br, 1 reusables.org, 1 reuschtools.com, 1 -reusorecicla.com.br, 0 +reusorecicla.com.br, 1 reut42.de, 1 reuter-profishop.de, 0 reuter.de, 0 @@ -125871,13 +125129,12 @@ revellio.tk, 1 revendeur-iptv-panel.com, 1 revengeofthesomething.tk, 1 -revenue-playbook.com, 1 +revenue-point.com, 1 revenuegrid.com, 1 reverce.com, 1 reveriecaps.com.br, 1 revers.tk, 1 reverse1999.wiki, 0 -reverseaging.site, 1 reverseaustralia.com, 1 reversec.com, 1 reversecanada.com, 1 @@ -125952,7 +125209,6 @@ revizoronline.tk, 1 revloop.com, 1 revmap.com, 1 -revoka.de, 1 revologyanalytics.com, 1 revolucioncharango.com, 1 revolution-mining.com.au, 1 @@ -125964,7 +125220,6 @@ revolutionaryireland.gq, 1 revolutionaryireland.ml, 1 revolutionengine.tk, 1 -revolutionhealth.ca, 1 revolutionizingheartfailure.com, 1 revolutionofbeauty.tk, 1 revolutionofgaming.tk, 1 @@ -126018,6 +125273,7 @@ reyesfernando.com, 1 reyesholdings.com, 1 reyeswraps.com, 1 +reyher.cn, 1 reyher.de, 1 reyingdy.com, 1 reykjavikshuttle.is, 1 @@ -126039,12 +125295,10 @@ reznik.tk, 1 reztudio.com, 1 rezultant.ru, 1 -rezun.cloud, 1 rf-gamer.gq, 1 rf.studio, 1 rfasafedrop.org, 1 rfbcnet.tk, 1 -rfbz.ca, 1 rfc3161.top, 1 rfdirectory.tk, 1 rfds.com.au, 1 @@ -126068,7 +125322,7 @@ rgacomputacion.cl, 1 rgapi.net, 1 rgb.eco, 1 -rgbchemicals.com, 1 +rgbchemicals.com, 0 rgbeta.net, 1 rgbinnovation.com, 1 rgbpty.com, 1 @@ -126078,7 +125332,6 @@ rgfundraising.com, 1 rggraphics.mx, 1 rgmdtri.ru, 1 -rgnext.com, 1 rgoods.com, 1 rgpd-elearning.com, 1 rgservice.ml, 1 @@ -126131,14 +125384,12 @@ rhinobase.net, 1 rhinoplay.co.uk, 1 rhinosf1.com, 1 -rhinostics.com, 1 rhizo.ma, 1 rhmods.com, 1 rhnet.at, 1 rho.co, 0 rhode-island-sexcams.com, 1 rhodeislandhealth.tk, 1 -rhodeislandtitlesearch.com, 1 rhodes.ml, 1 rhodesianridgeback.com.br, 1 rhodos.fr, 1 @@ -126152,7 +125403,6 @@ rhswl.com, 1 rhubarb.land, 1 rhumblineadvisers.com, 1 -rhwebdesigns.co.uk, 1 rhye.tk, 1 rhymesofreason.com, 1 rhymeswithmogul.com, 1 @@ -126174,6 +125424,7 @@ riaktiv.tk, 1 rialto.co.nz, 1 rialtocapital.com, 1 +rialytiq.com, 1 rian.gq, 1 riared.net, 1 rib-cosinus.com, 1 @@ -126188,8 +125439,6 @@ ribapo.com, 1 ribcage.games, 1 ribeirocavalcante.com.br, 1 -ribella.net, 1 -ribfixation.com, 1 ribit4u.co.il, 1 ribmountainwi.gov, 1 ribolov.tk, 1 @@ -126206,7 +125455,6 @@ ricardoquaresma.tk, 1 ricardotaakehb.tk, 1 ricardotorres.com.pt, 1 -ricassiocosta.me, 1 ricaud.me, 1 riccardogiannetto.com, 1 riccy.org, 1 @@ -126214,20 +125462,23 @@ ricecountymn.gov, 1 ricedust.com, 1 riceforafrica.net, 1 -ricelasvegas.com, 1 ricelife.ch, 1 ricettedellanonna.net, 1 +ricettesemplicieveloci.altervista.org, 1 +rich-ly.com, 1 +rich-ly.de, 1 +rich-ly.eu, 1 +rich-ly.net, 1 richadams.me, 1 richandsteph.co.uk, 1 richandsteph.uk, 1 richard-fath.de, 1 +richard-freier.de, 1 richard-purves.com, 1 richardapplegate.io, 1 richardb.me, 0 -richardcoleman.co, 0 richardcrosby.co.uk, 1 richardepiggle.it, 1 -richardgrifno.com, 0 richardharpur.com, 1 richardhouts.tk, 1 richardinesrolltop.com, 1 @@ -126283,11 +125534,12 @@ richlewis.com, 0 richlj.net, 1 richlogic.blog, 1 +richmond.com, 1 richmondca.gov, 1 richmondcountync.gov, 1 richmondla.gov, 1 richmtdriver.com, 1 -richs-construction.com, 1 +richs-construction.com, 0 richtabak.ru, 1 richtek.com, 1 richter.ca, 1 @@ -126301,7 +125553,6 @@ rickmanlegal.com, 1 rickmartensen.nl, 0 ricknewman.pro, 1 -rickoriginal.nl, 0 rickramos.com, 1 rickrussellhomes.com, 0 rickscastles.co.uk, 1 @@ -126317,7 +125568,6 @@ rico-j.de, 1 rico.ovh, 1 ricochet.com, 1 -ricochet.im, 1 ricoh.com.au, 1 ricos.co.jp, 1 ricos.jp, 1 @@ -126335,6 +125585,7 @@ ride500.com.au, 1 rideapart.com, 1 rideaux-thermiques.com, 1 +ridecodex.com, 1 rideelectric.gov, 1 ridegravel.ch, 1 ridemn.io, 1 @@ -126373,6 +125624,7 @@ riess-ambiente.net, 0 rietspoppen.tk, 1 rietveldacademie.nl, 1 +rifattareq.com, 1 riffable.com, 1 riffnation.tk, 1 riffreporter.de, 0 @@ -126463,7 +125715,6 @@ rimax.vn, 0 rime.red, 1 rimessaggio.it, 1 -rimetsu.com, 1 rimi.ee, 1 rimi.lt, 1 rimi.lv, 1 @@ -126476,6 +125727,7 @@ rimonhwang.com, 1 rimorrecherche.nl, 1 rimzim.tk, 1 +rinai.top, 1 rincat.ch, 1 rincon-nsn.gov, 1 rinconanimalista.com, 1 @@ -126532,9 +125784,8 @@ rinyui.cn, 1 rinyui.com, 1 rioblanco.gov, 1 -riogrooming.com, 1 +riogrooming.com, 0 rioinbox.com.br, 1 -riolista.com, 1 rioloagolf.tk, 1 riomi.org, 1 riosoil.co.uk, 1 @@ -126592,6 +125843,7 @@ risecannabis.io, 1 risecomedy.com, 1 risecstate.gov, 1 +risedentistrymagnolia.com, 1 risen.today, 1 riseofmiddle-earth.tk, 1 riseoverdebt.com, 1 @@ -126761,22 +126013,23 @@ rjfedor.com, 1 rjfedor.ddns.net, 1 rjia.gq, 1 +rjj-software.co.uk, 1 rjltimmerwerken.nl, 1 rjwhitworth.com, 1 rk-box.ru, 1 rk-links.ml, 1 -rk-mediawork.de, 0 rk-medical.de, 1 rk-news.ru, 1 rk.com, 1 rkabworks.uk, 1 rkbegraafplaats.com, 1 +rkeb.sa, 1 rkfp.cz, 1 rkkerkjoppe.nl, 1 rkmedia.no, 1 rkmns.edu.in, 1 rknews.tk, 1 -rkphotolense.de, 1 +rkservicespdx.com, 1 rktoptics.com, 1 rl-informatique.fr, 1 rlalique.com, 1 @@ -126810,7 +126063,7 @@ rmitobacco.com, 1 rmj4u.com, 1 rmkdirect.com, 1 -rml-liege.be, 1 +rmlcowboystore.com, 0 rmly.win, 1 rmm-i.com, 1 rmmanfredi.com, 1 @@ -126831,6 +126084,7 @@ rmurai.com, 1 rmvalues.com, 1 rmw-energy.de, 0 +rmyndharis.com, 1 rn-prime-systems.com, 1 rn29.me, 1 rnag.ie, 1 @@ -126965,6 +126219,7 @@ robintimmers.nl, 0 robinvanpersie.tk, 1 robinvdmarkt.nl, 1 +robinvieregge.de, 1 robinwill.de, 1 robinwinslow.uk, 1 robinzorg.nl, 1 @@ -126983,6 +126238,7 @@ roboform.com, 1 robohash.org, 1 roboland.ga, 1 +robomq.io, 1 roboonline.tk, 1 roboraptor.tk, 1 roborehber.com, 1 @@ -127074,7 +126330,6 @@ rocketgnomes.com, 1 rocketjump.eu, 1 rocketlabcorp.com, 1 -rocketmill.co.uk, 1 rocketmulejunkremoval.com, 1 rocketnet.ml, 1 rocketpin.com, 1 @@ -127131,9 +126386,11 @@ rockyourlife.gq, 1 rocssocial.com.au, 1 rocssti.net, 1 +roda.la, 1 rodab.party, 1 rodacloud.ddns.net, 1 rodado.cl, 1 +rodadosfernandez.com.ar, 1 rodafe.sk, 1 rodahomesltd.com, 1 rodapiao.com.br, 1 @@ -127149,6 +126406,7 @@ rodeohire.com, 1 rodeosales.co.uk, 1 roder-skarf.se, 1 +rodfour.com, 1 rodichi.net, 1 rodin.tk, 1 rodinka.tk, 1 @@ -127164,7 +126422,6 @@ rodokubu.jp, 1 rodolfo.gs, 1 rodomonte.org, 1 -rodoslive.gr, 1 rodosto.com, 1 rodpenroseracing.com.au, 1 rodrigamer.com, 1 @@ -127192,11 +126449,9 @@ roesberg.com, 1 roestkonsept.no, 1 rofena.org, 1 -rofiibnu.com, 1 rofl.com.ua, 1 rofrank.space, 1 rogacevo.tk, 1 -rogagym.com, 1 rogaineforwomen.ga, 1 rogalcraigtaylor.com, 1 rogard.fr, 0 @@ -127229,7 +126484,7 @@ roguenation.space, 1 roguenetworks.me, 1 roguenexus.io, 1 -roguerocket.com, 1 +roguerocket.com, 0 roguetech.ca, 1 rohal.tk, 1 rohansingh.cf, 1 @@ -127280,6 +126535,7 @@ rolc.org.sg, 1 rolecontj.com, 1 roleplayhome.com, 1 +roleplaylabs.net, 1 roles.website, 1 rolf.org, 1 roligh.cf, 1 @@ -127358,7 +126614,6 @@ romantik.cf, 1 romantik.tk, 1 romantischetuin.nl, 1 -romanywg.com, 1 romapk.tk, 1 romarin.es, 1 romaservicegroup.it, 1 @@ -127424,7 +126679,6 @@ ronzertnert.xyz, 1 roobet.com, 1 roodarvasi.ir, 1 -roodcyclecenter.nl, 1 roodfruit.com, 1 roodfruit.nl, 1 roodfruit.studio, 1 @@ -127518,18 +126772,15 @@ roots.photography, 1 rootsandrain.com, 1 rootsbar.fr, 0 -rootshell.is, 1 rootsinmadrid.tk, 1 rootsland.de, 1 rootsland.net, 1 -rootslandscapingct.com, 1 rootsmusicmanagement.tk, 1 rootstation.de, 1 rootsweb.com, 1 rootusers.com, 1 rootxnetwork.de, 1 roowanders.com, 1 -roowatertreatment.com, 1 roozbeh.tk, 1 rop.cx, 1 ropd.info, 1 @@ -127591,7 +126842,7 @@ rosetwig.ca, 1 rosevalleyfolk.com, 1 rosevillefacialplasticsurgery.com, 1 -rosevillekindy.nsw.edu.au, 1 +rosevillekindy.nsw.edu.au, 0 rosewater.me, 1 rosewebdesignstudio.co.uk, 1 rosewebdesignstudio.uk, 1 @@ -127710,13 +126961,14 @@ roughcopy.com.au, 1 roughgrain.com, 1 roughnex.tk, 1 -roughnotes.com, 1 +roughnotes.com, 0 roughtime.se, 1 rouken.bio, 1 roulettelive.ml, 1 roulettestar.com, 1 roulinfo.ch, 0 roullier.com, 1 +roulottesodi.com, 1 roulottetinihau.com, 1 roundaboutweb.net, 1 roundandbrown.com, 1 @@ -127747,6 +126999,7 @@ rouxb.in, 1 rouyt.com, 1 rovatronic.tk, 1 +rovee.io, 1 roverglobal.ga, 1 roveridx.com, 1 roverkob.dk, 1 @@ -127778,6 +127031,7 @@ roxburytech.tk, 1 roxhillmedia.com, 1 roxiesbouncycastlehire.co.uk, 1 +roxis.pro, 1 roxotranslations.com, 1 roxswinery.com, 1 roxville.tk, 1 @@ -127793,7 +127047,6 @@ royal806.com, 0 royal811.com, 0 royal816.com, 0 -royal818.com, 0 royal83.com, 0 royal84.com, 0 royal851.com, 0 @@ -127802,7 +127055,6 @@ royal877.com, 0 royal88.com, 1 royal8822.com, 0 -royal885.com, 0 royal896.com, 0 royal898.com, 0 royal929.com, 0 @@ -127843,7 +127095,6 @@ royalrace.tk, 1 royalreporting.ca, 1 royalsleeping.com, 1 -royalstockaysaintgeorges.be, 1 royalstylefit.com, 1 royaltonvt.gov, 1 royaltube.net, 1 @@ -127875,6 +127126,7 @@ rozemuller.com, 0 rozhodce.cz, 1 rozprodat.cz, 1 +rozsoshnykh.no, 1 rozsvitsvet.cz, 1 roztilefona.net, 1 rozwazania.pl, 1 @@ -128007,6 +127259,7 @@ rssatom.eu, 1 rssfeedblast.com, 1 rssfeedonline.tk, 1 +rsshotels.com, 1 rsshub.com, 1 rssicons.pl, 1 rssl.me, 1 @@ -128079,7 +127332,7 @@ rtlspiele.de, 1 rtmi.co.il, 1 rtmoran.org, 1 -rtmtech.ru, 1 +rtmtech.ru, 0 rtnewsde.com, 1 rtnewsde.online, 1 rtnewsde.pro, 1 @@ -128094,7 +127347,6 @@ rtv1ijsseldelta.nl, 1 rtvnunspeet.nl, 1 rtvraalte.nl, 1 -rtvslos.nl, 1 rtwcourse.com, 1 ru-acyclopedia.cf, 1 ru-adv.tk, 1 @@ -128116,7 +127368,6 @@ rubbaduckee.tk, 1 rubber.cf, 1 rubberband.com, 1 -rubberduckers.co.uk, 1 rubbermaidoutlet.com, 0 rubbermetrics.com, 1 rubbleedenvale.co.za, 1 @@ -128211,6 +127462,7 @@ rueduparticulier.tk, 0 rueg.eu, 1 rueger-net.de, 1 +rueger-plastic-surgery.com, 1 rueger.info, 1 ruempelbutler.de, 1 ruero.com, 1 @@ -128351,7 +127603,7 @@ running-tiger.ch, 1 running-tiger.cn, 1 running-tiger.de, 1 -runningcitadel.com, 1 +runningcoachmelbourne.au, 1 runningfast.cf, 1 runninglab.fr, 1 runningrabb.it, 1 @@ -128398,7 +127650,6 @@ ruro.tk, 1 rurouni.tk, 1 rus-blog.tk, 1 -rus-call.com, 1 rus-manual.tk, 1 rusa.loan, 1 rusakov.tk, 1 @@ -128429,6 +127680,7 @@ ruskcountytx.gov, 1 ruski.tk, 1 ruskin200.com, 1 +ruskow.com, 1 ruslandautohuur.nl, 1 rusmir.tk, 1 rusmodel.tk, 1 @@ -128493,7 +127745,6 @@ rusticus-consulting.de, 0 rustls.com, 1 rustls.org, 1 -rustomjee.com, 1 rustonla.gov, 1 rustorch.com, 1 rustquantum.com, 1 @@ -128532,7 +127783,6 @@ rutika.ru, 1 rutlandcountyswac.org, 1 rutlandma.gov, 1 -rutlandvets.co.uk, 1 rutoki.com, 1 rutorka.tk, 1 rutorrent.net, 1 @@ -128576,6 +127826,7 @@ rwalch.at, 1 rwandalicious.com, 0 rway.pro, 1 +rwazi.com, 1 rwb.charity, 1 rwgamernl.ml, 1 rwglaw.com, 1 @@ -128708,10 +127959,8 @@ s-hertogenboschcitypermit.nl, 1 s-hertogenboschstad.nl, 1 s-i-m.tk, 1 -s-kaupat.fi, 0 s-kino.cz, 1 s-mainte.com, 1 -s-mall.com.sg, 1 s-ms.org, 1 s-n-unso.com, 1 s-on.li, 1 @@ -128789,7 +128038,6 @@ s6jl.com, 1 s6n.jp, 0 s6o.de, 1 -s6o.me, 1 s8a.me, 1 s92.cloud, 1 s92.io, 1 @@ -128859,11 +128107,11 @@ sable.gq, 1 sabo.co.in, 1 saborcaribe.tk, 1 +saboresdamontanha.com.br, 1 sabranie.com, 1 sabriburhanoglu.com, 1 sabrina-auer.tk, 1 sabrinajoias.com, 1 -sabrinajoias.com.br, 1 sabrinajoiasprontaentrega.com.br, 1 sabrinajoiasvarejo.com.br, 1 sabrinamiskiewicz.tk, 1 @@ -128893,7 +128141,6 @@ sachk.com, 0 sachse.info, 0 sachsen.de, 1 -sachsenlady.com, 1 sachsfoundation.org, 1 sachte-restaurant.de, 1 sacians.tk, 1 @@ -128915,12 +128162,13 @@ sacredheartmission.org, 1 sacredmessages.net, 1 sacredsecondhandbooks.com.au, 1 -sacrome.com, 1 sacrosanctus.tk, 1 sacscoc.org, 1 sacwellness.com, 1 sadalestikls.lv, 1 sadaqat.pk, 1 +sadarly.com, 1 +saddamadil.in, 1 sadecegundem.net, 1 sadeedos.systems, 1 sadeem.space, 1 @@ -128982,7 +128230,6 @@ safeathomeohio.gov, 1 safebase.io, 1 safebaseinc.com, 1 -safebits.ch, 1 safeboard.ml, 1 safeboxx.id, 1 safebus.io, 1 @@ -129011,6 +128258,7 @@ safehero.com, 1 safeheron.com, 0 safeheron.vip, 1 +safehivebr.com, 1 safehouse.zone, 1 safehousepestcontrol.au, 1 safeinfra.nl, 1 @@ -129022,7 +128270,7 @@ safeme.gq, 1 safemt.gov, 1 safenetwork.it, 1 -safensoundstoragegroton.com, 1 +safensoundstoragegroton.com, 0 safeo.fr, 1 safeocs.gov, 1 safepassvpn.com, 0 @@ -129036,6 +128284,7 @@ saferpost.com, 1 saferproduct.gov, 1 saferproducts.gov, 1 +saferstreetsifaportal.com, 1 safersurfing.eu, 0 safertruck.gov, 1 saferutar.com, 1 @@ -129044,7 +128293,7 @@ safescif.com, 1 safesecuretrusted.com, 1 safesecurevital.ca, 1 -safesmartvent.com, 1 +safesmartvent.com, 0 safesoundcounselingllc.com, 1 safespaceresearch.com, 1 safespaces.azurewebsites.net, 1 @@ -129077,7 +128326,6 @@ safewayins.com, 1 safewayinsurance.com, 1 safewebsystems.com, 1 -safex.org, 1 safezino.com, 1 saffle.se, 1 saffron-crocuses.com, 1 @@ -129140,13 +128388,14 @@ sahanz.net, 1 sahar.io, 1 saharacloud.com, 1 +saharadaytours.com, 1 sahararun.tk, 1 saharazik.tk, 1 +sahardiet.com, 1 saharmassachi.com, 1 sahatchaiy.ddns.net, 1 sahb.dk, 1 sahealthsecure.com, 1 -sahhacircle.com, 1 sahibinden.com, 1 sahih.nl, 1 sahilbahl.com, 1 @@ -129156,6 +128405,7 @@ sahipleniyorum.com, 1 sahkotyot.eu, 1 sahlcollection.com, 1 +sahneva.com, 1 sahovski.com, 1 sahpa.co.za, 0 sai.be, 1 @@ -129252,7 +128502,6 @@ saintvincent.tk, 1 saintw.com, 0 sainzderozas.com, 1 -saipariwar.com, 1 saipeople.net, 1 saiphhub.com.br, 1 saiputra.com, 1 @@ -129293,7 +128542,6 @@ sakenohana.com, 1 sakerhetsbubblan.se, 1 sakhalin-news.net, 1 -sakido.fr, 1 sakipsabancimuzesi.org, 1 sakirdak.tk, 1 sakitama-shika.com, 1 @@ -129302,7 +128550,7 @@ sakostacloud.de, 1 sakra.xyz, 1 sakrajda.eu, 1 -sakraworldhospital.com, 0 +sakraworldhospital.com, 1 saksham.org, 1 sakshi.gq, 1 saksonski-szlak-parowozow.pl, 1 @@ -129325,7 +128573,6 @@ salamkisan.com, 1 salamon-it.de, 1 salampolyclinic.om, 1 -salamzibaei.com, 1 salariominimo.com.co, 1 salaris.ro, 1 salaryfinance.com, 1 @@ -129364,7 +128611,6 @@ salernonotizie.it, 1 salernotoday.it, 1 salery.ga, 1 -sales-experience.nl, 1 sales-respect.nl, 1 salesagility.com, 1 salescircle.pro, 0 @@ -129392,7 +128638,8 @@ salesprocessing.gq, 1 salesroom.com, 1 salesslicer.com, 1 -saletodo.com, 0 +salestap.com, 1 +saletodo.com, 1 saleturs.tk, 1 saletzki.de, 1 salework.net, 0 @@ -129421,7 +128668,6 @@ salle-quali.fr, 0 salledebainmontreal.gq, 1 sallisawok.gov, 1 -sally-secret.com, 1 sallyandruss.ca, 1 sallyangeli.tk, 1 sallycooke.co.uk, 1 @@ -129429,7 +128675,6 @@ sallyheerenveen.nl, 1 sallyjo.tk, 1 salmaansana.com, 1 -salmadenora.net, 1 salmaghanim.com, 1 salman.agency, 1 salmanravoof.com, 1 @@ -129476,6 +128721,7 @@ salonni.tk, 1 salonpaikku.fi, 1 salontaidemuseo.fi, 1 +salonvillagrand.mx, 1 salsa-disaster.net, 1 salsa-straubing.de, 1 salsa.berlin, 1 @@ -129529,7 +128775,6 @@ salvalartesicilia.it, 1 salvameblog.tk, 1 salvatorenoschese.it, 1 -salwyrr.com, 1 salzamt.tk, 1 salzburg-erfahren.at, 1 salzburg-verkehr.at, 1 @@ -129544,7 +128789,7 @@ sam.gov, 1 sam002.net, 1 sam66.cc, 1 -sam88.cc, 1 +sam88.cc, 0 samabest.tk, 1 samael.biz, 1 samalderson.co.uk, 1 @@ -129584,7 +128829,6 @@ samegoal.org, 1 samehzidan.com, 1 samel.de, 1 -samelol.com, 1 samendenbosch.nl, 1 samenduurzaamchallenge.nl, 1 samengevat.net, 1 @@ -129632,12 +128876,13 @@ samlamac.com, 1 samlaw.co.nz, 0 samlo.cloud, 1 +sammaancapital.com, 1 sammich.eu, 1 sammich.social, 1 sammichscripts.com, 1 sammutsw.com, 1 sammyservers.com, 1 -samoagovt.ws, 1 +samoagovt.ws, 0 samodel.ml, 1 samodel.tk, 1 samogonka.tk, 1 @@ -129657,7 +128902,7 @@ sampatjewelers.com, 1 samplechapterpodcast.com, 1 samplefashion.nl, 1 -samplehc.com, 1 +samplehc.com, 0 sampnews24.com, 1 sampsoncountync.gov, 1 sampsonplumbing.com, 0 @@ -129670,7 +128915,6 @@ samserglobal.com, 1 samson-td.com, 1 samson.org.au, 1 -samsontjacob.com, 0 samspace.ru, 1 samstudios.tk, 1 samsungbiologics.com, 1 @@ -129681,6 +128925,7 @@ samuelbeckett.tk, 1 samuelbramley.com, 1 samuelebencini.it, 1 +samuelfehling.com, 1 samuelgd.com, 1 samuelgiger.com, 1 samueljackhill.com, 1 @@ -129711,7 +128956,6 @@ san-vigilio-marebbe.net, 1 san.tv, 1 san0j.de, 1 -sana-store.com, 1 sana-store.cz, 1 sana-store.sk, 1 sanagustin.com, 1 @@ -129737,7 +128981,7 @@ sanbenitocounty-ca-cre.gov, 1 sanbenitocountyca.gov, 1 sanbernardino.gov, 1 -sanbornteam.com, 0 +sanbornteam.com, 1 sanbs.org.za, 1 sancaktepehaber.tk, 1 sancarlosborromeo.org, 1 @@ -129747,7 +128991,8 @@ sanctisgroup.com, 1 sanctum.geek.nz, 0 sanctumel.com, 1 -sanctumsecops.us, 0 +sanctumsecops.org, 1 +sanctumsecops.us, 1 sanctus-de.tk, 1 sanctus.co.uk, 1 sanctus.io, 1 @@ -129764,6 +129009,8 @@ sandelduggal.com, 1 sanderdesign.tk, 1 sanderdorigo.nl, 1 +sanderkoenders.eu, 1 +sanderkoenders.nl, 1 sanderpoppe.com, 1 sanderscreditrepair.com, 1 sandersgaleandrussell.com, 1 @@ -129773,9 +129020,7 @@ sandesh.tk, 1 sandetailing.ru, 1 sandfield.co.nz, 1 -sandfloor.com, 1 sandgatebaysidedental.com.au, 1 -sandhillspet.com, 1 sandhitransformer.xyz, 1 sandholt.is, 1 sandiegocomicconnews.com, 1 @@ -129807,7 +129052,6 @@ sandramargolesmd.com, 1 sandramorrone.tk, 1 sandras-hobbystueble.de, 1 -sandrasturm.net, 1 sandravdmeulen.nl, 1 sandravongneisenau.de, 1 sandres.com, 1 @@ -129826,7 +129070,6 @@ sandtler.moe, 1 sandtlivigud.dk, 1 sandton-plumbing.co.za, 1 -sandtondc.co.za, 1 sandtonrubbleremovals.co.za, 1 sandtonsolarsystems.co.za, 1 sandtro.no, 1 @@ -129845,7 +129088,7 @@ sanex.ca, 1 sanf.org, 1 sanfernando.tk, 1 -sanfranciscotours.org, 1 +sanfranciscotech.co, 1 sangabriel.gov, 1 sangamonil.gov, 1 sangen.ml, 1 @@ -129884,6 +129127,7 @@ sanityrant.ml, 1 sanjanaherath.cf, 1 sanjaymenon.xyz, 1 +sanjeev.in, 1 sanjose.cl, 1 sanjosegijon.com, 1 sanjosestorm.com, 1 @@ -129962,7 +129206,7 @@ santacruzcountyca.gov, 1 santacruzgalapagoscruise.com, 1 santafetx.gov, 1 -santaliwap.xyz, 1 +santahildegarda.co, 1 santaluciatirajana.com, 1 santamargarita.tk, 1 santamariadelaisla.tk, 1 @@ -129979,6 +129223,7 @@ santarosaca.gov, 1 santarosanm.gov, 1 santasofiastereo.tk, 1 +santateresaorganico.com, 1 santaynezchumash-nsn.gov, 1 santceloni.cat, 1 sante-actu.com, 1 @@ -130173,12 +129418,12 @@ saria.fun, 1 saribunga.id, 1 sarink.eu, 1 -sarisander.com, 1 saritas.com.tr, 1 sariyer.bel.tr, 1 sarj.ai, 1 sarjakuvakauppa.fi, 1 sarjas.tk, 1 +sarkarimap.org, 1 sarkarinaukriworld.net, 1 sarkaripixel.in, 1 sarkariresultz.in, 1 @@ -130236,6 +129481,7 @@ sastamalandemarit.fi, 1 sastd.com, 1 sasthyaseba.com, 1 +sastradinata.com, 1 sasugadesign.com, 1 sasusaku.com, 1 sasyabapi.com, 1 @@ -130264,7 +129510,6 @@ satellitetv.tk, 1 satheeshsbennet.tk, 1 satindolls.tk, 1 -satinn.pl, 1 satinwood.com.au, 1 satirelabs.com, 1 satiscation.com, 1 @@ -130287,13 +129532,13 @@ satramana.org, 1 satselect.tk, 1 satserwis.xyz, 1 +satsforseniors.com, 1 satsukidenki.co.jp, 1 satsukii.moe, 1 satsumi.tk, 1 satta-company.tk, 1 sattaresult.net, 1 sattaresult.net.in, 1 -sattoempreendimentos.com.br, 1 satuenergy.com, 0 saturdayenterprises.ga, 1 saturn-test.network, 1 @@ -130305,10 +129550,8 @@ satya-insights.com, 1 satyashodhak.com, 1 sau.cy, 1 -sauber-lab.com, 1 saubermacher.at, 1 saubooks.tk, 1 -saucelabs.com, 0 saucesmaster.com, 1 sauco.io, 1 saudecoluna.com, 1 @@ -130320,7 +129563,6 @@ saudiembassy.net, 1 saudiglasses.com, 1 saudinews.ml, 1 -saue.edu.ee, 1 sauenytt.no, 1 sauerbrey.eu, 1 sauerland-rundflug.de, 1 @@ -130344,7 +129586,6 @@ saunavoordeel.nl, 1 sauniertec.com, 1 saunyeden.pl, 1 -sauravdas.in, 1 saurel.me, 1 saurosmc.com, 1 saurusly.com, 1 @@ -130392,10 +129633,8 @@ savemyleads.com, 1 savemylicence.co.uk, 1 saveolga.tk, 1 -saveoncraft.com, 1 saveora.com, 1 saveora.shop, 1 -savepapajohns.com, 1 savestatecentral.tk, 1 savesubs.com, 1 savetech.tk, 1 @@ -130410,6 +129649,7 @@ savewildcats.life, 1 savewithupgrade.com, 1 saveworldpets.ga, 1 +savexxx.com, 1 saveyourbusiness.co.uk, 1 saveyourhouse.tk, 1 savicki.co.uk, 1 @@ -130430,9 +129670,7 @@ savorthemomlife.com, 1 savoryandpartners.com, 1 savour-magazine.co.uk, 1 -savourtheflavour.com.au, 1 savoystyle.com, 1 -savransafari.com, 1 savrn.com, 1 savunmasanayii.org, 1 savushkin.tk, 1 @@ -130488,6 +129726,7 @@ sayhi.com, 1 sayingimages.com, 1 saykiri.com, 1 +saylorsaccountant.com, 1 sayori.link, 1 sayprepay.com, 1 saythat.sh, 1 @@ -130558,6 +129797,7 @@ sbristolme.gov, 1 sbrouwer.org, 1 sbrownbourne.com, 0 +sbruder.de, 1 sbs-software.com, 1 sbs-studies.gr, 1 sbsc.se, 1 @@ -130565,7 +129805,6 @@ sbspectr.ru, 1 sbspp.ru, 1 sbsrv.ml, 1 -sbssoft.ru, 1 sbst.gov, 1 sbstatesman.com, 1 sbstattoo.com, 1 @@ -130574,7 +129813,6 @@ sc-artworks.co.uk, 0 sc-kantine.de, 1 sc-zhetisu.kz, 1 -sc019.com, 0 sc2labs.com, 1 sc2pte.eu, 1 sca-webdesign.be, 1 @@ -130588,7 +129826,6 @@ scaffoldingsandton.co.za, 1 scag9.com, 1 scalable.capital, 1 -scalableb2b.com, 1 scalaire.com, 1 scalaire.fr, 1 scale.at, 1 @@ -130611,7 +129848,6 @@ scamadviser.com, 1 scamangels.com, 1 scambistimaturi.com, 1 -scamorreliable.com, 1 scamp.ro, 1 scan-dent.com, 1 scan.co.uk, 1 @@ -130628,6 +129864,7 @@ scandinavia.ga, 1 scandinavian.net, 1 scandinaviancorner.tk, 1 +scandinavianhistorytours.se, 1 scandinaviantraveler.com, 1 scandiweb.com, 1 scandocs.ai, 1 @@ -130646,6 +129883,7 @@ scantower.io, 1 scanutracker.com, 1 scanyachat.cf, 1 +scanysis.com, 1 scanysis.one, 1 scape.pt, 1 scape.sg, 1 @@ -130698,7 +129936,6 @@ sceenfox.de, 1 scejournals.org, 1 scenadex.ga, 1 -scenalab.com, 1 scenari.eu, 1 scenari.ovh, 1 scenarp.pl, 1 @@ -130826,6 +130063,7 @@ schiriportal.ch, 1 schistosomulacellatlas.org, 1 schittscreek.shop, 1 +schizoid.cc, 1 schizoid.tk, 1 schizoids.net, 1 schizomatrix.cf, 1 @@ -130880,7 +130118,6 @@ schmiggywibblits.net, 1 schmitt-bruckbauer.de, 1 schmitt-max.com, 1 -schmitt.ws, 0 schmitzvertalingen.nl, 1 schmucker.it, 1 schmunzelgeist.de, 1 @@ -130909,13 +130146,11 @@ schody-rozycki.pl, 1 schoenheitsop.com, 1 schoenstatt-fathers.link, 1 -schoenstatt-fathers.us, 1 schoenstatt.link, 1 schoental.de, 1 schoepski.de, 1 schoknecht.one, 1 schoko-ferien.de, 0 -schokobebe.net, 1 schokoferien.de, 0 schokokeks.org, 1 scholar-sidekick.com, 1 @@ -130942,6 +130177,7 @@ scholtensupport.nl, 0 scholven.marketing, 1 scholz-kallies.de, 1 +schonstedt.com, 1 school-22.tk, 1 school-27-lpr.tk, 1 school-33.tk, 1 @@ -130982,7 +130218,6 @@ schoolscapesuk.com, 1 schoolshow.nl, 1 schoolsonice.nl, 1 -schoolsportportal.com.au, 1 schoolstreaks.com, 1 schooltransport.com.au, 1 schoolwork.bot, 1 @@ -131011,7 +130246,6 @@ schreinerei-jahreis.de, 1 schreinerei-schweikl.de, 1 schreinerei-wiesbaden.de, 1 -schreinert.com, 1 schrijnwerkerij-deconinck.be, 1 schrijnwerkerij-deconinck.com, 1 schrijverspunt.nl, 1 @@ -131038,7 +130272,7 @@ schuhwelt.de, 1 schuhzoo.de, 1 schuim.com, 1 -schuka-ai.ru, 1 +schuka-ai.ru, 0 schulden.tk, 1 schulderinsky.de, 1 schuldnerberatung-schulz.de, 1 @@ -131053,11 +130287,9 @@ schulung-eup.de, 1 schulz-partner-rechtsanwaelte.de, 1 schulze-gunst.de, 1 -schulze-realestate.de, 1 schulze.network, 1 schuman.tk, 1 schumanandmonnet.eu, 1 -schumannji.de, 1 schunako.ch, 1 schupp.io, 1 schutte.tk, 1 @@ -131071,6 +130303,7 @@ schuylercountyny.gov, 1 schuylerne.gov, 1 schuylkillcountypa.gov, 1 +schuylkillhub.com, 1 schwab-tech.de, 1 schwaben-kultur.de, 1 schwabenhaus-ka.de, 1 @@ -131084,6 +130317,7 @@ schwarzes-muenchen.de, 1 schwarztrade.cz, 1 schwarzwald-flirt.de, 1 +schwarzwald-it.com, 1 schwatzgelb.de, 1 schwedischezahnaerztin.com, 1 schwedischezahnaerztin.de, 1 @@ -131097,7 +130331,6 @@ schweyer-marti.ch, 1 schwienbacher-karl.it, 1 schwifty.cloud, 1 -schwiha.de, 1 schwimmschule-kleine-fische.de, 1 schwimmspass.schule, 1 schwinabart.com, 1 @@ -131121,6 +130354,7 @@ science360.gov, 1 scienceasfashion.ga, 1 sciencebase.gov, 1 +sciencecoach.org, 1 scienceeducation.tk, 1 scienceeurope.org, 1 sciencefictionbookclub.org, 1 @@ -131197,7 +130431,7 @@ scnsoft.om, 1 scnsoft.pl, 1 scnvision.com, 1 -scodeno.vn, 1 +scodeno.vn, 0 scoebg.org, 1 scoffable.com, 1 scognasoftware.it, 1 @@ -131212,7 +130446,6 @@ scoolcode.com, 1 scoolio.de, 1 scoop6.co.uk, 1 -scoopcake.com, 1 scoopcanada.com, 0 scootaloo.co.uk, 1 scootdelivery.co.uk, 1 @@ -131251,7 +130484,6 @@ scorpions.tk, 1 scorpiotankers.com, 1 scothauscounseling.com, 1 -scotia.financial, 1 scotiabank.ca, 1 scotlandrun.com, 1 scotscoop.com, 1 @@ -131263,14 +130495,12 @@ scottandtammy.com, 1 scottashley.tk, 1 scottbot.tk, 1 -scottbrand.com, 1 scottbroad.com.au, 1 scottcoil.gov, 1 scottcountyva.gov, 1 scottdayman.com, 1 scottech.com.au, 1 scottfischer.net, 1 -scottgalvin.com, 1 scotthelme.co.uk, 1 scotthelmesucks.com, 1 scottipc.com, 1 @@ -131333,6 +130563,7 @@ scrantonmma.com, 1 scrap.photos, 1 scrap.tf, 1 +scrapautobuyer.com, 0 scrapbookdecorations.ga, 1 scrapbot.cl, 1 scrapcarbrampton.ca, 1 @@ -131424,13 +130655,11 @@ scubaland.hu, 1 scul.net, 1 scullionandco.com, 1 -sculptclub.nl, 1 sculpteo.com, 1 sculptor.com, 1 sculpturesworldwide.tk, 1 scum.fr, 1 scunna.com, 1 -scunthorpemoneyman.com, 1 scuolabandistica.ch, 1 scuolaguidalame.ch, 0 scuolamazzini.livorno.it, 1 @@ -131454,7 +130683,6 @@ scylla.live, 1 sd-3c.com, 1 sd.af, 1 -sd44.ca, 1 sdaconsole.io, 1 sdadashboard.io, 1 sdaniel55.com, 1 @@ -131602,6 +130830,7 @@ searchforbeer.com, 1 searchforjohn.com, 1 searchfox.org, 1 +searchgurus.ca, 0 searchmore.dk, 1 searchpartners.dk, 1 searchperfumes.ga, 1 @@ -131623,7 +130852,6 @@ seashkey.com, 1 seasidestudios.co.uk, 1 seasistent.tk, 1 -seasoninghouse.com, 1 seasonlevel.com, 1 seasonsboutique.com.au, 1 seasonsof.berlin, 1 @@ -131640,7 +130868,7 @@ seattledevicerepair.com, 0 seattleduiattorneys.com, 1 seattlemesh.net, 1 -seattleplasticsurgery.com, 1 +seattleplasticsurgery.com, 0 seattlespectator.com, 1 seattleyachtclub.org, 1 seaview.gq, 1 @@ -131673,7 +130901,6 @@ sebastian-bergmann.de, 1 sebastian-bravo.com, 0 sebastian-elisa-pfeifer.eu, 1 -sebastian-goetz.com, 1 sebastian-haeutle.de, 1 sebastian-janich.de, 1 sebastian-kraus.me, 1 @@ -131682,7 +130909,6 @@ sebastian-michalke.de, 1 sebastian-walla.com, 1 sebastianblade.com, 1 -sebastianboldt.com, 1 sebastiandarhoi.cf, 1 sebastianforst.de, 1 sebastianhofmann.legal, 1 @@ -131734,6 +130960,7 @@ seclink.link, 1 seclms.net, 1 seclore.com, 1 +secmatters.com.au, 1 secnd.me, 1 secnet.ga, 1 secnews.gr, 1 @@ -131741,6 +130968,7 @@ secom.one, 1 secomea.com, 1 second-life-partner-ichien.com, 1 +second-ring.com, 1 secondchancejobsforfelons.com, 1 secondcq.org, 1 seconde-vie.immo, 1 @@ -131765,7 +130993,6 @@ secret-queen.ga, 1 secret-queen.ml, 1 secret.garden, 1 -secret4.eu, 1 secretagentclub.tk, 1 secretar.is, 1 secretary-schools.com, 1 @@ -131790,6 +131017,7 @@ secretservercloud.ca, 1 secretstomartialarts.tk, 1 secretworld.ml, 1 +secrift.com, 1 secrium.io, 1 secrt.ca, 1 secrt.is, 1 @@ -131804,7 +131032,6 @@ secthirty.com, 1 sectigo.com.ru, 1 sectigostore.com, 1 -sectio-aurea.org, 1 section-31.org, 1 section.io, 1 section508.gov, 1 @@ -131815,6 +131042,7 @@ sectrans.tk, 1 sectv.com, 1 secudoc.nl, 1 +secudocx.com, 1 secularweb.org, 1 seculia.co.jp, 1 seculynx.com, 1 @@ -131840,6 +131068,7 @@ secureauth.com, 1 securebot.ga, 1 securebuildingaccess.com, 1 +securebytes.be, 1 securecheck360.com, 1 securecloud.nz, 1 secureconnect.global, 1 @@ -131859,7 +131088,6 @@ securelogin.nu, 1 secureo.at, 1 secureobscure.com, 1 -secureonionhost.com, 1 secureonline.co, 1 securepatientarea.com, 1 secureprivacy101.org, 1 @@ -131915,7 +131143,6 @@ securitycin.com, 1 securitydelta.nl, 1 securityfest.com, 1 -securitygladiators.com, 1 securityheaders.com, 1 securityheaders.nl, 1 securityhq.com, 1 @@ -131955,7 +131182,6 @@ sedeb.fr, 1 sedefshipyard.com, 1 sedetecnicaizabal.com, 1 -sedico.mx, 1 sedicomm.com, 0 sedigit.com, 1 sedirector.net, 1 @@ -131965,7 +131191,6 @@ sedoexpert.nl, 1 sedoexperts.nl, 1 sedro-woolley.gov, 1 -seduxury.com, 1 seduzironline.com.br, 1 see-me.co, 1 see-now.co, 1 @@ -132063,6 +131288,7 @@ segnoadv.com, 0 segretario.it, 1 segriz.com, 1 +segueelectronics.com, 1 segulink.com, 1 segurancaresidencialbh.com.br, 1 segurdatacr.com, 1 @@ -132103,10 +131329,8 @@ seilbahntechnik.net, 1 seilgold.de, 1 seimo.cn, 1 -seineoparebrise.fr, 1 seinfeldquote.com, 1 seinolab.jp, 1 -seintec-ec.com, 0 seintje24.nl, 1 seira.tk, 1 seirdy.one, 1 @@ -132162,6 +131386,7 @@ selang.cf, 1 selang.ml, 1 selayar.vacations, 1 +selayoyuncak.com, 1 selber-coden.de, 1 selbst-schmiede.de, 1 selbst-schreinern.de, 0 @@ -132182,6 +131407,7 @@ selegiline.com, 1 selen.com.br, 1 selena-armavir.ml, 1 +selenablake.us, 1 selenapelletier.tk, 1 seleondar.ru, 1 selesnafes.com, 0 @@ -132210,7 +131436,6 @@ selfiestick.bg, 1 selfimprovementdaily.com, 1 selfishness.com, 1 -selfiys.com, 1 selfloath.in, 1 selfmade.id, 1 selfmade4u.de, 0 @@ -132227,7 +131452,6 @@ selkiemckatrick.com, 1 selkirkelementary.com, 1 sell2orbit.com, 1 -sell4service.com, 1 sellajoch.com, 1 sellbit.io, 1 sellcoins.top, 1 @@ -132242,16 +131466,13 @@ sellerssignals.com, 1 sellerstats.ru, 1 sellerteam.tk, 1 -sellerwiz.io, 1 sellguard.pl, 1 sellingsherpa.com, 0 sellitnow.me, 1 sellittobobal.com, 0 sellmymobile.com, 1 -sellmyshares.com.au, 1 sello.com, 1 sellocdn.com, 1 -selloenseco.com, 1 selloqr.com, 1 sellorbuy.uk, 1 sellorbuy.us, 1 @@ -132261,7 +131482,6 @@ selltobpp.com, 1 selltoec.com, 1 selltogaprime.com, 1 -selltothousandhills.com, 1 sellusdtindubai.com, 1 sellwithsquare.com, 1 selma.com, 1 @@ -132277,7 +131497,7 @@ selo.ru, 1 seloc.org, 1 seloeletronico.com.br, 1 -selsehcc.org.uk, 1 +selsehcc.org.uk, 0 selsovet56.tk, 1 seltek.su, 1 seltendoof.de, 1 @@ -132294,7 +131514,6 @@ semantics.ga, 1 semari.or.id, 1 sembosihosting.tk, 1 -semboyan35.com, 1 sembska.de, 1 sembyotic.com, 1 semcensurabrag.com.br, 1 @@ -132313,7 +131532,6 @@ semicon.cc, 1 semiconductors.gov, 1 semicvetik.tk, 1 -semidotinfotech.com, 1 seminariruum.ee, 1 seminarraum-isny.de, 1 semine.com, 1 @@ -132400,12 +131618,14 @@ sendingbee.com, 1 senditvia.email, 1 sendmail.com, 1 +sendnetworkiowa.com, 1 sendnomi.com, 1 sendo.info, 1 sendonce.io, 1 sendonomics.com, 1 sendpass.is, 1 sendpulse.com, 1 +sendsecret.io, 1 sendsonar.com, 1 sendsteps.com, 1 sendthisfile.com, 1 @@ -132425,7 +131645,6 @@ senibonggolfclub.com.my, 1 senior-railcard.co.uk, 1 senior-sigan.ml, 1 -seniorcommunitymedia.com, 1 seniorem.eu, 1 seniorhelpers.com, 1 seniorhost.net, 1 @@ -132470,7 +131689,7 @@ senshudo.tv, 1 sensibleita.tk, 1 sensiblelanecounty.tk, 1 -sensiblepcsupport.co.uk, 1 +sensiblepcsupport.co.uk, 0 sensical.net, 0 sensoblock.com, 1 sensoboost.com, 1 @@ -132518,7 +131737,6 @@ sentrafield.com, 1 sentral.com, 1 sentry.io, 1 -sentrygateopener.com, 1 sentrysoftware.com, 1 sentworks.com, 0 senvion.in, 1 @@ -132529,12 +131747,12 @@ seo-dr-it.com, 1 seo-dvizh.ru, 1 seo-forum.nu, 1 -seo-inc.ru, 0 seo-linz.at, 1 seo-obmen.tk, 1 seo-phpbb.cf, 1 seo-piar.tk, 1 seo-portal.tk, 1 +seo-promotion.com.ua, 1 seo-promox.cf, 1 seo-promox.tk, 1 seo-reality.cf, 1 @@ -132608,7 +131826,6 @@ seopiar.tk, 1 seoplus.com, 1 seopost.ga, 1 -seopredator.com, 1 seoprnews.cf, 1 seopromotion.tk, 1 seoproof.tk, 1 @@ -132627,12 +131844,12 @@ seoshanti.ru, 0 seoshnik.tk, 1 seosmart.gq, 1 +seosmi.ru, 1 seosof.com, 1 seosos.gq, 1 seosos.ml, 1 seospace.ro, 1 seospecialist.ma, 1 -seospecialistpro.com, 1 seosprint.gq, 1 seostrit.cf, 1 seostrit.tk, 1 @@ -132663,7 +131880,9 @@ separacioniglesiaestado.tk, 1 separate.ly, 1 sepenggal.info, 1 +sepiarestaurant.com.au, 1 sepio.systems, 1 +sepiocyber.com, 1 seplatenergy.com, 1 sepmgroupec.com, 1 seprobot.cc, 0 @@ -132711,6 +131930,7 @@ serban.ro, 1 serbanpaun.ro, 1 serbiaonline.tk, 1 +serbisyoprovider.com, 1 serc.ac.uk, 1 sercanazizoglu.com, 1 sercasindustry.tk, 1 @@ -132729,6 +131949,7 @@ serenavillage.net, 1 serenavillageresidence.com, 1 serendeputy.com, 1 +serendipity-bg.com, 1 serendipitylabs.com, 1 serenesolutions.nl, 1 serengetiparktanzania.com, 1 @@ -132792,7 +132013,6 @@ serkanyarbas.com.tr, 1 serkozh.me, 1 sermerkt.is, 1 -sermescro.ai, 1 sernate.com, 1 seroquel50mg.tk, 1 seroquelonline.ga, 1 @@ -132804,6 +132024,7 @@ serpes.nz, 1 serphost.ml, 1 serponado.org, 1 +serpterminal.com, 1 serptoolsuite.com, 1 serpuhof.ru, 0 serradiesel.com.br, 1 @@ -132887,6 +132108,7 @@ servertutorial.eu, 1 serveru.us, 1 servetten-groothandel.nl, 1 +servetty.com, 1 serveur-ark.fr, 1 serveur.nl, 1 serveursminecraft.org, 1 @@ -132935,7 +132157,6 @@ servicespot.ca, 1 servicestechnologiquesam.ca, 1 servicestelle-jba.de, 1 -servicevie.com, 1 servicewash.it, 1 servicii-funerare.tk, 1 servicii-wordpress.ro, 1 @@ -132945,7 +132166,6 @@ serviciomigraciones.cl, 1 serviciosdeti.gq, 1 serviciosfncs.com, 1 -serviciosfreelance.net, 1 servicioskoinonia.org, 1 serviciosprevisionfuneraria.com, 1 serviciotecnicoencomputacion.com.ve, 0 @@ -132956,7 +132176,7 @@ servietten-grosshandel.de, 1 serviettes-et-plus.com, 1 servilletas-de-papel.es, 1 -servilletas-de-papel.mx, 1 +servilletas-de-papel.mx, 0 servingdumplings.com, 1 servingroddick.tk, 1 servingseniors.org, 1 @@ -132967,7 +132187,6 @@ servisebi.ge, 1 servisibursa.net, 1 servisin.id, 1 -servispasaoglu.com.tr, 1 servispcznojmo.cz, 1 servitel.ga, 1 servitor.cf, 1 @@ -132997,12 +132216,11 @@ serwis-telewizorow.pl, 1 serwispv.eu, 1 serwistomy.pl, 1 -serworkribeirao.com.br, 1 serx.cf, 1 seryovpn.com, 1 ses-offshore.com, 1 ses-sandmann.de, 1 -sesa.org, 1 +sesa.org, 0 sesam-biotech.com, 1 sesamomusical.tk, 1 sesar-academy.eu, 1 @@ -133052,13 +132270,11 @@ sethvargo.com, 1 seti-germany.de, 0 setin.srl, 1 -setis.com.br, 1 setkit.net, 1 -setmore.com, 1 setof88.com, 1 setphaserstostun.org, 0 setpointmedical.com, 1 -setsport.es, 1 +setsport.es, 0 settberg.de, 1 settembre.com, 1 setterirlandes.com.br, 1 @@ -133163,7 +132379,6 @@ sexocomgravidas.com, 0 sexogsamfunn.no, 1 sexogsamfunn.online, 1 -sexohab.guru, 1 sexokiev.love, 1 sexokolomna.com, 1 sexokrasnogorsk.com, 1 @@ -133175,7 +132390,6 @@ sexonwax.com, 0 sexopolis.gr, 1 sexorzn.red, 1 -sexorzn.xyz, 1 sexosintabues30.com, 1 sexotomsk.com, 1 sexoyalta.love, 1 @@ -133201,24 +132415,14 @@ sexwithstrangersshow.com, 1 sexworking.com, 1 sexworkrights.com, 0 -sexxyangie.com, 1 -sexy-mom.org, 1 sexy-periscope.ml, 1 -sexyanne.net, 1 sexybuttpics.com, 1 sexyfotosvandep.nl, 1 sexyhub.com, 1 -sexyjanahot.com, 1 -sexyjenjen.net, 1 sexyleni.org, 1 sexynakedgirls.pics, 1 -sexynaty.org, 1 -sexynoemi.com, 1 sexyporn.tv, 1 -sexyrachel846.com, 1 -sexystine.net, 1 sexyteens.net, 1 -sexyvenushuegel.org, 1 seyfarth.de, 1 seykapuertasautomaticas.com, 1 seymourfanclub.tk, 1 @@ -133230,6 +132434,7 @@ seyv.io, 1 seyyidoglukuyumculuk.com, 1 sezane.com, 1 +sezen.pro, 1 seznam-clasic.cz, 1 seznam-classic.cz, 1 seznam-cz-tv.cz, 1 @@ -133305,7 +132510,8 @@ sfg-net.org, 1 sfg-nordholz.de, 1 sfhp.org, 1 -sfile.eu, 1 +sfi.org.pl, 1 +sfi.pl, 1 sfilm.cz, 1 sfinance.cz, 1 sfinance.eu, 1 @@ -133321,7 +132527,6 @@ sfotbal.cz, 1 sfotbalem.cz, 1 sfpuc.gov, 1 -sfrms-app.fr, 1 sfslashing.com, 1 sftool.gov, 1 sfumusic.com, 1 @@ -133410,7 +132615,6 @@ shademid.com, 0 shadesmart.org.au, 1 shadesofgray.law, 1 -shadesofgrayadr.com, 1 shadesofgraylaw.com, 1 shadex.net, 1 shadikhan.tk, 1 @@ -133428,7 +132632,6 @@ shadowknight.tk, 1 shadowlurker.com.au, 1 shadowmas.ddns.net, 1 -shadowmorph.info, 1 shadowsing.com, 1 shadowsocks.ac, 1 shadowsocks.au, 1 @@ -133531,6 +132734,7 @@ shanehartman.net, 1 shaneparker.tk, 1 shanerichards.tk, 1 +shaneserver.uk, 1 shanevandermeer.com, 1 shanewadleigh.com, 1 shanghaiair.com, 1 @@ -133545,6 +132749,7 @@ shankaboot.ps, 1 shankangke.com, 1 shanli.tk, 1 +shanma.store, 1 shanprop.co.za, 1 shansing.cn, 1 shansing.com, 1 @@ -133674,6 +132879,7 @@ shaunandamyswedding.com, 1 shaunc.com, 1 shaundanielz.com, 1 +shaunleishmanportfolio.com, 1 shavedpics.com, 1 shavedpussy.tv, 1 shavedpussypics.com, 1 @@ -133681,6 +132887,7 @@ shavit.space, 1 shawangunkjournal.com, 1 shawanocountywi.gov, 1 +shawarmacapital.net, 1 shawarmapressfranchise.com, 1 shawcentral.ca, 0 shawclan.id.au, 1 @@ -133702,7 +132909,6 @@ shawnz.ca, 1 shawnz.org, 1 shawty.tk, 1 -shayestehtabar.com, 1 shaytan.tk, 1 shazam.net, 1 shazbots.org, 1 @@ -133750,7 +132956,6 @@ shefburgers.com, 1 sheffield-wednesday-fc.tk, 1 sheffieldjob.net, 1 -sheffieldmoneyman.com, 1 shefftunes.tk, 1 shehaal.com, 1 shehata.com, 1 @@ -133810,7 +133015,6 @@ shenghaiautoparts.net, 1 shenghuang.tk, 1 shengrenyu.com, 1 -shengxinfu.com, 1 shengyi.art, 1 shenmaysw.com, 1 shentengtu.idv.tw, 1 @@ -133835,6 +133039,7 @@ sheriffpendletoncountyky.gov, 1 sheriffwashingtoncountymaine.gov, 1 sherissims.tk, 1 +shermanatlas.com, 1 shermancountyks.gov, 1 shermancountyne.gov, 1 shermanms.gov, 1 @@ -133946,6 +133151,7 @@ shinbukan-katorishintoryu.org, 1 shindocuba.tk, 1 shine.studio, 0 +shineads.in, 1 shineiberia.tv, 1 shineindiarktutorial.ml, 1 shineleds.ga, 1 @@ -133983,6 +133189,7 @@ shipard.com, 1 shipard.cz, 1 shipard.org, 1 +shipatelier.com, 1 shipbee-lb.com, 1 shipbuddies.com, 1 shipeasyco.com, 1 @@ -134013,7 +133220,6 @@ shiqi1.com, 1 shiqishidai.cc, 1 shiqisifu.cc, 1 -shiralee.com, 1 shiraminerals.ltd, 1 shiranaitenshi.tk, 1 shirazi.tk, 1 @@ -134055,9 +133261,8 @@ shivenjoshi.com, 1 shiwa-shop.ml, 1 shiwu.com, 1 -shixunet.net, 1 +shixunet.net, 0 shiyouqkl.com, 1 -shiyutech.com, 1 shizoworld.de, 1 shizuoka-dental.com, 1 shj.technology, 1 @@ -134073,7 +133278,6 @@ shkololo.gq, 1 shkololo.ml, 1 shkololo.tk, 1 -shlang-vial.ru, 1 shlang.tk, 1 shlemenkov.by, 1 shlmag.com, 1 @@ -134104,7 +133308,6 @@ shoelevel.com, 1 shoenji.net, 1 shoerenew.ca, 1 -shoesexpo.com, 1 shoesoutlet.tk, 1 shoestorebiz.tk, 1 shoestorenet.tk, 1 @@ -134165,6 +133368,7 @@ shopdiy.com, 1 shopdougssupermarket.com, 1 shopdullestowncenter.com, 1 +shopeco.fr, 1 shopera.ch, 1 shopfazz.com, 1 shopforeverproducts.com, 1 @@ -134380,12 +133584,12 @@ shopwinedirect.com, 1 shopx.co.il, 1 shopyub.com, 1 -shopzona.biz, 1 shore.co.il, 1 shorebreaksecurity.com, 1 shorecomp.com, 1 shoredweb.com, 1 shorehamfort.co.uk, 1 +shorelinehotel.ie, 1 shorelinelaserdesigns.com, 1 shorelinewebdesigns.com, 1 shoresofshawneebend.com, 1 @@ -134399,6 +133603,7 @@ shorshield.com, 1 short-games.gq, 1 short-term-plans.com, 1 +short.io, 1 shortaudition.com, 1 shortaudition.net, 1 shortaudition.tv, 1 @@ -134423,7 +133628,6 @@ shortwave.tk, 1 shortyoururl.net, 1 shoruihokan.com, 1 -shory.sa, 1 shoshonecityid.gov, 1 shoshovis.com, 1 shossain.tk, 1 @@ -134434,6 +133638,7 @@ shotoniphone.ga, 1 shotsbyferry.nl, 1 shotsleeve.com, 1 +shou.net, 1 shou.si, 1 shoubyy.com, 1 shoudanren.jp, 1 @@ -134485,7 +133690,6 @@ showsonar.com, 1 shoyuf.top, 1 shp.is, 1 -shpfy-manager.com, 1 shpil.by, 1 shpilevsky.name, 1 shpiliak.com, 1 @@ -134513,6 +133717,7 @@ shrinkhub.com, 1 shrinkjson.com, 1 shrinkmydoc.com, 1 +shroomage.com, 1 shroomery.org, 1 shropshireautonomy.co.uk, 1 shropshirebowls.tk, 1 @@ -134586,13 +133791,14 @@ shuttelportal.nl, 1 shutter-shower.com, 1 shutteringsystems.com, 1 -shuttersandshadesnearme.com, 1 +shuttersandshadesnearme.com, 0 shutterstreetblog.com, 1 shuttle.travel, 1 shutts.com, 1 shutupbabyiknowit.party, 1 shuuho.com, 1 shuuhoo.com, 1 +shuum.agency, 1 shuvodeep.de, 1 shuxiaoyi.cn, 1 shuzicai.cn, 1 @@ -134732,7 +133938,7 @@ siegemund-frankfurt.de, 1 siegfried.com.pe, 1 siegfriedandjensen.com, 1 -sieglercars.ch, 1 +sieglercars.ch, 0 siegprod.tk, 1 sieh.es, 0 sieiro.tk, 1 @@ -134783,6 +133989,7 @@ sigabrt.org, 1 sigateway.com, 1 sigb.sh, 1 +sigconstruction.com, 1 sigecloud.com.br, 1 sigedtour.gov.bf, 1 sigep.org, 1 @@ -134849,7 +134056,6 @@ signaturecrs.com, 1 signaturedallas.com, 0 signatureplants.co.nz, 1 -signatureprivatetours.com, 1 signaturereport.org, 1 signaturerx.co.uk, 1 signaturesmilesstudio.com, 1 @@ -134873,6 +134079,7 @@ signingcloud.com, 1 signitysolutions.com, 1 signix.net, 1 +signlo.com, 1 signmore.com, 1 signoffsemiconductors.com, 1 signora.gr, 1 @@ -134905,11 +134112,10 @@ sihha.ai, 1 sihuysw.com, 1 sihy.uk, 1 +siiiiiixth.com, 1 siika.solutions, 1 -siikaflix.tv, 1 siikli.fi, 1 siimonreynolds.com, 1 -siimustilak.edu.ee, 1 sijimi.cn, 1 sik-it.nl, 1 sikaranbrotherhood.tk, 1 @@ -134928,7 +134134,8 @@ silagra.ml, 1 silalesa.ml, 1 silasborowy.de, 1 -silatdefense.fr, 0 +silasol.la, 1 +silatdefense.fr, 1 silbercloud.com, 1 silberkiste.com, 1 silbermann.ch, 1 @@ -134966,9 +134173,9 @@ silken-madame.tk, 1 silkon.net, 1 silkproducts.tk, 1 -silkrituals.com, 1 silkroad-iraq.com, 1 silkroad.com, 1 +sillage-olfactif.fr, 1 sillasdegamer.es, 1 silleiro.com, 1 sillisalaatti.fi, 1 @@ -135072,7 +134279,6 @@ silveris.com, 1 silverit.co, 1 silverkattens.tk, 1 -silverlakeconsult.com, 1 silverlakeks.gov, 1 silverlinkz.net, 1 silvermatch.ga, 1 @@ -135085,6 +134291,7 @@ silverspringdowntown.com, 1 silverstyle.ua, 1 silvertas.com, 1 +silvertine.technology, 1 silvertoken.com, 1 silvertoncolorado.com, 1 silvertorrents.cf, 1 @@ -135170,6 +134377,7 @@ simon3k.moe, 1 simonastallone.com, 1 simonbondo.dk, 1 +simonbuenemann.org, 1 simoncommunity.org.uk, 0 simoncotsworth.com, 1 simone-deyzel.com, 1 @@ -135177,7 +134385,7 @@ simone.sh, 1 simoneicolaro.online, 1 simonetti.nl, 1 -simonevans.uk, 1 +simonevans.uk, 0 simonewebdesign.it, 1 simonfischer.info, 1 simonhirscher.de, 1 @@ -135273,6 +134481,7 @@ simplex-q.com, 1 simplex-rm.com, 1 simplexgame.net, 1 +simplexicity.com, 1 simplexum.com, 1 simplexwireless.com, 1 simplia.cz, 0 @@ -135326,6 +134535,7 @@ simplyveritext.com, 1 simplyvoting.com, 1 simpplr.com, 1 +simpriest.com, 1 simprosuite.com, 1 simpson.edu, 1 simpsoncountyky.gov, 1 @@ -135363,7 +134573,6 @@ simsmotorshop.be, 1 simsnieuws.nl, 1 simstarstyle.tk, 1 -simtouch.com, 1 simulatedattack.com, 1 simulfund.com, 1 simulhost.com, 1 @@ -135392,9 +134601,7 @@ sinanozpinar.com, 1 sinanozpinar.nl, 1 sinapuros.tk, 1 -sinarbaktiperdana.id, 1 sinatralegal.com, 1 -sinavelvet.com, 1 sinavyo.ml, 1 sincelockdown.co.uk, 1 sincemydivorce.com, 1 @@ -135445,6 +134652,8 @@ singita.com, 1 single-in-stuttgart.de, 1 single-invoice.co, 1 +singleauth.io, 1 +singleauth.ru, 1 singlecellcourse.org, 1 singleeuropeansky.aero, 1 singlehandedsailing.tk, 1 @@ -135478,7 +134687,7 @@ sinnvoll-online.info, 1 sino.com, 1 sinobrake.org, 1 -sinoexpo.com, 1 +sinoconcept.com, 1 sinog.si, 0 sinoiptv.com, 0 sinok.tk, 1 @@ -135490,7 +134699,6 @@ sinopx.cf, 1 sinoscandinavia.se, 1 sinot.info, 1 -sinotouch.com, 1 sinpermiso.info, 1 sinquin.eu, 1 sinsalida.tk, 1 @@ -135506,7 +134714,6 @@ sintaksenjadigital.com, 1 sintas.lt, 1 sintaxis.org, 1 -sintegrapi.com.br, 1 sinterama.biz, 1 sinterklaas-spelletjes.nl, 1 sinterklaasnet.tk, 1 @@ -135530,7 +134737,6 @@ sipa.nc, 1 sipa.pf, 1 sipadmin.ru, 1 -siparisecza.com, 1 sipayikhealth.com, 1 sipd.go.id, 0 sipede.tk, 1 @@ -135542,6 +134748,7 @@ sipsevdi.com.tr, 1 sipstix.co.za, 1 siptls.com, 1 +sipwealthmanagement.co.uk, 1 sipyuru.com, 1 sipyuru.lk, 1 siqi.wang, 1 @@ -135556,7 +134763,6 @@ sircon.no, 1 sirena.ml, 1 sirenassociates.com, 0 -sirenasweet.net, 1 sirencallofficial.com, 1 sirenequestrianvaulting.co.uk, 1 sirenequestrianvaulting.com, 1 @@ -135584,7 +134790,6 @@ sirpsycho.tk, 1 sirram.cloud, 1 sirram.de, 1 -sirupybartonik.cz, 1 sirvio.eu, 1 sirvoy.ca, 1 sirvoy.co.nz, 1 @@ -135682,6 +134887,7 @@ sitecreation.tk, 1 sitecreator.tk, 1 sitecrew.cf, 1 +sitedownforme.com, 1 sitedynamix.co.uk, 1 siteforce.com, 1 sitehizlandir.com, 1 @@ -135692,6 +134898,8 @@ sitelinks.ga, 1 sitelinks.ml, 1 sitelint.com, 1 +sitemachine.nl, 1 +sitemai.eu, 1 sitemap.solutions, 1 sitemaxiphilippe.ch, 1 sitemydesk.fr, 1 @@ -135746,7 +134954,6 @@ siulam-wingchun.org, 1 siuleun.ddns.net, 1 siusoon.net, 1 -sivaacademy.net, 1 sivaru.tk, 1 sivizius.eu, 1 sivussa.com, 1 @@ -135774,6 +134981,7 @@ sixtiesgroovemachine.nl, 1 sixtwothree.org, 1 siyahiblog.com, 1 +siyakhulaelevators.co.za, 1 siyako.com, 1 siyanie-clean.ru, 1 siyuan.com, 1 @@ -135799,7 +135007,6 @@ sjede.cz, 1 sjeverni.info, 1 sjfss.marketing, 1 -sjg.us, 1 sjid.co.uk, 1 sjleisure.co.uk, 1 sjlrc.com, 1 @@ -135846,7 +135053,6 @@ skalniak.pl, 1 skamper.tk, 1 skandia.se, 1 -skankofamerica.com, 1 skara.se, 1 skarke.se, 1 skarox.com, 1 @@ -135890,7 +135096,6 @@ skeller.eu, 1 skendongpoetry.com, 1 skepneklaw.com, 0 -skepp.com, 1 skeppsbrons.se, 1 skepticalsports.com, 1 skeptichaven.org, 1 @@ -135905,13 +135110,11 @@ sketchmonk.tk, 1 sketchnote.co, 0 sketchy.tk, 1 -skezi.eu, 1 skgzberichtenbox.nl, 1 skhaz.io, 1 skhidnitsa.com.ua, 1 skhiratemara.ma, 1 skhire.co.uk, 1 -skhoop.cz, 1 skhosting.eu, 1 skhron.com.ua, 1 skhron.eu, 1 @@ -135954,6 +135157,7 @@ skillai.hk, 1 skilldnsproc.com, 1 skillfloor.com, 1 +skillissue.tech, 1 skillmoe.at, 1 skillnestpro.cloud, 1 skillogic.com, 1 @@ -135988,7 +135192,7 @@ skinfoodpeachcotton.tk, 1 sking.io, 1 skinlogic.org, 1 -skinmarket.co, 1 +skinmain.com, 1 skinmingle.com, 1 skinmodo.com, 1 skinna.mx, 1 @@ -136017,9 +135221,8 @@ skippy.dog, 0 skipr.co, 1 skipr.ninja, 1 -skiptadiabetes.com, 1 skipton.io, 1 -skiptontownhall.co.uk, 1 +skiptontownhall.co.uk, 0 skiriahn.guru, 1 skirted.cf, 1 skirts.tk, 1 @@ -136047,11 +135250,8 @@ sklo24.com.ua, 1 skloposud.com, 1 sklotechnik.cz, 1 -sklypas.com, 1 -skm.dk, 1 skmedia.ga, 1 skmsport.com, 1 -skoander.com, 1 skob.no, 1 skoda-im-dialog.de, 1 skodapower.tk, 1 @@ -136098,6 +135298,7 @@ skpracta.tk, 1 skprhome.i234.me, 1 skram.de, 1 +skream.tv, 1 skrepnek-sidebar.tk, 1 skreporting.com, 1 skreutz.com, 1 @@ -136178,7 +135379,6 @@ skyder.com.mx, 0 skyder.mx, 0 skydivegeronimo.com.au, 1 -skydiverecuador.com, 1 skydivingexperiences.co.uk, 1 skydragoness.com, 1 skydrive.live.com, 0 @@ -136226,10 +135426,12 @@ skylineservers.com, 1 skylinkitsolution.com, 1 skylocker.net, 1 +skyloopbeats.com, 1 skyltd.com.ua, 1 skyltmax.se, 1 skymail.de, 1 skymass.xyz, 1 +skyminds.net, 1 skymkmk.com, 1 skymonk.tk, 1 skynamo.com, 0 @@ -136250,6 +135452,7 @@ skype.com, 0 skypech.com, 1 skypicshd.com, 1 +skyplanny.com, 1 skyportcloud.com, 1 skyqueen.cc, 1 skyquid.co.uk, 1 @@ -136371,7 +135574,6 @@ slatteryauctions.com.au, 1 slaughter.com, 1 slaughterhouse.fr, 1 -slaughters.club, 1 slava.ml, 1 slavasoloviev.com, 1 slavasveta.info, 1 @@ -136387,7 +135589,6 @@ slay.tools, 1 slayden.com, 0 slayersonline.net, 1 -slbbiromaru.sch.id, 1 slbetx.com, 1 slbknives.com, 1 slbm.com.au, 1 @@ -136399,7 +135600,7 @@ sldonline.org, 1 sledwyoming.com, 1 sleekfellow.com, 1 -sleekflow.io, 1 +sleekflow.io, 0 sleekplan.com, 1 sleekzone.bg, 1 sleep-go.info, 1 @@ -136447,6 +135648,7 @@ slhn.org, 1 sli.do, 1 slicedpies.com, 1 +slicedtoawqaf.com, 1 sliceone.com, 1 slicticka.cz, 1 slide.cz, 1 @@ -136499,7 +135701,6 @@ slite.com, 1 slivkadesigns.tk, 1 slix.io, 1 -slizzrapp.com, 1 slks.dk, 1 sllabonneetoile.fr, 1 sllatina.tk, 1 @@ -136546,11 +135747,9 @@ slothless.com, 1 sloths.org, 1 sloticagames.com, 1 -slotjava.com.br, 1 slotjava.es, 1 slotjava.it, 1 slotlist.info, 1 -slotmad.com, 1 slotsinspector.com, 1 slotsup.com, 1 slouching.ga, 1 @@ -136578,7 +135777,8 @@ slrd-isperih.com, 1 slrealty.ru, 1 slrie.de, 1 -sls.ltd, 1 +slrp.com.au, 1 +sls.ltd, 0 slt24.de, 1 slubzcharakterem.pl, 1 sluciaconstruccion.com, 1 @@ -136706,6 +135906,8 @@ smart-vilp.com, 1 smart-wind.ru, 1 smart-zona.tk, 1 +smart.in, 1 +smart.ks.ua, 1 smart11.ai, 1 smartacademy.ge, 1 smartagilesolution.com, 1 @@ -136749,7 +135951,6 @@ smartertools.online, 1 smartertowing.com, 1 smartest-trading.com, 1 -smartestate.com, 1 smartevals.com, 1 smartfaktor.pl, 1 smartfire.pt, 1 @@ -136768,15 +135969,16 @@ smartguardzone.kr, 1 smarthdd.com, 1 smarthis.com, 1 +smarthomecompared.com, 1 smarthomegeldermalsen.nl, 1 smarthrms.com, 1 +smarthus-elektro.no, 1 smartick.com.do, 1 -smartiflix.com, 1 smartius.it, 1 smartjoin.style, 1 smartland.com, 1 smartlandapartments.com, 1 -smartlandenergy.com, 0 +smartlandenergy.com, 1 smartleads.tk, 1 smartliferd.ml, 1 smartlinecomputers.nl, 1 @@ -136788,7 +135990,6 @@ smartlogstock.com, 1 smartlogtower.com, 1 smartlooks.es, 1 -smartmail.io, 1 smartmail24.de, 1 smartme.pl, 1 smartmeal.ru, 1 @@ -136872,7 +136073,7 @@ smashingconf.com, 0 smashingmagazine.com, 1 smashnl.tk, 1 -smashrecyclers.ca, 0 +smashrecyclers.ca, 1 smashteam.org, 1 smatzone.in, 1 smavesto.de, 0 @@ -136883,6 +136084,7 @@ smbabyshop.gr, 1 smbc.direct, 1 smbcmanubank.com, 1 +smbcrm.com, 1 smbi-gelblasterhq.com.au, 1 smcacre.gov, 1 smcconsulting.be, 0 @@ -136908,6 +136110,7 @@ smeloan.sg, 1 smereka-frnt.de, 1 smeso.it, 1 +smet.cz, 1 smeta.ml, 1 smetak.cz, 1 smetbuildingproducts.com, 1 @@ -136968,6 +136171,7 @@ smithf.red, 1 smithikakart.in, 1 smithmont.com, 1 +smithmountainlake.com, 1 smithsonian.gov, 1 smithsstational-fpd.gov, 1 smithsstational.gov, 1 @@ -136977,7 +136181,6 @@ smithwealth.com.au, 1 smits.com, 1 smits.frl, 1 -smitsdesigncenter.nl, 1 smitsmail.net, 1 smittysfurniture.com, 1 smkn1luragung.sch.id, 0 @@ -136990,7 +136193,6 @@ smmarab.com, 1 smmcab.ru, 1 smmedia.cz, 1 -smmgods.net, 1 smmlaba.io, 1 smmog.tk, 1 smmpanelweb.com, 1 @@ -137032,10 +136234,8 @@ smolnikova.tk, 1 smolny.org, 1 smolsites.eu, 1 -smolyanvote.com, 1 smoo.st, 1 smooth-e.net, 1 -smoothambler.com, 1 smoothics.at, 1 smoothics.com, 0 smoothics.eu, 1 @@ -137071,6 +136271,7 @@ smsben.com, 0 smsenlinea.com, 1 smsg-dev.ch, 0 +smsgo.com.br, 1 smshub.com, 1 smsinger.com, 1 smsk.email, 1 @@ -137110,6 +136311,7 @@ smys.uk, 1 smzero.com.br, 1 sn0int.com, 1 +sn3.io, 1 snab-land.ru, 1 snab-ural.ga, 1 snaboitiz.com, 1 @@ -137136,11 +136338,11 @@ snakeoil.dedyn.io, 1 snakesandladders.tk, 1 snakesolid.nl, 1 +snaketech.com.br, 1 snap-ci.com, 1 snapaffiliate.net, 1 snapappointments.com, 1 snapbooth.online, 1 -snapbuy.shop, 1 snapbuzz.tk, 1 snapewife.com, 1 snapfairs.com, 1 @@ -137174,7 +136376,6 @@ snder.co, 1 snea-kers.tk, 1 sneak.berlin, 1 -sneakercrib.co.za, 1 sneakergangusa.com, 1 sneakers-sports.tk, 1 sneakers88.it, 1 @@ -137270,7 +136471,6 @@ snowdy.dk, 1 snowdy.eu, 1 snowdy.link, 1 -snowfinancialllc.com, 1 snowflakeaz.gov, 1 snowhana.com, 1 snowhaze.ch, 1 @@ -137340,7 +136540,6 @@ sobaudon.f5.si, 1 sobchak.ga, 1 sobieray.dyndns.org, 1 -sobkite.com, 1 soblaznenie.ru, 1 soblaznenie2.ru, 1 sobre.tk, 1 @@ -137421,7 +136620,6 @@ socialresponsibility.nl, 1 socials.gq, 1 socialsecurity.gov, 0 -socialskillscenter.com, 1 socialstandards.com, 1 socialstrata.com, 1 socialsurvivalist.net, 1 @@ -137435,7 +136633,6 @@ socialtranslation.ga, 1 socialtrends.pl, 1 socialwave.tk, 1 -socialworklicensemap.com, 1 socialworkout.net, 1 socialworkout.org, 1 socialworkout.tv, 1 @@ -137491,6 +136688,7 @@ sodafilm.de, 1 sodalai.tk, 1 sodandlandscaping.services, 1 +sodco.org, 1 sodel-sa.eu, 1 sodeliciousdairyfree.com, 1 soderestore.com, 1 @@ -137565,7 +136763,6 @@ softcreatr.de, 1 softekontrack.com, 1 softelectronet.tk, 1 -softenger.com, 1 softforge.co.uk, 1 softfuture.tk, 1 softgamez.net, 1 @@ -137606,7 +136803,6 @@ softview.tk, 1 software-tech.tk, 1 software-voor-projecten.nl, 1 -software.rocks, 1 softwareag-stage.cloud, 1 softwarebay.de, 0 softwarebeveiligingtestdomein.be, 1 @@ -137626,6 +136822,7 @@ softwing.de, 1 softwsabri.be, 1 softx.tk, 1 +softycomp.co.za, 1 sofy.rs, 1 sofyad.com, 1 sog-gilde.tk, 1 @@ -137658,7 +136855,6 @@ soissons-technopole.org, 1 sojern.com, 1 soji.io, 1 -soka.one, 1 sokak-sanati.tk, 1 sokb.cn, 0 sokenconstruction.com, 1 @@ -137673,19 +136869,20 @@ sokouchousa.net, 1 sokrabatt.se, 1 sol-3.de, 0 -sol-design.jp, 1 +sol-design.jp, 0 sol-negro.tk, 1 sol.de, 1 sol24.net, 1 sola.re, 1 sola.security, 1 +sola321.com, 1 solaland.co.uk, 1 solalnathan.com, 1 solalt.com, 1 solana-active.tk, 1 solanacasinos.io, 1 solandsimonasphalt.com, 1 -solanets.com, 1 +solanets.com, 0 solanocounty.gov, 1 solanowonen.nl, 1 solar-projects.eu, 1 @@ -137709,7 +136906,7 @@ solarhome.tk, 1 solariilacheie.ro, 1 solarisbank.de, 1 -solarisgroup.com, 1 +solarisgroup.com, 0 solarity.coop, 1 solarium.gov, 1 solarium.milano.it, 1 @@ -137717,23 +136914,19 @@ solarloon.com, 1 solaronics.tk, 1 solarpanels.tk, 1 -solarpanelscentralcoast.com, 1 solarplan-berlin.de, 1 -solarpoolheatingsa.co.za, 1 solarpowernerd.com, 1 solarseason.ga, 1 solarstrom.net, 1 solartek.cf, 1 solartek.ga, 1 solartek.gq, 1 -solarthermalworld.com, 1 solartrackerapp.com, 1 solartravel.tk, 1 solarwave.tk, 1 solarwerkstatt.org, 1 solarwind.cf, 1 solasalonstudios.com, 1 -solaxfaq.com, 1 solbjer.se, 1 solcenter.com, 1 solcietech.com, 1 @@ -137752,6 +136945,7 @@ soledadmataro.tk, 1 soledadpenades.com, 0 soleil33.net, 1 +soleiltech.io, 1 solemare-hotel.it, 1 solencell.com.tr, 1 soleno-energie.com, 1 @@ -137767,8 +136961,8 @@ solid-future.com, 1 solid.ru, 1 solidairesparis.org, 0 -solidarita-kosovo.net, 1 solidarityzone.org, 1 +solidco.com.au, 1 soliddoors.co.za, 1 solidform.ml, 1 solidgroup.bg, 1 @@ -137781,6 +136975,7 @@ solidpurenonsense.tk, 1 solidray.co.jp, 1 solidshield.com, 1 +solidsite.net, 1 solidsteel.tk, 1 solidtes.com, 1 solidtuesday.com, 1 @@ -137832,7 +137027,6 @@ solomonsklash.io, 1 soloparati.cf, 1 soloprivacidad.com, 1 -soloproaudio.com, 1 soloproductos.top, 1 soloroboto.com, 0 solosesso.tk, 1 @@ -137884,6 +137078,7 @@ solvegia.com, 1 solveigbrown.com, 1 solviejo.tk, 1 +solvinity.com, 1 solviq.com, 1 solware.co.uk, 1 solwaveovens.com, 1 @@ -137936,7 +137131,6 @@ sommerrodelbahn-gutach.de, 1 somnam.tk, 1 somni.one, 1 -somnus.com, 1 somogyivar.hu, 1 somosanna.hu, 1 somosdialog.com.br, 0 @@ -137985,6 +137179,7 @@ sondemitierra.tk, 1 sonder.com.au, 1 sonderkomission.ch, 1 +sonderplatz.de, 1 sondoro.tk, 1 sondriotoday.it, 1 sonemic.net, 1 @@ -138016,13 +137211,11 @@ sonicdx.com.au, 1 soniclink.tk, 1 sonicsaas.com, 1 -sonicsempire.com, 1 sonicshop.tk, 1 sonicwanderer.tk, 1 sonicworld.tk, 1 sonidoslibertarios.tk, 1 sonik.tk, 1 -sonika-vocaloid.com, 1 sonimusic.tk, 1 soninger.ru, 1 sonix.dk, 1 @@ -138037,6 +137230,7 @@ sonnendeal.ml, 1 sonnendeal.tk, 1 sonnenta.de, 1 +sonnetcode.com, 1 sonneundstrand.de, 1 sonnik-znachenie-sna.cf, 1 sonnik-znachenie-sna.ga, 1 @@ -138097,6 +137291,7 @@ sophiekush.com, 1 sophier.tk, 1 sophieschoice.net, 1 +sophitechsaha.com, 1 sophomoric.ga, 1 sophos.com, 1 sophos.net, 1 @@ -138131,6 +137326,7 @@ sorex.photo, 1 sorin.cc, 1 sorincocorada.ro, 1 +sorinify.com, 1 sormatrus.ru, 1 sorn.service.gov.uk, 1 sornyaki.tk, 1 @@ -138202,6 +137398,7 @@ sosou.eu, 0 sospechhulp.nl, 1 sospeed.net, 1 +sospiano.be, 1 sosracismomadrid.es, 1 sosregistration.eu, 1 sossinistres.ca, 1 @@ -138236,9 +137433,11 @@ sotsiaalkindlustusamet.ee, 0 sotthewes.nl, 1 sottilealimentos.com.br, 1 +sotto.fi, 1 sottomarini.tk, 1 sotypicallydutch.nl, 1 soubriquet.org, 1 +souc.ai, 1 souenfermagem.com.br, 1 souenfermagem.org.br, 1 souenfermeira.com, 1 @@ -138319,7 +137518,6 @@ soundpaintingsolutions.com, 1 soundprofessionals.com, 1 soundproofspaces.co.uk, 1 -soundprotectionllc.com, 1 soundrecords.tk, 1 soundresource.tk, 1 soundrise.tk, 1 @@ -138386,7 +137584,6 @@ southcarolinalegalvideography.com, 1 southcarolinarealtimecourtreporters.com, 1 southcarolinareporter.com, 1 -southcarolinatitlesearch.com, 1 southcarolinavideoconference.com, 1 southcarolinavideodepositions.com, 1 southcoastcalmbirth.com.au, 1 @@ -138428,6 +137625,7 @@ southmarengoal.gov, 1 southmelbourne.apartments, 1 southmelbournepersonaltrainers.com, 1 +southmelbournephysiotherapist.com.au, 1 southmill.com, 1 southmilwaukee.gov, 1 southmorangtownhouses.com.au, 1 @@ -138465,6 +137663,7 @@ sova.cc, 1 sova.st, 1 sova.wiki, 1 +sovalyx.com, 1 sovana.fr, 1 sovasage.com, 1 sovelia.com, 1 @@ -138504,7 +137703,6 @@ sowncloud.de, 1 sowtarabiya.com, 1 soxfirst.com, 1 -soychef.today, 1 soychile.cl, 1 soydanguner.com, 0 soydoula.com, 1 @@ -138576,7 +137774,6 @@ spacehey.com, 1 spacehighway.ms, 1 spacehighways.net, 1 -spacehonor.com, 1 spacehost.de, 1 spaceint.fr, 1 spacekeat.com, 1 @@ -138591,13 +137788,13 @@ spacepunks.de, 1 spacerocksmc.tk, 1 spaceroot.cz, 1 +spaces.so, 1 spacesedu.com, 1 spaceshells.tk, 1 spacestation13.com, 1 spacetime.am, 0 spaceunique.de, 1 spaceunique.eu, 1 -spacewinner.nl, 0 spacinov.com, 1 spaciva.eg, 1 spacivox.com, 1 @@ -138703,6 +137900,7 @@ sparklingice.com, 1 sparklingimageholidaylights.com, 1 sparklingloungecampiglio.it, 1 +sparkmaids.com, 0 sparknestcrafts.com, 1 sparkplug.tk, 1 sparkpluguniversity.com, 1 @@ -138780,6 +137978,7 @@ speak.software, 1 speakeasy.co, 1 speakermatch.com, 1 +speakersassociates.com, 1 speakersbusiness.com, 1 speakersden.tk, 1 speakertwpmi.gov, 1 @@ -138791,12 +137990,10 @@ speakzoai.co.in, 1 spear.ga, 1 speargames.net, 1 -spec-antikor.by, 1 spec-ranking.pl, 1 specdrones.us, 1 special-equipment.tk, 1 special-ops.org, 1 -special.cc, 1 specialcameras.tk, 1 specialcounsel.com, 1 speciale.cf, 1 @@ -138826,6 +138023,7 @@ speciosapro.com, 1 speckbacher-schuetzen.at, 1 speckle.systems, 0 +specklemap.de, 1 specks.tk, 1 specnaz.tk, 1 specpension.com, 1 @@ -138845,8 +138043,10 @@ spectrumelectrical-brisbane.com.au, 1 spectrumlabsai.com, 1 spectrumtexas.net, 1 +specval.co.za, 1 spediscifiori.com, 1 spedizioni.roma.it, 1 +speechdock.pro, 1 speechdrop.net, 1 speechgenerator.co, 1 speechmore.ml, 1 @@ -138889,6 +138089,7 @@ speedyshopping.com.br, 1 speedzone.bg, 1 speedzone.fi, 1 +speeklly.com, 1 speelfabriek.tk, 1 speeli.com, 1 speeltjesvantruus.nl, 1 @@ -138986,6 +138187,7 @@ spiderprotect.com, 1 spiderrock.net, 1 spiders.org.ua, 1 +spidersrfid.com, 1 spidersweb.cf, 1 spidersweb.ga, 1 spidersweb.gq, 1 @@ -139071,7 +138273,7 @@ spion.su, 1 spireat.it, 1 spirella-shop.ch, 1 -spirent.com, 1 +spirent.com, 0 spirerecoverysolutions.com, 1 spirio.cz, 1 spirion.com, 1 @@ -139107,6 +138309,7 @@ spleis.no, 1 splendorservizi.it, 1 spletna.net, 1 +spletzer.com, 1 splex.com, 1 spli.co, 1 splibrary.tk, 1 @@ -139149,6 +138352,7 @@ spongebobwiki.tk, 1 sponsor.software, 1 spoofhaus.com, 1 +spoofward.com, 1 spoofy.ee, 1 spookbook.net, 1 spookhost.xyz, 1 @@ -139156,6 +138360,7 @@ spooks.ga, 1 spooky.hk, 1 spookyinternet.com, 1 +spookyso.be, 1 spookysrv.com, 1 spoonkeyworks.com, 1 spoorcam.nl, 1 @@ -139179,7 +138384,6 @@ sport-socken.net, 1 sport-uef.com, 1 sport.cz, 1 -sport24.by, 1 sportabatese.tk, 1 sportabee.com, 0 sportadictos.com, 1 @@ -139194,11 +138398,13 @@ sportcenter.ml, 1 sportchirp.com, 1 sportclipsfranchise.com, 1 +sportcompactwarehouse.com, 1 sportcucc.hu, 1 sportda.tk, 1 sportedy.com, 1 sportellocafpatronato.com, 1 sportencultuurintrobreda.nl, 0 +sportetintrigue.com, 1 sportfair.it, 1 sportfits.at, 1 sportfits.de, 1 @@ -139206,13 +138412,13 @@ sportfogadas.tk, 1 sporthotel-rasen.com, 1 sporthotels.ad, 1 -sporthypehub.biz, 1 sportihome.com, 1 sportiiz.fr, 1 sportinfon.cf, 1 sporting.rocks, 1 sportingclubdacruz.pt, 1 sportity.com, 1 +sportiva.fr, 1 sportivo.cf, 1 sportivo.ga, 1 sportivo.tk, 1 @@ -139226,7 +138432,6 @@ sportnesia.com, 1 sportnieuws.nl, 1 sportnn.tk, 1 -sportnova.city, 1 sporto24.ml, 1 sportovni.site, 1 sportovnidum.cz, 1 @@ -139293,9 +138498,9 @@ spotifytop.me, 1 spotik.net, 1 spotkania.com, 1 +spotlens.ai, 1 spotless-londoncleaningcompany.com, 1 spotlessohio.com, 1 -spotlightsphere.com, 1 spotme.fit, 1 spotmefit.com, 1 spotnewsgetpaid.com, 1 @@ -139332,7 +138537,6 @@ spravochnick.ru, 1 sprawdz-nip.pl, 1 sprawdzanie-pozycji.pl, 1 -sprawnymarketing.pl, 1 sprayontv.com, 0 spraypolyurethane.org, 1 spreadfinds.com, 1 @@ -139371,10 +138575,10 @@ spricknet.de, 1 sprietlopen.tk, 1 sprillerer.tk, 1 -sprind.org, 1 spring96.org, 1 springbaystudio.com, 1 springboard.no, 1 +springboardwealth.com.au, 1 springbreak.it, 1 springdalewi.gov, 1 springerundpartner.de, 1 @@ -139399,6 +138603,7 @@ sprintgrad.com, 1 sprintkitchen.com, 1 sprintlee.com, 1 +sprintswac.net, 1 sprintswac.tk, 1 spriterinc.com, 1 spriters-resource.com, 1 @@ -139428,6 +138633,7 @@ sprutech.de, 1 sprytax.com, 1 sps-lehrgang.de, 1 +spsadvogada.pt, 1 spscommerce.com, 1 spseiostrava.cz, 1 spserver.work, 1 @@ -139518,7 +138724,6 @@ squarednull.com, 1 squaredtechnologies.com, 1 squareforums.com, 1 -squaregaming.org, 1 squaregift.com, 1 squaregift.net, 1 squaregift.org, 1 @@ -139557,7 +138762,6 @@ squirrelventures.vc, 1 squirted.com, 1 squirtingpussygirl.com, 1 -squirtqueen.org, 1 sqxb0.ga, 1 sr-f.tk, 1 sr.ht, 1 @@ -139682,7 +138886,7 @@ ss6729.co, 1 ss6957.co, 1 ss9297.co, 1 -ss9397.com, 1 +ss9397.com, 0 ss9728.co, 1 ssa.gov, 0 ssaarevents.tk, 1 @@ -139712,7 +138916,6 @@ ssh-vault.com, 1 ssh.ac, 1 sshbox.tk, 1 -sshd.site, 1 sshool.at, 1 sshwiki.tk, 1 sshx.top, 1 @@ -139750,6 +138953,7 @@ sslpoint.com, 1 ssls.cz, 1 sslsecureproxy.com, 1 +sslsforfree.com, 1 ssltrus.com.cn, 1 ssm-techmarketing.tk, 1 ssmato.me, 1 @@ -139813,6 +139017,8 @@ stabelino.tk, 1 stabilimento.it, 1 stabilizatory.ga, 1 +stabixa.com, 1 +stable-diffusion-web.com, 1 stablecommerce.ai, 1 stableflect.finance, 1 stablelib.com, 1 @@ -139870,7 +139076,6 @@ staffware.io, 1 stag.lol, 1 stage-bluejeans.com, 1 -stage-marine-fullcost.azurewebsites.net, 1 stage-metrobible.org, 1 stage-privacyportal-ui.azurewebsites.net, 1 stage.wepay.com, 1 @@ -139950,6 +139155,7 @@ stammering.ga, 1 stammtisch-bauwagen.tk, 1 stammtisch.domains, 1 +stamonicapawnshopinc.com, 1 stamonicatourandtravel.com, 1 stampd.io, 1 stamped.world, 1 @@ -140027,7 +139233,7 @@ stansberryresearch.com, 1 stanslabs.xyz, 1 stansweather.net, 1 -stantabler.com, 0 +stantabler.com, 1 stanton-humphreys.com, 1 stantonca.gov, 1 stantoncountyne.gov, 1 @@ -140044,7 +139250,6 @@ starase.com, 0 starasocks.bg, 1 starazagora.bg, 1 -starb.in, 1 starbaese.de, 1 starbase01.com, 1 starbeans.vn, 1 @@ -140147,7 +139352,6 @@ starskim.cn, 1 starsoft.io, 1 starspie.com, 1 -starsplay.com, 1 start-knighki.gq, 1 start-nadlan.co.il, 1 start-school.by, 1 @@ -140159,7 +139363,6 @@ startaninflatablebusiness.com, 1 startaxi.com.ua, 1 startbetter.tk, 1 -startbiz.biz.id, 1 startbiz.co.id, 1 startbrain.ai, 1 startcare.org, 1 @@ -140192,7 +139395,6 @@ startup-stack.tech, 1 startupbros.com, 1 startupchile.org, 1 -startuphakksecurity.com, 0 startupislandtaiwan.com, 1 startupislandtaiwan.net, 1 startupmadeira.eu, 1 @@ -140275,6 +139477,7 @@ stationa.ch, 0 stationaryengines.tk, 1 stationcharlie.co.za, 1 +stationeryindia.com, 1 stationhousecattery.com, 1 stationmedia.tk, 1 stationnement-angouleme.com, 1 @@ -140303,7 +139506,7 @@ status.vg, 1 statusbadges.me, 1 statusboard.eu, 1 -statuscast.com, 1 +statuscast.com, 0 statuscode.ch, 0 statusforward.com, 0 statusmachine.com, 1 @@ -140350,7 +139553,6 @@ stbk.link, 1 stbl.org, 1 stc-istok.com.ua, 1 -stc-knrm.nl, 1 stcars.sg, 1 stcatharinesromawolves.tk, 1 stcc.edu, 1 @@ -140410,15 +139612,15 @@ steamold.com, 0 steampoweredlawngnome.com, 1 steampress.io, 1 -steampro.com.au, 1 steamscore.info, 1 steamsprays.tk, 1 steamstat.us, 1 steamsub.ru, 1 -steamwhirl.com, 1 steannes.com, 1 +stearf.com, 1 stebenkov.tk, 1 steborio.pw, 1 +steciwko.com, 1 steckel.cc, 1 stecos.co.uk, 1 stedb.eu, 1 @@ -140439,7 +139641,6 @@ steelframejourney.com, 0 steelmounta.in, 1 steelnavi.jp, 1 -steeloncall.com, 1 steelpoint.com.pl, 1 steelsheds.biz, 1 steelvortex.tk, 1 @@ -140517,7 +139718,6 @@ stelfox.net, 1 steliosmanousakis.gr, 1 stella-base.com, 0 -stellacinderella.net, 1 stellaconnect.net, 1 stellamccartney.com, 1 stellamobilya.com, 1 @@ -140532,7 +139732,7 @@ stellarosa-clinic.net, 1 stellarpurr.me, 1 stellartraderacademy.co.uk, 1 -stellatoshouse.gr, 1 +stellatoshouse.gr, 0 stelleninserate.de, 0 stellenvisite.de, 1 steller.co, 1 @@ -140642,6 +139842,7 @@ stepzen.com, 1 ster-enzo.nl, 1 sterchit.ch, 1 +sterenn.org, 1 stereo.com, 1 stereoamistadmomos.ga, 1 stereoamistadmomos.gq, 1 @@ -140668,7 +139869,7 @@ stern-photo.com, 1 stern.koeln, 1 sternadel.pl, 1 -sternalock.com, 1 +sternalock.com, 0 sternen-sitzberg.ch, 1 sternenbund.info, 1 sternfreunde.berlin, 1 @@ -140693,19 +139894,18 @@ steuerberater-hopfner.de, 1 steuerberatungs-website.de, 1 steuerimgriff.de, 1 -steuerkanzlei-edel.de, 1 steuerteam-kliem.de, 1 steuertipps-sonderausgaben.de, 1 steve-mason.tk, 1 steve.kiwi, 1 stevebanks.info, 1 +stevebond.odessa.ua, 1 steveborba.com, 1 stevebuck.tk, 1 stevebunn.us, 1 stevecostar.com, 1 stevedoggett.com, 1 stevegellerhomes.com, 0 -stevegettle.com, 1 stevegrav.es, 1 steveherlihyphotography.com, 1 stevejobsfollowers.tk, 1 @@ -140724,7 +139924,6 @@ stevenjacobs.be, 1 stevenjacobs.eu, 1 stevenkobes.com, 1 -stevenmdriving.co.uk, 1 stevenroddis.com, 1 stevensautotopsandupholstery.com, 1 stevenscountymn.gov, 1 @@ -140746,6 +139945,7 @@ steveseaheyecentre.com, 1 steveshauntedyard.com, 1 stevetalbot.com, 1 +stevethots.com, 1 stevewillshaulage.co.uk, 1 stevezheng.cf, 1 stevezheng.tk, 1 @@ -140840,11 +140040,13 @@ stilbits.nl, 1 stileapp.com, 1 stilecop.com, 1 +stilflow.com, 1 stilfoto.net, 1 stille-post.eu, 1 stillmoonarts.ca, 1 stillnessmovement.com, 1 stillpointmag.org, 1 +stillshore.com, 1 stillsold.com, 1 stillwatermn.gov, 1 stillwatertownshipmn.gov, 1 @@ -140880,7 +140082,6 @@ stisidores.org, 1 stitchlabs.com, 1 stivesbouncycastlehire.co.uk, 1 -stiveschambers.co.uk, 1 stjameswest.com, 1 stjohnbjc.org, 1 stjohncamden.com, 1 @@ -140902,6 +140103,7 @@ stjustin.org, 1 stkevin-stbenedict.org, 1 stkildaosteopathy.com.au, 1 +stkildapersonaltrainers.com, 1 stlautoenhancements.com, 1 stlawco.gov, 1 stleismann.de, 1 @@ -140925,6 +140127,7 @@ stlueke.de, 1 stlukenh.org, 1 stlukesbrandon.org, 1 +stma.is, 1 stmariagoretti.net, 1 stmarkcharlotte.org, 1 stmarkseagirt.com, 0 @@ -140963,17 +140166,17 @@ stockbridge-ma.gov, 1 stockbridgevt.gov, 1 stockgraphicdesigns.com, 1 -stockholm-ventilation.se, 1 +stockholm-ventilation.se, 0 stockholm.ga, 1 stockholm.se, 1 stockholmpride.org, 1 -stockholmventilation.nu, 1 +stockholmventilation.nu, 0 stockilluminati.com, 1 stockintelli.com, 1 +stocklens.com, 1 stockmarketltd.co.uk, 1 stockmeta.jp, 1 stockntech.net, 1 -stockpile.com, 1 stockportny.gov, 1 stockportspiritualistchurch.co.uk, 1 stockpricetrends.com, 1 @@ -141022,9 +140225,7 @@ stolarstvi-jiriholy.cz, 1 stolbart.com, 1 stolensun.tk, 1 -stolin.info, 1 stolina.de, 1 -stolit.bg, 1 stoll.info, 1 stollen-wurm.de, 1 stollenwurm.de, 1 @@ -141046,6 +140247,7 @@ stomatologiya.ml, 1 stomproced.ro, 1 stomt.com, 1 +stone-guru.co.uk, 1 stone-mail.org, 1 stone-support.de, 1 stone.ru, 1 @@ -141179,7 +140381,6 @@ storiadellarte.com, 1 storiadirectory.tk, 1 storiatipic.com, 1 -storiediteecaffe.com, 1 stories-pro.com, 1 storiesbysign.com, 1 storiesofglass.nl, 1 @@ -141228,7 +140429,9 @@ storyland.ie, 1 storyliebe.de, 1 storymalayalam.com, 1 +storyscribes.org, 1 storysift.news, 1 +storystack.tv, 1 storytea.top, 1 storytel.ae, 1 storytel.be, 1 @@ -141264,7 +140467,6 @@ stpatrickkennettsquare.org, 1 stpatrickri.org, 1 stpatricks-pelham.com, 1 -stpatricksmapleridge.ca, 1 stpatsschool.org, 1 stpaulbocaschool.com, 1 stpaulcatholicchurcheastnorriton.net, 1 @@ -141289,6 +140491,8 @@ stradsolutions.ga, 1 strafe-muss-sein.at, 1 strafensau.de, 1 +stragglez.com, 1 +strah.ws, 1 strahlende-augen.info, 1 strahlkennel.com, 1 strahovanienet.tk, 1 @@ -141324,7 +140528,6 @@ strangelane.com, 1 strangelanerecords.com, 1 strangelittlecovers.tk, 1 -strangeminds.social, 1 strangemusicbox.com, 1 strangemusichollywood.com, 1 strangemusicinc.com, 1 @@ -141399,7 +140602,6 @@ strauss.tirol, 1 strauswolfs.nl, 1 stravato.com, 1 -stravers.shoes, 1 strawberries.tk, 1 strawberry-laser.gr, 1 strawberry-melon.com, 1 @@ -141529,7 +140731,6 @@ streotech.com, 1 stressdown.ml, 1 stressed.tk, 1 -stressfreeprobate.com, 1 stressfrei-marceva.de, 1 streszczenia.pl, 1 strettch.com, 1 @@ -141547,6 +140748,7 @@ stricted.net, 1 strictlynormal.com, 1 strideengineering.com.au, 1 +strideftw.com, 1 strietwaelder-blaettche.de, 1 strijkkraal.tk, 1 strijkshop.be, 1 @@ -141561,7 +140763,6 @@ strip-magazine.com, 1 stripe.com, 1 stripeassets.com, 1 -striped.horse, 1 stripped-anarchy.xyz, 1 strippersinthehoodxxx.com, 1 stripperweb.club, 1 @@ -141671,7 +140872,6 @@ ststephensc.gov, 1 ststephensnorwich.org, 1 sttekla.org, 1 -sttelemediagdc.in, 1 sttf.org.uk, 1 sttheresacatholicschool.org, 1 stthomasbrigantine.org, 1 @@ -141683,6 +140883,7 @@ stuartbell.co.uk, 1 stuartbell.uk, 1 stuartcrawford.co.nz, 1 +stuartcrawford.nz, 1 stuarteggerton.com, 1 stuarteglin.com, 0 stuartfl.gov, 1 @@ -141720,7 +140921,6 @@ studentenwoordenboek.nl, 1 studenterguiden.dk, 1 studenti.tk, 1 -studentinaneta.com, 1 studentite.bg, 1 studentjournalist.ml, 1 studentkhata.online, 0 @@ -141797,7 +140997,6 @@ studioevent.tk, 1 studiofpvet.it, 1 studioherc.com, 1 -studiohomebase.amsterdam, 1 studiojae.fr, 1 studiojaims.com, 1 studiokaczmarek.pl, 1 @@ -141814,6 +141013,7 @@ studiomenfis.com, 1 studionerisabatini.it, 1 studionorwood.com, 1 +studionotes.cz, 1 studionowystyl.pl, 1 studionur.com.tr, 1 studioocasp.com.br, 1 @@ -141821,8 +141021,10 @@ studiopirrate.com, 1 studiopoen.com.br, 1 studiorachunkowe.pl, 1 +studiords.com, 1 studiosaulnier.synology.me, 1 studioshiftup.net, 1 +studiosoma.fr, 1 studiosql.ml, 1 studiostawki.com, 1 studiostudio.net, 1 @@ -141916,7 +141118,6 @@ sturgeonbaywi.gov, 1 sturgillroofing.com, 1 stut.tk, 1 -stutelage.com, 0 stutsmancounty.gov, 1 stuttgart.ga, 1 stuudium-mail.ee, 1 @@ -141949,6 +141150,7 @@ styledbysally.com.au, 1 styleelite.tk, 1 styleetvieperfumes.com, 1 +stylelauri.com, 1 stylemall.tk, 1 stylepixo.com, 1 styleseat.com, 1 @@ -141961,12 +141163,8 @@ styletyx.com, 1 stylewindows.co.uk, 1 stylidafm.gr, 1 -stylight.co.uk, 1 stylight.com, 1 stylight.de, 1 -stylight.fr, 1 -stylight.it, 1 -stylight.nl, 1 stylingstudio.ga, 1 stylishentertainment.co.uk, 0 stylishweddingdisco.co.uk, 1 @@ -142031,6 +141229,7 @@ submittable.com, 0 submityou-rlink.tk, 1 submityour-link.tk, 1 +subnation.ly, 1 subnet.com, 1 subnoto.com, 1 subology.co, 1 @@ -142046,7 +141245,9 @@ subsitude.tk, 1 subsoft.tk, 1 subspaceds9.us, 1 +substack.com, 1 substanceandprogram.info, 0 +substancelaw.ca, 1 substancelaw.com, 1 substances.be, 1 substitutealert.com, 1 @@ -142058,7 +141259,6 @@ subteacher.co.il, 1 subteen.gq, 1 subterra.tk, 1 -subtitry.ru, 1 subtituleros.tk, 1 suburb.social, 1 suburban-landscape.net, 1 @@ -142068,7 +141268,6 @@ suburbass.tk, 1 suburbservice.net, 0 subversionnews.tk, 1 -subvetcustoms.com, 1 subway.co.id, 1 subwaysurfers.tk, 1 subwaytrain.tk, 1 @@ -142084,10 +141283,10 @@ successrice.com, 1 successwizard.com, 1 succorfish.net, 1 -succubus.me, 1 succubus.network, 1 succubus.xxx, 1 sucessclick.gq, 1 +suchawellness.com, 1 suche.org, 1 suchhire.com, 1 suchhunde.wien, 1 @@ -142103,7 +141302,6 @@ sucsses.cf, 1 sucsses.ga, 1 sucsses.gq, 1 -sucyshop.fr, 1 sudabaus.com, 1 sudak-turizm.tk, 1 sudametrica.tk, 1 @@ -142125,7 +141323,7 @@ sudosaveclimate.com, 1 sudoschool.com, 1 sudosu.fr, 1 -sudrania.com, 1 +sudsite.com, 1 sudsitupwash.com, 1 sudskapraksa.rs, 1 sudtirol.com, 1 @@ -142157,7 +141355,6 @@ sugarbeatsentertainment.com, 1 sugarbrother.com, 0 sugarcribs.agency, 1 -sugarcribs.com, 1 sugarcribs.live, 1 sugarcribs.net, 1 sugarcribs.org, 1 @@ -142168,7 +141365,7 @@ sugardating.network, 1 sugarfetch.com, 1 sugargrant.gq, 1 -sugarlandsara.com, 1 +sugarlouisiana.com, 1 sugarondemand.com, 1 sugaropencloud.eu, 1 sugaropencloud.uk, 1 @@ -142202,7 +141399,7 @@ suicidology.org, 1 suidouraku.com, 1 suigen.jp, 1 -suigenerisakademi.com, 1 +suigenerisakademi.com, 0 suijo-bus.osaka, 1 suikerspinnetje.nl, 1 suite.li, 1 @@ -142212,7 +141409,6 @@ suitecrm.com, 1 suitemail.org, 1 suitesafe.org, 1 -suitesolutionsgroup.com, 1 suiteuser.org, 1 suitocracy.com, 1 suitsizingtool.com, 1 @@ -142232,6 +141428,7 @@ sukoyakapp.com, 1 sukrie.net, 1 sukruarslan.tk, 1 +suksiriwan.com, 1 suksit.com, 0 sukys.lt, 1 sulabs.org, 1 @@ -142255,7 +141452,6 @@ sultanismyname.com, 1 sultanrecords.com, 1 sultans.tk, 1 -sulytics-tool.com, 1 sum-atm.com, 1 sum1.tk, 1 sumac.is, 1 @@ -142354,11 +141550,11 @@ sun-n-sand.com, 1 sun-studio.tk, 1 sun-wellness-online.com.vn, 0 -sun1218.com, 1 -sun1245.com, 1 -sun1338.com, 1 -sun1345.com, 1 -sun1378.com, 1 +sun1218.com, 0 +sun1245.com, 0 +sun1338.com, 0 +sun1345.com, 0 +sun1378.com, 0 sun668.asia, 1 sun668.co, 1 sunandsagecleaningco.com, 1 @@ -142390,13 +141586,11 @@ suncoastrebuilding.com, 1 suncomegrain.ga, 1 suncrypto.in, 1 -sundadigi.com, 1 sundalandia.pp.ua, 1 sunday.pm, 1 sundayfundayjapan.com, 1 sundaysky.com, 1 sundaytansa.com, 1 -sunderlandmoneyman.com, 1 sundhedsdatastyrelsen.dk, 1 sundhedsvejen.dk, 1 sundiel.tk, 1 @@ -142435,10 +141629,9 @@ sunny.co.uk, 1 sunnyhome.tk, 1 sunnylyx.com, 1 -sunnynetworks.net, 1 sunnyoxygen.xyz, 1 sunnyside-jazzclub.com, 1 -sunnysideinc.ca, 1 +sunnysideinc.ca, 0 sunnysidesolar.ca, 1 sunnyssingh.tk, 1 sunokuran.tk, 1 @@ -142501,7 +141694,7 @@ suntropez-shop.it, 1 sunwayestates.com, 1 sunwaymedical.com, 1 -sunwayreit.com, 1 +sunwayreit.com, 0 sunwayxfarms.com, 1 sunwei-proxy.tk, 1 sunwolf.studio, 0 @@ -142577,6 +141770,7 @@ superbuy.com.tw, 1 supercable.co.cr, 1 supercable.cr, 1 +supercalendario.com.br, 1 supercalorias.com, 1 supercarpets.ru, 1 supercarrot.tk, 1 @@ -142615,7 +141809,7 @@ superfastpress.com, 1 superfavorite.tk, 1 superfinancial-dorsetbranch.co.uk, 1 -superfluo.hr, 1 +superfluo.hr, 0 superfluous.tk, 1 superfly.tk, 1 superfoodsexplained.com, 1 @@ -142647,7 +141841,7 @@ superis.eu, 1 superit.com.br, 1 superjuf.com, 1 -superkabe.com, 1 +superkabe.com, 0 superklima.ro, 0 superkonsult.se, 1 superkrasota.tk, 1 @@ -142670,7 +141864,7 @@ supermedia.cool, 1 supermeitw.com, 1 supermen.com.tr, 1 -supermenu.io, 0 +supermenu.io, 1 supermercadosdia.com.ar, 1 supermercato24.it, 1 supermil.ch, 1 @@ -142680,7 +141874,6 @@ supern0va.net, 0 supern8n.com, 1 supernatural-fans.tk, 1 -supernaut.info, 1 supernogi.ga, 1 superpaczka24.pl, 1 superparrucchierecamp.it, 1 @@ -142690,7 +141883,6 @@ superpollo.com.ec, 1 superpom.fr, 1 superposition.design, 1 -superraclette.fr, 1 supersahnetorten.de, 1 supersales.com.ec, 1 supersandro.de, 1 @@ -142729,6 +141921,7 @@ suplery.com, 1 suplindex.com, 1 supmil.net, 1 +supo.live, 1 supora.io, 1 suppdeals.eu, 1 suppdoc.io, 1 @@ -142741,7 +141934,6 @@ suppliersession2021.com, 1 supplies24.at, 1 supplies24.es, 1 -supplychainmonitor.com, 1 supplychainriskmanagement.com, 1 supplynation.org.au, 1 supplyoutlook.com, 1 @@ -142772,7 +141964,7 @@ suprdeck.com, 1 suprem.biz, 0 suprem.ch, 0 -supremaa.com, 1 +supremaa.com, 0 supremacrypt.com, 1 supreme-council.me, 1 supreme-court.tk, 1 @@ -142820,10 +142012,11 @@ surfenergy.tk, 1 surfersconnect.net, 1 surfersparadisepersonaltrainers.com, 1 +surfinfo.net, 1 surfkath.de, 1 surflessonslisbon.com, 1 surfly.com, 1 -surfnice.com, 1 +surfnice.com, 0 surfocal.net, 1 surfoleon.tk, 1 surfseo.ml, 1 @@ -142858,8 +142051,9 @@ surprisepubliclibrary.gov, 1 surpriz-net.tk, 1 surrattlegal.com, 1 -surrealdb.com, 0 +surrealdb.com, 1 surrealistas.tk, 1 +surresh.co, 1 surreyandsussex.nhs.uk, 1 surreycyclingclub.co.uk, 1 surreysportspark.co.uk, 0 @@ -142868,11 +142062,12 @@ surskiekraski.ru, 1 surthriveak.com, 1 suruifu.tk, 1 -survature.com, 1 +survature.com, 0 surveer.com, 1 surveyapp.io, 1 surveyberbayar.com, 1 surveybths.com, 1 +surveykaro.com, 1 surveyorcloud.com, 1 surveyremover.tk, 1 surveyspy.net, 1 @@ -142953,6 +142148,7 @@ suth.jp, 1 sutherlandglobal.com, 1 sutherlinoregon.gov, 1 +suthersstreetphase3.co.uk, 1 sutinenmatthews.tk, 1 sutmar-anwaltskanzlei.de, 1 sutore.com, 1 @@ -142961,7 +142157,6 @@ sutterfamilylaw.com, 1 suttonbank.com, 1 suttonplace.com, 1 -suuq-s.com, 1 suurhelsinki.cf, 1 suuria.de, 1 suurimjulgus.ee, 1 @@ -143019,6 +142214,7 @@ svarka22.ml, 1 svarka24.com.ua, 1 svarka26.gq, 1 +svarklar.com, 1 svarmax.com.ua, 1 svarovani.tk, 1 svasse.nl, 1 @@ -143095,7 +142291,6 @@ svgzone.tk, 1 svh.nl, 1 svhni.nl, 1 -svia.nl, 1 sviatzoo.com, 1 svin.loan, 1 svirel.ga, 1 @@ -143127,19 +142322,18 @@ svsewerut.gov, 1 svsg.co, 1 svswebmarketing.com, 1 +svtemplemn.org, 1 svtl.ch, 1 svtr.de, 1 svtv.org, 1 svv10.de, 1 svwissel.tk, 1 -sw-700.com, 1 sw-machines.io, 1 sw-s.info, 1 sw-servers.net, 1 sw33tp34.com, 1 swa-il.gov, 1 swaa.life, 1 -swabia.com, 1 swabifoundation.tk, 1 swac.org, 1 swacash.com, 1 @@ -143163,6 +142357,7 @@ swanseama.gov, 1 swantonvt.gov, 1 swap-ict.nl, 1 +swap-stars.ru, 1 swap.gg, 1 swap.ly, 1 swapbox.tk, 1 @@ -143191,7 +142386,6 @@ swcempire.dk, 1 swcleanair.gov, 1 swd.media, 1 -swd.news, 1 swdb.jp, 1 swe77.com, 1 sweak.net, 1 @@ -143242,14 +142436,11 @@ sweetnest.com, 1 sweetparis.cf, 1 sweetpinkpussy.org, 1 -sweetpummelfee.com, 1 sweets-mimatsu.com, 1 sweetscrap.ru, 1 sweetsideofsweden.com, 1 sweetsinner.com, 1 -sweetsusinrw.org, 1 sweetvanilla.jp, 1 -sweetville.org, 1 sweetwatercountywy.gov, 1 sweetwatertn.gov, 1 sweetwatertx.gov, 1 @@ -143337,6 +142528,8 @@ swireshipping.com, 1 swish-ict.com, 1 swishmail.com, 1 +swiss-export-compliance.com, 1 +swiss-post-kurier.ch, 1 swiss-spectator.ch, 1 swiss-vanilla.ch, 1 swiss-vanilla.com, 1 @@ -143397,6 +142590,7 @@ swmlink.com, 1 swn-nec.de, 1 swnet.casa, 1 +swo-groen.nl, 1 swocaoh.gov, 1 swoop-qa.cloud, 1 swoop-support.com, 1 @@ -143427,8 +142621,6 @@ swtrayssq.gq, 1 swtun.com, 1 swvatoday.com, 1 -swvaux.com, 1 -swwc.com, 1 swxtd.com, 1 swy.cz, 1 swyn.net, 1 @@ -143548,7 +142740,6 @@ symphonyai.com, 1 symplelending.com, 1 sympleservices.io, 1 -sympletrade.com, 1 symplexia.com.br, 1 symplicit.com.au, 1 symplyos.tk, 1 @@ -143564,7 +142755,6 @@ synaptickz.me, 1 synara.ar, 1 synccentre.com, 1 -synceo.de, 1 syncgal.com, 1 synchrocube.com, 1 synchrodogs.com, 1 @@ -143582,7 +142772,7 @@ syncsci.com, 1 syncspace.live, 1 synctera.com, 1 -syncurity.nl, 1 +syncurity.nl, 0 synd.pro, 1 synder.com, 1 synderapp.com, 1 @@ -143603,7 +142793,6 @@ synergy-logistics.tk, 1 synergy-way.com, 1 synergyofserra.com, 1 -synergytherm.com, 1 synergyzone.tk, 1 synerio.com, 1 synerionagile.com, 1 @@ -143614,7 +142803,6 @@ synkriaops.com, 1 synony.me, 1 synonym24.at, 1 -synotna.eu, 1 synoviasolutions.com, 1 synovitec.com, 1 synrelay.com, 1 @@ -143636,7 +142824,7 @@ syntric.io, 1 syntriqhealth.com, 1 synuosity.com, 1 -synup.com, 1 +synup.com, 0 synvitam.fr, 1 synxfps.de, 1 syobon.org, 1 @@ -143672,7 +142860,6 @@ sys-tm.com, 1 sys.as, 1 sysadmin21.tk, 1 -sysadmins.ro, 1 sysadminslife.com, 1 sysadvisors.pl, 1 sysaid.com, 1 @@ -143749,11 +142936,11 @@ systemsikkerhet.no, 1 systemsinblue.tk, 1 systemtoto.ml, 1 -systemvoices.info, 1 systemzeit.info, 1 systoolbox.net, 1 syswap.fr, 1 syswiki.org, 1 +syswise.co.jp, 1 sysystems.cz, 1 syt3.net, 1 sytari.com, 1 @@ -143822,7 +143009,6 @@ szs-arbeitssicherheit.de, 1 szsyidc.cf, 1 szsyidc.top, 1 -sztfh.hu, 1 sztoriboljeles.hu, 1 sztreasure.com, 1 sztuanzi.top, 1 @@ -143849,7 +143035,6 @@ t-m.me, 1 t-moon.hr, 1 t-op1.com, 1 -t-op26.com, 1 t-op6.com, 1 t-op7.com, 1 t-op8.com, 1 @@ -143991,7 +143176,6 @@ tablesoccer.pt, 1 tablet.facebook.com, 0 tablet4me.de, 0 -tabletek.com, 1 tabletennis-reference.com, 1 tabletennis-tt.tk, 1 tablethotels.com, 1 @@ -144066,10 +143250,12 @@ tadzkitchen.com, 1 taebek.tk, 1 taekwondo-berlin.tk, 1 -taekwondo-hochwald.de, 1 +taekwondo-hochwald.de, 0 taekwondo4fitness.com, 1 taekwondoandbeyond.com, 1 +taekwondoglarus.ch, 1 taelman.be, 1 +taescalado.com.br, 1 taetomeister.de, 1 tafcares.org, 1 taffe-elec.com, 1 @@ -144140,7 +143326,6 @@ taidynamics.com.ar, 1 taieki.nl, 1 taiga-aikidojo.tk, 1 -taigalaloca.net, 1 taigatinyhouse.com, 1 taihesy.tk, 1 taijul.tk, 1 @@ -144179,7 +143364,6 @@ taiwanbible.com.tw, 1 taiwanhotspring.net, 1 taiwaniacapital.com, 1 -taiwanprize.com, 1 taiwantechtrek.tk, 1 taiway.com, 1 taiyo-eg.com, 1 @@ -144195,12 +143379,12 @@ tajniy-smisl.ml, 1 tajniy-smisl.tk, 1 tajnyodtah.sk, 1 -tajra.store, 1 tajtowereg.com, 1 tak.gov, 1 tak.io, 1 takada418.jp, 1 takadc.com, 1 +takahiroshoppu.com, 1 takaneko.me, 1 takaneko.net, 1 takanenonadeshiko.com, 1 @@ -144231,8 +143415,6 @@ taken.cf, 1 taken.pl, 0 takenote.co, 1 -takenouchi-dc.com, 1 -takenouchi-perio.com, 1 takeomi.jp, 1 takeonlymemories.net, 1 takepicturesleavefootprints.com, 1 @@ -144275,7 +143457,6 @@ taladphapim.com, 1 talakacaruli.tk, 1 talalaok.gov, 1 -talarislog.com, 1 talbottimber.co.uk, 1 taldia.es, 1 taleatherworks.com, 1 @@ -144319,6 +143500,7 @@ talikotang.tk, 1 talinhandmade.com, 1 talisman-amulet.ga, 1 +talismanaeternum.com, 1 talk-local.com, 1 talk.google.com, 1 talkan.ru, 1 @@ -144442,7 +143624,6 @@ tamronhallshow.com, 1 tamsuite.cl, 1 tamsulosin.gq, 1 -tamylove.net, 1 tan90.tw, 1 tanabekensetsu.co.jp, 1 tanacio.com, 1 @@ -144459,7 +143640,6 @@ tandartszilverschoon.nl, 1 tandblekningidag.com, 1 tandcr.com, 1 -tanddem-partner.com, 1 tandempartnerships.com, 0 tandemvtt.com, 1 tandhoutdoors.com, 1 @@ -144472,6 +143652,7 @@ tangas.tk, 1 tangel.me, 1 tangemann.org, 1 +tangentelectricals.com, 1 tangentelectricals.in, 1 tangentelectricals.site, 1 tangentnet.tech, 1 @@ -144517,7 +143698,6 @@ tankos.tk, 1 tankpassen-vergelijken.nl, 1 tanks.je, 1 -tanming.com.my, 1 tanned.tk, 1 tanner.sh, 1 tanneradvisorysolutions.com.au, 1 @@ -144529,7 +143709,6 @@ tannextcloud.cf, 1 tannlegenityrkia.no, 1 tanomimaster.com, 1 -tanovar.com, 1 tanphu.tk, 1 tanpopo.io, 1 tansidco.org, 1 @@ -144583,13 +143762,13 @@ tapesvip.xyz, 1 tapetenresonanz.de, 1 tapevents.mil, 1 +taphousemulberryestate.com.au, 1 tapicerosenmadrid.com, 1 tapinjury.com, 1 taplemon.at, 1 taplemon.com, 1 tapmat.com, 1 tapo.com, 1 -tappea.me, 0 tappezzeria.roma.it, 1 tappezziere.milano.it, 0 tappezziere.roma.it, 1 @@ -144600,7 +143779,7 @@ tapstertastingroom.com, 1 taquilla.com, 1 taqun.club, 1 -tara.ru, 1 +tara.ru, 0 tarabici.tk, 1 taraiid.com, 1 tarakan-klopik.tk, 1 @@ -144623,7 +143802,6 @@ tardishomelab.com, 1 tarek.wtf, 0 tarekfadel.com, 1 -tarence.com, 1 tarev.de, 1 tarfand-pc.tk, 1 tarfin.com, 1 @@ -144712,7 +143890,6 @@ taskotron.stg.fedoraproject.org, 1 taskrunnr.com, 1 tasks.org, 1 -tasktrek.com, 1 taskulu.com, 1 taskulu.ir, 1 taskus.com, 1 @@ -144766,7 +143943,6 @@ tato.noip.me, 0 tatoo-shop.ca, 1 tatooine.club, 0 -tatort-fanpage.de, 1 tatortreinigung-365.de, 1 tatra.ca, 1 tatsidou.gr, 1 @@ -144774,7 +143950,6 @@ tatsumi-air.com, 1 tatsuya.tk, 1 tattedaf.com, 1 -tatteredatlastales.com, 1 tattoo-art.tk, 1 tattoo-family.com, 1 tattoo.roma.it, 1 @@ -144783,7 +143958,6 @@ tattoomatch.fr, 1 tattoome.co.kr, 1 tattoomotive.net, 1 -tattoopiercing-wien.at, 1 tatu-love.tk, 1 tatuaggi.roma.it, 1 tatuaggio.co, 1 @@ -144862,8 +144036,10 @@ taxcomplianceagent.com, 1 taxcure.com, 1 taxdispute.win, 1 +taxesmunicipales.ca, 1 taxfunder.co.uk, 1 taxfunder.uk, 1 +taxglass.net, 1 taxglobalizers.com, 1 taxhawk.com, 1 taxi-andy-app.at, 1 @@ -144913,7 +144089,6 @@ taxobservatory.eu, 1 taxpackagesupport.com, 1 taxpi.ru, 1 -taxstorestalbans.com.au, 1 taxuni.com, 1 taybee.net, 1 tayebbayri.com, 1 @@ -144976,6 +144151,7 @@ tbrindus.ca, 1 tbs-certificates.co.uk, 1 tbscan.com, 1 +tbsch.de, 1 tbspace.de, 1 tbsunday.tk, 1 tbtech.cz, 1 @@ -144993,7 +144169,6 @@ tcacademy.co.uk, 1 tcade.co, 1 tcapws-dev.azurewebsites.net, 1 -tcapws-prod.azurewebsites.net, 1 tcaspa.com, 1 tcb-a.org, 1 tcbdarts.nl, 1 @@ -145073,7 +144248,6 @@ tdk.eu, 1 tdl.ge, 1 tdln.tk, 1 -tdn.com, 1 tdoc.xyz, 1 tdolar.com, 1 tdor.co, 1 @@ -145105,7 +144279,7 @@ teablr.com, 1 teach.gq, 1 teachbiz.net, 1 -teachercall.kr, 1 +teachercall.kr, 0 teachercreatedmaterials.com, 0 teachermommylife.com, 0 teachernewsbd.com, 1 @@ -145339,9 +144513,9 @@ tech-urdu.tk, 1 tech-zealots.com, 1 tech3599.com, 1 -tech3araby.com, 1 tech4founders.co, 1 tech4greece.gr, 1 +tech506.com, 1 techangel.tk, 1 techanit.de, 1 techarab.ga, 1 @@ -145449,7 +144623,6 @@ techmanstan.com, 1 techmatter.tk, 1 techmatters.org, 1 -techmayhem.net, 1 techmeout.io, 1 techmind.vc, 0 techmindme.com, 1 @@ -145467,6 +144640,7 @@ technicalities.ca, 1 technicallyeasy.net, 1 technicalmarine.solutions, 1 +technicalnode.ddns.net, 1 technicalproblem.tk, 1 technicaltoolboxes.com, 1 technicaltrainer.co.za, 1 @@ -145571,6 +144745,7 @@ techpartes.com.br, 1 techpartneralliance.com, 1 techpilipinas.com, 1 +techpivot.com, 1 techplants.es, 1 techpoint.org, 0 techpp.com, 1 @@ -145594,7 +144769,6 @@ techserve.ml, 1 techsharetx.gov, 1 techshift.eu, 1 -techshift.nl, 1 techshift.se, 1 techshout.com, 1 techsite.tk, 1 @@ -145616,7 +144790,6 @@ techtrozan.ga, 1 techtwo.pl, 1 techunit.org, 1 -techvaz.com, 1 techview.link, 1 techvision.tk, 1 techvoice.tk, 1 @@ -145677,7 +144850,6 @@ tecnonews.cf, 1 tecnonews.tk, 1 tecnorepuestoszn.com, 1 -tecnosafra.com.br, 1 tecnoticiasdigitales.tk, 1 tecnotrattamenti.it, 1 tecnovernicisrl.com, 1 @@ -145694,7 +144866,6 @@ tecscipro.de, 1 tectas.co.jp, 1 tectonix.com, 1 -tectuc.com.ar, 1 tecumsehmi.gov, 1 ted.do, 0 tedamos.at, 1 @@ -145714,7 +144885,6 @@ tedirgin.tk, 1 tedpac.xyz, 1 tedroche.com, 1 -tedscoffeecompany.com, 1 tedsdivingsystem.com, 1 tedstevensarcticcenter.org, 1 tedt.org, 1 @@ -145733,7 +144903,6 @@ teekaymedia.tk, 1 teeko.cc, 1 teektalk.org, 1 -teelam.com, 1 teemill.com, 1 teemo.gg, 1 teemo.love, 1 @@ -145773,6 +144942,7 @@ teethtalkgirl.com, 0 teetje-doko.de, 1 teetoptens.com, 1 +teetrack.it, 1 teewinotfunds.com, 1 tefek.cz, 1 teffcoshop.com, 1 @@ -145793,7 +144963,6 @@ tehillimforall.com, 1 tehnai-mahshevim.co.il, 1 tehnicari-za-racunalstvo.tk, 1 -tehniss.rs, 1 tehno-trust.tk, 1 tehno3d.ru, 1 tehnoklubi.ee, 1 @@ -145849,14 +145018,12 @@ teknow.tk, 1 teknozilla.com.tr, 1 teko.se, 1 -tekocool.com, 1 tekpon.com, 0 tekshrek.com, 1 teksnologi.com, 1 tekstover.tk, 1 tekstpesni.tk, 1 tektokids.nl, 1 -tektuts.com, 1 tekushi.com, 1 tekyou.com.br, 1 teladochealth.dk, 1 @@ -145898,7 +145065,6 @@ telebugs.tk, 1 telecablenostima.tk, 1 telecallsrl.com, 1 -telecamera.pro, 0 telecharger-itunes.com, 1 telecharger-open-office.com, 1 telecharger-videos.com, 1 @@ -145906,7 +145072,6 @@ telechirkut.xyz, 1 telechnics.com.au, 1 telecinesound.it, 0 -teleclaro.com, 1 telecom-sudparis.eu, 1 telecomarmenia.am, 1 telecommande-express.com, 1 @@ -145959,7 +145124,6 @@ telephonedirectories.us, 1 telephoneengineer.london, 1 telephoni-cdma.tk, 1 -telepilote-academy.fr, 1 telepok.com, 1 telepons.com, 1 teleport.com.br, 1 @@ -146003,6 +145167,7 @@ telfaircountyga.gov, 1 telfas.de, 1 telford.codes, 1 +telgkamp.de, 1 telhai.ac.il, 1 telhatelite.com.br, 1 telk.kr, 1 @@ -146012,10 +145177,10 @@ tell.tl, 1 tellaresdo.com, 1 telldrop.com, 1 +tellebook.com, 1 tellercounty.gov, 1 telleroo.com, 1 tellet.tel, 1 -tellimer.com, 1 telling-voices.tk, 1 telling.xyz, 1 tellja.de, 1 @@ -146027,7 +145192,6 @@ tellygames.com, 1 tellyourtale.com, 1 telnet.dk, 1 -telohagopor.com, 1 telokchki.ga, 1 telokchki.ml, 1 teloo.pl, 1 @@ -146041,6 +145205,7 @@ temaflex.tk, 1 temakel.com, 1 temariosoposiciones.tk, 1 +tembrica.com, 1 tembusulaw.com, 1 temertysimcentre.com, 1 temirgaliev.tk, 1 @@ -146055,6 +145220,7 @@ temonews.org, 1 temovision.com, 1 temp-lars.army, 1 +temp-mail.id, 1 temp.pm, 1 temp.stream, 1 tempa.com.ua, 1 @@ -146088,7 +145254,6 @@ temporaryair.com, 1 temporaryfencehire.net.au, 1 temporarysanity.tk, 1 -tempotravellerrentbangalore.in, 1 tempshare.net, 1 tempsoundsolutions.tk, 1 tempus-aquilae.de, 1 @@ -146121,6 +145286,7 @@ tendapk.com, 1 tende.roma.it, 1 tender.run, 1 +tenderhub.com.au, 1 tendermint.com, 1 tenderned.nl, 1 tenderradar.nl, 1 @@ -146153,9 +145319,7 @@ tenkuru.moe, 1 tennaxia.com, 1 tenncare.gov, 1 -tennesseegolfcourses.com, 1 tennesseejeepsters.com, 1 -tennesseetitlesearch.com, 1 tennis-academy-weserbergland.de, 1 tennis-agesc.fr, 1 tennis-altai.tk, 1 @@ -146195,7 +145359,6 @@ tenthirtyonepictures.com, 1 tenthousandcoffees.com, 1 tentinger.co, 1 -tentou.com, 1 tentrentals.com, 1 tentries.com, 1 tentsforsale.com, 1 @@ -146212,7 +145375,7 @@ teomahk.de, 1 teoria.com, 1 teoriespiknuti.cz, 1 -teosharmony.com, 1 +teosharmony.com, 0 teoskanta.fi, 1 teouk.com, 1 tep.com, 1 @@ -146225,9 +145388,9 @@ teplo-unit.ru, 1 teplomash24.ru, 1 teplotehnik.tk, 1 -tepokbulubdg.my.id, 1 teppelin.fr, 1 teppichpracker.at, 1 +teppo.it, 1 tepui.io, 1 teq-automotive.com, 1 teqip-pms.gov.in, 1 @@ -146261,7 +145424,6 @@ tercelonlinelat.tk, 1 tercodemaria.com.br, 1 tercosdemaria.com.br, 1 -teremopt.ru, 1 terengganudaily.tk, 1 terenphotography.com, 1 terenska-edinica.tk, 1 @@ -146305,7 +145467,6 @@ terns.tokyo, 1 terokankaanpera.fi, 1 terokorhonen.cc, 1 -teronia.net, 1 terosclient.de, 1 terovania.com, 1 terovania.de, 1 @@ -146336,6 +145497,7 @@ terralemon.nl, 1 terralogic.com, 1 terramineira.com.br, 1 +terrancetalkstravel.com, 1 terraneesens.fr, 1 terranimo.re, 1 terranostra-gardenhotel.com, 1 @@ -146347,6 +145509,7 @@ terraroc.ro, 1 terrascapeslandscape.com, 1 terrascend.com, 1 +terrascrubx.com, 1 terrasearcher.tk, 1 terraso.net, 1 terraso.org, 1 @@ -146360,7 +145523,6 @@ terremoto.com.br, 1 terrenal.tk, 1 terrenasparadise.com, 1 -terrenosparainvertir.com, 1 terresmagiques.com, 0 terrestream.com, 1 terrimcaleerphotography.com, 1 @@ -146379,7 +145541,6 @@ terrycho.net, 1 terrynazon.com, 1 terryoconnor.org, 1 -terryturnipseed.com, 0 ters.ga, 1 terumoindia.com, 1 terumoindiaskilllab.com, 1 @@ -146428,7 +145589,6 @@ test-sdbidentity.nl, 1 test-textbooks.com, 1 test-verz.online, 1 -test.de, 1 test.sn, 1 test.support, 1 test1-isrewards.com, 1 @@ -146480,6 +145640,7 @@ testispdomain.ml, 1 testjewerkgeluk.nl, 1 testkinja.com, 1 +testkitmakanan.id, 1 testmentor.in, 1 testmpf.com, 1 testmx.email, 1 @@ -146499,6 +145660,7 @@ testpornsite.com, 1 testprep.online, 1 testprepinsight.com, 1 +testprotest.com, 1 testpsicotecnicos.com.es, 1 testq.se, 1 testrack.com, 1 @@ -146534,6 +145696,7 @@ tetovaweb.tk, 1 tetovo.tk, 1 tetr.io, 1 +tetra.vn, 0 tetrabyte.tk, 1 tetracyclin.gq, 1 tetracyclin.ml, 1 @@ -146584,11 +145747,9 @@ texaspaintingandgutters.com, 1 texasparkinglotstriping.com, 1 texaspaversoutdoorliving.com, 1 -texasprosgaragedoors.com, 1 texasready.gov, 1 texasschools.us, 0 texasteam.tk, 1 -texastitlesearch.com, 1 texaswinetrail.com, 1 texby.com, 1 texdot.gov, 1 @@ -146626,7 +145787,6 @@ textprotocol.org, 1 textron.com, 0 textscout.io, 1 -textshuttle.com, 1 textsite.tk, 1 textualapp.com, 1 textundblog.de, 1 @@ -146669,7 +145829,7 @@ tfiik.com, 1 tfinfo.fr, 1 tfipost.com, 1 -tfk-installatieservice.nl, 1 +tfk-installatieservice.nl, 0 tfk.fr, 1 tfleadwork.co.uk, 1 tflite.com, 1 @@ -146693,6 +145853,7 @@ tgb.org.uk, 1 tgcfabian.nl, 1 tgcgrain.com, 1 +tgchambers.com, 1 tgexport.eu, 1 tghez.net, 1 tgirl.uk, 1 @@ -146719,6 +145880,7 @@ th-fanlist.tk, 1 th.am, 1 th.search.yahoo.com, 0 +th3d3n.com, 1 tha.sh, 1 thablubb.de, 1 thackba.de, 1 @@ -146748,6 +145910,7 @@ thailesemi.com, 0 thaimbc.com, 1 thaimega.club, 1 +thainewsonline.com, 1 thaipaviljongen.se, 1 thaipbspodcast.com, 1 thaipolyester.com, 1 @@ -146764,10 +145927,8 @@ thajskychram.cz, 1 thakureducation.in, 1 thakurmarjhuli.tk, 1 -thalamus.nz, 1 thalan.fr, 1 thalex.ai, 1 -thalhammer.it, 1 thalia.nu, 1 thalikkunushivatemple.tk, 1 thalliman.com, 1 @@ -146795,7 +145956,7 @@ thatchhealth.com, 1 thatchickkrys.com, 1 thatcomms.net, 1 -thatdaria.com, 1 +thatdaria.com, 0 thatferret.blog, 1 thatmy.com, 1 thatshayini-sivananthan.fr, 1 @@ -146982,7 +146143,9 @@ thebannerstore.com, 1 thebasementdefender.com, 1 thebasementdefender.net, 1 +thebasemovement.org.gh, 1 thebasicstudio.com, 1 +thebastion.io, 1 thebatesstudent.com, 1 thebathroomexchange.ga, 1 thebatlab.com, 1 @@ -146990,6 +146153,7 @@ thebaytalland.com, 1 thebcm.co.uk, 1 thebeardedbear.fr, 1 +thebeardedguitarist.com, 1 thebearofai.com, 1 thebeatyard.nl, 0 thebeautifuledge.com, 1 @@ -147006,7 +146170,6 @@ thebestgift.com.au, 1 thebestlaos.ga, 1 thebestnews.ga, 1 -thebestofthesprings.com, 1 thebestpersonin.ml, 1 thebestporn.com, 1 thebestshopping.tk, 1 @@ -147015,7 +146178,7 @@ thebhc.org, 1 thebigbigworld.tk, 1 thebigbounceamerica.com, 1 -thebigbouncetheory.com, 1 +thebigbouncetheory.com, 0 thebigdatacompany.com, 1 thebigdig.xyz, 1 thebiggerfish.ca, 1 @@ -147034,11 +146197,13 @@ thebit.link, 1 thebitchneyfiles.tk, 1 thebitchywaiter.com, 1 +thebitcoinhole.com, 1 thebiz.tk, 1 theblackandwhite.net, 1 theblackboard.gr, 1 theblackcat.ga, 1 theblackravens.com, 1 +theblaqcat.com, 1 theblink.com, 1 theblisters.tk, 1 theblock.co, 1 @@ -147047,18 +146212,15 @@ theblogstarter.com, 1 theblondeabroad.com, 0 theblue.tk, 1 -thebluebanner.net, 1 thebluered.net, 0 thebluewindowdesigns.com, 1 theboard.tk, 1 theboardroomsubi.com.au, 1 theboats.agency, 1 theboats.club, 1 -theboats.com, 1 theboats.de, 1 theboats.online, 1 theboats.pro, 1 -thebobcoin.io, 1 thebodylanguageguide.tk, 1 thebodyshop.bg, 1 theboltway.com, 0 @@ -147109,7 +146271,7 @@ thebutterflyencounters.com, 1 thebutton2.com, 1 thebuttonpost.com, 1 -thecabinetstore.com, 1 +thecabinetstore.com, 0 thecakeboxhampton.co.uk, 1 thecalifornias.tk, 1 thecallingofmoses.com, 1 @@ -147126,6 +146288,7 @@ thecarphunter.tk, 1 thecarvercenter.com, 1 thecarwizusa.com, 1 +thecasanara.com, 1 thecatanddogbowl.au, 1 thecatbowl.com.au, 1 thecats.tk, 1 @@ -147171,7 +146334,6 @@ thecoffinshop.co.nz, 1 thecolekidsacademy.com, 1 thecolgatemaroonnews.com, 1 -thecollegequiz.com, 1 thecolorbarph.com, 1 thecolorrun.hu, 1 thecommoner.org, 1 @@ -147214,7 +146376,6 @@ thecskr.in, 1 thecstick.com, 1 thectic.nl, 1 -thecultureclubhouse.com, 1 thecup.us, 1 thecureplainsong.tk, 1 thecurvyfashionista.com, 0 @@ -147270,7 +146431,6 @@ thediscovine.com, 1 thedistance.co.uk, 0 thedistrict.network, 1 -thediyvibe.com, 1 thedoc.eu.org, 1 thedocumentrefinery.com, 1 thedonaldarchive.tk, 1 @@ -147344,7 +146504,6 @@ thefasthire.org, 1 thefastmode.com, 1 thefatduck.co.uk, 1 -thefemdevs.com, 1 theferrarista.com, 0 thefes.org, 1 thefieldservicecompany.nl, 1 @@ -147426,7 +146585,6 @@ thegigr.org, 1 thegildedthistle.com, 1 thegilliesclub.com, 1 -thegillnetter.com, 1 thegingersnapbaker.co.za, 1 thegioibanca.tk, 1 thegioicovua.com, 1 @@ -147473,7 +146631,6 @@ theguerrilla.agency, 0 theguttercenter.com, 1 theguvnah.com, 1 -thegvoffice.net, 1 thegymnasium.com, 0 thegymsgoldcoast.com, 1 thegypsythread.org, 1 @@ -147485,11 +146642,12 @@ thehamiltoncoblog.com, 1 thehammerfund.com, 1 thehammerstroke.com, 1 -thehamptonsvegan.com, 1 +thehamptonsvegan.com, 0 thehappeny.com, 1 thehappyxwife.ga, 1 theharbourkitchen.com.au, 1 thehardgame.top, 1 +thehardiman.ie, 1 thehasanyildirim.tk, 1 thehashagency.com.au, 1 thehassanmusic.tk, 1 @@ -147511,8 +146669,8 @@ thehivedesign.org, 1 thehoff.ddnss.de, 1 thehofstrachronicle.com, 1 +thehogfathersbbq.com, 1 theholloways.tk, 1 -thehomeassignment.com, 1 thehomebakery.ie, 0 thehomemademasks.com, 1 thehomeofthefuture.com, 1 @@ -147528,6 +146686,7 @@ thehotfix.net, 1 thehotness.tech, 1 thehotrocks.tk, 1 +thehousehotel.ie, 1 thehouseofresilience.com, 1 thehowlinwolfcafe.ga, 1 thehudsonindependent.com, 1 @@ -147540,6 +146699,7 @@ theiaglasses.com, 1 theictlab.org, 1 theideaskitchen.com.au, 1 +theil.com, 1 theimagefile.com, 1 theimaginationagency.com, 0 theimagroup.com, 1 @@ -147552,8 +146712,7 @@ theindiemood.com, 1 theindra.eu, 1 theinitium.com, 0 -theinnatrsf.com, 1 -theinsightsfamily.com, 0 +theinnatrsf.com, 0 theinstitute.cf, 1 theinsurancealliance.com.au, 1 theinsurgence.org, 1 @@ -147561,6 +146720,7 @@ theintercept.com, 0 theinternationalgeekconspiracy.eu, 1 theinvisible.cc, 1 +theinvisible.lol, 1 theinvisibleman.tk, 1 theislandwellness.com, 1 theissen.io, 1 @@ -147588,6 +146748,7 @@ thekildaregroup.com, 1 thekillertoxin.de, 1 theking.bg, 1 +thekingoftickets.com, 1 thekirkwoodcall.com, 1 thekitchendoor.co.nz, 1 thekitchenprofessor.com, 1 @@ -147597,12 +146758,11 @@ thekliniquehotdeal.com, 1 theknockout.tk, 1 theknockoutchampionship.com, 1 -theknowitguy.com, 0 thekochampionship.com, 1 thekodaichronicle.com, 1 thekolye.com, 1 thekonsulthub.tk, 1 -thekosheriphone.com, 1 +thekosheriphone.com, 0 thekosherphone.com, 0 thekuwayama.net, 1 thelakedistrict.tk, 1 @@ -147615,6 +146775,7 @@ thelapine.ca, 1 thelasallenetwork.com, 1 thelashlounge.com, 1 +thelastatlas.com, 1 thelastprovince.com, 1 thelastsurprise.com, 1 thelastvikings.tk, 1 @@ -147676,7 +146837,6 @@ themacollection.com, 1 themacweekly.com, 1 themadlabengineer.co.uk, 1 -themagazine.my, 1 themagicalbohemianplr.com, 1 themagician.tk, 1 themainemonitor.org, 1 @@ -147724,7 +146884,6 @@ themiamimarathon.com, 1 themify.me, 1 themify.org, 1 -themigraineinstitute.com, 1 themilanlife.com, 1 themilfmovies.com, 1 themilnermethod.co.uk, 1 @@ -147795,6 +146954,7 @@ theninenine.com, 1 thenobullshit.coach, 1 thenolank.com, 1 +thenomadaz.com, 1 thenordly.com, 1 thenorthschool.org.uk, 1 thenorthwindonline.com, 1 @@ -147802,12 +146962,10 @@ thenrdhrd.nl, 1 thenviews.com, 1 theo.agency, 0 -theo.me, 1 theo546.cloud, 1 theo546.ovh, 1 theoakageexperiment.com, 1 theobg.co, 1 -theobmcircle.com, 1 theobromos.fr, 0 theoc4ever.tk, 1 theoceaned.com, 1 @@ -147832,13 +146990,13 @@ theoldposthousebnb.co.uk, 1 theoldschoolgamevault.com, 1 theolodewijk.nl, 1 -theologique.ch, 1 +theologique.ch, 0 theome.ga, 1 theonethaimassage.de, 1 theonikage.tk, 1 +theonix.mx, 1 theonlineclarion.com, 1 theoosmetalart.nl, 1 -theopaczek.com, 1 theopentrade.com, 1 theopera.tk, 1 theoperators.tk, 1 @@ -147851,7 +147009,6 @@ theoriginalassistant.com, 1 theoriginalmarkz.com, 1 theoriginalworkshop.com, 1 -theorion.com, 1 theorioncorrelation.com, 1 theorlandocriminaldefense.com, 0 theory-test-online.co.uk, 1 @@ -147918,6 +147075,7 @@ thepiratesociety.org, 1 thepitsurfhire.co.uk, 1 thepixel.tk, 1 +thepizzaplanet.com, 1 theplantation.org.za, 1 theplantpeople.co.nz, 1 theplaydaysbus.co.uk, 1 @@ -148025,7 +147183,7 @@ theredhouse.org, 1 theredsgazette.tk, 1 theredwood.com, 1 -therefinishingco.com, 1 +therefinishingco.com, 0 thereisnocloud.fr, 1 thereitis.org, 1 thereload.com, 1 @@ -148038,6 +147196,7 @@ thereservetownsville.com.au, 1 theresingles.tk, 1 therestaurantstore.com, 1 +therestlessengineer.com, 1 theresumeapp.com, 0 theretinachannel.com, 1 theretirementincomecalculator.com, 1 @@ -148101,6 +147260,7 @@ thesandb.com, 1 thesarogroup.com, 1 thesashcompany.com.au, 1 +thesatoshiarchive.com, 1 thesatriantoshow.tk, 1 thesaturdaypaper.com.au, 1 thescarlet.org, 1 @@ -148116,7 +147276,6 @@ thesearch.com.tw, 1 thesecondsposts.com, 0 theseed.io, 1 -theseedbox.xyz, 1 thesehighsandlows.com, 1 thesemisouthernhomemaker.com, 1 theseoframework.com, 1 @@ -148146,7 +147305,6 @@ thesilentplanet.tk, 1 thesilverdaisy.com, 1 thesimons.family, 1 -thesimplehelp.com, 0 thesimplewebcompany.com, 1 thesimpsonian.com, 1 thesimsbrasil.tk, 1 @@ -148166,6 +147324,7 @@ theslotz1.co, 1 theslotz1.uk, 1 theslowtravelplanner.com, 1 +thesmartadvice.com, 1 thesmartconsumer.com, 1 thesmexperiences.com, 1 thesocialcopywriter.com, 1 @@ -148186,6 +147345,7 @@ thespiritfm.tk, 1 thespittake.com, 1 thespoiler.co.il, 0 +thesquareofnine.com, 1 thesslms.com, 1 thestandards.tk, 1 thestatementjewelry.com, 1 @@ -148221,7 +147381,6 @@ theswanstation.tk, 1 theswissbay.ch, 0 thetablehuff.com, 1 -thetalononline.com, 1 thetampariverwalk.com, 1 thetandd.com, 1 thetapirsmouth.com, 1 @@ -148317,7 +147476,6 @@ thevillageok.gov, 1 thevine.one, 1 thevintagenews.com, 0 -theviolenceofdevelopment.com, 1 thevioniway.se, 1 thevirgin.tk, 1 thevirtualbookkeepers.com, 0 @@ -148346,7 +147504,6 @@ thewebdexter.com, 1 thewebguru.net, 1 thewebmasters.tk, 1 -thewebsitemarketingagency.com, 1 theweddingfit.com, 1 thewedgemethodai.com, 0 theweed.tk, 1 @@ -148354,6 +147511,7 @@ thewellbeingarchitect.ie, 1 thewest.tk, 1 thewhiteboxxx.com, 1 +thewhitedog9487.xyz, 1 thewhitehorses.tk, 1 thewhitneypaige.com, 0 thewhitonline.com, 1 @@ -148389,7 +147547,6 @@ theworldexchange.net, 1 theworldexchange.org, 1 theworldoftailor.com, 1 -theworldreimagined.org, 1 theworldsend.eu, 0 theworldtakes.tk, 1 theworser.tk, 1 @@ -148409,7 +147566,6 @@ theycallmesnail.tk, 1 theyear199x.org, 1 theyearinpictures.co.uk, 1 -theyellow.fish, 1 theyellowsub.org, 1 theyosh.nl, 1 theysay.me, 1 @@ -148420,6 +147576,7 @@ thhomes.vn, 1 thhost.tk, 1 thhp.vn, 1 +thi.dev.br, 1 thiabee.com, 1 thiagohersan.com, 1 thiagolosneves.com.br, 1 @@ -148502,7 +147659,6 @@ thinkmarkets.asia, 1 thinkmarkets.com, 1 thinko.it, 1 -thinkoffer.com, 1 thinkon.com, 1 thinkopps.co.uk, 1 thinkprocedural.com, 1 @@ -148513,7 +147669,7 @@ thinkwisesoftware.com, 0 thinkwits.com, 0 thinxtream.com, 1 -thirard.com, 1 +thirard.com, 0 thirdbearsolutions.com, 0 thirdgenphoto.co.uk, 1 thirdman.auction, 1 @@ -148522,7 +147678,7 @@ thirdwaverevenue.com, 1 thirdworld.moe, 1 thiri.org, 1 -thirstyai.live, 0 +thirstyai.live, 1 thirstys2.com, 1 thirteen.pm, 1 thirtysixseventy.ml, 1 @@ -148548,7 +147704,7 @@ thisistina.nl, 1 thisistwice.tk, 1 thisiswhywemom.com, 1 -thisline.eu, 1 +thisline.eu, 0 thismatter.com, 1 thismumdoesntknowbest.com, 1 thispageisup.com, 1 @@ -148637,7 +147793,6 @@ thorneycroftsolicitors.co.uk, 1 thorntonnh.gov, 1 thorntonshvacservice.com, 1 -thoropass.com, 1 thoroughbredrecords.com, 1 thors-hearth.tk, 1 thorsteinsson.com, 1 @@ -148674,7 +147829,6 @@ threads.com, 1 threads.net, 1 threadscircle.com, 1 -threadsdownloader.com, 1 threadspecification.com, 1 threadythready.com, 1 threat-surface.com, 1 @@ -148698,13 +147852,16 @@ threatflux.ai, 1 threatint.academy, 1 threatint.blog, 1 +threatint.cloud, 1 threatint.com, 1 +threatint.de, 1 threatint.directory, 1 threatint.dk, 1 threatint.email, 1 threatint.es, 1 threatint.events, 1 threatint.group, 1 +threatint.info, 1 threatint.me, 1 threatint.media, 1 threatint.network, 1 @@ -148714,7 +147871,6 @@ threatint.support, 1 threatlabs.eu, 1 threatlabs.nl, 1 -threatmeld.ai, 1 threatnix.io, 1 threatobserver.com, 1 threatutic.gq, 1 @@ -148728,7 +147884,6 @@ threelayerhoodies.co.za, 1 threelayers.co.za, 1 threelions.ch, 1 -threeloudcrows.ca, 1 threeluck.sg, 1 threema.ch, 1 threema.id, 1 @@ -148757,6 +147912,7 @@ thriva.co, 1 thrive-fl.org, 1 thrive-gyms.co.za, 1 +thrive-research.com.au, 1 thrivefostering.com, 1 thriveondev.com, 1 thriver.com, 1 @@ -148774,11 +147930,13 @@ throwmails.com, 1 throwpass.com, 1 thrproject.com, 1 +thrustev.it, 1 thrustrules.tk, 1 ths.li, 1 thsc.us, 1 thsconstructors.com, 0 thscpac.org, 1 +thsdatasettlement.com, 1 thsecurity.cz, 1 thtcmaps.com, 1 thuban.me, 1 @@ -148838,7 +147996,6 @@ tiagomoraismorgado.tk, 1 tiagomoreira.pt, 1 tiagoneves.tk, 1 -tiagonunes.pt, 1 tiagosimao.com, 1 tiai.cf, 1 tiai.gq, 1 @@ -148897,7 +148054,6 @@ ticalcgames.tk, 1 ticfleet.com, 1 tichdiem80.com, 1 -ticker.blue, 1 tickeron.com, 1 tickerontest.com, 1 tickerswatchandclock.com, 1 @@ -148925,6 +148081,7 @@ ticketmeo.com, 1 ticketmorocco.com, 1 ticketpay.jp, 1 +ticketpro.ca, 1 ticketroster.com, 1 tickets2004.tk, 1 ticketscheapairline.com, 1 @@ -149006,8 +148163,8 @@ tieredaccess.com, 1 tierfaszienation.de, 1 tiergear.com.au, 1 +tiermedizinstudium.eu, 1 tierneurologie-leipzig.de, 1 -tiernos.com, 1 tierparadies-muhrielle.org, 1 tierra-indomables.tk, 1 tierracenter.com, 1 @@ -149015,23 +148172,21 @@ tierrahost.com, 1 tierraprohibida.net, 1 tierschutz-niederrhein.de, 1 +tiersigma.com, 1 tiertreff24.de, 1 tiestech.net, 1 tiestofan.tk, 1 tiete.be, 1 tietew.jp, 1 tietew.net, 1 -tiew.pl, 0 tifa-233.com, 1 tifan.net, 1 tifaware.com, 1 tifenn.eu, 1 tifenn.nl, 1 tiffanitooley.tk, 1 -tiffany-angel.com, 1 tiffany-remixed.tk, 1 tiffanyalleyglobal.com, 1 -tiffanyblooms.ru, 1 tiffanywatson.xyz, 1 tiffinohio.com, 1 tiffinohio.net, 1 @@ -149301,7 +148456,6 @@ timotheory.gr, 1 timothy.tk, 1 timothybjacobs.com, 1 -timothymartinezdmd.com, 0 timothyyip.photography, 1 timotielens.nl, 1 timowi.de, 1 @@ -149336,6 +148490,7 @@ tinapoethe.com, 0 tinastouchmassage.com, 1 tindallriley.co.uk, 1 +tindelog.com, 1 tinderphotos.ga, 1 tinevogel.dk, 1 tinf.de, 1 @@ -149411,10 +148566,8 @@ tio.run, 1 tiogacountyny.gov, 1 tiolou.com.br, 1 -tipberlin.com, 1 tipi.jp, 1 tipiakers.club, 1 -tiplanet.org, 1 tipmast.nl, 1 tipmexico.com, 1 tipnews.tk, 1 @@ -149445,6 +148598,9 @@ tipydokasina.cz, 1 tipyzregalu.cz, 1 tir-mauperthuis.fr, 1 +tira.club, 1 +tirafoto.com, 1 +tirafoto.com.br, 1 tiraloche.com, 1 tiramisucake.com, 1 tirana-chat.tk, 1 @@ -149459,6 +148615,7 @@ tirflesia.it, 1 tirgar.org, 1 tirgul-vertiujeni.tk, 1 +tirhani.co.za, 1 tirhani.com, 1 tirion.network, 0 tirion.org, 0 @@ -149476,7 +148633,6 @@ tishomingo.news, 1 tisiclidisepta.cz, 1 tisina.org, 1 -tiski-shop.ru, 1 tisknunahadry.cz, 1 tism.in, 1 tispayments.com, 1 @@ -149513,9 +148669,7 @@ titlecan.online, 1 titlecan.ru, 1 titlecan.us.kg, 1 -titlesearch.com, 1 titli.fr, 1 -titom.me, 1 titomweb.fr, 1 titopu.com, 1 titouan.co, 0 @@ -149568,9 +148722,7 @@ tk3ka.ru, 1 tka24.my.id, 1 tkacz.pro, 1 -tkafinearts.net, 1 tkanemoto.com, 0 -tkarstens.de, 1 tkay.tk, 1 tkcafe.net, 1 tkcaninetraining.com, 1 @@ -149581,7 +148733,7 @@ tkhsurgery.com, 1 tkic.com.au, 1 tkiely.net, 0 -tkirch.de, 1 +tkirch.de, 0 tklist.us, 1 tklm.pl, 1 tkmr-gyouseishosi.com, 1 @@ -149597,6 +148749,7 @@ tlaedu.org, 1 tlaloc.sh, 1 tlca.org, 1 +tlcelectricalinc.com, 1 tlchospitality.com, 1 tlcinteriors.com.au, 1 tlcmillworx.com, 1 @@ -149631,6 +148784,7 @@ tlsrobot.se, 1 tlumaczenie.com, 1 tlvgraffiti.co.il, 1 +tlwallets.com, 1 tlyphed.net, 1 tlys.de, 1 tm-its.com, 1 @@ -149661,7 +148815,6 @@ tmcjobs.com, 1 tmcrew.org, 1 tmdb.biz, 1 -tmdmotorhomes.com, 1 tme.com, 1 tme.eu, 1 tmeoworld.tk, 1 @@ -149699,7 +148852,6 @@ tnail.com.tw, 1 tnail.org, 1 tnb-plattform.de, 1 -tncourts.gov, 1 tncoverheaddoors.com, 1 tndagc.gov, 1 tndentalwellness.com, 1 @@ -149733,8 +148885,6 @@ to-ya.jp, 1 to.cm, 0 to.gt, 1 -to.kg, 1 -to.md, 1 toabaja.com, 1 toad.ga, 1 toadcreekmusic.com, 1 @@ -149763,6 +148913,7 @@ tobias-kluge.de, 0 tobias-olbrich.de, 1 tobias-sachs.de, 1 +tobias-tacke.de, 1 tobias.gr, 1 tobias4.com.au, 1 tobiasbrunner.net, 1 @@ -149789,7 +148940,6 @@ tobiaswiese.work, 1 tobiefornerod.ch, 1 tobiichi3227.ddns.net, 1 -tobiiro.com, 1 tobinc.ddnss.de, 1 tobis.cloud, 1 tobnm.gov, 1 @@ -149883,7 +149033,6 @@ toformat.com, 1 tofu.cf, 1 tofu.kim, 1 -tofuixi.com, 1 togaether.me, 1 togashishika.com, 1 together.gov, 1 @@ -149923,11 +149072,9 @@ tokenizedhq.com, 1 tokenlabs.network, 1 tokenlon.im, 1 -tokenlytics.io, 1 tokenoftrust.com, 1 tokens.net, 1 toki-doki.tk, 1 -tokidoki.team, 1 tokimeko.jp, 0 tokinoha.net, 1 tokinohikari.com, 1 @@ -149976,7 +149123,6 @@ toldosecoberturasembh.com, 1 toldst.dk, 1 toledo.tk, 1 -toledoappraiser.com, 1 toledoclassifieds.net, 1 toledoescorts.net, 1 toledohydraulic.com, 1 @@ -150038,6 +149184,7 @@ tomatoflyer.com, 1 tomatofrogs.com, 1 tomatohq.com, 1 +tomatu.link, 1 tomaz.eu, 1 tombaker.me, 1 tombclan.ga, 1 @@ -150071,7 +149218,6 @@ tomget.tk, 1 tomharling.co.uk, 1 tomharling.uk, 1 -tomi.ai, 1 tomi.cc, 1 tomik.cloud, 1 tomik.fun, 1 @@ -150088,7 +149234,6 @@ tomkempers.nl, 1 tomkiss.net, 1 tomkleinit.de, 1 -tomkompserwis.pl, 1 tomkunze.de, 1 tomkwok.com, 0 tomlehrersongs.nl, 1 @@ -150124,6 +149269,7 @@ tomrichards.net, 1 tomrunting.pro, 1 toms.ovh, 1 +tomsdata.no, 1 tomsdevsn.me, 1 tomsgastroguide.com, 1 tomsk-news.net, 1 @@ -150144,6 +149290,7 @@ tomthorogood.uk, 1 tomticket.com, 1 tomtile.ca, 1 +tomtt.tv, 1 tomudding.nl, 1 tomvanlaer.be, 1 tomvannoppen.tk, 1 @@ -150215,8 +149362,6 @@ tonsilimmune.org, 1 tonsillar-stones.com, 1 tonsit.com, 1 -tonsit.org, 0 -tonspion.com, 1 tonton.cf, 1 tontonan.gq, 1 tontonnews.net, 1 @@ -150245,7 +149390,6 @@ too.gy, 1 tooadalsauda.kz, 1 toob.fr, 1 -toobug.net, 0 tooelecity.gov, 1 tooeleco.gov, 1 tooelecountyvotes.gov, 1 @@ -150314,7 +149458,6 @@ toothsearch.tk, 1 tooti.biz, 0 tootl.org, 1 -tootsi.edu.ee, 1 tootsiewootsies4d.com, 1 toovendre.com, 1 toowoonbayhp.com.au, 1 @@ -150367,7 +149510,6 @@ top10.tk, 1 top100games.ml, 1 top10antivirus.review, 1 -top10camgirls.com, 1 top10directory.tk, 1 top10list.tk, 1 top10media.tk, 1 @@ -150384,6 +149526,7 @@ topanimation.nl, 1 topanimecharacters.com, 1 topanlage.de, 1 +toparius.com, 1 toparkinfo.hu, 1 topas.tk, 1 topaxi.codes, 0 @@ -150410,7 +149553,7 @@ topcliptv.com, 1 topcoffee.cf, 1 topcomputacion.com.ar, 1 -topcounterfeitlab.com, 1 +topcounterfeitlab.com, 0 topcover.cz, 1 topdanmark.dk, 1 topdesignfirms.com, 1 @@ -150451,7 +149594,6 @@ topicus-keyhub.com, 1 topitalianscientists.org, 1 topjeans.ga, 1 -topjobs.ch, 1 topjumpmarketing.com, 1 topknot.gq, 1 topkorea.ml, 1 @@ -150502,6 +149644,7 @@ toppropcounterfeitnotes.com, 1 toppstugansundbyberg.se, 1 topradiosbrasil.tk, 1 +toprakkilic.com, 1 toprandi.com, 1 topratedcamsites.com, 1 toprci.com.br, 1 @@ -150521,7 +149664,6 @@ topspani.cz, 1 topspin.tk, 1 topsport.bg, 1 -topsteroidsonline.com, 1 topsuper60.ag, 1 topsuper60.biz, 1 topsuper60.com, 1 @@ -150576,6 +149718,7 @@ torba.tk, 1 torbay.ga, 1 torbay.tk, 1 +torbaypharma.com, 1 torbayrise.co.uk, 1 torch-fan.site, 1 torch.security, 0 @@ -150604,6 +149747,7 @@ torkel.se, 1 torlock.com, 1 torlock2.com, 1 +tormano.com, 1 tormentgame.com, 1 tormox.ml, 1 tornada-cz.cz, 1 @@ -150692,7 +149836,6 @@ tosatopsicologabologna.com, 1 tosbourn.com, 1 toschool.com.br, 1 -tosheroon.com, 1 toshicar.com, 1 toshigolog.com, 1 toshik.tk, 1 @@ -150769,6 +149912,7 @@ toto.nl, 1 totobetty.com, 1 totodil.es, 1 +totoleagues.com, 1 totolink.tw, 1 totora.tk, 1 totositetv.net, 1 @@ -150913,6 +150057,7 @@ tovarypochtoj.tk, 1 toverland-tickets.nl, 1 tovp.org, 0 +towami.com, 1 towardsthecloud.com, 1 towaway.ru, 1 towellconstruction.ca, 1 @@ -150927,6 +150072,7 @@ towersstreet.com, 1 towertheatre.org, 1 towessi.tk, 1 +towing-waco.com, 1 towingmoore.com, 1 towingnashvilletn.com, 1 town-night.jp, 1 @@ -150938,7 +150084,6 @@ townifi.ga, 1 townithacany.gov, 1 townlaretsota.gq, 1 -townnews.com, 1 townoconomowoc-wi.gov, 1 townofadamsgreencountywi.gov, 1 townofadamsjacksoncowi.gov, 1 @@ -151169,7 +150314,6 @@ townofwrightstownwi.gov, 1 townofwyomingwi.gov, 1 townresults.ga, 1 -townscorereport.com, 1 townsendhotel.com, 1 townshendvt.gov, 1 townshipoflower.org, 1 @@ -151276,7 +150420,7 @@ trace-electricity.com, 1 trace.guru, 1 trace.moe, 1 -trace.observer, 1 +trace.observer, 0 trace2race.com, 1 tracebit.com, 1 tracecompass.com, 1 @@ -151427,10 +150571,12 @@ tradu.com, 1 traduttore.roma.it, 1 traduvn.com, 1 +tradv.com.br, 1 tradymoney.com, 1 traegerbox.com, 0 traegergrills.com, 1 traf-bonus.tk, 1 +trafalgarpta.org.uk, 1 trafarm.ro, 1 trafegoop.com, 1 traffic-management-scotland.co.uk, 1 @@ -151454,6 +150600,7 @@ traficmusik.net, 1 trafik.tk, 1 trafiken.nu, 1 +trafilea.com, 0 trafomex.com.mx, 1 trafplus.tk, 1 tragamin.ca, 1 @@ -151480,6 +150627,7 @@ trailofbits.com, 0 trailrider.tk, 1 trailrunbern.ch, 1 +trailrunningplanet.com, 1 trails-end.com, 0 trainable.cf, 1 trainbusferry.com, 1 @@ -151495,12 +150643,11 @@ trainingleadersinternational.org, 1 traininglife.org, 1 trainingmanager.com.au, 1 -trainingminds.nl, 1 trainingproviderresults.gov, 1 trainings-handschuhe-test.de, 1 trainingsalicante.tk, 1 trainingscatalogus.nl, 1 -trainingsecke.de, 1 +trainingsecke.de, 0 trainingswiese.at, 1 trainline.io, 1 trainmagazine.nl, 1 @@ -151511,7 +150658,6 @@ trainparis.fr, 1 trainplaza.nl, 1 trains.sexy, 1 -trainsnmore.tv, 1 traintimes.be, 1 traintimes.ch, 1 traintimes.dk, 1 @@ -151522,6 +150668,7 @@ trainwiki.tk, 1 trainwithkiwi.com, 1 trainyourtribe.com.au, 1 +trainys.ru, 1 traista.ru, 1 traitement-arthrose.fr, 1 traitement-cafard.net, 1 @@ -151564,7 +150711,6 @@ tranhlavender.com, 1 tranmao.vn, 0 tranmerelectric.com, 1 -trannycammers.com, 1 trannycamsites.com, 1 trannysurprise.com, 1 tranquillity.se, 1 @@ -151593,6 +150739,7 @@ transcendmotor.sg, 1 transcendretirement.net, 1 transchroma.com, 0 +transcibe.ai, 1 transco.com.tr, 1 transcoalition.net, 1 transcorphotels.com, 1 @@ -151623,7 +150770,6 @@ transferme24.com, 1 transfero-sheregesh.ru, 1 transfers-sheregesh.ru, 1 -transferserver.at, 1 transfersheregesh.com, 1 transferwiseturkiye.com.tr, 1 transfez.com, 0 @@ -151662,7 +150808,6 @@ transition-care.com, 1 transitllc.ru, 1 transito.tk, 1 -transitownplaza.com, 1 transitpoint.us, 1 transitrid.ing, 1 translab.ir, 1 @@ -151736,6 +150881,7 @@ trantrongtri.info, 1 tranvia.info, 1 tranzact.net, 1 +tranzguard.com, 1 tranzron.ga, 1 trapay.net, 1 trapezegroup.de, 1 @@ -151745,6 +150891,7 @@ trappednerve.org, 1 trappenteck.be, 1 trappersoutfitters.tk, 1 +trappes.fr, 1 traproulette.com, 1 trapsdirect.com, 1 trapsexy.com, 1 @@ -151845,7 +150992,6 @@ travelcollections.ga, 1 travelcolor.ga, 1 travelcompany.tk, 1 -travelcore.io, 1 travelcrown.ga, 1 traveldir.ga, 1 traveldodge.ga, 1 @@ -151869,7 +151015,6 @@ travelfriend.tk, 1 travelfusion.com, 1 travelgang.ga, 1 -travelgirlsclub.com, 1 travelglamour.ga, 1 travelgratis.ga, 1 travelhands.ga, 1 @@ -151912,7 +151057,6 @@ travelovernight.ga, 1 travelpeace.ga, 1 travelpearl.ga, 1 -travelpenguin.nl, 1 travelphilippines.tk, 1 travelphoto.cc, 1 travelphotographycourse.com, 1 @@ -151976,7 +151120,7 @@ travisforte.io, 1 travisfranck.com, 1 travishenning.com, 1 -travislord.xyz, 0 +travislord.xyz, 1 travkolyl.gq, 1 travlagent.com, 1 travler.net, 1 @@ -152018,7 +151162,6 @@ trebilfoundationsystems.com, 1 trebnie.nl, 1 treborintl.com, 1 -trecebits.com, 1 trechnex.com, 1 trecobox.com.br, 1 tredicom.com, 1 @@ -152027,6 +151170,7 @@ tree.gdn, 1 tree0.xyz, 1 treebaglia.xyz, 1 +treecycle.com.au, 1 treehousemidigama.com, 1 treehouseresort.nl, 1 treeinspection.com, 1 @@ -152038,14 +151182,12 @@ treeremovalsboksburg.co.za, 1 treesonthemove.com, 1 treestarmarketing.com, 1 -treetta.com, 1 treevectors.com, 1 treexiptv.com, 1 treexy.com, 1 treezone.net, 1 trefpuntdemeent.nl, 1 trehand.fr, 1 -treiberdrivers.com, 1 treibholz-norddeich.de, 1 treier.net, 1 treinonerd.com, 1 @@ -152366,7 +151508,6 @@ trippati.com, 1 trippers.info, 1 trippinktattoos.com, 1 -trips4foodies.com, 1 triptap.ru, 1 triptravels.tk, 1 triptych.is, 1 @@ -152383,8 +151524,6 @@ tristan.moe, 1 tristanfarkas.one, 1 tristanhall.com, 1 -tristansommer.de, 1 -tritansoft.com, 1 tritium.cf, 1 tritoncc.com, 0 tritonsensors.com, 0 @@ -152403,10 +151542,8 @@ triwan.sk, 1 trixi.com, 1 trixiebooru.org, 1 -trixietainted.net, 1 trixy.com.br, 1 triz.co.uk, 0 -trizettoprovider.com, 1 trjct.online, 1 trjyyw.com, 1 trkhosting.ga, 1 @@ -152426,7 +151563,6 @@ troedel-trolle.de, 1 troedelhannes.at, 1 troel.nl, 1 -trofeosylogros.com, 1 trogloditas.tk, 1 troi.de, 1 troisprime.com, 0 @@ -152481,7 +151617,6 @@ trophies.de, 1 trophykoi.tk, 1 trophyshopinc.com, 1 -tropianoandson.com, 1 tropic.mu, 1 tropicalhurricanetracker.com, 1 tropicalislands.tk, 1 @@ -152523,7 +151658,6 @@ trouwrijk.nl, 1 trovadoor.com, 1 trovaprezzi.it, 1 -trovas.ch, 1 trovata.io, 1 trove.com, 1 trowbridgegallery.com, 1 @@ -152531,7 +151665,6 @@ troxy.io, 1 troy.tech, 1 troyanos.uy, 1 -troyattorney.com, 1 troyfawkes.com, 1 troyflexpay.com, 1 troyhunt.com, 1 @@ -152660,10 +151793,8 @@ truetraveller.com, 1 truetrophies.com, 1 trueweb.es, 1 -truewebmaster.com, 1 truewinter.net, 1 truework.com, 1 -truffaoaffidabile.com, 1 truffe.uk, 1 truffle.co.id, 1 trufflemonkey.co.uk, 1 @@ -152676,7 +151807,6 @@ trulock.tk, 1 trulycharmed.tk, 1 trulyhardseltzer.com, 0 -trulypakistan.net, 1 trumag-international.com, 1 trumanlibrary.gov, 1 trumansburgoptical.com, 1 @@ -152685,10 +151815,12 @@ trumpet-call.org, 1 trumpet-whistleblowing.eu, 1 trumplibrary.gov, 1 +trumpon.com, 1 trumppresidency.org, 1 trumptrips.com, 1 trumptumbles.com, 1 trumpwhitehouse.gov, 1 +trumpybird.com, 1 trumsy.fr, 1 truncus-encephali.co.uk, 1 trundr.com, 1 @@ -152705,6 +151837,7 @@ trusifan.tk, 1 trusitio.com, 1 truskmedia.tk, 1 +trussgenius.com, 1 trussville.gov, 1 trust-arabia.net, 1 trust-btc.ml, 1 @@ -152717,10 +151850,8 @@ trustcert.net, 1 trustcert.org, 1 trustcloud.ai, 1 -trustcrest.in, 1 trustcruit.com, 1 trustcv.com, 1 -trustdental.jp, 1 trusted-medications.com, 1 trusted-signatures.com, 1 trustedclothes.com, 1 @@ -152732,12 +151863,14 @@ trustee.zone, 1 trusthook.tk, 1 trusthub.com, 1 +trustkeyvault.com, 1 trustnet.co.il, 0 trustnxt.com, 1 trustology.io, 1 trustpoint.nz, 1 trustpoint.one, 0 trustradi.us, 1 +trustrelayservices.com, 1 trustreview.tk, 1 trustserv.de, 1 trustserver.cn, 1 @@ -152768,7 +151901,6 @@ truxton.tk, 1 truyen-hentai.co.uk, 1 truyen-hentai.com, 1 -truyen-hentai.de, 1 truyen-hentai.ru, 1 truyenfull.vn, 1 trvatan.com, 1 @@ -152782,6 +151914,7 @@ trybeaverdock.com, 1 trycaviar.com, 1 trychameleon.com, 1 +trydevsnip.com, 1 tryfabulousdiet.com, 1 tryfabulousskincream.com, 1 tryfabulousskinserum.com, 1 @@ -152796,8 +151929,10 @@ tryitonline.net, 1 tryjeeves.com, 1 tryk.tk, 1 +tryleenza.com, 1 trymegadrol.com, 1 tryndraze.com, 0 +tryneutraleye.com, 1 trynewjobs.com, 1 trynowrinkleseyeserum.com, 1 tryonnc.gov, 1 @@ -152808,6 +151943,7 @@ tryplo.xyz, 1 trypt.am, 1 tryptamine.tk, 1 +tryquickimg.com, 1 tryramp.com, 1 tryreason.com, 1 tryrfsfirst.co.uk, 1 @@ -152832,7 +151968,7 @@ ts5server.eu, 1 tsacareer.com, 1 tsacasa.com, 1 -tsacbttest.com, 1 +tsacbttest.com, 0 tsachs.eu, 1 tsacloud.ml, 1 tsahf.com, 1 @@ -152850,21 +151986,23 @@ tsc.gov, 1 tscampus.online, 1 tscgtmkernel.com, 1 +tscherning.dk, 0 tsdweb.com, 1 tsedryk.ca, 1 tsehaybank.com.et, 1 +tsemporium.com, 1 tseng.dedyn.io, 1 tsentrobuv.tk, 1 -tserverhq.com, 1 +tserverhq.com, 0 tsf.fyi, 1 tsfempleos.com, 1 tsg-kit.de, 1 tsg0o0.com, 1 tsgbcs.org, 1 tsgbit.net, 1 +tshirai.work, 1 tshirtgenerator.ga, 1 tshirtmemoryquilts.com, 0 -tshirts.joburg, 1 tshirtsbotswana.co.za, 1 tshirtscapetown.com, 1 tshirtsforsale.co.za, 1 @@ -152887,7 +152025,6 @@ tsishipping.com, 1 tsja.tk, 1 tsk.ovh, 1 -tskimwagner.com, 1 tsla.nu, 1 tsmasseur.com, 1 tsmost.cz, 1 @@ -152939,11 +152076,10 @@ tsutsumi-kogyo.jp, 1 tsuyuzakihiroyuki.com, 1 tsv-1894.de, 0 -tsv-hittfeld.de, 0 +tsv-hittfeld.de, 1 tswg.gov, 1 tswinvest.com, 1 tsworldtech.com, 1 -tsxxlangel.com, 1 tsybanov.com, 1 tt-aepfingen.tk, 1 tt-hardware.com, 1 @@ -152959,6 +152095,7 @@ tt8366.com, 1 tt9297.co, 1 tt9728.co, 1 +ttan.io, 1 ttaxus.com, 1 ttb.gov, 0 ttb.me, 1 @@ -152969,8 +152106,10 @@ ttclub.fr, 1 ttdrive.ru, 1 ttdt.org, 1 +tteokiskin.com, 1 ttfin.ch, 1 ttfscu.com, 1 +ttinstituteacademy.com, 1 ttjnextgenjewels.com, 1 ttkia.com, 1 ttl.space, 1 @@ -153072,7 +152211,6 @@ tugether.at, 1 tugi.cz, 1 tugnut.tk, 1 -tuhistoriaenpapel.com, 1 tuimpulso.eu, 1 tuinaportugal.com, 1 tuincentrumhardenberg.com, 1 @@ -153096,7 +152234,6 @@ tukihenkilotyo.fi, 1 tukki.ai, 1 tula-city.tk, 1 -tula-health.com, 1 tula-news.ga, 1 tula-news.net, 1 tulafarms.ga, 1 @@ -153204,6 +152341,9 @@ tuppenceworth.ie, 1 tuppennysfireplace.com, 1 tuppersexmadrid.com.es, 1 +tuppi.eu, 1 +tuppi.fr, 1 +tuppi.org, 1 tuprag.com.tr, 1 tupsicoayuda.com, 0 tupugoya.org, 1 @@ -153326,7 +152466,6 @@ turnaroundinsights.com, 1 turnbacktogod.com, 1 turncircles.com, 1 -turneragsupply.com, 0 turneroregon.gov, 1 turnet.tk, 1 turnierplanung.com, 1 @@ -153346,7 +152485,6 @@ turpinpesage.fr, 1 turple.com, 1 turquoise.health, 1 -turquoisetassel.com, 1 turretlabs.io, 1 turtle.ai, 0 turtle.ky, 1 @@ -153392,11 +152530,11 @@ tutdevki.tk, 1 tuteego.com, 1 tutelevisoronline.com, 1 +tutelyx.com, 1 tutiendard.ga, 1 tutierra.net, 1 tutima.com, 1 tuto-craft.com, 1 -tutocursos.com, 1 tutorbrasil.com.br, 1 tutorcruncher.com, 1 tutorial90.cf, 1 @@ -153410,7 +152548,6 @@ tutorialinux.com, 1 tutorialitmalaysia.tk, 1 tutorialphotoshop.tk, 1 -tutorialseo.com.br, 1 tutorialtactic.com, 1 tutoriel-arduino.com, 1 tutoringindustry.tk, 1 @@ -153452,13 +152589,12 @@ tuxpi.com, 1 tuxplace.nl, 1 tuxsoul.com, 1 -tuxsrv.com, 1 tuyen.blog, 1 tuyen.me, 1 tuyen.xyz, 1 tuyetchieuwebsite.tk, 1 tuza.com.au, 1 -tuzaginside.com, 1 +tuzaginside.com, 0 tuzagtcs.com, 1 tuzaijidi.com, 1 tuzdrowie.pl, 1 @@ -153471,13 +152607,11 @@ tv-runkel.de, 1 tv-seznam-cz.cz, 1 tv-seznamcz.cz, 1 -tv-sports.fr, 1 tv-tuners.cf, 1 tv-zone.tk, 1 tv3.lv, 1 tv9gujarati.com, 1 tvabullarbro.tk, 1 -tvaerialsmanchester.com, 1 tvarkaulietuva.lt, 1 tvaroh.fun, 1 tvasites.com, 1 @@ -153506,7 +152640,6 @@ tvguide.com, 1 tview.co.uk, 1 tvindia.tk, 1 -tvipper.com, 1 tvk.tirol, 1 tvkaista.net, 1 tvkaista.org, 1 @@ -153536,6 +152669,7 @@ tvquot.es, 1 tvrestyler.eu, 1 tvreviewer.tk, 1 +tvrz.ru, 1 tvs-autoserv.de, 1 tvs-virtual.cz, 1 tvseasons.tk, 1 @@ -153550,7 +152684,7 @@ tvstore-247.net, 1 tvszn.cz, 1 tvtj.ml, 1 -tvtools.eu, 1 +tvtools.eu, 0 tvtsvod.com, 1 tvtvtv.cz, 1 tvyvideo.com, 1 @@ -153570,7 +152704,6 @@ twdreview.com, 1 twdtulelo.hu, 1 tweakers.com.au, 1 -tweakers.net, 1 tweakersbadge.nl, 1 tweaktown.com, 1 tweaktownforum.com, 1 @@ -153604,7 +152737,6 @@ twilightcookies.ca, 1 twilightkingdom.tk, 1 twilightningzone.tk, 1 -twilite.co.uk, 1 twilo-host.de, 1 twilo.de, 1 twinbasic.com, 1 @@ -153699,13 +152831,14 @@ twotravel.world, 1 twr.org, 1 twsconsult.de, 1 -twslots.online, 1 +twslots.online, 0 twtr.email, 1 twwd.de, 1 twzrd.xyz, 1 tx577.com, 1 txblackbeltacademy.com, 1 txbooster.com, 1 +txccmri.com, 1 txdesignremodel.com, 1 txferretrescue.org, 0 txfnews.com, 1 @@ -153715,7 +152848,6 @@ txn.co.jp, 1 txokachat.cc, 1 txryan.com, 1 -txsgmemorial.org, 1 txsmartbids.gov, 1 txsmartbuy.gov, 1 txtd.io, 1 @@ -153952,6 +153084,7 @@ uanews.tk, 1 uap-archives.com, 1 uapp.win, 1 +uaprava.com, 1 uareferat.tk, 1 uartpastelpaper.com, 1 uasaumur.com, 1 @@ -154018,7 +153151,6 @@ ubun.kr, 1 ubun.net, 1 ubuntu-tr.net, 1 -ubuntu18.com, 1 ubuntuproductions.fi, 1 ubutovo.ga, 1 ubwash.re, 1 @@ -154103,7 +153235,7 @@ udiffy.ru, 1 udik.tk, 1 udinetoday.it, 1 -udiparfum.com.br, 0 +udiparfum.com.br, 1 udla.edu.ec, 1 udmarbella.tk, 1 udmurt-news.net, 1 @@ -154159,6 +153291,7 @@ ug.gg, 1 ugarte-zestoa.com, 1 ugbusiness.com, 1 +ugcscraper.com, 1 ugd.ro, 0 ugeek.tk, 1 ugfzc3dvcmq6.com, 1 @@ -154198,6 +153331,7 @@ uhingaro.com, 0 uhms.org, 1 uhnwarfarinedu.ca, 1 +uhoomaiq.com, 1 uhrcenter.de, 1 uhrenlux.de, 1 uhuc.de, 1 @@ -154222,7 +153356,6 @@ uitdeoudekoektrommel.com, 1 uiterwijk.org, 1 uitgeverij-deviant.nl, 1 -uitvaartverzekeringwijzer.net, 0 uitvaartvrouwenfriesland.nl, 1 uiu.ac.bd, 1 uiuo.de, 1 @@ -154252,6 +153385,7 @@ ukdefencejournal.org.uk, 1 ukdri.ac.uk, 1 ukem.co.uk, 0 +ukesa.com.ua, 1 ukformify.co.uk, 1 ukforum.net, 1 ukhas.net, 1 @@ -154268,9 +153402,9 @@ ukmeetandgreet.com, 1 ukmerges-vaikyste.lt, 1 ukmortgagecompare.co.uk, 1 -uknew.co, 1 uknews.ga, 1 uknews.ml, 1 +uknewsmalayalam.com, 1 uknewsroom.tk, 1 ukooku.com, 1 ukosystudio.com, 1 @@ -154281,7 +153415,6 @@ ukrainci.com.ua, 1 ukraine-standart.com.ua, 1 ukrainecalling.eu, 1 -ukrainegov.org, 1 ukraineoversight.gov, 1 ukrainians.ch, 1 ukrainianwall.com, 1 @@ -154289,12 +153422,11 @@ ukrajinski-novyny.cz, 1 ukrajinskinovyny.cz, 1 ukrapak.com.ua, 1 -ukrbiz.com, 1 ukrcredit.net, 1 ukrn.io, 1 ukrnames.com, 1 -ukrnet.co.uk, 1 ukrtabletki.tk, 1 +ukrtruck.ua, 1 ukrzoloto.ua, 1 ukseafood.co.uk, 1 ukta.tk, 1 @@ -154313,6 +153445,7 @@ ulbr.dnshome.de, 1 ulconnect.com, 1 uldsh.de, 1 +uleam-epec.gob.ec, 1 ulement.com, 1 ulen.me, 1 ulet.tk, 1 @@ -154351,7 +153484,6 @@ ultimateappreviews.co, 1 ultimatebabyshowergifts.ga, 1 ultimatebattle.tk, 1 -ultimatecheerleaders.com, 1 ultimateclub.tk, 1 ultimateconnector.com, 1 ultimatefilmpromotion.com, 0 @@ -154394,7 +153526,6 @@ ultrasbet.com, 1 ultrasite.tk, 1 ultrasocial.ml, 1 -ultrastar-es.org, 1 ultrasvargon.tk, 1 ultratechlp.com, 1 ultraviolence.tk, 1 @@ -154432,6 +153563,7 @@ umasstransit.org, 1 umatilla.gov, 1 umatillacounty.gov, 1 +umbbmdesapucanganak.my.id, 1 umbertheprussianblue.com, 1 umbr.se, 1 umbraco.com, 1 @@ -154488,6 +153620,7 @@ unacasitadepapel.com, 1 unaffectedsound.tk, 1 unai-yus.tk, 1 +unaidesarrolladorweb.com, 1 unalma.com, 1 unanaciounaseleccio.tk, 1 unanalog.com, 1 @@ -154509,7 +153642,6 @@ unbl.eu.org, 1 unblockat.tk, 1 unblocked.cx, 1 -unblog.ch, 1 unbolt.cf, 1 unbonavocat.fr, 1 unbored.net, 1 @@ -154582,6 +153714,7 @@ undiewarehouse.com.au, 1 undo.co.il, 1 undone.tk, 1 +undp-act.org, 1 undp.lt, 1 une-bonne-nouvelle.fr, 1 une-femme-dhonneur.tk, 1 @@ -154597,7 +153730,6 @@ unemployment.ga, 1 unemployment.gov, 1 unescoclub.tk, 1 -unetartinedebonheur.com, 1 unetaupechezvous.fr, 1 unetyr.gq, 1 unewsonline.com, 1 @@ -154639,7 +153771,6 @@ unia.es, 1 unian.info, 1 uniaofraternalraulcury.com.br, 1 -unibet.bz, 1 unibet.ltd, 1 unibev.net, 1 unibevltd.com, 1 @@ -154693,6 +153824,7 @@ unidadvictimas.gov.co, 1 unidata.ca, 1 unideb.hu, 1 +unidrive.net, 1 unidutch.com, 1 unidutch.nl, 1 unieducar.org.br, 1 @@ -154717,6 +153849,7 @@ unikos.tk, 1 unikrn.com, 1 unikrn.tech, 1 +unikwax.com, 1 unilab.com.ph, 1 unilim.fr, 1 unilinkbus.co.uk, 1 @@ -154761,7 +153894,6 @@ unios.tk, 1 unipart.digital, 0 unipass.ga, 1 -unipig.de, 0 uniqclothing.co.za, 1 uniqopter.com, 1 uniqsys.eu, 1 @@ -154780,11 +153912,11 @@ unis-pour-la-planete.com, 1 unis-pour-le-climat.com, 1 uniselectweb.com, 1 -uniserve.com, 1 unison-d.com, 1 unisonglobal.com, 1 unisontech.org, 1 unisul.br, 1 +unit-linked.com, 1 unit-linked.ru, 1 unit7jazz.org, 1 unitanzania.com, 1 @@ -154811,6 +153943,7 @@ unitedkingdoms-guild.com, 1 unitedliners.com, 1 unitedlisbon.school, 1 +unitedrealtor.com, 1 unitedreporting.ca, 1 unitedsiteservices.com, 1 unitedstables.tk, 1 @@ -154825,7 +153958,6 @@ uniteforrecovery.govt.nz, 1 unitefortherecovery.govt.nz, 1 unitehelivy.be, 1 -uniteinhealth.org, 1 unitel2000.de, 0 unitencup.tk, 1 unither.com, 1 @@ -154844,7 +153976,6 @@ unitysyndicate.tk, 1 unityvox.com, 1 uniuni.info, 1 -uniuno.capital, 1 uniup.tk, 1 univ-eloued.dz, 1 univ-st-etienne.fr, 1 @@ -154869,7 +154000,6 @@ universalplant.com, 0 universalspf.org, 1 universalstars.com.au, 1 -universalstoragecontainers.nl, 1 universalwebcommunity.tk, 1 universdejeff.com, 1 universe.horse, 1 @@ -154905,12 +154035,12 @@ universo.pt, 1 universocaballo.top, 1 universodelasaludanimal.com, 1 -universrumbacongolaise.com, 1 universus.tk, 1 univerum.site, 1 univezn.nl, 1 univision.net, 1 univitale.fr, 0 +univrsls.com, 1 uniword.com, 1 unix.family, 1 unix.lu, 1 @@ -154942,7 +154072,6 @@ unleashfido.com, 1 unlimcall.com, 1 unlimit.com, 1 -unlimitedconference.id, 1 unlimiteddsl.ga, 1 unlimitedheatingcooling.com, 1 unlimitedzone.tk, 1 @@ -154956,10 +154085,11 @@ unlocks.co.uk, 1 unlockscheveningen.nl, 1 unlocktalent.gov, 1 -unlocktoolactivation.in, 1 unlockyourbrain.bzh, 1 unluco.com, 0 +unmade.ch, 1 unmarkdocs.co, 1 +unmarkvideo.com, 1 unmask.earth, 1 unmatched.ventures, 1 unmetric.com, 1 @@ -155032,6 +154162,7 @@ unstoppableever.com.br, 1 unstoppableunits.com, 1 unsu.link, 1 +unsubscrieb.fyi, 1 unsupervised.ca, 1 untarget.ai, 1 unterfrauner.it, 1 @@ -155044,6 +154175,7 @@ unti.tk, 1 untidybits.com, 1 untold.agency, 1 +untoldventures.io, 1 untrading.org, 1 untvweb.com, 1 unufoundation.com, 1 @@ -155112,7 +154244,6 @@ updata.com, 1 update-linthdcp-567app1.com, 1 updatecli.io, 1 -updating.social, 1 updefense.io, 1 updn.no, 1 updoze.com, 1 @@ -155128,6 +154259,7 @@ upgamerengine.com.br, 1 upgamerengine.net, 1 upgeradores.com.br, 1 +upgrad.com, 1 upgrade.com, 1 upgradeguru.de, 1 upgradejelaptop.nl, 1 @@ -155215,6 +154347,7 @@ uprooting.co.uk, 1 upropay.com, 1 upschreven.blog, 0 +upsensei.eu, 1 upsetalert.ca, 1 upsettunnel.com, 1 upshurda.com, 1 @@ -155225,7 +154358,6 @@ upskirtmania.tk, 1 upsocial.ga, 1 upstaff.com, 1 -upstairs.one, 1 upstart.com, 1 upstream-project.eu, 1 upstream.auto, 1 @@ -155250,7 +154382,6 @@ upwardcreative.com, 1 upwardtraining.co.uk, 1 upwebmobilepro.com, 1 -upwise.com.au, 1 upwork.com, 1 upyourbusiness.nl, 1 uq1k.com, 1 @@ -155312,6 +154443,7 @@ urbanhub.lt, 1 urbanietz-immobilien.de, 1 urbanindustriecoiffure-auray.fr, 1 +urbanintelligence.co.uk, 1 urbanized.tk, 1 urbanizedrecords.tk, 1 urbankurator.com, 1 @@ -155442,6 +154574,7 @@ urt.fm, 1 uruguay-experience.com, 1 uruslugi.tk, 1 +urvoiceheard.com, 1 us-igloopreview.com, 1 us-immigration.com, 1 us.ax, 1 @@ -155452,14 +154585,12 @@ us.nl.eu.org, 1 us10.net, 1 us2uplumbing.com.au, 1 -usa-10.com, 1 usa-greencard.eu, 1 usa-reisetipps.net, 1 usa.gov, 1 usa250.gov, 1 usa2me.com, 1 usaa.com, 0 -usabackground.com, 1 usabilis.com, 0 usability.com.gr, 1 usability.gov, 1 @@ -155540,10 +154671,10 @@ usecma.com, 1 used-laptop.in, 1 used255.xyz, 1 +usefixlink.com, 1 useful-thing.ru, 1 usefulinsight.com, 1 useguestlist.com, 1 -usehalo.com, 1 useloom.com, 1 usembassy.gov, 1 usemergencyservices.com, 1 @@ -155552,7 +154683,7 @@ usenetreviewz.com, 1 useon.com, 1 useon.ru, 0 -usepigeon.io, 1 +usepigeon.io, 0 user-agent.ml, 1 user-daitron.jp, 1 userbase.com, 1 @@ -155652,14 +154783,14 @@ ustc.fun, 1 ustc.run, 1 ustg.net, 1 -ustoy.com, 1 ustr.gov, 1 ustugov.kiev.ua, 1 ustugova.kiev.ua, 1 ustyj.tk, 1 usu.org.ua, 1 usuan.net, 1 -usul.ai, 0 +usul.ai, 1 +usulcs.com, 1 usuluddin.ga, 1 usuluddin.tk, 1 usuwanie-wirusow-wordpress.pl, 1 @@ -155686,7 +154817,6 @@ utahonlinedivorce.com, 0 utahorthofacialsurgery.com, 1 utahphotogs.com, 1 -utahtitlesearch.com, 1 utahvalleyclimbing.com, 1 utaindoradio.cf, 1 utajovana-mista.cz, 1 @@ -155735,7 +154865,6 @@ utopialgb.org.uk, 1 utopian-institute.tk, 1 utopian-surgery.com, 1 -utopian.capital, 1 utopiancapitalism.tk, 1 utopians.dk, 0 utopiasmart.city, 1 @@ -155764,7 +154893,6 @@ uuin.top, 1 uuit.nl, 1 uuksu.fi, 1 -uulu.edu.ee, 1 uupdump.net, 1 uuportal.ru, 1 uureka.nl, 1 @@ -155970,7 +155098,6 @@ vaderqkcloud.ddns.net, 1 vadiar-angola.tk, 1 vadicore.com, 1 -vadidanismanlik.com.tr, 1 vadik.me, 1 vadillodelasierra.tk, 1 vadis.tk, 1 @@ -156042,7 +155169,10 @@ valdecaballeros.tk, 1 valdega.org, 1 valdelcubo.tk, 1 -valderos.co.uk, 1 +valden.tr, 1 +valdenrent.com, 1 +valdentourism.com, 1 +valdenyacht.com, 1 valdifunes.com, 1 valdor2.com, 1 valdres.tk, 1 @@ -156084,7 +155214,6 @@ valerieadolff.com, 0 valerielittlewood.uk, 1 valeriymaleev.com, 1 -valeryvenom.net, 1 valescarodrigues.com.br, 1 valetez.com, 0 valeuraenergy.com, 1 @@ -156148,7 +155277,7 @@ valleyofpeace.co.nz, 1 valleyshop.ca, 1 valleystories.ga, 1 -valleysupply.biz, 1 +valleysupply.biz, 0 valleyviewfarm.ca, 1 valleywaste.ca, 1 valleywidetvrepair.ml, 1 @@ -156161,7 +155290,6 @@ valocime.fr, 1 valopv.be, 1 valor-host.ml, 1 -valorantpicker.com, 0 valorantpornhentai.com, 0 valordolarblue.com.ar, 1 valordotrabalho.com.br, 1 @@ -156190,6 +155318,8 @@ valtoaho.com, 1 valtool.uk, 1 valu.com.eg, 1 +value-info.fr, 1 +value-pro.ru, 1 value.gd, 1 value4coins.com, 1 valueaddedonline.com, 1 @@ -156225,7 +155355,6 @@ vamosajugar.it, 1 vamosalvaiazere.pt, 1 vamosargentina.tk, 1 -vamoscurarsintra.pt, 1 vamosfalardesaude.pt, 1 vampire-studios.tk, 1 vampire142.fr, 1 @@ -156256,6 +155385,8 @@ vanburencountyiowa.gov, 1 vanburencountytn.gov, 1 vancityconcerts.com, 1 +vanconvention.ca, 1 +vanconvention.com, 1 vancortho.com, 1 vancouver.gov, 1 vancouvercosmeticsurgery.ca, 1 @@ -156337,6 +155468,7 @@ vanmalleghem.eu, 1 vanna-mechti.tk, 1 vannablue.com, 1 +vannahealth.io, 1 vannaos.com, 1 vannaos.net, 1 vanndigital.com, 1 @@ -156361,8 +155493,10 @@ vanwunnik.com, 1 vanya.ac, 1 vanya.as, 1 +vanya.cl, 1 vanya.click, 1 vanya.ec, 1 +vanya.gs, 1 vanya.hn, 1 vanya.im, 1 vanya.is, 1 @@ -156433,6 +155567,7 @@ varianteespiritual.gal, 1 variatesonline.tk, 1 variatkowo.pl, 1 +variax.it, 1 varied.ga, 1 varimesmirou.cz, 1 variohyp.de, 1 @@ -156453,6 +155588,7 @@ varztupasaulis.eu, 1 varztupasaulis.lt, 1 varztupasaulis.net, 1 +vas-reversal.ca, 1 vas-web.eu, 1 vas-webmaster.cz, 1 vasaconsulting.com, 1 @@ -156494,7 +155630,7 @@ vasilisa-volodina.ml, 1 vaskulitis-info.de, 1 vassalengine.org, 1 -vassourassaojoao.com.br, 1 +vastarch.com, 1 vastdata.com, 0 vastgoedcert.nl, 1 vastgoedfaculteit.be, 1 @@ -156519,6 +155655,7 @@ vato.nl, 1 vats.im, 1 vauban-ip.com, 1 +vaucan.ai, 1 vauceri.hr, 1 vaughanchiropractic.com, 1 vaughanrisher.com, 1 @@ -156539,12 +155676,12 @@ vaulters.org, 1 vaultguard.sh, 1 vaultify.club, 1 -vaultlabs1226.com, 1 vaultlessmail.com, 1 vaultoy.com, 1 vaultproject.io, 0 vaultree.com, 1 vaults.me, 1 +vaultwarden.com, 1 vaur.fr, 1 vaurio.tk, 1 vavada.com, 1 @@ -156618,7 +155755,6 @@ vdagestan.tk, 1 vdalabs.com, 1 vdbongard.com, 1 -vdc.re, 1 vddruckwerk.de, 1 vdele.mobi, 1 vdheyden.net, 0 @@ -156759,6 +155895,7 @@ veiligesmartcities.nl, 1 veiliginafhankelijkheidsrelaties.nl, 1 veiligthuistwente.nl, 1 +veilory.com, 1 veist.net, 1 veist.org, 1 veittech.xyz, 1 @@ -156772,8 +155909,9 @@ vektlofting.tk, 1 vektor.tk, 1 vektorparts.ru, 1 +vektrontechnologies.com, 1 velacartagena.tk, 1 -velaro.design, 1 +velaris.com.mx, 1 velassoltas.pt, 1 veldadvies.nl, 1 veldhovenactief.nl, 1 @@ -156794,9 +155932,10 @@ velo-volga.tk, 1 velo24.tk, 1 veloceo.cz, 1 +velocity-point.com, 1 velocitycu.com, 1 velocityelectronics.com, 1 -velocityfiber.com, 1 +velocityfiber.com, 0 velocitygames.tk, 1 velocityrecoveries.com, 1 velocitytech.com, 0 @@ -156830,7 +155969,7 @@ veltoratrade.com, 1 veltrissolutions.com, 1 veltrixlabs.tech, 1 -velu.cc, 1 +velu.cc, 0 veluma.world, 1 velutina.ovh, 1 veluwegroenonderhoud.nl, 1 @@ -156880,6 +156019,7 @@ vendoraudit.org, 1 vendorbaju.com, 1 vendorconnect.nyc, 1 +vendordesk.io, 1 vendordiagram.com, 1 vendordiagram.eu, 1 vendordiagram.net, 1 @@ -156918,7 +156058,6 @@ venetkaarsenovart.com, 1 venev.com, 1 venev.name, 1 -venezaequipamentos.com.br, 1 venezia.ga, 1 veneziatoday.it, 1 venezuelachat.tk, 1 @@ -156974,6 +156113,7 @@ ventilationsfirmavasteras.se, 1 ventilationsollentuna.se, 1 ventilationsserviceuppsala.se, 1 +ventilationsservicevasteras.se, 1 ventilationsverige.se, 1 ventilationupdates.com, 1 ventilationvasteras.nu, 1 @@ -157030,7 +156170,7 @@ veraltis.ro, 1 veralytix.com, 1 veramagazine.jp, 0 -veramark.cl, 1 +veramark.cl, 0 verandering-berlin.de, 1 veranovivo.com, 1 veransadigital.com, 1 @@ -157041,12 +156181,15 @@ verata.co, 0 veraxiss.me, 1 verbacxss.it, 1 +verbastel.de, 1 verbatimreporting.com, 1 verberne.nu, 1 verbert.be, 1 verbier-lechable.com, 1 verbierfestival.com, 0 verboom.co.nz, 1 +verbotszonen.com, 1 +verbotszonen.de, 1 verbundkredit.ag, 1 verbundkredit.biz, 1 verbundkredit.com, 1 @@ -157062,6 +156205,7 @@ vercel.sh, 1 vercoes.co.nz, 1 vercountyil.gov, 1 +verdant.trade, 0 verdant.works, 1 verdantcommerce.co.nz, 1 verdantnature.com, 1 @@ -157108,7 +156252,6 @@ verifiedchat.co, 1 verifiedcliq.com, 1 verifiedfirst.com, 0 -verifiedhandles.org, 1 verifiedjoseph.com, 0 verifiedsol.com, 1 verifiermesactions.com, 1 @@ -157119,6 +156262,7 @@ verifyos.com, 1 verifythebrand.com, 1 verifyyourip.com, 1 +verihire.pro, 1 verikom.kiev.ua, 1 verindra.ga, 1 verinity.app, 1 @@ -157209,12 +156353,10 @@ vernonspeedskatingclub.com, 1 vernonvt.gov, 1 veronasera.it, 1 -veroncloud.com, 1 veronic.hu, 1 veronicasuperguide.nl, 1 veroo.com.br, 1 veropharm.ru, 1 -veroraai.com, 1 veros-volejbal.tk, 1 veros.com, 1 verrame.no, 1 @@ -157231,7 +156373,6 @@ versatile.ai, 0 versatilestructures.com.au, 1 versbesteld.nl, 1 -verschil.info, 1 verschurendegroot.nl, 1 verse.eu.org, 1 versfin.net, 1 @@ -157274,10 +156415,8 @@ vertexventures.co.il, 0 vertexventures.sg, 0 vertexvps.com, 1 -vertica.com, 1 verticalapi.com, 1 verticalmindventures.com, 1 -verticalmonkey.eu, 1 verticals.tk, 1 verticalstructure.com, 1 verticalvoyages.com, 1 @@ -157405,8 +156544,10 @@ vetlanda.se, 1 vetnet.info, 1 vetocaller.com, 1 +vetofish.com, 1 vetosh.kz, 1 vetosh.tk, 1 +vetping.net, 1 vetpraxis.de, 1 vetputten.nl, 1 vetrehabsummit.com, 1 @@ -157436,12 +156577,14 @@ vevioz.com, 1 vevioz.my.id, 1 vevioz.web.id, 1 -vex.ch, 1 +vex.ch, 0 vexavium.com, 1 vexazera.com, 1 vexgym.com.br, 1 vexingdreams.com, 1 +veypath.com, 1 vezirkopru.bel.tr, 1 +vezmemese.cz, 1 vezzo.one, 1 vf-bikes.be, 1 vf99.com, 1 @@ -157490,9 +156633,9 @@ via-labs.com, 1 via-tygo.com, 1 via.email, 1 -via15.nl, 1 viabill.com, 1 viacdn.org, 1 +viacheslavpleshkov.com, 1 viacu.org, 1 viaelegancestore.com.br, 1 viaenginfeed.com, 1 @@ -157501,16 +156644,15 @@ viagotransfer.com, 1 viagra911.com.ua, 1 viagramarketim.com, 1 -viagrasiparis.net, 1 viagratop.tk, 1 viagrid.io, 1 viagusto.pl, 1 +viajatech.xyz, 1 viaknit.ru, 1 vialibido.com.br, 1 vialknives.com, 1 vialorran.com, 0 vialto.com, 1 -viamax.eu, 1 viandico.com, 1 vianetplc.com, 0 viaon.net.br, 1 @@ -157524,7 +156666,6 @@ viaura.biz, 1 viawave.tk, 1 viaweb.sa, 1 -viawirelessllc.com, 1 viba-sweets.de, 1 vibaphoto.com, 1 vibaphoto.fr, 1 @@ -157615,7 +156756,6 @@ victoriareporting.com, 1 victoriareporting.net, 1 victoriastudio.ru, 1 -victoriavalente.net, 1 victoriavets.co.uk, 1 victoridaho.gov, 1 victorieux.com, 1 @@ -157644,7 +156784,6 @@ vidanuevaparaelmundo.org, 0 vidaparalela.tk, 1 vidapositiva.tk, 1 -vidarity.com, 1 vidasana.org, 0 vidasostenible.org, 1 vidassemfronteiras.com, 1 @@ -157674,10 +156813,8 @@ videoclubhd.ml, 1 videoconverter.com, 1 videoebook.tk, 1 -videoenglish.net, 1 videogamerreader.tk, 1 videogamers.com.ar, 1 -videogamesartwork.com, 1 videograb.ga, 1 videograb.ml, 1 videographernet.com, 1 @@ -157706,7 +156843,6 @@ videosporno.org, 1 videot.tk, 1 videotehnika.tk, 1 -videoueberwachung-set.de, 1 videouroki.ml, 1 videov.tk, 1 videovt.tk, 1 @@ -157715,7 +156851,6 @@ videt-son.cf, 1 videt-son.ml, 1 videt-son.tk, 1 -vidhaatha.com, 1 vidimte.eu, 1 vidiproject.com, 1 vidispine.com, 1 @@ -157723,7 +156858,6 @@ viditour-golf.nl, 1 viditour-zorg.nl, 1 vidkovaomara.si, 1 -vidlen.ru, 1 vidlyoficial.com, 1 vidmount.com, 1 vidooo.de, 1 @@ -157756,7 +156890,6 @@ viega.it, 1 viega.lt, 1 viega.lv, 1 -viega.mx, 1 viega.nl, 1 viega.no, 1 viega.pl, 1 @@ -157769,6 +156902,7 @@ viega.sk, 1 viega.us, 1 viekelis.lt, 1 +vielfalt.link, 1 vielleserin.de, 1 vielskerserier.dk, 1 viemeister.com, 1 @@ -157795,6 +156929,7 @@ vietdungit.vn, 0 vietecotex.com, 0 vietfes.asia, 1 +vietfina.com, 1 vietforum.ml, 1 vietnam-fishing.com, 1 vietnam-lifer.com, 1 @@ -157878,7 +157013,6 @@ vikalbino.com.br, 1 vikalpgupta.com, 0 vikapaula.com, 1 -vikar-germetik.ru, 1 vikasinstitute.tk, 1 vikc.ca, 1 viki.com, 1 @@ -157891,13 +157025,13 @@ viko.ai, 1 viko.co.uk, 1 vikramkulkarni.com, 1 +vikrantkakad.in, 1 viksbergshr.se, 1 viktorch.in, 1 viktorchin.online, 1 viktorchin.site, 1 viktorchinkonsung.online, 1 viktorchinkonsung.site, 1 -viktoria-goo.com, 1 viktoria-stube.de, 1 viktorovi.cz, 1 viktorprevaric.eu, 1 @@ -157906,12 +157040,13 @@ viky.hu, 1 vikyho.cz, 1 vila-senov.cz, 1 -vila11.com.br, 1 vilaanimalpetshop.com, 1 vilabiamodas.com.br, 1 viladecansjove.cat, 1 viladelpingui.net, 1 vilafloridacapivari.com.br, 1 +vilafoto.com, 1 +vilafoto.com.br, 1 vilafrancaeagles.tk, 1 vilamarija.tk, 1 vilameluna.com, 1 @@ -158033,7 +157168,6 @@ villahistoria.ml, 1 villahunt.co, 1 villainsclothing.com.au, 1 -villakiralik.com, 1 villalmanzo.tk, 1 villamagnus.com, 1 villamenty.com, 1 @@ -158061,7 +157195,7 @@ ville-sur-jarnioux.fr, 1 ville-vif.fr, 1 villegasphoto.com, 1 -villehardouin.fr, 1 +villehardouin.fr, 0 villek.fi, 1 villekaaria.eu, 1 villekautto.com, 1 @@ -158078,6 +157212,7 @@ vilna.io, 1 vilondo.com, 1 vilostore.my.id, 1 +vilskanda.lt, 1 viltsu.net, 1 vilvoordelaan.be, 1 vima.ch, 0 @@ -158093,10 +157228,11 @@ vimworld.com, 1 vin-news.ru, 1 vinaconce.cl, 1 +vinaligroup.com, 1 vinarnaunas.cz, 1 vinarstvimodryhrozen.cz, 1 vinaygakhar.tk, 1 -vinaygarg.com, 1 +vinaygarg.com, 0 vinc.me, 0 vinc.name.tr, 1 vincejv.com, 1 @@ -158107,7 +157243,6 @@ vincentiliano.tk, 1 vincentpancol.com, 1 vincentpo.tk, 1 -vincentsimon.de, 1 vincentvdsluijs.nl, 1 vincentwolsink.nl, 0 vinceracing.tk, 1 @@ -158137,6 +157272,7 @@ vindipoker.dk, 1 vindnu.dk, 1 vinduesgrossisten.dk, 1 +vineeth.uk, 1 vineethavarma.com, 1 vinehall.ie, 1 vinehost.net, 1 @@ -158163,7 +157299,6 @@ vinnitsa-news.ru, 1 vinny.tk, 1 vinnyvidivici.com, 0 -vinocapka.cz, 1 vinodoc.cz, 1 vinohradiv.tk, 1 vinokourovnet.tk, 1 @@ -158229,7 +157364,6 @@ vip45bet365.com, 0 vip6132.com, 1 vipaairportsp3.gov, 1 -vipbox.city, 1 vipc.cn, 1 vipcasinorocket.com, 1 vipdubaiagency.com, 1 @@ -158264,7 +157398,6 @@ viprow.live, 1 viprsolutions.com, 0 vipsauna.gq, 1 -vipsexvault.com, 1 vipshop.ga, 1 vipsibir.cf, 1 vipspinsamurai.com, 1 @@ -158315,7 +157448,6 @@ virginiahealth.tk, 1 virginiaisgoingsolar.com, 1 virginiamnpd.gov, 1 -virginiatitlesearch.com, 1 virginiaworks.gov, 1 virginiedelmas.fr, 1 virginietessier.fr, 1 @@ -158358,6 +157490,7 @@ virtualcloud.ddns.net, 1 virtualcommodities.org, 1 virtualcomputer.ml, 1 +virtualconsultant.online, 1 virtualdesign.tk, 1 virtualdesignmedia.com, 1 virtualfairwaysne.co.uk, 1 @@ -158367,7 +157500,6 @@ virtualimages.us, 1 virtuality4d.com, 1 virtualization-online.org, 1 -virtuallanding.com, 1 virtuallife.tv, 1 virtualmachine.tk, 1 virtualmemento.tk, 1 @@ -158392,7 +157524,6 @@ virtubroker.com.mx, 1 virtueturkey.ga, 1 virtuology.com, 0 -virtuosae.com, 1 virturl.de, 1 virtus-group.com, 1 virtus.institute, 1 @@ -158421,7 +157552,6 @@ visaright.eu, 1 visartdecor.com.ua, 1 visasofoz.com, 1 -visasytrabajo.com, 1 visatime.info, 1 visatitans.ae, 1 visatitans.ca, 1 @@ -158432,7 +157562,6 @@ viscondedemaua.com.br, 1 visdetech.com, 1 vise.com, 0 -visecoach.com, 1 visegradieskuvo.hu, 1 visegradtours.hu, 1 viseomail.fr, 1 @@ -158452,6 +157581,7 @@ visibilitypulse.online, 1 visiblethoughts.co.uk, 1 visicctv.com, 1 +visigence.live, 0 visio.org, 0 vision-du-net.com, 1 vision-painting.com, 0 @@ -158518,12 +157648,12 @@ visitmo.com, 1 visitmontgomerycountyny.com, 1 visitmorelos.mx, 0 -visitmurrumbidgee.com, 0 +visitmy.site, 1 visitnamibia.net, 1 visitnewcastle.com.au, 1 visitorsguide.is, 1 visitosalnes.com, 1 -visitpembrokenc.com, 1 +visitpembrokenc.com, 0 visitqonos.com, 1 visits.ga, 1 visits.tk, 1 @@ -158594,7 +157724,6 @@ vitahost.ml, 1 vitakov.tk, 1 vital-bg.com, 1 -vital-heart.com, 1 vital-strat.com, 1 vital.no, 1 vitalamin.at, 1 @@ -158641,7 +157770,6 @@ vitaminmovie.ga, 1 vitamins-and-minerals.com, 1 vitamixromania.ro, 1 -vitamove.ai, 1 vitanetonline.com, 1 vitapingu.de, 1 vitario.eu, 1 @@ -158653,7 +157781,6 @@ vitaya.bg, 1 vitechteam.com, 0 vitekvirtualsolutions.com, 1 -viteleaf.com, 1 viteoscrm.ch, 0 viteragro.com.br, 0 viterbio.com, 1 @@ -158678,6 +157805,7 @@ vitrier-vernier.ch, 1 vitrier-versoix.ch, 1 vitriercarouge.ch, 1 +vitrierchenebougeries.ch, 1 vitriernyon.ch, 1 vitriersuisse.ch, 1 vitrinachasov.cf, 1 @@ -158806,6 +157934,7 @@ vizitnik.tk, 1 vizmart.ml, 1 viznet.tv, 1 +vizorah.com, 1 vizyonpara.com, 1 vizzarragrup.com, 1 vja.studio, 1 @@ -158855,6 +157984,7 @@ vkfish.ga, 1 vkflac.tk, 1 vkg.nl, 0 +vkgame.asia, 1 vkikaku.com, 0 vkino.com, 0 vkino.ml, 1 @@ -158889,6 +158019,7 @@ vladimir.ml, 1 vladimirbatrakov.tk, 1 vladimirchernyshov.ml, 1 +vladimircicovic.com, 1 vladimirkarpets.tk, 1 vladimirovka.ml, 1 vladimirpenev.tk, 1 @@ -158962,7 +158093,6 @@ vmsengineering.com, 1 vmsunergy.com, 1 vmtowing.com, 1 -vmttitlesearch.com, 1 vmug.pl, 1 vmurmanske.tk, 1 vmvb.nl, 1 @@ -158972,6 +158102,7 @@ vnanet.vn, 1 vnbctv.com, 1 vnctdj.fr, 1 +vndl.ee, 1 vneftekamske.tk, 1 vnetboard.com, 1 vnhsmirror.com, 1 @@ -159009,7 +158140,6 @@ vnsc.org, 0 vntyper.org, 1 vnumngr.com, 1 -vnxf.vn, 1 vnya.loan, 1 vnyxit.com, 1 voanaboa.pt, 1 @@ -159027,6 +158157,7 @@ vocomo.de, 1 voctto.com.br, 1 vocus.aero, 1 +vocusa.com, 1 vocustest.aero, 1 vod.uk.com, 0 vodadombay.cf, 1 @@ -159062,13 +158193,13 @@ vofwittenbergwi.gov, 1 vogel-verhuizingen.nl, 1 vogelbus.ch, 1 +vogelsinger.org, 1 vogelwereld.tk, 1 vogt.sh, 1 vogue.co.uk, 1 vogue.cz, 0 vogue.gr, 1 vogue.ph, 1 -voguefabricsstore.com, 1 voguefrontier.tk, 1 voi.ch, 0 voi.com, 1 @@ -159123,10 +158254,12 @@ voiretmanger.fr, 1 voiretrevu.ca, 1 voirie-suresnes.fr, 1 +voise.me, 1 voiser.ai, 1 voitolla.com, 1 voituresdantan.fr, 1 voix-bien-etre.com, 0 +voix.com.au, 1 vojenshandicap.dk, 1 vojk.au, 1 vojtat.cz, 1 @@ -159142,7 +158275,7 @@ volatile.ovh, 1 volatile.pw, 1 volatilesystems.org, 1 -volatilethunk.com, 1 +volatilethunk.com, 0 volatility.farm, 1 volatiliza.ga, 1 volatimer.com, 1 @@ -159170,7 +158303,6 @@ volebnykompas.sk, 1 volg.ar, 1 volgar.name, 1 -volgares.ru, 0 volgavibes.ru, 0 volgograd-34.tk, 1 volgograd-news.net, 1 @@ -159205,7 +158337,6 @@ vollenberg.ca, 1 volleyballcityofpreston.tk, 1 volleyballnews.tk, 1 -volleyballxl.com, 1 volleyballxl.de, 1 volleybalxl.nl, 1 volleyfreaks.tk, 1 @@ -159305,6 +158436,7 @@ volver-a-galicia.es, 1 volvo-klub.cz, 1 volvo1800es.tk, 1 +volvoconnect.com, 1 volvoklub.cz, 1 volwb.com, 1 volyn-news.ru, 1 @@ -159347,7 +158479,7 @@ voprosnik.gq, 1 voprosownet.tk, 1 voquent.com, 1 -voragoal.com, 1 +voragoal.com, 0 vorandor.com, 1 vorbis.cz, 1 vorbrodt.blog, 1 @@ -159374,7 +158506,6 @@ vortexcheck.ai, 1 vortexflight.com, 1 vortexhosting.ga, 1 -vortexplumbinginc.com, 1 vortix.tk, 1 vos-consultancy.org, 1 vos-fleurs.ch, 1 @@ -159442,7 +158573,6 @@ votepalmbeach.gov, 1 votepinellas.gov, 1 voter-info.uk, 1 -voterconnect.ie, 1 voterockfordil.gov, 1 votes-reu.ml, 1 votesantarosa.gov, 1 @@ -159482,8 +158612,8 @@ vowsy.club, 0 vox.de, 1 voxbras.com.br, 1 -voxdatati.com.br, 1 voxeaarecords.com, 1 +voxed-captions.net, 1 voxel.ax, 1 voxel.cat, 1 voxelcat.de, 1 @@ -159501,7 +158631,6 @@ voyage2africa.com, 1 voyageforum.com, 1 voyageofyume.com, 1 -voyagercabins.co.nz, 1 voyages-groupes-transgallia.com, 1 voyagesarabais.com, 1 voyagesvoyages.net, 1 @@ -159514,7 +158643,6 @@ voyance-direct.info, 1 voyance-universelle.com, 1 voyancedanslenord.com, 1 -voyantatravel.com, 1 voybulk.com, 1 voyei.com.br, 1 voyeurspyporn.com, 1 @@ -159530,7 +158658,6 @@ vozpop.com.br, 1 vp.ls, 1 vparilke.su, 1 -vpbuilds.com, 1 vpcfiberglass.com, 1 vpd-calculator.com, 1 vpetkov.tk, 1 @@ -159549,7 +158676,6 @@ vpnhub.com, 1 vpnpro.com, 1 vpnservice.nl, 1 -vpntls.eu, 1 vpoltave.info, 1 vporno.video, 1 vpr.expert, 1 @@ -159565,12 +158691,14 @@ vpsao.org, 1 vpsboard.com, 1 vpsdream.dk, 1 +vpsec.io, 1 vpsgongyi.com, 0 vpsji.com, 1 vpsmore.com, 1 vpsou.com, 1 vpspenergy.com, 1 vpsport.ch, 1 +vpsrankings.com, 1 vpsssl.com, 1 vpstrial.net, 1 vpsvz.cloud, 1 @@ -159688,7 +158816,7 @@ vrba.org, 1 vrbangers.com, 1 vrbl.pt, 1 -vrbq.qld.gov.au, 1 +vrbq.qld.gov.au, 0 vrbr.ch, 0 vrcberks.org, 1 vrcentrum.cz, 1 @@ -159808,7 +158936,6 @@ vrtemptation.com, 1 vrtidaho.gov, 1 vrtouring.org, 1 -vrtuoluo.com, 1 vrzas.net, 1 vrzl.pro, 1 vs603.com, 1 @@ -159934,20 +159061,17 @@ vulpix.uk, 1 vultrhxl.com, 1 vulva.observer, 1 -vulva.photos, 1 vumerity.com, 0 vunn.com, 1 vuojolahti.fi, 0 vuotila.eu, 1 vuoto.fi, 1 -vurdering.com, 1 vurdst.dk, 1 vurgitsin.com.tr, 1 vuse.com, 1 vutrox.com, 1 vuurspuwer.com, 1 vuvanthoa.com, 1 -vux.li, 1 vuzi.fr, 1 vuzopedia.ru, 1 vv1234.cn, 1 @@ -160001,7 +159125,6 @@ vx.hn, 1 vx4.net, 1 vxapps.com, 1 -vxm.se, 1 vxv.by, 1 vxz.me, 1 vyacheslav.ml, 1 @@ -160036,7 +159159,6 @@ vytvorsitricko.cz, 1 vywebdesign.com, 1 vyzner.cz, 1 -vyzrd.com, 1 vzducho-klima.cz, 1 vzemiseo.com, 1 vzp-online.de, 1 @@ -160056,6 +159178,7 @@ w-architectes.com, 1 w-graj.net, 1 w-hub.ru, 1 +w-klein.de, 1 w-o-o.nl, 1 w-oasis.co.jp, 1 w-p-k.de, 1 @@ -160087,6 +159210,7 @@ w3consult.org, 1 w3ctag.com, 1 w3ctag.org, 1 +w3cvalidator.com, 1 w3htmlschool.com, 1 w3layouts.com, 1 w3n14izy.cf, 1 @@ -160153,23 +159277,19 @@ waayz.fr, 1 wabco-auto.com, 1 wabifoggynuts.com, 1 +wabliefteru.be, 1 wabtec.com, 0 wabteccorp.com, 0 waca.net, 1 -waca.shop, 1 -waca.store, 1 -waca.tw, 1 wacht-auf.de, 1 wachter.biz, 1 wachtspoor.nl, 1 wackaf.com, 1 wacken666.com, 1 -wackery.com, 1 wacky.one, 1 wackyblackie.eu.org, 1 wackyblackie.ml, 1 wackys.com, 1 -wacotrib.com, 1 wacsports.com, 1 waddenzee.nl, 1 wade.gdn, 0 @@ -160180,7 +159300,6 @@ wadn-x.de, 1 wadsworth.org, 1 waeldertexas.gov, 1 -waermenetz-kollow.de, 1 waf.ninja, 1 wafa4hw.com, 1 waffeln.jetzt, 1 @@ -160254,7 +159373,7 @@ wakelet.com, 0 wakenyatulindane.co.ke, 1 wakeofthepredator.tk, 1 -wakeskincarellc.com, 1 +wakeskincarellc.com, 0 wakeswim.com, 1 waketrace.xyz, 1 waketurbulencereport.eu, 1 @@ -160265,7 +159384,6 @@ wakeworks.io, 1 waki-ci.com, 1 wakilii.org, 1 -wakinglighting.com, 0 wakixpregnancyregistry.com, 1 wakka.moe, 1 wakol.co.za, 1 @@ -160297,12 +159415,13 @@ walk.onl, 1 walkal.com, 1 walkaround.tk, 1 +walker-computers.com, 1 walker-foundation.org, 1 walkera-fans.de, 1 walkercorp.com.au, 0 walkercountytx.gov, 1 walkerfoundation.org.au, 1 -walkergroup.com.au, 1 +walkergroup.com.au, 0 walkerinsurance.net, 1 walkermi.gov, 1 walkersplayground.tk, 1 @@ -160312,7 +159431,6 @@ walkingandcycling.org.uk, 0 walkingkiwi.com, 1 walkinlab.com, 1 -walkinweb.com, 1 walkman.cloud, 1 walkman.io, 1 wall-banners.tk, 1 @@ -160327,6 +159445,7 @@ wallaralogistics.com.au, 1 wallcs.eu, 1 wallers.com, 1 +wallet-bridge.com, 1 wallet.google.com, 1 walletconnector.cz, 1 walletfox.com, 1 @@ -160387,7 +159506,6 @@ waltermartsupermarket.com, 1 waltermulders.be, 1 waltio.com, 1 -waltontrust.org, 1 waltthirion.com, 1 walutomat.pl, 1 walzemdata.com, 1 @@ -160413,8 +159531,6 @@ wanderinghiker.com, 1 wanderingincaptivity.com, 1 wanderings.online, 0 -wandersolo.com, 1 -wandwmovers.co.uk, 1 wandystan.eu, 1 wane.co, 1 wang.by, 1 @@ -160431,7 +159547,6 @@ wangpedersen.com, 1 wangpromherb.hu, 1 wangqiliang.org, 1 -wangql.cn, 1 wangql.net, 1 wangqr.org, 1 wangqr.tk, 1 @@ -160536,7 +159651,6 @@ warfarina.com, 1 warfield.org.uk, 1 warfightermade.org, 1 -warfighters.de, 1 wargov.tk, 1 wargun.ml, 1 warhaggis.com, 1 @@ -160554,6 +159668,7 @@ warmlyyours.com, 1 warmservers.com, 1 warmtepomp.express, 1 +warmup.rocks, 1 warnernh.gov, 1 waroengkopigazebo.net, 1 waronbrain.com, 1 @@ -160584,9 +159699,7 @@ warringtonkidsbouncycastles.co.uk, 1 warringtonsownbuses.co.uk, 1 warriorofmars.com, 1 -warrnamboolaero.club, 1 warrock-es.tk, 1 -warrs.com, 1 wars.aw, 1 wars.cat, 1 warsawtravelers.pl, 1 @@ -160605,9 +159718,7 @@ wartorngalaxy.com, 1 wartraining.com.br, 1 wartung.tk, 1 -warubbermate.co.th, 1 warungmini-vanwou.nl, 1 -warungsiyas.com, 1 warwick.institute, 1 warwickbucks.gov, 1 warworld.ml, 1 @@ -160619,7 +159730,6 @@ wasatchsheriff.gov, 1 wasatinternational.com, 1 wasaysyed.com, 1 -waschmaschinen-dienst.de, 1 waschpark-hantschel.de, 1 wasdestek.tk, 1 wasema.com, 1 @@ -160654,7 +159764,6 @@ washingtonenergy.com, 1 washingtonnewsz.com, 1 washingtonsavings.com, 1 -washingtontitlesearch.com, 1 washingtontwpacpa.gov, 1 washingtonviews.com, 1 washingtonwatchdog.org, 1 @@ -160687,7 +159796,6 @@ wataclinic.com, 1 watari-bg.com, 1 watashi.bid, 1 -wataugaonline.com, 1 wataugatx.gov, 1 watboeithet.nl, 1 watbug.com, 1 @@ -160774,6 +159882,7 @@ waterborne-env.com, 1 waterboromaine.gov, 1 watercold.cool, 1 +watercooler.cool, 1 watercoolergames.org, 1 waterdogsmokehouse.com, 1 waterdownmedia.co.uk, 1 @@ -160781,6 +159890,7 @@ waterdropcultureproject.com, 1 waterest.tk, 1 waterfedpole.com, 1 +waterfieldpaints.com, 1 waterfirepros.com, 1 waterfordvt.gov, 1 waterfordwi.gov, 1 @@ -160839,6 +159949,7 @@ wathory.com, 1 watisleukemie.tk, 1 watmar.com.au, 1 +watnir.com, 1 watnongpangtru.com, 1 watongaok.gov, 1 watoo.tech, 1 @@ -160864,7 +159975,6 @@ wav-productions.com, 1 wavded.com, 1 wave-cockpit.de, 1 -wave-electronics.com, 0 wave-inc.co.jp, 1 wave-utilities.co.uk, 1 wave.graphics, 1 @@ -160945,7 +160055,6 @@ wazuh.com, 1 wazzap.tk, 1 wb-cw.tech, 1 -wb-partner.pl, 1 wb0hsi.org, 1 wba.or.at, 1 wball.com, 1 @@ -160966,7 +160075,6 @@ wbnet.eu, 1 wboeijen.nl, 0 wbolt.com, 1 -wbostrom.se, 1 wbpersonalmonitor.de, 1 wbpgroup.com.au, 1 wbphed.gov.in, 1 @@ -160996,6 +160104,7 @@ wccu.creditunion, 1 wccu.finance, 1 wccu.financial, 1 +wccu.sucks, 1 wcei.com.au, 1 wcema-ok.gov, 1 wcfauth.de, 1 @@ -161022,7 +160131,6 @@ wd-ljt.com, 1 wd.is, 1 wd627.com, 1 -wdambv.nl, 1 wdc-creative.com, 1 wdcnet.store, 1 wdcvalencia2022.com, 1 @@ -161038,7 +160146,6 @@ wdmn.eu, 1 wdmodding.com, 1 wdmpa.org, 1 -wdnmd.org, 1 wdntcr.com, 1 wdodelta.nl, 0 wdol.gov, 1 @@ -161050,7 +160157,6 @@ wdt.cz, 0 wdtcinfo.com, 1 we-amp.com, 1 -we-bb.com, 1 we-listen.org, 1 we-run-linux.de, 1 we-use-linux.de, 1 @@ -161094,8 +160200,6 @@ wearenh.gov, 1 wearepapermill.co, 1 wearepapermill.com, 1 -wearereasonablepeople.com, 0 -wearereasonablepeople.nl, 0 wearesilverbullet.com, 1 wearesolomon.com, 1 wearesolutions.com, 1 @@ -161107,7 +160211,7 @@ wearewp.pro, 1 wearit.tk, 1 wearitout.com.au, 1 -wearpave.dog, 1 +wearpave.dog, 0 wearvintage.ml, 1 wearwolf.tk, 1 weasyl.com, 1 @@ -161126,8 +160230,8 @@ weaveral.gov, 1 weavers.space, 1 weaversbazaar.com, 1 +weavhr.com, 1 weavile.art, 1 -web-3.ru, 1 web-advisor.co.uk, 1 web-aps.tk, 1 web-art.cz, 1 @@ -161280,7 +160384,6 @@ webcatchers.nl, 0 webce.com, 1 webce.de, 1 -webcertificate.com, 1 webchangedetector.com, 1 webcheck.pt, 1 webcheckout.net, 1 @@ -161304,6 +160407,7 @@ webdaddyit.ga, 1 webdating.tk, 1 webdave.de, 1 +webdekiyazar.com, 1 webdemaestrias.com, 1 webdereserve.com, 1 webdesign-basel.ch, 1 @@ -161333,13 +160437,13 @@ webdietrolequinte.it, 0 webdigital.ca, 1 webdl.org, 1 +webdo24.com, 1 webdollarvpn.io, 1 webdoors.ge, 1 webdrops.nl, 1 webdushowcase.co.uk, 1 webeast.eu, 1 webelement.sk, 0 -webemployed.com, 1 webencrypt.org, 1 weber-immobilienberatung.de, 1 weber-malerei.de, 1 @@ -161384,7 +160488,6 @@ webguardian.cloud, 1 webhackspro.com, 1 webhallen.com, 1 -webhams.com, 1 webharvest.gov, 1 webhelyesarcu.hu, 1 webhero.it, 1 @@ -161516,7 +160619,6 @@ webpiar.tk, 1 webpitarque.tk, 1 webpkgcache.com, 1 -webplace4u.nl, 0 webportail.tk, 1 webpostingpro.com, 1 webpostingreviews.com, 1 @@ -161563,7 +160665,6 @@ webserverindia.com, 0 webshare.space, 1 webshipper.com, 1 -webshop.nl, 1 webshovel.net, 1 website-engineering.co.za, 1 website-prototyp.de, 1 @@ -161580,7 +160681,6 @@ websitedirectory.nl, 1 websiteirani.tk, 1 websitelearners.cf, 1 -websiteleichtgemacht.de, 1 websitemail.eu, 1 websitemarketers.tk, 1 websitemetadata.com, 1 @@ -161646,7 +160746,6 @@ webtools-eqt.co.nz, 1 webtoolxl.net, 1 webtoolxl.nl, 1 -webtoro.com, 1 webtorrent.io, 1 webtorrent.tk, 1 webtostore.fr, 1 @@ -161667,11 +160766,11 @@ webverdienst.tk, 1 webvpsnet.com, 1 webvpsnet.org, 1 -webwatchdogs.net, 1 webwatcher.tk, 1 webwinkelwestland.nl, 1 webwit.pro, 1 webwweb.com.pl, 1 +webxdevelopers.com, 1 webyazilim.biz.tr, 1 webyrychle.cz, 1 webzanem.com, 0 @@ -161679,7 +160778,6 @@ wecan-it.dk, 1 wecanvisit.com, 1 wecareplatform.nl, 1 -weccode.com, 1 wechange.de, 1 wecleanbins.com, 1 wecobble.com, 1 @@ -161731,7 +160829,6 @@ wedl.ru, 0 wedontca.re, 1 wedontcaregroup.com, 1 -wedontgetpaidenough.com, 1 wedooper.com, 1 wedot.co.uk, 1 wedplay.host, 1 @@ -161744,12 +160841,12 @@ weecarepreschool.ca, 1 weed.ren, 1 weedgranadagrowshop.com, 1 -weedlife.com, 1 weefriendskids.com, 1 week-numbers.org, 1 weekdone.com, 1 weekend.london, 1 weekend4two.ch, 1 +weekendagency.ru, 1 weekendbus.pl, 1 weekendcraft.com, 0 weekendcurioso.com, 1 @@ -161769,7 +160866,7 @@ weetix.fr, 1 weezerosos.tk, 1 weezertabs.tk, 1 -wefact.nl, 1 +wefact.nl, 0 wefazemos.com.br, 0 wefitboilers.com, 1 wefixmd.com, 1 @@ -161820,7 +160917,6 @@ weimark.com, 1 weimeicleaning.com, 0 weiming.ddns.net, 1 -weimingsci.cn, 1 weimz.com, 1 weinbergerlawgroup.com, 1 weinboxbuilders.co.nz, 1 @@ -161873,6 +160969,7 @@ welcome-tahiti.com, 0 welcome-werkstatt.com, 1 welcome26.ch, 0 +welcomefood.co.uk, 1 welcomepowayan.tk, 1 welcometoohio.gov, 1 welcoop-logistique.com, 1 @@ -161933,10 +161030,10 @@ wellthpicks.com, 1 wellthy.com, 1 welltrack.com.au, 1 +wellvi.com.py, 1 wellzapness.com, 1 welmo.fr, 1 welom.tk, 1 -welove.lk, 1 welove.tk, 1 welovegalicia.com, 1 welovelinks.com, 1 @@ -161955,6 +161052,7 @@ welspunindia.com, 1 welstrim.de, 1 welt-flaggen.de, 1 +welta.us, 1 welteneroberer.de, 1 weltengilde.de, 1 weltenhueter.de, 1 @@ -161974,7 +161072,6 @@ wemissyou.tk, 1 wenanmao.com, 1 wenceslas.org.uk, 1 -wend.academy, 1 wendelluguetto.com.br, 1 wender.media, 1 wendkom.com, 1 @@ -162002,6 +161099,7 @@ wenzsecurity.com.br, 1 wenzthewanderer.gq, 1 weomucat.com, 1 +weosc.com, 1 weosx.com, 1 wep.pw, 1 wepa.pe, 1 @@ -162035,6 +161133,7 @@ werhatunsverraten.eu, 1 werk32.net, 1 werkannwas.org, 1 +werkcentrumnoordoostbrabant.nl, 1 werken-bij-inwork.nl, 1 werken-in-de-techniek.nl, 1 werkenbijbakkerbedrijfswagens.nl, 1 @@ -162046,6 +161145,7 @@ werkenbijejk.nl, 1 werkenbijintertoys.nl, 1 werkenbijjunis.nl, 1 +werkenbijlamersenvisser.nl, 1 werkenbijmagentazorg.nl, 1 werkenbijpelsrijcken.nl, 1 werkenbijpromovendum.nl, 1 @@ -162066,6 +161166,7 @@ werner-ema.de, 1 wernerco.com, 0 wernerworldwide.com, 1 +wernethallotmentsociety.co.uk, 1 wernicke-it.de, 1 wero-wallet.eu, 1 weroleplay.net, 1 @@ -162106,7 +161207,6 @@ west-wind.net, 1 west.vet, 1 westappin.com.au, 1 -westartup.co, 1 westavenueglobal.com, 1 westbathmaine.gov, 1 westbayhomedecor.com, 1 @@ -162115,6 +161215,7 @@ westburlingtoniowa.gov, 1 westburne.ca, 1 westburyfestival.org.uk, 1 +westbus.co.uk, 1 westbycu.org, 1 westcartilafdnc.gov, 1 westcentralaor.org, 1 @@ -162131,13 +161232,14 @@ westcode.de, 1 westcountrydentalcrafts.uk, 1 westcreekna.org, 1 +westendpersonaltrainers.com, 1 westendwifi.net, 1 westerdraai.tk, 1 westeremden.com, 1 westernaerospacemuseum.org, 1 westernenergy.co.nz, 1 westernguarantyfundservices.org, 1 -westernindustrialproducts.co.uk, 1 +westernindustrialproducts.co.uk, 0 westernmedia.ie, 1 westernpadermatologist.com, 1 westernparts.com, 0 @@ -162164,7 +161266,6 @@ westlandinsurance.ca, 1 westlebanonpa.gov, 1 westlibertykypolice.gov, 1 -westlogistic.com, 1 westmarlboroughpa.gov, 1 westmead.org, 1 westmeadapartments.com.au, 1 @@ -162180,12 +161281,14 @@ westminsterco.gov, 1 westminsternational.com.au, 1 westmodernclinic.com, 1 +westmountainconstruction.com, 1 westonfoundation.ca, 1 westonlakestexas.gov, 1 westonma.gov, 1 westonreed.com, 1 westoveral.gov, 1 westoverwv.gov, 1 +westoz.com, 1 westoz.com.au, 1 westozfunds.com.au, 1 westpack.com, 1 @@ -162208,7 +161311,6 @@ westvancouver.ca, 1 westviewpa.gov, 1 westvirginiahealth.tk, 1 -westvirginiatitlesearch.com, 1 westwardblinds.com, 1 westwarwickri.gov, 1 westwing.com, 1 @@ -162223,7 +161325,6 @@ wet1.com.au, 1 weteam24.ru, 1 wetheghosts.eu, 1 -wetheglobalpeople.com, 1 wethemovement.org, 1 wetherbyvets.co.uk, 1 wetherspoonapprenticeshipacademy.co.uk, 1 @@ -162242,7 +161343,6 @@ wetwijzer.be, 1 wevah.com, 0 wevape.online, 1 -weviral.org, 1 wevolver.com, 0 wew881.com, 1 wew882.com, 1 @@ -162257,6 +161357,7 @@ weyerstall1880.de, 1 weygers.be, 1 weyug.com, 1 +wezwaniepro.pl, 1 wf-bigsky-master.appspot.com, 1 wf-demo-eu.appspot.com, 1 wf-demo-hrd.appspot.com, 1 @@ -162274,7 +161375,6 @@ wfgukasha.club, 1 wfh.ovh, 1 wfh.se, 1 -wfigueiredo.com.br, 1 wforum.nl, 1 wfrlee.com, 1 wfuogb.com, 1 @@ -162317,6 +161417,7 @@ whalecrew.com, 1 whalehill.com, 1 whaletail.ai, 0 +whaller.com, 1 whampoa.com, 1 whanau.org, 0 whapn.sg, 1 @@ -162396,7 +161497,6 @@ wheelchair-mobility-scooter-rental-london.com, 1 wheelchair.gq, 1 wheeler.kiwi.nz, 0 -wheeleryachts.com, 1 wheelhero.com, 1 wheelingisland.com, 0 wheelnation.net, 1 @@ -162405,12 +161505,10 @@ wheelspin.ga, 1 wheelwide.co.uk, 1 wheelwork.org, 0 -wheelwright.org, 1 wheely.com, 1 wheelycool.tech, 1 wheelycoolgear.com, 1 wheelyking.tk, 1 -when-release.ru, 0 when.fm, 0 when2watch.live, 1 whengirlsplay.com, 1 @@ -162437,7 +161535,6 @@ whereveryougo.space, 1 wherewebuy.show, 1 whexit.nl, 1 -whey4you.com.br, 1 whgym.com, 1 whichdoctor.com, 1 whichgender.today, 1 @@ -162468,6 +161565,7 @@ whiskeytech.org, 1 whisky.com.my, 1 whisky.money, 1 +whisky.my, 1 whiskydb.de, 1 whiskydrivers.tk, 1 whiskyhunter.net, 1 @@ -162478,6 +161576,7 @@ whispeer.de, 1 whisper-net.de, 1 whisperlab.org, 1 +whispers.systems, 1 whistic.com, 1 whistle.fit, 1 whistleblower.gov, 1 @@ -162492,7 +161591,7 @@ whistlingdog.media, 0 whitakersofmccook.com, 1 whitbread.com.au, 1 -whitchurch.builders, 0 +whitchurch.builders, 1 whitdoit.tk, 1 white-articles.site, 1 white-hell.tk, 1 @@ -162507,7 +161606,6 @@ whitealps.ch, 0 whitealps.fr, 0 whitealps.net, 0 -whiteantelopeinteriors.com, 1 whitebirdclinic.org, 1 whitebox.ga, 1 whitechristmas.com.au, 1 @@ -162523,7 +161621,6 @@ whitehartgreatyeldham.co.uk, 1 whiteharttherapies.co.uk, 1 whitehat.ee, 1 -whitehat.vn, 1 whitehatbrokers.com, 1 whitehathackers.com.br, 1 whitehats.nl, 1 @@ -162578,7 +161675,6 @@ whitestonelandproperties.com, 1 whitestoneva.gov, 1 whitesword.tk, 1 -whitevpn.cz, 1 whitewaterks.gov, 1 whitewatertownshipmi.gov, 1 whiteweb.tk, 1 @@ -162593,6 +161689,7 @@ whitneys2go.com, 1 whittingtonhomes.com, 1 whittle.in, 1 +whittlesfabrics.com, 1 whitworth.nyc, 1 whitworth.org, 1 whizkidpcservices.com, 1 @@ -162628,7 +161725,7 @@ wholesale.cf, 1 wholesalediamonds.tk, 1 wholesalediscountsunglasses.com, 1 -wholesaleganoderma.com, 1 +wholesaleganoderma.com, 0 wholesaleimages.com, 1 wholevood.com, 1 wholevood.de, 1 @@ -162652,11 +161749,11 @@ whosyourdaddy.ml, 1 whowherewhen.net, 1 whpctx.com, 0 -whqmeps.org, 1 whqqq.com, 1 wht.one, 1 whta.eu, 1 whta.se, 1 +whtruckingandexcavation.com, 1 whwcornwall.co.uk, 1 why-brexit.uk, 1 why918.com, 0 @@ -162694,6 +161791,7 @@ wickedsick.tk, 1 wickedstocks.com, 1 wickedvibes.tk, 1 +wickens.au, 1 wickersmith.com, 1 wickerwoman.com, 0 wickrath.com, 1 @@ -162713,15 +161811,15 @@ widenews.org, 1 widescreen.hu, 1 widescreenfixer.org, 1 -wideshoes.com, 1 widewebhost.net, 1 wideworks.agency, 1 widexisitmecihazlari.com, 1 widget-options.com, 1 widgetmaker.co.uk, 1 widgilabs.com, 1 +widigitaltribuana.com, 1 widma.gov, 1 -widmer.bz, 1 +widmer.bz, 0 widner.xyz, 1 widoj.gov, 1 widowsquad.com, 1 @@ -162738,6 +161836,7 @@ wiegedaten.de, 1 wiek.net, 1 wiek2.nl, 1 +wielkanocwgorach.pl, 1 wieloswiat.pl, 1 wielrenbond.ml, 1 wielrennen-in-zeeland.tk, 1 @@ -162769,6 +161868,7 @@ wigelsworth.io, 1 wigger.one, 1 wigggle.it, 1 +wigiliawgorach.pl, 1 wigle.net, 1 wigmore-hall.org.uk, 0 wigsalon.ga, 1 @@ -162929,7 +162029,6 @@ wikiquotes.info, 1 wikirace.tk, 1 wikisaur.tk, 1 -wikiskripta.eu, 1 wikislo.net, 1 wikisorg.tk, 1 wikisource.com, 1 @@ -162944,7 +162043,6 @@ wikitech.gq, 1 wikitech.tk, 1 wikitechsolutions.com, 1 -wikitolica.com, 1 wikitransporte.tk, 1 wikiutah.tk, 1 wikiversity.com, 1 @@ -162964,7 +162062,6 @@ wikixchange.com, 1 wikizip.ga, 1 wikjpedia.org, 1 -wikkelweb.nl, 1 wikkipedia.com, 1 wikpedia.com, 1 wikpedia.org, 1 @@ -163072,7 +162169,6 @@ willalex.com, 1 willardohio.gov, 1 willardwi.gov, 1 -willbeonesecurity.xyz, 1 willcounty.gov, 1 willcounty911.gov, 1 willcountyclerk.gov, 1 @@ -163089,6 +162185,7 @@ william.legal, 1 williamarias.tk, 1 williamboundsltd.com, 1 +williamcooke.net, 1 williamfeely.info, 1 williamgoldberg.cf, 1 williamgoren.com, 1 @@ -163126,6 +162223,7 @@ willowcundy.com, 1 willowdalechurch.ca, 1 willowink.com.au, 1 +willowjoy.org, 1 willowparktx.gov, 1 willowpassdentalcare.com, 1 willows.uk.net, 1 @@ -163185,7 +162283,6 @@ win.ch, 1 win11.ren, 1 win21bit.com, 1 -win2chill.com, 1 win5analysis.net, 1 win7stylebuilder.com, 0 win7tips.tk, 1 @@ -163294,7 +162391,6 @@ wingchun.edu.au, 1 wingchunboxtribe.com, 1 wingechr.de, 1 -wingenbach-aesthetics.de, 1 wingie.ae, 1 wingie.co.in, 1 wingie.co.uk, 1 @@ -163327,7 +162423,6 @@ winl-45774.club, 1 winma.org, 0 winmax.it, 1 -winmix.nl, 1 winmodels.org, 1 winn.ai, 1 winn.se, 1 @@ -163450,7 +162545,6 @@ wirkungs-forschung.com, 1 wirkungs-forschung.de, 1 wirkungs-forschung.net, 1 -wirsberg-studios.de, 1 wirsindderwandel.de, 1 wirsing.nl, 1 wirtanen.tk, 1 @@ -163464,10 +162558,8 @@ wisal.org, 1 wisardcoin.tk, 1 wischu.com, 1 -wiscon.co, 1 wisconsin.condos, 1 wisconsinnet.tk, 1 -wisconsintitlesearch.com, 1 wisdoj.gov, 1 wisdomacademy.ro, 1 wisdomathena1000.ru, 0 @@ -163561,6 +162653,7 @@ withheld.xyz, 1 withinsecurity.com, 1 withinwp.com, 1 +withj.kr, 1 withjoy.com, 1 withkarann.com, 1 withoutessence.io, 1 @@ -163609,6 +162702,7 @@ wizart-studio.pl, 1 wizathon.com, 1 wizelife.ai, 1 +wizfairstaging.com, 1 wizink.pt, 1 wizyheal.com, 1 wizzley.com, 1 @@ -163631,12 +162725,10 @@ wkberg.nl, 1 wkbrowser.com, 1 wkbw.com, 1 -wkd.one, 1 wkennington.com, 1 wkho.io, 1 wkitu-test.tk, 1 wko.at, 1 -wkoecg.at, 0 wkola.tk, 1 wkshp.link, 1 wkuherald.com, 1 @@ -163748,12 +162840,13 @@ wogame.works, 1 woge.cf, 1 woge.ml, 1 +wogi.fr, 1 woglutheran.org, 1 woh.org, 0 woheni.de, 1 wohlgefuehl-massagen.de, 1 wohlpa.de, 0 -wohnbau-mobilitaet.ch, 0 +wohnbau-mobilitaet.ch, 1 wohnberatung-wien.at, 1 wohnfrisch.de, 1 wohnsitz-ausland.com, 1 @@ -163901,7 +162994,6 @@ woningonderhoud.tk, 1 woningsnet.nl, 1 wonko-vs-trader.de, 1 -wonksecurity.com, 1 wonksecurityblog.com, 1 woo-jiho.tk, 1 woo-order.com, 1 @@ -163920,14 +163012,12 @@ woodbridgegrp.com, 1 woodbridgegymnastics.ca, 1 woodbridgepacific.com, 1 -woodburn.au, 1 +woodburn.au, 0 woodbury.io, 1 woodburynj.gov, 1 -woodcock.cloud, 1 woodcountywi.gov, 1 woodcraftcompany.ru, 1 woodenson.com, 1 -woodev.us, 1 woodfarm2020.com, 1 woodfencestlouis.com, 1 woodfieldhc.ca, 1 @@ -163969,6 +163059,7 @@ woodworkcare.com, 1 woodworkingforabeginner.com, 1 woodwormtreatment.com, 1 +woodwose.org, 1 woody-art.eu, 1 woodyallen.tk, 1 woodysinstalaciones.com, 1 @@ -164025,6 +163116,7 @@ word-grabber.com, 1 wordandnote.com, 1 wordbits.net, 0 +wordbomb.io, 1 wordcounter.net, 1 wordfast.com, 1 wordhasitmedia.com, 1 @@ -164042,7 +163134,7 @@ wordpressdevelopment.ml, 1 wordpressdiensten.be, 1 wordregistrar.ga, 1 -words-are-pictures.com, 1 +wordrill.pl, 1 wordsforellie.com, 1 wordsmatter.org, 1 wordsofamaster.com, 1 @@ -164062,13 +163154,11 @@ workaholic.tk, 1 workaholics.tk, 1 workandwanderlust.blog, 1 -workaround.run, 1 workatclever.com, 1 workatclever.us, 1 workatclevyr.us, 1 workathome.tk, 1 workathomeideas.tk, 1 -workathomenoscams.com, 1 workathomeopportunities.tk, 1 workathomernjobs.tk, 1 workathomesmart.com, 1 @@ -164080,12 +163170,13 @@ workelo.eu, 1 worker.gov, 1 workermess.tk, 1 +workerscloud.ch, 1 workerscompensationattorneysandiego.net, 1 workerselforganisation.cf, 1 workerselforganisation.ga, 1 workersframe.ch, 1 workflowy.com, 1 -workforcedevelopment.co.nz, 1 +workforcedevelopment.co.nz, 0 workforwarriors.org, 1 workfromhomebusinessopportunities.cf, 1 workfromhomebusinessopportunities.tk, 1 @@ -164100,7 +163191,6 @@ workfromhomesites.ml, 1 workfromhometexas.tk, 1 workhandyman.com, 1 -workhorsemkt.com, 1 workin.space, 1 workindia.ml, 1 workinestonia.com, 0 @@ -164116,7 +163206,6 @@ workinit.com.au, 1 workinitiatives.com.au, 1 workiva.com, 1 -workjustice.com.au, 0 worklinepc.com, 1 worklizard.com, 1 workmax.com, 1 @@ -164137,7 +163226,6 @@ worksheets-to-print.com, 1 workshop-assets.com, 1 workshop-email-content.com, 1 -workshop-email-tracking.com, 1 workshop-pages.com, 1 workshop-spf.net, 1 workshop-sync.net, 1 @@ -164239,7 +163327,9 @@ worldline.com, 1 worldluxuryhome.tk, 1 worldmaparabic.com, 1 +worldmapchinese.com, 1 worldmappdf.com, 1 +worldmaprussian.com, 1 worldmarathons.tk, 1 worldnewsinbox.ga, 1 worldnewsphoto.tk, 1 @@ -164253,7 +163343,6 @@ worldpayaccessories.com, 1 worldplayerx.com, 1 worldpolitics.cf, 1 -worldpool.com.au, 1 worldrallyforum.tk, 1 worldranking.tk, 1 worldrecipes.eu, 1 @@ -164336,7 +163425,7 @@ woulaba.com, 1 wound-doc.co.uk, 1 wouter.site, 1 -wouterbruijning.nl, 1 +wouterbruijning.nl, 0 woutercodeert.nl, 1 wouterkobes.nl, 1 wouterslop.com, 1 @@ -164383,7 +163472,6 @@ wozkipaletowe.com.pl, 1 wozkipaletowe.net, 1 wozkipodnosnikowe.eu, 1 -wozwaardeloket.nl, 1 wozwebdesign.com.br, 1 wp-assistance.fr, 1 wp-blog.co.kr, 0 @@ -164412,7 +163500,6 @@ wpbox.by, 1 wpbrigade.com, 1 wpcanban.com, 1 -wpcastle.com, 1 wpcc.edu, 1 wpcepat.com, 0 wpckraft.ro, 1 @@ -164422,7 +163509,6 @@ wpcraft.ai, 1 wpcs.pro, 1 wpdan.io, 1 -wpdev.com.au, 1 wpekspres.com, 1 wpetri.nl, 1 wpexplainer.com, 1 @@ -164464,7 +163550,6 @@ wproduction.sk, 1 wpscholar.com, 1 wpsecured.net, 1 -wpseo.it, 1 wpserp.com, 1 wpsgha.com, 1 wpsharks.com, 1 @@ -164472,13 +163557,13 @@ wpsite.dk, 1 wpsitesuccess.com, 1 wpslimseo.com, 1 -wpsmackdown.com, 1 wpsne.com.au, 1 wpspeedcare.com, 1 wpspeedking.com, 1 wpspeedspecialist.com, 1 wpstaq.com, 1 wpsupportlab.com, 1 +wptest.uk, 1 wptests.tk, 1 wpthemearchive.com, 1 wpthemesbox.com, 1 @@ -164487,7 +163572,6 @@ wpuse.ru, 1 wpwebshop.com, 1 wpwebtools.com, 1 -wpzz.net, 1 wqaw3.tk, 1 wqed.org, 1 wr.su, 0 @@ -164504,7 +163588,6 @@ wrc-results.com, 1 wrd48.net, 1 wrdcfiles.ca, 1 -wreckadvisors.com, 1 wrecked.cf, 1 wrecked.tk, 1 wreckeroo.com.au, 1 @@ -164523,7 +163606,6 @@ wrhomedecor.com.br, 1 wrightbrand.com, 0 wrightcountymo911.gov, 1 -wrighthassall.co.uk, 1 wrightsecurity.co, 1 wrighttownshipottawami.gov, 1 wrighttownshippa.gov, 1 @@ -164568,6 +163650,7 @@ writingtoserve.net, 1 writtenhorror.com, 1 writtenworld.bg, 1 +writulos.com, 1 wrm.sr, 1 wrmea.org, 1 wrmh343.org, 1 @@ -164580,7 +163663,6 @@ wrssystems.co.uk, 1 wrtv.com, 1 wrytin.com, 1 -wrzalski.com, 1 ws3917.space, 1 wsa.poznan.pl, 1 wsadek.ovh, 1 @@ -164667,7 +163749,6 @@ wulai.cf, 1 wulai.ml, 1 wulala.one, 1 -wulel.cn, 0 wulfrun-invicta.tk, 1 wum.me, 1 wum.rocks, 1 @@ -164688,6 +163769,7 @@ wundertraining.com.au, 1 wundi.net, 1 wunschpreisauto.de, 1 +wunschpuns.ch, 1 wunschzettel.de, 1 wuoppy.com, 1 wuppertal-2018.de, 0 @@ -164717,7 +163799,6 @@ wvpebd.gov, 1 wvrtboard.gov, 1 wvsdca.gov, 1 -wvsu-usc.org, 1 wvunclaimedproperty.gov, 1 wvv-8522.com, 1 wvv.de, 1 @@ -164788,7 +163869,6 @@ www.calyxinstitute.org, 1 www.capitainetrain.com, 0 www.captaintrain.com, 0 -www.cnet.com, 1 www.com.gl, 1 www.dm-drogeriemarkt.ba, 1 www.dm-drogeriemarkt.bg, 1 @@ -164912,7 +163992,6 @@ wynajempaleciakow.pl, 1 wyndham.vic.gov.au, 1 wyndhamcapital.com, 1 -wyngatepta.com, 1 wynlv.com, 1 wynyardwood.co.nz, 1 wyo.cam, 1 @@ -164922,7 +164001,6 @@ wyomingcountypa.gov, 1 wyomingia.gov, 1 wyomingmi.gov, 1 -wyomingtitlesearch.com, 1 wyomingvalleyjuniorspartans.org, 1 wypiska.pl, 1 wypozyczalniasamochodowkrakow.gq, 1 @@ -164967,7 +164045,6 @@ x-net24.pl, 1 x-one.co.jp, 1 x-orbit.dk, 1 -x-team.co.il, 1 x-way.org, 1 x.io, 1 x.sb, 1 @@ -165051,6 +164128,7 @@ xarmenta.tk, 1 xarxaestudiants.org, 1 xarxalia.com, 1 +xathari.com, 1 xatr0z.org, 0 xauzit.com, 0 xav.ie, 1 @@ -165064,7 +164142,6 @@ xavy.fr, 1 xayah.net, 1 xaydungphunguyen.com, 1 -xaynhachothue.vn, 1 xb008.com, 1 xb053.com, 1 xb056.com, 1 @@ -165200,7 +164277,6 @@ xcxmiku.com, 0 xcysy.top, 1 xd.cm, 1 -xd.gd.cn, 1 xd.gov, 1 xdawn.cn, 1 xdb.be, 0 @@ -165215,7 +164291,6 @@ xdreamserver.com, 1 xdtag.com, 1 xdty.org, 1 -xduce.com, 1 xecutely.com, 1 xeditpro.com, 1 xeerpa.com, 1 @@ -165225,6 +164300,8 @@ xeiropraktiki.gr, 1 xelesante.jp, 1 xelionai.com, 1 +xelto.com, 1 +xeltodigital.com, 1 xemptsecurity.com, 1 xencalli.com, 1 xencrystal.me, 1 @@ -165236,7 +164313,6 @@ xenicalonline.gq, 1 xenicalorlistat.tk, 1 xenicalpills.tk, 1 -xenlook.com, 1 xenocide.tk, 1 xenomorph.tk, 1 xenomorphtimeline.com, 1 @@ -165303,6 +164379,7 @@ xhmikosr.io, 1 xho.me, 1 xhochy.org, 1 +xhost.tw, 1 xhosting.hu, 1 xhtmljunction.com, 1 xhy.ch, 1 @@ -165338,7 +164415,6 @@ xiaomi.pk, 1 xiaomi.rocks, 1 xiaomibarato.com, 1 -xiaomiev.com.ua, 1 xiaomionline24.pl, 1 xiaoneijun.cn, 1 xiaoseai.com, 1 @@ -165346,7 +164422,7 @@ xiaowangshen.com, 1 xiaoxia.li, 1 xiaoxiaoyyw.com, 1 -xiashu8.com, 1 +xiaoxyyw.com, 1 xiaxuejin.cn, 1 xiazhanjian.com, 0 xice.cf, 1 @@ -165356,11 +164432,11 @@ xiexiexi.com, 1 xif.at, 1 xifrem.com, 1 +xiguayings.com, 1 xiguayyw.com, 1 xiix.cf, 1 xilaz.com, 1 xile.ml, 1 -xilentura.de, 1 xillimite.com, 1 xilnex.com, 1 xilo.net, 1 @@ -165484,6 +164560,7 @@ xinbo609.com, 1 xinbo610.com, 1 xinbo676.com, 1 +xincyy.com, 1 xindloviny.cz, 1 xing.ml, 1 xingai.ml, 1 @@ -165507,6 +164584,8 @@ xinyezx.com, 1 xinyitour.tw, 1 xio.moe, 1 +xion.nu, 1 +xiongmaoysw.com, 1 xiphwork.de, 1 xiqonline.com, 1 xishiduliu.com, 1 @@ -165538,6 +164617,7 @@ xkww3n.cyou, 1 xkwy2018.cn, 1 xkwy2018.com, 1 +xkyyw.com, 1 xl-porn.com, 1 xl3v3r.com, 1 xlan.be, 1 @@ -165815,6 +164895,7 @@ xn--brommabegravningsbyr-g0b.se, 1 xn--brtransport-x8a.se, 1 xn--bruno-hnel-kcb.de, 0 +xn--brurkristi-e6a0grb.com, 1 xn--bwx.xn--fiqs8s, 1 xn--bwx.xn--fiqz9s, 1 xn--c-xga.de, 1 @@ -165854,7 +164935,6 @@ xn--d1afcjuch.xn--p1ai, 1 xn--d1aia1akb.xn--p1ai, 1 xn--d1awi.tk, 1 -xn--das-anhngerzentrum-rtb.at, 1 xn--dck0bb4c1guc.jp, 1 xn--dcko6fsa5b1a8gyicbc.biz, 1 xn--dckya4a0bya6x.com, 1 @@ -165983,7 +165063,6 @@ xn--kl-oja.is, 1 xn--klmek-0sa.com, 1 xn--klschs-wxa.de, 1 -xn--klyv21c.com, 1 xn--kocaeliyazlm-b5bb.com, 1 xn--kpfer-jua.de, 1 xn--ksse-5qa.fi, 1 @@ -166043,6 +165122,7 @@ xn--monvlogratuit-ehb.fr, 1 xn--morrhret-e0a.se, 1 xn--mrtelfuger-0cb.dk, 1 +xn--mxac.net, 1 xn--myrepublc-x5a.net, 1 xn--nbetcieczane-4ib.gen.tr, 1 xn--ncentfit-11a.com, 1 @@ -166051,8 +165131,6 @@ xn--nicieri-b4a.ro, 1 xn--nidar-tib.org, 1 xn--nide-loa.ee, 1 -xn--nied-lchelt-q8a.de, 1 -xn--niedlchelt-u5a.de, 1 xn--nordlicht-hrnum-jtb.de, 1 xn--nrrdetval-v2ab.se, 1 xn--nsra.com, 1 @@ -166115,6 +165193,7 @@ xn--schpski-c1a.de, 1 xn--schsischer-christstollen-qbc.shop, 0 xn--schwedischezahnrztin-pzb.de, 1 +xn--siqq7j.cc, 1 xn--sjvarinsdraumar-wrb.no, 1 xn--skmotoroptimering-zzb.site, 1 xn--slia-poa.no, 1 @@ -166247,7 +165326,6 @@ xoda.pw, 1 xoddiel.me, 1 xoddiel.net, 1 -xode.net, 1 xokaiv.com, 1 xolotto.com, 1 xolphin.nl, 1 @@ -166271,6 +165349,7 @@ xoue.com, 1 xoutpost.com, 1 xovv.io, 1 +xox.is, 1 xp-ochrona.pl, 1 xp.nsupdate.info, 1 xpal.com, 1 @@ -166313,6 +165392,7 @@ xpsautomation.com, 1 xpsfactory.com, 1 xpsinnovation.com, 1 +xpsnow.net, 1 xpsrobotics.com, 1 xptrack.com, 1 xptrackstaging.com, 1 @@ -166347,7 +165427,6 @@ xserownia.com.pl, 1 xserownia.eu, 1 xserownia.info, 0 -xserownia.net, 1 xserownia.pl, 1 xsolla.com, 1 xspeed.pl, 1 @@ -166359,15 +165438,14 @@ xstitchify.com, 1 xstorysnap.com, 1 xstreamable.com, 1 -xstree.com, 1 xsuper.net, 1 xsv.cn, 1 +xswift.biz, 1 xsymm.de, 1 xsz.jp, 1 xt.om, 1 xt177.com, 1 xt71uc.top, 1 -xtaboo3d.com, 1 xtarget.ru, 1 xtdowner.com, 1 xtec.eu.org, 1 @@ -166473,6 +165551,7 @@ xtzws.com, 1 xuab.net, 1 xuann.wang, 0 +xuanxiao-it.cn, 1 xubo666.com, 1 xuc.me, 1 xucha.ml, 1 @@ -166480,7 +165559,7 @@ xueaiai.ml, 1 xueanquan.com, 1 xuedianshang.com, 1 -xuehuang666.cn, 1 +xuehuang666.cn, 0 xuelangapp.com, 1 xuesoska.ga, 1 xuewen.ink, 1 @@ -166502,6 +165581,8 @@ xuyh0120.win, 1 xvadimx.me, 1 xvaldezendocrino.com, 1 +xvi.co.jp, 1 +xviahlink.com, 1 xvidyo.ga, 1 xviimusic.com, 1 xvix.eu, 1 @@ -166536,10 +165617,8 @@ xxx-cam.stream, 1 xxx-fiction.com, 0 xxx-gays.com, 1 -xxx69.site, 1 xxxarabgirls.com, 1 xxxbunker.com, 1 -xxxcammers.com, 1 xxxfreepornclip.com, 1 xxxgr.net, 1 xxxmoviesdot.com, 1 @@ -166578,7 +165657,6 @@ xyquadrat.ch, 1 xyrem.com, 1 xyrexwolf-sebastien-izambard.tk, 1 -xywav.com, 1 xywing.com, 0 xyz.vn, 1 xyz2007.com, 1 @@ -166676,19 +165754,13 @@ y89i.net, 1 y89ii.com, 1 y89iii.com, 1 -y89j.com, 1 y89j.net, 1 y89jj.com, 1 y89jjj.com, 0 y89kk.com, 1 y89l.com, 0 y89ll.com, 1 -y89m.com, 1 -y89n.com, 1 -y89r.com, 0 y89t.com, 1 -y89u.com, 0 -y89v.com, 1 y89ww.com, 0 y9297.co, 1 y9728.co, 1 @@ -166747,6 +165819,7 @@ yagotour.cf, 1 yague.me, 1 yaharu.ru, 1 +yahatadance.com, 1 yahav.co.il, 1 yahlab.de, 1 yahoo.ax, 1 @@ -166830,7 +165903,6 @@ yangzi.ml, 1 yanhongming.net, 1 yanik.info, 1 -yanisvaroufakis.eu, 1 yaniv.tv, 0 yann.tw, 1 yannic.world, 0 @@ -166866,7 +165938,6 @@ yapan666.com, 1 yapan77.com, 1 yapan777.com, 1 -yapan888.com, 0 yapan9.com, 1 yapanwang.com, 1 yapaytech.com, 1 @@ -166891,14 +165962,13 @@ yarlesac.com, 1 yarmarka-megamarket.ru, 0 yarnandy.com, 1 -yarno.com.au, 1 +yarno.com.au, 0 yarogneva.ru, 1 yarokuk.com, 1 yarora.com, 1 yaroslavia.eu.org, 1 yaroslavl-news.net, 1 yaroslavova.tk, 1 -yarowork.jp, 1 yarplast.tk, 1 yarr.pt, 1 yarracitta.tk, 1 @@ -166916,10 +165986,8 @@ yashinstore.com, 1 yasikish.com, 1 yasinatalko.com, 1 -yasking.org, 1 yasmeencreative.com, 1 yasmin.ml, 1 -yasminbashirovasf.com, 0 yasminebelattar.com, 1 yasmingarcia.tk, 1 yasraiting.tk, 1 @@ -166930,7 +165998,7 @@ yasukevicious.com, 1 yatai18.com, 1 yatax.fr, 1 -yateam.cc, 1 +yatengocita.com, 1 yatescenter.gov, 1 yatescountyny.gov, 1 yatescountysheriff.gov, 1 @@ -167031,12 +166099,13 @@ yellow.ai, 1 yellow.place, 1 yellowball.fm, 1 +yellowcabtttours.pt, 1 yellowcar.website, 1 yellowfolder.com, 1 yellowmessenger.com, 1 yellowpages.ee, 1 +yellowpink.pk, 1 yellowribbon.mil, 1 -yellowshow.com, 1 yellowsource.org, 1 yellowsprings.gov, 1 yellowsquid.uk, 0 @@ -167100,8 +166169,8 @@ yeonmuduck.com, 1 yeonsuchoi.ca, 1 yep-pro.ch, 0 -yepu.cc, 1 yepu.ga, 1 +yer.ma, 1 yerbasbuenas.tk, 1 yerf.eu, 1 yeri.com, 1 @@ -167113,7 +166182,6 @@ yesasia.com, 1 yescareer.ga, 1 yeschef.me, 1 -yesemek.com, 1 yesfone.com.br, 1 yesglasses.com, 1 yesgov.com, 1 @@ -167160,6 +166228,7 @@ yezishurb.site, 1 yfh.me, 1 yg-crew.eu, 1 +yg-dr.net, 1 yggdar.ga, 1 yggdrasildice.com, 1 ygm.org.uk, 1 @@ -167199,7 +166268,6 @@ yifanbian.me, 1 yifansun.net, 1 yiff.forsale, 1 -yiff.media, 1 yiff.rest, 1 yiff.rocks, 1 yiff.supply, 1 @@ -167208,7 +166276,6 @@ yihome.com.tw, 1 yihouse.tw, 1 yijingying.com, 0 -yike.news, 1 yikeyong.com, 1 yikun.com, 1 yilanju.com, 0 @@ -167221,6 +166288,7 @@ ying299.com, 1 ying299.net, 1 yingatech.com, 1 +yingdiu.com, 1 yinghezhinan.com, 0 yingjidaow.com, 1 yingkudao.com, 1 @@ -167228,15 +166296,18 @@ yinglinda.love, 1 yingmei.jp, 1 yingshu.hopto.org, 1 +yingxiangcang.com, 1 +yingyuancang.com, 1 yingyuzxw.com, 1 yingzhanji.com, 1 yingzi.ml, 1 +yinheyyw.com, 1 yinlei.org, 1 yinmingyang.cn, 1 +yinmuyun.com, 1 yinwa.cf, 1 yinwa.ml, 1 yinwoodweb.com, 1 -yinyang.jp, 1 yippie.nl, 0 yishoufu.com.cn, 1 yisrime.link, 1 @@ -167299,6 +166370,7 @@ yobasystems.co.uk, 1 yobda.tk, 1 yobify.com, 1 +yobimail.com, 1 yobniyulyu.tk, 1 yobst.tk, 1 yochadehe.gov, 1 @@ -167314,7 +166386,6 @@ yoga-zentrum-narayani.de, 1 yoga.is-an-engineer.com, 1 yogaangels.ga, 1 -yogachina.com, 1 yogaeastwest.com, 1 yogaecology.org, 1 yogagadgets.ga, 1 @@ -167326,7 +166397,6 @@ yogamarlene.ch, 1 yogamea.school, 1 yogaovelser.dk, 1 -yogasirsasana.com, 1 yogasolution.tk, 1 yogatherapykosha.com, 1 yogaworld.tk, 1 @@ -167353,6 +166423,7 @@ yokorei.yokohama, 1 yokotower.com, 1 yokowatch.com, 1 +yol1.com, 0 yolandgao.me, 1 yolanibg.com, 1 yolhesaplama.com, 1 @@ -167406,12 +166477,11 @@ yorickpeterse.com, 1 yorkcountyne.gov, 1 yorkcountysc.gov, 1 -yorkcountyschools.org, 1 +yorkcountyschools.org, 0 yorke.sa.gov.au, 1 yorkieloverdiy.com, 1 yorkiepooexpert.com, 1 yorkipoo.com, 1 -yorkmoneyman.com, 1 yorkroadyums.com, 1 yorksc.gov, 1 yorkshiregardensheds.co.uk, 1 @@ -167437,7 +166507,6 @@ yoshitsugu.net, 1 yoshiya2020.com, 1 yoshkar-ola-city.tk, 1 -yosida-dental.com, 1 yosida95.com, 1 yosm.net, 1 yospos.org, 1 @@ -167525,7 +166594,6 @@ youngart.hu, 1 youngauthentic.cf, 1 youngcouple9598.net, 1 -youngdevotion.net, 1 youngfree.cn, 1 younglabour.co.nz, 1 younglabour.nz, 1 @@ -167534,7 +166602,6 @@ youngmodelsagency.tk, 1 youngpeopleunited.co.uk, 1 youngsook.org, 1 -youngsophie.net, 1 youngsoulstudios.com, 0 youngsurveyors.dk, 1 youngsvillenc.gov, 1 @@ -167562,7 +166629,6 @@ yourautismcommunity.com, 1 yourbenefitsresources.com, 1 yourberksbucksoxon.wedding, 1 -yourbittorrent2.com, 1 yourblazeguard.com, 1 yourbodyknows.dk, 1 yourbodyknows.is, 1 @@ -167600,13 +166666,14 @@ yourfandom.ddns.net, 1 yourfood.cz, 1 yourforceserver.com, 1 +yourforcesupport.com, 1 yourforcesupport.events, 1 yourforcesupport.me, 1 yourforcesupport.net, 1 yourforcesupport.pro, 1 yourforcesupport.us, 1 yourforex.org, 1 -yourfriendlytech.com, 1 +yourfriendlytech.com, 0 yourfuntrivia.com, 1 yourgadget.ro, 1 yourgames.tv, 1 @@ -167621,6 +166688,7 @@ yourhearingnetwork.com, 1 yourhertsbeds.wedding, 1 yourhrworld.com, 1 +yourhumandesign.ch, 1 yourkent.wedding, 1 yourkit.com, 1 yourkrabivilla.com, 1 @@ -167639,7 +166707,6 @@ yourmoneyproject.com, 1 yourmothers.meme, 1 yourms.com, 1 -yourname.xyz, 1 yournashvilleplasticsurgeon.com, 1 yournextagency.com, 1 yournortheast.wedding, 1 @@ -167648,6 +166715,7 @@ yourpalstore.com, 1 yourpersonalfoodnesscoach.nl, 1 yourpersonalfrance.com, 1 +yourpetsvet.com.au, 1 yourphotoscanned.com, 0 yourplanet.eu.org, 1 yoursaypenrith.com.au, 1 @@ -167767,6 +166835,8 @@ ys99ys.com, 1 ysearc.tk, 1 ysfridge.com, 1 +ysgangw.com, 1 +yskb3.com, 1 yslxxhome.com, 1 ysmedia.jp, 1 ysmihvamse.bg, 1 @@ -167785,6 +166855,7 @@ ytec.ca, 1 ytexa.tk, 1 ytpak.pk, 1 +ytrex.net, 1 ytreza.fr, 1 ytscm.com, 1 ytterland.tk, 1 @@ -167800,6 +166871,7 @@ yuan.idv.tw, 1 yuan.nctu.me, 1 yuan.ren, 1 +yuan87.com, 1 yuanandyuan.info, 1 yuanandyuan.me, 1 yuanben.io, 1 @@ -167811,6 +166883,7 @@ yuanjiazhao.com, 1 yuanjiazhao.tk, 1 yuansecard.me, 1 +yuanta.co.id, 1 yuanta.co.th, 1 yuanxi343.top, 1 yubacity.gov, 1 @@ -167865,7 +166938,6 @@ yukonconnector.com, 1 yukonlip.com, 1 yukoslibrary.ga, 1 -yukselgorev.com, 1 yula.cf, 1 yulaiz.com, 1 yulamerola.com.br, 1 @@ -167892,13 +166964,12 @@ yumli.net, 1 yumm.menu, 1 yummiyogi.com, 1 -yummycouple.net, 1 yun-bao.co, 0 +yuna.ma, 1 yuna.tg, 0 yuna.tw, 1 yuna0x0.com, 1 yunasecurity.com, 1 -yuncaioo.com, 0 yunguard.com, 1 yunhao.io, 1 yunicorn.world, 1 @@ -167906,8 +166977,8 @@ yunite.one, 1 yunjishou.pro, 1 yunloc.com, 1 +yunmuyingshi.com, 1 yunory.com, 1 -yunory.de, 1 yunqueradehenares.tk, 1 yunxinfoods.com, 1 yunzhu.li, 1 @@ -167967,12 +167038,12 @@ yveslegendre.fr, 0 yvesx.com, 1 yveszarkaconsultant.fr, 1 -yvettextreme.com, 1 yvonne-stingel.de, 1 yvonnethomet.ch, 1 yvonnewilhelmi.com, 1 ywambutuan.org, 1 ywamcebu.org, 1 +ywamimpact.org, 1 ywamphilippines.org, 1 ywamtonga.org, 1 ywor.it, 1 @@ -168006,11 +167077,9 @@ yycbike.info, 1 yylegacy.global, 1 yyr.im, 1 -yyrss.com, 1 yyshew.com, 1 yyu0378.xyz, 1 yyy116.com, 1 -yyy608.com, 1 yyyy.xyz, 1 yzal.io, 1 yzarul.com, 1 @@ -168119,7 +167188,7 @@ zabatsai-sam.tk, 1 zabbix-monitoring.tk, 1 zabbix.tips, 1 -zabe.in, 1 +zabe.in, 0 zaber.com, 1 zabezpeceniemailu.cz, 1 zabgames.com, 1 @@ -168154,6 +167223,7 @@ zacks.eu, 1 zackzack.at, 1 zaclys.com, 0 +zacsellsparadisa.com, 1 zad-academy.com, 1 zadania.wiki, 1 zadgroup.com.my, 1 @@ -168162,6 +167232,7 @@ zadroweb.com, 1 zadu.cz, 1 zaem.tv, 1 +zaeriacademy.com, 1 zaferaniehearing.com, 1 zaferbalkan.com, 1 zaffittv.mx, 1 @@ -168219,7 +167290,6 @@ zaizaia.cc, 1 zajc.eu.org, 1 zajc.tel, 1 -zajebancija.com, 1 zajm-bez-otkaza.gq, 1 zajm-bez-poruchitelej.cf, 1 zajm-bez-spravok.tk, 1 @@ -168292,6 +167362,7 @@ zamorsky.tk, 1 zamowienia.com, 1 zamtech.co.jp, 1 +zamzam-voyage.com, 1 zanahd.co.za, 1 zanana.bg, 1 zananta.com, 1 @@ -168311,13 +167382,14 @@ zangerwillem.tk, 1 zango.com.au, 1 zanica.co.nz, 1 -zankevich.com, 0 +zankevich.com, 1 zankevich.net, 1 zanotti.io, 1 zanquan.net, 1 zanshin-sailing.com, 1 zanthed.xyz, 1 zanthra.com, 1 +zanvela.hu, 1 zanzariere.roma.it, 1 zaoai.cf, 1 zaoai.ga, 1 @@ -168342,6 +167414,7 @@ zapic.moe, 1 zapier-staging.com, 1 zapier.com, 1 +zapit.work, 1 zapix-admin.duckdns.org, 1 zaplano.tk, 1 zapmaster14.com, 1 @@ -168357,7 +167430,6 @@ zapproved.com, 1 zapreaders.cf, 1 zaptorg.xyz, 1 -zapzockt.de, 1 zar-kripto.tk, 1 zarabiaj.com, 1 zarabianiewsieci.tk, 1 @@ -168422,10 +167494,10 @@ zavec.com.ec, 0 zavedeno.com, 1 zaves.tk, 1 -zavod-96.ru, 1 zavod98ekb.ru, 1 zawodowe.edu.pl, 1 zaxid-kava.ua, 1 +zaxworld.com, 1 zayats.tk, 1 zayavka.cf, 1 zayavka.ml, 1 @@ -168503,7 +167575,6 @@ zd796.com, 1 zd803.com, 1 zd805.com, 1 -zd8826.com, 0 zd8838.com, 1 zd8839.com, 1 zd8858.com, 1 @@ -168539,7 +167610,6 @@ zdravypanelak.cz, 1 zdravystul.cz, 1 zdrowebodomowe.pl, 1 -zdrowezywienie.edu.pl, 1 zdrowie-na-widelcu.pl, 1 zdxiaoda.me, 1 zdymak.by, 1 @@ -168550,6 +167620,7 @@ zeal-interior.com, 1 zealousholistics.com, 1 zealousweb.com, 0 +zealthix.com, 1 zealworks.jp, 1 zeamerseagerbeavers.com, 1 zeanweb.tk, 1 @@ -168594,7 +167665,6 @@ zehka.net, 1 zehkae.net, 1 zehnegira.ir, 0 -zehy.de, 1 zehy.me, 1 zehy.net, 1 zehy.org, 1 @@ -168654,6 +167724,7 @@ zemlyaki.ml, 1 zemlyaki.tk, 1 zemows.industries, 1 +zempel-itsecurity.de, 1 zen-solutions.io, 1 zen-zone.tk, 1 zenarion.ch, 1 @@ -168689,7 +167760,6 @@ zenithmedia.ca, 0 zenithvitalcare.com.au, 1 zenitkft.hu, 1 -zenitnetwork.com, 1 zenium.vip, 1 zenk-security.com, 1 zenker-hausbau.at, 1 @@ -168751,7 +167821,6 @@ zerevia.com, 1 zerg.uk, 1 zergy.net, 1 -zerionplatform.com, 1 zerium.ml, 1 zerm.eu, 1 zerm.link, 1 @@ -168775,7 +167844,7 @@ zerodhacapital.com, 1 zerodhareview.co, 1 zerodoubtclub.com, 1 -zerodrytimefarnham.co.uk, 0 +zerodrytimefarnham.co.uk, 1 zeroed.com.au, 1 zerofox.gq, 1 zerofy.de, 0 @@ -168804,13 +167873,13 @@ zerotwo.ga, 1 zerovectorsec.com, 1 zerowanlabs.com, 1 +zerowaste.design, 1 zerowastesonoma.gov, 1 zeroz.cf, 1 zeroz.ga, 1 zeroz.gq, 1 zeroz.ml, 1 zerozero.gq, 1 -zerozombie.com, 1 zerrar.com, 1 zertif.info, 1 zertifikatsshop.de, 1 @@ -168818,7 +167887,6 @@ zerty.de, 0 zervasandpepper.com, 1 zeryn.net, 1 -zesgoes.nl, 1 zeshanfoundation.org, 1 zestedesavoir.com, 1 zesty.co, 1 @@ -168839,13 +167907,13 @@ zettatek.com, 1 zettlmeissl.de, 1 zety.com, 1 -zety.es, 1 zeus.gent, 1 zeus.wang, 1 zeuscorp.ga, 1 zeusec.co.jp, 1 zeusembroidery.com.au, 1 zeuseye.pl, 1 +zeushub.live, 1 zeusindia.tk, 1 zeusln.com, 1 zeva-mundial.co.uk, 1 @@ -168900,12 +167968,12 @@ zhanzhangb.com, 0 zhaochen.xyz, 1 zhaochengtan.com, 1 -zhaodao.ai, 1 zhaoeq.com, 1 zhaojin97.cn, 0 zhaopage.com, 1 zhaostephen.com, 1 zhaoxixiangban.cc, 0 +zhaozhaozhu.com, 1 zhaso.com, 0 zhattyt.com, 0 zhbot.org, 1 @@ -168948,6 +168016,7 @@ zhodino.cf, 1 zhodino.ga, 1 zhonghongshunlian.com, 1 +zhonghuaysw.com, 1 zhongxia.me, 1 zhongzicili.ws, 1 zhorizon.jp, 1 @@ -168969,6 +168038,7 @@ zhuhuo.cc, 1 zhuji.com, 1 zhuji.com.cn, 1 +zhuji.fm, 1 zhuji.org, 1 zhuji5.com, 1 zhujicaihong.com, 1 @@ -169006,6 +168076,7 @@ ziggi.tk, 1 ziggletech.com, 1 ziggo.nl, 1 +ziggys.co.nz, 1 zighinetto.org, 1 zigloi.com, 1 zigoomar.tk, 1 @@ -169033,6 +168104,7 @@ zilore.com, 1 zilsen.com, 1 zilv.life, 1 +zilvd.icu, 1 zilver.nl, 1 zilverwater.tk, 1 zima-lito.tk, 1 @@ -169058,6 +168130,7 @@ zingermans.com, 1 zinglix.xyz, 1 zingmp3.vn, 1 +zingo.me, 1 zingpetfood.com, 1 zingst.de, 1 zingtree.com, 1 @@ -169096,7 +168169,6 @@ ziqijiang.com, 0 zir-online.com, 1 zir.com.ua, 1 -ziraatweb.com, 1 zirbelino.at, 1 zirbenprodukte.at, 1 zirconfusion.com, 1 @@ -169111,6 +168183,7 @@ zitadel.cloud, 1 zitadel.com, 1 zitaplus.com, 1 +zitavskevinice.sk, 1 zithromaxstrepthroat.gq, 1 zitobox.com, 1 zitstabureau24.nl, 1 @@ -169168,7 +168241,7 @@ zl335.com, 1 zl3737.com, 1 zl4231.com, 1 -zl6161.com, 1 +zl6161.com, 0 zl6868.com, 1 zl7070.com, 1 zl7077.com, 1 @@ -169208,6 +168281,7 @@ zmarta.org, 1 zmcyclefitness.com, 1 zmeya.tk, 1 +zmgroep.nl, 1 zmgroup.cz, 1 zmizelasumava.cz, 1 zmk.fr, 1 @@ -169413,7 +168487,6 @@ zone.lt, 1 zone.lv, 1 zone3000.tk, 1 -zone39.com, 1 zoneadsl.com, 1 zoneaffiliation.com, 1 zoneblog.tk, 1 @@ -169428,7 +168501,6 @@ zonesons.com, 1 zoneusercontent.eu, 1 zonewatcher.com, 1 -zonfa.com, 1 zonfair.com, 1 zongboao.com, 1 zonglovani.info, 1 @@ -169444,7 +168516,6 @@ zooforum.tk, 1 zoogbook.ml, 1 zoohl.com, 1 -zooish.net, 1 zook.systems, 1 zook.tk, 1 zookids.uy, 1 @@ -169516,7 +168587,7 @@ zotum.net, 1 zouair.ma, 1 zouaouitransport.fr, 1 -zouyaoji.top, 1 +zouyaoji.top, 0 zouyou.com, 1 zov-news.ru, 1 zova.io, 1 @@ -169625,10 +168696,10 @@ zuiverjegeest.nl, 1 zuiververloskundigen.nl, 1 zuixindyww.com, 1 +zuklescentras.lt, 1 zukong.party, 1 zukunft-immobilienverwaltung.de, 1 zukunft-immobilienwirtschaft.de, 1 -zukunft-mobilitaet.net, 1 zukunft-niederrhein.de, 1 zukunftswege.at, 1 zula.africa, 1 @@ -169651,6 +168722,7 @@ zumwildenaffen.com, 1 zundapp.one, 1 zuomin.tk, 1 +zupi.fi, 1 zupit.it, 1 zuplu.com, 1 zuppy.pm, 1 @@ -169661,7 +168733,9 @@ zurich.co.uk, 1 zurl.co, 1 zurl.to, 1 +zurlo-detek.cfd, 1 zurmas-design.tk, 1 +zurt.com.br, 1 zuru.ml, 1 zuru.tk, 1 zusammen-grossartig.de, 1 @@ -169688,6 +168762,7 @@ zvxr.net, 1 zwaminspectie.nl, 1 zwedenautohuur.nl, 1 +zweiteng.tk, 1 zwemclub-rob.nl, 0 zwemschooldezwaantjes.tk, 1 zwergenfeste.ch, 1 @@ -169721,6 +168796,7 @@ zxnak37.ovh, 1 zxncs.tr, 1 zxssl.com, 0 +zxvc.cc, 1 zy.is, 1 zy.md, 1 zy.si, 1 @@ -169747,6 +168823,7 @@ zyner.org, 1 zynga.com, 1 zynqit.com, 0 +zypern-und-ich.de, 1 zypernreisen.com, 1 zypr.pw, 1 zyrex.eu.org, 1 @@ -169758,7 +168835,6 @@ zyul.ddns.net, 1 zywave.co.uk, 1 zyx3d.tk, 1 -zz.ac, 1 zz5197.co, 1 zz6729.co, 1 zz6957.co, 1 diff -Nru firefox-esr-140.13.0esr/security/manager/tools/log_list.json firefox-esr-140.15.0esr/security/manager/tools/log_list.json --- firefox-esr-140.13.0esr/security/manager/tools/log_list.json 2026-07-15 20:30:36.000000000 +0000 +++ firefox-esr-140.15.0esr/security/manager/tools/log_list.json 2026-08-26 17:03:48.000000000 +0000 @@ -1,6 +1,6 @@ { - "version": "88.3", - "log_list_timestamp": "2026-07-12T13:38:06Z", + "version": "89.28", + "log_list_timestamp": "2026-08-23T13:48:05Z", "operators": [ { "name": "Google", @@ -476,22 +476,6 @@ ], "logs": [ { - "description": "Let's Encrypt 'Oak2026h1'", - "log_id": "GYbUxyiqb/66A294Kk0BkarOLXIxD67OXXBBLSVMx9Q=", - "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmdRhcCL6d5MNs8eAliJRvyV5sQFC6UF7iwzHsmVaifT64gJG1IrHzBAHESdFSJAjQN56TYky+9cK616MovH2SQ==", - "url": "https://oak.ct.letsencrypt.org/2026h1/", - "mmd": 86400, - "state": { - "retired": { - "timestamp": "2026-02-28T00:00:00Z" - } - }, - "temporal_interval": { - "start_inclusive": "2025-12-20T00:00:00Z", - "end_exclusive": "2026-07-20T00:00:00Z" - } - }, - { "description": "Let's Encrypt 'Oak2026h2'", "log_id": "rKswcGzr7IQx9BPS9JFfER5CJEOx8qaMTzwrO6ceAsM=", "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEanCds5bj7IU2lcNPnIvZfMnVkSmu69aH3AS8O/Y0D/bbCPdSqYjvuz9Z1tT29PxcqYxf+w1g5CwPFuwqsm3rFQ==", diff -Nru firefox-esr-140.13.0esr/security/sandbox/chromium/sandbox/win/src/filesystem_dispatcher.cc firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/filesystem_dispatcher.cc --- firefox-esr-140.13.0esr/security/sandbox/chromium/sandbox/win/src/filesystem_dispatcher.cc 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/filesystem_dispatcher.cc 2026-08-26 17:03:49.000000000 +0000 @@ -81,6 +81,19 @@ } } +void RestrictDirectoryAccess(uint32_t options, uint32_t* access) { + if (options & FILE_NON_DIRECTORY_FILE) { + return; + } + + static constexpr uint32_t kAllowedDirReadFlags = + FILE_LIST_DIRECTORY | FILE_TRAVERSE | FILE_READ_ATTRIBUTES | + FILE_READ_EA | READ_CONTROL | SYNCHRONIZE | GENERIC_READ | + GENERIC_EXECUTE; + + *access &= kAllowedDirReadFlags; +} + bool FilesystemDispatcher::NtCreateFile(IPCInfo* ipc, std::wstring* name, uint32_t attributes, @@ -94,6 +107,20 @@ return true; } + // Only allow read only open for directories. + if (create_options & FILE_DIRECTORY_FILE) { + // Reject any flags that can only create or overwrite. + if (create_disposition != FILE_OPEN && create_disposition != FILE_OPEN_IF) { + ipc->return_info.nt_status = STATUS_ACCESS_DENIED; + return true; + } + + // Force to open only. + create_disposition = FILE_OPEN; + } + + RestrictDirectoryAccess(create_options, &desired_access); + const wchar_t* filename = name->c_str(); uint32_t broker = BROKER_TRUE; @@ -137,6 +164,8 @@ return true; } + RestrictDirectoryAccess(open_options, &desired_access); + const wchar_t* filename = name->c_str(); uint32_t broker = BROKER_TRUE; diff -Nru firefox-esr-140.13.0esr/security/sandbox/chromium/sandbox/win/src/registry_dispatcher.cc firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/registry_dispatcher.cc --- firefox-esr-140.13.0esr/security/sandbox/chromium/sandbox/win/src/registry_dispatcher.cc 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/registry_dispatcher.cc 2026-08-26 17:03:49.000000000 +0000 @@ -106,16 +106,16 @@ HANDLE handle; NTSTATUS nt_status; - ULONG disposition = 0; - if (!RegistryPolicy::CreateKeyAction( - result, *ipc->client_info, *name, attributes, root, desired_access, - title_index, create_options, &handle, &nt_status, &disposition)) { + if (!RegistryPolicy::OpenKeyAction(result, *ipc->client_info, *name, + attributes, root, desired_access, &handle, + &nt_status)) { ipc->return_info.nt_status = STATUS_ACCESS_DENIED; return true; } - // Return operation status on the IPC. - ipc->return_info.extended[0].unsigned_int = disposition; + // Return operation status on the IPC. Equivalent disposition can only be for + // existing key. + ipc->return_info.extended[0].unsigned_int = REG_OPENED_EXISTING_KEY; ipc->return_info.nt_status = nt_status; ipc->return_info.handle = handle; return true; diff -Nru firefox-esr-140.13.0esr/security/sandbox/chromium/sandbox/win/src/registry_policy.cc firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/registry_policy.cc --- firefox-esr-140.13.0esr/security/sandbox/chromium/sandbox/win/src/registry_policy.cc 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/registry_policy.cc 2026-08-26 17:03:49.000000000 +0000 @@ -54,39 +54,6 @@ return STATUS_SUCCESS; } -NTSTATUS NtCreateKeyInTarget(HANDLE* target_key_handle, - ACCESS_MASK desired_access, - OBJECT_ATTRIBUTES* obj_attributes, - ULONG title_index, - UNICODE_STRING* class_name, - ULONG create_options, - ULONG* disposition, - HANDLE target_process) { - *target_key_handle = nullptr; - NtCreateKeyFunction NtCreateKey = nullptr; - ResolveNTFunctionPtr("NtCreateKey", &NtCreateKey); - - if (MAXIMUM_ALLOWED & desired_access) { - NTSTATUS status = TranslateMaximumAllowed(obj_attributes, &desired_access); - if (!NT_SUCCESS(status)) - return STATUS_ACCESS_DENIED; - } - - HANDLE local_handle = INVALID_HANDLE_VALUE; - NTSTATUS status = - NtCreateKey(&local_handle, desired_access, obj_attributes, title_index, - class_name, create_options, disposition); - if (!NT_SUCCESS(status)) - return status; - - if (!::DuplicateHandle(::GetCurrentProcess(), local_handle, target_process, - target_key_handle, 0, false, - DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS)) { - return STATUS_ACCESS_DENIED; - } - return STATUS_SUCCESS; -} - NTSTATUS NtOpenKeyInTarget(HANDLE* target_key_handle, ACCESS_MASK desired_access, OBJECT_ATTRIBUTES* obj_attributes, @@ -169,40 +136,6 @@ return true; } -bool RegistryPolicy::CreateKeyAction(EvalResult eval_result, - const ClientInfo& client_info, - const std::wstring& key, - uint32_t attributes, - HANDLE root_directory, - uint32_t desired_access, - uint32_t title_index, - uint32_t create_options, - HANDLE* handle, - NTSTATUS* nt_status, - ULONG* disposition) { - // The only action supported is ASK_BROKER which means create the requested - // file as specified. - if (ASK_BROKER != eval_result) { - *nt_status = STATUS_ACCESS_DENIED; - return false; - } - - // We don't support creating link keys, volatile keys or backup/restore. - if (create_options) { - *nt_status = STATUS_ACCESS_DENIED; - return false; - } - - UNICODE_STRING uni_name = {0}; - OBJECT_ATTRIBUTES obj_attributes = {0}; - InitObjectAttribs(key, attributes, root_directory, &obj_attributes, &uni_name, - nullptr); - *nt_status = NtCreateKeyInTarget(handle, desired_access, &obj_attributes, - title_index, nullptr, create_options, - disposition, client_info.process); - return true; -} - bool RegistryPolicy::OpenKeyAction(EvalResult eval_result, const ClientInfo& client_info, const std::wstring& key, diff -Nru firefox-esr-140.13.0esr/security/sandbox/chromium/sandbox/win/src/registry_policy.h firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/registry_policy.h --- firefox-esr-140.13.0esr/security/sandbox/chromium/sandbox/win/src/registry_policy.h 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/security/sandbox/chromium/sandbox/win/src/registry_policy.h 2026-08-26 17:03:49.000000000 +0000 @@ -25,20 +25,6 @@ TargetPolicy::Semantics semantics, LowLevelPolicy* policy); - // Performs the desired policy action on a create request with an - // API that is compatible with the IPC-received parameters. - static bool CreateKeyAction(EvalResult eval_result, - const ClientInfo& client_info, - const std::wstring& key, - uint32_t attributes, - HANDLE root_directory, - uint32_t desired_access, - uint32_t title_index, - uint32_t create_options, - HANDLE* handle, - NTSTATUS* nt_status, - ULONG* disposition); - // Performs the desired policy action on an open request with an // API that is compatible with the IPC-received parameters. static bool OpenKeyAction(EvalResult eval_result, diff -Nru firefox-esr-140.13.0esr/security/sandbox/chromium-shim/patches/55_dont_broker_dir_creation_or_write.patch firefox-esr-140.15.0esr/security/sandbox/chromium-shim/patches/55_dont_broker_dir_creation_or_write.patch --- firefox-esr-140.13.0esr/security/sandbox/chromium-shim/patches/55_dont_broker_dir_creation_or_write.patch 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/security/sandbox/chromium-shim/patches/55_dont_broker_dir_creation_or_write.patch 2026-08-26 17:03:49.000000000 +0000 @@ -0,0 +1,56 @@ +Block directory creation and only allow read access. + +diff --git a/security/sandbox/chromium/sandbox/win/src/filesystem_dispatcher.cc b/security/sandbox/chromium/sandbox/win/src/filesystem_dispatcher.cc +index c0f1de07fbe1..431fcb766757 100644 +--- a/security/sandbox/chromium/sandbox/win/src/filesystem_dispatcher.cc ++++ b/security/sandbox/chromium/sandbox/win/src/filesystem_dispatcher.cc +@@ -81,6 +81,19 @@ bool FilesystemDispatcher::SetupService(InterceptionManager* manager, + } + } + ++void RestrictDirectoryAccess(uint32_t options, uint32_t* access) { ++ if (options & FILE_NON_DIRECTORY_FILE) { ++ return; ++ } ++ ++ static constexpr uint32_t kAllowedDirReadFlags = ++ FILE_LIST_DIRECTORY | FILE_TRAVERSE | FILE_READ_ATTRIBUTES | ++ FILE_READ_EA | READ_CONTROL | SYNCHRONIZE | GENERIC_READ | ++ GENERIC_EXECUTE; ++ ++ *access &= kAllowedDirReadFlags; ++} ++ + bool FilesystemDispatcher::NtCreateFile(IPCInfo* ipc, + std::wstring* name, + uint32_t attributes, +@@ -94,6 +107,20 @@ bool FilesystemDispatcher::NtCreateFile(IPCInfo* ipc, + return true; + } + ++ // Only allow read only open for directories. ++ if (create_options & FILE_DIRECTORY_FILE) { ++ // Reject any flags that can only create or overwrite. ++ if (create_disposition != FILE_OPEN && create_disposition != FILE_OPEN_IF) { ++ ipc->return_info.nt_status = STATUS_ACCESS_DENIED; ++ return true; ++ } ++ ++ // Force to open only. ++ create_disposition = FILE_OPEN; ++ } ++ ++ RestrictDirectoryAccess(create_options, &desired_access); ++ + const wchar_t* filename = name->c_str(); + + uint32_t broker = BROKER_TRUE; +@@ -137,6 +164,8 @@ bool FilesystemDispatcher::NtOpenFile(IPCInfo* ipc, + return true; + } + ++ RestrictDirectoryAccess(open_options, &desired_access); ++ + const wchar_t* filename = name->c_str(); + + uint32_t broker = BROKER_TRUE; diff -Nru firefox-esr-140.13.0esr/security/sandbox/linux/broker/SandboxBrokerRealpath.cpp firefox-esr-140.15.0esr/security/sandbox/linux/broker/SandboxBrokerRealpath.cpp --- firefox-esr-140.13.0esr/security/sandbox/linux/broker/SandboxBrokerRealpath.cpp 2026-07-15 20:30:38.000000000 +0000 +++ firefox-esr-140.15.0esr/security/sandbox/linux/broker/SandboxBrokerRealpath.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -35,15 +35,19 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)realpath.c 8.1 (Berkeley) 2/16/94"; #endif /* LIBC_SCCS and not lint */ +#include #include #include +#include #include +#include #include #include #include #include "base/string_util.h" +#include "mozilla/UniquePtrExtensions.h" #include "SandboxBroker.h" #include "SandboxLogging.h" @@ -61,6 +65,34 @@ namespace mozilla { +static ssize_t SafeReadlink(const char* __restrict path, char* __restrict buf, + size_t bufsiz) { + // In theory this is subsumed by the f_type check, but just in case + if (strncmp(path, "/proc/", 6) == 0) { + errno = EPERM; + return -1; + } + + // Linux extension: open any filesystem node, including a symlink + UniqueFileHandle fd{open(path, O_PATH | O_NOFOLLOW)}; + if (!fd) { + return -1; + } + + // Check the filesystem info for the symlink (not its target) + struct statfs sf; + if (fstatfs(fd.get(), &sf) != 0) { + return -1; + } + if (sf.f_type == PROC_SUPER_MAGIC) { + errno = EPERM; + return -1; + } + + // Linux extension: readlink the object referenced by the fd itself + return readlinkat(fd.get(), "", buf, bufsiz); +} + /* * Original: realpath * Find the real name of path, by removing all ".", ".." and symlink @@ -221,7 +253,7 @@ *perms |= link_path_perms; } /* Original symlink lookup code */ - slen = readlink(resolved, symlink, sizeof(symlink) - 1); + slen = SafeReadlink(resolved, symlink, sizeof(symlink) - 1); if (slen < 0) { if (m) free(resolved); return (NULL); diff -Nru firefox-esr-140.13.0esr/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp firefox-esr-140.15.0esr/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp --- firefox-esr-140.13.0esr/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp 2026-08-26 17:03:48.000000000 +0000 @@ -940,18 +940,22 @@ int32_t aSandboxLevel) { // The GPU process needs to write to a shader cache for performance reasons if (sProfileDir) { - // Currently the GPU process creates the shader-cache directory if it - // doesn't exist, so we have to give FILES_ALLOW_ANY access. - // FILES_ALLOW_DIR_ANY has been seen to fail on an existing profile although - // the root cause hasn't been found. FILES_ALLOW_DIR_ANY has also been - // removed from the sandbox code upstream. - // It is possible that we might be able to use FILES_ALLOW_READONLY for the - // dir if it is already created, bug 1966157 has been filed to track. - AddCachedDirRule(aPolicy, sandbox::TargetPolicy::FILES_ALLOW_ANY, - sProfileDir, u"\\shader-cache"_ns); + // Create the shader-cache dir ourselves, so we only need to give read + // access to it. + static constexpr auto kShaderCacheDir = u"\\shader-cache"_ns; + static constexpr auto kShaderCacheDirAnyEntry = u"\\shader-cache\\*"_ns; + nsAutoString rulePath(*sProfileDir); + rulePath.Append(kShaderCacheDir); + if (!::CreateDirectoryW(rulePath.get(), nullptr) && + ::GetLastError() != ERROR_ALREADY_EXISTS) { + LOG_W("Failed to create shader-cache"); + } + + AddCachedDirRule(aPolicy, sandbox::TargetPolicy::FILES_ALLOW_READONLY, + sProfileDir, kShaderCacheDir); AddCachedDirRule(aPolicy, sandbox::TargetPolicy::FILES_ALLOW_ANY, - sProfileDir, u"\\shader-cache\\*"_ns); + sProfileDir, kShaderCacheDirAnyEntry); } // Add GPU specific shader cache rules. diff -Nru firefox-esr-140.13.0esr/services/settings/RemoteSettingsClient.sys.mjs firefox-esr-140.15.0esr/services/settings/RemoteSettingsClient.sys.mjs --- firefox-esr-140.13.0esr/services/settings/RemoteSettingsClient.sys.mjs 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/RemoteSettingsClient.sys.mjs 2026-08-26 17:03:49.000000000 +0000 @@ -1123,11 +1123,6 @@ lazy.console.error( `${this.identifier} Signature failed ${retry ? "again" : ""} ${e}` ); - if (!(e instanceof InvalidSignatureError)) { - // If it failed for any other kind of error (eg. shutdown) - // then give up quickly. - throw e; - } // In order to distinguish signature errors that happen // during sync, from hijacks of local DBs, we will verify @@ -1142,10 +1137,6 @@ ); localTrustworthy = true; } catch (sigerr) { - if (!(sigerr instanceof InvalidSignatureError)) { - // If it fails for other reason, keep original error and give up. - throw sigerr; - } lazy.console.debug(`${this.identifier} previous data was invalid`); } Binary files /srv/release.debian.org/tmp/4zuglLPuPa/firefox-esr-140.13.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin and /srv/release.debian.org/tmp/3owaAOKck2/firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin differ diff -Nru firefox-esr-140.13.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json --- firefox-esr-140.13.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json 2026-08-26 17:03:49.000000000 +0000 @@ -1 +1 @@ -{"schema":1780490200552,"attachment":{"hash":"c5be2480c5311441de4f0a1b90818e03fb7085155d8273582d7953d93d762262","size":897822,"filename":"filter.bin","location":"staging/addons-bloomfilters/20260603183820--e721bc94-cd19-484f-9665-ba2f47c00783--93bc976a-9ba0-4f68-91ae-14bc95dba649.bin","mimetype":"application/octet-stream"},"key_format":"{guid}:{version}","attachment_type":"bloomfilter-base","generation_time":1780511705423,"id":"e721bc94-cd19-484f-9665-ba2f47c00783","last_modified":1780511939812} \ No newline at end of file +{"schema":1787143031621,"attachment":{"hash":"36d687fd2fea46ed89e5d713e4747883243cfd11b8a7ea4a2561e8541521deb8","size":911572,"filename":"filter.bin","location":"staging/addons-bloomfilters/20260819183841--45e41d7c-1e0b-4754-95b9-055362b20108--284ba047-5484-4d8e-82f2-5409979d0bd6.bin","mimetype":"application/octet-stream"},"key_format":"{guid}:{version}","attachment_type":"bloomfilter-base","generation_time":1787164506117,"id":"45e41d7c-1e0b-4754-95b9-055362b20108","last_modified":1787164757021} \ No newline at end of file Binary files /srv/release.debian.org/tmp/4zuglLPuPa/firefox-esr-140.13.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin and /srv/release.debian.org/tmp/3owaAOKck2/firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin differ diff -Nru firefox-esr-140.13.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json --- firefox-esr-140.13.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json 2026-08-26 17:03:49.000000000 +0000 @@ -1 +1 @@ -{"schema":1780511900610,"attachment":{"hash":"8d10fb8eacdcdeb78d29810763b7f446d662dbd097b0323c9243f816fc7bdb33","size":192872,"filename":"filter.bin","location":"staging/addons-bloomfilters/20260603183820--51453fc1-28a5-4a9f-8bf8-e750aba654f4--2c4237ee-5b6b-4ca8-9bc3-e4d97fca72a6.bin","mimetype":"application/octet-stream"},"key_format":"{guid}:{version}","attachment_type":"softblocks-bloomfilter-base","generation_time":1780511705423,"id":"51453fc1-28a5-4a9f-8bf8-e750aba654f4","last_modified":1780511939815} \ No newline at end of file +{"schema":1787164721459,"attachment":{"hash":"86b0ff726e9096f39144895ff4ff5c7de3281e4bc545e903f64323479235defc","size":205717,"filename":"filter.bin","location":"staging/addons-bloomfilters/20260819183841--eccf3eab-5278-4a14-ac47-ee7b59a8d2c4--78afeb23-58a2-471e-84ad-7a299994640d.bin","mimetype":"application/octet-stream"},"key_format":"{guid}:{version}","attachment_type":"softblocks-bloomfilter-base","generation_time":1787164506117,"id":"eccf3eab-5278-4a14-ac47-ee7b59a8d2c4","last_modified":1787164757017} \ No newline at end of file diff -Nru firefox-esr-140.13.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json --- firefox-esr-140.13.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/dumps/blocklists/addons-bloomfilters.json 2026-08-26 17:03:48.000000000 +0000 @@ -5,8892 +5,886 @@ "blocked": [], "unblocked": [], "softblocked": [ - "ytdlp-extension@your-domain.com:3.0.1", - "deepaudit@deepaudit.ai:1.1", - "deepaudit@deepaudit.ai:1.2", - "{0ba73a43-8bbb-481b-af51-ddaf27dfac89}:0.2", - "{8f049cf9-1963-4428-bd9d-d8cac3a8e8f8}:2.0.0", - "{8f049cf9-1963-4428-bd9d-d8cac3a8e8f8}:2.0.1", - "dc-sidebar-blocker@local:2.2.0", - "{d4361314-4430-4865-97b3-ea6c90584ead}:0.2", - "navigateintentmarks@example.com:1.3", - "navigateintentmarks@example.com:1.5", - "navigateintentmarks@example.com:1.6", - "navigateintentmarks@example.com:1.7", - "navigateintentmarks@example.com:1.8", - "navigateintentmarks@example.com:1.9", - "@sendtoqnapplusplus:2.60", - "{014d0bac-dd06-4e96-b7c1-41ad0d208c07}:1.0", - "one-click-auto-fill@example.com:1.1", - "favory@sp4ce.pw:5.0.9", - "xproxy@local:1.1.3" - ] - }, - "schema": 1783903011546, - "key_format": "{guid}:{version}", - "stash_time": 1783924509917, - "id": "d05d554a-4b72-4742-9520-73a6d40877fc", - "last_modified": 1783924608518 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "poe-wiki-search-continued@yohpra:2.0.0", - "poe-wiki-search-continued@yohpra:2.0.1", - "{c0146dcf-00b4-4c2f-9675-cd6c09aba512}:0.5.2", - "gerador-edital-rtf-v2025@exemplo.com:1.0", - "gerador-edital-rtf-v2025@exemplo.com:1.1", - "{f7a771fe-6667-4124-a6d7-25d9fe3ba90a}:1.0.0", - "{915b94f6-f3d1-474a-86b9-af4f2f8aa4fc}:1.4.8", - "{915b94f6-f3d1-474a-86b9-af4f2f8aa4fc}:1.4.9", - "{915b94f6-f3d1-474a-86b9-af4f2f8aa4fc}:1.5.0", - "{915b94f6-f3d1-474a-86b9-af4f2f8aa4fc}:1.5.1", - "{ac8c60bf-3e85-44dd-b454-0be7f219ed3f}:1.0.0", - "{ac8c60bf-3e85-44dd-b454-0be7f219ed3f}:1.0.1", - "ctfuker@yadavnikhil03:2.1", - "lebonfiltre@extension:1.4.0", - "ai-image-helper@extension:1.2.1", - "ai-image-helper@extension:1.2.2", - "{24266bb4-208b-4214-b397-0f4db5f23d25}:0.2", - "p-stream-fixed@local:1.3.5", - "bandai-connect@tdgr.org:1.1.4" - ] - }, - "schema": 1783881410744, - "key_format": "{guid}:{version}", - "stash_time": 1783902909463, - "id": "ccc2b18c-aebb-4909-92a3-57095e353959", - "last_modified": 1783903011232 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "extension@subtext.site:1.0.10", - "extension@subtext.site:1.0.11", - "extension@subtext.site:1.0.12", - "{e2cd5411-07d0-43c5-b67a-69c5585e18c0}:0.1", - "opensocial@example.com:4.4", - "opensocial@example.com:4.5", - "tiktok-like-logger@example.com:2.9", - "tiktok-like-logger@example.com:2.10", - "@giseo-helpr:1.0", - "tiktok-like-logger@example.com:2.13", - "tiktok-like-logger@example.com:2.11", - "tiktok-like-logger@example.com:2.8", - "tiktok-like-logger@example.com:2.7", - "youtube-long-feed-scoreboard-341@dlema32.local:3.4.1", - "page-highlighter-16ccbbef@example.com:1.0.0", - "safe-page-highlighter@example.com:1.0.0", - "tiktok-like-logger@example.com:2.14", - "tiktok-like-logger@example.com:2.15", - "tiktok-like-logger@example.com:2.16", - "deepjump-h2@deepjump.ai:1.4", - "brows@egeguclu.dev:3.0.2", - "censortracker@avatardd:20.7.7", - "tiktok-like-logger@example.com:2.17", - "{e31bc53b-3675-49f2-903c-05fe58cc9021}:0.1.2", - "{e31bc53b-3675-49f2-903c-05fe58cc9021}:0.1.3", - "{e31bc53b-3675-49f2-903c-05fe58cc9021}:0.1.4", - "{e31bc53b-3675-49f2-903c-05fe58cc9021}:0.1.5", - "{e31bc53b-3675-49f2-903c-05fe58cc9021}:0.1.7", - "{e31bc53b-3675-49f2-903c-05fe58cc9021}:0.1.8", - "{e31bc53b-3675-49f2-903c-05fe58cc9021}:0.1.9", - "twitch-live-monitor@konichu.local:1.0.4", - "meme-index-processor@cooplabs.net:1.0.0", - "tiktok-like-logger@example.com:2.18", - "lm-civitai-extension-free@local:0.5.0", - "last-mile-assistant@alwatani:1.4", - "last-mile-assistant@alwatani:1.6", - "last-mile-assistant@alwatani:1.7", - "last-mile-assistant@alwatani:1.8", - "last-mile-assistant@alwatani:1.9", - "tokopedia-tab-switcher@masdenco24.local:1.0" - ] - }, - "schema": 1783859793995, - "key_format": "{guid}:{version}", - "stash_time": 1783881321342, - "id": "7e0bf85b-bb68-4c1f-a486-4fbda1ffb003", - "last_modified": 1783881410507 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{5c3132c4-72c1-4f63-a9e2-faf7dedebe19}:241029.1", - "missav-optimizer-v2@example.com:1.0.6", - "missav-optimizer-v2@example.com:1.0.7", - "missav-optimizer-v2@example.com:1.0.8", - "missav-optimizer-v2@example.com:1.0.9", - "sankaku-complex-beta-addons@hk4.dev:0.1.1", - "sankaku-complex-beta-addons@hk4.dev:0.2.0", - "sankaku-complex-beta-addons@hk4.dev:0.2.1", - "@madebyme-addonmv3exp1:1.1", - "@madebyme-addonmv3exp:1.1", - "@madebyme-addon:1.0", - "{55968812-d8ec-407e-87ab-f7e6e34d333f}:1.0", - "tab-alt-arrow-switcher@rakennus:1.0", - "tab-alt-arrow-switcher@rakennus:1.1", - "tab-alt-arrow-switcher@rakennus:1.2", - "supervisior@extension.local:0.0.1", - "web-summary-translator-mvp@example.local:0.2.8", - "web-summary-translator-mvp@example.local:0.2.9", - "web-summary-translator-mvp@example.local:0.2.10", - "web-summary-translator-mvp@example.local:0.2.11", - "web-summary-translator-mvp@example.local:0.2.12", - "{5f856aaa-b6e8-41e1-ad71-6191357a012e}:1.5", - "glicocontrol-leitura@example.local:0.1.2", - "garrysextension@example.org:1.0" - ] - }, - "schema": 1783838203532, - "key_format": "{guid}:{version}", - "stash_time": 1783859705795, - "id": "25d2ae65-6888-404e-8ef6-7dd70ddcc136", - "last_modified": 1783859793765 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "roi-reader-view@local:7.1.9", - "roi-reader-view@local:7.1.8", - "roi-reader-view@local:7.1.7", - "roi-reader-view@local:7.2.1", - "roi-reader-view@local:7.1.6", - "roi-reader-view@local:7.1.4", - "roi-reader-view@local:7.1.3", - "roi-reader-view@local:7.1.2", - "roi-reader-view@local:7.1.1", - "lexivore@prickettjw.github.io:0.0.1", - "tiktok-like-logger@example.com:1.1", - "Android@bravenhancer.com:26.1.0", - "enhancer@goldenfox.com:26.1.3", - "{05a62da0-a346-4c01-9a99-6b2582d40111}:0.1", - "tiktok-like-logger@example.com:1.2", - "tiktok-like-logger@example.com:1.3", - "tiktok-like-logger@example.com:1.4", - "tiktok-like-logger@example.com:1.5", - "tiktok-like-logger@example.com:1.6", - "tiktok-like-logger@example.com:1.7", - "tiktok-like-logger@example.com:2.2", - "tiktok-like-logger@example.com:2.3", - "tiktok-like-logger@example.com:2.4", - "tiktok-like-logger@example.com:2.5", - "rfp-darkmode@locall.net:1.3", - "leetcode-tracker@jeffreygbeho.dev:1.9.2", - "my-speed-dial@doloni-17:1.0", - "workflow01@remakr1.com:2.0", - "workflow01@remakr1.com:5.3.3", - "tiktok-like-logger@example.com:2.6", - "{1a0b059f-6598-4ecb-a0d5-d522beee23aa}:1.15", - "{150955eb-0f0a-4ec2-b0ee-0fbec4daee51}:1.1", - "{afbe59d3-7a62-4041-bfc2-8704b82cef82}:1.1", - "{8ae9bb96-9fa1-4125-b93f-80224a03c6bf}:1.12", - "{c6b6cd84-02e3-4d96-a0f6-b60e36fbc7e3}:1.13", - "{39d42bd4-4c0c-4edd-a973-f83b95d44ef4}:1.14" - ] - }, - "schema": 1783816602682, - "key_format": "{guid}:{version}", - "stash_time": 1783838108067, - "id": "6e6e5217-5b17-4896-b96c-d460cd7f040a", - "last_modified": 1783838203207 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "roi-reader-view@local:7.3.1", - "roi-reader-view@local:6.3.4", - "roi-reader-view@local:6.3.3", - "roi-reader-view@local:6.7.0", - "roi-reader-view@local:8.3.0", - "roi-reader-view@local:9.3.6", - "roi-reader-view@local:9.3.5", - "roi-reader-view@local:9.3.0", - "roi-reader-view@local:6.3.0", - "roi-reader-view@local:6.5.1", - "roi-reader-view@local:7.1.5", - "korean-immersion@example.local:1.0.0", - "alexdata@gmail.com:3.6", - "alexdata@gmail.com:3.6.1", - "alexdata@gmail.com:3.6.3", - "alexdata@gmail.com:3.6.4", - "alexdata@gmail.com:3.6.5" - ] - }, - "schema": 1783794987885, - "key_format": "{guid}:{version}", - "stash_time": 1783816507035, - "id": "f149825d-fca6-494c-b8e0-5d6d4890c255", - "last_modified": 1783816602440 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "yunitab@czy001:1.0", - "extension@subtext.site:1.0.6", - "extension@subtext.site:1.0.7", - "extension@subtext.site:1.0.8", - "extension@subtext.site:1.0.9", - "ebay-sold-high-to-low@dlema32.local:1.0.0", - "addons.mozilla.org.agodo@passmail.net:1.0", - "image-downloader-firefox@example.com:0.0.1", - "orderhistoryplus@microcenter.local:0.4", - "orderhistoryplus@microcenter.local:0.5", - "twlr2-1-iixisii-exten@gmail.com:1.0.0", - "xproxy@local:1.1.1", - "@youtube-video-timestamper:1.0", - "@youtube-video-timestamper:1.1", - "amazon-highest-review-sorter@dlema32.local:1.0.0", - "xianyu-goofish-assistant@gloqqa:1.0.24", - "xianyu-goofish-assistant@gloqqa:1.0.22", - "reddit-link-expander@local.extension:1.0.0", - "youtube-force-authuser@local.ext:1.0", - "youtube-force-authuser@local.ext:1.0.1", - "youtube-force-authuser@local.ext:2.0.0", - "favory@sp4ce.pw:5.0.8", - "favory@sp4ce.pw:5.0.7", - "favory@sp4ce.pw:5.0.6.1", - "youtube-ban-page-bypass@local.ext:3.0.1", - "youtube-ban-page-bypass@local.ext:3.0.0", - "fabric-decoder@example.local:1.5.4", - "fangen@zaryo.github.io:0.2.0", - "horizontabs@example.com:1.1", - "domeyes-local@peacepharm.org:5.1.0", - "domeyes-local@peacepharm.org:5.1.1", - "domeyes-local@peacepharm.org:5.2.0", - "domeyes-local@peacepharm.org:5.2.1", - "domeyes-local@peacepharm.org:5.2.2", - "domeyes-local@peacepharm.org:5.2.3", - "searchoptimizer@gemini:1.2", - "archivum@kowalskipiotr.pl:1.1.26070516" - ] - }, - "schema": 1783773405162, - "key_format": "{guid}:{version}", - "stash_time": 1783794906520, - "id": "1f5d431e-1cd9-4254-84ea-2dc9572862ba", - "last_modified": 1783794987456 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "melike@example.com:1.1.1", - "{9444f7bd-9e00-46f9-b15e-53dbefd778da}:1.0", - "{b0b161c8-6a1f-40fe-9fa6-cc817f19301e}:2", - "{b0b161c8-6a1f-40fe-9fa6-cc817f19301e}:1.1", - "{b0b161c8-6a1f-40fe-9fa6-cc817f19301e}:2.2", - "{b0b161c8-6a1f-40fe-9fa6-cc817f19301e}:2.3", - "{b0b161c8-6a1f-40fe-9fa6-cc817f19301e}:3.0", - "tabby-tab-export@local.dev:1.0.0", - "tabby-tab-export@local.dev:1.0.1", - "{b0b161c8-6a1f-40fe-9fa6-cc817f19301e}:3.2", - "{b0b161c8-6a1f-40fe-9fa6-cc817f19301e}:2.1", - "twitch-pinned-streamers@addon.local:1.5.8", - "twitch-pinned-streamers@addon.local:1.5.7", - "{0abe13ac-dc4a-42b8-bf2d-a1754d1896b9}:1.0", - "ai-usage-monitor-6d4b29fc0ef84f219c88084f329d5d82@example.com:1.0.0", - "coolcollege-2x-speed@local:1.0.10", - "coolcollege-2x-speed@local:1.0.9", - "coolcollege-2x-speed@local:1.0.8", - "coolcollege-2x-speed@local:1.0.7", - "coolcollege-2x-speed@local:1.0.6", - "spiegel-archive@chris.local:3.0", - "i.pro.linux@yandex.ru_qwen:1.0", - "reddit-comment-magnifier-882851d6-32ef-45f8-b0ad-b0413c880d77@extensions.local:1.0.0", - "FlagTrace@github.qinxs:1.0.13", - "reviewrank-pro@dlema32.local:1.0.0", - "ebay-refurbished-ranker@dlema32.local:1.0.1" - ] - }, - "schema": 1783751801550, - "key_format": "{guid}:{version}", - "stash_time": 1783773308036, - "id": "1dd767bf-1f63-42aa-9321-6141460a20b7", - "last_modified": 1783773404798 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{2b27807a-392a-4b91-8320-d52c7d50b225}:1.0", - "{2b27807a-392a-4b91-8320-d52c7d50b225}:2.0", - "udemy-tts@rndomhack.com:1.0.0", - "udemy-tts@rndomhack.com:1.0.1", - "udemy-tts@rndomhack.com:1.0.2", - "flowread@myhelp.vip:0.9.21", - "internet-blocker@carlos.dev:2.0", - "internet-blocker@carlos.dev:1.0", - "deepaudit@deepaudit.ai:1.0", - "internet-blocker@carlos.dev:2.1", - "internet-blocker@carlos.dev:2.2", - "{948c55c8-acf3-4adc-ac2f-1beaf6a12b4a}:2.4", - "{5bee1199-cffa-4b44-894a-cb3179372db5}:1.0.0", - "tagged-bookmarking@aggravating.local:0.4.3.1", - "whatsapp-translator-firefox@local:1.0.4", - "cookie-extractor@your-custom-name.com:1.0", - "vms-slot-checker@italyvms.local:1.2.3", - "vms-slot-checker@italyvms.local:1.2.4", - "searchhopper@pipstar:2.4.2", - "melike@example.com:1.0", - "melike@example.com:1.1.0" - ] - }, - "schema": 1783730184983, - "key_format": "{guid}:{version}", - "stash_time": 1783751707160, - "id": "59b94ed1-664c-4bc2-9d4d-86aeb03757b6", - "last_modified": 1783751801283 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{0c242045-8f67-4251-bdf4-1a3b8e72c83c}:1.0", - "{c541b6c7-3162-4d2b-98f9-4d6cb077d2fa}:1.0.2", - "{0c242045-8f67-4251-bdf4-1a3b8e72c83c}:1.1", - "support-xumm3@gmail.com:1.0.3", - "GoogleSearch@NewTab:1.5", - "jira-deda-tools@deda-next.it:26.194.0", - "twitch-tools@addons.nobbybollocks:1.0.4", - "watched-marker-multi@opencode:1.2", - "penguin-tools@local:3.2", - "penguin-tools@local:4.0", - "penguin-tools@local:4.1", - "penguin-tools@local:4.3", - "{56c0bc58-a03a-4e3a-abec-d6c94dfe9660}:1.0", - "reddit-triple-text@local.extension:1.0.0", - "bewerberportal-addon@rwth-aachen.de:1.5", - "{a2156984-bed9-4851-b725-554e2be12921}:1.0", - "{a2156984-bed9-4851-b725-554e2be12921}:1.1", - "{a2156984-bed9-4851-b725-554e2be12921}:1.1.1", - "{a2156984-bed9-4851-b725-554e2be12921}:1.1.2", - "{a2156984-bed9-4851-b725-554e2be12921}:1.2", - "{a2156984-bed9-4851-b725-554e2be12921}:1.3", - "{a2156984-bed9-4851-b725-554e2be12921}:1.4", - "{a2156984-bed9-4851-b725-554e2be12921}:1.5", - "{a2156984-bed9-4851-b725-554e2be12921}:6.0.1", - "GoogleSearch@NewTab:1.6", - "GoogleSearch@NewTab:1.7", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:5.22.1" - ] - }, - "schema": 1783708592190, - "key_format": "{guid}:{version}", - "stash_time": 1783730105799, - "id": "b30cda38-421d-4133-bec4-893c4766aaeb", - "last_modified": 1783730184718 - }, - { - "stash": { - "blocked": [ - "auto-website-opener@example.com:1.1", - "auto-website-opener@example.com:1.2", - "auto-website-opener@example.com:7.9" - ], - "unblocked": [], - "softblocked": [ - "vocab-decks@btushq.local:1.0.0", - "vocab-decks@btushq.local:1.1.0", - "searchhopper@pipstar:2.4", - "GoogleSearch@NewTab:1.4", - "vk-styles-clean@local:2.0.9.1", - "remplisseur-concours@leo.local:2.1", - "helveg@nextron-systems.com:0.0.6", - "textsnap@gomoot.com:1.1.0", - "cbf-overlay@Dimitrios.gr:10.6", - "magnolia@12.34:4.3.9.3", - "newtab-groups@local.extension:1.0.0", - "{dfa4e416-fd67-48fe-8fd2-52bf66d41c43}:1.0", - "support-jug-ag1@gmail.com:1.0.1", - "{d273b844-a448-4ecc-8d75-293a33928fad}:1.0.91", - "{d273b844-a448-4ecc-8d75-293a33928fad}:1.0.92", - "{d273b844-a448-4ecc-8d75-293a33928fad}:1.0.93", - "{d273b844-a448-4ecc-8d75-293a33928fad}:1.0.94", - "{d273b844-a448-4ecc-8d75-293a33928fad}:1.0.95", - "{d273b844-a448-4ecc-8d75-293a33928fad}:1.0.96", - "tempo-decorrido@extensao.local:1.0", - "majamikunil@gmail.com:1.0", - "majamikunil@gmail.com:1.0.1", - "remplisseur-concours@leo.local:2.0", - "remplisseur-concours@leo.local:2.2", - "{cb3a6a06-e55d-491e-a71d-7143d7a32cc9}:1.4.0", - "{cb3a6a06-e55d-491e-a71d-7143d7a32cc9}:711.0.1", - "{682dcb27-b8a1-4e06-a7ea-d9b855fd925a}:1.0", - "twitch-proxy@me.de:1.3.0", - "twitch-proxy@me.de:1.0", - "twitch-proxy@me.de:1.0.1", - "twitch-proxy@me.de:1.0.2", - "twitch-proxy@me.de:1.0.3", - "twitch-proxy@me.de:1.0.4", - "speed-dial@georg.local:1.1.4", - "speed-dial@georg.local:1.1.5", - "speed-dial@georg.local:1.1.6", - "twitch-live-ext@deine-domain.de:1.1", - "twitch-live-ext@deine-domain.de:1.2", - "twitch-live-ext@deine-domain.de:1.3", - "twitch-live-ext@deine-domain.de:1.3.1", - "twitch-live-ext@deine-domain.de:1.3.2", - "youtube-ultrawide-auto-zoom@example.local:1.0", - "youtube-ultrawide-auto-zoom@example.local:1.1", - "youtube-ultrawide-auto-zoom@example.local:1.2", - "youtube-ultrawide-auto-zoom@example.local:1.3", - "amazon-internal-script-extension@pydikond.amazon.com:3.6.0", - "atlas-bridge-2@ip-api.local:0.1.5", - "atlas-bridge-2@ip-api.local:0.1.9", - "ff-unlisted@cluerate.qa:0.2.22", - "ff-unlisted@cluerate.qa:0.2.88", - "ff-unlisted@cluerate.qa:0.2.87", - "ff-unlisted@cluerate.qa:0.2.85", - "ff-unlisted@cluerate.qa:0.2.84", - "ff-unlisted@cluerate.qa:0.2.83", - "ff-unlisted@cluerate.qa:0.2.82", - "ff-unlisted@cluerate.qa:0.2.81", - "ff-unlisted@cluerate.qa:0.2.80", - "ff-unlisted@cluerate.qa:0.2.76", - "ff-unlisted@cluerate.qa:0.2.68", - "ff-unlisted@cluerate.qa:0.2.67", - "ff-unlisted@cluerate.qa:0.2.63", - "ff-unlisted@cluerate.qa:0.2.55", - "ff-unlisted@cluerate.qa:0.2.54", - "ff-unlisted@cluerate.qa:0.2.53", - "ff-unlisted@cluerate.qa:0.2.52", - "ff-unlisted@cluerate.qa:0.2.51", - "ff-unlisted@cluerate.qa:0.2.49", - "ff-unlisted@cluerate.qa:0.2.48", - "ff-unlisted@cluerate.qa:0.2.47", - "ff-unlisted@cluerate.qa:0.2.46", - "ff-unlisted@cluerate.qa:0.2.45", - "ff-unlisted@cluerate.qa:0.2.44", - "ff-unlisted@cluerate.qa:0.2.43", - "ff-unlisted@cluerate.qa:0.2.42", - "ff-unlisted@cluerate.qa:0.2.40", - "ff-unlisted@cluerate.qa:0.2.29", - "ff-unlisted@cluerate.qa:0.2.28", - "ff-unlisted@cluerate.qa:0.2.27", - "ff-unlisted@cluerate.qa:0.2.26", - "ff-unlisted@cluerate.qa:0.2.25", - "ff-unlisted@cluerate.qa:0.2.89", - "ff-unlisted@cluerate.qa:0.2.90", - "ff-unlisted@cluerate.qa:0.2.94", - "ff-unlisted@cluerate.qa:0.2.96", - "ff-unlisted@cluerate.qa:0.2.99", - "ff-unlisted@cluerate.qa:0.3.6", - "ff-unlisted@cluerate.qa:0.3.12", - "ff-unlisted@cluerate.qa:0.3.14", - "ff-unlisted@cluerate.qa:0.3.15", - "ff-unlisted@cluerate.qa:0.3.16", - "ff-unlisted@cluerate.qa:0.3.18", - "ff-unlisted@cluerate.qa:0.3.19", - "ff-unlisted@cluerate.qa:0.3.27", - "ff-unlisted@cluerate.qa:0.3.30", - "ff-unlisted@cluerate.qa:0.3.32", - "ff-unlisted@cluerate.qa:0.3.34", - "ff-unlisted@cluerate.qa:0.3.35", - "discord-token-saver@yourdomain.com:2.0", - "generator-folders@portable:1.0.0", - "kolorowanie-folderow@portable:1.1", - "kolorowanie-folderow@portable:1.2", - "profile-filter@guillaumegruber:1.0" - ] - }, - "schema": 1783687003440, - "key_format": "{guid}:{version}", - "stash_time": 1783708506432, - "id": "fd47bd96-2e70-4043-8519-12f78b030f34", - "last_modified": 1783708592038 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "firefox-ext@cluerate.com:0.3.87", - "firefox-ext@cluerate.com:0.3.81", - "firefox-ext@cluerate.com:0.3.86", - "firefox-ext@cluerate.com:0.3.88", - "ff-unlisted@cluerate.qa:0.3.85", - "ff-unlisted@cluerate.qa:0.3.84", - "ff-unlisted@cluerate.qa:0.3.83", - "ff-unlisted@cluerate.qa:0.3.80", - "ff-unlisted@cluerate.qa:0.3.79", - "ff-unlisted@cluerate.qa:0.3.77", - "ff-unlisted@cluerate.qa:0.3.75", - "ff-unlisted@cluerate.qa:0.3.73", - "ff-unlisted@cluerate.qa:0.3.71", - "ff-unlisted@cluerate.qa:0.3.69", - "ff-unlisted@cluerate.qa:0.3.66", - "ff-unlisted@cluerate.qa:0.3.64", - "ff-unlisted@cluerate.qa:0.3.62", - "ff-unlisted@cluerate.qa:0.3.61", - "ff-unlisted@cluerate.qa:0.3.57", - "ff-unlisted@cluerate.qa:0.3.48", - "ff-unlisted@cluerate.qa:0.3.46", - "pdc-site-bridge@local:3.20", - "pdc-site-bridge@local:3.21", - "pad2-helper@pad2.local:4.4", - "pad2-helper@pad2.local:4.3", - "pad2-helper@pad2.local:4.9", - "aisee@aisee.live:1.2.5", - "aisee@aisee.live:1.2.6", - "ksushilrmt@gmail.com:1.0.0", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.5.2", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.5.1", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.5.3", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.5.5", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.6.0", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.6.9", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.7.4", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.7.5", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.7.6", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.7.7", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.8.0", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.12.0", - "{f8395332-7a3a-4be9-ab87-84adfee56cc4}:1.1.21.0", - "pad2-helper@pad2.local:4.6", - "pad2-helper@pad2.local:4.5", - "GoogleSearch@NewTab:1.2", - "GoogleSearch@NewTab:1.3", - "focus-tab-groups@local:1.0.0", - "focus-tab-groups@local:1.0.1", - "focus-tab-groups@local:1.0.2", - "focus-tab-groups@local:1.0.3", - "focus-tab-groups@local:1.0.4", - "focus-tab-groups@local:1.0.5", - "focus-tab-groups@local:1.0.6", - "focus-tab-groups@local:1.0.7", - "focus-tab-groups@local:1.0.8", - "focus-tab-groups@local:1.0.9", - "focus-tab-groups@local:1.0.10", - "focus-tab-groups@local:1.2.1", - "focus-tab-groups@local:1.2.2", - "focus-tab-groups@local:1.2.3", - "focus-tab-groups@local:1.2.4", - "{6f3a1b2c-8d4e-4f5a-9b6c-1e2d3f4a5b6c}:1", - "twitch-proxy@me.de:1.2.3", - "twitch-proxy@me.de:1.2.5", - "twitch-proxy@me.de:1.2.4", - "twitch-proxy@me.de:1.2.6", - "twitch-proxy@me.de:1.2.7", - "twitch-proxy@me.de:1.2.8", - "my-local-extension@example.com:1.0", - "my-local-extension@example.com:1.0.1.1", - "my-local-extension@example.com:1.0.1.2", - "re-start@frozenkelp.vip:1.6.1", - "my-zoom-victory@local.addon:1.0", - "commit-timeline@bitdefender.local:1.0.0", - "commit-timeline@bitdefender.local:2.0.2", - "{85f5e526-6402-4307-bb3a-d06d3b7aaefd}:1.0" - ] - }, - "schema": 1783665391464, - "key_format": "{guid}:{version}", - "stash_time": 1783686908348, - "id": "52d10236-9434-4cf1-ba63-b858509a4adf", - "last_modified": 1783687003218 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "linkedin-sphere-capture@frankeundschwarz.de:0.2.0", - "caveman-firefox-zen@getcaveman.dev:1.2.0", - "health-capsule-doctor-assistant-gn@yuxin:2.1", - "pdc-site-bridge@local:3.1.5", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:5.3.5", - "pdc-site-bridge@local:3.1.6", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:5.3.6", - "ilnb-toolbar@ilnb.uscourts.gov:1.4", - "ilnb-toolbar@ilnb.uscourts.gov:1.6", - "itsimonsec2@gmail.com:2.1.2", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:5.3.7", - "itsimonsec@gmail.com:2.1.2", - "firefox-ext@cluerate.com:0.3.43", - "firefox-ext@cluerate.com:0.3.51", - "firefox-ext@cluerate.com:0.3.56", - "firefox-ext@cluerate.com:0.3.63", - "firefox-ext@cluerate.com:0.3.65", - "firefox-ext@cluerate.com:0.3.70", - "firefox-ext@cluerate.com:0.3.72", - "firefox-ext@cluerate.com:0.3.74", - "firefox-ext@cluerate.com:0.3.76", - "firefox-ext@cluerate.com:0.3.78", - "firefox-ext@cluerate.com:0.3.82", - "pdc-site-bridge@local:3.1.8", - "design-inspector-f19402aa235a579e@example.com:1.0.0", - "copylinktext@7f1dfc8e-8b17-4dc4-a3f1-5e0ac5b72fa5.com:1.0.0", - "search@7f1dfc8e-8b17-4dc4-a3f1-5e0ac5b72fa5.com:1.0", - "search@7f1dfc8e-8b17-4dc4-a3f1-5e0ac5b72fa5.com:1.1.0", - "pdc-site-bridge@local:3.1.7", - "pdc-site-bridge@local:3.19", - "{b1470a98-3fcd-47c0-8e98-d3a3f3766628}:1.0", - "itsimonsec@gmail.com:3.0.0", - "flagswap@flagswap.dev:0.2.0" - ] - }, - "schema": 1783643791432, - "key_format": "{guid}:{version}", - "stash_time": 1783665307087, - "id": "1948f277-0738-4393-a2c5-90ca3a2842cb", - "last_modified": 1783665391200 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "zzororo@xmousse.com:1.1.0", - "amazon-tracker@fabian.local:0.6.1", - "{bfceca2e-83a4-4eea-9865-71fd6963ea8d}:1.0", - "{9d7aa7b3-8214-40b4-96d2-a10154debdca}:0.10.0", - "hangar-xplorer-community@alyxone:1.0.119", - "hangar-xplorer-community@alyxone:1.0.120", - "hangar-xplorer-community@alyxone:1.0.121", - "hangar-xplorer-community@alyxone:1.0.122", - "sapsum@hostpoint.ch:0.0.0", - "sapsum@hostpoint.ch:0.0.1", - "sapsum@hostpoint.ch:0.0.2", - "sapsum@hostpoint.ch:0.0.3", - "sapsum@hostpoint.ch:0.0.4", - "sapsum@hostpoint.ch:0.9.3", - "sapsum@hostpoint.ch:0.9.4", - "sapsum@hostpoint.ch:0.9.5", - "sapsum@hostpoint.ch:0.9.6", - "sapsum@hostpoint.ch:0.9.7", - "amazon-tracker@fabian.local:0.7.0", - "{38f73884-d10b-4f26-a7c2-4711c4a40b76}:2.3.0", - "{38f73884-d10b-4f26-a7c2-4711c4a40b76}:2.3.1", - "roi-reader-view@local:9.7.2", - "bmiphmgeefijkfhdljnphjjkgffbhhpa@chrome-store-foxified--782130464:2.6.0", - "ggolfgbegefeeoocgjbmkembbncoadlb@chrome-store-foxified--782130464:13.39", - "fgoenlfbfnofepaodjepdhkoepoogedb@chrome-store-foxified--782130464:1.2", - "llpahfhchhlfdigfpeimeagojnkgeice@chrome-store-foxified-1471939747:4.0", - "bekdnjncnmgahgpcnbigleflagaodibf@chrome-store-foxified--782130464:4.5.3", - "epejdmjgfibjaffbmojllapapjejipkh@chrome-store-foxified--782130464:2.2.4", - "lkbkfblojdaocdljndhaopfglpmboeki@chrome-store-foxified--782130464:5.5", - "hbdpomandigafcibbmofojjchbcdagbl@chrome-store-foxified--782130464:3.10", - "cdoinklelehcpndgmcddkkdhibpoglnk@chrome-store-foxified--782130464:3.1", - "bohapeiooecafommnlaiccilacgmkaoc@chrome-store-foxified-1471939747:2.4", - "ljipkdpcjbmhkdjjmbbaggebcednbbme@chrome-store-foxified-1471939747:0.1.3", - "dfoegpibjpjpchgmjnmomelfnclbijnm@chrome-store-foxified-1471939747:1.0.7", - "pioclpoplcdbaefihamjohnefbikjilc@chrome-store-foxified-1471939747:6.12", - "all-mangas-reader@ryuu3rs.dev:0.7.1", - "pdc-site-bridge@local:3.0.9", - "pdc-site-bridge@local:3.1.0", - "adon-proxy-helper@adonmediagroup.io:2.0.1", - "adon-proxy-helper@adonmediagroup.io:1.0.2", - "amazon-tracker@fabian.local:0.8.0", - "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e9}:0.6.7", - "pdc-site-bridge@local:3.1.1", - "watched-marker-multi@opencode:1.1", - "watched-marker-multi@opencode:1.0", - "total-bookmarks-webext@opencode.local:1.0", - "@elvenar-helper-extension:8.6.2", - "pdc-site-bridge@local:3.1.4" - ] - }, - "schema": 1783622191530, - "key_format": "{guid}:{version}", - "stash_time": 1783643706106, - "id": "39c8e3ee-2b98-488c-83e2-59885eae09e3", - "last_modified": 1783643791125 - }, - { - "stash": { - "blocked": [ - "{97664243-9da4-487a-b318-664b9c9dd2a2}:0.2", - "{97664243-9da4-487a-b318-664b9c9dd2a2}:6.1.0", - "{97664243-9da4-487a-b318-664b9c9dd2a2}:6.1.1" - ], - "unblocked": [], - "softblocked": [ - "xianyu-goofish-assistant@gloqqa:1.0.21", - "autologin-skku-private-9821@my-addon-domain.local:0.0", - "{9fe44206-7d13-46cf-ba15-b3e663025dcc}:1.0.5", - "{9fe44206-7d13-46cf-ba15-b3e663025dcc}:1.0.6", - "macroforge@macroforge.dev:0.0.40", - "{b6721929-e3ec-4cdc-964a-cb38904adf24}:0.0.42", - "{b6721929-e3ec-4cdc-964a-cb38904adf24}:0.0.41", - "{b6721929-e3ec-4cdc-964a-cb38904adf24}:0.0.37", - "ozon-sku-uploader@qq2743553675.gmail.com:0.3.4", - "roi-reader-view@local:2.7.0", - "notes@dblv.com:1.0", - "notes@dblv.com:1.1", - "notes@dblv.com:1.2", - "notes@dblv.com:1.3", - "animetracker-gaspard@myself.com:1.2", - "odoo-iap@odoo.com:1.1", - "odoo-iap@odoo.com:1.0", - "videospeed@igrigorik.com:0.10.2", - "zendesk-userscripts@limango.com:0.2.0", - "bpaas-to-bbps@bloomberg.net:0.1.1", - "yanpaneltakvim@kendi-mailin-veya-adiniz.com:1.0", - "metricly@addon.local:3.0.3", - "{90a91e61-25f6-4d81-beb9-58c9418307a0}:0.1.0", - "offlinepass@offlinepass.local:1.1.0", - "{7a4048a8-0482-4fac-b392-a7d340990199}:0.1.3", - "{a581066c-2ca5-4217-87b1-d54718c243f5}:0.1.4", - "{0f434925-4209-4d37-ac1b-f7ceb194b5f8}:2.0.0", - "{0f434925-4209-4d37-ac1b-f7ceb194b5f8}:1.8.7", - "{e1bcf334-e5d3-4d25-9164-cc9273aa9946}:1.7.7", - "{95774d80-9858-4dc2-89fd-b0822edb09f3}:1.7.1", - "{95774d80-9858-4dc2-89fd-b0822edb09f3}:2.1.2", - "{0f434925-4209-4d37-ac1b-f7ceb194b5f8}:2.0.6", - "{e1bcf334-e5d3-4d25-9164-cc9273aa9946}:2.1.0", - "pouch-web-extension@lucashmsilva.com:1.2.0" - ] - }, - "schema": 1783600597303, - "key_format": "{guid}:{version}", - "stash_time": 1783622107170, - "id": "78bff104-843a-4ea2-b5fa-bef73fe14645", - "last_modified": 1783622191171 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "spfx-helper@example.com:1.0.3", - "ws-interceptor@example.com:1.2.0", - "pdc-site-bridge@local:3.0.6", - "{68d35953-0f5a-4f7f-b2fc-9ba2902f4dc2}:1.0", - "{d9fcf8c5-c567-41de-ae49-a27d72e91ef4}:1.0", - "movie-tracker-yourname@myself.com:1.0.0", - "video-touch-controller@local.extension:1.0", - "video-touch-controller@local.extension:1.1", - "video-touch-controller@local.extension:1.3", - "video-touch-controller@local.extension:1.4", - "video-touch-controller@local.extension:1.5", - "video-touch-controller@local.extension:1.6", - "video-touch-controller@local.extension:1.7", - "auto-screenshot-reader@local.dev:1.0", - "offlinepass@offlinepass.local:1.0.0", - "xianyu-goofish-assistant@gloqqa:1.0.20", - "waves-newtab@mantvydas.local:1.3", - "waves-newtab@mantvydas.local:1.2", - "dhl-tourpruefung@pflaum.de:11.0.0", - "waves-newtab@mantvydas.local:1.4", - "FlagTrace@github.qinxs:1.0.12", - "FlagTrace@github.qinxs:1.0.11", - "xfollowpro-sidebar@abulut-v766:7.6.7", - "xfollowpro-popup@abulut-v766:7.6.7", - "xfollowpro-popup@a-bulut-2026:7.6.5", - "lexis-ai-cert-evaluator@lexisnexis.at:0.1.8", - "lexis-ai-cert-evaluator@lexisnexis.at:0.1.9", - "lexis-ai-cert-evaluator@lexisnexis.at:0.1.10", - "lexis-ai-cert-evaluator@lexisnexis.at:0.1.11", - "lexis-ai-cert-evaluator@lexisnexis.at:0.1.12", - "lexis-ai-cert-evaluator@lexisnexis.at:0.1.13", - "{9fe44206-7d13-46cf-ba15-b3e663025dcc}:1.0", - "{9fe44206-7d13-46cf-ba15-b3e663025dcc}:1.0.1", - "{9fe44206-7d13-46cf-ba15-b3e663025dcc}:1.0.2", - "{9fe44206-7d13-46cf-ba15-b3e663025dcc}:1.0.3", - "{9fe44206-7d13-46cf-ba15-b3e663025dcc}:1.0.4" - ] - }, - "schema": 1783578986661, - "key_format": "{guid}:{version}", - "stash_time": 1783600507539, - "id": "aecc5e65-a977-424e-8488-5b4967493f88", - "last_modified": 1783600597041 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "pdc-site-bridge@local:2.8.0", - "pdc-site-bridge@local:2.9.1", - "this-is-john-testing@dealer.com:90.1.1", - "this-is-john-testing@dealer.com:90.1.2", - "GoogleSearch@NewTab:1.1", - "pdc-site-bridge@local:2.9.3", - "storygraphenhancementtoolsdev@gmail.com:4.3.1", - "pdc-site-bridge@local:2.9.4", - "{2081c29f-d698-4e87-b857-2b208dc02b5a}:1.0", - "{2081c29f-d698-4e87-b857-2b208dc02b5a}:2.0", - "pdc-site-bridge@local:2.9.5", - "pdc-site-bridge@local:2.9.6", - "{099ac8f0-6274-4d40-9cea-76f8c960d2be}:1.0", - "{a906fe56-1a81-4f98-9f88-18083748123c}:1.0", - "{fa322f54-1978-4413-9f9c-a642c1375cca}:1.0", - "pdc-site-bridge@local:2.9.8", - "pdc-site-bridge@local:2.9.9", - "pdc-site-bridge@local:3.0.0", - "inbound-tracker@martepro.amazon.com:6.3.0", - "pdc-site-bridge@local:3.0.1", - "consent-agent@example.com:0.1.0", - "consent-agent@example.com:0.1.1", - "web-to-word-converter@local:1.0", - "fill-helper-ext@local.wzk.dev:2026.6.30", - "pdc-site-bridge@local:3.0.3", - "{227332ba-ecd0-411f-ab19-ed7108451c95}:0.1.3", - "darkmode-scheduler@example.com:1.0", - "pdc-site-bridge@local:3.0.5" - ] - }, - "schema": 1783557411570, - "key_format": "{guid}:{version}", - "stash_time": 1783578906011, - "id": "a8357fbe-980e-489d-ac3d-8fb6a6990faf", - "last_modified": 1783578986332 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "twitch-proxy@me.de:1.0.11", - "twitch-proxy@me.de:1.0.10", - "twitch-proxy@me.de:1.0.9", - "twitch-proxy@me.de:1.0.8", - "twitch-proxy@me.de:1.2.2", - "twitch-proxy@me.de:1.2.1", - "twitch-proxy@me.de:1.2", - "ai-agent@firefox.addon:4.2.1", - "ehentai-redirect@example.com:1.0", - "ai-agent@firefox.addon:4.2.2", - "seo-suite@firefox.addon:4.3.0", - "better-brightspace@tyrus.user:1.1.0", - "{303828fb-5eed-4bd9-8c63-4548bf9c9665}:1.6.5", - "{303828fb-5eed-4bd9-8c63-4548bf9c9665}:1.6.1", - "{303828fb-5eed-4bd9-8c63-4548bf9c9665}:1.6.6", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.39", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.38", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.37", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.28", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.40", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.41", - "{b6721929-e3ec-4cdc-964a-cb38904adf24}:0.0.19" - ] - }, - "schema": 1783535816688, - "key_format": "{guid}:{version}", - "stash_time": 1783557309706, - "id": "41994743-b285-4437-b302-f8de342985b4", - "last_modified": 1783557411300 - }, - { - "stash": { - "blocked": [ - "bolt-scan-bolt@protools.co:9.18.6" - ], - "unblocked": [], - "softblocked": [ - "roblox-local-editor-v2@local:2.0.1", - "wocazureffextension@gmail.com:1.2", - "ytdlp_host@gernot.local:1.0", - "ytdlp_host@gernot.local:1.0.1", - "mix@mozilla.mozilla:0.70", - "mix@mozilla.mozilla:0.71", - "mix@mozilla.mozilla:0.72", - "mix@mozilla.mozilla:0.73", - "mix@mozilla.mozilla:0.74", - "mix@mozilla.mozilla:0.75", - "mix@mozilla.mozilla:0.76", - "mix@mozilla.mozilla:0.77", - "mix@mozilla.mozilla:0.78", - "mix@mozilla.mozilla:0.79", - "mix@mozilla.mozilla:0.80", - "mix@mozilla.mozilla:0.81", - "mix@mozilla.mozilla:0.82", - "mix@mozilla.mozilla:0.83", - "vineless_dg_edition@gmail.com:2.1.1", - "pachinko-collector@slot-predict.local:1.0", - "slopscan-webext@kity.wtf:0.9", - "instagram-dl-custom@localuser:2.4.8", - "solariutils@isasi.cnr.it:1.0.0", - "solariutils@isasi.cnr.it:1.0.1", - "{62dbeccc-5227-463d-b5cb-3c39ceee2ab8}:1.0.0", - "quick-link-highlighter@example.com:1.0.0", - "{5c8abdef-9748-4736-adfc-d6fc413c1bf7}:1.0.0", - "{5c8abdef-9748-4736-adfc-d6fc413c1bf6}:1.0.1", - "{5c8abdef-9748-4736-adfc-d6fc413c1bf6}:1.0.2", - "fkdfdiadf12@funxgo.com:12.1.0", - "fkdfdiadf12@funxgo.com:13.1.0", - "fkdfdiadf12@funxgo.com:13.3.0", - "fkdfdiadf13@funxgo.com:13.4.0", - "fkdfdiadf13@funxgo.com:14.4.0", - "vault-autofill@local:1.1.11", - "{0cb98d7c-045d-4938-8864-4d44737fdbb1}:1.1", - "vault-autofill@local:1.1.12", - "tag-consent-inspector-dev@tastieredigitali.it:1.0.7", - "tag-consent-inspector-dev@tastieredigitali.it:1.1.1", - "tag-consent-inspector-dev@tastieredigitali.it:1.1.2", - "tag-consent-inspector-dev@tastieredigitali.it:1.2.5", - "tag-consent-inspector-dev@tastieredigitali.it:1.3.0", - "tag-consent-inspector-dev@tastieredigitali.it:1.8.3" - ] - }, - "schema": 1783514284454, - "key_format": "{guid}:{version}", - "stash_time": 1783535710629, - "id": "bda8874e-1c94-4f73-a9cd-d8a47574a090", - "last_modified": 1783535816459 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "jotalink@jotalink.com:0.2.1", - "chzzk-anti-grid@local:1.0.1", - "chzzk-anti-grid@local:1.0.0", - "deadweight@eddiwan.com:1.0.0", - "@yt-better:1.0.1", - "@hide-yt-shorts-yeah:1.0.0", - "jirawd-wiki-export@example.com:1.0", - "{dde1e389-dbda-4f33-9e9c-502a045c33d3}:1.2.1", - "{eed58153-5293-4e1a-901f-08099e189831}:1.0", - "hello-world@abcd98:1.0", - "tabflow@example.com:2.2", - "tabliss-custom@local:2.5.0", - "notebooklmexport@extension:1.0.0", - "notebooklmexport@extension:1.1.0", - "notebooklmexport@extension:1.2.0", - "appnavi@gldjdbpbhhpcpimpiicmglaeeehegflh:4.5.2", - "jotalink@jotalink.com:0.4.0", - "0c0d3@nan.com:1.2.2", - "{42517fe3-5173-4c4c-a5cd-fcbbedb6b528}:1.0", - "{3017f928-771c-4116-beb7-07a227d96c60}:1.0.0" - ] - }, - "schema": 1783492601954, - "key_format": "{guid}:{version}", - "stash_time": 1783514187824, - "id": "8c3d12d0-6bf5-4680-abb2-327cac12099a", - "last_modified": 1783514284085 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "pdc-site-bridge@local:0.5.0", - "{d6d89e14-3d5f-486c-ac54-086e6fdeddd1}:1.0", - "pdc-site-bridge@local:0.6.0", - "pdc-site-bridge@local:0.7.0", - "{38f73884-d10b-4f26-a7c2-4711c4a40b76}:2.2.2", - "pdc-site-bridge@local:0.8.0", - "pdc-site-bridge@local:1.0.0", - "pdc-site-bridge@local:1.1.0", - "tab-volume-booster-voice-bass-7f3a9c2e@example.local:1.1.0", - "pdc-site-bridge@local:1.3.0", - "pdc-site-bridge@local:1.5.0", - "pdc-site-bridge@local:1.6.0", - "pdc-site-bridge@local:1.8.0", - "pdc-site-bridge@local:1.9.0", - "pdc-site-bridge@local:2.0.0", - "pdc-site-bridge@local:2.1.0", - "pdc-site-bridge@local:2.4.0", - "pdc-site-bridge@local:2.7.0", - "wget2-generator@abelodorico:0.1.0", - "wget2-generator@abelodorico:0.2.0", - "open-in-tabs@abelodorico:0.1.0", - "url-deduplicator@abelodorico:0.1.0", - "dcl-autofill@n-ota.click:1.5", - "{06d1b646-a6e5-4d2f-a1b5-7d44a67a7673}:1.0", - "{06d1b646-a6e5-4d2f-a1b5-7d44a67a7673}:1.1", - "smart-justify-v3@clean-fix:2.0.0", - "ff_addon@devotee.org:0.3.2", - "chromecast-ultimate@firefox:5.1.0", - "chromecast-ultimate@firefox:5.5.0", - "tab-age@tabs.extension:1.0" - ] - }, - "schema": 1783470992646, - "key_format": "{guid}:{version}", - "stash_time": 1783492507487, - "id": "db1c6126-1a2e-4d40-b59b-dc35299cd954", - "last_modified": 1783492601700 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "sfmc-power-tools@norlys.local:1.0.0", - "{f04ed1c7-a071-455b-bfb2-cedeaca9e2cb}:1.0", - "dailymotion-adblocker@binpanthu.gmail.com:1.0.0", - "fms-helper@earthlink.local:2.2", - "fms-helper@earthlink.local:2.3", - "fms-helper@earthlink.local:2.8", - "fms-helper@earthlink.local:2.9", - "{38f73884-d10b-4f26-a7c2-4711c4a40b76}:2.2.0", - "{38f73884-d10b-4f26-a7c2-4711c4a40b76}:2.2.1", - "syspass-autologin@eureka-technology.local:29.0", - "xianyu-goofish-assistant@gloqqa:1.0.12", - "{daf0dc96-6661-4166-9c73-b7a29f27612c}:1.0", - "vault-autofill@local:1.1.10", - "imgur-proxy@pixb.me:1.0.0", - "{7dea6561-e85e-4838-8ad8-ed55ac96b326}:0.2.0", - "instagram-helper@example.com:1.0.3", - "pdc-site-bridge@local:0.1.0", - "bouncer@feedfilter:1.0.4", - "pdc-site-bridge@local:0.2.0", - "pdc-site-bridge@local:0.3.0" - ] - }, - "schema": 1783449414676, - "key_format": "{guid}:{version}", - "stash_time": 1783470906510, - "id": "83a15087-c249-4069-8ace-65771e1ea26c", - "last_modified": 1783470992360 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "@online-internet-speed-test:6.4001", - "mdmok.a.mm.a.l0.6@gmail.com:1.0.0", - "tabsampler@example.com:1.0", - "{c3cb5906-967d-4286-9b83-b02249d81cfc}:1.3", - "{b5cf1ecb-fb66-4d0f-8965-61e57dd19b5c}:0.3.1", - "fox-decoupling-toggle@festo.com:1.2.1", - "fox-decoupling-toggle@festo.com:1.2.2", - "fox-decoupling-toggle@festo.com:1.2.3", - "fox-decoupling-toggle@festo.com:1.2.4", - "fox-decoupling-toggle@festo.com:1.2.5", - "fox-decoupling-toggle@festo.com:1.2.6", - "fox-decoupling-toggle@festo.com:1.2.7", - "fox-decoupling-toggle@festo.com:1.2.8", - "{4973c520-85e8-4ca2-9ca8-aab96a29d9f2}:1.0", - "{4973c520-85e8-4ca2-9ca8-aab96a29d9f2}:1.1", - "decodificar-personal@example.com:1.0", - "{646d0f04-a0e4-481c-806f-fb3e5f6896af}:1.0", - "{646d0f04-a0e4-481c-806f-fb3e5f6896af}:1.1", - "extension@resumestailor.com:1.0.0", - "extension@resumestailor.com:1.0.1", - "extension@resumestailor.com:1.1.0", - "slopscan-webext@kity.wtf:1.0", - "baseline@deacon.com:0.1.0", - "eagle-importer-fix@local-dev:3.4", - "baseline@deacon.com:0.1.1", - "video-touch-controller@local.extension:1.2", - "fast-tag-snap@webtools.example:9.14.22", - "fast-tag-snap@webtools.example:9.21.30", - "paws@reltim.org:0.1.2.1", - "paws@reltim.org:0.1.3", - "paws@reltim.org:0.1.3.1", - "paws@reltim.org:0.1.4", - "chatgpt-lag-fixer-unlocked@local:2.1.6", - "chronio-url-saver@chronioapp.com:1.3.3", - "chronio-url-saver@chronioapp.com:1.3.4", - "chronio-url-saver@chronioapp.com:1.3.5", - "chronio-url-saver@chronioapp.com:1.3.6", - "chronio-url-saver@chronioapp.com:1.3.7", - "chronio-url-saver@chronioapp.com:1.3.8", - "chronio-url-saver@chronioapp.com:1.3.9", - "knockoff-kk@selfhosted.local:0.1.0", - "comix-downloader@n3uralcreativity.github.io:4.2.2", - "visual-list-comparator@example.com:1.0.0", - "hmis-visual-enhancement@clintjohnson:0.9.3", - "MySkladExtension@Name1:1.14", - "antitwitch@extension:1.3.0", - "antitwitch@extension:1.2.0", - "antitwitch@extension:1.1.1", - "antitwitch@extension:1.1.0" - ] - }, - "schema": 1783427793006, - "key_format": "{guid}:{version}", - "stash_time": 1783449308645, - "id": "0324aa27-9f91-4a1a-a5d9-dd84f69c49b1", - "last_modified": 1783449414301 - }, - { - "stash": { - "blocked": [ - "flex-lab-save@foxplugin.co:6.10.24", - "flex-lab-save@foxplugin.co:7.10.30", - "flex-lab-save@foxplugin.co:8.10.30", - "adb@adb-x.net:1.2", - "adab@adb-x.net:1.2" - ], - "unblocked": [], - "softblocked": [ - "tab-read-time@tabs.extension:1.0", - "DHL@bobbomers.nl:1.0.0", - "DHL@bobbomers.nl:1.0.1", - "corner-reminder@local:1.0.1", - "corner-reminder@local:1.0.0", - "DHL@bobbomers.nl:1.0.2", - "extension_plc_site_ID2@example.com:1.3", - "extension_plc_site_ID3@example.com:1.4", - "ytdlp-runner@pseudostage:1.0.0", - "ytdlp-runner@pseudostage:1.0.1", - "health-capsule-doctor-assistant-universal@yuxin:1.1", - "health-capsule-doctor-assistant-universal@yuxin:1.2", - "bmb-extension@converted.local:0.1.6", - "bmb-extension@converted.local:0.1.7", - "{74E779F3-B261-4C7E-B840-77563010FCE6}:0.1.8", - "deseret-title-plus@fix.page.private:0.1.8", - "google-scholar-pdf-reader@example.local:0.5.2", - "api-sender@example.com:1.0", - "example@addon-example.com:1.0", - "example2@addon-example.com:2.0", - "jira-hide-persons@smartaudit:1.0", - "teams-participants-extractor@example.com:1.0", - "block-youtube@example.local:1.0", - "block-youtube@example.local:1.1", - "block-youtube@example.local:1.2", - "{f04ed1c7-a071-455b-bfb2-cedeaca9e2cb}:2.0" - ] - }, - "schema": 1783406192048, - "key_format": "{guid}:{version}", - "stash_time": 1783427706632, - "id": "a871a7b5-0317-4439-8c7f-6b769d5da047", - "last_modified": 1783427792615 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "scroll-ocr-overlay@charleszhang:1.5.18", - "scroll-ocr-overlay@charleszhang:1.5.22", - "bidassist@pilotbidpro.com:1.1.0", - "tactile-web-early@example.com:1.3.1", - "scroll-ocr-overlay@charleszhang:1.5.25", - "{46651213-495c-4bea-84d1-474a4f26f573}:1.0.0", - "manga-visual-bookmarks@extension:1.2", - "0wl@princengare.github.io:0.1.0" - ] - }, - "schema": 1783384617394, - "key_format": "{guid}:{version}", - "stash_time": 1783406106630, - "id": "dc1a4166-d08e-47aa-9715-ae7c4d3d01b5", - "last_modified": 1783406191851 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{b6721929-e3ec-4cdc-964a-cb38904adf24}:0.0.18", - "{b6721929-e3ec-4cdc-964a-cb38904adf24}:0.0.16", - "{b6721929-e3ec-4cdc-964a-cb38904adf24}:0.0.14", - "{b6721929-e3ec-4cdc-964a-cb38904adf24}:0.0.13", - "{b6721929-e3ec-4cdc-964a-cb38904adf24}:0.0.12", - "{b6721929-e3ec-4cdc-964a-cb38904adf24}:0.0.11", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.17", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.16", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.15", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.13", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.11", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.9", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.2", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.10", - "claude-usage@local.extension:1.0.0", - "{d694e83c-e52d-4aa1-8bf3-952c3d5c8bef}:1.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.26", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.22", - "{4c663351-fbfd-4fc2-9c0c-1066e2da8fc0}:2.1.4", - "dinopolicy-youtube-whitelist@local:0.1.1", - "dinopolicy-youtube-whitelist@local:0.1.2", - "dinopolicy-youtube-whitelist@local:0.1.3", - "dinopolicy-youtube-whitelist@local:0.1.4", - "appong-bridge@4apps.io:0.1.10" - ] - }, - "schema": 1783363006034, - "key_format": "{guid}:{version}", - "stash_time": 1783384516405, - "id": "abe3b337-8c1a-4819-acba-2336c874c573", - "last_modified": 1783384617145 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "bluesign-extractor@local.tool:1.7", - "bluesign-extractor@local.tool:1.8", - "ferie-xitf@lbacchet:1.2.0", - "ferie-xitf@lbacchet:1.2.1", - "viewport-size-inspector@evomark.co.uk:1.1.0", - "floating-note@example.com:1.0", - "{4deb8e0b-6d9f-4bfd-b520-7e08a2703e7c}:1.0.7", - "fast-contact-linker@local.addon:1.6", - "qbridge@local.nopublish:0.1.0", - "scroll-ocr-overlay@charleszhang:1.5.12", - "scroll-ocr-overlay@charleszhang:1.5.13", - "greythr-tracker@greythr-extension:1.1.5", - "scroll-ocr-overlay@charleszhang:1.5.14", - "scroll-ocr-overlay@charleszhang:1.5.16", - "scroll-ocr-overlay@charleszhang:1.5.17", - "magnetgrabber@pimmy.local:1.0.0", - "ytdlp_local_downloader@yourdomain.com:1.1", - "ytdlp_local_downloader@yourdomain.com:1.2", - "start-page@makadip.github:1.0.0" - ] - }, - "schema": 1783341415227, - "key_format": "{guid}:{version}", - "stash_time": 1783362906753, - "id": "04393c4e-2d2a-45fe-a2d3-9e34b44cf7f2", - "last_modified": 1783363005670 - }, - { - "stash": { - "blocked": [ - "gear-save-tip@extrakits.example:5.5.5", - "gear-save-tip@extrakits.example:11.10.10" - ], - "unblocked": [], - "softblocked": [ - "timetracker@daj.co.jp:1.0.0", - "scroll-ocr-overlay@charleszhang:1.5.9", - "scroll-ocr-overlay@charleszhang:1.5.10", - "{810be5a8-0fc3-4e02-834b-4ce9e797708f}:1.0", - "tabautorefresh@alexander-pilz.de:1.0", - "scroll-ocr-overlay@charleszhang:1.5.11", - "{89dacfe7-22fd-4274-b63b-0d6111b1e577}:6.0.3", - "{89dacfe7-22fd-4274-b63b-0d6111b1e577}:6.0.4", - "linxoextract@lesprost.fr:1.8.3", - "linxoextract@lesprost.fr:1.8.2", - "linxoextract@lesprost.fr:1.8.1", - "linxoextract@lesprost.fr:2.0.0", - "gmail-open-tracker@stefanodelia:1.0.0", - "teams-office-redirect@yannick.local:0.5.1", - "twitch-vod-downloader@voddownloader.com:3.26", - "scoutfetch@scouting:1.8.0", - "linxoextract@lesprost.fr:2.1", - "dev-ai-bridge-v3@local.agent:3.0.1", - "dev-ai-bridge-v3@local.agent:3.1.0", - "github-chinese-localization@caodan.io:2.3.5", - "betterhelper@temporary-addon.local:2.109.0", - "{d29ff586-c1d3-4a20-9ce1-29c0299bb757}:1.0" - ] - }, - "schema": 1783319790668, - "key_format": "{guid}:{version}", - "stash_time": 1783341309203, - "id": "e08ad57e-a225-4a54-8f18-53a2be92c945", - "last_modified": 1783341414976 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{2bb089ea-6ae9-4c05-8258-006fe2ff5d22}:0.1", - "enhancer@goldenfox.com:26.1.0", - "prism-ai-dungeon@zoocata:0.7.0", - "ynu-task-check@example.local:1.0.0", - "prism-ai-dungeon@zoocata:0.7.2", - "prism-ai-dungeon@zoocata:0.7.3", - "prism-ai-dungeon@zoocata:0.7.4", - "prism-ai-dungeon@zoocata:0.7.5", - "GrabLargestImageFromTabs@OpenAddons.null:2.0", - "prism-ai-dungeon@zoocata:0.7.7", - "{54c203b1-e57c-46ce-9ab8-dc59619eaf4f}:2.0", - "{ee312389-4a55-4d49-aa90-2fe1bdcd4971}:1.0", - "{ee312389-4a55-4d49-aa90-2fe1bdcd4971}:2.0", - "{8c536207-83b8-4ff0-abcf-5df2cc8b199d}:1.0", - "{8c536207-83b8-4ff0-abcf-5df2cc8b199d}:2.0", - "e6-button-reorder@loogguitars.com:1.0", - "e6-button-reorder@loogguitars.com:1.1", - "{e0d16eb7-8f52-4f9f-a93a-12246f2a4305}:1.0", - "scroll-ocr-overlay@charleszhang:1.5.8" - ] - }, - "schema": 1783298204419, - "key_format": "{guid}:{version}", - "stash_time": 1783319705668, - "id": "d1e1e04c-3b1c-4659-96d9-ed36618ceeed", - "last_modified": 1783319790491 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{06f37c63-b15d-46fc-9199-490e382e531b}:1.0", - "xianyu-goofish-assistant@gloqqa:1.0.10", - "{8cf62b6b-5896-414c-b752-2d1c494f01cd}:1.0", - "{1f188f71-8766-4fa2-86e5-c85abdc93be5}:1.3.2", - "{e655cd88-db72-416e-9b52-56575bdaa44d}:1.0.0", - "{cfd327a7-690e-4276-b2a1-423845870d4f}:1.0.0", - "{81c454e7-3178-4b1d-9e81-617b0563194e}:1.22.1pre6421", - "epaper-eink-mode@ddd4be.paper:1.3.1", - "clipae@extensao:1.1", - "discord-message-deleter@ext.com:1.0.0" - ] - }, - "schema": 1783276635262, - "key_format": "{guid}:{version}", - "stash_time": 1783298107104, - "id": "2380b2fd-e81f-4880-ba1c-5deb7e9951e9", - "last_modified": 1783298204149 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "scroll-ocr-overlay@charleszhang:1.5.7", - "passmgr@maxime.projets:1.0.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.92", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.96", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.91", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.89", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.88", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.80", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.87", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.81", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.79", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.78", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.77", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.75", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.71", - "ytdlp-extension@your-domain.com:2.5", - "ytdlp-extension@your-domain.com:3.0", - "{7259b755-e6d5-4928-a5ba-68b797baa8fc}:1.0", - "{485da0ab-0363-4a90-a1f7-db3fb029505f}:1.0", - "{be74cf05-3ef1-4094-93b1-133421610b31}:7.7", - "extension@revolut.com:3.9.3", - "rosszlanyok-szexguru-helper@s11.digital:0.1.1", - "hydra-download-catcher@raunak.local:2.0.0", - "sn-commands@arinraj09:1.0.0", - "sn-commands@arinraj09:2.0.0", - "sn-commands@arinraj09:3.0.0", - "sn-commands@arinraj09:4.3.0", - "sn-commands@arinraj09:4.3.2", - "sn-commands@arinraj09:4.3.3", - "sn-commands@arinraj09:4.5.0", - "extension@revolut.com:3.9.4", - "extension@revolut.com:3.9.5", - "extension@revolut.com:3.9.6", - "{40de8dcd-78a2-4c4c-93c3-667852a3a607}:1.0", - "bubble-board@flukefam.cc:0.1.0", - "chronio-url-saver@chronioapp.com:1.3.2", - "{6ccb19cf-2c41-460f-9d54-8f16e036bafa}:1.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.30.1" - ] - }, - "schema": 1783254987474, - "key_format": "{guid}:{version}", - "stash_time": 1783276520014, - "id": "74091d08-dc42-40e8-acc3-acbb3c7cf640", - "last_modified": 1783276634954 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{3c5b0d5a-8e58-4a6c-81ad-f53d9356dd56}:3.2.6", - "{3c5b0d5a-8e58-4a6c-81ad-f53d9356dd56}:3.2.7", - "image-tools@scorvus99:2026.7.5", - "scroll-ocr-overlay@charleszhang:1.5.6", - "scroll-ocr-overlay@charleszhang:1.5.5", - "scroll-ocr-overlay@charleszhang:1.5.4", - "{543AB64D-9172-4850-B3B2-55D05FBC3DF1}:1.0.0", - "dartmeter-autodarts-bridge@k4m1s:0.3.2", - "{868bd062-c33a-4854-884b-03b402022a2c}:1.0.2", - "{868bd062-c33a-4854-884b-03b402022a2c}:1.0.3", - "{868bd062-c33a-4854-884b-03b402022a2c}:1.0.4", - "{94577dcb-b4af-4a8d-bdd1-e5fc0fda82d3}:1.0.1", - "{94577dcb-b4af-4a8d-bdd1-e5fc0fda82d3}:1.0.1.1", - "{94577dcb-b4af-4a8d-bdd1-e5fc0fda82d3}:1.0.1.3", - "{94577dcb-b4af-4a8d-bdd1-e5fc0fda82d3}:1.0.1.4resigned1", - "proxy-switcher@me.de:1.0.4", - "proxy-switcher@me.de:1.0.5", - "proxy-switcher@me.de:1.0.6", - "proxy-switcher@me.de:1.0.8", - "proxy-switcher@me.de:1.1", - "proxy-switcher@me.de:1.2", - "proxy-switcher@me.de:1.3", - "proxy-switcher@me.de:1.4", - "proxy-switcher@me.de:1.5", - "proxy-switcher@me.de:1.6", - "ff-url-hook@sistematico:1.0.0", - "ff-url-hook@sistematico:1.1.0", - "ff-url-hook@sistematico:1.2.0", - "chronio-url-saver@chronioapp.com:1.0.0", - "chronio-url-saver@chronioapp.com:1.1.1", - "chronio-url-saver@chronioapp.com:1.1.2", - "{7115e022-2875-4e27-b593-c6e80ba17642}:1.0", - "{63a31575-ff12-4994-bf5f-17c18d130b71}:1.0" - ] - }, - "schema": 1783233402839, - "key_format": "{guid}:{version}", - "stash_time": 1783254906205, - "id": "347d5e8b-b8f9-4647-af65-0f3553be9e42", - "last_modified": 1783254986989 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{A1497286-1BFA-4D2B-8D18-298C0A351C45}:1.0.0", - "{380447dc-e0a7-4b81-b5b9-84e9c73493e0}:1.0", - "logindefense@logindefense.com:3.31", - "horrorblocker@yourdomain.local:1.0", - "cps@hcode.me:1.0.1" - ] - }, - "schema": 1783211794837, - "key_format": "{guid}:{version}", - "stash_time": 1783233307220, - "id": "728da3f4-2edf-4fa8-8ecd-0cba32ac482b", - "last_modified": 1783233402690 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "arca-hoteles@example.com:1.0.0", - "avalon@avalon.dev:0.1.0", - "scroll-ocr-overlay@charleszhang:1.5.1", - "scroll-ocr-overlay@charleszhang:1.5.2", - "scroll-ocr-overlay@charleszhang:1.5.3", - "helix-nexxt-assistent@kern-tools.local:1.0.1", - "helix-nexxt-assistent@kern-tools.local:1.0.2", - "duplicate-tabs-closer-android@ea.dev:4.2.8" - ] - }, - "schema": 1783190216346, - "key_format": "{guid}:{version}", - "stash_time": 1783211706838, - "id": "c1aabf36-4d66-4535-ad4e-bec1b8a50cf7", - "last_modified": 1783211794697 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{28b5b54a-f3d9-4c13-b368-e9aefa229b58}:2.2", - "swiftdial@mscript.ru:63", - "twitch-clip-downloader@gaston-boerries.local:1.0.0", - "{28b5b54a-f3d9-4c13-b368-e9aefa229b58}:2.4", - "bleeelcpenoboaoodilaaapgbgjdjdaj@chrome-store-foxified-1998025959:1.1.1", - "shortscut@christopheraleroux.dev:1.0.0", - "api-auto-checkin@example.local:1.30.5", - "ggolfgbegefeeoocgjbmkembbncoadlb@chrome-store-foxified--920186101:12.112", - "tabcount@example.com:2.0.1", - "notes-extension@yourdomain.com:1.0.0", - "melontranslate@jamielgbr:0.1.0", - "melontranslate@jamielgbr:0.1.0.1", - "melontranslate@jamielgbr:0.1.1", - "melontranslate@jamielgbr:0.2.0", - "melontranslate@jamielgbr:0.2.1", - "melontranslate@jamielgbr:0.2.2.1", - "melontranslate@jamielgbr:0.2.2.2", - "melontranslate@jamielgbr:0.3.0.1", - "melontranslate@jamielgbr:0.3.1", - "melontranslate@jamielgbr:0.3.2", - "melontranslate@jamielgbr:0.4.0", - "melontranslate@jamielgbr:0.4.0.1", - "detector-webs-falsas@example.com:1.0.1", - "no-more-shorts@ytb.com:0.1" - ] - }, - "schema": 1783168589174, - "key_format": "{guid}:{version}", - "stash_time": 1783190112689, - "id": "cf261778-e496-40b2-b996-972d66aeec14", - "last_modified": 1783190215966 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "chronoshift@asafadd.extensions:1.2", - "video-resource-sniffer@example.local:0.1.0", - "{bcb01f61-8036-4b30-b653-31f849798c1a}:1.0", - "{bcb01f61-8036-4b30-b653-31f849798c1a}:1.1", - "fn-connect@5ddd.com:0.0.4", - "siyuan-firefox-unofficial@azlanzala.savior:1.14.1", - "{dfae882b-945d-4240-a8ec-e5e8059307ec}:1.0", - "mintdm@mintdm.app:1.1.2", - "scroll-ocr-overlay@charleszhang:1.4.5", - "scroll-ocr-overlay@charleszhang:1.4.4", - "scroll-ocr-overlay@charleszhang:1.4.3", - "scroll-ocr-overlay@charleszhang:1.4.2", - "gear-optimizer-helper@local:1.1.2", - "youtube-focus@pabloqiu18:1.0.0", - "youtube-focus@pabloqiu18:1.0.1", - "{72af0acd-c911-4091-aede-8861be8a89bf}:1.0", - "{cbffc527-cfd5-42ec-b98f-d651d7ac98f8}:1.5", - "{cbffc527-cfd5-42ec-b98f-d651d7ac98f8}:1.69", - "{28b5b54a-f3d9-4c13-b368-e9aefa229b58}:2.1", - "@user-script-manager:0.0.2" - ] - }, - "schema": 1783146988278, - "key_format": "{guid}:{version}", - "stash_time": 1783168506468, - "id": "27f06bea-b47f-470b-b336-096e4060620f", - "last_modified": 1783168588915 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "human-typer@example.local:0.8.0", - "human-typer@example.local:1.0.0", - "firefox@bramble.app:1.0.0", - "vault-autofill@local:1.1.9", - "FlagTrace@github.qinxs:1.0.10", - "roi-reader-view@local:3.5.0", - "roi-reader-view@local:3.4.0", - "roi-reader-view@local:3.3.0", - "roi-reader-view@local:3.2.0", - "roi-reader-view@local:2.1.0", - "roi-reader-view@local:2.2.0", - "roi-reader-view@local:2.3.0", - "roi-reader-view@local:2.4.0", - "roi-reader-view@local:2.5.0", - "roi-reader-view@local:2.6.0", - "roi-reader-view@local:3.1.0", - "roi-reader-view@local:3.0.0", - "roi-reader-view@local:2.9.0", - "roi-reader-view@local:2.8.0", - "download-station-synology@local-conversion.example:3.8.5", - "gear-optimizer-helper@local:1.1.1", - "caption-visualizer@yourname.com:1.8", - "yt-channel-hover@yourdomain.com:2.0", - "bitchute-vol-scroll-v1@yourname.com:1.1", - "extensionmanager-portable@yourdomain.com:9.5.2", - "zenfocusmuter@local.addon:1.0" - ] - }, - "schema": 1783125397315, - "key_format": "{guid}:{version}", - "stash_time": 1783146905653, - "id": "3029c8c1-51f5-4415-8b1b-fce580eb00d5", - "last_modified": 1783146988011 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{a09c7d5e-4a1f-4721-b570-c601e178c8fa}:20241030.1130", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.2", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.2.1", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.3.1", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.3.3", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.3.4", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.3.5", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.3.6", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.3.7", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.3.8", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.4.0", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.4.1", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.4.2", - "{8a2b4c6d-0e1f-9c3d-7b5e-f8a1d0c2e3f4}:0.4.3", - "{8cd4c7d6-737b-4bd4-b0d8-2b52188ea5d4}:1.0", - "{90db2642-8fac-411e-9d4c-540e6b4b3f0a}:1.0", - "{d78b555e-e82f-475c-952c-b96b106ef286}:1.0", - "{56a6604b-9784-4bca-9777-5f1e029e7eea}:1.0", - "{50f872c1-2041-44a5-9b93-58f36385ebf8}:1.0", - "{79ea6be4-ac36-4110-a4db-4361624bfddc}:1.0", - "gear-optimizer-helper@local:1.0.2", - "zerodelay@local:1.1", - "gear-optimizer-helper@local:1.1.0", - "fingerprintdetector@mr-r3b00t.github.io:1.0.0", - "scroll-ocr-overlay@charleszhang:1.4.1", - "scroll-ocr-overlay@charleszhang:1.3.4", - "email-current-page@bert-local:1.4.0", - "email-current-page@bert-local:1.5.0", - "email-current-page@bert-local:1.6.0", - "email-current-page@bert-local:1.7.0", - "{75cc5529-5354-4681-8e21-8124fdc908cf}:1.0", - "firefox@bramble.app:0.1" - ] - }, - "schema": 1783103794795, - "key_format": "{guid}:{version}", - "stash_time": 1783125312970, - "id": "bf007590-cf86-4598-a779-11130a6073e4", - "last_modified": 1783125397000 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "fdot-mac-helper@helper:4.0.5", - "fdot-mac-helper@helper:4.0.4", - "fdot-mac-helper@helper:4.0.3", - "fdot-mac-helper@helper:4.0.2", - "fdot-mac-helper@helper:4.0.1", - "assistent@kinderarztpraxis-suedvorstadt.de:0.1.0", - "{62a220b4-2c4c-4fe7-8cdf-28a3bab9c996}:1.0", - "joao@gruposgcor.com.br:1.1.11", - "{c526b5e4-54c0-40c5-9a33-b858aea8ed6e}:1.0", - "kick-container-sync@local:1.0.0", - "kick-container-sync@local:1.0.2", - "{11311fb0-d551-49e2-83b3-dbc008076aa1}:1.4", - "magnolia@12.34:4.3.9.1", - "{2eafbd06-e1ec-4461-8ca4-1a04cd092720}:1.0.0", - "{c2375415-96e5-435f-b799-f83a43a7494e}:0.0.1", - "{980c365e-b2fc-4c20-a904-fe851b3032cd}:0.0.1", - "{0564c499-cb0a-42c9-88a8-ec65a28aa32d}:1.0.0", - "{14f27bf3-bca1-41a0-80d6-c5319e3b6b2e}:1.0.0", - "minimal-startpage@yourdomain.local:1.1", - "bet-reader@ubiqanalytics.com:0.1.0", - "quick-reply-constructor@example.local:0.1.0", - "gifter@gifter.app:1.0.0", - "gifter@gifter.app:1.0.1" - ] - }, - "schema": 1783082188658, - "key_format": "{guid}:{version}", - "stash_time": 1783103707301, - "id": "bcb19e26-7f3b-4101-bddb-6c6a4d3b4f2e", - "last_modified": 1783103794623 - }, - { - "stash": { - "blocked": [ - "{ceca0ab7-7539-41db-a34d-8c202a6b3717}:1.2.1", - "{ceca0ab7-7539-41db-a34d-8c202a6b3717}:1.0.7", - "{c35967f1-8c76-428c-915f-6dc2633e1b64}:8.0.0.6", - "{c35967f1-8c76-428c-915f-6dc2633e1b64}:9.0.0.0", - "{ceca0ab7-7539-41db-a34d-8c202a6b3717}:1.2.2" - ], - "unblocked": [], - "softblocked": [ - "bookmark-origin-tab-grouper@jaltis.be:1.8.0", - "bookmark-origin-tab-grouper@jaltis.be:1.9.1", - "bookmark-origin-tab-grouper@jaltis.be:1.9.2", - "bookmark-origin-tab-grouper@jaltis.be:1.10.0", - "bookmark-origin-tab-grouper@jaltis.be:1.11.0", - "bookmark-origin-tab-grouper@jaltis.be:1.11.1", - "bookmark-origin-tab-grouper@jaltis.be:1.12.0", - "bookmark-origin-tab-grouper@jaltis.be:1.13.0", - "{9f2cd0ba-dc8b-45a6-8f0b-6f8d29d68ecf}:1.0", - "{9f2cd0ba-dc8b-45a6-8f0b-6f8d29d68ecf}:2.0", - "{13119dca-0286-4956-8e5c-9092a2f39ad3}:1.0", - "leetsync-react-app@narvin.github.io:0.0.5", - "passbank@local.extension:1.0.0", - "just-bro@malopez.dev:0.4.0", - "just-bro@malopez.dev:0.4.1", - "ai-answers@userextension:2.4", - "{97cb09fb-6dc4-4c45-9812-79e3aa20f1ed}:1.0", - "{1b05b5f7-f45f-4365-97de-e09e156ba5f1}:1.0" - ] - }, - "schema": 1783060639597, - "key_format": "{guid}:{version}", - "stash_time": 1783082106109, - "id": "c7ded073-4ce0-438b-a90e-9114961e7081", - "last_modified": 1783082188375 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "monitor-multi-olx-pro@local-addon:4.6", - "monitor-multisite-olx-zap-premium@addon-system:6.1", - "guardian-of-history@a66.com:1.0", - "xproxy@local:9.4.1", - "webtunes-importer@matteob.dev:1.0.0", - "wiki-helper-pro@vrmocostarica.cc:4.1", - "ecoveridian-risithk@ecoveridian.org:2.0.0", - "ecoveridian-risithk@ecoveridian.org:2.4.0", - "ecoveridian-risithk@ecoveridian.org:2.5.0", - "fullscreen-trigger@example.com:1.0", - "{a7f2c94e-5b8d-4f9a-9c21-8e4b5d6f7a9c}:1.2", - "{a7f2c94e-5b8d-4f9a-9c21-8e4b5d6f7a9c}:1.0" - ] - }, - "schema": 1783038989045, - "key_format": "{guid}:{version}", - "stash_time": 1783060554739, - "id": "28b31d98-ffdc-4563-b83a-47fad57b3bea", - "last_modified": 1783060639377 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "pixer@example.com:4.2", - "kellercv2@security.app:2.0", - "proxy-switcher@me.de:1.0", - "proxy-switcher@me.de:1.0.1", - "proxy-switcher@me.de:1.0.2", - "proxy-switcher@me.de:1.0.7", - "proxy-switcher@me.de:1.0.3", - "proxy-switcher@me.de:1.0.9", - "trava-senhas-debug@conlicitacao.com.br:0.1.2", - "trava-senhas-teste@conlicitacao.com.br:0.1.2", - "mindful-pause@localextensions.com:1.0.0", - "{9cab3f84-1557-4399-b699-be7c29e44af8}:1.0", - "{9cab3f84-1557-4399-b699-be7c29e44af8}:2.0", - "mia-scraper@danexis.com:0.1.7", - "zen-bookmark-dashboard@local:0.1.1", - "{208992a4-71a8-47a8-8172-22e863060aef}:1.0", - "{208992a4-71a8-47a8-8172-22e863060aef}:1.1", - "{b5a5c156-34b7-4767-8593-d4a1c03fb39b}:0.9603", - "{b5a5c156-34b7-4767-8593-d4a1c03fb39b}:0.9602", - "{b5a5c156-34b7-4767-8593-d4a1c03fb39b}:0.9601", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.69", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.68", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.67", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.66", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.63", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.62", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.22", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.58", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.50", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.60", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.49", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.44", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.42", - "yahoo-lock@yourdomain.com:1.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.40", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.25", - "url-lock@7f9d3c21a84b5e6d92c1f8a73e4b0d5f:1.0", - "my-personal-vk-styles@local:2.0.9.1", - "{254c5fb2-fd90-49e5-8d23-84d2b8934d53}:1.0", - "{254c5fb2-fd90-49e5-8d23-84d2b8934d53}:1.1", - "{254c5fb2-fd90-49e5-8d23-84d2b8934d53}:1.2", - "{254c5fb2-fd90-49e5-8d23-84d2b8934d53}:1.3", - "{254c5fb2-fd90-49e5-8d23-84d2b8934d53}:2.0", - "socks5-proxy@firefox-socks5.local:1.2.6", - "socks5-proxy@firefox-socks5.local:1.2.5" - ] - }, - "schema": 1783017400751, - "key_format": "{guid}:{version}", - "stash_time": 1783038906215, - "id": "137c2cb1-93da-4171-8331-ceb51073a146", - "last_modified": 1783038988886 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "mia-scraper@danexis.com:0.1.0", - "socks5-proxy@firefox-socks5.local:1.0.2", - "tabpurehome@datathink.top:1.2.0", - "mia-scraper@danexis.com:0.1.2", - "socks5-proxy@firefox-socks5.local:1.1.7", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.55", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.54", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.53", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.57", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.48", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.41", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.34", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.33", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.28", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.19", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.6", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.9", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.7", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.14", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.12", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.11", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.11", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.10", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.14", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.13", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.12", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.8", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.10", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.13", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.9", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.4", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.18", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.27.8", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.1", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.2", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.3", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.5", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.6", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.7", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.28.8", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.15", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.16", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.29.17", - "{cb4e9bd7-a555-48c0-baea-1d9a8cc42aac}:1.0.1", - "{a18d54f2-686d-4973-a168-8ca60e8d5d84}:1.0.1", - "{a18d54f2-686d-4973-a168-8ca60e8d5d84}:1.0.2", - "finflowqueue@richthinking.local:1.0.0", - "kmeysam84@yahoo.com:1.2", - "steam-auto-billing@extension:3.0.0", - "ai-usage-monitor@example.com:1.0.0", - "trava-senhas@conlicitacao.dev:0.1.0", - "{ceca0ab7-7539-41db-a34d-8c202a6b3717}:1.2.1", - "{ceca0ab7-7539-41db-a34d-8c202a6b3717}:1.0.7", - "{c35967f1-8c76-428c-915f-6dc2633e1b64}:8.0.0.6", - "mia-scraper@danexis.com:0.1.3", - "proscraper333@codester.com:11.2.0", - "recipe2md@kerezovic.de:0.4.0", - "recipe2md@kerezovic.de:0.4.1", - "recipe2md@kerezovic.de:0.4.2", - "recipe2md@kerezovic.de:0.4.3", - "mia-scraper@danexis.com:0.1.4", - "mia-scraper@danexis.com:0.1.5", - "xianyu-goofish-assistant@gloqqa:1.0.9", - "suzidokoro@gmail.com:1.0.1.0", - "suzidokoro@gmail.com:1.0.2.0", - "suzidokoro@gmail.com:1.0.5.0", - "mia-scraper@danexis.com:0.1.6", - "tanium-vnc@Bosselman.com:1.0.0", - "igstoryviewer-lite@local.personal:0.2.2", - "vn3-check-for-booth@sn-store.org:1.0.0", - "igstoryviewer-lite@local.personal:0.2.3", - "michellod@infiload.extension:1.0.0" - ] - }, - "schema": 1782995814266, - "key_format": "{guid}:{version}", - "stash_time": 1783017306943, - "id": "55bcc963-3c86-4949-8ee0-b61b52c2efee", - "last_modified": 1783017400462 - }, - { - "stash": { - "blocked": [ - "vpngo@vpngo.com:1.1", - "vpngo@vpngo.com:1.2", - "vpngo@vpngo.com:1.3.1", - "vpngo@vpngo.com:1.3.2", - "vpngo@vpngo.com:1.3.3", - "vpngo@vpngo.com:1.3.4", - "max-free-vpn@extensions.local:1.2", - "max-free-vpn@extensions.local:1.3", - "max-free-vpn@extensions.local:1.4", - "vpn7-firefox@extensions.local:1.0", - "vpn7-firefox@extensions.local:1.1", - "vpn7-firefox@extensions.local:1.2", - "vpn7-firefox@extensions.local:1.3", - "{5fe4a982-bad3-4404-866e-b7e526621cf2}:1.0", - "{5fe4a982-bad3-4404-866e-b7e526621cf2}:1.1" - ], - "unblocked": [], - "softblocked": [ - "offline-text-extractor@local.tool:1.0.0", - "offline-text-extractor@local.tool:1.0.3", - "fjnbnpbmkenffdnngjfgmeleoegfcffe@chrome-store-foxified-4173279194:1.7.9", - "nazeka@ltrcao:0.4.7.1", - "nazeka@ltrcao:0.4.7.2", - "buscar-jsys@edicomgroup.com:1.0", - "browse-them-all@example.local:1.0.0", - "buscar-jsys-2025@edicomgroup.com:1.1", - "buscar-jsys-2025@edicomgroup.com:1.0", - "jira-deda-tools@deda-next.it:26.181.1", - "{f172cfe3-e671-4ab3-bdcd-764baf64d1dd}:0.1.1", - "{8292f392-ec36-4fbd-bc04-5364f282209e}:1.0", - "{5275db75-c7c4-4eff-9c6c-8a7e4e976578}:1.0", - "{28974f0d-bc42-4c2d-a8d4-8f006045f143}:1.0", - "{1c55c33b-3c59-460d-b21e-f611634ab2b4}:1.0", - "{c27c30f6-6081-4440-9837-03e947596a07}:1.0", - "creatio-search-assistant@earthlink.iq:1.0", - "{52128dd7-68ce-4a0b-bd94-c5ca5fcfce52}:1.1.0", - "{52128dd7-68ce-4a0b-bd94-c5ca5fcfce52}:1.2.0", - "{fbca5103-9a41-4d1f-bd89-0f4bd91ebbf9}:1.0", - "panique@web.de:1.0.0", - "panique@web.de:1.0.1", - "panique@web.de:1.0.2", - "panique@web.de:1.0.3", - "{8a7b9c3d-1e2f-4a5b-8c6d-9e0f1a2b3c4d}:1.0.3", - "gmail-warm-bg@local.tool:1.0", - "anon-playlist-mustafa@local:2.0.1", - "remedy-watcher-outlook-test@local:1.2.3", - "tascavlad15@gmail.com:1.0", - "tascavlad15@gmail.com:1.1", - "{35e7a891-c917-4337-8ce3-458017718c2e}:1.0", - "{b87c8587-7bdc-4376-ad1e-82615326c317}:1.0", - "blv@believe.com:0.1.0" - ] - }, - "schema": 1782974207509, - "key_format": "{guid}:{version}", - "stash_time": 1782995725935, - "id": "116f5a11-ba7d-4802-a4ac-33a44af16889", - "last_modified": 1782995813936 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "ai-inline-translate@local:1.0.1", - "quickJoke@alexsdev.com:1.1.0", - "reverseKey@alexsdev.com:1.0.0", - "reverseKey@alexsdev.com:1.0.1", - "gracepl-translate@yourdomain.local:1.2.0", - "gemini-linker-laboratory@local.net:2.0", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:5.3", - "scroll-ocr-overlay@charleszhang:1.3.2", - "scroll-ocr-overlay@charleszhang:1.3.3", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:5.3.1", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:5.3.2", - "igstoryviewer-lite@local.personal:0.2.1", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:5.3.3", - "amazon-ai-listing-pro@local:2.15", - "health-capsule-doctor-assistant-jiuxian@yuxin:3.4", - "{e85fe1f6-2dd4-4584-9330-3bd5bdbbca70}:1.0", - "{07157f60-9f65-4166-b883-88c834352250}:1.0", - "{b9b3e1f5-8f29-4335-ae15-dec43201ab2f}:1.0" - ] - }, - "schema": 1782952608938, - "key_format": "{guid}:{version}", - "stash_time": 1782974107852, - "id": "4c671b25-1db8-47dc-b990-81366b72df7f", - "last_modified": 1782974207129 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "eurobonus-finder@marcus:0.2.2", - "{f0cda985-f91b-415e-bc78-73725fc0ee21}:1.0", - "vault-autofill@local:1.1.6", - "vault-autofill@local:1.1.8", - "littlepin@example.com:0.1.0" - ] - }, - "schema": 1782930991527, - "key_format": "{guid}:{version}", - "stash_time": 1782952507775, - "id": "c5049bbb-4c5c-446b-b362-a63dcb8ca086", - "last_modified": 1782952608576 - }, - { - "stash": { - "blocked": [ - "{f00d4545-4ddf-42ba-915d-37b36512b1be}:1.2.1", - "{bfd62f1a-7196-40a2-9558-b6eb0af3a5b9}:2.0.0", - "{bfd62f1a-7196-40a2-9558-b6eb0af3a5b9}:1.2.5", - "{bfd62f1a-7196-40a2-9558-b6eb0af3a5b9}:2.0.1", - "{f00d4545-4ddf-42ba-915d-37b36512b1be}:2.0.1", - "pure-net-snap@fasttools.co:8.3.18", - "pure-net-snap@fasttools.co:9.11.20", - "pure-net-snap@fasttools.co:9.11.30" - ], - "unblocked": [], - "softblocked": [ - "it-support-helper@gfz.de:1.0.12", - "gooding-toolbar@gooding.de:3.0.4", - "request-intel@nebula.local:1.5.2", - "request-intel@nebula.local:1.5.1", - "request-intel@nebula.local:1.5.0", - "jira-deda-tools@deda-next.it:26.159.7", - "{4356487b-75be-46bd-b8f6-44c7fae168c0}:1.2", - "{4356487b-75be-46bd-b8f6-44c7fae168c0}:1.3", - "{4356487b-75be-46bd-b8f6-44c7fae168c0}:1.4", - "{4356487b-75be-46bd-b8f6-44c7fae168c0}:1.5", - "ssp-rtt@deanmccr:1.9.1", - "ssp-rtt@deanmccr:1.9.2", - "igstoryviewer-lite@local.personal:1.0.2", - "igstoryviewer-lite@local.personal:1.0.3", - "igstoryviewer-lite@local.personal:1.0.4", - "request-intel@nebula.local:1.4.4", - "igstoryviewer-lite@local.personal:1.0.5", - "pipush@pi0.ca:2025.8.21.10", - "honkoe@mivanov.dev:0.0.1", - "ntp-plus@redmine.infra:1.3.9", - "igstoryviewer-lite@local.personal:1.0.0", - "{713103d3-7585-4a63-a4f0-e308ee49d77f}:1.0", - "chatnest@jurczyk.dev:1.5.6", - "igstoryviewer-lite@local.personal:1.0.1", - "igstoryviewer-lite@local.personal:0.1.0", - "{e1f6aee3-9060-4289-aa07-7d4e208bffc0}:1.0", - "infiload@infiload.extension:1.0.0", - "igstoryviewer-lite@local.personal:0.2.0" - ] - }, - "schema": 1782909416814, - "key_format": "{guid}:{version}", - "stash_time": 1782930906388, - "id": "46cb527a-e0dd-46f3-8c7f-7205b17625b6", - "last_modified": 1782930991282 - }, - { - "stash": { - "blocked": [ - "{df48503a-66c4-45c5-a4bb-e79ee5d1c6c9}:2.1.7", - "{61613cd2-09b5-4811-8d47-ad6109a2a705}:1.1", - "{61613cd2-09b5-4811-8d47-ad6109a2a705}:1.1.3", - "{61613cd2-09b5-4811-8d47-ad6109a2a705}:1.1.2", - "{c8276e01-0150-71ec-a870-a27b436cf98c}:2.5", - "{61613cd2-09b5-4811-8d47-ad6109a2a705}:1.1.4", - "{61613cd2-09b5-4811-8d47-ad6109a2a705}:1.1.5", - "{61613cd2-09b5-4811-8d47-ad6109a2a705}:1.1.6", - "{8962c10d-4a67-474b-8efa-1b9f849b0328}:2.3", - "{8962c10d-4a67-474b-8efa-1b9f849b0328}:2.4", - "{8962c10d-4a67-474b-8efa-1b9f849b0328}:2.5.0", - "{8962c10d-4a67-474b-8efa-1b9f849b0328}:3.0", - "{8962c10d-4a67-474b-8efa-1b9f849b0328}:3.0.1", - "{8962c10d-4a67-474b-8efa-1b9f849b0328}:3.0.2", - "{c8276e01-0150-71ec-a870-a27b436cf98c}:2.5.1", - "{c8276e01-0150-71ec-a870-a27b436cf98c}:2.5.2", - "{df48503a-66c4-45c5-a4bb-e79ee5d1c6c9}:2.1.8", - "{df48503a-66c4-45c5-a4bb-e79ee5d1c6c9}:2.1.9", - "ada2cea9-68c8-4703-91fb-a06cf511bdaf@zlibrary:1.1.4", - "ada2cea9-68c8-4703-91fb-a06cf511bdaf@zlibrary:1.2.0", - "ada2cea9-68c8-4703-91fb-a06cf511bdaf@zlibrary:1.2.1", - "d4dac150-09dd-4ee9-9edf-176b06f05b9d@adblockutube:1.9.0", - "{bc144899-0bec-43e6-8401-7ab5d16635df}:3.0.2", - "{7e9feba6-383f-4943-b259-ae67916e186c}:1.0.7", - "{b1b38301-9512-4201-b210-8c9d8eaef4f6}:2.4.0", - "{b1b38301-9512-4201-b210-8c9d8eaef4f6}:2.4.1", - "{b1b38301-9512-4201-b210-8c9d8eaef4f6}:2.4.2", - "{90ccd574-994f-4aff-9d26-4cccaf0a427c}:1.3.7", - "35c7ec3f-1f53-eeef-84e0-3f693ee61fd1@tiktokdownloader:1.3.0", - "35c7ec3f-1f53-eeef-84e0-3f693ee61fd1@tiktokdownloader:1.3.2", - "35c7ec3f-1f53-eeef-84e0-3f693ee61fd1@tiktokdownloader:1.3.4", - "1efab3c2-06ac-4040-975d-e006baac07ce@ytmp4:1.2.9", - "1efab3c2-06ac-4040-975d-e006baac07ce@ytmp4:1.3.1", - "1efab3c2-06ac-4040-975d-e006baac07ce@ytmp4:1.3.2", - "1efab3c2-06ac-4040-975d-e006baac07ce@ytmp4:1.3.3", - "1efab3c2-06ac-4040-975d-e006baac07ce@ytmp4:1.3.4", - "827e3dc3-2988-45bd-838d-7b7b09cc9a86@youtubeadblocker:1.2.0", - "827e3dc3-2988-45bd-838d-7b7b09cc9a86@youtubeadblocker:1.2.1", - "8ce5a61a-2b65-46f4-9555-e400c94bd958@youtubedownloader:1.0.6", - "8ce5a61a-2b65-46f4-9555-e400c94bd958@youtubedownloader:1.0.7", - "8ce5a61a-2b65-46f4-9555-e400c94bd958@youtubedownloader:1.0.8", - "9183c337-f754-5d65-db7d-9ef1801f5dc3@pdfsaver:11.2", - "9183c337-f754-5d65-db7d-9ef1801f5dc3@pdfsaver:11.3", - "584fe4c4-87f3-4f7d-8870-3954cc450ada@emojikeyboard:1.0.5", - "584fe4c4-87f3-4f7d-8870-3954cc450ada@emojikeyboard:1.0.6", - "584fe4c4-87f3-4f7d-8870-3954cc450ada@emojikeyboard:1.0.8", - "ca62c911-d9fd-42e4-b01c-d985bf965f92@useragent:1.1", - "ca62c911-d9fd-42e4-b01c-d985bf965f92@useragent:1.2", - "ca62c911-d9fd-42e4-b01c-d985bf965f92@useragent:1.3", - "13d0f86a-ec47-483f-99c9-904755819034@rednote:1.0.4", - "13d0f86a-ec47-483f-99c9-904755819034@rednote:1.1.0", - "13d0f86a-ec47-483f-99c9-904755819034@rednote:1.1.3", - "108f013c-4bcd-41ad-adea-89d2c4174856@transcriber:1.1.6", - "108f013c-4bcd-41ad-adea-89d2c4174856@transcriber:1.1.7", - "{55a48229-8711-46b3-a5b5-02811ab6289f}:2.3", - "{55a48229-8711-46b3-a5b5-02811ab6289f}:2.4", - "{905b5cd2-56e0-4eba-9de7-1ab109a2a705}:2.3.1", - "{609b5cd2-1613-4111-8de7-1d6109a2a705}:1.10.0", - "{b7f26455-ddae-4845-a97a-4c396ad8ca20}:1.2", - "{8c2513d8-057d-4e9e-9b7c-ed8eff1a51bf}:3.5", - "{c8fd3cba-b778-44b7-baa4-bac3ba7c4dce}:3.2.9", - "{508ae1fb-43ac-a596-45ad-fd5eab7dea9a}:2.0.2", - "{bdb164da-248b-48af-b781-d81d1390fbd7}:2.0", - "{bdb164da-248b-48af-b781-d81d1390fbd7}:2.1", - "cljfgpkalfllpkcjcdgenagffflgdddo@chrome-store-foxified-458871228:1.2", - "777e2642-f66b-4546-66be-e7568a3a448f@emojiKeyboard:6.0.3", - "{c6dfd588-13c0-498b-87d7-f0a042c52516}:1.2", - "{c6dfd588-13c0-498b-87d7-f0a042c52516}:1.4", - "{f54005ea-192e-440b-8376-b0cb0142506c}:1.2", - "{f54005ea-192e-440b-8376-b0cb0142506c}:1.4", - "njlhmhgfppkgekomfbjggpomhlhaaplm@chrome-store-foxified-458871228:1.1", - "pbajijokpkbbbbnhdnmjkfceineffgin@chrome-store-foxified-458871228:1.0.0", - "pemipdhdjdghmfhllihhpcbhenlaeckk@chrome-store-foxified-458871228:1.33", - "ofnkdgkhkcddmhpjikpaniihokhpdlbf@chrome-store-foxified-458871228:1.1", - "ifmhoabcaeehkljcfclfiieohkohdgbb@chrome-store-foxified-458871228:12.0", - "fnanjnnchncdkfmjghfnkpaonepbopea@chrome-store-foxified-458871228:2.0", - "fcachklhcihfinmagjnlomehfdhndhep@chrome-store-foxified-458871228:2.3.8", - "lgdgdjgkodhbljloekcnpmbaipljpnfi@chrome-store-foxified-458871228:1.0.0.1", - "jdaipniglnplfdheldflboikjkfgpbbg@chrome-store-foxified-458871228:1.3.0.0", - "oallcdoceahndjmaalbicbcgpfnajgae@chrome-store-foxified-458871228:2.5.7", - "haekbllehcmbndihmgefhmobgbpgonoe@chrome-store-foxified-458871228:1.0.1", - "kbhjcmkjkaagcgenokgipiockhmfepgl@chrome-store-foxified-458871228:1.2.1", - "manopdfpinpcbcjhmfjlfdkienmfhpdj@chrome-store-foxified-458871228:1.2", - "oaeofonahpollpigknepbpnabhgbpcjc@chrome-store-foxified-458871228:1.0.9", - "elioihkkcdgakfbahdoddophfngopipi@chrome-store-foxified-458871228:1.1408.5.2", - "cgjnhhjpfcdhbhlcmmjppicjmgfkppok@chrome-store-foxified-458871228:0.16.7.2", - "cgjnhhjpfcdhbhlcmmjppicjmgfkppok@chrome-store-foxified-458871228:0.16.7.3", - "{71bdfac3-95de-48bf-8020-c74d261c3047}:2.47", - "{8148630b-2df7-49ac-b900-c54da3e2c7f0}:1.1" - ], - "unblocked": [], - "softblocked": [ - "yt-timestamp-looper@local.dev:1.0.0", - "yt-timestamp-looper@local.dev:1.0.1", - "yt-timestamp-looper@local.dev:1.0.2", - "yt-timestamp-looper@local.dev:1.0.3", - "yt-timestamp-looper@local.dev:1.0.5", - "dev-tools@oponeo.pl:2.1.0", - "bili-history-export@firefox:1.6", - "taskbard@mari-projects.org:1.0", - "taskbard@mari-projects.org:1.1", - "taskbard@mari-projects.org:1.2", - "taskbard@mari-projects.org:1.3", - "taskbard@mari-projects.org:1.4", - "taskbard@mari-projects.org:1.5", - "td-consent-inspector@tastieredigitali.it:1.0.0", - "td-consent-inspector@tastieredigitali.it:1.0.1", - "volumebooster@kevy.com:1.1", - "{6608a91b-545f-4431-a442-a3a3ca2f5ebc}:1.0", - "volumebooster2@kevy.com:1.3", - "x-local-spam-hider@example.local:0.4.6", - "integrated-helper2@mytool.com:1.0", - "twitch-adblock-proxy-fallback@georg.io:1.1.2", - "twitch-adblock-proxy-fallback@georg.io:1.1.3", - "twitch-adblock-proxy-fallback@georg.io:1.1.4", - "twitch-adblock-proxy-fallback@georg.io:1.1.5", - "twitch-adblock-proxy-fallback@georg.io:1.1.6", - "twitch-adblock-proxy-fallback@georg.io:1.1.7", - "twitch-adblock-proxy-fallback@georg.io:1.1.8", - "twitch-adblock-proxy-fallback@georg.io:1.1.9", - "better.bombuj.si@example.com:0.1", - "webhid@firefox.org:1.0", - "webhid@firefox.org:1.1", - "webhid@firefox.org:1.3", - "ECPPRODearningPlugin@mail.ru:0.0.6" - ] - }, - "schema": 1782887787222, - "key_format": "{guid}:{version}", - "stash_time": 1782909319438, - "id": "408b856e-727b-4e05-8010-5049c3f5d0db", - "last_modified": 1782909416542 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "hawtmarcs@portfolio.prmvr.workers.dev:1.0.0", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.17", - "{b5ae6f6a-b3ec-4c4f-8bef-3caa3853b8a0}:0.2", - "predictive-labs-extension@sotatek.com:0.0.1", - "{0d397ee2-0d0f-4a7e-8d8b-9a6c229ab21b}:1.4", - "chzzk@solitude0429.local:0.0.6", - "chzzk@solitude0429.local:0.0.7", - "yt-timestamp-looper@local.dev:1.0.4", - "trevor@trevor.work:0.2.0", - "trevor@trevor.work:0.2.1", - "trevor@trevor.work:0.2.2", - "tabflow@eget.dev:0.1.0" - ] - }, - "schema": 1782866204523, - "key_format": "{guid}:{version}", - "stash_time": 1782887705879, - "id": "54b7a214-0613-41a0-bce6-26f9d3c7761a", - "last_modified": 1782887786979 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "youtube-monitor@example.com:1.7", - "study-assistant@timothymisso.com:1.0.0", - "yfv-private-addon@local:8.5.0", - "gotify-notifier@jk-internal-tools.local:1.0.0", - "gotify-notifier@jk-internal-tools.local:1.0.1", - "gotify-notifier@jk-internal-tools.local:1.0.2", - "gotify-notifier@jk-internal-tools.local:1.0.3", - "gotify-notifier@jk-internal-tools.local:1.0.4", - "gotify-notifier@jk-internal-tools.local:1.0.5", - "collabora-office-redirector@orosa:3.0.0", - "collabora-office-redirector3.0@orosa:3.0.0", - "chatnest@jurczyk.dev:1.5.2", - "moodlequiz-solver@timothy988.mozilla:1.0.0", - "moodlequiz-solver@timothy988.mozilla:1.0.1", - "moodlequiz-solver@timothy988.mozilla:1.0.2", - "mpsauto@neverstopgoing.se:3.7.5", - "android-api-probe@helbervlopes.local:1.0.3", - "firefox-chrome-look-theme@mama1.net:1.0.0", - "ai-metadata-viewer@local.addon:2.0.0", - "preftoggler@example.com:1.0", - "preftoggler@example.com:1.1", - "preftoggler@example.com:1.2", - "preftoggler@example.com:1.3", - "preftoggler@example.com:1.4", - "preftoggler@example.com:1.5" - ] - }, - "schema": 1782844606286, - "key_format": "{guid}:{version}", - "stash_time": 1782866108192, - "id": "b9fa25cc-4191-4a9f-84d1-be5216d49186", - "last_modified": 1782866204269 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{953bc7fb-ace9-4aad-9bdd-13363e3fdaaf}:1.1", - "{953bc7fb-ace9-4aad-9bdd-13363e3fdaaf}:1.2", - "{953bc7fb-ace9-4aad-9bdd-13363e3fdaaf}:1.3", - "{953bc7fb-ace9-4aad-9bdd-13363e3fdaaf}:1.4", - "{953bc7fb-ace9-4aad-9bdd-13363e3fdaaf}:1.5", - "{953bc7fb-ace9-4aad-9bdd-13363e3fdaaf}:1.5.2", - "{953bc7fb-ace9-4aad-9bdd-13363e3fdaaf}:1.5.3", - "{953bc7fb-ace9-4aad-9bdd-13363e3fdaaf}:1.5.5", - "{953bc7fb-ace9-4aad-9bdd-13363e3fdaaf}:1.5.7", - "{953bc7fb-ace9-4aad-9bdd-13363e3fdaaf}:1.6", - "bmcow@coreweave.com:0.4.0", - "it-support-helper@gfz.de:1.0.10", - "twitch-ads-blocker-one-click@eftenow.github.io:0.4.0", - "pure-browse@example.com:1.0.0", - "instastories-lite@local.personal:1.0.1", - "authz-pro@authz.pro:1.0.0", - "authz-pro@authz.pro:2.0.0", - "fms-helper-extension-pro@earthlink.local:3.1.2", - "yamusicpro@kernelpace.github.io:1.4.0", - "{f00d4545-4ddf-42ba-915d-37b36512b1be}:1.2.1", - "{bfd62f1a-7196-40a2-9558-b6eb0af3a5b9}:2.0.0", - "{bfd62f1a-7196-40a2-9558-b6eb0af3a5b9}:1.2.5", - "adminplus@inwendo.local:1.0.8", - "antidetect-fp@local:1.0.0", - "matchrecon@bastien.local:3.0.0", - "{9d4dd3b9-4a63-4ba1-8173-5a27e747e0c8}:1.0", - "vault-autofill@local:1.1.4", - "deep-mark-free@fireext.com:9.6.20" - ] - }, - "schema": 1782822998759, - "key_format": "{guid}:{version}", - "stash_time": 1782844507338, - "id": "1e8bf83e-4051-43f0-8def-89a2f9c36989", - "last_modified": 1782844605927 - }, - { - "stash": { - "blocked": [ - "{7932dda8-8733-4cdf-a0a7-a1ec7673be9a}:2.1.0", - "{7932dda8-8733-4cdf-a0a7-a1ec7673be9a}:1.0.0", - "{2ce9f7ea-65cd-4113-9bde-1694e62b525f}:0.2", - "{2ce9f7ea-65cd-4113-9bde-1694e62b525f}:1.7.0", - "{7932dda8-8733-4cdf-a0a7-a1ec7673be9a}:2.1.1", - "{b8733408-58ea-4fc4-baa2-681e7059b7a0}:1.0.8", - "{b8733408-58ea-4fc4-baa2-681e7059b7a0}:1.2.0" - ], - "unblocked": [], - "softblocked": [ - "extension@subtext.site:1.0.0", - "extension@subtext.site:1.0.1", - "extension@subtext.site:1.0.2", - "extension@subtext.site:1.0.3", - "extension@subtext.site:1.0.4", - "extension@subtext.site:1.0.5", - "web-sidebar-toggle@salem:1.0.0", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.0", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.1", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.2", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.9", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.10", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.11", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.25", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.27", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.28", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.29", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.30", - "{41818d18-29ce-4981-b86a-d443b0a4dd5f}:1.0.31", - "url-annotator@local:1.0.0", - "url-annotator@local:1.0.1", - "url-annotator@local:1.0.2", - "url-annotator@local:1.0.3", - "url-annotator@local:1.0.4", - "url-annotator@local:1.0.5", - "url-annotator@local:1.0.6", - "{24c63c99-15c7-48cc-804f-e47126aa147f}:1.0", - "{d18a7f4b-38c4-4822-b2b9-6e6b29d01270}:1.0", - "{a69e6db0-b5df-4cd3-b074-63d0863d588c}:1.0", - "wappalyzer-lite@example.com:2.0", - "addon@gov.tw:1.1", - "jqm1e@proton.me:0.6.5", - "prod@eyedropper.org:2.4.2.5", - "prod@eyedropper.org:3.3.1.8", - "prod@eyedropper.org:4.10.3.10", - "prod@eyedropper.org:4.10.3.14", - "prod@eyedropper.org:4.10.3.15", - "prod@eyedropper.org:4.10.3.16", - "{6dece692-2949-421c-b72d-9a1b96c4b560}:1.0", - "jira-deda-tools@deda-next.it:26.156.3", - "pw@quasaro.de:2026.0.2", - "pw@quasaro.de:2026.0.1", - "time-ward@example.com:1.0.0", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:4.2", - "form-field-extractor@yksi.org:1.0", - "hcker-news-helper@hcker.news:0.3.0", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:4.3", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:4.4", - "{a1b7c590-aee3-43ef-aca8-1bcb161123ee}:1.0.0", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:4.6", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:4.8", - "ia-seo-noticias@local:1.2.1", - "editor-seo-ia-globaltek@globaltek:1.2.1", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:4.9", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:5.1", - "tab-color-labels@digitabuddy:1.0", - "{a5f0e8d2-b4a5-4222-95a4-138f8d6e8d95}:1.0", - "{fd84c2ba-eb02-4634-8b99-76d7a7bf6d30}:4.0", - "{fd84c2ba-eb02-4634-8b99-76d7a7bf6d30}:5.0" - ] - }, - "schema": 1782801387741, - "key_format": "{guid}:{version}", - "stash_time": 1782822907758, - "id": "5f07f2e9-21a7-4de7-958c-e0eb6ed3545d", - "last_modified": 1782822998439 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{f9cfee1b-d232-4948-aed9-10aecb197862}:1.6", - "swipe-gestures@yourdomain.com:1.1.5", - "kmatrix@addons.katrea.net:2023.9.1", - "kmatrix@addons.katrea.net:2023.10.1", - "tv-alert-flask@extension:2.0", - "tv-alert-flask@extension:3.0", - "isp-helper@pakt.ru:1.3.2", - "sop-assistant@trfx.de:0.31.4", - "trackmute@borealise.com:1.0", - "autowoot@borealise.com:1.0", - "autowoot@borealise.com:1.1" - ] - }, - "schema": 1782779800632, - "key_format": "{guid}:{version}", - "stash_time": 1782801305896, - "id": "a28012b9-f2d5-42c7-aa56-9e597cbd87f0", - "last_modified": 1782801387586 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "browser-data-cleaner@iskaaak:1.0.1", - "foxhop@kud.io:1.0.1", - "no-more-repeats@local:1.0.2", - "no-more-repeats@local:1.0.3", - "no-more-repeats@local:1.0.6", - "mangabuff-navigation@your-domain.com:1.0", - "instastories-lite@local.personal:1.0.0", - "{2ce9f7ea-65cd-4113-9bde-1694e62b525f}:0.2", - "manga-tracker@oscar.local:2.1.0", - "cardikyu@cardikyu.com:0.5.0", - "messenger-autocall@subedikodes:1.3" - ] - }, - "schema": 1782758189005, - "key_format": "{guid}:{version}", - "stash_time": 1782779707393, - "id": "3aa0ffd6-a3e3-429d-a2a7-fc4604f9e7c2", - "last_modified": 1782779800361 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "Thai-Translate@example.com:1.0", - "Thai-Translate@example.com:1.3", - "readaloud-edge-like@local:1.0.0", - "toolbox-ultimate@toolbox-team.com:1.1.0", - "{dc1bcdb6-c791-4d50-8556-6a55f56f6c3e}:1.0", - "mizanjobautofill@mizan-it-help.vercel.app:1.0.1", - "studybot@extension:1.5.0", - "videomax-player@videomax.app:9.0.1", - "study-bot-autoreader@userextension:1.5.0", - "{16a909e2-cd80-44e3-85f6-049fd6dc0071}:1.1", - "{16a909e2-cd80-44e3-85f6-049fd6dc0071}:1.0", - "tab-drawers@diarsabri:0.2.0", - "{38b29344-71f4-4265-a097-25d9096366e7}:1.0", - "{bb1454c6-9f1f-4893-81ee-c33313d766bd}:1.0", - "twitch-adblock-proxy-fallback@georg.io:1.0.5", - "twitch-adblock-proxy-fallback@georg.io:1.0.7", - "twitch-adblock-proxy-fallback@georg.io:1.0.6", - "twitch-adblock-proxy-fallback@georg.io:1.0.8", - "twitch-adblock-proxy-fallback@georg.io:1.0.9", - "twitch-adblock-proxy-fallback@georg.io:1.1", - "twitch-adblock-proxy-fallback@georg.io:1.1.1", - "addon-dev@typewise.xyz:1.0.1", - "addon-dev@typewise.xyz:1.0.2" - ] - }, - "schema": 1782736591544, - "key_format": "{guid}:{version}", - "stash_time": 1782758106526, - "id": "f7633504-6ae1-4be2-95f9-dfe0bbcc6647", - "last_modified": 1782758188847 - }, - { - "stash": { - "blocked": [ - "{d11ef218-a5c7-4109-a5e6-d97c2f1e779e}:1.1.6", - "{d11ef218-a5c7-4109-a5e6-d97c2f1e779e}:1.1.4", - "{d3113afa-8b55-4ae3-9752-e9940a3b4b26}:1.1.6", - "{d11ef218-a5c7-4109-a5e6-d97c2f1e779e}:2.1.0", - "{d3113afa-8b55-4ae3-9752-e9940a3b4b26}:2.1.0", - "ctrlwall@example.com:1.1.0", - "{840d4906-7152-45b1-9fdf-f95827649747}:1.1.2", - "{840d4906-7152-45b1-9fdf-f95827649747}:1.72.3", - "{182afd5c-0683-491a-b3fb-fcd7858d117c}:1.2.1", - "{182afd5c-0683-491a-b3fb-fcd7858d117c}:1.2.3", - "{182afd5c-0683-491a-b3fb-fcd7858d117c}:19.0.0", - "bpp@threatdown.com:0.0.26", - "bpp@threatdown.com:0.0.27", - "bpp@threatdown.com:0.0.28", - "bpp@threatdown.com:0.0.29", - "bpp@threatdown.com:0.0.30", - "bpp@threatdown.com:0.0.31", - "bpp@threatdown.com:0.0.32", - "bpp@threatdown.com:0.0.33", - "bpp@threatdown.com:0.0.34", - "bpp@threatdown.com:0.0.35", - "edlp-browser-extension@proofpoint.com:2.3.1.3045", - "edlp-browser-extension@proofpoint.com:2.3.1.3062", - "edlp-browser-extension@proofpoint.com:2.3.1.3084", - "edlp-browser-extension@proofpoint.com:2.3.1.3085", - "edlp-browser-extension@proofpoint.com:2.3.1.3099", - "edlp-browser-extension@proofpoint.com:2.3.1.3120", - "edlp-browser-extension@proofpoint.com:2.3.1.3147", - "edlp-browser-extension@proofpoint.com:2.3.1.3171", - "edlp-browser-extension@proofpoint.com:2.3.1.3223", - "edlp-browser-extension@proofpoint.com:2.3.1.3224", - "edlp-browser-extension@proofpoint.com:2.3.1.3226", - "edlp-browser-extension@proofpoint.com:2.3.1.3230", - "edlp-browser-extension@proofpoint.com:2.3.1.3235", - "edlp-browser-extension@proofpoint.com:2.3.1.3243", - "edlp-browser-extension@proofpoint.com:2.3.1.3244", - "edlp-browser-extension@proofpoint.com:2.3.1.3285", - "edlp-browser-extension@proofpoint.com:2.3.1.3315", - "edlp-browser-extension@proofpoint.com:2.3.1.3347", - "edlp-browser-extension@proofpoint.com:2.3.1.3349", - "edlp-browser-extension@proofpoint.com:2.3.1.3360", - "edlp-browser-extension@proofpoint.com:2.3.1.3361", - "edlp-browser-extension@proofpoint.com:2.3.1.3367", - "edlp-browser-extension@proofpoint.com:2.3.1.3385", - "edlp-browser-extension@proofpoint.com:2.3.1.3387", - "edlp-browser-extension@proofpoint.com:2.3.2.3392", - "edlp-browser-extension@proofpoint.com:2.3.2.3393", - "edlp-browser-extension@proofpoint.com:2.3.2.3425", - "edlp-browser-extension@proofpoint.com:2.3.2.3437", - "edlp-browser-extension@proofpoint.com:2.3.2.3446", - "edlp-browser-extension@proofpoint.com:2.3.2.3450", - "edlp-browser-extension@proofpoint.com:2.3.2.3453", - "edlp-browser-extension@proofpoint.com:2.4.0.3455", - "edlp-browser-extension@proofpoint.com:2.4.0.3459", - "edlp-browser-extension@proofpoint.com:2.4.0.3472", - "edlp-browser-extension@proofpoint.com:2.4.0.3474", - "edlp-browser-extension@proofpoint.com:2.4.0.3477", - "edlp-browser-extension@proofpoint.com:2.4.0.3481", - "edlp-browser-extension@proofpoint.com:2.4.0.3484", - "edlp-browser-extension@proofpoint.com:2.4.0.3486", - "edlp-browser-extension@proofpoint.com:2.4.0.3491", - "edlp-browser-extension@proofpoint.com:2.4.0.3497", - "edlp-browser-extension@proofpoint.com:2.4.0.3508", - "edlp-browser-extension@proofpoint.com:2.4.0.3510", - "edlp-browser-extension@proofpoint.com:2.4.0.3515", - "edlp-browser-extension@proofpoint.com:2.4.0.3517", - "edlp-browser-extension@proofpoint.com:2.4.0.3518", - "edlp-browser-extension@proofpoint.com:2.4.0.3521", - "edlp-browser-extension@proofpoint.com:2.4.0.3527", - "edlp-browser-extension@proofpoint.com:2.4.0.3529", - "edlp-browser-extension@proofpoint.com:2.4.0.3532", - "edlp-browser-extension@proofpoint.com:2.4.0.3537", - "edlp-browser-extension@proofpoint.com:2.4.0.3539", - "edlp-browser-extension@proofpoint.com:2.4.0.3550", - "edlp-browser-extension@proofpoint.com:2.4.0.3552", - "edlp-browser-extension@proofpoint.com:2.4.0.3556" - ], - "unblocked": [], - "softblocked": [ - "aether@rxbi.dev:1.0", - "aether@rxbi.dev:1.1", - "epic-auto-claimer@arena.ai:1.0.0", - "name6anned@proton.me:1.0", - "szurubooru-companion@local.addon:1.3.8", - "twitch-adblock-proxy-fallback@georg.io:1.0", - "twitch-adblock-proxy-fallback@georg.io:1.0.1", - "twitch-adblock-proxy-fallback@georg.io:1.0.2", - "twitch-adblock-proxy-fallback@georg.io:1.0.3", - "twitch-adblock-proxy-fallback@georg.io:1.0.4", - "download-sniffer@gcc20001.local:0.5.1", - "mime-upload-guard@example.local:0.5.6", - "@Images_downloader:2.1", - "@Images_downloader:2.0", - "@Images_downloader:1.5.2", - "@Images_downloader:1.5.1", - "@Images_downloader:1.5", - "@Images_downloader:1.4", - "@Images_downloader:1.3", - "@Images_downloader:1.2", - "@Images_downloader:1.1", - "@Images_downloader:1.0", - "{f29cc39a-e5de-4b8e-b121-906e4e2c6fcf}:1.0", - "{d3351f42-c75f-437e-9198-4ac425ded2f7}:1.0", - "{1bc181f3-7b27-454e-a3a5-9aa5c479ccda}:1.0", - "{6224cc57-6837-4639-a250-38e04d2a0fb1}:1.0", - "{e42bce34-e510-43f5-badd-e1a7df8bd3c2}:1.0", - "{7932dda8-8733-4cdf-a0a7-a1ec7673be9a}:2.1.0", - "{7932dda8-8733-4cdf-a0a7-a1ec7673be9a}:1.0.0", - "neovim_helpers@eusyar.xyz:1.3.18", - "neovim_helpers@eusyar.xyz:1.3.17", - "neovim_helpers@eusyar.xyz:1.3.16", - "neovim_helpers@eusyar.xyz:1.3.15", - "neovim_helpers@eusyar.xyz:1.3.14", - "jules.bernier07@gmail:2.0.3", - "ulysse-web-extension@worldwatch:1.0.2", - "ulysse-web-extension@worldwatch:1.0.3", - "ulysse-web-extension@worldwatch:1.0.5", - "{2a072523-dbf5-401a-ac9e-daae9e6ae3a3}:1.0", - "{2a375235-8489-470d-92dd-1c969fe718ec}:0.4.1", - "{2a375235-8489-470d-92dd-1c969fe718ec}:0.4.2", - "tv-alert-flask@extension:1.0" - ] - }, - "schema": 1782714986684, - "key_format": "{guid}:{version}", - "stash_time": 1782736505693, - "id": "bfc21273-2f3c-45cf-9097-167ae22c0c7d", - "last_modified": 1782736591302 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "scroll-ocr-overlay@charleszhang:1.2.2", - "imgwordsdata-div@exampleeqweere.com:1.0", - "allow-copy@examplesw.com:1.0.0", - "surv-capture-piggy@examplesw.com:1.0", - "urlmonitor@examplesw.com:1.0.0", - "transformer@examplesw.com:1.0", - "survhelper@examplesw.com:1.0", - "imgwordsdata-div@examplesw.com:1.0", - "tampdev@example.comsw:1.0", - "tampdev@examplesw.com:1.0", - "grabador-encuestas@tudominioyy.com:1.0", - "ejecutor-encuestas@tudominio.com:1.0", - "scroll-ocr-overlay@charleszhang:1.3.1", - "{357dd926-2f18-458b-853d-b543727aaa28}:1.0", - "{fb609821-8244-4e51-837f-bfbee73871c6}:1.0", - "addons@nicodownloaderrrr:2.0", - "jira-comment-shortcuts@assecobs.pl:1.0.6", - "simi-firefox@local:1.1.0" - ] - }, - "schema": 1782693402957, - "key_format": "{guid}:{version}", - "stash_time": 1782714905653, - "id": "9dbae461-7667-4097-a579-14fd7bd02f00", - "last_modified": 1782714986450 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "scroll-ocr-overlay@charleszhang:1.1.42", - "scroll-ocr-overlay@charleszhang:1.2.1", - "{c15e19bd-b5da-4b29-b779-d93c2e423192}:1.0", - "{272b3429-77c3-48d7-9485-97edfb6a6d55}:1.0", - "vault-autofill@local:1.1.3", - "{02703f72-4e13-4a9b-9641-8b4c12887b16}:1.0", - "{02703f72-4e13-4a9b-9641-8b4c12887b16}:1.1", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.23", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.21", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.22", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.20", - "chatgpt-account-transfer@problemer.dev:1.0.1", - "nsfw-filter@selflock:1.4.0" - ] - }, - "schema": 1782671799290, - "key_format": "{guid}:{version}", - "stash_time": 1782693306585, - "id": "fa4748d7-3509-44b9-b059-84e324eca017", - "last_modified": 1782693402802 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "youtube-omleider-privaat@mijn-eigen-extensie.net:2.1", - "{d11ef218-a5c7-4109-a5e6-d97c2f1e779e}:1.1.6", - "{d11ef218-a5c7-4109-a5e6-d97c2f1e779e}:1.1.4", - "{d3113afa-8b55-4ae3-9752-e9940a3b4b26}:1.1.6", - "anime-checker_1.2@example.com:1.2", - "mytube@local:1.0.0", - "{0df7db4f-91f9-440e-8a94-4fd9a9488909}:1.0", - "{f35753ed-d302-4011-bb4a-7ac3fd0edb84}:1.0", - "{f35753ed-d302-4011-bb4a-7ac3fd0edb84}:2.0", - "{b9cf00dd-d207-471f-8f41-aa9c529c3d17}:1.0", - "{b9cf00dd-d207-471f-8f41-aa9c529c3d17}:2.0", - "malash@blly.com:1.0.0", - "pureref-gif@converter:3.0.0", - "fjalor@shqip.dev:1.2.0", - "socks5-switcher@dein-name.addon:2.4.0", - "socks5-switcher@dein-name.addon:2.4.1", - "socks5-switcher@dein-name.addon:2.4.2", - "socks5-switcher@dein-name.addon:2.4.3", - "socks5-switcher@dein-name.addon:2.4.4", - "socks5-switcher@dein-name.addon:2.4.5", - "socks5-switcher@dein-name.addon:2.4.6", - "socks5-switcher@dein-name.addon:2.4.7", - "socks5-switcher@dein-name.addon:2.4.8", - "socks5-switcher@dein-name.addon:2.4.9", - "playimdb-domain-router@example.local:1.0.0", - "playimdb-domain-router@example.local:1.0.2", - "playimdb-domain-router@example.local:1.0.3", - "playimdb-domain-router@example.local:1.0.6", - "playimdb-domain-router@example.local:1.0.9", - "playimdb-domain-router@example.local:1.0.10", - "playimdb-domain-router@example.local:1.0.11", - "playimdb-domain-router@example.local:1.1.0", - "theo-doi-truyen@local.extension:1.0.2", - "theo-doi-truyen@local.extension:1.0.1", - "theo-doi-truyen@local.extension:1.0.3", - "unofficial-ivpn-extension@tsukisamiyo.dev:1.0.0", - "video-message-overlay@antigravity.dev:1.2.1", - "crunchyroll-autoskip@example.com:1.0", - "quicktranslator@artemmarkin:1.7", - "{3cead718-d015-4a4e-a931-746c63833433}:1.0", - "{3cead718-d015-4a4e-a931-746c63833433}:2.0.11", - "{3cead718-d015-4a4e-a931-746c63833433}:2.1.0", - "{3cead718-d015-4a4e-a931-746c63833433}:4.0.0" - ] - }, - "schema": 1782650196386, - "key_format": "{guid}:{version}", - "stash_time": 1782671706837, - "id": "427286d7-25e4-4281-b52d-32790cee8863", - "last_modified": 1782671799020 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "ksd-login@gruppokib.it:0.1.0.2", - "xvideohelper_v6@temporary.addon:1.6", - "scroll-ocr-overlay@charleszhang:1.1.41", - "{c4bfe523-353f-443a-afbb-c056fba9141d}:1.0" - ] - }, - "schema": 1782628588568, - "key_format": "{guid}:{version}", - "stash_time": 1782650107173, - "id": "a85241ce-d018-45f9-a7b8-3631461d7180", - "last_modified": 1782650196225 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "cardikyu@cardikyu.com:0.4.5", - "gfn-check@mjrossi:0.2.2", - "gfn-check@mjrossi:0.1.2", - "gfn-check@mjrossi:0.1.1", - "gfn-check@mjrossi:0.1.0", - "yfv-private-addon@local:8.4.0", - "traductor-directo@arturo.local:4.0", - "traductor-directo@arturo.local:4.1", - "traductor-directo@arturo.local:3.5", - "traductor-directo@arturo.local:3.9", - "{a3f7eb4f-5664-4976-86be-364f1a9afc15}:1.0.0", - "traductor-directo@arturo.local:4.5", - "traductor-directo@arturo.local:4.3", - "traductor-directo@arturo.local:2.3", - "traductor-directo@arturo.local:2.4", - "traductor-directo@arturo.local:2.5", - "traductor-directo@arturo.local:2.7", - "traductor-directo@arturo.local:2.8", - "traductor-directo@arturo.local:3.1", - "traductor-directo@arturo.local:3.2", - "traductor-directo@arturo.local:3.3", - "traductor-directo@arturo.local:3.4", - "traductor-directo@arturo.local:3.6", - "traductor-directo@arturo.local:3.7", - "traductor-directo@arturo.local:3.8", - "{ed657092-2731-45ce-8c0e-cfe633f929ad}:1.0.0", - "{ed657092-2731-45ce-8c0e-cfe633f929ad}:1.1.0", - "{ed657092-2731-45ce-8c0e-cfe633f929ad}:1.2.0", - "{ed657092-2731-45ce-8c0e-cfe633f929ad}:1.3.0", - "{ed657092-2731-45ce-8c0e-cfe633f929ad}:1.4.0", - "chzzk-custom-emoticon@kerks.com:1.1", - "browser-tools@acat:1.2.5", - "{243a4d29-a1af-464b-87be-78d35a42497c}:1.0" - ] - }, - "schema": 1782606990500, - "key_format": "{guid}:{version}", - "stash_time": 1782628505290, - "id": "8b88209e-0fa1-414c-bad9-1de8c9b2ffbc", - "last_modified": 1782628588255 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "work-container-cleaner@local:1.0", - "work-container-cleaner@local:1.1.0", - "work-container-cleaner@local:1.2.0", - "work-container-cleaner@local:1.3.1", - "order-manager@order-management.local:0.1.0", - "KawaiiDiscord@sfmlab.com:1.0", - "xianyu-shopping-assistant@firefox:1.0.0", - "xianyu-shopping-assistant@firefox:1.0.1", - "anzeigen-tracker@schwedes:0.1.1", - "anzeigen-tracker@schwedes:0.1.2", - "tab-groups-sync@logisoft.ai:5.6", - "timekeepertime@vibe-code:1.0", - "currency-converter-sarpedocker@personal:1.0.0" - ] - }, - "schema": 1782585411524, - "key_format": "{guid}:{version}", - "stash_time": 1782606905323, - "id": "9509cf1a-9fd1-4493-ac05-f3d5b2ef32d7", - "last_modified": 1782606990238 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "cambridge-selection-lookup@yuraw.local:1.0.8", - "cambridge-selection-lookup@yuraw.local:1.0.9", - "sekme-saver@example.com:1.0", - "yfv-private-addon@local:8.3.0", - "adm@avarwand:1.3", - "alex-homepage@example.com:1.0", - "socks5-switcher@dein-name.addon:2.3.1", - "socks5-switcher@dein-name.addon:2.3.3", - "socks5-switcher@dein-name.addon:2.3.2", - "socks5-switcher@dein-name.addon:2.3.4", - "socks5-switcher@dein-name.addon:2.3.5", - "socks5-switcher@dein-name.addon:2.3.6", - "socks5-switcher@dein-name.addon:2.3.7", - "socks5-switcher@dein-name.addon:2.3.8", - "socks5-switcher@dein-name.addon:2.3.9", - "video-cleaner-pro2@rutube.example.com:2.3.1", - "@elvenar-helper-extension:8.6.1", - "@elvenar-helper-extension:8.5.1", - "nexus-legacy-companion@nexus-companion:1.10.0", - "speedread@example.net:1.0.0", - "{a8c1a5bd-265c-4a81-a3d8-424c5f96b36c}:1.1", - "{a8c1a5bd-265c-4a81-a3d8-424c5f96b36c}:4.1.5", - "{fa55cdd6-c5f2-4dc9-806c-7eabbb488932}:1.0.0" - ] - }, - "schema": 1782563804859, - "key_format": "{guid}:{version}", - "stash_time": 1782585309046, - "id": "695448bc-2073-4ce8-b967-3c6a3273738c", - "last_modified": 1782585411204 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "send-site-to-todoist@kobioxide.gmail.com:0.1.0", - "send-site-to-todoist@kobioxide.gmail.com:0.1.1", - "send-site-to-todoist@kobioxide.gmail.com:0.1.2", - "send-site-to-todoist@kobioxide.gmail.com:0.1.3", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:8.0.0", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:8.0.1", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:8.1.0", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:8.2.0", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:8.3.2", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:8.3.3", - "{1c5e6b44-e285-4731-b6b9-5c4a08ab5a86}:1.0", - "favory@sp4ce.pw:5.0.4", - "favory@sp4ce.pw:5.0.5", - "favory@sp4ce.pw:5.0.6", - "ttd-autofill-v85-desktop-width-floating-20260627@example.com:85.0", - "ttd-autofill-v86-desktop-popup-width-dot-fix-20260627@example.com:86.0", - "tabgrouptoggler@yourdomain.com:1.0", - "{2362b8fc-b82b-4bf8-94bd-6f4db2d887d2}:1.0", - "grp-elsa-login-helper@example.local:1.0.2", - "@elvenar-helper-extension:8.4.3", - "project-k@example.com:1.0", - "cambridge-selection-lookup@yuraw.local:1.0.0", - "cambridge-selection-lookup@yuraw.local:1.0.3", - "cambridge-selection-lookup@yuraw.local:1.0.4", - "@elvenar-helper-extension:8.6.0", - "cambridge-selection-lookup@yuraw.local:1.0.5", - "cambridge-selection-lookup@yuraw.local:1.0.7", - "shortcut-gallery@example.com:1.74" - ] - }, - "schema": 1782542184983, - "key_format": "{guid}:{version}", - "stash_time": 1782563708431, - "id": "6ddb543a-0e79-4a47-91e9-f20c368cfdb0", - "last_modified": 1782563804625 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "ext267@dat267.github.io:1.0.6.246006", - "{e10a9ee4-e93c-4b50-b55f-34e10d4256ad}:1.4", - "{e10a9ee4-e93c-4b50-b55f-34e10d4256ad}:1.5", - "{e10a9ee4-e93c-4b50-b55f-34e10d4256ad}:1.6", - "{e31dd786-f0b8-4d3e-9861-e706b4804137}:1.1", - "{e31dd786-f0b8-4d3e-9861-e706b4804137}:1.2", - "twitter-search@private-addon:1.7", - "{10ee03d8-a7f7-4880-b5ea-a22db37ae68c}:1.11", - "typewise@example.com:0.0.1", - "rnc-sms-relay@copsptcl.app:1.0.35735", - "cops-relay@copsptcl.app:2.4.38407", - "cops-relay@copsptcl.app:2.4.3948", - "cops-relay@copsptcl.app:2.4.50187", - "cops-relay@copsptcl.app:2.4.90383", - "cops-relay@copsptcl.app:2.4.59847", - "cops-relay@copsptcl.app:2.4.60897", - "cops-relay@copsptcl.app:2.4.78459", - "cops-relay@copsptcl.app:2.4.40338", - "cops-relay@copsptcl.app:2.4.40881", - "cops-relay@copsptcl.app:2.4.63530", - "cops-relay@copsptcl.app:2.4.65588", - "cops-relay@copsptcl.app:2.4.33949", - "anime-checker_1.1@example.com:1.1" - ] - }, - "schema": 1782520588966, - "key_format": "{guid}:{version}", - "stash_time": 1782542105727, - "id": "16f2ff33-6b5d-48a1-8d5f-688a9077fd19", - "last_modified": 1782542184752 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "tridactyl-fixed@lophophora:1.24.6", - "grp-elsa-login-helper@example.local:1.0.1", - "yfv-private-addon@local:7.6.0", - "x-ai-slop-sniffer@example.local:1.0.2", - "mturk-suite-autocatch@personal-use:2.7.1", - "yt-grabber@local:1.0.2", - "yt-grabber@local:1.0.0", - "yt-grabber@local:1.0.1", - "majesticforum@majestic-rp.ru:2.41", - "traductor-directo@arturo.local:2.2", - "traductor-directo@arturo.local:3.0", - "traductor-directo@arturo.local:2.9" - ] - }, - "schema": 1782499010433, - "key_format": "{guid}:{version}", - "stash_time": 1782520505484, - "id": "98a27282-51b8-4159-bd73-b9fff0d00eea", - "last_modified": 1782520588760 - }, - { - "stash": { - "blocked": [ - "{d3db2f89-c1f1-4c2a-b031-de686c9e2333}:2.1.2", - "{93d0812c-b06b-42d1-b64f-15eb8356bc88}:0.1", - "{d3db2f89-c1f1-4c2a-b031-de686c9e2333}:2.1.0", - "{d3db2f89-c1f1-4c2a-b031-de686c9e2333}:2.1.1", - "{d3db2f89-c1f1-4c2a-b031-de686c9e2333}:2.1.3", - "{d3db2f89-c1f1-4c2a-b031-de686c9e2333}:2.1.5", - "{d3db2f89-c1f1-4c2a-b031-de686c9e2333}:2.1.6", - "{b4c28bf1-2579-4d05-a12c-8b8e4314f456}:3.0.9", - "{93d0812c-b06b-42d1-b64f-15eb8356bc88}:1.6.0" - ], - "unblocked": [], - "softblocked": [ - "vantage@digitaldashboard.us:0.4.8", - "vantage@digitaldashboard.us:0.4.9", - "vantage@digitaldashboard.us:0.4.7", - "vantage@digitaldashboard.us:0.4.6", - "vantage@digitaldashboard.us:0.4.5", - "vantage@digitaldashboard.us:0.4.4", - "vantage@digitaldashboard.us:0.4.3", - "vantage@digitaldashboard.us:0.4.2", - "drbotv2@emc-sa.pl:3.1.0", - "drbotv2@emc-sa.pl:3.1.1", - "MYNT_Enforced_3.3.4.2@qq.com:3.3.529", - "sis-autologin@matfyz.dev:0.7", - "sis-autologin@matfyz.dev:0.8", - "sis-autologin@matfyz.dev:0.6", - "@elvenar-helper-extension:8.5.0", - "@elvenar-helper-extension:8.4.1", - "@elvenar-helper-extension:8.4.0", - "favory@sp4ce.pw:5.0.0", - "favory@sp4ce.pw:5.0.2", - "favory@sp4ce.pw:5.0.3", - "rfp-darkmode@locall.net:1.0", - "rfp-darkmode@locall.net:1.1", - "transparent-input-cms@koljasam.com:1.0.0", - "{eaa67fd4-7a35-44ce-97bf-7128d7df69e7}:2.0", - "privacyhashchecker@android.example:4.0", - "{67178ea4-f943-41cb-9e70-680558573000}:0.23", - "{67178ea4-f943-41cb-9e70-680558573000}:0.15", - "{67178ea4-f943-41cb-9e70-680558573000}:0.16", - "English-word--saver@extension:1.1.0", - "comfyui-metadata-viewer@local:1.1.0", - "twitch-ad-muter-blackout@maui.com:1.0", - "boovi@yourdomain.com:0.1.1", - "boovi@yourdomain.com:1.0.0", - "boovi@yourdomain.com:1.1.1", - "boovi@yourdomain.com:1.2.0" - ] - }, - "schema": 1782477411672, - "key_format": "{guid}:{version}", - "stash_time": 1782498908036, - "id": "a18b8904-ac4a-4c29-bdf6-e11bc8e57d7d", - "last_modified": 1782499010145 - }, - { - "stash": { - "blocked": [ - "{2d23e948-5877-4114-a2a2-f6379b1fa744}:0.4", - "{2d23e948-5877-4114-a2a2-f6379b1fa744}:0.6", - "{2d23e948-5877-4114-a2a2-f6379b1fa744}:0.5", - "{8ba275e2-6750-41c3-a944-307e38c2a5e2}:2.8.0", - "{2d23e948-5877-4114-a2a2-f6379b1fa744}:0.8", - "{8ba275e2-6750-41c3-a944-307e38c2a5e2}:2.9.0", - "{8ba275e2-6750-41c3-a944-307e38c2a5e2}:2.9.1", - "{8ba275e2-6750-41c3-a944-307e38c2a5e2}:2.9.2", - "{deb7a278-b6f0-42d8-a8e0-36a367e6b4c3}:0.3", - "{deb7a278-b6f0-42d8-a8e0-36a367e6b4c3}:1.30", - "{deb7a278-b6f0-42d8-a8e0-36a367e6b4c3}:1.31", - "{6847604c-dc40-4530-a152-61674c135311}:2.0.1", - "{7d5672b6-5c6d-4a05-9c66-32263a79b395}:3.99", - "{1142bba7-14ce-44de-8eab-9172023ed1e1}:2.0.1", - "{1142bba7-14ce-44de-8eab-9172023ed1e1}:2.0.2", - "{d1e3a8c7-2a7b-4c6d-8f9e-123456789abc}:1.27", - "{e250524b-8010-4642-a13d-9d0a80b22572}:3.6.0", - "{e250524b-8010-4642-a13d-9d0a80b22572}:3.6.1", - "{e250524b-8010-4642-a13d-9d0a80b22572}:3.6.2", - "{da01b7ea-3dd0-4f7e-aa8a-298793c4f49a}:3.1", - "{da01b7ea-3dd0-4f7e-aa8a-298793c4f49a}:3.2", - "{da01b7ea-3dd0-4f7e-aa8a-298793c4f49a}:3.2.1", - "{da01b7ea-3dd0-4f7e-aa8a-298793c4f49a}:3.2.2", - "{da01b7ea-3dd0-4f7e-aa8a-298793c4f49a}:3.2.3", - "{da01b7ea-3dd0-4f7e-aa8a-298793c4f49a}:3.2.5", - "{716367d2-add8-4ab2-832c-032a1462e5c1}:1.7.0", - "{8230e150-de6b-48a0-8350-fa314a7516ec}:2.3.0", - "{0beac24c-8805-400a-bea5-a7a0e63309e8}:1.8.1", - "{abe576d9-4bbe-92a1-5d6d-b3614c13446d}:1.0.4", - "{abe576d9-4bbe-92a1-5d6d-b3614c13446d}:1.0.5", - "{abe576d9-4bbe-92a1-5d6d-b3614c13446d}:1.0.6", - "{8bdc204a-553d-4d69-502d-706330d78dcf}:10.9", - "{30fbfd9c-2f4f-4519-b9d3-576a6ba58fd6}:2.1.1", - "{7aa3e7cb-4a35-4809-ae9f-899f9b92d891}:1.3.0", - "{1c8fc8bc-3173-4a7e-8530-b052f0f3df75}:1.10", - "{87e3e0cb-05fc-4070-9394-48ee4b49bee0}:1.0", - "{1fe54ea1-e55e-44c3-91a2-119570df6500}:0.0.3", - "{4d9735f5-0ff6-c984-286c-ba0d48c47a50}:5.18.1", - "{2d228e44-9ed5-4462-8496-e9d72f56283d}:1.6" - ], - "unblocked": [], - "softblocked": [ - "stream-recorder-local@my-addon:2.2.9", - "stream-recorder-local@my-addon:2.2.9.1", - "dev@sergey-aitilin.net.ru:1.0", - "dev@sergey-aitilin.net.ru:2.0", - "dev@sergey-aitilin.net.ru:3.0", - "{41dee465-eb76-41af-8e16-9f029c994cc5}:1.0", - "icloud-album-downloader@extension:1.0.0", - "icloud-album-downloader@extension:1.0.1", - "icloud-album-downloader@extension:1.1.0", - "{e3cefc31-f5ce-4a82-bd3d-609b8f8ec437}:1.4.1", - "{e3cefc31-f5ce-4a82-bd3d-609b8f8ec437}:1.4.2", - "{e3cefc31-f5ce-4a82-bd3d-609b8f8ec437}:1.4.3", - "{e3cefc31-f5ce-4a82-bd3d-609b8f8ec437}:1.4.4", - "{e3cefc31-f5ce-4a82-bd3d-609b8f8ec437}:1.4.5", - "{e3cefc31-f5ce-4a82-bd3d-609b8f8ec437}:1.5.0", - "{e3cefc31-f5ce-4a82-bd3d-609b8f8ec437}:1.5.1", - "{e3cefc31-f5ce-4a82-bd3d-609b8f8ec437}:1.5.2", - "{5939afd2-d082-4b3c-bf4a-0dae2e3c2f0f}:1.0", - "yfv-private-addon@local:8.2.0", - "yfv-private-addon@local:8.1.0", - "paragon-toolkit@hewang:8.3", - "{2418a4e6-f6a5-4896-a78e-f97c7ae7f9b4}:1.0", - "{2418a4e6-f6a5-4896-a78e-f97c7ae7f9b4}:2.0", - "{8d00168d-c583-4b60-9070-1aa3e5fa4593}:1.0", - "{3255c6bc-638a-4fbf-b8f4-06c8fe6c3ddd}:1.0", - "firefox-extension@quilr.ai:0.24204.867", - "{055a3487-e2e1-4df1-870d-b3ef9e4be2b2}:1.2", - "checkmatin@example.com:1.2.1", - "checkmatin@example.com:1.2.2", - "checkmatin@example.com:1.3.1", - "{6a1d3e1f-3ad7-46f4-9ec3-123eaf8059a5}:1.0", - "magnolia_limited_permissions@12.34:4.3.8.4", - "woohoo@mudgallabs.com:1.0.2", - "woohoo@mudgallabs.com:1.1.0", - "woohoo@mudgallabs.com:1.2.0", - "woohoo@mudgallabs.com:1.2.1" - ] - }, - "schema": 1782455793602, - "key_format": "{guid}:{version}", - "stash_time": 1782477309036, - "id": "4e9722de-7c38-406b-ab7a-b9907ad8e6f3", - "last_modified": 1782477411447 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "kick-canli-takip@uzantiniz.com:2.0", - "WE-clipper@wikieducator.org:0.9.10", - "WE-clipper@wikieducator.org:0.9.12", - "gemini-keeper@botshub:1.0.0", - "gemini-keeper@botshub:1.0.1", - "rakuzaichi@gabrielongzm.com:2.0.0", - "owl-tags@gongahkia:0.1.0", - "zen-md-viewer@navin.local:1.1", - "gemini-keeper@botshub:1.0.4", - "gemini-keeper@botshub:1.0.5" - ] - }, - "schema": 1782434196569, - "key_format": "{guid}:{version}", - "stash_time": 1782455706396, - "id": "c13b4b79-1747-46a7-838a-22e62ffb0901", - "last_modified": 1782455793356 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "cookie-getter@qrator:2.0.0", - "cookie-getter@qrator:2.0.1", - "cookie-getter@qrator:2.0.2", - "cookie-getter@qrator:2.0.3", - "cookie-getter@qrator:2.1.0", - "cookie-getter@qrator:2.2.0", - "cookie-getter@qrator:2.2.1", - "cookie-getter@qrator:2.2.2", - "yfv-private-addon@local:8.0.0", - "otrs-monitor-flavio-santos@example.com:3.0.0", - "otrs-monitor-flavio-santos@example.com:4.0.0", - "otrs-monitor-flavio-santos@example.com:7.5.2", - "otrs-monitor-flavio-santos@example.com:9.0.17", - "otrs-monitor-flavio-santos@example.com:10.2.8", - "otrs-monitor-flavio-santos@example.com:10.0.2", - "otrs-monitor-flavio-santos@example.com:9.0.23", - "otrs-monitor-flavio-santos@example.com:9.0.24", - "otrs-monitor-flavio-santos@example.com:9.0.25", - "otrs-monitor-flavio-santos@example.com:9.0.26", - "otrs-monitor-flavio-santos@example.com:10.3.2", - "{3649fc76-2fec-4817-a663-8512779fa7cd}:1.0", - "mailman-browser-organ@example.local:0.0.11", - "change-text-style-addon-20250512@example.com:2026.6.22.1", - "change-text-style-addon-20250512@example.com:2026.6.21.1", - "YoutubeThumnailDownload@example.com:2026.6.15.2", - "YoutubeThumnailDownload@example.com:2026.6.9.1", - "{18c0685c-4343-479f-88ac-18cd69a0be14}:1.0", - "{2cddbcc9-09ae-42a7-a8db-16c61e2f70f9}:1.0", - "{62307f8a-f45f-46e1-997f-4157176513f0}:2.0", - "{62307f8a-f45f-46e1-997f-4157176513f0}:4.0" - ] - }, - "schema": 1782412598563, - "key_format": "{guid}:{version}", - "stash_time": 1782434106434, - "id": "3fcf07be-1529-46c3-919d-3f2880d2f300", - "last_modified": 1782434196363 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{8f28c304-43ea-403d-9ca9-1700be18865f}:9.5.0", - "forca-focus@forca.app:2.1.1", - "{38617ccc-6478-47a6-9f13-ab1234575184}:1.0", - "{aee91a25-813c-4474-8bb6-ea44c46218c1}:1.3", - "hftwebextension@hft.com:0.0.0.1", - "hftwebextension@hft.com:9.1", - "hftwebextension@hft.com:9.1.0.1", - "hftwebextension@hft.com:9.1.0.2", - "hftwebextension@hft.com:9.1.1.1", - "{e82996a8-daf3-43c3-82c9-d87b88439809}:9.0.0.20", - "{ccb8d864-54ec-4690-bc1e-8793a7322052}:9.0.0.21", - "houwebextension@hou.com:9.2.0.40", - "{7827749b-c69a-4e90-906d-46f202b52d31}:9.0.41", - "{ba388711-dd82-4e42-928d-4e922fdcd4e3}:1.0", - "hotuiwebextension@hou.com:9.2.0.50", - "{a98b0911-bc9b-49c7-9d8c-e9ffed6fca92}:10.0.0", - "{f49a1fe4-915e-4d3e-933f-62112d890be4}:9.5.0", - "{e25e5208-89c8-4641-8bdb-04485ca626c7}:10.1.1.2", - "{e25e5208-89c8-4641-8bdb-04485ca626c7}:10.1.1.3", - "video-mosaic@example.local:0.1.1", - "zen-notes@local:1.0.0", - "jira-ticket-opener@fastsw.com:1.0", - "zen-notesnkl@local:1.0.0", - "ecac-seguro-fechar-abas@contabilidadeitabirito.local:1.0", - "fecha-ecac-interno@contabilidadeitabirito.local:3.3", - "zen-notesKimLn@local:1.0.0", - "twitch-free@tonpseudo:1.0" - ] - }, - "schema": 1782391010895, - "key_format": "{guid}:{version}", - "stash_time": 1782412506843, - "id": "e9050e84-77af-4c01-a382-375b6653f0a9", - "last_modified": 1782412598233 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{6555709b-3a38-42a6-9e41-cc9422cbec00}:0.2", - "{a98958af-36f4-461d-94f7-cbc8860d3093}:7.22.4", - "gwinsight@guardware:1.0.1", - "fuckyoufirefox@killyourself.shit:1.0.0", - "{905807b9-76be-4e79-9e05-20fd52ee8051}:7.20.0", - "amazon-tracker@fabian.local:0.6.0", - "ticketmfer-extension@bottleneckco:1.0.0", - "yfv-private-addon@local:7.5.0", - "youtube-title-filter@local:1.0", - "youtube-title-filter@local:4.0", - "sku-extractor@tianyan.local:2.0.0", - "{d01fee53-6d18-4865-8143-57d741f87d91}:0.3.0.2", - "eclipsetabguard@extension:1.0.0", - "quant-algo@stockbit.com:1.0.1", - "quant-algo@stockbit.com:1.0.0", - "yt-comments-filter@loleczkowo:5.5.0", - "yt-comments-filter@loleczkowo:5.6.0", - "yes.com180@gmail.com:0.1.24", - "yes.com1940@gmail.com:0.1.24", - "cardikyu@cardikyu.com:0.4.4", - "agpsports@agp96:1.0", - "agpsports@agp96:1.0.1", - "agpsports@agp96:1.0.2", - "agpsports@agp96:1.0.3", - "agpsports@agp96:1.0.4", - "agpsports@agp96:1.0.5", - "agpsports@agp96:1.0.6", - "agpsports@agp96:1.0.7", - "agpsports@agp96:1.0.8", - "agpsports@agp96:1.0.9", - "agpsports@agp96:1.1.0", - "agpsports@agp96:1.1.1", - "{48fff139-8a05-4918-be8e-e5d193c5ed48}:1.0.7", - "{86123444-17c0-4cda-b2d1-86046707005f}:1.0.2.5", - "{86123444-17c0-4cda-b2d1-86046707005f}:1.0.2.6", - "{86123444-17c0-4cda-b2d1-86046707005f}:1.0.2.7", - "{86123444-17c0-4cda-b2d1-86046707005f}:1.0.2.8", - "{d9cf2d10-93ef-4558-9b3e-50d593aaa9b8}:1.0", - "{6db24421-12b5-4f81-8eea-58969c5fb67f}:1.0", - "{24216322-4a5f-4a63-9a4f-3445f2d52a93}:1.0", - "{45e304c4-f937-4cd5-b0ce-1591828d0a07}:1.0" - ] - }, - "schema": 1782369393119, - "key_format": "{guid}:{version}", - "stash_time": 1782390925502, - "id": "4fbb7f54-235a-451d-bc05-bb08c7bb7398", - "last_modified": 1782391010565 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "khayyam-extension@mehdiyilaghi.ir:2.1.0", - "khayyam-extension@mehdiyilaghi.ir:2.1.1", - "workflow-pro-suite@local.codex:1.2.44", - "workflow-pro-suite@local.codex:1.2.45", - "{0fd33e3d-7d3f-40c4-b434-3bdccf64a8ee}:7.0", - "{0fd33e3d-7d3f-40c4-b434-3bdccf64a8ee}:6.0", - "{0fd33e3d-7d3f-40c4-b434-3bdccf64a8ee}:4.0", - "zone@local.dev:0.1.0", - "zone@local.dev:0.1.1", - "betterextension@betterstation.local:1.0.0", - "{75b1c7f0-561a-47e2-813a-ddb8f15176e3}:1.0", - "yfv-private-addon@local:7.4.0", - "{058500ec-8c07-43ce-b8f9-64ba6f8fe0a5}:0.2" - ] - }, - "schema": 1782347808658, - "key_format": "{guid}:{version}", - "stash_time": 1782369306236, - "id": "7faa0874-e586-46c8-8544-425278570ec2", - "last_modified": 1782369392851 - }, - { - "stash": { - "blocked": [ - "{b3dd7b1b-dba9-4c3f-ab52-dfd008ed6aad}:1.3.3", - "{b3dd7b1b-dba9-4c3f-ab52-dfd008ed6aad}:1.0", - "{b3dd7b1b-dba9-4c3f-ab52-dfd008ed6aad}:1.4.3", - "{e0bcb626-e6a8-46aa-8da5-842ca4792b07}:4.0.2", - "{e0bcb626-e6a8-46aa-8da5-842ca4792b07}:4.1", - "{e0bcb626-e6a8-46aa-8da5-842ca4792b07}:4.1.1" - ], - "unblocked": [], - "softblocked": [ - "ai-sidebar@behivey.com:0.1.0", - "ai-sidebar@behivey.com:0.2.0", - "ai-sidebar@behivey.com:1.0.0", - "ai-sidebar@behivey.com:1.1.0", - "ai-sidebar@behivey.com:1.2.0", - "ai-sidebar@behivey.com:1.4.0", - "ai-sidebar@behivey.com:1.4.1", - "ai-sidebar@behivey.com:1.4.2", - "ai-sidebar@behivey.com:1.4.3", - "ai-sidebar@behivey.com:1.4.4", - "ai-sidebar@behivey.com:1.5.0", - "ai-sidebar@behivey.com:1.5.1", - "ai-sidebar@behivey.com:1.5.2", - "ai-sidebar@behivey.com:1.5.3", - "ai-sidebar@behivey.com:1.5.4", - "ai-sidebar@behivey.com:1.6.0", - "ai-sidebar@behivey.com:1.6.1", - "ai-sidebar@behivey.com:1.6.2", - "ai-sidebar@behivey.com:1.7.0", - "ai-sidebar@behivey.com:1.8.0", - "ai-sidebar@behivey.com:1.9.0", - "ai-sidebar@behivey.com:1.9.1", - "ai-sidebar@behivey.com:1.9.2", - "ai-sidebar@behivey.com:1.9.3", - "ai-sidebar@behivey.com:1.10.0", - "ai-sidebar@behivey.com:1.18.0", - "ai-sidebar@behivey.com:1.19.0", - "ai-sidebar@behivey.com:1.20.0", - "ai-sidebar@behivey.com:1.21.0", - "ai-sidebar@behivey.com:1.21.1", - "ai-sidebar@behivey.com:1.21.4", - "ai-sidebar@behivey.com:1.22.0", - "ai-sidebar@behivey.com:1.22.1", - "ai-sidebar@behivey.com:1.22.2", - "ai-sidebar@behivey.com:1.22.3", - "ai-sidebar@behivey.com:1.22.4", - "yfv-private-addon@local:7.3.0", - "minha-extensao-pessoal@leonardo:1.3.0", - "asifhaufhsuabgsmgsugnsklgsdkugskg@google.com:1.0", - "workflow-pro-suite@local.codex:1.2.20", - "workflow-pro-suite@local.codex:1.2.23", - "video-grabber-pro@owl:3.5", - "ts-sitter-assistant@terence.nomad:1.0.0", - "ts-sitter-assistant@terence.nomad:1.1.0", - "ts-sitter-assistant@terence.nomad:1.2.0", - "ts-sitter-assistant@terence.nomad:1.3.0", - "metashield@example.com:1.0.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.27.7", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.27.4", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.27.2", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.27.1", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.28", - "youtube-no-chat@extension:1", - "youtubemarkup@thenima.ir:1.0.7", - "vault-autofill@local:1.1.1", - "vault-autofill@local:1.1.2", - "{83f014f0-57f6-4fc9-b36f-08425cadcbba}:1.0", - "{59c6599e-ddf7-4577-80a5-3e73a784dbd2}:1.0", - "workflow-pro-suite@local.codex:1.2.25", - "workflow-pro-suite@local.codex:1.2.28", - "{f2cb0b09-a883-4fef-8e3c-7cc05bb676fa}:1.0", - "youtube-rocket@example.org:1.3.3", - "youtube-rocket@example.org:1.3.4", - "samelinux@gmail.com:1.0", - "workflow-pro-suite@local.codex:1.2.30", - "workflow-pro-suite@local.codex:1.2.32", - "workflow-pro-suite@local.codex:1.2.34", - "workflow-pro-suite@local.codex:1.2.35", - "workflow-pro-suite@local.codex:1.2.36", - "workflow-pro-suite@local.codex:1.2.37", - "workflow-pro-suite@local.codex:1.2.39", - "nobait@acr197:0.11.0" - ] - }, - "schema": 1782326192583, - "key_format": "{guid}:{version}", - "stash_time": 1782347707660, - "id": "fa955d23-a07d-4cab-bb91-e82063c7197c", - "last_modified": 1782347808483 - }, - { - "stash": { - "blocked": [ - "{4858688d-86b9-4b4e-a331-41ba7066bbf5}:0.2", - "{4858688d-86b9-4b4e-a331-41ba7066bbf5}:1.2.5", - "{4858688d-86b9-4b4e-a331-41ba7066bbf5}:1.2.6" - ], - "unblocked": [], - "softblocked": [ - "{b3dd7b1b-dba9-4c3f-ab52-dfd008ed6aad}:1.3.3", - "{b3dd7b1b-dba9-4c3f-ab52-dfd008ed6aad}:1.0", - "{116eb1a0-3513-43d8-bcad-714b6515da1a}:4.20", - "{116eb1a0-3513-43d8-bcad-714b6515da1a}:4.30.0", - "logit@georgebrown.ca:1.0.6", - "{7fd687d6-62a3-4db9-a563-5ef4d551f8a0}:0.1", - "{623dadf3-8e40-4511-84c7-bdd0a8fe207c}:1.7.3", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.36", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.35", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.37", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.38", - "coverlay@hansp27.com:1.0.0", - "mary-web-extension@mary.fr:0.0.0", - "{4ea8857b-3d61-4fcc-a0f3-df678fd52dd0}:1.0", - "{c6601100-db7d-4f46-870d-672d9792ff88}:1.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.41", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.40", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.39", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.42", - "pushbullet-dark@mestphy:366", - "WebToEpub@onerom.dev:1.0.9.57", - "solarcataclysm@gmail.com:1.0.1", - "solarcataclysm@gmail.com:1.0", - "pocket-calculator@example.com:1.0.0", - "auto-website-opener@example.com:1.1", - "ghost-proxy@attendance.extension:1.0.0", - "scanly-assistant@sfp-it.de:0.0.4", - "scanly-assistant@sfp-it.de:0.0.5", - "scanly-assistant@sfp-it.de:0.0.6", - "scanly-assistant@sfp-it.de:0.0.7", - "scanly-assistant@sfp-it.de:0.0.8", - "scanly-assistant@sfp-it.de:0.0.9", - "scanly-assistant@sfp-it.de:0.0.10", - "scanly-assistant@sfp-it.de:0.0.13", - "scanly-assistant@sfp-it.de:0.0.14" - ] - }, - "schema": 1782304603597, - "key_format": "{guid}:{version}", - "stash_time": 1782326106095, - "id": "3c474611-9fba-4e1d-ad9a-7c8dee01a86d", - "last_modified": 1782326192301 - }, - { - "stash": { - "blocked": [ - "clashofclansgerry@gmail.com:3.2.2", - "clashofclansgerry@gmail.com:3.2.0", - "oc88-assistant@localusr:1.2.0", - "{4c7cd805-e2b3-450f-ae2c-2d8b79283a3c}:1.8.1", - "{4c7cd805-e2b3-450f-ae2c-2d8b79283a3c}:0.2.0", - "{88db91ed-ee4e-45e4-bdda-f96fe9497414}:0.1.0", - "mobifone-checker@local:1.1.0", - "{c4eb6fa5-de38-4aa9-8ce4-4cf24f4b3a7c}:1.0.2", - "{0217e089-ca53-451b-b40f-1457aef2686d}:1.0.1", - "{213a8975-298e-4e48-b5bc-318a5812b8fb}:0.1.4", - "{20ca621b-827e-4071-a872-5b379d237d98}:1.0.38", - "{739022b3-9245-470f-92bd-d8405f172578}:0.1.3", - "{c57fc519-2fa3-4786-87f9-7b3892099db6}:0.1.4", - "{fcf00e44-38bd-4adb-8a3e-a2b72b3ed86d}:1.0.38", - "{f4ca28fc-3a68-4245-be48-4ed1c507b01e}:1.2.1", - "{349f58b0-53da-4cae-b672-fd113ea5841b}:2.3", - "{540a8636-1915-4967-b908-2bc8c818e908}:2.3", - "{89e5f7d4-b385-47c9-887c-246daef662aa}:0.3.4", - "{c0a1b37e-916d-4d20-b68a-1e7a9e5d5e45}:0.1.3", - "{9a3044ea-a86b-4213-9653-0b6043348649}:2.3", - "{3988595e-bf6b-4c7c-8ad5-4a07b22a6ad4}:1.0.38", - "{96a994b9-6755-4f46-885d-283d48aa287e}:1.0.38", - "{86177bcd-d789-440e-b25a-c97c8de91e40}:1.0.38", - "{9db1ca5f-cccf-4771-92d4-8962edd186a2}:1.0.2", - "{b7a0aaba-04f2-43bc-9cdf-f0b5ee793f23}:2.2.6", - "{e4e14720-89c3-41ab-895d-b70115767b6d}:1.7", - "{d6808d33-77fe-48ae-abb2-65717e157882}:1.0.38", - "{f538b92a-dac0-46b7-9141-c431996cffb8}:0.0.8", - "{0853bb39-0419-49b7-b656-c68535476577}:0.1.4", - "{84745a17-a455-4bb6-bea9-e42630d4143d}:1.0.1", - "{6d5b6736-888f-4b83-be58-216a1c2bb6ce}:2.2.2", - "{de46c49a-d5d2-48e6-b8d6-5e7094186282}:0.3.4", - "{081f0c05-0174-46ac-bf74-271b03f61eae}:0.1.3", - "{974fbdbd-6e16-4a93-b0d4-0ab07dc8497c}:1.2.1", - "{bde057c3-902e-48d9-a155-e63c4b8cf021}:1.0.1", - "{259fe26e-7e9e-4755-a2e2-39eb42211829}:1.5.27.9", - "{7e7837fc-3d47-4bf0-b5dd-47616778df97}:1.2.1", - "{b6c33710-3422-400c-a39b-676591f0ee8b}:0.2", - "{767786b7-2eac-410f-b388-71f054fe2937}:6.0.2", - "{deaa90ad-0257-4ca6-ab79-0ebdffe7619a}:3.4.4", - "{8fae3271-81a8-4e62-aa20-8c91118744d5}:1.0.1", - "{8d2c915c-def9-45d2-9ed8-2b26e6777988}:1.7.4", - "{d7e90a81-cae2-406b-aba3-45214ceedcd9}:6.0.2", - "{1c86bfe9-c099-4c47-a0f1-44633de6114c}:6.0.2", - "{fdd8c212-5c0f-4ea0-aa5c-3a10b31b61da}:0.0.8", - "{9498074f-1dbf-482e-847f-3b1fe8231fe0}:0.0.8", - "{1b3462fd-4a64-46ef-b761-5d549745d7e0}:2.2.50", - "{2afb53a2-9d45-45ac-85ea-e39591e61e41}:1.0.4", - "{b671f8cd-9635-4bfb-8e02-518f6ca9f2f5}:2.2.50", - "{9a5465c5-5e2a-4b58-a22d-d9e3d418e2fa}:1.6.2", - "{753ba743-7d79-4529-99b4-a85c373c3696}:1.0.2", - "{a7343a86-87bc-46fe-b5f5-2730dab2ce87}:1.2.1", - "{646701db-4cc1-446e-a46f-a6a8ef652bb1}:1.2.1", - "{4a7ddf20-9a1d-4a27-afc3-2f4d9a3d0078}:1.6.2", - "{36609429-c785-4bda-b521-cf4e82edebc0}:0.0.8", - "{b67b838b-849a-4d49-851c-e809683a07b2}:1.0.4", - "{a0c7cec4-6013-449a-b93b-4b0026170a27}:0.0.8", - "{c6bbb0e8-47c7-418c-9800-574b3aabe2e8}:0.2", - "{3b4ee285-7505-4322-a623-4a0f4f220f5a}:6.0.2", - "{25b97871-36ad-4985-b546-1adbac7626a3}:1.0.4", - "{84db475e-c2a6-4017-b186-6b22c2042c17}:1.0.2", - "{6e85f6bd-366a-481e-90a1-3e818475ccaf}:1.3", - "{8dc2b1b3-3040-443b-b7b7-223b4d6ed92c}:2.1", - "{bdcd7515-d20b-4fe8-8795-9a13a62803b5}:2.1.4", - "{24236c30-7254-46dd-889b-c85b870921a1}:1.2", - "{776e3e6b-4a60-40f9-9c2e-736eabaff507}:1.0.1", - "{089b0fb9-0eb7-4d08-b52f-48eda2d6e48a}:1.0", - "{3f97700a-39da-4535-af5c-eb956f3eb7a1}:1.0", - "descriptiongen@example.com:1.0", - "{2e5451bc-e83b-4f3f-8d0d-a7964f0f67d1}:1.0", - "{cef2cfbb-e10c-4891-895a-cbff93637924}:4.1.2", - "{233975b0-2ea0-4a3c-80b5-43ff0ae1ecbb}:1.0", - "{e05415b0-21cf-4f91-a091-523c7e959e05}:1.0", - "{21547a83-b614-4d7a-904a-0b27b92405f2}:1.0.2", - "{aa97cded-6dbc-4612-be0a-b9df6d34af17}:1.23", - "{edd47046-ad91-4b44-bd70-aaa3b0993563}:0.4", - "pallaskuepperpr133@gmail.com:1.0", - "danellalotznc4388@gmail.com:1.0", - "{96dc3101-69b3-4f27-af2b-64e27a8ddc48}:2.0", - "{3bcd18ca-fd43-4936-8e9c-a9edc787ae52}:0.4.1", - "instameme-creator@example.com:1.0", - "{9445e6b2-148a-44e5-bf0d-d144d9983ce5}:1.0", - "{8165c489-f13e-4f9e-90ea-923d8a232a78}:1.2.1", - "{ce5b5bb9-0f87-448d-9926-4f739755c1bb}:1.0.0", - "{1311c64c-6232-41fc-86e2-994112a4e201}:1.0", - "{e048e95a-6f2a-43df-9dac-fe1e97a65323}:1.0.0", - "{4f8e10ec-4f2c-43c4-be3b-b9f75a43d13c}:1.5.3", - "{bcab1dea-7d00-4c3f-989f-9ecde685c626}:1.0.14", - "{662cf4d5-99cd-4c2a-ad01-57d5e37ca66c}:1.0", - "{d6d562c3-7e40-4cf6-bd02-3841b121622c}:0.1.3", - "{c50de862-a763-48f8-95e4-81dd3e568603}:0.1.1", - "{ab72822e-2ead-4ee5-a6f1-1023d78fa130}:0.3.1", - "{3da8c314-177b-4b3a-9566-883db91f4f49}:1.0.6", - "{1856dc44-2e34-4e6f-93fc-e4bec0c54437}:1.1.0", - "{05d71db0-8c40-4850-8e01-0b2838ba8af0}:1.0", - "lsl-to-kes@example.com:1.0", - "{4447547c-0ad3-43b4-b063-aa14e2f6bb22}:3.18.0", - "{49f12380-d939-4123-be45-00b5e540c629}:20.3.0", - "{b89ecc16-1879-4310-98c1-5788cb7b26bd}:1.0.0.16", - "{f16a2ac3-e480-4470-9996-ea895f583efd}:1.0.0.9", - "{d0da3d23-48d8-47ad-96dd-7e47b23db1b0}:2.2", - "{56c88245-634c-4975-874a-88d28216ba70}:0.0.13", - "{92c4a0ac-8ce0-4d97-8be6-69480c8ed0d1}:1.1", - "{ea0cadfb-2fae-4dcc-bc0c-fb4f9efc3d50}:0.1.2", - "{1c90c89f-0fb0-49dd-9297-a8a2ddbe1f7a}:1.6.2", - "{f1518d85-3956-4794-8994-dc6dfa367c2c}:1.0.2", - "{f8c3a240-c103-4af8-98e6-5e9bca6ca6c4}:1.2.1", - "{12ded541-9891-4d7d-b077-3a5163ef4d11}:0.0.8", - "{6d9ceb1d-bf88-4860-a79b-e38b5ce3d60e}:0.0.8", - "{8e9be701-d9c4-40df-b63e-a1a443cad105}:1.0.2", - "{e166ac13-432e-4ed6-8497-19fb11e10706}:1.0.4", - "{d823344b-9f7c-434b-97d4-06a529ff7f78}:2.2.50", - "{d6687993-f5bc-4f5d-8537-6a456424ba59}:0.0.8", - "{0a02ffa9-2626-4f49-b5a8-5fc067c426f9}:0.0.8", - "{1bbfa08e-8b86-4e43-9d07-d7bfa2435fb4}:1.2.1", - "{d377e696-1976-4a7b-b475-dddda5870c27}:1.2.1", - "{4e6e21eb-b48d-42b2-898b-cd836d176083}:1.0.2", - "pulsedoct-addon@dongphutien.com:1.0", - "{c64faada-f5a7-470a-b018-178266d18726}:0.0.8", - "{c17700c7-a06a-4770-a32e-a729f5d2ff4b}:1.6.2", - "{8a7d0f55-850f-4d26-adc5-478f30dfb584}:1.0.4", - "{d7d1552f-c9cc-4863-b5db-1af6aee26f30}:1.6.2", - "{027cdb52-de92-4f3f-9147-c8003b0af8b6}:0.0.8", - "{2e344c60-5360-42f5-9299-eefba6d3e640}:0.0.8", - "{8639e37a-a129-44c4-9709-9672ea02507d}:1.0.2", - "{eb4d1b51-5775-4c00-91eb-47c79e724eea}:1.0.4", - "{cb6fcf91-15ac-4bb7-a979-1a2fbc74ddc2}:1.2.1", - "{1b7084de-123b-4726-b5a8-96ddc083a50e}:2.2.50", - "{e00437b1-7d6b-4820-8d07-1c21d2e635a9}:2.2.50", - "{b8f84fd1-ea7f-4beb-b3c1-bc833943ae44}:1.0.2", - "{b739260b-c316-4b16-99d2-38ec817aa1fc}:1.2.1", - "{bc1350be-5f6f-449c-b226-72e0f1b4edaf}:1.0.38", - "{3b931f1e-0570-4eca-9c50-64fc13563923}:2.2.2", - "{b45be5b8-dcde-467d-bfc5-9ceac635e186}:1.6.1", - "{ecdb4b03-fff8-4e39-9f92-ab544f5522ff}:1.2.1", - "{79ee9907-a8dd-4014-9f24-7d1e931d47f4}:0.0.8", - "{4cbec184-c96e-41e2-982b-e95df0522050}:1.0.1", - "{85d9d2ef-1967-4811-893e-c76d88a225f4}:1.1.1", - "{7d0eb3e6-65be-435d-a071-2df02d124aef}:2.3", - "{8c5fa46f-f166-47de-be53-1659d9f81978}:0.1.4", - "{946ec045-845e-49dc-bee5-a58b24f72a1d}:0.0.8", - "{13de4e1c-8210-4162-bf2e-2deb4c2172dd}:2.3", - "{8bb70715-b5b8-4e94-b67c-768f24a387a0}:0.2", - "{8fd06850-91c8-485a-9963-af837acb5775}:2.3", - "{14fddce1-d857-4a54-b4a1-0347ad061806}:2.2.6", - "{8b595943-5d86-4684-9c29-d018060677ec}:2.3", - "{8563d59d-d895-4453-89b9-ae1d61ed9451}:1.6.1", - "{8ad2d2bf-7c6d-484c-a881-3b747ad8649f}:3.4.4", - "{3e1d3bc6-59ed-4c2e-8c76-b0d7ed851d76}:1.6.2", - "{0bb8a5be-29de-47c5-9017-766c715044e0}:2.2.6", - "{9f654bbc-f88a-496a-a89f-ff9cdfbb73f1}:1.0.1", - "{044ea4c0-23ba-4f8e-902b-777f694fa4a6}:6.0.2", - "{b27b92a4-705d-420b-9115-28d0e3bc93ea}:1.0", - "{c5cf453b-df2b-4ba9-ab58-04b783932711}:3.4.4", - "{e18d3259-a875-4ab8-99ac-7ae72e9644c6}:3.4.4", - "{d5d25fa7-e18f-486e-b865-8be4ccceefbb}:1.1.1", - "{93f8be92-a601-42d9-a76f-81fbddb52b41}:2.3", - "{f418c5a9-fa27-4a16-9a83-46be59277227}:2.2.6", - "{8c710c12-b7d2-4471-94d1-19ba563c12ec}:0.2", - "{1d5da3dc-1f4e-4f6e-a17e-71d263999c9f}:1.0.4", - "{53dfd1fd-bfbc-44d8-ae12-812f6133b4ef}:1.1", - "{9d65caec-1697-420d-98ed-2fece041cfd2}:1.0.38", - "{03d84fb5-cf02-414f-9c93-082cc1b3c94d}:1.3", - "{d033da3e-2f9e-454d-b8d4-a5e69c53385e}:1.3", - "quick-site-notes@example.com:1.0.0", - "{2be878fd-69a7-4247-af3c-d7a8b1ede74d}:1.0", - "{5b1ca850-405b-42ba-8798-9811a10a2e01}:1.0", - "{05d7402f-8f2f-4ce1-8ee8-66f0955fc0fb}:2.2.50", - "{5dd0b8d2-c2f4-40b4-8949-68929808c523}:5.0", - "{f720c549-c028-470c-8fe0-2b12b6e63ea8}:4.1", - "{4845885c-96b2-41d7-baaa-fc416203a008}:0.7.1", - "{7f80f864-010f-440e-98d8-57295a5fa759}:1.0", - "toggle-dark-mode@example.com:1.0", - "{2ce7df96-558d-4c2c-8d88-68606ebbe8cc}:1.2.15", - "{fec75230-01eb-445a-9ac3-d6404e66885f}:1.0", - "{e3b31cff-afcc-41a7-9092-2bad6be2ab83}:1.0", - "{29e33f68-32ea-4ab1-a728-d8762d379058}:1.0.1", - "{ac179a28-8ae5-49d1-921b-1f335bf92c11}:1.2", - "{2edf88e2-cd9c-483a-93fa-b860a851ca40}:1.1", - "{2adda421-c0e9-4122-b97e-99555a4aac22}:5.4", - "{136fa9aa-48b9-4b33-acd5-2bef5f7e9b23}:1.2.0", - "{8e83ea10-16fe-41ca-8b1d-77869a6ccda0}:1.0.10", - "{490454b5-b6b5-4205-82fc-99b10e7de6a2}:1.0", - "{68a107b3-0272-4d10-a03d-5896804de838}:1.0", - "{718c561a-e521-440c-ae98-adfc87fa0d3e}:1.0", - "{80de3c96-c842-44b9-b0c1-1037665401f7}:1.0.0", - "{5c135ec4-5451-4281-bc72-1a7aa2de01a1}:0.0.1", - "{72297abc-d172-4cb4-ae75-817df61d088d}:1.3", - "{a51c401b-5d66-45d9-b664-845ea650f087}:1.0", - "{1be89299-b909-4a0e-b95e-18641e08a40e}:1.0", - "{2c9eb2fc-da8b-44bf-8082-3129bd24a28c}:1.0", - "{718b3292-fed5-48eb-8692-c906ce215167}:1.0", - "{a84eb343-0eeb-495d-9395-3994df615235}:1.0", - "{a8340b77-b58a-4b5c-9715-61c2e5006eea}:1.0", - "{fa9bb82f-9e4a-41ee-b1ca-e1e022ceb625}:1.0", - "{972098c1-ef3b-4d4f-8917-577d3e8b3a6b}:1.0", - "{5a563824-9af8-4f10-bf13-c2bce81132e7}:1.0", - "hoegisa0171@outlook.com:1.0", - "zacekmaxi2626@outlook.com:1.0", - "mickivens4888@outlook.com:1.0", - "koranbruns1145@outlook.com:1.0", - "dalisvary7221@outlook.com:1.0", - "durrterri2389@outlook.com:1.0", - "cindavadim0627@outlook.com:1.0", - "shigcatto6436@outlook.com:1.0", - "zanzeshedd8631@outlook.com:1.0", - "zvemhg26349j@outlook.com:1.0", - "{88698d91-d3f5-4c58-9219-df674fc73a99}:1.0", - "{f06ceced-91df-4881-87b8-73ec92f63edc}:1.0", - "{3591e2c1-7222-4a1e-ba97-69006bcd7e46}:1.0", - "map-bookmark@example.com:1.0", - "time-tracker@example.com:1.0", - "language-helper@example.com:1.0", - "{75148a3c-bfbf-4ae2-bd92-10122aa21327}:1.0", - "reader-mode-auto@example.com:1.0", - "{2401df8a-47fd-481c-9b49-9332a51932fd}:1.0", - "{319ad461-2bbe-434f-8173-0b2f5b16912d}:1.0", - "{61af0488-ac69-4c9a-b057-4774308649dd}:1.0", - "{decc638b-f92d-402a-ab49-c2bef04cbd0a}:1.0", - "{e779c73a-1114-4481-9435-57b221ce1d68}:1.5.2", - "{5067225d-158f-442c-8fee-14332cba154c}:1.1.1", - "{16581eea-1371-4c95-856d-c9cec4628b90}:1.0", - "{cead4bb0-5c6d-4ca7-ba52-ec5d168aa6e0}:1.0", - "{ee15b964-9c24-4017-9a09-bbeb2969bb9f}:1.0", - "{3088a70d-92d9-4c22-88d7-77ba3a111c17}:1.2", - "{1cd6d29e-9ec7-4a1d-b7c0-8df7e05c10e1}:1.0", - "{5098dce7-bce8-404d-94ed-4e14841397d4}:0.0.2", - "{d27b1208-3050-4e7b-a0cb-c44fad52fb96}:2.0.0", - "{85a1c644-1651-481b-a619-286c6f9ba0c0}:1.0", - "{4cd9d202-ed2a-46c4-ab2e-9df8c10aa00a}:0.1", - "{784dd756-6e8f-472c-8f3f-dd9eeb892afa}:1.0", - "{8b941172-de06-4ac1-9243-4e6e1db92b02}:1.0", - "{7b7d5c68-788b-469b-81fe-9752efdc67f1}:1.4.2", - "{70ef53bc-4063-41a3-9cb0-288eb7fa99b1}:0.2.0", - "{403faee6-10de-4e9b-acd5-f8b1ac77229b}:1.0.0.7", - "{08b3cbb5-22e9-4073-87d5-c4835ddf85c3}:1.0", - "{dcf7ea9d-0628-44b1-81e8-63b6c8f594ff}:1.9", - "{3db88f4f-677d-46cf-8cad-85d25ed6c37a}:1.0.1", - "lingualinkpolyglot@example.com:1.0", - "{1d22c3aa-17bb-4d6f-9f98-73f94ef4ac7a}:0.0.1", - "{99936aee-61b6-4419-b76c-d4d6384351ab}:1.0.15", - "{829590b0-658e-4409-8232-0b5f402b9c7a}:1.0", - "{b2850d74-0729-472c-a6ae-b31ed69f9e4a}:1.0", - "timekeeper@example.com:1.0", - "{780bda16-e998-4e70-a1a8-b05d9fe138d5}:1.0", - "{e0c99fbd-b152-4c59-b8c2-4df34a2281a7}:1.0", - "{3f4cd502-47a4-4e5f-9add-0ec15fc2b2ea}:1.0", - "{d350865a-afa9-4a5a-a723-248700681ec7}:1.0", - "{45154fcc-95d4-4db3-845d-ac398d12c761}:1.0", - "{305e880b-14de-4d5b-905f-a0a282e5c028}:1.0", - "{70b2b3e2-bb75-459f-9c7d-c9e16ba1c36c}:1.0", - "{e9c779ca-b0be-4de9-bc34-5a088a4cb76f}:1.0", - "{286b831a-3348-434f-b68f-26079ca6912b}:1.0", - "{3ffd3320-cd9e-4128-bedb-84c610d3ef58}:1.0", - "{6eb1b4c3-1f8e-49c9-a87b-d912318daa81}:1.0", - "{51195485-3aae-420d-a5dd-351d36d5a659}:1.0", - "{b9e80807-03b0-494f-8b54-6831cf2b3687}:1.0", - "{61df6a9b-a47d-44a6-a287-99f361af2fe6}:1.0", - "{d6453e87-9c99-4947-9dff-b7a005e4595b}:1.0", - "{d7bec38e-8696-4b1b-9bad-e0b5d0f25e3a}:1.2.6", - "{336c841b-bca3-49f0-92dd-2586b83de8f0}:3.7.3", - "{4a43a543-2b50-4168-90ee-0d00a26922af}:1.0", - "{8b7ec326-f8a2-4e50-872d-e3d734cc6ca8}:0.3", - "{e6602f26-03a6-4ee2-919a-aa9edcb20d33}:2.4.1", - "{6db0391e-485a-4bd1-bff9-49a881f7f426}:1.0", - "{f88a6b91-0f23-4fac-8ee9-1d254624758a}:1.0", - "{7997b480-4d16-478a-a700-063485bf9d86}:1.0", - "{0f0cc1bb-c2f2-4ccf-ad73-7ccfa2b63b7f}:1.0", - "{8cd79cab-45a1-4021-adcb-ec31dd06a942}:1.0", - "{bb13e854-179a-4447-b0f4-79926817d491}:1.0", - "{b18814a7-00fe-4e23-8d52-1ad95b9c1d8b}:0.0.7", - "{ad145d38-3883-4970-bb11-703b30e1ad1f}:2.0", - "{e2e4fc65-4728-4d13-8e0d-466f8347560f}:1.1.0", - "{69fb889d-4798-476f-a51e-065d348571e0}:1.0.0", - "{9fff5cbc-e9b5-45ce-bacf-b0a685a5fa8e}:4.6.1", - "{92bb6f12-95aa-4a1f-965a-3de2e0400db6}:1.0", - "{c0782e0f-a4ac-4a31-b435-9744366b4e05}:1.0", - "{71fda3ce-8dee-48e3-8d16-900a8e415a3c}:2.4", - "{3d7a6c7e-e989-42b4-9e05-061a86d47a90}:1.2.4", - "{724ee941-45dd-4dc3-abf6-fae5d1fc3007}:0.1.2", - "{b7ea3db9-fdeb-42bb-90f8-71a9e25b5d35}:2.0.8", - "{bda466d7-77c9-42c5-8d7e-4f5f8e6bebb3}:1.0.1", - "{ff0f0ead-aadd-4fab-b705-d6c11b3ce9e5}:0.8.1", - "{78a92715-e6a1-48dc-8074-cf7f132d3887}:2.2", - "{b0c773df-06be-4f53-bbb7-370628c453a5}:1.0", - "{14b63b1e-388a-4633-8dff-285327d79157}:0.9.3.2", - "{f194db12-09c3-4b85-aad6-0876b3ad1822}:2.0", - "{177fb958-baa2-4f9a-91b7-627b78b28592}:1.1.2", - "{86386225-02eb-434c-bf50-df8a0e9e3aac}:1.1", - "{c94208b0-9ae6-4cd6-8aa2-002271de09c4}:1.3.19", - "{361f1382-9e97-4b58-95a5-336f1887a8c6}:4.0.0", - "{4faee922-24df-4db5-8385-73341e83a038}:1.0", - "{77b2ae39-67b7-4f0c-a262-96357e44c69d}:1.1", - "{413341ff-40be-479e-b4b4-c70d92423f6b}:2.11.7", - "{a57d73a8-12e2-48ad-ba06-51e52b30272a}:1.0", - "{a2363242-965e-11ee-b9d1-0242ac120002}:1.0", - "{4921bfc0-9f11-462d-b763-d9dfc8955996}:0.1", - "{11b56c26-7d36-4123-8171-4c45e169f71e}:1.0", - "dkk-to-fjd@example.com:1.0", - "kmf-to-xcd@example.com:1.0", - "{bc2006b7-972c-4155-9024-4407ab675c17}:170185295", - "{fedbf205-f54b-498c-820d-5a7c0238b010}:170085295", - "{bc1e08ba-85e7-11ee-b9d1-0242ac120002}:1.0", - "{a2eb0a8a-5859-4baf-a73b-ebed8ba4ab2e}:1.0", - "{eaeb2915-65db-4597-9763-4e241a2ba899}:1", - "{6e65a265-a523-132e-1ba8-9a6543216552}:1.0", - "{af812d75-dd6b-4d47-832a-62d9e7f884e3}:4.0.6.0", - "{906177cf-3cf5-4b6f-a89d-ef90f05a4b5d}:1.0", - "{4d2d0b41-f0f0-43f6-bfb3-cf1981f14f0b}:1.0", - "{e5133f8d-eeeb-4de4-a082-c3e9ec367662}:1.0.6", - "{86325ed8-bdde-4ca0-b613-b8275762e0ff}:0.8.1", - "{992fbab3-76c7-4a29-b69f-432bed9dfdc6}:1.1", - "{11601bbd-7527-4079-9a12-ba18fc61af47}:1.0", - "{1e872157-4df3-4480-9a71-15ae9579b976}:2.2", - "{5b0dbd04-0d67-4f10-886d-695a272a7f20}:1.0.1", - "{994e3170-152b-4e5f-883f-57265b85aaa7}:0.8.1", - "{ff713733-aa5c-4663-a309-bc83b9775242}:0.1.1", - "{5ea38287-1ae8-4fce-ba13-20f796a1718b}:1.4", - "{2a615a97-45a4-4c81-8f14-4d2c3cb40bfa}:1.1", - "{6ff10675-399f-47cb-bf27-bdc6ee7e2a92}:2.0.0", - "{f034f303-e4be-4b27-9f8a-5fb389b7496e}:1.2", - "{acb39c5b-24de-4555-925b-731586a9a086}:0.1.1", - "{810891ff-21d5-4234-8605-020c1640282b}:0.6a", - "{d58fa730-969e-41f9-a63c-24a2ac25fdf8}:1.0.3", - "{63f5302f-ec19-4846-886f-e39c09304748}:1.0", - "{8c78d14b-7b30-4952-9224-0eec11656fad}:0.1.0", - "{42ec1b93-6581-4822-8b01-4ffbdbb5ca6a}:0.1.0", - "{054981f3-ad40-492d-b28b-85490693e77d}:1.2", - "{81ac4560-98f6-456f-ae4f-0f34a83fd016}:1.1", - "{87fdb8fc-3c74-44a2-b0e8-ff289760a3a5}:1.3", - "{2c34c640-6c3e-433b-9bae-cf3ff4188663}:1.2", - "{58d9e6b5-d28d-4bcd-a617-14162ae0d3ba}:1.0.2", - "{4277cdf5-ee2a-4fa4-bc79-dd0a288ce0c3}:1.0", - "{96f3f2b6-a1ab-4483-8ac1-fb0a462e6424}:1.0", - "{603b9b84-2d9c-4850-bb1b-365594729632}:1.0.1", - "{7b56b39f-7a42-4773-aef0-b7ea0264c979}:1.0.1", - "{2024f33a-1cd1-477a-9b00-a72c1ba6a027}:1.0.1", - "{36a3c45b-21a3-4b03-b07e-bc41ecbbfa45}:0.62", - "{563e5995-cc23-4710-bbda-8b850be8ff82}:0.62", - "{2fb45fcb-ebdd-48f1-ac34-c13ff046ff91}:0.62", - "{fb55b9f9-0d3f-44be-9c2d-88261bc87be4}:1.0", - "{203a4109-4dc9-4499-ac4c-8e47f280834a}:1.0", - "{6ddb27c6-df92-4ad7-854d-fabeaa5739d6}:1.0", - "{147a3847-82e8-4341-87b0-8151a978c8b5}:1.0", - "{cadaf499-ef44-41c9-b349-ed568626fc31}:0.8.1", - "{80839915-5047-4d3f-a79d-603772cf94b9}:2.0", - "{4da3b1d8-86d4-4920-9c9a-135a6ef5a109}:1.0", - "{b992f447-423c-48fa-b44a-51e5c034a7b2}:1.0", - "{6673ea5a-c9ee-4c89-b94d-8efbf1109049}:1.1", - "{4a5535f1-b1a9-44a5-81df-462464d898fb}:1.3", - "{0ec1344e-1f55-43c6-8362-f7ee9096db97}:1.3", - "{f73b455c-3a37-41f7-a84b-0ee055669a2f}:1.2", - "{fcaa886d-1382-4ca9-b729-48e25db03334}:1.0", - "oc88-assistant@localusr:0.6.0", - "readingmodeaura@example.com:1.0", - "cosmicdustflow@example.com:1.0", - "sirius-black-quotes@example.com:1.0.0", - "ironshell-addon@dongphutien.com:1.0", - "d19479ffa1123dec12a3d1f97652bff9da333490@extension.com:1.0.0", - "{97086462-e435-4f99-bec5-eea36e8f54e4}:1.0.1", - "close-friends-quotes@example.com:1.0.0", - "page-info-helper@example.com:1.0.0", - "page-word-count@example.com:1.0.0", - "image-highlighter@example.com:1.0.0", - "highlight-saver@example.com:1.0.0", - "quick-helper@example.com:1.0.1", - "quick-text-highlighter@example.com:1.0.1", - "{70205c9e-9c85-4cde-89d3-64f9d667cd8b}:2.0.3", - "{c7348757-f353-49fd-9433-74688f8e5972}:1.9.6", - "{5abf7819-e836-42e1-9553-c5da26953049}:1.0.1.5", - "{95b83100-f0c6-4b62-b3fa-7c1b2c0af68e}:3.1.11", - "{d81dc2fa-b6f1-4112-b65f-f5f52468f1e8}:1.6", - "{fc3703ad-0ac2-4602-9019-9609e6484c91}:1.2.78", - "{b8bbcea3-7187-4dd3-8183-be1c7a4d7216}:1.2.3", - "{909fc3a6-a88a-4f99-9c58-661317e3d226}:1.1", - "{75802d51-8bc6-4038-b5c9-a2e49b6ea28a}:0.1.10", - "{69291c5b-bf91-4068-808d-b1f84f64e5c9}:1.6", - "{4ab3ca79-e7c5-4d58-bf37-d09335003d44}:1.6.16", - "{33eec846-b438-4a82-a4d8-26a3f2a0be62}:1.1.0.2", - "{f669002c-bb5d-4356-9583-42190cf0357c}:0.2.6", - "{246ac5ce-0365-422a-821d-5eaf3bc9c7c9}:1.0.5", - "{b793209c-1433-4056-8810-1c34d6c5c56b}:1.0", - "{09e97390-610b-4c2c-8dc9-ec986be2cc15}:1.0", - "{8b0d75d3-66fc-4209-a519-4478df2b8578}:1.0", - "{f3cc80d8-ee1e-426b-992a-2d8223ca6b42}:1.0", - "{d800e217-9062-4299-bea0-736d0db2c1fb}:1.0", - "tab-memory-saver@example.com:1.0", - "{31b8af3d-ae50-4560-878b-50f098fedacd}:1.0", - "{7f099da7-6de7-4807-ac44-9107fc1a0ee9}:1.1.0", - "{af82c77d-e2ca-4784-b151-43655a31f30d}:2.4.1", - "{8c0af265-2d1d-4700-aa18-5389655401cb}:1.0", - "{88b0a4fc-df77-4dfb-a8c4-2b80a1c94e22}:1.0", - "{64756a4c-5010-4699-87db-04cdfee37cad}:1.0", - "{8dd7bc6c-0751-4ace-9804-8d215732d7f9}:1.0", - "{49a83fb0-d5a1-44f1-a3eb-5c185191d187}:1.0", - "{952eda4d-8f5d-45d3-8c81-3d065d2b5f7a}:1.0", - "{a48d8333-0293-4a19-861f-b1a309c68a9a}:1.0", - "{b43a4631-dc87-42d9-b77e-8e5fd5f2a8a1}:0.1.5", - "{cea81df6-229d-4427-801a-4961166bd9d2}:64.63.7", - "{bae173dd-ca2f-403b-b4a9-f3e2f71723c4}:2.0.2", - "{08a2df55-e49a-48a7-a0f5-316a3093d70f}:2021.7.9", - "{7015705f-1691-42f0-a14b-cb83e056d69d}:0.8.0", - "{0aeab4fc-7613-45cc-8b54-e4a17f00e10a}:1.1", - "{4c2e819e-5ffe-4447-8baf-2a3c6a656003}:1.2", - "{14f778ff-d440-4b9e-80fc-a9fdc0bc60e8}:1.8.2", - "{971b5f74-90e7-4c8f-8a54-344f3c115cc5}:1.0.9", - "{db70d158-e872-4829-a75a-eedd35c26b61}:11.5.4", - "1234j1234ik12n34kn@oschepkov.ru:2.0", - "1234j1234ik12n34kn@oschepkov.ru:2.1", - "{55f59856-f016-41ed-bee9-de6d322e4ea3}:0.9.0", - "{6e4468af-efc0-4adf-adbc-fc530e2b478a}:1.9.1", - "{54eed942-fb41-4c80-b3d8-b928dd308fcf}:1.4", - "{027328fc-da0d-1b06-aada-28db297f3b8c}:1.2.9", - "aa2emi7555@gmail.com:1.10.5", - "rajadewa@gw.com:1.0.1", - "rajadewa@gw.com:1.0.2", - "rajadewa@gw.com:1.0.3", - "rajadewa@gw.com:1.0.4", - "rajadewa@gw.com:1.0.5", - "rajadewa@gw.com:1.0.6", - "rajadewa@gw.com:1.0.7", - "rajadewa@gw.com:1.0.8", - "rajadewa@gw.com:1.0.9", - "rajadewa@gw.com:1.1.0", - "rajadewa@gw.com:1.1.1", - "rajadewa@gw.com:1.1.2", - "rajadewa@gw.com:1.1.3", - "rajadewa@gw.com:1.1.4", - "rajadewa@gw.com:1.1.5", - "rajadewa@gw.com:1.1.6", - "rajadewa@gw.com:1.1.7", - "rajadewa@gw.com:1.1.8", - "rajadewa@gw.com:1.1.9", - "rajadewa@gw.com:1.2.0", - "rajadewa@gw.com:1.2.1", - "rajadewa@gw.com:1.2.2", - "rajadewa@gw.com:1.2.3", - "rajadewa@gw.com:1.2.4", - "rajadewa@gw.com:1.2.5", - "rajadewa@gw.com:1.2.6", - "rajadewa@gw.com:1.2.7", - "rajadewa@gw.com:1.2.8", - "{d56b84d3-16f1-4557-958a-b1d617b4d410}:0.3.6", - "{ffdc3cf1-e8bc-41bd-ba09-2cf893ad16ee}:0.4", - "{fa286165-2241-4474-8d5c-5beb76efd4b5}:1.0", - "{2918fcbe-95de-4145-9fc8-d23423a07b30}:0.5", - "{304b461f-29fc-464b-8b02-0d34e0b093fc}:1.0", - "{2a39b184-b8ba-4742-91d2-859033062462}:1.0", - "linkharvester@example.com:1.0", - "{e4183187-2b7d-4768-b3d2-f2bc633b5292}:1.0", - "{3d0c864e-55e2-4bd2-894c-28fc4a563ea0}:1.0", - "{86379956-5b67-400f-a5a1-4224091e81ab}:1.0", - "{94bb426c-46c2-49eb-987a-60c35a268426}:1.0", - "{869f318c-2cfa-4e52-af8d-9e4bd058badf}:1.0", - "{6bb21b92-7629-471b-848a-b3afac16f477}:1.0", - "{f906feb6-778b-4660-a75c-e22462be35f1}:1.0", - "{1261b094-7fe9-48a4-afc1-f23134cc28c9}:1.0", - "{14c7f1e4-1487-457f-bbac-0c1942cc7fd9}:0.4.1", - "{a292e03d-b34c-43bf-b3ac-2b9dd65a7c74}:1.0", - "{06510704-6c3b-4539-b12d-6c09ad19b704}:2.0", - "{cfa3b508-8c2f-4fbd-a934-990b5a2eed8b}:1.0.0", - "{5f3dac6a-159e-416b-aa54-1e864c46aea5}:1.0.4", - "{e1eb817f-850a-48b2-97e0-6fa1df26fc0b}:1.0", - "{9244b61e-07e1-4bb5-bbe6-52d72891612f}:0.9.3", - "{e4db92bc-3213-593d-bd9e-5ff2afc76da7}:1.4.45", - "image-picka@eight07.blogspot.com:0.17.0", - "{be620f31-d903-4885-a71c-ce35b3131052}:1.0.14", - "joao.buchholz49@gmail.com:1.4", - "{fc4bfc34-7ab7-420b-a96e-367f7477e840}:1.0.6", - "{68d0951b-3895-49f8-bb87-7897d2cc680c}:2.0", - "{657b0d75-79b4-4a36-a620-0c30e9edaa55}:1.0.0.9", - "{909be173-d62d-45b1-bb4a-963105538355}:1.3.19", - "{920fe4ca-6802-4e77-b3f8-0c753a2ffd29}:1.0", - "{85c82ae1-1fef-40b3-b1ad-facc41f324b8}:0.1.1", - "{7e705ab4-f7c3-44b8-b049-b417695cf911}:1.0.0.11", - "{eaa4a190-922c-4dbd-b023-d3716b0d7250}:1.0.2", - "{8f6f22b3-cbaf-48d7-99f5-ca3d0b1d47eb}:1.7", - "{82ed9405-e262-40e8-8381-8c6cd6667fa0}:2.4", - "{149a082f-b89a-4f2a-9e42-3fa486c7de19}:1.2.6", - "{c414c5f0-ad15-418f-9443-8efe14d9feed}:2.2", - "{b9b05a61-7dc9-448d-8fcf-7a531f93230b}:1.0", - "clashofclansgerry@gmail.com:3.2.1", - "clashofclansgerry@gmail.com:3.2.3", - "clashofclansgerry@gmail.com:3.2.4", - "clashofclansgerry@gmail.com:3.2.5", - "{670b4f02-8e45-45b7-a4d5-36789b19c284}:1.7.4", - "Saitapuhdefining@gmail.com:1.0", - "Saitapuheroes@gmail.com:1.0", - "{f66d7c75-ee55-475a-9355-fa0d2322ca9c}:2.2.50", - "luffypreviensense@gmail.com:1.0", - "monkeyluffygains@gmail.com:1.0", - "ve88.name.jin@amo:1.0", - "bu88.name.jin@amo:1.0", - "98b7da5fd5b5646b42c8d12c3d6593d25038ae69@extension.com:1.0.0", - "softpapertexture@example.com:1.0", - "minimaldarkcalm@example.com:1.0", - "softcontrastworkspace@example.com:1.0", - "blur-enhancer@local-addon:1.0", - "addon-4f2be083b63a4be9bf798d3531ba5ff6@moregen.com:1.0", - "ironmark-addon@dongphutien.com:1.0", - "{46eca58a-ad33-4b26-83d0-add13086da52}:1.0.2", - "albus-dumbledore-quotes@example.com:1.0.0", - "88betgrcom@amo:1.0", - "win678@jp.net:1.0", - "clearpath-addon@dongphutien.com:1.0", - "softchakraglow@example.com:1.0", - "888vi.tv@addons.mozilla.org:1.0.0", - "hm88.co.com@extension:1.0.0", - "zenflow-addon@dongphutien.com:1.0", - "softaura-addon@dongphutien.com:1.0", - "monoxpro-addon@dongphutien.com:1.0", - "{a73ccb49-8206-47b0-99e6-73166a3f86ce}:2.2.50", - "690549dd08d71e0f65435476428d7d1fd3481641@extension.com:1.0.0", - "new_unique_email_writer_1c1b70da@example.com:1.0", - "{4363f4ef-ab88-4ac9-bbfd-985d3c5f3427}:1.0.4", - "{902b7f3b-4371-4468-ad95-7cec461e1c7a}:1.6.1", - "one-hundred-years-of-solitude-quotes@example.com:1.0.0", - "pride-prejudice-quotes@example.com:1.0.0", - "le-petit-prince-quotes@example.com:1.0.0", - "gone-with-the-wind-quotes@example.com:1.0.0", - "{0100df22-f7bb-4c0e-af74-7b2fffc2f43d}:1.6.1", - "auto13-theme@example.com:1.0", - "{01517389-d592-4c31-bb05-fdc46272cdc0}:0.0.8", - "{0af41f07-6e38-4fa1-a9f9-0a0c2add7009}:1.0.2", - "funny-loving-kids-quotes@example.com:1.0.0", - "@vfi-ufeso-cit4hq:1.0", - "@vjgxpe-wua-sxp7bx:1.0", - "@snkyow-iyzvow-twprp-biew9b:1.0", - "@rqc-xtg-qa8a5c:1.0", - "@osn-aktvit-iptj5k:1.0", - "@htrtks-czzyww-gkw-aucw-riix3k:1.0", - "{e0b22c31-9e1b-4c2f-8d67-2a65b7b93f11}:1.3", - "new-day-energy-quotes@example.com:1.0.0", - "random-humor-quotes@example.com:1.0.0", - "amazing-memories@example.com:1.0.0", - "flirty-crush-quotes@example.com:1.0.0", - "quick-page-notes@rg.example:1.0.0", - "quick-notes-d4f07ae4-6902-4b62-8336-2aa3231cd5f5@example.com:1.0.3", - "page-helper@example.com:1.0.0", - "link-counter@example.com:1.0.0", - "{9a46da8b-91e3-475b-bc1e-1219bf129e47}:1.0.0", - "trendycaptions@example.com:1.0.0", - "broken-heart-quotes@example.com:1.0.0", - "goodwishesquotes@example.com:1.0.0", - "specialblessings@example.com:1.0.0", - "goodwordsquotes@example.com:1.0.0", - "{841474e5-19f1-40fc-8c82-974a43f854fc}:1.0", - "{bfc97fde-7206-4dd2-914b-c2349f615f90}:1.0", - "{0ef42514-0ffc-4019-b402-bbf2900b27d7}:1.0", - "{a86227d0-0473-4097-bc6f-17c7505450ad}:1.0", - "{8745f77d-891c-4226-bbf0-0e6c90d5379b}:1.0", - "{fb064397-df3d-40f4-89d9-ffff8cbfcd92}:1.0", - "{c602a37f-9eab-40a5-b643-cceceff90132}:1.0", - "{7a0ed0bb-dc7e-4ffa-a1f3-cd0a2f7ffe59}:2.3.9", - "addon@pepito.com:1.0", - "addon@pepito.com:1.2", - "addon@pepito.com:1.3", - "{64a5fb85-63a5-46ff-8fa7-cdd5242ed9e2}:1.0", - "{49aa8e5f-f9d6-4556-a981-120b048e8636}:1.4", - "{9e20b5a3-725a-4908-83a1-8d0d029a6d75}:1.6.1", - "{d1d8e39a-47bf-4d92-bae5-d148e990d041}:1.0.1", - "{b162a470-9b23-4f39-8c2e-81db577eabc6}:0.1.1", - "{5b33620d-3944-45be-bcfa-4f1e33e3176b}:1.0", - "{8d5ee4a8-e511-4a31-9336-df9c7a27de44}:1.0", - "{443f7782-3f45-447e-82fc-1ac800037fb0}:1.0", - "{b8cc5459-2f1d-434c-95a2-fcf8c261d464}:1.0", - "{3d032c19-3805-496b-8ec9-51f7daea8f44}:1.0", - "{16b4a65b-eb91-4da2-99a5-efbdd7c987bc}:1.0", - "{a7bc596a-816d-4aa4-80e0-e357864d5209}:1.3.19", - "{866ed953-3acc-481d-a44b-5d59621675c1}:1.7", - "{4153a487-f9c0-4831-8f0f-4b58f9fd5729}:1.0.2", - "{f66e8141-7e3d-4ad3-934b-f229d223346f}:1.0", - "{d2466fc5-dfc7-40d8-87b9-d917975c2a92}:1.0.0.7", - "joao.buchholz12@gmail.com:1.4", - "{25c29c91-fa5e-44bd-8af5-1c75a70e9946}:2.2", - "{b59fe48c-aee6-4d30-8d0e-e3ab73c3d591}:1.69", - "{a561e7df-33b4-4914-8c0a-50bbcb18f93a}:1.9", - "{c6bfd208-bf8f-48ad-88bf-2d6b51333e23}:1.5", - "{5215ccf3-5ba7-4449-8692-bb67b6e6466c}:1.8", - "{3a6f4679-f854-4c08-b926-27825da55d16}:1.0", - "{24db1f6a-f96d-4e23-b46a-bc4f6a6cb661}:1.0", - "{6fe6349c-2846-4b10-b159-fe7d6bd91729}:1.0", - "work-shield@example.com:1.0.0", - "clarity-mode@example.com:1.0.0", - "{8b788e65-b887-4ae8-ace9-afcb44523b82}:1.0", - "{c624289f-62c3-4c03-bc8c-51ba445499e5}:1.0.0", - "{497e9f79-7f33-46cd-a084-3d12b2f17d8b}:1.0.3", - "{843a5c97-b309-4c4b-ad80-932648c91e8e}:1.0.5", - "{8f9095c6-6324-473c-b41a-4bacce8f396f}:1.0.1", - "{92320978-c80e-40cf-b34b-07401d572bd5}:3.1.0", - "{ec2c613f-c2b1-44ca-bc8c-750d7b6987c2}:2.3.5", - "{14b1f7aa-4b3f-4ecb-8029-b514d1381a33}:1.2.6", - "{cb24c2be-4a46-42a4-b679-4ba3c9ab3f53}:0.1", - "{22853d7b-a858-410c-839f-e08537b819e9}:1.0", - "{d7478e54-9fe7-4f1d-b097-04182fe338c9}:1.0", - "{2f6c7bd7-b4a7-4567-8254-85d15dd86d80}:1.0", - "{819edef6-b62f-43a0-aab1-3fc9cf3e413b}:1.0", - "{60d4076d-9ad3-49fd-9a04-e5bad6ac69cf}:1.0.3", - "{9be96407-df90-490d-a84f-501364edf141}:1.7.4", - "{5b19ef9f-87ac-4b54-b9c7-a8303344d6f5}:1.0", - "{95450671-6200-4ae5-b677-9a3d217a2f76}:1.0", - "{665f1121-610c-4328-976f-1022cac11917}:1.0", - "{f5aa73c3-e16e-4e38-8226-8a5384da1591}:1.0", - "{5daadb9c-d53a-4f7e-ae26-d7621753f6f3}:1.0", - "{a93182f2-9291-4d09-9cc5-40eabcb9a904}:1.0", - "{209261a0-7f40-47c2-8ccf-91b548c2e933}:1.0", - "{c4031fc2-12de-4dbd-86bb-7346240f3241}:1.0", - "{8dde4868-a46a-460a-87a9-2c5739702324}:1.0", - "{83c9eb3f-f5ef-4ecd-aaa1-4c36cc85d7bb}:1.0", - "{e3d84981-6105-4a18-a360-264dde2f733f}:1.0", - "{7eaffbee-9caf-4620-8734-d6fe35148e96}:1.0", - "{9b5037c7-81cc-42f2-99a1-029037a30e0a}:1.0", - "{7b4262e6-c8c0-4a10-9897-cd1f8aba2216}:1.0", - "{b6f7a098-be38-43ba-b7d7-0de9b40bdaec}:1.0", - "{d5e64928-13f9-4bb1-bd3a-d6e3cec0efb4}:1.0", - "{f3e2a5c4-808a-45d6-beb1-751c26902a10}:1.0", - "{4d0e1581-87ee-4d6f-828a-9cf62db6ed26}:1.0", - "{1e060fbe-bd5a-4461-b15a-a169cf7f8415}:1.0", - "{63d737d9-06ee-4b77-845e-ff4b142ebad3}:1.0", - "{bd3036ec-cedb-4ec5-976c-6f728f759b38}:1.0", - "{1536db8f-d75f-47d3-8e12-bfde267e2e4b}:1.0", - "{c2ce722b-2f71-4608-8dfa-f2c306693385}:1.0", - "{6c1fde34-067d-44d1-8a23-8f7d2ad20a05}:1.0", - "{5a7ce2cc-0eb8-4ebe-a871-35902f172b01}:1.0", - "{068658ef-d4bb-4c2b-9853-55dadf0c5cbc}:1.0", - "{436ad640-51e1-4d01-b858-da6eee86c71f}:1.0", - "{dad8a012-3b5f-4ceb-ae9d-8b17bf9d69c7}:2.2.50", - "{7040076f-1687-4e3a-afd4-3957b24bcaa2}:0.2", - "{31a7042d-df26-45d3-9609-12cce137858d}:1.0", - "{35ec0f57-b402-472d-8c23-46f62c684d02}:1.0", - "review-collector@example.com:1.0", - "{ca389098-c05d-4312-ab1e-cf6f6de8b6b6}:1.0", - "{56e677cf-c91b-4881-9702-5fabf34e6692}:1.0", - "quick-definition@example.com:1.0", - "{0cfa2d9a-00ce-46e0-aadc-019ef6ce13cd}:1.0", - "price-comparison@example.com:1.0", - "quickreply@example.com:1.0", - "{7d50ffdb-b750-4e4c-a72a-e1806dfd5070}:1.0", - "{af2e7a66-2d55-4536-a7d5-f5043f67cee9}:1.0", - "{0d6af807-50e0-41e7-9b1a-6875987c0793}:1.0", - "{abbc5e4a-b8d2-4226-a7de-19abb80c0c2a}:1.0", - "{80d64efa-0834-4e38-8954-9afa64c2d88d}:1.0", - "{80b61f59-3122-4b84-9b50-30f7f8d624cd}:1.0", - "{a652efeb-4a39-4424-9350-85874a47103d}:1.0", - "{89859bde-e69e-442d-9303-960c649b28a5}:1.0", - "{b903bdd2-7bab-4547-bd96-8af3d9ed359f}:1.0", - "{0708b259-91d8-49cf-bad1-c357d0d35836}:1.0", - "{dabbc18f-8808-4c69-8a1f-e54adf6fceb4}:1.0", - "{4bd7fd3b-ce18-40d8-aef9-5b62af07d1e4}:1.0", - "{835c1e3b-5269-444a-a81f-5d9207aeaee5}:1.0", - "{49b787df-5e33-4735-9567-459af7ba943a}:1.0", - "{f02df790-93a5-440d-a9ed-06df4b8b96f4}:1.0", - "{57b54c7e-ee07-4946-89f1-992419666411}:1.0", - "{756294c2-ac57-4cb3-9c60-973e8f9635a3}:1.0", - "{c243d68f-f11e-4393-b5c5-8b704ae1e7e6}:1.0", - "{d37d3105-784d-4923-b21d-02ea2a8b8d94}:1.0", - "{a098bf68-2b87-4efc-b4fe-9d75b2ac34cf}:3.0.36", - "news-summary-ai@example.com:1.0", - "{ff4b6bdc-f972-4593-8c61-90383fb76f5e}:1.8.1", - "{87728dd9-51d0-4e15-93a7-75b8b4ccd214}:1.2.5", - "{12e87b86-5752-4b74-8260-654d82928fee}:1.0", - "{edd47591-dcd4-4c33-bfb0-cd7e2ad37c19}:1.0", - "montanalynejb2415@gmail.com:1.0", - "yvesservicezn9159@gmail.com:1.0", - "guillaumepailleki4877@gmail.com:1.0", - "brandeenevejq6092@gmail.com:1.0", - "{c0257452-ac3b-4d2f-9b73-f586992f9bb9}:3.0.6", - "{657621f9-a03f-4d12-b65f-461cc4a118be}:1.0", - "personalized-card@example.com:1.1", - "{767a1979-7cf5-473e-afce-e78e5bafffa5}:0.3", - "{69feb2c8-90ad-407f-8dce-5de98bc437ed}:1.0.0", - "{52f8eec4-cc7c-4c56-98e6-0d7f07e72329}:0.1.26", - "{8c0527a9-ac8e-44f2-a68c-2a2f4868e3a7}:1.4.3", - "{c521a801-122d-48c8-9317-f00d3fc1a988}:1.0.0", - "darkpatternguardian@example.com:1.0", - "{c89bde48-cfeb-4dae-b173-d1dd0d21045d}:1.0", - "{0ee6c0dd-5449-4e34-b86e-7887478e1252}:0.0.1", - "{12202009-d68a-4ad4-a0a5-f35ed6638e6f}:1.0", - "{edba8461-1e5b-4c73-ad95-f74a9b5d953b}:2.0", - "{898f4cc3-51cc-4c17-a531-20395a4fea53}:1.0", - "privasearch-switcher@gmail.com:1.0", - "geoquerypro@gmail.com:1.0", - "{c6fd5270-a9d5-4e37-8cb9-fafe20525861}:1.0", - "{60278f12-94af-4c48-881c-02422f3aa3e9}:1.3", - "{9c66d84d-a1c6-4a24-9af0-da720f35c801}:1.0", - "{d99ced4a-e12f-420e-b2ce-06d64782d329}:1.1", - "{26ea2472-2b0f-4a70-aeea-d261107e04cb}:1.0", - "apitester@nexustech.com:1.0", - "{7e9a8c8a-360c-4a68-80b7-94eb71549249}:1.0", - "{8a113f9a-db9c-439f-8e69-f034b4199a9b}:1.0", - "{48220612-6ce1-4791-aafd-9e3d8a8ad7bb}:1.0", - "{24793452-499a-43c2-a460-2c8fc4caec5a}:1.0", - "{efce726f-e61f-4371-bef7-54c15c7a31c7}:1.0", - "{e611f54d-2d2d-4cf2-b7c2-fdd573248b67}:1.0", - "{f7d1352d-751d-42cf-ac55-fbbb1760e8e2}:1.0", - "{7f10eed0-a4c1-4e80-9450-d8c6b03fc640}:1.0", - "{af94c83a-7960-435c-aceb-b7ffcf9b0ac7}:1.0", - "{278e19cc-1c7b-472e-8a1d-a6ac2dd34bb0}:1.0", - "{4c598532-1242-4f3d-b227-8bd6b0ce8c6c}:1.0", - "{c6cad09f-f658-48d7-b62d-ccbfb10451a3}:1.0", - "{58afcb6e-9a48-4a62-ad59-4b8a88623c3f}:1.0", - "{9a08ca95-16a8-4676-a33e-728534b56a46}:1.0", - "{a8ad0d75-f93b-40fc-931a-10d966555eaa}:1.0", - "{6defe8a3-72ae-41a8-a414-17949b7ad612}:1.0", - "{0ec7382c-aa51-4677-95a6-5755fe99db79}:1.0", - "{acfce300-f983-4d14-a041-b7539f8b54e8}:1.0", - "{305dd6d2-d09c-4f6e-bf06-3d61f7f36556}:1.0", - "{066ca8c4-eee5-4306-8e15-10b51dbc3c42}:1.0", - "{c84ef4e9-5a69-401c-9baa-eb621d080d98}:1.0", - "{47030dfa-3657-468d-a637-8461052d460e}:1.0", - "{64d998a1-d76b-481f-9bf8-58773269a116}:1.0", - "{05b54f2b-fcee-4045-8b2d-9150e1f21e67}:1.0", - "{bfcb65fb-e5d7-4f2d-b053-f3eb590a8059}:1.0", - "wai_aria_landmarks_checker_extension@gmail.com:1.0", - "open_graph_protocol_injector_extension@gmail.com:1.0", - "{938b3469-85da-4420-89f8-cc8b8d5695af}:1.3", - "{6ef8aee6-b063-444a-8151-8420bb4ac408}:1.2", - "{7b6d742e-11a4-4246-bc1a-8e16415c0209}:2.2", - "{89b421a1-066f-4ae0-95c3-7a365312d477}:1.0", - "{a45a2c08-54da-4f4b-bfca-e6c6b23c4371}:1.0", - "{cd223078-84e7-434d-bfa5-4359976e10d1}:1.0", - "{d84c969c-11f0-476a-aa99-95bd377eb904}:1.0", - "{6fc8e9d3-1929-4992-80fb-b5439c5a8a54}:1.0", - "{33472fcb-912b-4484-aae3-6196f30086d3}:1.0", - "{b3b2cd61-4bbf-4b45-af54-a4e23c794fa9}:1.0", - "{161e2513-2548-4203-9187-9eabc248de87}:1.0", - "{a62c9fcb-4e83-4ac5-b7b2-9f6bc9efea0d}:1.0", - "{46980f80-545c-4970-a3bc-f65cc96dae66}:1.0.2.1", - "{13cc90a1-0bd3-4f1c-a505-a177b99efaff}:1.0.0", - "{df44832c-c75b-4a57-8467-2ecb4f0232a1}:1.4.2", - "{6351596f-1e89-4d10-ab15-e84fda02f55c}:1.0", - "{cee4d527-445c-4cf3-b0c9-ce3e0b634dbf}:1.0", - "{22b2ef53-7e87-4ea5-a4ae-432543286745}:1.0", - "{2464c2b8-6550-4710-9dd9-6b858df8d70d}:1.0", - "{c625f78c-1e0d-49e5-8e09-3f5d442f896d}:1.0", - "{f85db48f-92b8-4e39-9306-53e20c53f7b2}:1.0.0.7", - "{57418ece-4fd6-4ca7-9a95-f7d6915b429d}:1.0.0.7", - "{dcb4e33e-239f-4606-834c-cc71983d67c2}:1.4.3", - "{9d87f3d3-c8f2-4dac-8a1c-9cdd007ae45a}:1.1", - "{def8daca-e814-40f1-8f18-ceaf6fa862da}:4.2", - "{07bb6b81-c1ed-459c-95b5-06b88e2bd2ec}:1.2.3", - "{c645cd1e-b5e2-4d82-aba2-4ec7f230d50f}:1.0", - "{874b72c5-43ec-4e07-a724-4281029fda02}:2.0", - "{0e113344-b10c-4b11-9814-fbbab9ba80a6}:2.0", - "{474e0b1b-722a-4c03-99fa-19c3ee75b5e5}:2.0", - "{ea0695cb-ae86-42a3-b047-4a31fe8ac810}:2.0", - "{6e6a4d74-504a-4b9e-83b1-9e333dd69fcd}:2.0", - "{2cbae9f3-ba29-40ff-8b75-ebb6b57405a6}:1.0", - "{4a92a95b-c376-41ba-9cd4-f0738f841c2a}:1.0", - "{3d705843-8e4b-4f49-a3ac-25e723bd62c7}:1.0", - "{6263d184-6064-4751-8f66-87bed5289e13}:1.0", - "{41e6c2de-9c04-49f9-ad90-11d671ef5ffa}:1.0", - "{1c034f89-0c20-4697-bafb-9ab640ff21f3}:1.0", - "{e26cafd0-578c-49ab-aad5-5fbde5cfc3db}:1.0", - "{7f675737-66f0-498d-98ba-e199b55fd167}:1.0", - "{dc8e4b6c-7ea2-4175-b16a-5e288d79f148}:1.0", - "{a3bdd257-f3cf-4d44-8f52-6d23942fe36e}:1.0", - "{358337d5-84e9-4f97-95b5-3fdf95905609}:1.0", - "xssfiller@your_domain.cn:1.0.0", - "{b7374412-a214-4402-93e2-eb1a810ccd08}:1.0", - "{ab656620-5953-4859-8129-afa7d976d7fb}:1.0", - "{c7e77064-d979-4807-aa8e-68cc5ef56a5f}:1.0", - "{eba94368-658d-40e1-84ff-f12ae63eee14}:1.0", - "{09715b52-0f28-4f17-a117-69e37a14c0c5}:0.1.1", - "javascript_lint_checker_extension@gmail.com:1.0", - "{9c1a4bfd-d4ad-467b-877d-eb00f517768f}:1.0", - "{fa1a319b-a4ca-4c78-8b02-c13ed6a53887}:1.0", - "{61f73890-6d03-45de-b13e-1965e6384147}:1.0", - "{84f83dfc-8f61-4922-bc56-32db31239883}:1.0", - "{f0b308a7-d957-49e0-9ebd-effd0ee5439a}:1.0", - "{a617e4fe-edac-43b8-a67e-5ef505fbb9d9}:1.0", - "{c228d908-7ddf-4e44-ac59-886e0f31d213}:1.0", - "{46618177-ee02-4387-ad4d-6316b87b717a}:1.0.1", - "{b17ada91-ad67-4d9a-876c-dc234fb54852}:4.0.0", - "{706fda18-ebeb-4af4-bd7d-18636ba9f6f4}:11.0.0", - "popup-tab@eight16.blogspot.com:0.3.1", - "{e707dfea-88d1-407e-9610-f0ff731d0e86}:1.0", - "{4a60be0b-ce73-489e-a6e8-62efdb6368c9}:2.0", - "{ad4b5fca-ae73-4c32-a76c-fc4bf6a4737f}:2.0", - "{a6ee7630-9f83-48ee-9d6c-336d839643f7}:1.0", - "{89827127-c9e1-4367-adc5-aedabad6d949}:1.0", - "{abec9df3-04ce-435a-b4b3-70fdf7a294e9}:1.0", - "{14c3498d-3e91-4e91-8234-6e6dbb5f31ab}:2.0", - "{b92716c8-fa46-43f0-9cb2-8777ea1a5f5b}:2.12.0", - "{0a7689d2-4e56-4097-87d3-707a15aefe93}:2.11.7", - "{49aa8e5f-f9d6-4556-a981-123b048e8636}:1.4", - "{49aa8e5f-f9d6-4556-a881-110b048e8636}:1.4", - "{ca3ded4b-50a2-4cd6-972d-7739059e7405}:1.0", - "{16dec8d2-5cc3-40a8-b7aa-054aadce4153}:1.0", - "{65f1ae1d-d18b-44f6-887d-ee1c06baea7e}:11.0.0", - "popup-tab@eight11.blogspot.com:0.3.1", - "{d4f180c7-a8d6-4c32-8a89-8df094f1f19b}:2.11.7", - "{f6c0af71-6871-43a2-9dd5-199f2810c1a0}:1.0", - "{a914a123-c580-4275-92e6-634e4b2ef053}:1.0", - "{77456086-83f4-401e-b9b5-5ca308d4e6e5}:11.0.0", - "{c3ed3de5-bdce-4d7e-b698-9599c0abe2c3}:0.9.3", - "{8d115245-d2ca-48ca-8c19-12ccd8888f4a}:1.0", - "{9bb27cc9-8710-4dac-97eb-3e13ec5b5a67}:1.0.6", - "joao.buchholz52@gmail.com:1.4", - "{836142c4-c38e-4dec-a291-878723443186}:4.0.0", - "{b11b94b7-f5cc-403b-a04c-ee82e9d886b0}:1.0", - "{324da91c-cc53-41f4-ba29-9670c0c36524}:1.0", - "{0dc09725-03da-4023-95d4-f9b1f57d4bff}:1.6", - "{296ae9dd-d66f-497e-bc48-81db1a4086c5}:11.0.0", - "{531906d3-e22f-4a6c-a102-7167b88a1a63}:1.22.44", - "{fec86070-0bb0-43e8-a0ff-0ee23254a3aa}:3.2.5", - "{00bca2fe-6d6e-4342-8ad1-9a628a0ae159}:1.9.6", - "{15d85ad3-263a-445f-9670-2aabf8b70ec6}:2.2.7", - "{4ad80c8e-658a-4331-87c5-3e859c7d32a4}:4.4.5", - "{b0407ee4-2ff5-40f8-a36b-167df82ab74e}:1.6.1", - "{239c01ca-86cd-4eff-aaa4-1f804b78416a}:1.0.0", - "{a942f36b-f801-4e15-9255-61403d4990cb}:1.4.1", - "{b56b69b7-8326-4379-b036-ae0ad53b9275}:2.0", - "{6c30236b-6dc0-42cd-b3f3-17abfb0894a0}:1.7", - "{cbcdd771-fd4d-4826-b266-c0677ac144fa}:1.0", - "{15bb5488-1d0d-4c39-b737-59431a41132a}:1.0", - "{9ceb12ba-9619-48cd-866b-42179a0e0748}:1.0.0", - "{9cf0ae5d-2138-43c2-aa0b-116ea317da30}:0.3.0", - "{c5a20e0a-2d89-4d1c-a193-aa69fc3097f2}:1.7", - "{7b30b584-eac0-4c30-8526-e7ee1517bd29}:1.0", - "{6b758107-2a35-4133-a4b0-20b2d87ef601}:3.1", - "{b0f5aeb6-7231-4ab9-8c31-1d180a004618}:0.0.6", - "{d972a261-93a4-4267-93b0-706911997aaa}:0.8.0", - "{b54325b7-1311-4c56-b80c-be22608dd243}:1.3.19", - "{924d521e-233e-4fd5-90bc-5ac1a9909aa2}:1.4", - "{47b2ed84-c9e4-4d30-8282-43d9a5cde4d5}:0.1.2", - "{79287d26-535b-48ea-92f9-f91da6feba67}:3.1.1", - "{b87aa4c1-55b7-4a05-bd18-e957772abf15}:1.3", - "{e2c1078d-654c-4e3d-a616-595a8f24c0a4}:0.7", - "{58098109-5f09-49a9-89b4-1e13d8d11c68}:0.0.1", - "{0293adb1-e193-4eb8-97bd-664129c79259}:1.1.4", - "{f1a53185-21c9-4975-9fc1-93f044a67eab}:0.4.9", - "{2e90bf1b-9880-4dda-bd0a-fec5e7adfc92}:0.0.1", - "{bb55c22f-ee70-409d-af26-e218bb6e25c6}:0.0.0.12", - "{2b6cc302-ac5b-47f8-986c-ea8ebe1bf068}:0.1.3", - "{c4163293-b368-44b1-90bb-084534c4b55c}:1.6.1", - "{2ccb13f1-4188-4140-a3d3-1d7fff14da47}:1.0", - "{14a0663e-b050-4170-8b38-f9e1fdb66e1c}:0.9.2", - "{2d46154b-f412-4635-af54-003d11a4f9bd}:1.1", - "{f3b3ae87-643b-43b5-abef-e4f24be643f3}:0.1.0", - "{f092e45f-1c92-49b9-aa74-2d8dd8688a58}:0.1", - "{11df577b-14da-4a44-8414-0f4320448d7f}:1.1", - "{ce1ae512-942d-45a7-9248-ba52cbbc50dd}:1.0", - "{6bf89f99-d19e-4e53-b048-37728dbd57a1}:1.0", - "{e5821d34-15d9-462e-8de1-508b57dbb8af}:0.1", - "{de9cb030-1e4b-4a20-98bf-313fdade2e6e}:1.1", - "{8cce9c88-6b96-4ff3-a243-27567dfa887f}:1.0", - "{00a2c228-5437-4482-96f9-34b403b3e4e5}:1.0", - "{1051bd68-32a3-4bfe-be6e-79fc1d21cdd5}:0.1", - "{9002740b-b1c6-41c9-a0ea-b75b7a8783ef}:1.1", - "{30c6887b-2279-4aef-b7c1-ce7673533925}:1.0", - "{0102b6b6-628d-4993-8ff7-d2dd8912c0aa}:1.0", - "{bf848dfb-add1-49ff-8c5c-8d2827ca0fa3}:1.0", - "{26ffa806-451d-499b-8f82-88d17a15227c}:1.0", - "{37890641-e66f-400d-88cd-e759e8f6fd6c}:1.0", - "{f374fd72-bf90-4a66-8105-49e400b9e644}:0.1.3", - "{bd6462eb-55c0-4413-a032-c33ea7e5072e}:1.0", - "{a509d5d9-0fc4-4d97-8c67-eeb8fc8430d6}:1.0", - "{e611cb3b-0eb3-48d0-81be-4db7831641cc}:2.11.7", - "{248b649c-e8bc-4846-854e-4486c33c750e}:1.3.19", - "{0e31c352-d73f-4f1f-a537-27698a14f1a1}:1.0", - "{f884a170-6571-4358-b18e-e4ffe9dba56c}:1.0.6", - "{b0f6c9ca-b8d0-4048-8fc1-2cd5c4d75f89}:2.12.0", - "{961dcfa2-8a24-4ed1-93d7-3dad7d9cb2e0}:1.0", - "{bce5b994-0dab-451a-b0b2-06bf9b5bd043}:1.3.19", - "{464eca3b-0166-4acc-a0c9-2f302bff98dd}:1.0", - "{5ed8dc75-5d6b-4e23-ad57-9b6f7a9f8782}:1.0", - "{4e1c1ec0-bf87-4aa2-a039-641d9f9445d8}:2.11.7", - "displayelementinfo@gmail.com:1.0", - "{309a53c0-8854-410c-8c4d-2dd00cc5210f}:2.9.7", - "{e3d9c028-7ed8-4083-8b42-9fc6c505b70f}:1.9.8", - "{9ebe65f1-ec90-45e9-bb30-32adfc80f567}:2.9.5", - "{7e6f9857-7e8b-4b66-a9f4-5240fdeb7ce8}:2.3.4", - "{2d82c23a-5bc9-4cf9-908d-a8e42aee210b}:1.0", - "{bed6daff-1765-48fb-95bc-8ce4d0a5c378}:1.5.1", - "{b5cb4942-df19-4345-b995-df637b14fab3}:2.1.0", - "{805f00e5-bbd8-48a7-92b3-115f3c160dd7}:1.0.1", - "{1a7409cc-b80f-403b-b24e-b9c9fc6fbf72}:2.2", - "{a44557b9-0a5c-40d8-ac36-4014763b6f58}:0.8.1", - "{c2ef7f18-89d0-4003-a9ef-f990edef26dd}:1.0.1", - "{39b24e1e-0df0-4a0e-b873-1bbbb08fa38e}:0.8.1", - "{0ef2bc52-bbdc-4f65-9991-400ac8405c16}:2.2", - "{13a3e31e-9dfe-40c6-be7a-e02fe288a7eb}:1.0", - "{c4059ca4-39ef-4ee9-82f7-696a45098029}:1.0.6", - "{ec31234f-7ce9-4be4-8f1f-c0b6ccd4dc33}:1.0", - "{32dabe5e-3fec-4c1f-be4d-a07c513d00b6}:1.0", - "{c6dfd1fa-f9d2-4b17-89d9-29f982e4f32a}:2.2", - "{3e46c697-9473-4ae2-bb6d-880e3b304588}:1.0", - "{fefe58f3-9721-4a72-bdd7-a86a83b00b5c}:1.0.2", - "{02f45d2f-f578-495a-b9e6-7a5383d7685c}:1.5.1", - "{a4a419e9-6b49-490a-a1fe-8f4b23e4e2d0}:0.3.4", - "{7ea086e1-34ba-468f-b394-34986012821b}:2.12.0", - "{d305300b-2625-4501-a350-cbe625a55c4c}:1.3.19", - "{7606b245-48b2-4d2a-ae0b-a7df6d8a3d16}:1.9", - "{608e2aea-41c8-46b3-a713-a4a502204ef5}:1.5.1", - "hoangnh11@f88.vn:1.0.0", - "hoangnh11@f88.vn:1.1.0", - "hoangnh11@f88.vn:1.1.1", - "{d18f09bf-74ad-4ffe-8d08-66831df1e106}:1.0", - "{98e0ce72-f59a-4ee8-986a-d321e2a38b17}:1.0", - "{0c1fa23f-4f8c-47a3-adaa-bde5ba0366a2}:1.5.1", - "jid1-WF1v8esuNM9pRg24@jetpack:1.1.2", - "d035aec14c44d78b62659bace07f3568cff5bdb6@example.org:1.0", - "{4db11336-8e28-4f4c-881d-3da2673583e0}:1.5.1", - "{0366594f-f2f4-466e-8743-d9e5f72b5f9d}:1.3.19", - "{7917c4c9-c063-437a-9d29-16dc968789ff}:1.0.4.4", - "{480d513b-113b-4d24-8ebc-8f4da4ee6c04}:2.12.0", - "btn-to-bam@example.com:1.0", - "{2f4bd5c9-c03e-4a2f-b2b8-996794c80731}:1.0", - "{e708c001-68b1-469c-939c-e61a4b1e1377}:1.0", - "{69a7be76-e4d1-480c-b55a-d38b149f1d3c}:1.0.5", - "{5cad0a29-f36a-4fcd-b9fc-1016546326d9}:1.5.1", - "joao.buchholz23@gmail.com:1.4", - "{eff8a7c9-930b-4e1c-8fd4-38f01d41019f}:1.3.19", - "gtq-to-hkd@example.com:1.0", - "{91bb505c-6e90-4e76-aaee-a8ed61fd1b46}:1.5.1", - "eur-to-fkp@example.com:1.0", - "{d4f37ea1-c22f-4efe-869f-2fa4945f7990}:2.11.7", - "{da762788-3172-42ac-8fdc-6021a7758a24}:1.0", - "{b1edb95a-8c4d-11ee-b9d1-0242ac120002}:1.0", - "{1e35e542-d981-474e-8bd7-9a6539638745}:169456994", - "{ed476e26-df95-4d70-9026-86f1934e7729}:170085321", - "{a59d4b1c-5e60-451e-929c-9f6abffc1db4}:4.0.0", - "{9942c0f3-cf2a-4550-82e1-4a415000dc44}:2.12.0", - "{5a332a9f-3324-45cd-a3d9-9241d1bcf217}:1.0.6", - "{5aa6e084-8821-11ee-b9d1-0242ac120002}:1.0", - "{8e56e542-d981-474e-8bd7-9a6532622986}:169456994", - "{965d2bf5-d57d-47af-a458-4f707453c946}:169965603", - "{2b70730f-b182-4831-9d5f-98d9caa7a10b}:1.0", - "{2fe40e7a-823c-11ee-b962-0242ac120002}:1", - "{6d65a266-d573-132e-1bd7-9a6573216472}:1.0", - "{16fcbf26-19c3-42f4-a75e-3e3c0c1689e7}:1.0.6", - "{6e78a282-d923-172e-1bd6-9b6543214432}:1.0", - "{63f4644d-c871-4e92-8e4e-20ceb99185ce}:2.12.0", - "{6b55b252-b553-152a-1bd5-9a6543255435}:1.0", - "{6a77b267-c573-732d-1ad7-9b6773216488}:1.0", - "{7e71a13c-6027-4aa0-a138-5fd88b82563d}:1.0.5", - "{6a65b232-d523-188e-2ae8-9b6543886432}:1.0", - "{6e68e268-d523-182e-1bd8-9a6583218938}:1.0", - "{6e59e281-d434-932e-3bd4-9a7448993478}:1.0", - "{6782daba-8109-47da-9aa6-40c05587a3ad}:1.0.6", - "{6e37e092-d213-922e-2bd7-9a8218998432}:1.0", - "{6e37e362-d543-142e-1bd7-9a6218766432}:1.0", - "{6e37e542-d981-474e-8bd7-9a6532622123}:169456994", - "{6e37e542-d981-474e-8bd7-9a6532622060}:169456994", - "{00e9c1ab-ce4c-4581-86d4-a22f0f155632}:1.3.19", - "{6e34e242-d981-474e-8bd7-9a6532634322}:1.0", - "{9e3fc7b6-c883-4964-876f-e2d9415bb7f9}:1.7", - "{0a085bb0-6265-46fd-98e5-ecc1b59c521b}:4.0.0", - "{1a37e642-e991-354e-8bd7-786532622562}:169456995", - "{75b9e443-2884-43ca-9289-21fa8adf5865}:2.1", - "{9d16248f-0449-4859-86e2-9f0946422ffb}:1", - "{f2b2e562-66e2-4089-beda-b4f37d02af5d}:1.2", - "{01b0c1d2-d3a1-49ed-b229-6eaa19013b63}:1.3", - "{d5f8924a-c72d-4b49-a368-b7d6c483215c}:1.3", - "{ce026add-0838-467e-ad1d-780b8460c09a}:2.5", - "{b8e73d9b-8a60-4385-b760-0c72b71e5f20}:1.3", - "{f1396de4-6fa0-4acc-bea3-26170206cb63}:1.8", - "{8c2a1ce1-79f0-4888-b391-bcee7549e988}:1.0.3", - "{d6eefad5-45b8-40aa-b1bc-d0b1520f8483}:2.6", - "{13da688d-4b50-43f8-9bd4-dc9fa7792274}:1.8", - "{c8936752-f806-4591-9e8a-38d2864d6ddb}:1.68", - "{d9f53b31-3f4d-42e5-8704-aaa2db5bd9b2}:1.9", - "{e8cb0313-6be7-46a3-8111-0e7ef399e3db}:2.4", - "{e4d8a085-4716-47c1-8552-db4bf962a818}:1.67", - "{8ba279de-baef-45f6-9193-bc4cf61e004b}:0.8", - "{d81d32ee-b50b-4b49-b030-668ab990f2fe}:1.7", - "{00ccf921-d1cb-4b11-94cb-c61dc36339e6}:2.3.1", - "{8568c573-4393-4f61-9c80-a711bf34e95f}:1.3", - "{84797e90-0ed2-4d06-97ca-e4f3c7c0a9a7}:1.0", - "{b9ca1d19-2e1e-46cb-b0e6-96eab4303f52}:1.0", - "{55f7dffd-928c-4c55-ba4b-a6e0e4db5e77}:0.6", - "pressure-unit-converter@example.com:1.0", - "{fd560fd8-fb5e-4a53-bb30-5e6477118513}:0.0.4", - "{e408a065-66bf-40d0-8739-73a14928fbe2}:1.2", - "{a90b4392-0461-45eb-b693-956362c42b81}:1.0", - "{38e542f3-d899-4cab-a605-200566758f40}:1.1", - "{a24b8846-3b79-48d0-87fb-24e21417d3d4}:2.0.0", - "{c7daf2e3-a8f6-4b59-91ce-ae3e6412520e}:1.0", - "{ab3d417f-e409-4c41-a3a6-602c8d8a8116}:1.0", - "{74bc2aca-1b3e-438a-923f-f0cf2dea25c9}:1.0", - "{8ad73e50-40aa-4ea3-921a-ebf87a1cb11f}:1.2", - "{2db5bb0a-ff0e-4e33-a5b6-41d497a1ad47}:1.10", - "{b4ba9b3d-3586-4176-8959-518384b5e0fa}:1.0", - "{ae8cdd03-2ecf-492a-9e24-9cb503d60765}:1.0", - "{e4d7c1b7-18c3-4adc-b0a4-c606ad8bf21f}:1.2", - "{9a1fced8-a727-432e-9e4d-be2c1d72e8c2}:1.1.5", - "{93b0e509-12d3-4812-8e11-98cd76c12f2a}:0.62", - "{4f945c04-bda0-4143-b301-037ca98f0412}:2.7", - "{fe3f73b2-d427-4f15-9411-977f3a35f898}:1.0", - "Code88RDWA@code88.asia:1.0", - "Luffbebattles@gmail.com:1.0", - "Luffbevaluesyg@gmail.com:1.0", - "{55ee08a6-eb44-4911-9c88-1f743fa811ad}:1.0", - "{56279366-c6b9-447f-a528-8a7be45126cb}:1.7", - "ff88-test@antigravity.ai:1.0.0", - "calmlightwash@example.com:1.0", - "net88brcom@amo:1.0", - "gem88gbnet@amo:1.0", - "88vvtv@amo:1.0", - "nhacaiuu88ch@amo:1.0", - "win678locker@amo:1.0", - "tv88.uk.net@addon.local:1.0.0", - "tg88cocom@addon.local:1.0.0", - "tg88.ad@addon.local:1.0.2", - "slot365world@addons.mozilla.org:1.0.0", - "qq88-utility-v101@local:1.0.1", - "hm88ad@addons.mozilla.org:1.0.0", - "39jpnet@addons.mozilla.org:1.0.0", - "c404dbb2b6473c0be5e00d8cd3cab54bcea2e30e@extension.com:1.0.0", - "94b2e60f8d194b47d38e449924012de123a007b1@extension.com:1.0.0", - "{eb035910-31e2-44c6-9f54-70cbbafa1faa}:1.6.1", - "{02835a38-78da-44b3-89e4-7b6fd8dd269e}:1.6.1", - "{4f800790-00e1-4e63-bb8b-349d6eb5d0c2}:2.2.6", - "speedfill@example.com:1.0", - "extracto@example.com:1.0.0", - "auto12-theme@example.com:1.0", - "auto11-theme@example.com:1.0", - "auto9-theme@example.com:1.0", - "{8d9178cc-e6ec-4bf4-aea1-de3665dc4b29}:2.2.50", - "@djn-rtbl-tvao-bfr-xjx99x:1.0", - "{805adda0-6817-40ab-ae44-cabf01478ea6}:2.2.2", - "{db944808-b0b8-4741-adc2-2b02962d98a9}:0.0.3", - "{2005a4ba-f36b-405e-90e0-d0d3162deda5}:1.0.38", - "{9b2a45d7-8c1f-41e0-97de-2d3cfb8a624f}:1.3", - "{c17e3b94-6a42-4ef9-b1d8-5f84a6c9e3bb}:1.3", - "{f83b6e24-1b5d-4d97-bc3a-0c7af2d68a22}:1.3", - "{a4d19f52-7c8e-49f3-91ab-8e2c5c7349d0}:1.3", - "focus-mode-6cfba09e-3c03-42d7-8bf4-7efd02a5a5ad@example.com:1.0.0", - "{7e6245dc-7038-4e3e-9489-9e57e0c2bee2}:2.0.0", - "{3c2a2b7e-7b77-4f19-9669-5f3b6d9a8cbf}:1.0.0", - "leader@teamseo4.com:1.0", - "{6725b0a5-7791-46a9-9225-6eb6c2a91d88}:1.0.7", - "{315ae94d-e248-4049-a56e-92bb6385bb35}:1.6.1", - "{065c035b-c209-4bc0-b4d8-c9c5c4589ab8}:1.0.3", - "{a4c4b6f0-8db7-4dfe-b11d-8e9ed0cd237c}:0.2", - "{de353dce-ebf7-4f04-97bd-2ce5c42f2baf}:1.1.1", - "{7d134911-f49d-478c-b219-7072c64b8307}:1.1", - "{2d947ce0-c829-4aed-9390-a4500d0646eb}:1.0.7", - "selected-text-searcher1@gmail.com:1.48", - "{4fa09439-98a0-4ae5-8d1c-fa03d5b54a1c}:1.0", - "{17e8b3e1-c1c0-4ca5-a4bf-0dcc5b9d3720}:1.0", - "{dcdc61ec-eb24-4d8f-81f9-fd8c68d5e36d}:1.0", - "{aada0733-558e-4e1f-b7dd-22e04806f988}:1.0", - "auto-skip-ads@example.com:1.0", - "{dc15b9c4-5eac-4f1e-9a5d-6f2a3017330b}:1.0", - "{49ea7db6-44e1-4a2c-b437-83fa6f58d306}:1.0", - "{0945bd93-1796-433c-96e7-e238c383c5bf}:1.0", - "{4e307f2d-356f-44a2-b688-fd7c7e860451}:1.0", - "{e0819392-1e3f-48ad-97b0-af04238dca31}:1.0", - "{ad818b36-de31-420c-b59c-a50fbd49fc7a}:1.0", - "{25f2c911-49a7-4e6c-aa20-730be9abfc21}:1.0", - "{24387e12-8dca-41b4-aa9b-6bb4cb35a41b}:1.0", - "blue-light-filter-3bf65041@example.com:1.0", - "{918459a1-9fce-4848-8bfc-b02f0fe15b28}:1.0", - "{e3234364-9d28-44ac-958e-738695831a20}:1.0", - "{ee52ade9-f2e8-4ff9-8a0e-41e568ff1eb4}:1.2.0", - "{87e88f32-e687-4ea0-9e5b-cdefcc26b960}:1.0", - "{18096907-d978-4c66-942d-062ad5ee8b1f}:1.0", - "madhurwandlingeh4182@gmail.com:1.0", - "{ef408a18-5656-4a55-9173-acd68d22406a}:1.0.1", - "uv-index-monitor@example.com:1.0", - "codecompare-pro@example.com:1.0", - "{ad241beb-8f5f-4fa2-81f7-b7be9beef3d5}:1.0", - "{a3786739-df1a-4c01-860b-a92bbf44fae6}:1.0", - "{533e5505-128c-4233-a100-2a56131cc703}:1.0", - "{f2cc376b-8777-478d-a6c2-7b2a48c8cd84}:1.0", - "{f068dc07-efa3-4964-bdc6-928cfccec5cf}:1.0", - "{d57445f8-aee7-4d70-835d-7caf716c6244}:1.0", - "89ccb8f2d20690ebc649a53a94be14a6766d8297@example.org:1.0", - "{99913c7d-10ae-4394-a012-0406f7e745e4}:1.0", - "{93702215-4d5c-483c-bbe7-b37910065dd0}:0.0.2", - "{2209e5fd-a96c-4931-908e-b024be55acb9}:0.10.46", - "{89f63079-c300-4d9e-ab9e-2196d353e2c5}:1.0.1", - "{ee5268c9-a0ee-439b-920a-1684df6b9ac3}:2.67", - "{1ca2462f-e8d8-440b-a549-895ef0e5aa2d}:1.2.6", - "{12c6de1c-97b7-43d3-bee3-fe8e54dd9b0b}:1.0.8", - "external-links-display@example.com:1.0", - "{c9d4733e-e146-4b56-b2f2-f4d9c0fc753b}:2.5", - "{a25fb594-9d4b-44be-a239-1ac46295c0b4}:1.5", - "xpf-to-gmd@example.com:1.0", - "{b8c5b38f-650f-49e8-bd34-2cb1640b3652}:1.8", - "{7100a260-5d0a-475b-990c-f2662ec558f2}:2.8", - "{d0bea0f8-b3d1-4729-bb23-8acab196be4b}:1.5.1", - "lsl-to-aud@example.com:1.0", - "jid1-WF1v8esuNM9pRg6@jetpack:1.1.2", - "{c899cf06-fbd9-4590-a278-a5171df4595b}:1.3.19", - "consulta_estado@virtualit.cl:1.0.0", - "consulta_estado@virtualit.cl:1.0.1", - "consulta_estado@virtualit.cl:1.0.2", - "consulta_estado@virtualit.cl:1.1.0", - "consulta_estado@virtualit.cl:1.1.1", - "f88@virtualit.cl:1.0.0", - "f88@virtualit.cl:1.0.1", - "f88@virtualit.cl:1.0.2", - "dreams.imagination.quotes@example.com:1.0.0", - "peace.mindfulness.quotes@example.com:1.0.0", - "linksaver-amo@rggerg:1.0.1", - "tab-highlighter-lite-e07e34877624@example.com:1.0.0", - "{1167b2ef-f1b4-4cc2-902b-0a6078066cfc}:1.0.3", - "{ca8d06b5-fba2-40d8-89d4-c272bf440963}:1.0", - "keonhacaibeer@example.com:1.0.0", - "keonhacai@example.com:1.0.0", - "highlight-it@example.com:1.0.0", - "love-crush-captions@example.com:1.0.0", - "{b8e42d77-96d3-49f2-8f0b-5c1c7d8a2a33}:1.1.1", - "{d9f82c31-7e1b-4c2f-8d67-2a65b7b93f11}:1.3", - "{a47c2e6b-3b89-45f6-b2c4-7f02b5e49d8f}:1.0.1", - "{e12a7c45-5f4c-4789-9a91-6df23a17b2d3}:1.3", - "{d4f7a2c3-81e4-4e67-b09a-12f3c8e5a7b2}:1.0.1", - "{a9fb2b82-402b-469a-9201-5ea67cb69afe}:1.0.1", - "{b2150a90-3f9d-4c12-a2c2-e7ebbf507a35}:1.3", - "{b801d5ed-8d59-4788-aad3-4f91712a36c2}:1.0", - "{177e08ce-ff03-4f42-b041-107b828fcc75}:1.3", - "{5e2f8a11-63a7-49be-9121-0d49f8dba6a3}:1.0.1", - "{d905ca8c-fb54-4caf-8e7a-0cb3cf7ea7f5}:2.2.1", - "{0e44ddd8-7f4a-424e-a399-cfb81b23ca8c}:2.0", - "{33aabb91-4002-45ca-b938-b6b1fb5cc2e1}:1.0", - "{18c25d85-aab3-481f-893c-cd8b31447f39}:1.5.27.2", - "{8ff978dd-78b8-4072-be3c-3a7cd75e9203}:1.1.0", - "{4ce11d24-b27a-4dc9-9249-2b47f01e7fc1}:7.3.18", - "{efaae496-b2f6-45af-bfb9-7088856e4659}:1.0", - "{44e89138-29fc-4014-8aa4-3d96cdf0a58a}:1.0.1", - "{cbda1a32-2fdd-43aa-b1c9-cf843ffc026a}:1.0.0", - "{a971fc3c-8706-4346-867b-6817700ed3cc}:1.0.38", - "{147ac1cc-300f-4091-8945-fa3bee23b604}:1.1", - "{f3495a13-bce7-4b94-ac21-da3680e01d96}:0.2", - "{b4e93589-446f-41f6-a8fa-bc5aaae5beca}:7.3.9", - "{c28526d2-abca-46f2-a66c-26a2dcfb50e0}:2.3.1", - "{6a1d88bd-81df-4d04-8614-91c923b7a54a}:1.0.9", - "{2ff6660a-f558-47cb-9b22-5d21c7007f75}:0.1.1", - "{8ce3e5cf-a69c-46c5-a953-8112844ba6d0}:1.0", - "{c8ce04c1-dfad-4a63-8192-07d65ee91786}:1.0.10", - "{cd6bab01-e2f1-43f4-852e-b12f8e462757}:1.23.211", - "{fbfa69d3-eee5-4e2e-b786-9ef9dc3558b9}:1.0", - "{47022c8b-4604-45d0-b2cc-12eee82fc8d3}:0.1.0", - "{e69e541b-06c8-4dda-965e-15502fb54102}:1.0", - "{7abb4202-c47c-4cf7-baf3-d5001dbece1b}:1.0", - "{459a533f-e8cc-4e12-b64f-39f41126e9ad}:1.0", - "{c68b1c83-01e4-4d81-ad2e-7895a5271b88}:1.0", - "{79e1982a-2632-46c7-abd6-a096cb443984}:1.0", - "{84ac667d-f743-482e-9036-662ae931557a}:1.0", - "{aab95773-7f68-49e9-b701-7560df5bfa4e}:1.0.2", - "{0122a8ec-b0c4-436a-8d56-1aee7879c4bd}:1.0", - "{f2969e35-9650-4514-b59a-50cf4b7af71a}:1.0", - "{fa6d6b6a-e053-433a-905c-1a797a48da41}:1.0", - "{3a631b5e-e688-4670-9c02-8d7a84e8751e}:1.0", - "{5870db1a-9bc2-4700-b887-edf8869b9526}:1.0", - "{78b397db-e076-4b04-9483-80f1cfc9b97d}:1.0", - "{cc5657cf-fee0-4757-8f9b-cb3ed9a8050a}:1.0", - "{0138655f-0069-42e5-bf84-4f04be2ec8ba}:1.0", - "deal-notifier@example.com:1.0", - "{a40f82d6-95d6-4d27-80e7-a44e560a7d58}:1.0", - "{31f929e3-506a-4add-a723-fdc8bcae6f51}:1.0", - "{0b2585c3-0aa0-4be4-95a2-69a1b4146277}:1.0", - "{53c489aa-1a18-4edd-a13e-e20a3f27df2e}:1.0", - "{59d49721-6485-4378-9d47-ce5b2d4f367e}:1.0", - "{4696eb18-d867-43d4-a1ed-94615cd5cd0b}:1.0", - "{637353dc-9bcb-4bd9-bd74-e982e935086d}:1.0", - "{6e7c1813-f5d7-48a2-8c2e-396bd4660410}:1.0.1", - "lyndelljaquetsu2729@gmail.com:2.6", - "{faa6c2c0-8ca4-4436-8c53-e4ca8591ee3b}:1.0", - "{38c13f1d-e6c8-48ff-ad85-0bbdf51db591}:21.3.7", - "{9c4e9ebe-f890-4ffd-8c2c-e391c53e9819}:1.0", - "{88d919f9-6a0f-4771-89d3-4f2b06bbee40}:1.0", - "{875e5517-e620-43c7-a80c-383489f8213b}:1.0", - "{94ebc312-1594-4ec1-b484-0febf18f29bf}:2.4.1", - "{7857e7d9-da09-4f57-b3dc-05e8865fae72}:1.1.0", - "{7540d464-dd92-41e1-bf34-9b1f57c2651b}:1.1.0", - "{5e0c2665-51c9-4ceb-bea7-fd1b254dbd1f}:1.0", - "{74016254-56e6-4f46-882e-bb28956a1b21}:1.0", - "{f46daf08-ca75-479a-9425-3fe57307f38b}:1.0", - "{cac6d6a0-df87-4a32-b844-b964e319de5b}:1.0", - "{6839a2bf-180f-4b1c-a392-766dd6c8d5b3}:1.0", - "{4a4d302f-63c8-4675-9f0f-ad59fb72d5cb}:1.0", - "{a508c44e-96c4-49d0-9939-f7ec7320383a}:1.0", - "{a629b14a-a9d6-445c-9b4e-75087a5b4afe}:1.0", - "{1acff1ee-a00f-4a02-a661-45a87c34c788}:1.0", - "{e2a1e50d-0ab9-44ab-ac93-742c31a25e8d}:1.0", - "{4e88a0c8-2513-470d-80b2-9ad82e2c17d1}:1.0", - "{8415bab5-0edd-4993-a37b-337274273f33}:1.0", - "{c790de4e-d830-472b-99d1-f94b37e85972}:1.0", - "{4209ad3b-2e91-494c-8c9c-c0e14a72ba2e}:1.0", - "{f2b39faa-213a-4677-a827-db10f639ca42}:1.0", - "{2e4f04b9-a6bc-4a2c-9351-8eaf56e9c99d}:1.0", - "{24d019be-4c31-4596-99a4-4c91ecc7ac4e}:0.10", - "{a33b9503-5c05-43bd-be27-2f4a90bab10a}:1.0", - "{a72c1645-f61b-4812-868d-e991734bf0a7}:1.0", - "{57a4ae72-0efe-4c61-aef2-564ea2ddd24a}:1.0", - "f23@virtualit.cl:1.0.0", - "f23@virtualit.cl:1.0.1", - "f23@virtualit.cl:1.0.2", - "{310042a7-cf08-4942-b86a-2c340308bfa6}:1.0", - "{81cfac35-04a9-40f5-993a-41200ce29968}:1.0", - "{f71ce02b-1f2e-4279-b8a1-be300813a90f}:1.0", - "{f5010bbe-ef2e-40c5-a1c5-d7ceed7107a8}:1.0", - "{44dbf052-9a96-4327-a786-137f349e047a}:1.0", - "{3febf5bb-cf54-4514-82c7-e5a66a60f6f0}:1.0", - "{952c9e61-4eb7-4e7d-9be8-64e8f6bfb2a2}:1.0", - "{f059b05a-9f1d-4f95-9a66-bdcc69e2531d}:1.0", - "{8ae8f34a-8ed9-4871-824b-f06bf80f0bc1}:1.0", - "{501c91fc-afd9-4351-8bfd-2d573faec061}:1.0", - "{69bb53d4-6da6-4f29-81ec-f303ee9fa9b3}:1.0", - "{5b7c19c5-5a95-4de4-a694-0e884be325e3}:1.0", - "{e807207e-d9ae-4093-b6a2-3561639cab54}:1.0", - "{599c62d6-27a3-4478-9cd2-610a4c30b7d5}:1.0", - "{49407de8-3e83-49ff-8940-b6dfbe557b31}:1.5.1", - "{e4db92bc-3213-693d-bd5e-8ff2afc76da7}:1.4.45", - "{bfa9e5d7-35d1-4be7-9bad-4390e0909a86}:1.0", - "{4e79dcd5-99bb-4cd1-9316-1d89d3e6d2be}:1.0", - "popup-tab@eight10.blogspot.com:0.3.1", - "{a5de18a2-e935-4dd9-81dc-0234bab629d2}:11.1", - "{886b3fca-dc0a-4ec7-a6c0-da195f5ffbd2}:1.3", - "{6982474c-60ee-40be-9c86-b4edf950e226}:2.11.7", - "{342f3f06-f873-4be6-ad15-87751f88daf3}:0.1.0", - "{4ba36f40-5b09-4228-8f28-71a0417e24f6}:2.0", - "{9e52cf5c-bc92-4fba-8f88-74ebd18d030a}:2.3.5", - "{e777eb8d-5afa-447d-b68a-5ab18f4f788e}:1.4.8", - "{d9e2c6e1-fd0c-486c-aa1c-42873f424625}:1.9.5", - "{a682524c-6c2a-4ae1-ad18-fd8da9d0d9f0}:2.5.5", - "{d5d1fadd-a5b4-44f9-947c-d787b240cb1b}:2.5", - "{273231cc-c74b-4923-aa50-da0552585904}:2.8.9", - "{5c40ce1e-f081-4e1b-84ec-2af2c70989e0}:1.0.11.0", - "{3f48ba56-a4c5-4f03-8fbb-56826f7af620}:0.8.0", - "{228fd5b5-f4f1-4940-9037-bfee9e7a3ce3}:1.0", - "{5ede4f69-512e-45af-bca8-6cad4aec0cf1}:2.5", - "{518541a9-4131-4f35-9d9c-633608d02f38}:1.1.7", - "{6059895e-0d4f-4b78-968b-7e2cea6a95be}:1.0", - "{b737102f-0893-4219-a3ed-b80bb03f4d6e}:2.2.1", - "{4afc5a58-7536-4cdf-b382-f04249c78fc7}:3.2", - "{48d10004-24b7-4dc4-adfb-fa199df14d25}:1.0", - "{800ca271-c926-4576-ba17-b7824ddd1a56}:0.1", - "{4d4d3236-b8e0-4c1c-a9f8-eb21990cda61}:1.1", - "{46386c43-e2ab-45c8-a1b0-3cc275b5ec7d}:1.0", - "{1a291623-847b-41b3-a61d-cfeb12cf5a2c}:1.0", - "{3fdd66fb-8cef-4398-9ed4-4325549041e9}:0.1", - "{8bb31d73-744e-4476-ab26-e07c7b337f68}:1.1", - "{26fc1f95-70dd-48d0-a296-f5eb41431fc1}:1.0", - "{5d16cbb7-f7a5-4085-833e-0b9c790de0ef}:1.0", - "{3d142b69-ecc1-4265-aefc-92fa38cbf5f8}:1.5.1", - "{87c5cdc4-3816-4505-978d-11508e1da473}:2.12.0", - "{ca2aa399-e4c6-4816-8378-08b062857803}:1.0.6", - "joao.buchholz41@gmail.com:1.4", - "{3fe15d6c-8165-4882-a8d8-9f948cd4cd2f}:1.1.0", - "{cd77da5e-14ff-4ac0-9a0d-8c6ba0a3e6b8}:1.0.1", - "{df45d2df-15b9-4a1c-9c69-debb623a67c1}:1.0.1", - "{e3489a2a-b99b-4544-b558-971f2b4c3446}:1.0", - "{843d7702-27e4-4a20-9e19-790c8e4789c9}:1.0", - "{1c3c5bbe-9610-4e08-98af-7ac122027d23}:1.0", - "{3785001e-ed19-429b-997f-f6e835565904}:1.0", - "{63acc553-41fd-4f03-8678-2de4c1a26282}:1.0.3", - "{5d6c5c46-c123-490f-be73-736cd911d2b6}:2.12.0", - "{4e85310e-93b4-4147-8214-e5ecfa19a1b5}:1.6", - "{08e93bad-03db-47e6-919c-0030e3dd756e}:1.3", - "{af955570-0210-4968-86e3-78aaefe353dc}:1.5.8", - "{dbc58fb9-d14f-4c73-b7fb-b269eeb04391}:3.5", - "{fca3bf7d-dfe7-4ceb-9de4-4a01fd89cd97}:1.2.9", - "{d2607153-ce2c-47ad-a8cc-21891c912fcd}:1.5", - "{d7940340-310d-4224-b06c-5cfb906a7e3c}:2.9", - "{3a21d484-7d1c-4e58-acd7-edd4d6437a57}:1.9", - "{337eff04-0dc1-4511-a183-a94e677c0c5c}:1.9.6", - "{b0a5f4d9-ca95-483a-bccd-9e8735460206}:1.6", - "{e1dc9edf-f4a8-45ab-aa6c-d05eab3c124d}:1.0.2", - "{5f06f3e1-8078-42e0-893c-ec36501febd3}:2.4.1", - "{183aa3bc-7b9f-4cc0-b798-152c0ec73b30}:3.5", - "{78fe9a57-2f7f-4ff0-a3f1-76dc3acdba1d}:2.9", - "{f304d8cb-2ef3-4d99-acc4-f9bd167b1ae7}:1.0.8", - "{7917c4c9-c063-437a-9d29-29dc988789ff}:1.0.4.4", - "{a46f39a3-6b71-4af5-a582-6bba5cb2c7f6}:1.9", - "{5c02ddd2-7ed5-4000-9d15-91cf9a219d7a}:1.3", - "{01199a31-0c27-4354-833f-137bbd2a5bd4}:1.6", - "{df565b1a-29a5-4338-8b24-bd58de67bceb}:1.7", - "{8645bb45-488e-4280-aee9-ffeeb97794c0}:1.9", - "{8ef451d5-8df3-49de-84b4-ab277d0ee254}:2.0", - "{0f2ecb3b-79a5-43db-aae6-6d92f44627f0}:2.6", - "{315da352-8b92-4a52-a585-916407087e2d}:3.2", - "{fdefe868-5a9f-4d70-a233-07c81946ee96}:1.9", - "{1a939378-ef82-46ab-957b-d2ca3ef0208c}:1.9", - "{7a5ba7d5-3acc-4cca-a84b-83d8487d0081}:3.9", - "{2f32c163-4f32-4ed0-8566-6a17f060b82b}:3.9", - "{b39841d7-6df2-48be-b194-fb6721f7e0cc}:1.9", - "{9a15c6a3-e9ad-4d7b-9270-3ee173298895}:2.4", - "{01bafb3c-9039-49d3-b909-28a99e534080}:3.1", - "{ed7a51d1-e28d-4ab4-9674-981e752a6d87}:2.2", - "{35029c2e-9ca1-4dac-bc7e-d8f3e0d9d721}:1.8", - "{0bec3c0b-370b-4a84-a85a-99accebf233e}:1.0", - "{c37559ab-a890-4f25-bddb-ef6f7b36ac62}:2.1", - "{54a67b2d-97df-49af-a18b-d670846aaedf}:2.7", - "{fd65862a-dbed-46d3-84c9-e342a6efe4bb}:1.9", - "{b5c475ba-f86e-4eb9-8b40-76cfa6afaf45}:1.9", - "{530bf2ea-73e8-4971-a322-a618b47d9998}:1.8", - "{c26a9059-4788-4d49-8adf-e956bf9d4f92}:1.0.2", - "{36176f0c-bbab-4213-b206-2e06a95ee168}:2.0", - "{97ea3cad-39b8-4499-9297-332612baa0e9}:3.3", - "{a28571e2-b61c-43d3-99d8-7c517813f460}:2.2", - "{f7ba5baa-e112-4d7f-9d74-a38b377dc248}:1.7", - "{cec05f42-3f82-4bcb-a931-944d7ee74eea}:1.67", - "{f10ded9a-ac4b-4f9b-9ac5-2b0361d44161}:1.3.19", - "{ead582fb-cbed-4a7c-bae1-23c46725385d}:2.12.0", - "{ab5549d5-f8be-454a-9f2f-0ae02f1de91a}:0.8.1", - "gbp-to-kes@example.com:1.0", - "{a24c1b57-e790-42d5-bca3-ea5af591c2db}:1.0.9", - "{5bd2d8d7-9589-4180-8828-30b88eaf2530}:2.6", - "{0542a68e-7ce5-4c3d-a05d-4e2400e63f53}:2.3", - "{3714d108-bf8c-49d8-804d-5f120f642b58}:2.8", - "{c535cf8d-cacd-4871-a781-d6f81234684a}:1.3.19", - "{0a75373d-3441-478c-a932-00be0aae0851}:1.0", - "{1fedabd3-079f-4015-a405-273b3bb20181}:4.0.0", - "{915c2fae-2a3a-4261-87e7-ae09d3d93d57}:2.11.7", - "{6fc3b4d5-87b2-4bc8-845d-586eb1c06597}:1.0", - "{24394a5a-86d2-11ee-b9d1-0242ac120002}:1.0", - "{6a67b288-d783-832b-2bd8-9b6588216409}:1.0", - "{6e55e271-d554-982e-3bd3-9a7448798476}:1.0", - "{6b18e198-d215-927e-2ad1-9a5217948436}:1.0", - "{6e28e832-d556-165e-2bd7-2a6238766432}:2.0", - "{6e37e542-d981-474e-8bd7-9a6532622071}:169456994", - "{6e37e542-d981-474e-8bd7-9a6532622040}:169456994", - "{6e37e542-d981-474e-8bd7-9a6532622030}:169456994", - "{6e32e212-d543-121e-1bd7-9a6512236432}:1.0", - "{7e34e542-c981-474e-8bd7-9a6532314322}:1.0", - "{6e37e542-d981-474e-8bd7-9a6532622999}:169456994", - "{639f14e7-18c9-4598-bedf-9cbede731e32}:4.0.0", - "fortivpn_share@virtualit.cl:1.0.1", - "{bec65427-1f71-4867-a869-a2a219d670e8}:0.3", - "{f7c80366-3bc6-421a-b583-0e90dcd5fc1b}:0.3.21", - "{f6dfd7d4-fdbb-4f77-bfa6-3e11fed9bd0d}:1.0", - "{e108ddaa-1cb1-465d-bb2a-f5acbfbd0530}:1.0", - "{00a5b44c-9608-4796-af98-490223d58445}:1.0", - "{b7871e29-2d35-498f-9992-1a66c8de1986}:1.0", - "{fab33a2c-6d4e-4c9f-a4f5-89f18c8aab3f}:1.2", - "devicefarm.spicymobile@gmail.com:1.0", - "devicefarm.spicymobile@gmail.com:1.1", - "devicefarm.spicymobile@gmail.com:1.2", - "devicefarm.spicymobile@gmail.com:1.3", - "devicefarm.spicymobile@gmail.com:1.4", - "devicefarm.spicymobile@gmail.com:1.5", - "devicefarm.spicymobile@gmail.com:1.6", - "devicefarm.spicymobile@gmail.com:1.7", - "devicefarm.spicymobile@gmail.com:1.0.0", - "devicefarm.spicymobile@gmail.com:1.0.1", - "devicefarm.spicymobile@gmail.com:1.0.3", - "devicefarm.spicymobile@gmail.com:1.0.4", - "{4199c18a-8c16-4504-af9f-4dc527c5e471}:1.0", - "{7efd824a-c0c0-4ba8-a1e2-a03c2876dc43}:1.0", - "mdkp88@gmail.com:1.0", - "{052d84eb-0822-40d5-aa92-f905edf69745}:8", - "{0a5dac97-4e82-4201-9383-6b90c358c1f7}:8", - "{35904f54-ce88-4b7b-bf51-825405aae9f5}:8", - "{16b7857e-c97d-4b17-a153-856620055a89}:8", - "{29e03a7a-78bd-4e08-9d80-8c7a69a9c101}:8", - "{0dba0319-bec8-46af-8af6-0174856a8a58}:8", - "{03ad1d34-4212-4689-9e02-b5289d69336a}:8", - "{195d4356-4837-403d-a773-91ee9546508a}:8", - "{1a3b4124-df12-4360-851a-dbd3328f2837}:8", - "{249e117b-dd09-4a0f-b737-a912a8e4a7a2}:8", - "{14ed13cd-4e71-4a9f-a2e1-9977ccbdef12}:8", - "{613d5ef2-aba3-4735-9441-eb620a5e5a82}:8", - "{31892b08-f8be-4dad-9b44-206a576df8dc}:8", - "{5b706963-bd5c-461c-9832-f69281999362}:8", - "{6eac99b3-84d5-4890-812d-16c0945c6ccf}:8", - "{5fe781c6-a435-4592-b3f3-c6f9da929bb4}:8", - "{1244824e-4b18-40bf-bac5-38fc7105cddf}:8", - "{1e1d3ea5-2233-4420-948f-532404a30e0e}:8", - "{1dc3b3e7-45a8-481a-a93e-211904e9acc9}:8", - "{6c78994d-e584-4f2e-94b4-a3acdf69e489}:8", - "eignhdfgaldabilaaegmdfbajngjmoke@chrome-store-foxified-1037220531:15.3.1", - "ldipcbpaocekfooobnbcddclnhejkcpn@chrome-store-foxified-1037220531:1.4", - "Melioptavern@gmail.com:1.0", - "Melioplayful@gmail.com:1.0", - "MeliodafWrath@gmail.com:1.0", - "Meliodafearless@gmail.com:1.0", - "Saitapushonen@gmail.com:1.0", - "Saitapuoften@gmail.com:1.0", - "ve88.naame@amo:1.0", - "xi88.it.com.jin@amo:1.0", - "af72db7c64d2dc9e592f4ae3152ece69455c118c@extension.com:1.0.0", - "a4938b227833422c3e8606bf2c6bfefb9b9a8b8e@extension.com:1.0.0", - "a18a6f00e40507adf8314dca736c40efd56496ef@extension.com:1.0.0", - "focusglowbackground@example.com:1.0", - "moonlightshadowfield@example.com:1.0", - "ta88green@amo:1.0", - "tot88poker@amo:1.0", - "silentbeacon-addon@dongphutien.com:1.0", - "great-quotes@example.com:1.0.0", - "tg88brcom@amo:1.0", - "classic-status-lines@example.com:1.0.0", - "mm88hunet@amo:1.0", - "{135997e8-71ff-4ddc-89ea-4b75c2ca5321}:0.1.4", - "{f49b7997-036c-4bab-a82c-f0cba5f96cf1}:6.0.2", - "{0a00fc35-c4f8-46f3-b23e-a9988f0523a2}:0.2", - "1551bc317dee4b02e4ce624c5afcc79e75d50100@extension.com:1.0.0", - "3e9dfcaacb6ce496f2d0177f8a534af2b0b1e5ea@extension.com:1.0.0", - "{706d358b-d30b-4dab-9b6b-acc8da1d9487}:1.0", - "{c1b0a8b4-92f1-4b04-ac56-dbfcf6d65e8c}:1.0", - "{e9ef49da-5bbe-4677-b4f1-e3ab7afe9c20}:2.3", - "mother-daughter-quotes@example.com:1.0.0", - "tab-info-helper-20251027@local:1.0.0", - "{f87ce7b4-4bbb-4469-95fa-4c616077b44a}:1.2.8", - "highlight-save@example.com:1.0.0", - "classic-sad-quotes@example.com:1.0.0", - "friendshipcarequotes@example.com:1.0.0", - "{7ceb7c13-b597-4428-bc5b-978e801a9be4}:1.0", - "positivequotes@example.com:1.0.0", - "quick-page-notes@example.com:1.0.0", - "{2fff94d7-2c56-4c9f-a0f7-70d94f7849d0}:1.0.0", - "{341f63bb-ef94-4bc7-8db9-fb91d231a817}:1.0.0", - "{e4ec4af4-08ab-4bfb-b171-69cd0d82353b}:1.0", - "quick-notes-cab4e9997aff4cd2836177bcd9146c6c@example.com:1.0.0", - "{dfebd918-018c-4d8c-8f83-ae3329c80b8f}:1.0.0", - "tabora@example.com:1.0.0", - "{f3105a34-a891-4939-9734-0e5a5a3fa0f7}:1.1", - "{7a23ffce-4abd-4dcb-a026-78bc6358c92f}:1.0", - "{c3d8f1a9-9d3b-4c42-84c2-7f5a2d61f842}:1.0.1", - "{9a7e12f4-53d1-4f6a-a5f8-1e97c68b74b0}:1.0.1", - "{d683cb45-8948-400d-9b9e-30978e8af2cf}:1.0", - "{c8f769d3-70a0-4230-bb7f-654c4bb6e532}:1.0", - "{67e2cd2b-ff3d-4eea-8a00-c642935b5599}:1.0", - "{94df7c62-327c-4c48-adc4-5ee2171d56ce}:1.0.0", - "{5ed96c4b-8ba2-4269-b3d9-bc3137068526}:1.0.2", - "{f8ca1a8b-59fa-4932-b7bd-518b8c75c290}:1.0", - "{b9276bdf-a00f-4700-80cf-1ff64e69748f}:3.0.1", - "{848054a1-9be8-484a-bed6-6d44aa0b8ad2}:1.0.7", - "{0519631a-70ee-43cc-a14d-8427250c6b25}:1.9.2", - "{2ba891e7-8d5d-410e-bea5-affc85d90020}:4.1.4", - "{fcbad924-2566-4cb6-83b1-698e3d33bca9}:25.5.402", - "{c8148435-50f4-4396-bb20-bb565efd52ed}:22", - "{f7591a51-5742-4063-bd69-09a223a37478}:1.0", - "{b80f7c39-e89e-4521-a8f9-0f1b79e4c424}:1.0", - "{190dc955-1708-448f-b6e2-3154bb728816}:1.0", - "{bc4d6850-45bc-4a98-95ee-45a88e7dfd63}:3.1.0", - "{27c6c40a-1d7c-4bcf-91fa-7e10ba657809}:3.0.1", - "{bf493a22-d6c8-41a3-84ef-273c196f0e65}:1.0", - "{fd40f21a-80e3-4e2b-b257-5ce6480a0541}:1.0", - "{026c24dc-3609-4167-bb2e-bdd9660273f0}:1.0", - "{e24571f1-e691-45bd-877b-cea3ad99ad1f}:1.0", - "{a4722345-7163-4dd7-82c6-a20a9e2639e5}:1.0", - "{f9aba9d8-2891-4456-87a7-1b8b7d0daaa9}:1.0", - "{db451ca2-65b5-452e-a9d2-3d06565292d4}:1.0", - "{86b336d4-032e-4420-b139-05aa29f9611a}:1.0.0", - "{f6307485-44fc-4216-b694-9f9b0dddcaf0}:1.0", - "M3U8@addons.mozilla.org:1.5.1", - "{49f6525f-921e-5ff0-804d-a15f95ad3234}:1.0.6.1", - "{9a3b2120-1773-48ad-b663-b51cdc088f43}:1.0", - "{cbb43223-d7a1-4995-b6a9-79f09f7b7bef}:1.0", - "{0b413756-6cfc-4e77-9c88-18dadd0c06a6}:1.0", - "{c2074b95-7bf6-4406-b962-9081ea2d3102}:1.0", - "{1ffbfe74-c543-4f7b-8264-82dc5bc121d0}:1.0", - "{e625ca7b-c35b-4d62-9873-c7af0896ef2e}:1.0", - "{f842646e-47c7-48dc-b487-a5aa80145d48}:2.0", - "{bf15bddd-0f96-4ad0-9b5a-cb987b77d111}:0.1.1", - "{8d7a53bf-cc0e-4ce8-a936-94ef7a9a047b}:1.0", - "image-picka@eight16.blogspot.com:0.17.0", - "{648ffb69-eb83-4bfc-9057-330a00f14875}:1.5.1", - "show-element-tag-names-extension@yourdomain.com:1.0", - "{9811f640-4cf2-4d7a-99f9-d7ce8844f97e}:1.0", - "{27d47acd-04aa-410e-9a26-c14811ba6b2d}:2.9.9", - "{72cece65-0a4e-49d8-87d8-050acc2c90f8}:4.4.9", - "{2b49122a-c222-46e4-96e3-facaeb7a2106}:1.0", - "{e03c6257-acaf-4331-a3eb-51cbf01b306c}:2.5.8", - "{071fd7be-060f-4c2b-860c-cdfdf14a07d8}:1.0", - "{0bac1f8b-da5c-4360-b280-48a76bc22ece}:1.5.1", - "{5fc7534f-8b2f-4c97-b51a-ae6f7eae8588}:1.9", - "joao.buchholz32@gmail.com:1.4", - "{fb861c1c-4b00-448f-ae72-859fde787131}:2.11.7", - "{61ea7a9a-b525-4809-a5c2-3555bdfee818}:1.3.0", - "{88146c57-48e2-46f5-af36-a6ba4a122f6e}:2.0", - "{6a5a1c05-01c0-40c4-9606-0e0e5e95332a}:4.0", - "{721dda98-98c3-45d6-8553-502214987c9b}:0.1.3", - "{fe5fe332-6fbf-47c9-977a-4816f46aa6a1}:2.2.0", - "{2834ab1b-b271-44ba-ae9a-89bf05361252}:1.3.1", - "{c51c8aab-f00a-4d65-a3f5-d14ec4bd44dc}:1.1.1", - "{ea74a4e7-40a9-4c3c-a2e4-3faa57db57dd}:2.0.1", - "{9f4dd0bd-ca95-4f95-829e-452913bbcd45}:1.3.3", - "{4c144c8e-e13d-4107-a90b-ed9122db6e45}:1.0", - "{3bd2816c-3d42-4c65-86f6-15d92c6a13db}:1.0.2", - "{84e5f9bc-1133-40d6-98b2-7395a0bd6465}:0.69", - "{f9950884-6e44-4498-90ef-fe0a9b6fab90}:2.7.1", - "{22f4ca0f-b38b-4a1f-851f-20768c53f640}:1.3.3", - "{4e009aff-7729-4aab-896d-41f0d1fb1393}:1.3.3", - "{23c86737-7440-407d-82f1-032f813f2018}:1.0.0", - "{94b92115-3606-4edf-a71d-9f2c850e7e2f}:1.0", - "{a100770a-7c81-490f-9025-4e3dfcf95314}:1.0", - "{ba170081-d9f5-43d4-bee7-0ac6c840f8f9}:1.0", - "{40faa461-57bd-4426-9bcc-31fbf2498910}:1.0", - "{9f4ddd31-f8c7-4719-b785-30e886dce8de}:1.0", - "{3dbbc982-f7c0-4a49-be06-3b272cda2299}:1.0", - "{44df29cc-1398-4ded-bfb4-b78a76d12be1}:1.0", - "{57a08f7a-8425-40d2-a7c5-d58b9083aafe}:1.0", - "{a39868d6-648d-41fb-a597-94f9bf5e2177}:1.0", - "{bca37fce-ed21-4413-a285-f8579b9cfa92}:1.0", - "{65f82bab-3099-49cd-ad8b-0574401cfcbb}:1.0", - "{b5438c93-0741-4d54-bb0a-941a6f2d14cf}:0.1.4", - "{2e22721b-ab50-4de8-93aa-a9f05212f5b7}:1.0", - "{eb811b59-28c8-48c6-be14-10260cb983af}:1.0", - "{53e918f9-b876-429e-a4ce-2f31e6c1ce66}:1.0", - "{a8ba8e9d-4b4d-4f32-a4ae-30f2098bce9e}:1.0", - "{61127096-c65e-45f2-9f88-025d19144bf8}:1.0", - "{980a6cd2-57dd-4f0a-a025-8161e0b31eca}:1.0", - "{979e68c1-b469-452f-a121-2f6d1f4e118e}:1.0", - "{4f7690cd-beda-4296-b398-43919dd378e7}:1.0", - "{cae04774-b6fd-4142-87b9-469884f2d964}:1.0", - "{3044e509-f8e8-460a-90fd-833648e6957c}:1.0", - "{eb8d7dda-bbf1-4091-858a-37cb5af08806}:1.0", - "{594c7386-2d8d-4cf0-a37a-2a3159274ed2}:1.1", - "{bd2c97f8-5164-4015-aa37-0f521df4cf31}:1.0", - "chatbotintegration@example.com:1.0", - "{85211da9-fc9e-4a32-a12b-f6d89dc77d92}:1.0", - "wordcounter-xyz123@example.com:1.0", - "pin-by-keyword@example.com:1.0", - "{79e85f45-51fc-4dd8-8711-11240f185661}:1.0", - "{781d3881-df6b-4203-a45c-44234fd6ba8b}:1.0", - "{da6d65e2-1d09-40ff-8932-1120b9cd530f}:1.0", - "{a985b9d7-7b0c-4d35-9c05-e6a94da78fc7}:1.0", - "{3ae53c25-f521-4a0e-9a96-1ee5c5da1cbe}:1.0", - "{6c8e6ffb-fb37-4e36-836c-c81f3a794a9a}:1.0", - "{7520b1da-5a27-4899-809e-ca5c913dd5f5}:1.0", - "{d038766e-331c-4c05-9869-70b726d81caa}:1.0", - "{db205dff-56fb-44bd-9140-397fdecd7a73}:1.0", - "{9f8e3a65-1cb6-48cb-bd1b-2c6a0cf48070}:1.0", - "{c353face-dd9e-414a-a6d5-0c996ed7847c}:1.0", - "{da6310fc-c245-4394-897f-08966f1fda3f}:1.0", - "{9524b55c-8294-479a-87d5-520d8b0eebe7}:1.0", - "{1f5f9d4f-05b9-4628-96a9-58f6161275d5}:1.0", - "{309ea51f-35c5-4939-85c4-21603c8053cf}:1.0", - "{7e0dca29-f61d-48c3-ab45-b2a280b8e3f4}:1.0", - "{b663dedd-66c8-46cd-900b-374be26a393e}:1.9", - "{e752fa5b-97a4-4e0c-9038-4c5aebb0226f}:1.0", - "{064c214d-ac6f-4c36-b951-8199768069c8}:1.0", - "sinkfieldzishannnn@gmail.com:1.0", - "language-specific-news-updates@example.com:1.0", - "fontflux@typographyinsights.com:1.0", - "{ef1bca11-f5b0-414d-9149-a383b39a938c}:1.0", - "{22452b41-4f54-474d-9f87-1d605eb4c870}:1.0", - "highlightpro@example.com:1.0", - "{ea4b29c0-f885-42d9-9dda-f5a2efce309a}:1.0", - "{5fe8d087-ade3-4981-9303-cc27222025af}:1.0", - "{15f5bbdc-b99e-4049-bb6c-b5d4bf383a46}:1.0", - "{a50aa29e-15f3-4cb9-85f6-cf9febd0ac42}:1.0", - "{76551071-f895-4911-914f-3301182dc959}:1.0", - "{59900a16-0774-448e-8335-48f5bcdc25ff}:1.0.6", - "{7543d61b-7767-4ad0-afb4-cfed5daba9a8}:1.0", - "{6c2dc24c-f2b0-4abe-be23-61ca50147a32}:1.0", - "{117f8370-0df8-459c-8ee5-017d602274a9}:1.0", - "{227e2e1d-43ed-459e-9c66-145d1ea49d6a}:1.0", - "{57533bfb-5fbe-46b1-a0c0-0f1068d28134}:1.0", - "{065b9bf2-787f-4b4c-aab3-22d1dfd7d09c}:1.2.6", - "{563e6f8e-a805-442d-bda3-8e251939ac20}:3.7.3", - "{8973726f-0864-4c37-b2c4-72952aa8b80f}:1.0", - "{e87ad52e-636d-4820-a513-4b0dd884639f}:1.2", - "{8512510a-65f0-40e7-8411-6ac2cc59e0ba}:1.0", - "{6ea687f0-6945-4aa9-94d6-ed6cd519941b}:1.0", - "{ac964b5f-02ec-49bd-8f5a-5509a2bc55c6}:1.0", - "{262136f0-135f-46a6-847e-25e552fd97f6}:1.0", - "{af72886f-7f05-430c-ba5f-f855668424b6}:2.0", - "{8f7d0b82-c12c-4b1b-9afd-76871d12a583}:2.0", - "{e2ec4eb2-ef30-45ad-b9d3-c5c3ba74c8ff}:2.0", - "{dec22285-940b-4a82-b241-4302999e3ed5}:2.0", - "{6377f784-07fc-4462-91c5-f66f8020443d}:1.0", - "{36a61d5c-dfbd-42be-8bc4-81e376478360}:1.0", - "{49bc075b-bd49-4651-afc0-ec26ac056425}:1.0", - "{d403d110-ffed-48e8-b4a6-cac9993efe8f}:1.0", - "{a278b728-6264-49dc-8352-2d7e61536561}:1.0", - "{9ce823d6-3cdf-45cf-90f2-39a5c8b7f987}:1.0", - "{a5a0c035-849f-4f08-9994-70b48f0df39d}:1.0", - "{2d0b5311-effd-49eb-85a3-0234b168c83c}:1.0", - "{30d81923-d6f8-48da-a8af-863112b7353c}:1.0", - "{dff2cd3d-351a-4c91-817b-40a591134ea5}:1.0", - "{f48ce465-74ef-4329-9f48-5e6b32784180}:1.0", - "{29d689af-b6fe-46d1-b4bd-50f86192369f}:1.0", - "{aae23774-6df0-465b-b6d3-38e371ffd7b1}:1.0.2", - "{c7ee0a1e-691e-4277-b04f-f07eb6735941}:1.0", - "{b474a18c-5f9b-4c70-ad97-6b16093b6354}:1.0", - "{a5a669be-ba5e-4c23-95bf-6435c1dfe08c}:1.0", - "{7d339b39-f5bd-4f14-b220-5b4e2fbec12c}:2.0", - "{531906d3-e22f-4a6c-a312-9367b88a1a63}:1.22.44", - "{70351377-d47f-4b49-b06b-8e8f0d0b6f36}:1.0", - "{510a9d2a-5d90-40d9-b503-0bb2bfe5448c}:1.0", - "{065ddcfd-feb3-4af8-b4d2-0253ddc5984f}:1.0", - "{42378e02-7355-481f-a90e-f223549825b8}:1.0", - "popup-tab@eight13.blogspot.com:0.3.1", - "extension@streams.na:0.0.1", - "your@mail.com:1.0", - "{0d47857c-c108-40c4-9216-85df3b289116}:2.0", - "{531906d3-e22f-4a6c-a102-6267b88a1a63}:1.22.44", - "{531906d3-e22f-4a6c-a102-7267b88a1a63}:1.22.44", - "{82247ac3-668a-4bef-816f-e9266a941eb8}:1.1", - "{a75bf3f2-b537-4252-8d56-91870dbe4c83}:1.0", - "{82eb065e-6481-401c-adcc-308d2f2cd112}:1.0", - "{27af98af-da0d-45d4-834b-4c749796bd46}:3.4.8", - "{5174efd2-91e4-4d02-8334-982e0570248b}:3.9", - "{764454ee-3293-4eee-84bc-de9db0876ad4}:3.8.9", - "{fc281d02-41e4-41ad-aef3-c835311aae97}:3.5.8", - "{8f9f60bc-1ddf-4f7d-be94-b732ee2d4279}:2.3.5", - "{4103b84f-8249-411d-823f-b1fce1dfb9f2}:3.2.5", - "{9d7c46b8-f46d-46c4-904c-81c94971715a}:2.12.0", - "{f61804df-15e6-4fa7-bed8-ab2beb29f1b2}:1.0.3", - "{a542e197-56d1-4603-8d09-3d90306d45d5}:1.5.0", - "{2331d8a3-b7a7-4453-85f2-cd4798bb8968}:1.1", - "{71ecd08a-fe9c-42bc-8599-bc49f40284fe}:0.1.5", - "{cb627236-9987-4228-952c-da8b24d1c236}:1.5", - "{c593b224-7302-428d-9fab-ac46a9a68401}:0.2.1", - "{07af4f7e-9d6f-40d6-92aa-b76a680cabc9}:1.0", - "{ed3e8e5f-4c19-49a6-804c-deccecf86c4f}:3.0.0", - "{c4c13eb8-3cfc-40ce-be3b-9a30d999e4bf}:1.0.6", - "{cba7059b-c13f-49b4-a138-0bb90aacbb92}:3.7.9", - "extension@smartcric.Watch:0.0.1", - "{e3005bed-cf67-400a-8110-9f8a4fac3198}:2.12.0", - "{c7890603-8a86-4442-9f0a-13235655085a}:1.0.6", - "{a026185b-28df-4c91-83b1-8ce0ba7b72db}:0.1", - "{b249c80f-96c5-420b-9dda-9a0ad66491ea}:1.1", - "{7834a840-03a9-4541-8e0d-6e3fcd5fb31f}:1.0", - "{448d0a35-2cf3-434a-ac93-8f3a5fab2662}:1.0", - "{b2f9d2ab-d0d1-421b-9741-185748c34986}:0.1", - "{2803421e-ff85-4766-966c-cb846167e25e}:1.1", - "{39372fad-7ce0-4ea9-8ed5-897c74dc8479}:1.0", - "{ee40846a-10c0-4883-a63d-caaa902e72e1}:1.0", - "{2165368d-59c1-4172-a22f-ca108f1da3ab}:3.2", - "{79a88a26-ecf6-4a44-9818-eed9d4e822c3}:3.2", - "{ecd9e589-4853-4553-bfbc-00e8e450769f}:3.2", - "{bea9d249-82f9-43e3-b169-61b267520689}:2.9.9", - "{039d1d05-aba2-43ae-b37d-b23ca0427b0a}:1.0", - "{4521f47d-73d7-41c3-8298-1b448baa7b1a}:2.9.7", - "{10635e3b-dcff-45db-ad84-98d6492b8613}:4.4.4", - "{8fddbfc6-60b6-4054-b9aa-574d13130f10}:3.3.6", - "{fac35400-51ce-4209-bb08-252d2883ea99}:2.9.8", - "{f9ae8618-cf45-435c-a5d3-4aba8821044d}:2.9.5", - "{b97d0b21-811d-4e36-92fb-336378a186e9}:3.4", - "{a6daa9b5-88b5-421e-851b-bdca7982d277}:1.9", - "{7539e770-e6fb-42c6-910f-f6fe99109cae}:2.6", - "{695b8b8e-0eab-4f7f-aae5-8da2fc8583a2}:3.4", - "jid1-WF1v8esuNM9pRg35@jetpack:1.1.2", - "{69e6c226-600c-4848-be21-35c20197c145}:2.4", - "{c91b1e70-97c6-4787-99dd-d834e84e5cd8}:3.1", - "{b6e83b4e-0ebe-43bd-b4ac-9fc4c4766aa5}:1.0", - "{4f966a9a-4ec6-41bf-9f59-53fdd58c5b27}:2.2", - "{019310ad-ef2d-42ec-b3ba-79acb203bd4c}:3.3", - "{f45d8413-0d4b-4c75-83d2-cf3dfbbf7700}:3.8", - "{af24eacd-0fae-413f-ba3e-ae3c41c04488}:2.9", - "{8e18946b-397a-43ab-9b6c-6c7bdf918b12}:2.8", - "{3b37e8ef-fe4a-4ef0-87d0-e4dde2fa6833}:2.2", - "{4aca3301-b61f-483a-b13b-e47119d6f7ba}:2.8", - "style-disabler@example.com:1.0", - "{d76321d2-1a05-49f3-8477-d8aabe2aaac4}:1.0", - "cookie-disabler@example.com:1.0", - "{c55f9c3a-9aae-4da0-afc3-fa8cdba1e1c6}:1.5.1", - "{7e39748a-6397-4d5a-b5a8-87b55c9ffc7c}:3.7", - "{ea4874fe-39e8-42f6-b374-2f5cf35c354d}:1.6.1", - "jid1-WF1v8esuNM9pRg23@jetpack:1.1.2", - "btn-to-xaf@example.com:1.0", - "{003b93b9-724c-41e6-a56e-a64752482706}:2.1.3", - "{7e23e542-d981-474e-8bd7-9a6532628333}:169456994", - "{9fd51abb-2d97-4002-99b9-7b2255f50404}:1.0", - "lyd-to-iqd@example.com:1.0", - "jod-to-aud@example.com:1.0", - "{e197d1ec-c2db-4437-aa06-36adf5cae409}:1.0", - "nzd-to-bif@example.com:1.0", - "{fa257d0c-8694-11ee-b9d1-0242ac120002}:1.0", - "{d629c266-8ded-43d2-88fb-0e789010851a}:169965635", - "{f62c9215-671c-46e5-b505-ae5b5e1a50da}:1.0", - "{4fff764a-7a58-41cf-8ae2-e4dd4aecb0c8}:1.0", - "{75fd3ee3-806a-4363-8527-1abffdbfe289}:1.0", - "{1652011f-ff36-41ce-8710-79801df4d5c1}:0.1.2", - "{6a1ca46e-1ce5-4f6e-966b-c63a74fc70dd}:169965603", - "{a1ad2dd0-d8c0-4514-ab99-d5e566576043}:1.0.6", - "{5e65e562-d553-532e-5bd8-9a5543216455}:1.0", - "{6ad9cce5-7595-4e32-8d89-9c9d6115f7ae}:1.1", - "{01fc23ab-0e68-4abb-bb7a-a6781528b686}:4.0.0", - "{6e37e282-d746-153e-1bd5-9a6399766433}:1.0", - "{6e34e821-d526-135e-2bd4-2a6428726432}:2.0", - "{d5eeeb91-aeec-4c83-bb40-5bf534c22ff4}:1.3.19", - "{6e65e262-d523-132e-1bd8-9a6543216432}:1.0", - "{6e31e132-d923-434e-8bd2-9a6532238212}:1.0", - "{6e12e552-d981-574e-4bd7-9a6534221212}:1.0", - "{12e7e542-d981-474e-8bd7-9a6532622549}:1.0", - "{20cd261d-1fa8-452d-975d-fd47949fc417}:1.0", - "{a78d5b99-0f48-40a7-9ae5-78619b9d6163}:0.1.33", - "{548928dc-8561-4eb5-adf1-19c2dab44e61}:169061932", - "{ddcfab4d-e4c5-4faf-93b8-d64950c56739}:169061792", - "{21ed6e5b-4b21-4175-b839-cf834c6733c4}:2.0.0", - "{c2278bd8-d59c-4c4b-b637-c8872eeed658}:1.1", - "{fdaf25a3-e819-4471-9635-0f91099d6828}:1.2", - "{6d23ea5d-7466-43ab-8504-c83c8dec71e9}:1.2", - "{20e79861-95bb-42dd-86b0-b61206ddd485}:1.3", - "{d65bb631-fe82-41f8-8bc5-85ea96334b71}:0.6a", - "{1e9b0166-5375-4632-b05f-63c6d91e6bde}:1.1", - "addonsibox@extension.com:0.0.1", - "{c49938e8-3e8b-478e-a1e3-60ea4e1ec72a}:8", - "{aa4ea945-e29c-49f5-a022-7fe95dbfe640}:8", - "{f62c83ec-3f97-4cad-8cd9-2eb9ae336d5a}:8", - "{7b5b0725-2ff8-4d94-906e-b52c39703586}:8", - "{cd1e1cb7-4b15-430e-bac1-37b20a095075}:8", - "{948c6e08-2e15-4bac-b45e-2edaf948ded0}:8", - "{b7dc45ce-d71b-49c0-886e-c08a0b3ca037}:8", - "{f7a9dfb3-ca4c-4015-a90c-f0e050fdea0c}:8", - "{7e1431e0-2991-4e13-9308-4ab287818fc4}:8", - "{8cbd5975-47c5-4867-b663-f951d0a89241}:8", - "{bb5f410f-35d9-4036-8a93-91bdad5f31a6}:8", - "{f01f5991-2c12-4404-be17-4cce660fb157}:8", - "{7f17ada0-4e19-436f-8788-9f9aac714cce}:8", - "{be605ee6-963c-4555-a721-19066c1a5976}:8", - "{9c5e0691-52cf-45b2-88ae-76c58a750d51}:8", - "{df09401f-9fa2-437f-94f0-1100c6a68478}:8", - "{de32e4b4-beaf-46ea-a10d-01ea2f9d6c06}:8", - "{7fc41886-6a63-48ca-a594-829a9d7494a2}:8", - "{8474e98d-1ea6-44a3-8c43-94de0f7a176f}:8", - "abjcfabbhafbcdfjoecdgepllmpfceif@chrome-store-foxified--243490558:7.3.0.0", - "abjcfabbhafbcdfjoecdgepllmpfceif@chrome-store-foxified--243490558:7.3.0.7", - "neomigpibafpboiknmijddgnncengfnm@chrome-store-foxified--243490558:3.3.8", - "kmdfbacgombndnllogoijhnggalgmkon@chrome-store-foxified--243490558:3.42", - "{4c7cd805-e2b3-450f-ae2c-2d8b79283a3c}:1.8.2", - "{88db91ed-ee4e-45e4-bdda-f96fe9497414}:1.8.2" - ], - "unblocked": [], - "softblocked": [ - "slovnik-dblclick@mansair.local:1.3", - "WE-clipper@wikieducator.org:0.9.9", - "flightlog-tracker@local:1.0.0", - "local-llm-translator@local:1.0.0", - "local-llm-translator@local:2.0.0", - "{b588ca4a-46f5-4592-a3fa-fc0bef3db6f6}:1.0.0", - "{b588ca4a-46f5-4592-a3fa-fc0bef3db6f6}:1.1.0", - "{b588ca4a-46f5-4592-a3fa-fc0bef3db6f6}:1.2.0", - "{89cd223b-1428-4379-bbf7-bdda70888532}:1.0.0", - "{89cd223b-1428-4379-bbf7-bdda70888532}:1.0.1", - "{89cd223b-1428-4379-bbf7-bdda70888532}:1.0.2", - "{89cd223b-1428-4379-bbf7-bdda70888532}:1.0.3", - "templ@sccsspnk.dev:5.6.4", - "fjalor@shqip.dev:1.0.0", - "@bm-combatslop:26.6.24", - "@bm-combatslop:26.6.23", - "twitch-points-farmer@antigravity:1.0.0", - "{03f7f66f-379d-42de-9b98-ffdba87431f4}:26.6.24", - "amazon-tracker@fabian.local:0.5.0", - "claude-usage-bars-steve@local:0.3.1", - "claude-usage-bars-steve@local:0.3.0", - "claude-usage-bars-steve@local:0.2.0", - "claude-usage-bars-steve@local:0.1.0", - "messenger-unblocker@steve.local:2.0.0", - "lexis-ai-cert-evaluator@lexisnexis.at:0.1.3" - ] - }, - "schema": 1782282994642, - "key_format": "{guid}:{version}", - "stash_time": 1782304515948, - "id": "8b4a12cc-e2f9-4ad2-b793-980bf7f51c56", - "last_modified": 1782304603368 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{058b6fba-0ecc-4777-83c9-76b97050cd98}:1.0", - "fiverr-scraper@imperium:2.0", - "cambridge-word-saver@extension:1.1.0", - "rfp-darkmode@local.net:1.0.0", - "{69ce9ab6-acdc-4bd0-a70b-2d8ec618ad91}:1.5", - "workflow-pro-suite@local.codex:1.2.16", - "workflow-pro-suite@local.codex:1.2.17", - "workflow-pro-suite@local.codex:1.2.18", - "workflow-pro-suite@local.codex:1.2.19", - "autoclear@ekstensi.lokal:2.0", - "{29f42579-9618-4dc7-8647-eaad7cd3343b}:7.8.1", - "{1374ceaa-e05f-4967-a2aa-cfcb8ed8bda6}:1.2.4", - "civitai-switchsolo@hansolocambo.com:1.0" - ] - }, - "schema": 1782261398563, - "key_format": "{guid}:{version}", - "stash_time": 1782282906194, - "id": "a8e73eaf-0e78-4427-bffe-7ac13259b146", - "last_modified": 1782282994539 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "cba-@myscript.com:1.0", - "security@devolutions.net:0.1.0", - "traderie-macro@your-domain.invalid:0.2", - "traderie-macro@your-domain.invalid:0.3", - "mundial2026@local:1.3.3", - "pauza@local.extension:1.0.0", - "OneTabSidebar@MemeMan:1.0", - "e621bar@MemeMan:6.9", - "ghostprofile@extension.local:1.1.0", - "rivendellmist@dasoldi.com:1.1.1", - "rivendellmist@dasoldi.com:1.1.0", - "rivendellmist@dasoldi.com:1.0.3", - "{bcc24a3f-90e0-42ab-bfbc-6f5730a8dad4}:1.0", - "{bd5e2748-b40e-442a-a705-75efe2c0511f}:1.0", - "fel-legume-litige@biocoop.local:1.0.2", - "litige-suivant@biocoop.local:1.0.0", - "assistant-litiges-fel-btobio-140@jordy-suzon.local:1.0.2", - "scroll-ocr-overlay@charleszhang:1.1.27", - "scroll-ocr-overlay@charleszhang:1.1.29", - "my-udemy-speeds-addon@localhost:1.2", - "my-udemy-speeds-addon@localhost:1.0", - "my-udemy-speeds-addon@localhost:1.1", - "{8b472767-f8ef-4236-9eb7-a72ed5c7c227}:1.0", - "{a4f49153-7ebd-4cfa-9039-a6b787edf7be}:1.0", - "save-media-timestamp@orlov.local:1.0.0", - "auto-dark-mode@orlov.addons:1.0.0", - "typescale@bentrandigital.com:1.2.0", - "workflow-pro-suite@local.codex:1.2.9", - "twitchchatdanmaku@wheatup:2.1.1", - "workflow-pro-suite@local.codex:1.2.11", - "workflow-pro-suite@local.codex:1.2.12", - "workflow-pro-suite@local.codex:1.2.14", - "workflow-pro-suite@local.codex:1.2.15", - "tailchrome-mario-2026@local:0.1.11" - ] - }, - "schema": 1782239791395, - "key_format": "{guid}:{version}", - "stash_time": 1782261306400, - "id": "3e2846be-a949-4e57-af3a-cc19ba0fc0ea", - "last_modified": 1782261398340 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "gemini-context-manager@kahsa.local:0.8", - "favory@sp4ce.pw:5.0.1", - "free-map-genie-nr2bj@nr2bj.github.io:3.0.2", - "vault-autofill@local:1.0.3", - "qingdakaizhegwangzhiwww@enablecopy.com:1.1.20", - "brenes.randall@yahoo.com:1.3.3", - "brenes.randall@yahoo.com:1.3.2", - "brenes.randall@yahoo.com:1.3.1", - "brenes.randall@yahoo.com:1.3", - "brenes.randall@yahoo.com:1.4.1", - "eva-stats@evastats.gg:2.1.0", - "{69ce9ab6-acdc-4bd0-a70b-2d8ec618ad91}:1.3", - "{69ce9ab6-acdc-4bd0-a70b-2d8ec618ad91}:1.4", - "oneal-search@oneal-b2b.com:1.0", - "{fe41cbff-6f4e-4e67-98ad-14c8b31a1797}:1.0", - "{03058c3e-7f90-4256-a256-33e37314f18e}:1.0", - "{cf68dc44-f7ff-43ee-a929-9ee43cf13bd1}:1.0", - "{5dc3b2a0-2973-4e15-b03b-94651f256f4a}:1.0", - "{4c7cd805-e2b3-450f-ae2c-2d8b79283a3c}:1.8.1", - "{4c7cd805-e2b3-450f-ae2c-2d8b79283a3c}:0.2.0", - "{88db91ed-ee4e-45e4-bdda-f96fe9497414}:0.1.0", - "{2afe847b-72d8-4875-91c1-fdfb6e8a1f86}:4.0", - "{2afe847b-72d8-4875-91c1-fdfb6e8a1f86}:2.0", - "{2afe847b-72d8-4875-91c1-fdfb6e8a1f86}:3.0", - "{2afe847b-72d8-4875-91c1-fdfb6e8a1f86}:1.0", - "{3aa9d745-ecf6-4990-9556-188478ca7617}:1.0", - "{3aa9d745-ecf6-4990-9556-188478ca7617}:2.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.26", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.24", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.23", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.22", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.21", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.20", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.19", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.18", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.17", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.15", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.14", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.27", - "workflow-pro-suite@local.codex:1.2.2", - "workflow-pro-suite@local.codex:1.2.4", - "workflow-pro-suite@local.codex:1.2.6", - "scroll-ocr-overlay@charleszhang:1.1.11", - "scroll-ocr-overlay@charleszhang:1.1.9", - "scroll-ocr-overlay@charleszhang:1.1.10", - "scroll-ocr-overlay@charleszhang:1.1.8", - "scroll-ocr-overlay@charleszhang:1.1.12", - "scroll-ocr-overlay@charleszhang:1.1.5", - "scroll-ocr-overlay@charleszhang:1.1.6", - "scroll-ocr-overlay@charleszhang:1.1.7", - "scroll-ocr-overlay@charleszhang:1.1.13", - "scroll-ocr-overlay@charleszhang:1.1.16", - "scroll-ocr-overlay@charleszhang:1.1.14", - "scroll-ocr-overlay@charleszhang:1.1.18", - "scroll-ocr-overlay@charleszhang:1.1.17", - "scroll-ocr-overlay@charleszhang:1.1.19", - "scroll-ocr-overlay@charleszhang:1.1.20", - "scroll-ocr-overlay@charleszhang:1.1.21", - "scroll-ocr-overlay@charleszhang:1.1.22", - "scroll-ocr-overlay@charleszhang:1.1.24", - "scroll-ocr-overlay@charleszhang:1.1.23", - "{d0f542cc-da35-4220-b835-db752cdcf7ca}:0.1", - "genshin-resource-tracker@aj1991:1.0.0", - "genshin-resource-tracker@aj1991:1.1.0", - "genshin-resource-tracker@aj1991:1.2.0", - "workflow-pro-suite@local.codex:1.2.7", - "workflow-pro-suite@local.codex:1.2.8", - "android-back-closer-v3@myscript.com:1.0" - ] - }, - "schema": 1782218212836, - "key_format": "{guid}:{version}", - "stash_time": 1782239705861, - "id": "c2f4dd72-43c8-4cd0-ba51-6bcdd8e15f56", - "last_modified": 1782239791285 - }, - { - "stash": { - "blocked": [ - "secure-download-manager@35b87077-3a6a-4e2f-8d1b-94365c04ad5b:1.0.0", - "secure-download-manager@35b87077-3a6a-4e2f-8d1b-94365c04ad5b:2.0", - "secure-download-manager@35b87077-3a6a-4e2f-8d1b-94365c04ad5b:2.2.3", - "secure-download-manager@35b87077-3a6a-4e2f-8d1b-94365c04ad5b:2.3.7", - "secure-download-manager@6d1983d3-6391-4c98-be1e-ab4f1025ac28:1.0.0", - "secure-download-manager@6d1983d3-6391-4c98-be1e-ab4f1025ac28:7.8", - "secure-download-manager@6d1983d3-6391-4c98-be1e-ab4f1025ac28:7.9", - "staffnews-auto-opener@example.com:1.5", - "staffnews-auto-opener@example.com:4.2", - "{acc96b98-d958-4835-8235-416c26fb6fca}:1.1", - "{acc96b98-d958-4835-8235-416c26fb6fca}:1.2", - "{f11497ce-3cef-4e15-b822-b8ea77d5fe06}:2.4.0", - "{3366173f-6e1c-4794-aae2-41169d2a1604}:1.1.0" - ], - "unblocked": [], - "softblocked": [ - "@chaturbate:2.45", - "selector@intunedhq.com:0.0.04", - "dont-feed-me@julien:2.0.0", - "@cisco-quarantine-search-external:1.4.0", - "@cisco-quarantine-search-external:1.4.1", - "{b3cb7414-49c2-49f9-a478-a7f4958cbaf2}:1.5.0", - "02ad42742939e2247778a524dda9312633713517@mazik.ua:1.2", - "react-devtools-2zomqe@example.com:1.0.0", - "{3459f00a-e71b-4832-b75f-3aa5c2d4d760}:2.3.0", - "{474b69b3-51c3-4776-8552-b7cae34c2b39}:1.0", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:3.1", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:4.0", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:4.1", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:4.2", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:4.3", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:4.4", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:4.5", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:4.6", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:4.7", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:4.8", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:4.9", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.0", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.1", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.2", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.3", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.5", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.6", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.7", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.8", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.9", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.9.2", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.9.3", - "{081f1a1b-1765-401b-90b2-f985573a8ef8}:5.9.4", - "odoo-companion@dotbdsolutions.com:2.13.2", - "leagsoft_extension@leagsoft.com:1.1.1", - "leagsoft_extension@leagsoft.com:1.1.7", - "24gliwice-comments@example.com:1.6", - "ai-recruiting-agent@aidexianzhaopinguan.com:2.0.6.9", - "rabbit-link@scout24.com:1.1", - "rabbit-link@scout24.com:1.2", - "name-print@private.local:1.0", - "lepis-time-tools@example.com:1.0", - "{C7D2E1F4-9A8B-4E3C-B5D1-2E4F6A8C0B2D}:1.0.1", - "{C7D2E1F4-9A8B-4E3C-B5D1-2E4F6A8C0B2D}:1.0.2", - "x-archive-explorer@dev.com:1.0.0", - "ffeed@ffeed.developer.gmail.com:0.33.0", - "ffeed@ffeed.developer.gmail.com:0.34.0", - "ffeed@ffeed.developer.gmail.com:0.35.0", - "ffeed@ffeed.developer.gmail.com:0.36.0", - "ffeed@ffeed.developer.gmail.com:0.37.0", - "ffeed@ffeed.developer.gmail.com:0.38.0", - "creatordash-youtube@creatordash.local:1.0.0", - "support@browserrelay.com:0.1.0", - "securealias@secureinseconds.com:1.0.3", - "securealias@secureinseconds.com:1.0.5", - "securealias@secureinseconds.com:1.0.8", - "@chaturbate:2.49", - "{69ce9ab6-acdc-4bd0-a70b-2d8ec618ad91}:1.0", - "{69ce9ab6-acdc-4bd0-a70b-2d8ec618ad91}:1.1", - "{69ce9ab6-acdc-4bd0-a70b-2d8ec618ad91}:1.2", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.11", - "dev-newtab@local:0.1.0", - "dev-newtab@local:0.2.0" - ] - }, - "schema": 1782196621214, - "key_format": "{guid}:{version}", - "stash_time": 1782218107851, - "id": "d2ec10f8-3aa1-45b0-bcc2-2fb8a8eb02f5", - "last_modified": 1782218212643 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "rivendellmist@dasoldi.com:1.0.2", - "force-cancel-checker@example.com:1.0.1", - "ffeed@ztkent.github.io:0.4.0", - "ffeed@ztkent.github.io:0.5.0", - "ffeed@ztkent.github.io:0.6.0", - "ffeed@ztkent.github.io:0.7.0", - "ffeed@ztkent.github.io:0.8.0", - "ffeed@ztkent.github.io:0.9.0", - "ffeed@ztkent.github.io:0.10.0", - "ffeed@ztkent.github.io:0.11.0", - "ffeed@ztkent.github.io:0.12.0", - "ffeed@ztkent.github.io:0.13.0", - "ffeed@ztkent.github.io:0.14.0", - "ffeed@ztkent.github.io:0.15.0", - "ffeed@ztkent.github.io:0.16.0", - "ffeed@ztkent.github.io:0.17.0", - "ffeed@ztkent.github.io:0.18.0", - "ffeed@ztkent.github.io:0.19.0", - "ffeed@ztkent.github.io:0.20.0", - "ffeed@ztkent.github.io:0.21.0", - "ffeed@ztkent.github.io:0.22.0", - "ffeed@ztkent.github.io:0.23.0", - "ffeed@ztkent.github.io:0.24.0", - "ffeed@ffeed.github.io:0.25.0", - "ffeed@ffeed.github.io:0.26.0", - "ffeed@ffeed.github.io:0.27.0", - "ffeed@ffeed.github.io:0.28.0", - "ffeed@ffeed.github.io:0.29.0", - "ffeed@ffeed.github.io:0.30.0", - "ffeed@ffeed.github.io:0.31.0", - "ffeed@ffeed.github.io:0.32.0", - "workflow-pro-suite@local.codex:1.1.4", - "workflow-pro-suite@local.codex:1.1.5", - "workflow-pro-suite@local.codex:1.1.7", - "gs-page-reader@vmax.local:1.0.0", - "workflow-pro-suite@local.codex:1.1.9", - "workflow-pro-suite@local.codex:1.2.0", - "workflow-pro-suite@local.codex:1.2.1" - ] - }, - "schema": 1782175007152, - "key_format": "{guid}:{version}", - "stash_time": 1782196508400, - "id": "bab04aa7-5580-4a0c-92c8-cf610930dd14", - "last_modified": 1782196620984 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "guttentaga@gmail.com:2.0", - "{9f97d167-6275-4068-ab09-8e400967fd93}:0.1", - "bashkir-morph-to-anki@yourdomain.local:1.0", - "rivendellmist@dasoldi.com:1.0.1", - "itsimonsec@gmail.com:2.0", - "greenpuccin-sencha@connor:1.0.0", - "greenpuccin-matcha@connor:1.0.0", - "@paramount-hd-plus:1.16" - ] - }, - "schema": 1782153403058, - "key_format": "{guid}:{version}", - "stash_time": 1782174907983, - "id": "41b5492e-cd5d-4776-8484-cf862904cc1d", - "last_modified": 1782175006846 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "webpages-font-override-helvetica@nyamato.dev:1.1", - "odoo-font-override-helvetica@nyamato.dev:1.11", - "leaveyou@leaveyou:1.0.0", - "@cisco-quarantine-search-external:1.3.0", - "{303828fb-5eed-4bd9-8c63-4548bf9c9665}:1.5.9", - "{303828fb-5eed-4bd9-8c63-4548bf9c9665}:1.5.7", - "{303828fb-5eed-4bd9-8c63-4548bf9c9665}:1.5.2", - "shady-dm@extension:1.0.0", - "{7d403c79-3383-4785-b6d4-795db26a1c00}:0.1", - "{6c9f442b-3d07-4be9-b36b-50d5849b9682}:0.1", - "anime-checker@example.com:1.0" - ] - }, - "schema": 1782131795255, - "key_format": "{guid}:{version}", - "stash_time": 1782153307504, - "id": "f5185698-2e25-44f7-aa65-9c7c2ea14e50", - "last_modified": 1782153402856 - }, - { - "stash": { - "blocked": [ - "{5a72cd50-76dc-4cf3-8d2b-bbdd2f53e012}:2.0.0", - "{5a72cd50-76dc-4cf3-8d2b-bbdd2f53e012}:1.1", - "{5a72cd50-76dc-4cf3-8d2b-bbdd2f53e012}:2.0.1" - ], - "unblocked": [ - "opti.switcher@node.energy:1.0.2", - "opti.switcher@node.energy:1.0.3", - "opti.switcher@node.energy:1.0.4", - "vantage@skyfielddigital.com:3.0.0", - "vantage@skyfielddigital.com:3.0.1", - "vantage@skyfielddigital.com:3.0.2", - "vantage@skyfielddigital.com:3.0.3", - "vantage@skyfielddigital.com:3.0.4", - "vantage@skyfielddigital.com:3.0.6", - "vantage@skyfielddigital.com:3.0.8" - ], - "softblocked": [ - "my-custom-addon@example.com:2.0", - "proxyrotator@local:1.0.4", - "test1@example.com:2.3", - "criticality-highlighter@example.com:1.0.0", - "sf-remote-workorder@addon:2.0.0", - "info@recall-app.com:1.124", - "selveo-autologin-app@firtal.com:0.4.0", - "sf-glocke@addon:2.0.0", - "sf-glocke@addon:2.1.0", - "sf-glocke@addon:2.2.0", - "amincabaxx70@gamail.com:1.0", - "deepl-translator@local:1.0.0", - "info@markdown.com:1.0", - "max-security@local.extension:1.1.0", - "ammit.duat@kaathewise.net:2024.9.8", - "my-chatbox-12345@my-computer.com:1.0", - "gestelab@crpp.cnrs.fr:0.1", - "@rf-extension-001:4.6", - "@rf-extension-001:4.7", - "@rf-extension-001:4.61", - "@rf-extension-001:4.72", - "@rf-extension-001:4.73", - "@rf-extension-001:4.17", - "@rf-extension-001:4.76", - "@rf-extension-001:4.81", - "@rf-extension-001:4.86", - "@rf-extension-001:4.87", - "gemini-helper-sidebar-9999@my-computer.com:1.2", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.2", - "zhanghuanonline@163.com:2.1.2", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.6", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.7", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.8", - "custom-youtube-playback-rotation@mentkol.addons:1.0.1", - "pricecharting-search@plmgrn.users.noreply.github.com:1.2.3", - "SimpleSelSCK5Proxy@extension.org:1.0.1", - "maskscript@qkhnsmsk.dev:1.1.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.9" - ] - }, - "schema": 1782110192238, - "key_format": "{guid}:{version}", - "stash_time": 1782131706084, - "id": "20397572-115b-4d7a-be55-9cd7f4b3f0f5", - "last_modified": 1782131795053 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "gzist-jw-plus@orange:1.0.0f", - "flickr-newtab@local:1.0.1", - "{8094105a-81fc-48f4-ade7-91d9ad4b7877}:1.0", - "{8094105a-81fc-48f4-ade7-91d9ad4b7877}:1.1", - "{19c4e8ab-6d91-49a1-989d-8fd8e16aaa86}:1.0", - "{197073a2-eed3-45e0-a64a-a05d98978396}:1.0", - "change-text-style-addon-20250512@example.com:2026.6.11.1", - "change-text-style-addon-20250512@example.com:2026.5.24.3", - "change-text-style-addon-20250512@example.com:2026.5.26.1", - "change-text-style-addon-20250512@example.com:2026.5.30.1", - "change-text-style-addon-20250512@example.com:2026.6.12.1", - "{249f75e9-4e5a-477c-b8f2-5599632fcc70}:1.1", - "gradelink@gradelink.app:1.1.0", - "7speaking-bot-rework@github.com:0.0.43", - "{b3e21da4-99f8-4b37-926f-865d30defb11}:1.0" - ] - }, - "schema": 1782088610427, - "key_format": "{guid}:{version}", - "stash_time": 1782110106892, - "id": "1675d0cd-4683-4a0a-8975-1eb4d1ba0800", - "last_modified": 1782110191959 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{3314b3a6-b5db-4cde-9d9c-d7c0b0e959be}:1.0", - "{3314b3a6-b5db-4cde-9d9c-d7c0b0e959be}:2.0", - "{0df870b8-3dc5-49a2-9d35-5d771cbc84b4}:1.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.1", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.26.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.25.8", - "{0092db9a-ec6d-473a-b394-865f46ddc282}:1.0", - "smartlog-mobility-bridge@hkirangc:5.0.0", - "smartlog-mobility-bridge@hkirangc:5.0.1", - "smartlog-mobility-bridge@hkirangc:5.0.2" - ] - }, - "schema": 1782066996213, - "key_format": "{guid}:{version}", - "stash_time": 1782088510716, - "id": "286dfcdd-69ab-476e-8b85-1f59bd37f5c5", - "last_modified": 1782088610304 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{aca43f2f-fcbf-410c-bb4b-9e6e2a38b4b2}:1.0.0", - "{cead9cd1-9e60-447b-b830-c12c6c7193b0}:1.1", - "zonechecker@wataniya.iq:5.1.1", - "wowtool@wowtool.tipss:1.0.0", - "@kkplayer:26.6.211", - "{92a209b9-03cc-43bb-b4ab-378a26edb4cf}:0.1.0", - "{f3dc156b-01e7-4bec-aa62-736bfd5a6e8e}:0.1.0", - "{5a72cd50-76dc-4cf3-8d2b-bbdd2f53e012}:2.0.0", - "{5a72cd50-76dc-4cf3-8d2b-bbdd2f53e012}:1.1", - "nortonsafesearch_ul_ven_y_2@symantec.com:3.25.0.4", - "{fabbd25f-3fe2-4385-82b4-f96292a66cc6}:1.0.0", - "video-extract@example.com:1.3", - "video-extract@example.com:1.4", - "deeptrace-browser-collector@deeptrace.local:0.5.35", - "deeptrace-browser-collector@deeptrace.local:0.5.36", - "deeptrace-browser-collector@deeptrace.local:0.5.37", - "deeptrace-browser-collector@deeptrace.local:0.5.38", - "deeptrace-browser-collector@deeptrace.local:0.5.39", - "@kkplayer:26.6.212", - "smartcat-power-tools@addon:1.0", - "smartcat-power-tools@addon:3.0", - "youtube-channel-watermark@aj1991:1.0.0", - "youtube-channel-watermark@aj1991:1.0.3", - "youtube-channel-watermark@aj1991:1.2.0", - "youtube-channel-watermark@aj1991:1.3.0", - "youtube-channel-watermark@aj1991:1.4.0", - "youtube-channel-watermark@aj1991:1.5.0", - "youtube-channel-watermark@aj1991:1.6.0", - "youtube-channel-watermark@aj1991:1.7.0", - "dcnjhgnfnmijfkmcddcmffeamphmmeed@chrome-store-foxified-327074957:1.19.1", - "@fireflybook:1.0", - "{6e5ba2c8-4c6d-4570-98f0-455dbadf7517}:0.0.1", - "{f6921497-ea4f-43a3-8615-6c9863977454}:1.0" - ] - }, - "schema": 1782045396693, - "key_format": "{guid}:{version}", - "stash_time": 1782066907480, - "id": "a155976d-c16a-4faa-8f72-a082f38abe18", - "last_modified": 1782066995938 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "larvol-visible-capture@study-platform.local:0.1.7", - "larvol-visible-capture@study-platform.local:0.1.6", - "larvol-visible-capture@study-platform.local:0.1.4", - "hangar-xplorer-community@alyxone:1.0.118", - "yt-transcript-distiller@smoochy.github.io:1.3.1.1", - "{77f4d1e5-c144-423f-9342-d40937240225}:1.6.0", - "button-popup-tool@example.com:1.1", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:3.9", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:3.8", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:4.0", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:3.1", - "{c2bc3922-458c-403a-9903-b58cacb3e804}:1.0", - "branchpanda@extension:1.0.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.25.5", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.25.3", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.25.2", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.24.9", - "mail@szyha.ovh:1.4.1", - "{daad0819-9687-4680-9c73-35fee9fae69b}:0.0.4", - "{f60f7f67-bc74-4db2-97b2-de848443764f}:3.5", - "{1258187c-bd07-4384-bde3-c656dc450cd5}:1.1.1", - "{206dd545-e054-447a-8b1f-4ffacfc529a6}:1.2", - "{206dd545-e054-447a-8b1f-4ffacfc529a6}:1.3", - "{c2a0dd4d-caa9-47d8-baae-4157aa569c89}:0.3.0", - "{83fd1d0f-c79e-4166-af36-7232e67ed1be}:0.4", - "{af58c572-ab41-4110-b2e8-7cb984183e75}:0.1.0", - "{86b400f1-e69f-4a5e-8be3-d3ea2befdcec}:1.0", - "{a1fc70e9-1856-4be7-8a5b-6f84f5598161}:1.0", - "{a1fc70e9-1856-4be7-8a5b-6f84f5598161}:1.0.1", - "{a1fc70e9-1856-4be7-8a5b-6f84f5598161}:1.0.2", - "@monospazer-mono:1.0.0" - ] - }, - "schema": 1782023793791, - "key_format": "{guid}:{version}", - "stash_time": 1782045305555, - "id": "9d35f049-eed5-43cb-a673-75e243125ce7", - "last_modified": 1782045396403 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "vault-autofill@local:1.0.0", - "vault-autofill@local:1.0.1", - "vault-autofill@local:1.0.2", - "shorewall@yandex.ru:2.0", - "read-languages@tu-dominio.com:1.3" - ] - }, - "schema": 1782002205628, - "key_format": "{guid}:{version}", - "stash_time": 1782023705850, - "id": "a291af5d-5e15-4759-8321-a1b6f72ea347", - "last_modified": 1782023793573 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "ext267@dat267.github.io:1.0.5", - "{4c3195cd-d0c3-494e-aba2-a1a702fd65d2}:7.1.6", - "ext267@dat267.github.io:1.0.6.245940", - "skip-intro@skipintro.app:1.0.0", - "orb-studio@argo.local:0.2.2", - "orb-studio@argo.local:0.2.0", - "premiumize-resume@local:1.3.1", - "orb-studio@argo.local:0.2.3", - "{070a370e-7f17-4398-9f19-5e6590994939}:1.0", - "claude-scheduler@myextension.local:1.0.0", - "yt-transcript-distiller@smoochy.github.io:1.3.1", - "twitch69@PlzDntKilMeh:1", - "twitch5-fmp4@abrahamchambilla:2025.6.16.1", - "{dd91abe2-0572-4d67-879c-3aa8e419dc80}:1.0.5.1", - "{dd91abe2-0572-4d67-879c-3aa8e419dc80}:1.0.5.2", - "fc-enhanced@forocoches:0.9.9", - "clean-link-copy@example.com:1.0.0", - "{a7f3d2e1-9b4c-4a1e-8d6f-2c5b0e3a1d7f}:3.0.0", - "{a7f3d2e1-9b4c-4a1e-8d6f-2c5b0e3a1d7f}:2.3.1", - "{a7f3d2e1-9b4c-4a1e-8d6f-2c5b0e3a1d7f}:2.3.2", - "{a7f3d2e1-9b4c-4a1e-8d6f-2c5b0e3a1d7f}:2.3.3", - "{a7f3d2e1-9b4c-4a1e-8d6f-2c5b0e3a1d7f}:2.3.4", - "{a7f3d2e1-9b4c-4a1e-8d6f-2c5b0e3a1d7f}:2.3.5", - "favory@sp4ce.pw:4.0.8.6", - "favory@sp4ce.pw:4.0.8.8", - "favory@sp4ce.pw:4.0.8.9", - "favory@sp4ce.pw:4.0.9.1", - "favory@sp4ce.pw:4.0.9.2" - ] - }, - "schema": 1781980609493, - "key_format": "{guid}:{version}", - "stash_time": 1782002107735, - "id": "40228403-5592-4ab9-b54f-6d3dcd23eb70", - "last_modified": 1782002205358 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "JSRestriction@anon:1.7.6", - "JSRestriction@anon:1.7.5", - "JSRestriction@anon:1.7.3", - "JSRestriction@anon:1.7.2", - "JSRestriction@anon:1.7.1", - "JSRestriction@anon:1.7", - "JSRestriction@anon:1.8.3", - "JSRestriction@anon:1.2", - "JSRestriction@anon:1.1", - "JSRestriction@anon:1.0", - "domain-checker@example.com:1.5", - "estrattore-sentenze@example.com:1.3", - "ES2@eius.it:1.3", - "ES1@eius.it:1.3", - "edhrec-jp-replacer@example.com:4.0", - "validony@olister:0.0.2", - "e1@eius.it:1.3", - "lens-opener@firefox-android:1.0.0", - "e2@eius.it:1.3", - "{a536654b-c07c-4668-8c25-5de4666b2bb4}:0.1", - "gutkaufen@gut-kaufen.info:1.8", - "gutkaufen@gut-kaufen.info:2.1", - "gutkaufen@gut-kaufen.info:2.3", - "gutkaufen@gut-kaufen.info:2.4", - "gutkaufen@gut-kaufen.info:2.5", - "gutkaufen@gut-kaufen.info:2.6", - "{4d889d3a-dbe7-4100-af9c-8598640974d5}:1.0", - "{d6abedb5-58d5-4b40-81a3-560b477cd5c2}:0.1", - "7speaking-bot-rework@github.com:0.0.41", - "7speaking-bot-rework@github.com:0.0.38", - "7speaking-bot-rework@github.com:0.0.37", - "7speaking-bot-rework@github.com:0.0.36", - "7speaking-bot-rework@github.com:0.0.31", - "7speaking-bot-rework@github.com:0.0.30", - "7speaking-bot-rework@github.com:0.0.29", - "7speaking-bot-rework@github.com:0.0.28", - "7speaking-bot-rework@github.com:0.0.27", - "{adf530ec-28a1-4c47-a19a-31f551aac694}:1.0", - "{e92ff565-2526-4bcc-b76c-f0994cc3cba5}:2.4.2", - "{22b0588e-edbc-4620-9f48-e2d517993e2c}:1.0", - "{550a1f96-8e30-4801-a726-bb20acc42d35}:1.0", - "{3171b5e9-e99b-4bfa-92bc-5d06c6ab8017}:1.0", - "deeptrace-browser-collector@deeptrace.local:0.5.28", - "deeptrace-browser-collector@deeptrace.local:0.5.29", - "deeptrace-browser-collector@deeptrace.local:0.5.31", - "deeptrace-browser-collector@deeptrace.local:0.5.32", - "deeptrace-browser-collector@deeptrace.local:0.5.33", - "deeptrace-browser-collector@deeptrace.local:0.5.34", - "{96b44f6d-18e6-43d9-8720-673216bb6718}:0.2", - "{96b44f6d-18e6-43d9-8720-673216bb6718}:0.4", - "{96b44f6d-18e6-43d9-8720-673216bb6718}:0.3", - "jlab_automation_1.2@laboratorioab.it:1.2", - "jlab_automation@laboratorioab.it:1.0", - "jlab_automation@laboratorioab.it:1.1", - "ext267@dat267.github.io:1.0.4", - "jlab_automation_1.3@laboratorioab.it:1.2", - "{70c8d535-6562-4b28-9ec1-b2f71ad857a4}:0.1.0" - ] - }, - "schema": 1781958993214, - "key_format": "{guid}:{version}", - "stash_time": 1781980508590, - "id": "93f9b228-ac80-43fd-aa83-e690af8ceed0", - "last_modified": 1781980609214 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "j5j54o76k3@Manual_CRXInstaller:0.1.5", - "j5j54o76k2@Manual_CRXInstaller:0.1.5", - "adoff@adoff.app:3.5.18", - "{76c7d47f-8395-4389-9da5-7296f59e01f1}:1.0", - "adoff@adoff.app:3.5.19", - "hangar-xplorer-community@alyxone:1.0.116", - "hangar-xplorer-community@alyxone:1.0.117", - "{5d864c60-1643-425c-a540-b010971b124b}:2.0.2", - "{5d864c60-1643-425c-a540-b010971b124b}:2.1.0", - "amincabaxx@gmail.com:1.5", - "amincabaxx@gmail.com:1.5.1", - "@cisco-quarantine-search-external:1.0.1", - "@cisco-quarantine-search-external:1.0.2", - "@cisco-quarantine-search-external:1.2.0", - "@cisco-quarantine-search-external:1.2.1", - "@addon-ginko-firefox:0.0.5", - "@addon-ginko-firefox:0.0.6", - "@addon-ginko-firefox:1.0.0", - "@addon-ginko-firefox:1.0.1", - "{d49b2fb3-7bd3-42ba-86f9-e4138c2c2d00}:1.0" - ] - }, - "schema": 1781937390384, - "key_format": "{guid}:{version}", - "stash_time": 1781958906084, - "id": "215fac5a-d8ab-4a8c-b791-830c14643ec2", - "last_modified": 1781958992936 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{38f73884-d10b-4f26-a7c2-4711c4a40b76}:2.1.0", - "{cf588517-2d40-4b32-9c7d-12313cc15cbd}:1.0", - "{fbff3eae-83e4-449b-8293-0715fd1dac2a}:1.0", - "intentmark@example.com:1.5", - "intentmark@example.com:1.4", - "intentmark@example.com:1.2", - "intentmark@example.com:1.1", - "{b427a6ec-5e4b-4a05-a749-3b93840b4d34}:1.0", - "7speaking-bot-rework@github.com:0.0.20", - "{99f06df0-e1d1-42a8-b813-1587b0ede9fe}:0.5.1", - "@own-bookmarklets-menu:0.0.1", - "@own-bookmarklets-menu:0.0.2", - "{898354b3-4adb-43d2-9bda-71b9a3c81836}:1.0.1", - "7speaking-bot-rework@github.com:0.0.26", - "7speaking-bot-rework@github.com:0.0.25", - "7speaking-bot-rework@github.com:0.0.24", - "7speaking-bot-rework@github.com:0.0.23", - "7speaking-bot-rework@github.com:0.0.22", - "7speaking-bot-rework@github.com:0.0.21" - ] - }, - "schema": 1781915784884, - "key_format": "{guid}:{version}", - "stash_time": 1781937305799, - "id": "b6825450-1333-43e5-9979-dbedd3ed37dd", - "last_modified": 1781937390049 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "rust-token-helper@rustplus.cn:3.0.0", - "{a1a2a3a4-a5a6-a7a8-a9a0-b1b2b3b4b5b6}:0.0.20", - "{a1a2a3a4-a5a6-a7a8-a9a0-b1b2b3b4b5b6}:0.0.19", - "{a1a2a3a4-a5a6-a7a8-a9a0-b1b2b3b4b5b6}:0.0.1", - "{a1a2a3a4-a5a6-a7a8-a9a0-b1b2b3b4b5b6}:0.0.2", - "{bf9d72d3-cb95-419e-885b-47939c9311ca}:1.0.2", - "{38f73884-d10b-4f26-a7c2-4711c4a40b76}:2.0.3", - "extension@darkrecon.tech:0.0.2", - "jjwxc-translation-extension@milkybananyan.github.io:2.0.5", - "web-extractor@radiadoresfrontera.com:1.0.0", - "ytmusic-like-bridge@local:0.2.0", - "jjwxc-translation-extension@milkybananyan.github.io:2.1.3", - "ytmusic-like-bridge@local:0.2.1" - ] - }, - "schema": 1781894185468, - "key_format": "{guid}:{version}", - "stash_time": 1781915706282, - "id": "b6bffbd0-badd-4b05-8bae-45e3f183edb0", - "last_modified": 1781915784772 - }, - { - "stash": { - "blocked": [ - "{2bbb2af5-7a6a-410a-9775-0b9f131d279a}:1.21.3", - "{2bbb2af5-7a6a-410a-9775-0b9f131d279a}:1.21.1", - "{e05544b6-8f3f-48b3-b966-b96dee87c8bc}:1.1.0", - "{2bbb2af5-7a6a-410a-9775-0b9f131d279a}:1.21.6", - "{e05544b6-8f3f-48b3-b966-b96dee87c8bc}:1.21.6" - ], - "unblocked": [], - "softblocked": [ - "trading-scorecard@local:1.2.0", - "trading-scorecard@local:2.0.0", - "trading-scorecard@local:2.1.0", - "{c4b89f91-0f3e-47c0-a9df-2d63b0d728e7}:2.6.3", - "group-tabs-sidebar@Dimitrios.gr:14.6", - "group-tabs-sidebar@Dimitrios.gr:14.5", - "group-tabs-sidebar@Dimitrios.gr:13.7", - "group-tabs-sidebar@Dimitrios.gr:12.7.1", - "group-tabs-sidebar@Dimitrios.gr:8", - "group-tabs-sidebar@Dimitrios.gr:10.0", - "group-tabs-sidebar@Dimitrios.gr:11.2", - "cron-url-opener@example.com:3.2", - "cron-url-opener@example.com:3.3", - "cron-url-opener@example.com:3.4", - "cron-url-opener@example.com:3.5", - "cron-url-opener@example.com:3.6", - "cron-url-opener@example.com:3.7", - "cron-url-opener@example.com:3.7.2", - "cron-url-opener@example.com:3.8.0", - "md-formatter@local:1.1.0", - "affiliates-promosapp@siqueiratecnologia.com.br:2026.6.7", - "affiliates-promosapp@siqueiratecnologia.com.br:2026.6.19", - "leading-whitespace-cleaner@example.local:1.0.0", - "riviorivio@example.com:1.26", - "riviorivio@example.com:1.1", - "riviorivio@example.com:1.2", - "riviorivio@example.com:1.25", - "riviorivio@example.com:1.4", - "riviorivio@example.com:1.5", - "riviorivio@example.com:1.24", - "{044307fb-7665-4416-9fe5-ceaf76e4e936}:1.0", - "demonicscans-auto-retry@example.com:1.0.1", - "{5c70c15e-12e3-4bfb-ab3b-6bbf33e485ef}:1.0", - "{4f15e9cc-e5a5-4ad0-9a8d-b5c8d4fad6c3}:1.0.1", - "{4f15e9cc-e5a5-4ad0-9a8d-b5c8d4fad6c3}:1.0.2", - "css-sentry@dougg0k:1.0.92", - "css-sentry@dougg0k:1.0.95", - "css-sentry@dougg0k:1.0.105", - "element-blocker@local.tool:1.0.0" - ] - }, - "schema": 1781872598987, - "key_format": "{guid}:{version}", - "stash_time": 1781894106122, - "id": "970dede9-57e8-40b0-a088-165315756df6", - "last_modified": 1781894185270 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "webunchain@dominicaka.addon:1.0.0", - "sprinternet@softnet.pl:2.0.5", - "{c93a9820-2585-45e6-b870-477ee481a794}:1.0", - "timer-extension-public@mio.addon:1.2.1", - "timer-extension-public@mio.addon:1.1", - "{617b3684-c98c-44da-a855-ec60590bd1b9}:1.1", - "mynotes@local-dev.local:1.0", - "oakfpjifgmfpainopanfgfckhkcfgacb@chrome-store-foxified-588304845:4.0.21", - "gaodngaiillepoddeloolejnhjglabkn@chrome-store-foxified-588304845:4.0", - "nsfw-pin-lock@local.extension:1.0.0", - "{49054afe-c393-4541-962d-1a628bbac1c8}:1.0", - "{2a30f3ec-79db-42b9-ba64-be1924c000fa}:2.6", - "testamber-mednec@axora.health:1.0.0", - "{2bbb2af5-7a6a-410a-9775-0b9f131d279a}:1.21.3", - "{2bbb2af5-7a6a-410a-9775-0b9f131d279a}:1.21.1", - "{e05544b6-8f3f-48b3-b966-b96dee87c8bc}:1.1.0", - "pioclpoplcdbaefihamjohnefbikjilc@chrome-store-foxified-1902409439:6.13", - "khhablkjeghmeinlfgecddpgcopnljpm@chrome-store-foxified-988636933:1.0", - "{d3e2f0a1-1234-5678-9abc-def012345675}:2.0", - "{d3e2f0a1-1234-5678-9abc-def012345675}:2.1", - "{d3e2f0a1-1234-5678-9abc-def012345675}:2.2", - "{d3e2f0a1-1234-5678-9abc-def012345675}:2.3", - "{d3e2f0a1-1234-5678-9abc-def012345675}:2.6", - "{d3e2f0a1-1234-5678-9abc-def012745671}:2.4", - "{d3e2f0a1-1234-5678-9abc-def012745671}:2.5", - "{d3e2f0a1-1234-5678-9abc-def012745671}:2.8", - "{d3e2f0a1-1234-5678-9abc-def012345676}:2.6", - "{d3e2f0a1-1234-5678-9abc-def012345676}:2.7", - "{d3e2f0a1-1234-5678-9abc-def012345676}:2.8", - "{d3e2f0a1-1234-5678-9abc-def012345676}:2.9", - "{d3e2f0a1-1234-5678-9abc-def012345676}:2.10", - "{d3e2f0a1-1234-5678-9abc-def012345676}:2.12", - "pop-up-reminder@tianhegao.com:0.0.1", - "pop-up-reminder@tianhegao.com:0.0.2", - "pop-up-reminder@tianhegao.com:0.0.3", - "pop-up-reminder@tianhegao.com:0.0.4", - "org-protocol@yidajiabei.xyz:1.0.0", - "org-protocol@yidajiabei.xyz:1.0.1", - "org-protocol@yidajiabei.xyz:1.0.2", - "gemini-context-manager@kahsa.local:0.5.2", - "gemini-context-manager@kahsa.local:0.7.0", - "gemini-context-manager@kahsa.local:0.7.1" - ] - }, - "schema": 1781850997275, - "key_format": "{guid}:{version}", - "stash_time": 1781872507263, - "id": "eab566ec-455f-42a3-8d88-a97ab4a6f415", - "last_modified": 1781872598767 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "featherdate@dev.tkers:0.1", - "{c45033a8-11f5-43e6-adcd-3dd173887fda}:1.1", - "{31c10719-ed67-4717-9f60-adbf901acf06}:1.1", - "ATBC@EasonWong:4.0.3", - "itsimonsec@gmail.com:1.0.0", - "itsimonsec@gmail.com:1.1", - "{380fdbc5-2de6-4fb1-a4a0-f2e6aaad47a0}:1.0", - "sweet-bliss@nekowork:2.3.1" - ] - }, - "schema": 1781829396007, - "key_format": "{guid}:{version}", - "stash_time": 1781850906841, - "id": "271fa5af-072c-4bf3-83c8-aeb42f87ff5b", - "last_modified": 1781850997092 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "macro-recorder@local:1.7.5", - "macro-recorder@local:1.7.4", - "macro-recorder@local:1.7.2", - "macro-recorder@local:1.7.1", - "macro-recorder@local:1.4.7", - "macro-recorder@local:1.5.0", - "rtl-helper@peyvandnegar.ir:4.4", - "{a377876f-b2e1-4afd-9656-ba621873a8ca}:1.0", - "{ab3a1179-78cb-4a46-a35d-8dd5f370cf26}:2.1.4", - "{ab3a1179-78cb-4a46-a35d-8dd5f370cf26}:2.1.5", - "{ab3a1179-78cb-4a46-a35d-8dd5f370cf26}:2.2.6", - "{ab3a1179-78cb-4a46-a35d-8dd5f370cf26}:2.2.7", - "{ab3a1179-78cb-4a46-a35d-8dd5f370cf26}:2.2.8", - "{ab3a1179-78cb-4a46-a35d-8dd5f370cf26}:2.2.9", - "tab-counter@aragonda:1.0", - "ATBC@EasonWong:4.0.1", - "test-ext2@signer.local:1.0", - "test-ext@signer.local:1.0", - "{b1f3c8a9-4a2e-4b7c-4e1f-8a3d6c5b4e2f}:1.0" - ] - }, - "schema": 1781807807803, - "key_format": "{guid}:{version}", - "stash_time": 1781829306611, - "id": "6576073d-93ed-4026-99c6-987183e5b71e", - "last_modified": 1781829395812 - }, - { - "stash": { - "blocked": [ - "{b1f3c8a9-4a2e-4b7c-9e1f-8a3d6c5b4e2f}:1.0" - ], - "unblocked": [], - "softblocked": [ - "deeptrace-browser-collector@deeptrace.local:0.5.30", - "unhook-locked@local.invalid:1.6.9.1", - "allegrosmartmonitor@adam.desktop:0.1", - "{6de26d45-ff2c-4622-92b9-d19d0db1d115}:1.0", - "{6de26d45-ff2c-4622-92b9-d19d0db1d115}:2.0", - "{6de26d45-ff2c-4622-92b9-d19d0db1d115}:3.0", - "{6de26d45-ff2c-4622-92b9-d19d0db1d115}:4.0", - "{6de26d45-ff2c-4622-92b9-d19d0db1d115}:5.0", - "{b650e384-9f24-4183-ba7f-2eb22dbb565a}:1.0", - "{b650e384-9f24-4183-ba7f-2eb22dbb565a}:2.0", - "{b650e384-9f24-4183-ba7f-2eb22dbb565a}:3.0", - "{b650e384-9f24-4183-ba7f-2eb22dbb565a}:4.0", - "{b650e384-9f24-4183-ba7f-2eb22dbb565a}:5.0", - "{b650e384-9f24-4183-ba7f-2eb22dbb565a}:6.0", - "{b650e384-9f24-4183-ba7f-2eb22dbb565a}:7.0", - "marcadores3d@mi-extension.com:1.1", - "marcadores3d@mi-extension.com:1.2", - "marcadores3d@mi-extension.com:1.3", - "marcadores3d@mi-extension.com:1.4", - "marcadores3d@mi-extension.com:1.5", - "marcadores3d@mi-extension.com:1.6", - "marcadores3d@mi-extension.com:1.8", - "marcadores3d@mi-extension.com:1.9", - "marcadores3d@mi-extension.com:2.0", - "marcadores3d@mi-extension.com:2.1", - "marcadores3d@mi-extension.com:2.2", - "marcadores3d@mi-extension.com:2.4", - "{53dc41e4-2466-4dcd-af07-c7deb35e1df8}:1.0", - "{6a8fd5c3-fda8-46c8-96be-633b30958a2e}:1.0", - "vantage@skyfielddigital.com:3.0.0", - "vantage@skyfielddigital.com:3.0.1", - "vantage@skyfielddigital.com:3.0.2", - "vantage@skyfielddigital.com:3.0.3", - "vantage@skyfielddigital.com:3.0.4", - "vantage@skyfielddigital.com:3.0.6", - "vantage@skyfielddigital.com:3.0.8", - "{a47b8f3e-2d51-4b8c-9a3e-7f1d4e9c5a2b}:3.4.0", - "{584c573f-a0ea-4c3f-813e-a414e00a21f3}:2.6.618", - "vpn@protons.ch:1.3.0", - "jggkdaaopbochflbhaanbcdigehmgofk@chrome-store-foxified-1689782570:0.1.7.2", - "aimamonitorpro@local:4.0.0", - "iris-connector@homelab:1.0", - "{e4691371-ccd1-4ae0-89be-92017f74eef1}:2.0", - "{78d31ef7-38a7-4902-99dc-2a1949583efc}:2.0", - "{542dd81e-bc56-4c74-b54a-b7e359a0c1aa}:2.0", - "sleep-time-43730c856b98@openai.example:1.3.4" - ] - }, - "schema": 1781786191453, - "key_format": "{guid}:{version}", - "stash_time": 1781807710141, - "id": "d87dcc70-5ed0-41fc-a591-d9c58299009c", - "last_modified": 1781807807577 - }, - { - "stash": { - "blocked": [ - "kitad@ykitadd.net:1.4" - ], - "unblocked": [], - "softblocked": [ - "yt-keyword-filter-private@yourdomain.local:1.0", - "yt-keyword-filter-private@yourdomain.local:2.0", - "hammer-local@localhost:3.0.8", - "macro-recorder@local:1.4.2", - "macro-recorder@local:1.4.3", - "{b05b200c-5544-436a-a37d-babf1654ffe3}:1.0", - "proton-mail-checker@bolausson:1.8.10", - "proton-mail-checker@bolausson:1.8.6", - "proton-mail-checker@bolausson:1.8.4", - "proton-mail-checker@bolausson:1.8.5", - "proton-mail-checker@bolausson:1.8.7", - "proton-mail-checker@bolausson:1.8.8", - "proton-mail-checker@bolausson:1.6.9", - "proton-mail-checker@bolausson:1.6.2", - "proton-mail-checker@bolausson:1.6.1", - "proton-mail-checker@bolausson:1.6.0", - "proton-mail-checker@bolausson:1.5.12", - "proton-mail-checker@bolausson:1.5.11", - "proton-mail-checker@bolausson:1.5.10", - "proton-mail-checker@bolausson:1.5.9", - "macro-recorder@local:1.4.4", - "proton-mail-checker@bolausson:1.8.9", - "proton-mail-checker@bolausson:1.8.11", - "image-converter@verimedia.xyz:1.1.0", - "macro-recorder@local:1.6.9", - "macro-recorder@local:1.6.8", - "macro-recorder@local:1.6.5", - "macro-recorder@local:1.6.1", - "macro-recorder@local:1.4.6", - "gzist-jw-plus@orange:1.4.7", - "gzist-jw-plus@orange:1.4.6", - "yahoo-coupon-csv-reflector@example.com:1.0.1", - "securedrelay@extension:1.1.2", - "macro-recorder@local:1.6.15", - "gzist-jw-plus@orange:1.4.9", - "reload-the-tab-when-error-addon-20260523@example.com:2026.6.12.1", - "reload-the-tab-when-error-addon-20260523@example.com:2026.6.11.2", - "reload-the-tab-when-error-addon-20260523@example.com:2026.6.11.1", - "reload-the-tab-when-error-addon-20260523@example.com:2026.6.10.1", - "reload-the-tab-when-error-addon-20260523@example.com:2026.5.30.1", - "reload-the-tab-when-error-addon-20260523@example.com:2026.6.7.1", - "reload-the-tab-when-error-addon-20260523@example.com:2026.6.9.1", - "sleep-time@local.example:1.0.1", - "sleep-time@openai.local:1.3.1", - "vaziral@vaziral.ir:2.1", - "klmdiefkoooonahndmepicmgfdffihmc@chrome-store-foxified--1272319310:0.20.4", - "iblenkmcolcdonmlfknbpbgjebabcoae@chrome-store-foxified--1272319310:4.1.17", - "mihcahmgecmbnbcchbopgniflfhgnkff@chrome-store-foxified-2029596494:4.4.0", - "hmjkmjkepdijhoojdojkdfohbdgmmhki@chrome-store-foxified-2029596494:3.1.16384.1084", - "boadgeojelhgndaghljhdicfkmllpafd@chrome-store-foxified-2029596494:15.1120.0.4", - "jngbfbbdhpmegcmigefjoejeomhllaid@chrome-store-foxified--1272319310:0.3.0.58", - "djffgnjhndjebbbgmkibfgjfegffmcpm@chrome-store-foxified-2029596494:3.0.7" - ] - }, - "schema": 1781764590325, - "key_format": "{guid}:{version}", - "stash_time": 1781786108403, - "id": "322cab02-13be-4894-aded-61218443290f", - "last_modified": 1781786191343 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{0dc299d7-8f55-4584-b466-7f9c319c6561}:0.1", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.0", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.1", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.2", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.3", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.4", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.5", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.6", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.7", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.8", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.9", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.10", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.11", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.12", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:1.13", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:2.0", - "{A1709D0A-E378-47FB-90F3-92B7F5E04D3F}:2.1", - "ytmusicorganizer@leviraniere:2.1.0", - "{98ad684d-7396-43d2-abaa-91f7789fbacb}:0.1", - "japanese-image-translator@local:1.0.0", - "Auto_Refresh0010@example.com:1.2", - "submit@cpbuddy.dev:1.0.5", - "chzzk-quality-dvbkc@ext:1.4.8.3", - "dylan.zhang@domain.com:1.7.2", - "{28b4ed3a-25af-4b90-a48a-566db5c3ca91}:1.0" - ] - }, - "schema": 1781743005663, - "key_format": "{guid}:{version}", - "stash_time": 1781764505221, - "id": "8cf1fea6-5e81-4899-9e10-b9fb31523f6b", - "last_modified": 1781764590130 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "medical-survey-handoff-lite@example.local:0.4.1", - "markandfind@marpol.addon:1.0.0", - "shorts-blocker@velvet-addons.local:1.0", - "shorts-blocker@velvet-addons.local:1.2", - "nudge-security-extension-internal@nudge.security:0.11.7", - "gemiflow@geminichatorganizer.com:1.0.0", - "jjwxc-translation-extension@milkybananyan.github.io:2.0.1", - "nestor-linker@wisepie.local:1.0" - ] - }, - "schema": 1781721386602, - "key_format": "{guid}:{version}", - "stash_time": 1781742908428, - "id": "4aedcb23-b911-44a1-8832-352b51593c72", - "last_modified": 1781743005443 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "formrecovery@itzonecv.online:1.3", - "oswsp1@tanoshinde.com:2.0.9", - "GolfChec@bigspecgames.com:6.0", - "xelya-deploy-monitor@xelya.io:1.7.3", - "xelya-deploy-monitor@xelya.io:2.2.8", - "terra-translate@toriitranslate.com:1.3.0", - "terra-translate@toriitranslate.com:1.4.2", - "terra-translate@toriitranslate.com:1.4.3", - "{b5a4a7d8-4fbd-4cbd-a7de-91673c831310}:1.0", - "personal-space@wencongchio:1.0.0", - "personal-space@wencongchio:1.0.1", - "opti.switcher@node.energy:1.0.2", - "opti.switcher@node.energy:1.0.3", - "opti.switcher@node.energy:1.0.4", - "{87abf9f7-8b13-4c82-b0b2-56ccadbbf064}:1.3", - "{87abf9f7-8b13-4c82-b0b2-56ccadbbf064}:1.6", - "linkding-local@remy.mozmail.com:1.16.0", - "monarch-retail-tracker-ff@hstack.dev:1.0.21", - "mundial2026@local:1.2.3", - "mundial2026@local:1.3", - "mundial2026@local:1.2", - "mundial2026@local:1.1.1", - "mundial2026@local:1.1", - "mundial2026@local:1.0", - "materialyou-customcharcoal@jetpack:1.0", - "ublock@example.dev:1.0.1", - "forpersonalkoray@gmail.com:1.0", - "ATBC@EasonWong:4.0.2", - "addon@upskirt.example.com:1.8.5.5", - "addon@upskirt.example.com:1.8.5.4", - "addon@upskirt.example.com:1.8.5.3", - "addon@upskirt.example.com:1.8.5.2", - "addon@upskirt.example.com:1.8.5.1", - "addon@upskirt.example.com:1.8.5", - "addon@upskirt.example.com:1.8.4.2", - "addon@upskirt.example.com:1.8.4.1", - "addon@upskirt.example.com:1.8.3.1", - "addon@upskirt.example.com:1.8.4", - "addon@upskirt.example.com:1.8.3", - "addon@upskirt.example.com:1.8.2.1" - ] - }, - "schema": 1781699792144, - "key_format": "{guid}:{version}", - "stash_time": 1781721305668, - "id": "21869472-6de4-4dd0-a816-1eb085a02996", - "last_modified": 1781721386501 - }, - { - "stash": { - "blocked": [ - "{08032555-8c28-4ae8-8c84-e8249cfad5a8}:1.0.1", - "{08032555-8c28-4ae8-8c84-e8249cfad5a8}:1.0.0", - "{194abb10-67b8-43fa-b8a5-4fd86520fe6a}:1.4.0", - "{08032555-8c28-4ae8-8c84-e8249cfad5a8}:1.0.2", - "{194abb10-67b8-43fa-b8a5-4fd86520fe6a}:1.4.2" - ], - "unblocked": [], - "softblocked": [ - "wuxiaworld-ad-remover@basile:1.0.0", - "wuxiaworld-ad-remover@basile:1.0.1", - "@addon-ginko-firefox:0.0.1", - "@addon-ginko-firefox:0.0.3", - "@addon-ginko-firefox:0.0.4", - "manga-saver@vmsa.snikit.party:1.4.0", - "manga-saver@vmsa.snikit.party:1.5.0", - "deeptrace-browser-collector@deeptrace.local:0.5.24", - "deeptrace-browser-collector@deeptrace.local:0.5.23", - "amazon-tracker@fabian.local:0.4.1", - "lyricvibe@example.com:0.3.0", - "screenshot-extension@badr.dev:1.0.0", - "screenshot-extension@badr.dev:1.0.1", - "auth-exporter@helium.sh:1.0.2", - "twofa-phone-mobile-autofill@local.ticketing:0.1.0", - "lyricvibe@example.com:0.12.0", - "metano-dlp@metano.ai:0.2.0", - "group-tabs-sidebar@Dimitrios.gr:12.6.3", - "group-tabs-sidebar@Dimitrios.gr:12.3", - "group-tabs-sidebar@Dimitrios.gr:12.0", - "group-tabs-sidebar@Dimitrios.gr:12.4", - "group-tabs-sidebar@Dimitrios.gr:12.7", - "group-tabs-sidebar@Dimitrios.gr:11.0", - "group-tabs-sidebar@Dimitrios.gr:13.0.0", - "group-tabs-sidebar@Dimitrios.gr:13.1", - "group-tabs-sidebar@Dimitrios.gr:13.2", - "og-e@ogame-extensions:1.18.0", - "group-tabs-sidebar@Dimitrios.gr:13.4", - "group-tabs-sidebar@Dimitrios.gr:13.5", - "oge-expedition-helper@ogame-extensions:4.9.3", - "oge-expedition-helper@ogame-extensions:4.9.1", - "oge-expedition-helper@ogame-extensions:4.3.0", - "oge-expedition-helper@ogame-extensions:4.9.0", - "oge-expedition-helper@ogame-extensions:4.8.4", - "oge-expedition-helper@ogame-extensions:4.8.3", - "oge-expedition-helper@ogame-extensions:4.8.2", - "oge-expedition-helper@ogame-extensions:4.8.1", - "oge-expedition-helper@ogame-extensions:4.8.0", - "{c1c91939-66d8-4779-a97f-be19b7490064}:1.0", - "{ed34e57b-f1c8-48d2-af65-ddf88ca2fa02}:1.0", - "oge-expedition-helper@ogame-extensions:4.7.13", - "oge-expedition-helper@ogame-extensions:4.7.4", - "oge-expedition-helper@ogame-extensions:4.4.2", - "oge-expedition-helper@ogame-extensions:4.3.1", - "oge-expedition-helper@ogame-extensions:4.7.6", - "oge-expedition-helper@ogame-extensions:4.4.1", - "oge-expedition-helper@ogame-extensions:4.1.0", - "oge-expedition-helper@ogame-extensions:2.3.0", - "oge-expedition-helper@ogame-extensions:4.7.7", - "oge-expedition-helper@ogame-extensions:4.4.4", - "oge-expedition-helper@ogame-extensions:3.2.0", - "oge-expedition-helper@ogame-extensions:4.2.0", - "oge-expedition-helper@ogame-extensions:4.7.1", - "oge-expedition-helper@ogame-extensions:3.1.0", - "oge-expedition-helper@ogame-extensions:4.7.11", - "oge-expedition-helper@ogame-extensions:4.7.8", - "oge-expedition-helper@ogame-extensions:4.4.5", - "oge-expedition-helper@ogame-extensions:4.0.0", - "oge-expedition-helper@ogame-extensions:3.0.0", - "oge-expedition-helper@ogame-extensions:4.9.6", - "deeptrace-browser-collector@deeptrace.local:0.5.26", - "formrecovery@itzonecv.online:1.5", - "formrecovery@itzonecv.online:1.4" - ] - }, - "schema": 1781678215718, - "key_format": "{guid}:{version}", - "stash_time": 1781699708413, - "id": "c83c207d-03ff-4d9d-9176-94435942572b", - "last_modified": 1781699791982 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "soundcloud-eq@local:4.3", - "vault@juanjo.local:1.10.3", - "{163a0e40-d698-4e05-ab13-877961e4a7a1}:1.0", - "{163a0e40-d698-4e05-ab13-877961e4a7a1}:1.1", - "oi0y6t7t2@mozmail.com:2.6.2", - "declutter-tabs@example.com:1.0.0", - "declutter-tabs@example.com:1.0.1" - ] - }, - "schema": 1781656586957, - "key_format": "{guid}:{version}", - "stash_time": 1781678124837, - "id": "e024d900-ca91-4de4-92f2-337803dff02c", - "last_modified": 1781678215359 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{b0af005e-d0f6-4095-b596-c44b1212ffbf}:1.0", - "blingtoolsv2@liviosantos.com.br:0.0.1", - "blingtoolsv2@liviosantos.com.br:0.0.2", - "suporteTeste1@gruposgcor.com.br:1.1.10", - "x-auto-liker-sidebar-v2@alibulutt.dev:2.34.3", - "x-auto-liker-sidebar-v2@alibulutt.dev:2.34.4", - "x-auto-liker-sidebar-v2@alibulutt.dev:2.34.5", - "x-auto-liker-sidebar-v2@alibulutt.dev:2.34.6", - "corz@bluemoon.local:2.0", - "corz@bluemoon.local:1.23", - "corz@bluemoon.local:1.22", - "{099b6a09-8ac4-4ab3-8663-6fab97babaab}:1", - "{615dd926-48fe-4298-bee4-1d652f3b8b65}:0.1.1", - "lt-inline@example.com:0.1.0", - "manga-saver@vmsa.snikit.party:1.1.0", - "manga-saver@vmsa.snikit.party:1.2.0", - "manga-saver@vmsa.snikit.party:1.3.0", - "snippet-share@example.com:1.0.0", - "tz-spoofer@privacyfield.com:1.0.1", - "tz-spoofer@privacyfield.com:1.0.2", - "canvasrefined@diditupe.dev:5.12.6", - "localproctor-knocker@lp-knocker:1.1.0", - "Android@bravenhancer.com:26.0.0", - "Android@bravenhancer.com:26.0.3", - "enhancer@goldenfox.com:26.0.0" - ] - }, - "schema": 1781635014449, - "key_format": "{guid}:{version}", - "stash_time": 1781656505885, - "id": "eb6d4907-df5e-4435-b2cf-56b9020bcaa1", - "last_modified": 1781656586611 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "chatgpt-local-bridge@emonfejm.local:4.1.0", - "corz@bluemoon.local:1.21", - "{280a4748-822f-40fb-aa50-635a444bb854}:2.2.3", - "{f0210de7-0196-4607-9e99-89b4ffb2aa9e}:2.1.0", - "tracker-blocker@baryofarzian:1.0.0", - "disable-cache-for-this-tab@example.com:2026.6.7.1", - "doc-mode-private@nikob.addon:1.0.0", - "doc-mode-private@nikob.addon:1.0.4", - "doc-mode-private@nikob.addon:1.0.3", - "doc-mode-private@nikob.addon:1.0.2", - "adam.agi.extension@agi.network:1.0.0", - "adam.agi.extension@agi.network:1.9.54", - "adam.agi.extension@agi.network:1.9.53", - "adam.agi.extension@agi.network:1.9.52", - "adam.agi.extension@agi.network:1.9.51", - "adam.agi.extension@agi.network:1.9.50", - "adam.agi.extension@agi.network:1.9.45", - "adam.agi.extension@agi.network:1.8.45", - "adam.agi.extension@agi.network:1.6.0", - "adam.agi.extension@agi.network:1.5.0", - "adam.agi.extension@agi.network:1.4.0", - "adam.agi.extension@agi.network:1.2.0", - "adam.agi.extension@agi.network:1.3.0", - "adam.agi.extension@agi.network:1.1.0", - "deeptrace-browser-collector@deeptrace.local:0.5.13", - "deeptrace-browser-collector@deeptrace.local:0.5.14", - "rublock-petr@local:2.0.1", - "rublock-petr@local:1.0.3", - "{a14235f7-7676-4771-bd08-4efd3a81aad2}:1.0", - "{a14235f7-7676-4771-bd08-4efd3a81aad2}:2.0", - "{93d0812c-b06b-42d1-b64f-15eb8356bc88}:0.1", - "{08032555-8c28-4ae8-8c84-e8249cfad5a8}:1.0.1", - "{08032555-8c28-4ae8-8c84-e8249cfad5a8}:1.0.0", - "{194abb10-67b8-43fa-b8a5-4fd86520fe6a}:1.4.0", - "deeptrace-browser-collector@deeptrace.local:0.5.15", - "deeptrace-browser-collector@deeptrace.local:0.5.17", - "deeptrace-browser-collector@deeptrace.local:0.5.20", - "deeptrace-browser-collector@deeptrace.local:0.5.19", - "deeptrace-browser-collector@deeptrace.local:0.5.22", - "autofill@autofillcopilot.com:1.0.3", - "autofill@autofillcopilot.com:1.0.4", - "insights@polyalerthub.com:0.1.0", - "insights@polyalerthub.com:0.1.2", - "insights@polyalerthub.com:0.1.5", - "insights@polyalerthub.com:0.1.6" - ] - }, - "schema": 1781613397489, - "key_format": "{guid}:{version}", - "stash_time": 1781634909576, - "id": "26772569-b44f-429b-bb1f-c614352cd641", - "last_modified": 1781635014263 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "video-injector@local:2.0", - "video-injector@local:3.0", - "protonvpn-personal-nirmal@proton.ch:1.3.4", - "holotranslate-bridge@holosubs.com:0.1.0", - "{e9123d08-4c9f-4ea1-9309-9030c1ada307}:1.0", - "Answers@my:1.1.1", - "Answers@my:1.1.2", - "form-solver-v6-final@narayanchetri.dev:1.0", - "developer-theme@narayanchetri.com:1.0", - "developer-theme@narayanchetri.com:1.1", - "{28ca131e-ab92-4713-ab9c-efffcfd19825}:1.0.1", - "{28ca131e-ab92-4713-ab9c-efffcfd19825}:1.0.2", - "{28ca131e-ab92-4713-ab9c-efffcfd19825}:1.0.3", - "chatgpt-single-chat-backup@cgpflix248.local:0.9.0", - "chatgpt-single-chat-backup@cgpflix248.local:0.9.1", - "chatgpt-single-chat-backup@cgpflix248.local:0.9.3", - "chatgpt-export-mdhtml-personal-e36fd2f7be@local.invalid:1.2.0", - "chatgpt-export-mdhtml-personal-e36fd2f7be@local.invalid:1.0.5", - "chatgpt-export-mdhtml-personal-e36fd2f7be@local.invalid:1.1.4", - "chatgpt-export-mdhtml-personal-e36fd2f7be@local.invalid:1.1.3", - "chatgpt-export-mdhtml-personal-e36fd2f7be@local.invalid:1.1.2", - "chatgpt-export-mdhtml-personal-e36fd2f7be@local.invalid:1.1.1", - "chatgpt-export-mdhtml-personal-e36fd2f7be@local.invalid:1.1.0", - "chatgpt-export-mdhtml-personal-e36fd2f7be@local.invalid:1.0.6", - "gpt-downloader@example.com:1.2.9", - "gpt-downloader@example.com:1.2.1", - "gpt-downloader@example.com:1.2.0", - "gpt-downloader@example.com:1.1.0", - "gpt-downloader@example.com:1.0.0", - "gpt-selector-auto-copy@example.com:1.0.0", - "gemini-exporter@example.com:1.0.3", - "local-android-demo@example.com:1.0.0", - "deeptrace-browser-collector@deeptrace.local:0.5.7", - "deeptrace-browser-collector@deeptrace.local:0.5.8", - "deeptrace-browser-collector@deeptrace.local:0.5.10", - "deeptrace-browser-collector@deeptrace.local:0.5.11", - "deeptrace-browser-collector@deeptrace.local:0.5.12", - "openai-forge-firefox@ivangabriele.com:0.1.3", - "openai-forge-firefox@ivangabriele.com:0.1.5", - "openai-forge-firefox@ivangabriele.com:0.2.0", - "openai-forge-firefox@ivangabriele.com:0.3.0", - "Stop-it.be@hotmail.com:1.8.66", - "Stop-it.be@hotmail.com:1.8.67", - "Stop-it.be@hotmail.com:1.8.68", - "Stop-it.be@hotmail.com:1.8.69", - "Stop-it.be@hotmail.com:1.8.70", - "Stop-it.be@hotmail.com:1.8.71", - "Stop-it.be@hotmail.com:1.8.72", - "Stop-it.be@hotmail.com:1.8.73", - "Stop-it.be@hotmail.com:1.8.74", - "Stop-it.be@hotmail.com:1.8.75", - "Stop-it.be@hotmail.com:1.8.76", - "Stop-it.be@hotmail.com:1.8.77", - "Stop-it.be@hotmail.com:1.8.78", - "Stop-it.be@hotmail.com:1.8.79", - "Stop-it.be@hotmail.com:1.8.80", - "Stop-it.be@hotmail.com:1.8.81", - "Stop-it.be@hotmail.com:1.8.82", - "Stop-it.be@hotmail.com:1.8.83", - "Stop-it.be@hotmail.com:1.8.84", - "Stop-it.be@hotmail.com:1.8.85", - "Stop-it.be@hotmail.com:1.8.86", - "Stop-it.be@hotmail.com:1.8.87", - "Stop-it.be@hotmail.com:1.8.88", - "Stop-it.be@hotmail.com:1.8.89", - "Stop-it.be@hotmail.com:1.8.90", - "Stop-it.be@hotmail.com:1.8.91", - "Stop-it.be@hotmail.com:1.8.92", - "Stop-it.be@hotmail.com:1.8.93", - "Stop-it.be@hotmail.com:1.8.94", - "Stop-it.be@hotmail.com:1.8.95", - "Stop-it.be@hotmail.com:1.8.96", - "Stop-it.be@hotmail.com:1.8.97", - "Stop-it.be@hotmail.com:1.8.98", - "Stop-it.be@hotmail.com:1.8.99", - "Stop-it.be@hotmail.com:1.9.1", - "Stop-it.be@hotmail.com:1.9.2", - "Stop-it.be@hotmail.com:1.9.3", - "Stop-it.be@hotmail.com:1.9.4", - "Stop-it.be@hotmail.com:1.9.5", - "Stop-it.be@hotmail.com:1.9.6", - "Stop-it.be@hotmail.com:1.9.7", - "Stop-it.be@hotmail.com:1.9.8", - "Stop-it.be@hotmail.com:1.9.9", - "Stop-it.be@hotmail.com:1.9.10", - "Stop-it.be@hotmail.com:1.9.11", - "Stop-it.be@hotmail.com:1.9.12", - "Stop-it.be@hotmail.com:1.9.13", - "Stop-it.be@hotmail.com:1.9.14", - "Stop-it.be@hotmail.com:1.9.15", - "Stop-it.be@hotmail.com:1.9.16", - "Stop-it.be@hotmail.com:1.9.17", - "Stop-it.be@hotmail.com:1.9.18", - "Stop-it.be@hotmail.com:1.9.19", - "Stop-it.be@hotmail.com:1.9.20", - "Stop-it.be@hotmail.com:1.9.21", - "Stop-it.be@hotmail.com:1.9.22", - "Stop-it.be@hotmail.com:1.9.23", - "Stop-it.be@hotmail.com:1.9.24", - "Stop-it.be@hotmail.com:1.9.25", - "Stop-it.be@hotmail.com:1.9.26", - "Stop-it.be@hotmail.com:1.9.27", - "Stop-it.be@hotmail.com:1.9.28", - "Stop-it.be@hotmail.com:1.9.29", - "Stop-it.be@hotmail.com:1.9.30", - "Stop-it.be@hotmail.com:1.9.31", - "Stop-it.be@hotmail.com:1.9.32", - "Stop-it.be@hotmail.com:1.9.33", - "Stop-it.be@hotmail.com:1.9.34", - "Stop-it.be@hotmail.com:1.9.35", - "Stop-it.be@hotmail.com:1.9.36", - "Stop-it.be@hotmail.com:1.9.37", - "Stop-it.be@hotmail.com:1.9.38", - "Stop-it.be@hotmail.com:1.9.39", - "Stop-it.be@hotmail.com:1.9.40", - "Stop-it.be@hotmail.com:1.9.41", - "Stop-it.be@hotmail.com:1.9.42", - "Stop-it.be@hotmail.com:1.9.43", - "Stop-it.be@hotmail.com:1.9.44", - "Stop-it.be@hotmail.com:1.9.45", - "Stop-it.be@hotmail.com:1.9.46", - "Stop-it.be@hotmail.com:1.9.47", - "Stop-it.be@hotmail.com:1.9.48", - "Stop-it.be@hotmail.com:1.9.49", - "Stop-it.be@hotmail.com:1.9.50", - "Stop-it.be@hotmail.com:1.9.51", - "Stop-it.be@hotmail.com:1.9.52", - "Stop-it.be@hotmail.com:1.9.53", - "Stop-it.be@hotmail.com:1.9.54", - "Stop-it.be@hotmail.com:1.9.55", - "Stop-it.be@hotmail.com:1.9.56", - "Stop-it.be@hotmail.com:1.9.57", - "Stop-it.be@hotmail.com:1.9.58", - "Stop-it.be@hotmail.com:1.9.59", - "Stop-it.be@hotmail.com:1.9.61", - "Stop-it.be@hotmail.com:1.9.62", - "Stop-it.be@hotmail.com:1.9.63", - "Stop-it.be@hotmail.com:1.9.64", - "Stop-it.be@hotmail.com:1.9.65", - "Stop-it.be@hotmail.com:1.9.66", - "Stop-it.be@hotmail.com:1.9.67", - "Stop-it.be@hotmail.com:1.9.68", - "Stop-it.be@hotmail.com:1.9.69", - "Stop-it.be@hotmail.com:1.9.70", - "Stop-it.be@hotmail.com:1.9.71", - "Stop-it.be@hotmail.com:1.9.72", - "Stop-it.be@hotmail.com:1.9.73", - "Stop-it.be@hotmail.com:1.9.74", - "Stop-it.be@hotmail.com:1.9.75", - "Stop-it.be@hotmail.com:1.9.77", - "Stop-it.be@hotmail.com:1.9.79", - "Stop-it.be@hotmail.com:1.9.81", - "Stop-it.be@hotmail.com:1.9.82", - "Stop-it.be@hotmail.com:1.9.85", - "Stop-it.be@hotmail.com:1.9.86", - "Stop-it.be@hotmail.com:1.9.87", - "yt-audio-onlyy@mustafachyi.dev:1.0.0" - ] - }, - "schema": 1781591790626, - "key_format": "{guid}:{version}", - "stash_time": 1781613310142, - "id": "6233a653-9881-4b7a-b89b-b24366351c67", - "last_modified": 1781613397307 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{5a28895d-682e-475b-b4f5-49e2422f9918}:1.0", - "{76f7ba1e-0b65-451c-ab14-ef2196cf4366}:1.0", - "{149c74e3-35f0-41a0-94dc-c67c869fe9b7}:1.0", - "{c0ed5e88-8334-48ac-b1be-6c46de20c6a1}:1.0", - "{0b110375-8615-44b2-a1a0-622f30eb148e}:1.0", - "{2a3c1d16-1032-4f1b-8a5a-6f7ec4a997e8}:1.0", - "canvas-designer@canvasdesigner.dev:0.1.0", - "{44573cb9-b9f8-49b9-9622-3873701049a0}:1.0", - "{a8c0036f-00bc-48da-871f-0200a2749f87}:1.0", - "{d73a118b-1506-45ed-a4ec-41258a497afd}:1.0", - "{58fc940c-ba80-4a15-9999-98c30132a5b8}:1.0", - "{5683c1e9-cb8f-41d9-8b99-9964506d0b61}:2.5.5", - "{5683c1e9-cb8f-41d9-8b99-9964506d0b61}:2.5.11", - "{5683c1e9-cb8f-41d9-8b99-9964506d0b61}:2.5.10", - "{5683c1e9-cb8f-41d9-8b99-9964506d0b61}:2.5.9", - "{5683c1e9-cb8f-41d9-8b99-9964506d0b61}:2.5.8", - "{5683c1e9-cb8f-41d9-8b99-9964506d0b61}:2.5.7", - "{5683c1e9-cb8f-41d9-8b99-9964506d0b61}:2.5.6", - "transcript_summarizer@dunkie.local:2.0", - "better-webclass@liquidcatmofu.github.io:0.1.0", - "better-webclass@liquidcatmofu.github.io:0.2.0", - "{306c9179-64b2-46de-9ad9-4c65494efb9c}:1.0", - "{306c9179-64b2-46de-9ad9-4c65494efb9c}:1.1", - "{4bba3066-b43a-41dc-ae96-bcb812c0f782}:1.0", - "just-new-tab@ivanusto.yblog.org:1.46", - "just-new-tab@ivanusto.yblog.org:1.50", - "just-new-tab@ivanusto.yblog.org:1.51", - "just-tab-reloader@ivanusto.gmail.com:2.1", - "just-tab-reloader@ivanusto.gmail.com:2.2", - "Sanjitblondd@gmail.com:1.0", - "Sanjitalented@gmail.com:1.0", - "{38f73884-d10b-4f26-a7c2-4711c4a40b76}:2.0.2" - ] - }, - "schema": 1781570190255, - "key_format": "{guid}:{version}", - "stash_time": 1781591706193, - "id": "252dde2e-27a3-4380-85ae-5a9be3b46506", - "last_modified": 1781591790535 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.6", - "{82764b9c-dabd-493a-bd7e-7414735cf819}:1.0", - "{2b340f18-0d44-43e9-a79d-45eb299513b6}:1.0", - "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.9", - "Tidz-Orange-v2@tidz.com:2.0", - "teste1@gruposgcor.com.br:1.1.10", - "teste1@gruposgcor.com.br:1.1.11", - "youtube-speed-adjuster@examplesz.com:1.0", - "{c2c83fc9-d284-41ce-902b-1676b885cec1}:1.0", - "amoled-youtube@yourname.example:1.0", - "{69154c7c-ae0f-4d0b-b58d-3cdca7832148}:1.77", - "this-is-a-test@implementation-dev.com:50.0.2", - "this-is-a-test@implementation-dev.com:50.0.3", - "this-is-a-test@implementation-dev.com:50.1.0", - "this-is-a-test@implementation-dev.com:50.1.1", - "this-is-a-test@implementation-dev.com:50.2.0", - "{b7c8a1d0-e27b-4f4d-8a9c-6ef2a5b8e1d4}:1.0.0", - "mytube-sync@local:1.0.0", - "jira-deda-tools@deda-next.it:26.159.5", - "jira-deda-tools@deda-next.it:26.148.1", - "jira-deda-tools@deda-next.it:26.148.2", - "jira-deda-tools@deda-next.it:26.149.1", - "jira-deda-tools@deda-next.it:26.156.2", - "jira-deda-tools@deda-next.it:26.159.6", - "Tidz-Green@tidz.com:1.0", - "audiomasterpro@tu-nombre.com:2.0", - "Tidz-Orange@tidz.com:1.0", - "{f0210de7-0196-4607-9e99-89b4ffb2aa9e}:0.8.0", - "{f0210de7-0196-4607-9e99-89b4ffb2aa9e}:1.7.0", - "{280a4748-822f-40fb-aa50-635a444bb854}:2.2.2", - "{6a2191d4-5a1d-4a21-8bcc-ec937befff3e}:1.0", - "canto-voice-input@example.com:1.6", - "{9904dca4-e114-4107-a459-528a316bd657}:1.0", - "{3b97d0f6-e199-4554-a4e7-d561f4be9084}:1.0" - ] - }, - "schema": 1781548583504, - "key_format": "{guid}:{version}", - "stash_time": 1781570105520, - "id": "b312ab9c-4641-440e-b5b6-29813c62f08e", - "last_modified": 1781570190068 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "whatsapp-privacy-blur@extension:2.2.1", - "whatsapp-privacy-blur@extension:2.1.0", - "whatsapp-privacy-blur@extension:2.0.0", - "macro-recorder@local:1.2.8", - "macro-recorder@local:1.3.8", - "macro-recorder@local:1.3.7", - "macro-recorder@local:1.3.9", - "{52bbb37d-03d2-4d63-b1d0-9cb8a3c28a66}:1.0", - "claudex@ogarniamy.ai:1.1.3", - "claudex@ogarniamy.ai:1.1.2", - "claudex@ogarniamy.ai:1.1.1", - "claudex@ogarniamy.ai:1.1.0", - "claudex@ogarniamy.ai:1.0.0", - "{2dcb0f8a-f9de-4b46-899b-e11f8efc92f4}:0.1", - "macro-recorder@local:1.4.1", - "yt-playlist-cleaner@local:1.0.0", - "paragon-search@amazon.com:4.0", - "tab-volume-control@example.local:0.1.0", - "tab-volume-control@example.local:0.1.1", - "{6bb2e940-4a8f-4c83-8df2-5d2bb1ad4a6f}:1.0.0", - "{dbd14d0b-a38e-440b-bae6-f5b9bc62e619}:3.1.2", - "{95507e73-f131-454e-9529-7acbe47f5833}:1.0", - "{cb1795f1-199c-443b-b4a6-b4cdf654947a}:1.0", - "{09e8e899-bb34-4820-8fe5-7b600da82df2}:1.0", - "andrew@vnnet:0.0.9", - "{ce9f2bfd-d4cb-45f2-91ef-69906ac7770b}:1.0", - "pass014@014.se:0.1.0", - "amazon-tracker@fabian.local:0.4.0", - "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.3", - "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.5", - "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.4" - ] - }, - "schema": 1781526989334, - "key_format": "{guid}:{version}", - "stash_time": 1781548505272, - "id": "d651384f-11e5-4e85-ad32-759825fcd4c0", - "last_modified": 1781548583319 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "google-ai-mode-button@andromeda:1.0", - "haufe-x360-instance-tiles@example.local:1.0.1", - "reemote2@tym-project.fr:1.0", - "reemote2@tym-project.fr:1.1", - "sage-runner@pejuang-sedekah.org:1.4.3", - "binance-p2p-alert@kundan.tools:1.0.0", - "amazon-tracker@fabian.local:0.3.1", - "{95ef11d3-25cf-49fd-baae-1a75a24410d6}:1.0", - "edu-survey-autofill@tau.edu.tr:1.0", - "edu-survey-autofill@tau.edu.tr:1.1", - "auto-login-proxy-lwaror@my-unique-domain.com:1.1", - "justtldr@sjh.local:1.0.0", - "workflow01@remakr1.com:3.3", - "workflow01@remakr1.com:3.2", - "aisummary@local.addon:1.0.0", - "aisummary@local.addon:1.1.0", - "macro-recorder@local:1.0.0", - "macro-recorder@local:1.1.0", - "macro-recorder@local:1.1.1", - "macro-recorder@local:1.1.2", - "macro-recorder@local:1.1.3", - "YoutubeThumnailDownload@example.com:2026.6.15.1", - "YoutubeThumnailDownload@example.com:2024.1.1.1", - "YoutubeThumnailDownload@example.com:2024.5.13.1", - "YoutubeThumnailDownload@example.com:2024.8.13.3", - "YoutubeThumnailDownload@example.com:2024.8.17.1", - "YoutubeThumnailDownload@example.com:2024.8.21.4", - "YoutubeThumnailDownload@example.com:2025.1.15.1", - "YoutubeThumnailDownload@example.com:2026.6.8.1", - "article-picker@rocket049.cn:1.3", - "article-picker@rocket049.cn:1.4", - "@ets-break-together:1.0", - "radio-reginald-image-editor@reginald.local:1.0.0", - "c24-dev-override@carmazoon24.dev:2.0.0", - "ogobell3@icloud.com:1.7.3", - "addon-name-dmd@yourdomaindmd.com:1.0", - "sulu-helper@group.one:1.0.0", - "c24-dev-override@carmazoon24.dev:1.0.0", - "macro-recorder@local:1.3.5", - "macro-recorder@local:1.3.2", - "macro-recorder@local:1.3.0", - "macro-recorder@local:1.2.7", - "macro-recorder@local:1.2.5", - "macro-recorder@local:1.1.4", - "macro-recorder@local:1.2.1", - "macro-recorder@local:1.2.3", - "macro-recorder@local:1.2.6", - "stash-read-later@example.com:1.0.1", - "stash-read-later@example.com:1.3.0", - "stash-read-later@example.com:1.4.0", - "stash-read-later@example.com:1.6.0", - "stash-read-later@example.com:1.7.2", - "stash-read-later@example.com:1.7.4", - "stash-read-later@example.com:1.7.5", - "stash-read-later@example.com:1.7.6", - "{9b731a09-6569-4e7c-adb4-80daeba54a22}:0.1", - "{9b731a09-6569-4e7c-adb4-80daeba54a22}:0.2resigned1", - "bwclient@limtec.de:1.0.0", - "{9c99cf19-12a4-4ea2-b4f5-d94a1c350dbf}:1.2.1", - "{9c99cf19-12a4-4ea2-b4f5-d94a1c350dbf}:1.3.0", - "{9c99cf19-12a4-4ea2-b4f5-d94a1c350dbf}:1.4.0" - ] - }, - "schema": 1781505397497, - "key_format": "{guid}:{version}", - "stash_time": 1781526905754, - "id": "18e3fffe-6c33-4bd7-904b-8166951fc25e", - "last_modified": 1781526989142 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "canto-voice-input@example.com:1.0", - "scrapyard-ob-we@firefox:2.3.0", - "scrapyard-ob-we@firefox:2.3.1", - "ebook-scroll@easydev.dev:0.0.1", - "ebook-scroll@easydev.dev:0.1.0", - "ebook-scroll@easydev.dev:0.1.1", - "ebook-scroll@easydev.dev:0.1.2", - "canto-voice-input@example.com:1.1", - "canto-voice-input@example.com:1.2", - "order-checker@local:1.5.4", - "order-checker@local:1.5.10", - "order-checker@local:1.5.11", - "order-checker@local:1.5.12", - "aglt-booking-strategy@amazon:1.0", - "aglt-booking-strategy@amazon:1.1", - "canto-voice-input@example.com:1.3", - "canto-voice-input@example.com:1.4", - "Android@bravenhancer.com:25.5.0", - "scrapyard-ob-we@firefox:2.3.2", - "scrapyard-ob-we@firefox:2.3.3", - "enhancer@goldenfox.com:25.5.0" - ] - }, - "schema": 1781483788960, - "key_format": "{guid}:{version}", - "stash_time": 1781505310389, - "id": "faae85f0-409e-4bce-82e3-8c517b413e37", - "last_modified": 1781505397308 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "support@inkling-ai.com:1.1.0", - "corretor.app.onlinetechsolucoes@gmail.com:1.0.8", - "reelnotes@reelnotes.app:0.1.0", - "{1cc48350-d662-4ce4-9456-bec18f428187}:1.0.1", - "{1cc48350-d662-4ce4-9456-bec18f428187}:1.0.3", - "{1cc48350-d662-4ce4-9456-bec18f428187}:1.0.4", - "{365a54a0-542e-443a-85d9-2f9e8c790029}:1.2.0", - "rollcloud@carmanayeli.github.io:1.0.0", - "corretor.app.onlinetechsolucoes@gmail.com:1.0.9", - "x-auto-liker-sidebar-v2@alibulutt.dev:2.22.0", - "x-auto-liker-window-v2@alibulutt.dev:2.22.0", - "eur-converter@banglamess.net:3.0", - "{41be6fe8-1d8f-4cd9-bbe1-f375da1e3414}:1.0.0", - "{41be6fe8-1d8f-4cd9-bbe1-f375da1e3414}:1.0.1", - "yt-audio-only@standard.dev:1.0.0", - "yt-audio-only@standard.dev:1.0.1", - "yt-audio-only@standard.dev:1.0.2", - "{78e1e098-2c14-4648-8c57-c4484c72a0e5}:1.0", - "isacc2-predictor@extension:1.0.0", - "isacc2-predictor@extension:1.0.1" - ] - }, - "schema": 1781462185261, - "key_format": "{guid}:{version}", - "stash_time": 1781483706101, - "id": "5a8946c9-efbb-4367-b2d6-f313177f9c6c", - "last_modified": 1781483788757 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "opensocial@example.com:2.7", - "opensocial@example.com:2.8", - "opensocial@example.com:4.0", - "opensocial@example.com:4.1", - "opensocial@example.com:4.2", - "team-serp-sync@yourorganization.com:2.2", - "formrecovery@itzonecv.online:1.0", - "formrecovery@itzonecv.online:1.2", - "{691ee64d-e32b-4c5f-b809-370c8171dde8}:1.6.1.2544", - "{691ee64d-e32b-4c5f-b809-370c8171dde8}:1.6.1.2601", - "{b720425a-f123-4413-b11c-f30d121f0145}:6.0.1.5", - "mobile-interceptor@solidleoz:0.2.1", - "ATBC-beta@EasonWong:4.0.1", - "browser-cli@yiprawr.dev:0.15.0", - "yfv-private-addon@local:7.1.0", - "yfv-private-addon@local:7.2.0", - "url-lookalike-blocker@feldegast.github.io:1.1.1", - "zyrox-gimkit-client@gimkit.local:3.0.0", - "url-lookalike-blocker@feldegast.github.io:1.1.2", - "pricehelper@local.extension:1.0.4", - "arb-auto-buyer@patiencex.extension:2.0.1", - "url-lookalike-blocker@feldegast.github.io:1.1.3", - "url-lookalike-blocker@feldegast.github.io:1.2", - "deeptrace-browser-collector@deeptrace.local:0.5.4", - "deeptrace-browser-collector@deeptrace.local:0.5.5", - "deeptrace-browser-collector@deeptrace.local:0.5.6", - "{105ee6c2-b473-446a-af4b-267c49147027}:1.0", - "corretor.app.onlinetechsolucoes@gmail.com:1.0.6", - "{165eefb5-8bc7-43d7-8606-fee63afb7a27}:1.0", - "corretor.app.onlinetechsolucoes@gmail.com:1.0.7", - "click-utils@byo.co.il:1.3.0" - ] - }, - "schema": 1781440586788, - "key_format": "{guid}:{version}", - "stash_time": 1781462106019, - "id": "a67d7dea-bf95-4a2f-ada8-0c65772fa884", - "last_modified": 1781462185150 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "kash62029@gmail.com:1.0.0", - "kash62029@gmail.com:1.0.1", - "{6bb1afda-1b1d-46e8-afa9-a54d2b7df35b}:1.0.2", - "bandcamp@benjaminsmith.dev:0.0.2", - "simpcity-ilk-sayfa@kendi.eklentim:1.0", - "simpcity-ilk-sayfa@kendi.eklentim:1.1", - "{36a73694-f712-49e6-9c51-b5742dc4516c}:1.0", - "{36a73694-f712-49e6-9c51-b5742dc4516c}:2.0", - "allabolag-addon@local:0.1.0", - "speed-dial@georg.local:1.0.6", - "speed-dial@georg.local:1.0.8", - "speed-dial@georg.local:1.0.7", - "speed-dial@georg.local:1.0.9", - "speed-dial@georg.local:1.1", - "speed-dial@georg.local:1.1.1", - "speed-dial@georg.local:1.1.2", - "speed-dial@georg.local:1.1.3", - "cupons-ifood@extensao:1.2", - "cupons-ifood@extensao:1.4", - "cupons-ifood@extensao:1.5", - "cupons-ifood@extensao:1.6", - "cupons-ifood@extensao:1.7", - "maps-helper@shajen.pl:1.0", - "font-splitter-v2@localextension.com:1.0", - "rosie-logs@extension:1.0.0", - "opensocial@example.com:2.2", - "opensocial@example.com:2.4", - "opensocial@example.com:2.5", - "opensocial@example.com:2.6" - ] - }, - "schema": 1781418984792, - "key_format": "{guid}:{version}", - "stash_time": 1781440507341, - "id": "dfdbf3db-9790-4b62-878a-6bd7e4153adf", - "last_modified": 1781440586691 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "blocktube-blocker@blocker.local:0.4.8", - "blocker-bisect-0@blocker.local:1.0.0", - "article-picker@rocket049.cn:1.1", - "article-picker@rocket049.cn:1.0", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:3.7", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:3.4", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:3.6", - "screenshot-helper@universal-notes.com:1.0", - "twitch-auto-punkte-klicker@dirk.local:1.0.1", - "kimhoainam1207@gmail.com:0.1", - "{6bb1afda-1b1d-46e8-afa9-a54d2b7df35b}:1.0.0", - "{6bb1afda-1b1d-46e8-afa9-a54d2b7df35b}:1.0.1" - ] - }, - "schema": 1781397392226, - "key_format": "{guid}:{version}", - "stash_time": 1781418906016, - "id": "39aa803a-04c2-4b2c-abaf-85e103fc2bef", - "last_modified": 1781418984612 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "turkiye-theme@thedoctor.local:1.0.4", - "turkiye-theme@thedoctor.local:1.0.6", - "gay.benjifox.smolutils@addons.mozilla.org:0.1.5", - "amok2005@gmail.com:1.0.0", - "youtube-media-key-seek-jwalk-personal@firefox:1.0", - "picflow-downloader@local:1.0.0", - "picflow-downloader@local:1.0.1", - "picflow-downloader@local:1.0.2", - "simpli-newtab@local.firefox:1.1.1", - "{a82713e7-2ff3-4d2e-b391-27e58893d200}:0.3.2", - "ext267@dat267.github.io:1.0.3", - "onyxvault-autofill@onyxstar.org:0.5.16", - "tac@sylver-development:1.1.6" - ] - }, - "schema": 1781375788259, - "key_format": "{guid}:{version}", - "stash_time": 1781397305656, - "id": "fa637625-c205-4c39-98a6-403eb99b9eae", - "last_modified": 1781397391983 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:3.3", - "{c681737a-e85c-4c20-9152-3d4ddd5eb6ad}:3.2", - "{d395ce29-147a-41a6-afa8-fcd56d529f7d}:1.0", - "{4eacb408-da21-451c-a30a-302edca2a68d}:1.0", - "{ba329d88-b197-4dab-88c9-f20bc90c583c}:1.0", - "{ba329d88-b197-4dab-88c9-f20bc90c583c}:1.1", - "chatgpt-temp-visualizer@example.local:0.1.0", - "{64036c39-9483-41ed-b046-1b3ae2a98da9}:1.0", - "{fc99c33c-3441-4127-987c-c17a596de475}:4.0.0", - "243466093@qq.com:1.2", - "243466093@qq.com:1.1", - "{b3260456-51c6-400d-aafd-e62abf1c7bed}:3.1.1", - "{b3260456-51c6-400d-aafd-e62abf1c7bed}:2.9.0", - "{dbd14d0b-a38e-440b-bae6-f5b9bc62e619}:1.26.0", - "{dbd14d0b-a38e-440b-bae6-f5b9bc62e619}:0.3", - "{b3260456-51c6-400d-aafd-e62abf1c7bed}:3.1.2", - "save-private-window-cookies@mateusfilipe2k2:2.0.0", - "save-private-window-cookies@mateusfilipe2k2:1.4.0", - "save-private-window-cookies@mateusfilipe2k2:1.3.0", - "save-private-window-cookies@mateusfilipe2k2:1.5.0", - "{84d0e2e7-12fe-4adc-9858-66ebfd58c4df}:1.0" - ] - }, - "schema": 1781354190502, - "key_format": "{guid}:{version}", - "stash_time": 1781375706990, - "id": "3c970a67-dad2-4b72-91f0-ee1348853e58", - "last_modified": 1781375788060 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "enhancer@goldenfox.com:25.4.5", - "Android@bravenhancer.com:25.4.3", - "aphelion@fluffito.github.io:1.0.0", - "aphelion@fluffito.github.io:1.0.2", - "aphelion@fluffito.github.io:1.1.0", - "browser-identity-tab@local:1.0", - "{48414587-8c1d-48fd-81d7-201f3cf1f80e}:2.0", - "{48414587-8c1d-48fd-81d7-201f3cf1f80e}:1.0", - "{48414587-8c1d-48fd-81d7-201f3cf1f80e}:3.0", - "dummy-addon@crashmail.de:1.0", - "foton6_plugin_n1@simple_togle_proxi_mode_v1:1.0.1", - "foton6_plugin_n1@simple_togle_proxi_mode_v1:1.0.2", - "buyee-coordinator@sooyoos.com:1.1.0", - "buyee-coordinator@sooyoos.com:1.2.4", - "buyee-coordinator@sooyoos.com:1.2.0", - "buyee-coordinator@sooyoos.com:1.2.5", - "buyee-coordinator@sooyoos.com:1.2.6" - ] - }, - "schema": 1781332591095, - "key_format": "{guid}:{version}", - "stash_time": 1781354107091, - "id": "6b3a5f96-ae08-49ff-9d7c-a75ac79a26f9", - "last_modified": 1781354190360 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "drceo-dictado@drceoapp.com:5.1.0", - "mi-qol-extension@local.dev:1.0.0", - "claude-mobile-wrapper@jordy.dev:1.2.24", - "claude-mobile-wrapper@jordy.dev:1.2.25", - "chatgpt-group-panel@local:0.1.7", - "speaker-colorizer@local:2.0.9", - "{fc99c33c-3441-4127-987c-c17a596de475}:3.1.2", - "csr-plus@queryery.github.io:0.0.2", - "csr-plus@queryery.github.io:0.0.7", - "{19d35315-b060-4f53-a585-082415e29324}:0.2", - "youtube-ad-skipper-pro@msoftwaresolutions.net:1.2.0", - "youtube-ad-skipper-pro@msoftwaresolutions.net:1.1.1", - "test824u901@example.com:8.2.4", - "test824u900@example.com:8.2.4", - "test824u79@example.com:8.2.4", - "test824u78@example.com:8.2.4", - "test824u77@example.com:8.2.4", - "test824u76@example.com:8.2.4", - "test824l7@example.com:8.2.4", - "{afc77399-0e47-4b05-a35c-0b2f624f87ca}:8.2.4", - "keyforge-2fa@local.extension:1.1.0", - "vpn@protons.ch:1.2.16" - ] - }, - "schema": 1781310990592, - "key_format": "{guid}:{version}", - "stash_time": 1781332506628, - "id": "278e206a-881b-46dc-bdfb-2d114029e676", - "last_modified": 1781332590886 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "csr-inventory-seller@csrestored.local:3.8.5", - "flagscout@gnrs.ca:1.1.0", - "sideview-sync-pro@addon:1.3.0", - "video-resizer@localnet.local:2.7", - "hangar-xplorer-community@alyxone:1.0.113", - "hangar-xplorer-community@alyxone:1.0.114", - "hangar-xplorer-community@alyxone:1.0.115", - "hyp-tikci@mv2:5.0", - "i-use-arch-btw@aleksandersen.port:1.0.8" - ] - }, - "schema": 1781289390755, - "key_format": "{guid}:{version}", - "stash_time": 1781310906737, - "id": "98153f3e-7228-4cfc-9814-37c694e18400", - "last_modified": 1781310990430 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "gestorpro-pdf-bridge@jus.mendoza.gov.ar:11.0", - "url-note-keeper@privacyfield.com:1.0.5", - "url-note-keeper@privacyfield.com:1.0.16", - "url-note-keeper@privacyfield.com:1.0.15", - "url-note-keeper@privacyfield.com:1.0.14", - "url-note-keeper@privacyfield.com:1.0.13", - "url-note-keeper@privacyfield.com:1.0.12", - "url-note-keeper@privacyfield.com:1.0.11", - "url-note-keeper@privacyfield.com:1.0.10", - "url-note-keeper@privacyfield.com:1.0.9", - "url-note-keeper@privacyfield.com:1.0.8", - "url-note-keeper@privacyfield.com:1.0.7", - "url-note-keeper@privacyfield.com:1.0.6", - "inven-local-blocker@gemini.empty:1.0.0", - "flowbulk@david.dev:1.0", - "hyp-tikci@mv2:1.0", - "hyp-tikci@mv2:2.0", - "hyp-tikci@mv2:2.1", - "hyp-tikci@mv2:2.2", - "hyp-tikci@mv2:2.3", - "hyp-tikci@mv2:3.0", - "hyp-tikci@mv2:3.1", - "hyp-tikci@mv2:4.0", - "hyp-tikci@mv2:4.1", - "gemini-context-manager@kahsa.local:0.4", - "gemini-context-manager@kahsa.local:0.5", - "gemini-context-manager@kahsa.local:0.5.1", - "owned-books-highlighter@yourname.local:0.1", - "hyp-butonu@mv2:1", - "hyp-butonu@mv2:2.1", - "hyp-butonu@mv2:3.2", - "hyp-butonu@mv2:4.0", - "hyp-butonu@mv2:3", - "hyp-butonu@mv2:1.2", - "hyp-butonu@mv2:3.1", - "hyp-butonu@mv2:1.1", - "hyp-butonu@mv2:4.1", - "hyp-butonu@mv2:5.0", - "hyp-butonu@mv2:6.0", - "{ca490364-8b9c-4fe6-b28b-1d751828ce73}:2.2", - "{ca490364-8b9c-4fe6-b28b-1d751828ce73}:3.0", - "{ca490364-8b9c-4fe6-b28b-1d751828ce73}:3.1", - "{ca490364-8b9c-4fe6-b28b-1d751828ce73}:3.3", - "{7b936a7e-0fbf-4293-8f8c-31c127f6abaa}:0.2", - "url-note-keeper@privacyfield.com:1.0.18", - "url-note-keeper@privacyfield.com:1.0.17", - "twitch-unmute@wickerm4n.github.io:1.4.7", - "url-note-keeper@privacyfield.com:1.0.19", - "twitch-unmute@wickerm4n.github.io:1.3.2", - "twitch-unmute@wickerm4n.github.io:1.4.0", - "twitch-unmute@wickerm4n.github.io:1.4.1", - "twitch-unmute@wickerm4n.github.io:1.4.2", - "twitch-unmute@wickerm4n.github.io:1.4.3", - "twitch-unmute@wickerm4n.github.io:1.4.4", - "twitch-unmute@wickerm4n.github.io:1.4.6", - "twitch-unmute@wickerm4n.github.io:1.4.8", - "twitch-unmute@wickerm4n.github.io:1.4.9", - "yt-smart-downloader@example.com:1.1", - "yt-smart-downloader@example.com:1.1.1", - "nomad.4lex@gmail.com:1.1", - "nomad.4lex@gmail.com:1.2", - "zen-ai-summarizer@antigravity.ai:1.0.1", - "protonvpn-extension@proton.me:1.3.1", - "clutch-multichat@clutchchat.pro:1.0.0", - "rgaa-toolkit@nabil.local:2.0.0" - ] - }, - "schema": 1781267790856, - "key_format": "{guid}:{version}", - "stash_time": 1781289305642, - "id": "e3f12442-a3b6-4fb8-b272-97320c49ec46", - "last_modified": 1781289390431 - }, - { - "stash": { - "blocked": [ - "flowzen@fzenr.com:1.2", - "SwiftTools@dev55.com:1.0" - ], - "unblocked": [ - "qalam@yourdomain.com:1.0.1", - "qalam@yourdomain.com:1.0.2" - ], - "softblocked": [ - "hivy-tracker@hivy.io:2.2.2", - "hivy-tracker@hivy.io:2.2", - "hivy-tracker@hivy.io:2.1.2", - "hivy-tracker@hivy.io:2.1.3", - "hivy-tracker@hivy.io:2.1.1", - "hivy-tracker@hivy.io:2.1", - "hivy-tracker@hivy.io:1.7", - "hivy-tracker@hivy.io:2.0", - "hivy-tracker@hivy.io:2.2.1", - "tab-closer@example.local:1.0.0", - "timer-extension@mio.addon:1.0", - "timer-extension@mio.addon:1.1", - "{022fc394-9f1b-46dd-a165-3651600c9a8e}:1.0", - "{a98b7c6d-1234-5678-abcd-ef123456789a}:1.3", - "{6ead2498-157e-4881-a4f1-9e5423bbc424}:1.0.1", - "{6ead2498-157e-4881-a4f1-9e5423bbc424}:1.0.2", - "{6ead2498-157e-4881-a4f1-9e5423bbc424}:1.0.3", - "{6ead2498-157e-4881-a4f1-9e5423bbc424}:1.0.4", - "{9c99cf19-12a4-4ea2-b4f5-d94a1c350dbf}:1.2.0", - "{51538330-94ad-456a-80db-0794d0acf1ce}:1.0", - "hyphavuctoplayici@tb:12.9", - "hyphavuctoplayici@tb:13.0", - "udise-aladin@lbsSecSchool.com:1.0", - "kefim-video-speed-personal@local:1.1.1", - "cvedaily-lookup@cvedaily.com:1.2.5", - "cvedaily-lookup@cvedaily.com:0.1.0", - "cvedaily-lookup@cvedaily.com:1.0.0", - "cvedaily-lookup@cvedaily.com:1.1.0", - "cvedaily-lookup@cvedaily.com:1.2.0", - "cvedaily-lookup@cvedaily.com:1.2.1", - "cvedaily-lookup@cvedaily.com:1.2.2", - "cvedaily-lookup@cvedaily.com:1.2.3", - "cvedaily-lookup@cvedaily.com:1.2.4", - "{50d6efc0-5179-4c51-a1f7-81ad6cb466da}:2.0.19", - "{17e56df6-3f52-4fba-85df-3953aa715c10}:2.3.26080.1", - "amazon-tracker@fabian.local:0.2.3", - "tac@sylver-development:1.0.0", - "tac@sylver-development:1.0.1", - "tac@sylver-development:1.1.0", - "tac@sylver-development:1.1.1", - "tac@sylver-development:1.1.2", - "tac@sylver-development:1.1.3", - "tac@sylver-development:1.1.4", - "amazon-tracker@fabian.local:0.3.0", - "shift-clock-in@factorial.local:5.0.0", - "tac@sylver-development:1.1.5", - "shopee-hoan-tien@tietkiem360:1.0.0", - "nightcafe-auto-reply@hans-mqier1:1.6", - "timeline-navigator@my-custom-tool.com:1.3" - ] - }, - "schema": 1781246187163, - "key_format": "{guid}:{version}", - "stash_time": 1781267706762, - "id": "1a1ac0a8-a7d8-410b-877d-5e685343445c", - "last_modified": 1781267790758 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{0829ba10-cdfd-4c41-a3ca-a704f8db613c}:1.0", - "manager@chucksbasix.com:1.0.21", - "abuse-console-v2@fdcservers.net:1.0.0", - "abuse-console-v2@fdcservers.net:2.0.0", - "kpbnombpnpcffllnianjibmpadjolanh@chrome-store-foxified-2317260895:0.8.16.28", - "{3226ce92-9dde-40ef-97b4-d6c3e0626eaa}:0.9.5", - "{753bf0ce-3e51-4609-a367-95210fad8688}:0.3.0", - "site-info-tools-test@implementation-dev:50.0.1", - "re-start@adhithyabhaskar.dev:1.6.1", - "test825l020@example.com:8.2.5", - "test825l000@example.com:8.2.5", - "{550ffd97-6f36-4802-b5b5-4ed2f1efc587}:1.0", - "{550ffd97-6f36-4802-b5b5-4ed2f1efc587}:2.0", - "bestiaryarena-supermodloader@private.local:4.1.4", - "{550ffd97-6f36-4802-b5b5-4ed2f1efc587}:3.0", - "{550ffd97-6f36-4802-b5b5-4ed2f1efc587}:4.0", - "{550ffd97-6f36-4802-b5b5-4ed2f1efc587}:5.0", - "{550ffd97-6f36-4802-b5b5-4ed2f1efc587}:6.0", - "{550ffd97-6f36-4802-b5b5-4ed2f1efc587}:7.0", - "{550ffd97-6f36-4802-b5b5-4ed2f1efc587}:8.0", - "{550ffd97-6f36-4802-b5b5-4ed2f1efc587}:9.0", - "{711a2174-3391-4d6e-8c7a-27d32b272845}:1.0", - "{8034f0b2-eec8-4681-9b39-d16ed8135770}:1.0.0", - "{68c1ae38-b143-4883-87c1-c7d7e68ec403}:1.0.0", - "scrapyard-ext-we@firefox:2.2.3", - "scrapyard-ext-we@firefox:2.2.4", - "scrapyard-ext-we@firefox:2.2.5", - "scrapyard-ext-we@firefox:2.2.6", - "scrapyard-ext-we@firefox:2.2.8", - "scrapyard-ext-we@firefox:2.2.7" - ] - }, - "schema": 1781224588022, - "key_format": "{guid}:{version}", - "stash_time": 1781246105337, - "id": "4b15c7ad-7dc8-4f76-9485-122401a5e8d2", - "last_modified": 1781246186967 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{51dfc4b1-d17e-4b7a-acc3-508e5d222869}:1.0", - "github-extension@example.com:1.0.3", - "otex-cs-id-copier@git.derg.cz:0.1.1", - "realwpm@omniboxed.com:1.3", - "twitch-lang-menu@local:1.0.4", - "twitch-command-menu-hybrid@local:1.5.73", - "ink_wkahk@world.addon:5.0.0", - "copy-decoded-url@haruyuki:0.2.2.1", - "fs-downloader@local:0.2.3", - "twitch-unmute@wickerm4n.github.io:1.4.5", - "ai-chess-coach@aichess.coach:0.2.0", - "ai-chess-coach@aichess.coach:0.2.10", - "ai-chess-coach@aichess.coach:0.2.11", - "ai-chess-coach@aichess.coach:0.2.12", - "ai-chess-coach@aichess.coach:0.2.13", - "ai-chess-coach@aichess.coach:0.2.14", - "ai-chess-coach@aichess.coach:0.2.15", - "ai-chess-coach@aichess.coach:0.2.16", - "ai-chess-coach@aichess.coach:0.2.17", - "ai-chess-coach@aichess.coach:0.2.18", - "ai-chess-coach@aichess.coach:0.2.19", - "ai-chess-coach@aichess.coach:0.2.20", - "ai-chess-coach@aichess.coach:0.2.21", - "ai-chess-coach@aichess.coach:0.2.23", - "ai-chess-coach@aichess.coach:0.2.24", - "ai-chess-coach@aichess.coach:0.2.26", - "ai-chess-coach@aichess.coach:0.2.27", - "ai-chess-coach@aichess.coach:0.2.28", - "ai-chess-coach@aichess.coach:0.2.29", - "ai-chess-coach@aichess.coach:0.2.30", - "ai-chess-coach@aichess.coach:0.2.31", - "ai-chess-coach@aichess.coach:0.2.32", - "ai-chess-coach@aichess.coach:0.2.33", - "ai-chess-coach@aichess.coach:0.2.34", - "ai-chess-coach@aichess.coach:0.2.35", - "ai-chess-coach@aichess.coach:0.2.36", - "ai-chess-coach@aichess.coach:0.2.37", - "ai-chess-coach@aichess.coach:0.2.42", - "ai-chess-coach@aichess.coach:0.2.43", - "ai-chess-coach@aichess.coach:0.2.44", - "ai-chess-coach@aichess.coach:0.2.45", - "ai-chess-coach@aichess.coach:0.2.46", - "ai-chess-coach@aichess.coach:0.2.1", - "ai-chess-coach@aichess.coach:0.2.2", - "ai-chess-coach@aichess.coach:0.2.3", - "ai-chess-coach@aichess.coach:0.2.4", - "ai-chess-coach@yourchesscoach.com:0.2.0", - "amazon-tracker@fabian.local:0.2.0", - "amazon-tracker@fabian.local:0.2.1", - "amazon-tracker@fabian.local:0.2.2", - "tweet-analyzer-window-v2@alibulutt.dev:1.6.9", - "siprec-registro-consultas-evento-0@dcp.cae.911:1.0.1", - "siprec-registro-consultas-evento-0@dcp.cae.911:1.0.3", - "siprec-registro-consultas-evento-5@dcp.cae.911:1.0.1", - "siprec-registro-consultas-evento-4@dcp.cae.911:1.0.1", - "siprec-registro-consultas-evento-3@dcp.cae.911:1.0.1", - "siprec-registro-consultas-evento-2@dcp.cae.911:1.0.1", - "siprec-registro-consultas-evento-1@dcp.cae.911:1.0.0", - "siprec-registro-consultas-evento-1@dcp.cae.911:1.0.1", - "gptranslate@local:1.0.0", - "gptranslate@local:1.0.1", - "gptranslate@local:1.0.2", - "gptranslate@local:1.0.3", - "burpfox@addons.mozilla.org:1.0.2", - "nfse-downloader@arcechinel.com.br:2.8.6.18", - "nfse-downloader@arcechinel.com.br:2.8.6.22", - "presence-guard@example.local:1.0.0" - ] - }, - "schema": 1781203005092, - "key_format": "{guid}:{version}", - "stash_time": 1781224506168, - "id": "24b07a03-0332-47e1-ad11-cab95e49ca0c", - "last_modified": 1781224587726 - }, - { - "stash": { - "blocked": [], - "unblocked": [ - "support@opportunitycost.app:0.0.4", - "support@opportunitycost.app:0.0.5", - "support@opportunitycost.app:0.0.6", - "support@opportunitycost.app:0.0.7" - ], - "softblocked": [ - "{c4854512-866e-48dd-9467-62f9a88094e9}:1.0", - "growthinvesting-addon@local.internal:2.1", - "linkify-no-referrer@example.local:0.2.0", - "per-tab-auto-reloader@example.local:0.1.0", - "per-tab-auto-reloader@example.local:0.2.1", - "arb-auto-buyer@patiencex.extension:1.1.0", - "{a98b7c6d-1234-5678-abcd-ef123456789a}:1.2", - "{a98b7c6d-1234-5678-abcd-ef123456789a}:1.1", - "Android@bravenhancer.com:25.4.0", - "enhancer@goldenfox.com:25.4.0", - "full-reject-cmp-assistant@local:2.1.0", - "full-reject-cmp-assistant@local:3.0.0", - "search-exfreedomist@example.com:1.1", - "shallott@local-ai.translator:1.0.0", - "enhancer@goldenfox.com:25.4.3", - "enhancer@goldenfox.com:25.4.4", - "timer-overlay@example.com:1.0", - "timer-overlay@example.com:1.1", - "arb-auto-buyer@patiencex.extension:2.0.0", - "anti-refresh-blocker-unique-xulsolar@xulsolar.com:1.0.0" - ] - }, - "schema": 1781181391410, - "key_format": "{guid}:{version}", - "stash_time": 1781202906512, - "id": "8cf8a88b-573e-4b9f-938c-845ed4b996c6", - "last_modified": 1781203004837 + "autofill-job-application@whyzee.dev:1.1.4", + "autofill-job-application@whyzee.dev:1.1.5", + "netvision-auto-panel@viettel.local:1.4.4", + "nfsecloud@coutodesenvolvimento.com.br:1.1.9.4", + "nfsecloud@coutodesenvolvimento.com.br:1.1.9.5", + "nfsecloud@coutodesenvolvimento.com.br:1.1.9.6", + "nfsecloud@coutodesenvolvimento.com.br:1.1.9.7", + "netvision-auto-panel@viettel.local:1.4.5", + "netvision-auto-panel@viettel.local:1.4.6", + "netvision-auto-panel@viettel.local:1.4.7", + "netvision-auto-panel@viettel.local:1.4.8", + "tab-manager@proxy.extension:5.0.51", + "@kkplayer:26.8.241", + "{49730ad2-360d-41e1-a7c3-bfef4c1e29a4}:1.0", + "nfsecloud@coutodesenvolvimento.com.br:1.1.9.8", + "nfsecloud@coutodesenvolvimento.com.br:1.1.9.9", + "onkay@pm.me:1.2.5", + "deepspace-traductor@deepspace.local:0.1.0", + "siyuan-extension@zher52.cn:1.15.12", + "iltsop-smart-engine@iltsop.com:2.1.0", + "domaincheck@wirtgen-group:1.0.0", + "weblens@local.extension:1.3.23", + "sf-file-gallery@addon:1.3.3" + ] + }, + "schema": 1787531820729, + "key_format": "{guid}:{version}", + "stash_time": 1787553310895, + "id": "10629e8c-56e0-4a7c-a702-60b5c8f1c850", + "last_modified": 1787553419998 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.7", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.11", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.12", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.13", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.14", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.15", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.16", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.17", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.18", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.19", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.20", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.21", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.22", + "{0a70030a-9bac-466d-8ab1-bc48682374d9}:2.12.23", + "jarvis-bridge@local:3.3.12", + "{3ada2598-860c-4860-874a-d747a0313379}:1.0.0", + "{3ada2598-860c-4860-874a-d747a0313379}:1.0.1", + "{3ada2598-860c-4860-874a-d747a0313379}:1.0.2", + "{3ada2598-860c-4860-874a-d747a0313379}:1.0.3", + "{3ada2598-860c-4860-874a-d747a0313379}:1.0.4", + "yoktez@seagull.studio:1.0.0", + "{3560c3d5-4151-498b-872e-49b07643bf69}:2.9.3", + "{3560c3d5-4151-498b-872e-49b07643bf69}:2.9.5", + "{3560c3d5-4151-498b-872e-49b07643bf69}:2.9.7", + "{3b21f95d-5230-420f-b325-060840cae293}:1.0.1", + "{3b21f95d-5230-420f-b325-060840cae293}:1.0.3", + "{3b21f95d-5230-420f-b325-060840cae293}:1.0.7", + "{3b21f95d-5230-420f-b325-060840cae293}:1.2.5", + "{742c580e-3918-47ba-a9e3-3b18798e8351}:1.2.1", + "{742c580e-3918-47ba-a9e3-3b18798e8351}:1.2.5", + "{5784f3a0-3946-4612-9958-0d1b8d48aa31}:1.3.9", + "{5784f3a0-3946-4612-9958-0d1b8d48aa31}:1.2.3", + "{5784f3a0-3946-4612-9958-0d1b8d48aa31}:1.2.5", + "{5784f3a0-3946-4612-9958-0d1b8d48aa31}:1.3.11", + "jarvis-bridge@local:3.3.13", + "linkedin-job-capture@gregoire.local:1.1.0", + "jarvis-bridge@local:3.3.14", + "weblens@local.extension:1.3.22", + "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.33.30", + "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.33.29", + "ms-signin-warning-plugin@lucaskrupinski.com:0.3", + "ms-signin-warning-plugin@lucaskrupinski.com:0.4.1", + "ms-signin-warning-plugin@lucaskrupinski.com:0.5", + "ms-signin-warning-plugin@lucaskrupinski.com:0.6", + "suspicious-website-detector@lucaskrupinski.com:0.1", + "jarvis-bridge@local:3.3.15", + "enhancer@goldenfox.com:27.4.2", + "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.33.33", + "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.33.32", + "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.33.31", + "enhancer@goldenfox.com:27.4.3", + "{f0c85f2a-87fe-43c2-92a4-593f5b57e73a}:1.6.1", + "jarvis-bridge@local:3.3.16", + "{a75969b7-6658-4aef-a5b8-61121f452107}:0.0.1", + "jarvis-bridge@local:3.3.17", + "jarvis-bridge@local:3.3.18" + ] + }, + "schema": 1787510216145, + "key_format": "{guid}:{version}", + "stash_time": 1787531708155, + "id": "1dc6810c-587f-4927-9348-3eea3c095101", + "last_modified": 1787531820546 + }, + { + "stash": { + "blocked": [ + "{073f8f7e-ed8b-45fd-a5d1-58fe9db41ad3}:2.1.0", + "{073f8f7e-ed8b-45fd-a5d1-58fe9db41ad3}:91.0.3" + ], + "unblocked": [], + "softblocked": [ + "aistudio-automation@local.extension:1.0.0", + "jarvis-bridge@local:3.3.6", + "auto-copy-select@local.ext:1.0.0", + "infomaniak-alias-manager@flo.local:1.4.0", + "infomaniak-alias-manager@flo.local:1.5.1", + "infomaniak-alias-manager@flo.local:1.5.2", + "infomaniak-alias-manager@flo.local:1.5.3", + "infomaniak-alias-manager@flo.local:1.6.0", + "cloudflare-alias-manager@flo.local:1.0.0", + "{26df4cf1-794d-4735-a581-1b0a0f8bf2a3}:1.0", + "{89542d16-1064-444a-954f-ad6b8a1eeea9}:1.0", + "pwm@soulspin.me:0.1.0", + "pwm@soulspin.me:0.2.0", + "autoflow-switcher@yourteam.local:1.0", + "favory@sp4ce.pw:5.2.5", + "favory@sp4ce.pw:5.2.6", + "favory@sp4ce.pw:5.2.7", + "favory@sp4ce.pw:5.2.8", + "favory@sp4ce.pw:5.3.2", + "manga-history@example.com:0.1.7", + "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.33.26", + "homepage@khomyn.com:0.1", + "homepage@khomyn.com:0.11", + "hydra-download-sniffer@raunak.local:2.0.0", + "jarvis-bridge@local:3.3.8", + "jarvis-bridge@local:3.3.9", + "{63ec7b99-a55b-448b-8073-90a8d6bf979f}:0.9.1", + "{90191516-8d95-471d-b028-544a52cfd295}:1.0", + "{90191516-8d95-471d-b028-544a52cfd295}:2.0", + "{1aec4273-93a6-49e0-b1d7-3978e5cdef98}:1.0", + "{1aec4273-93a6-49e0-b1d7-3978e5cdef98}:2.0", + "{ed56987f-1ffb-48c8-a6e2-ceff1c6fa52f}:1.0", + "{ed56987f-1ffb-48c8-a6e2-ceff1c6fa52f}:2.0", + "onkay@pm.me:1.2.4", + "doubao-assistant-local@sojib:0.0.1", + "doubao-assistant-local@sojib:0.0.2", + "erion-ai@yourdomain.com:2.1.8", + "erion-ai@yourdomain.com:1.0.0", + "jarvis-bridge@local:3.3.10", + "watchparty@nero.local:1.0.19", + "google-docs-shortcuts@firefox:1.0.1", + "shopee-ids-links@fdhgroup.com.br:1.1.0", + "watchparty@nero.local:1.0.20" + ] + }, + "schema": 1787488610603, + "key_format": "{guid}:{version}", + "stash_time": 1787510107867, + "id": "68e54165-8fa3-4adb-b761-6c6ebf755303", + "last_modified": 1787510216063 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "cgm-wyszukiwarka@example.com:7.3.104.62", + "cgm-wyszukiwarka@example.com:7.3.104.63", + "vlxp@viettel.vn:1.4.0", + "bfrf@eye2serve.dev:0.1.0", + "canvas-helper@canvashelper.com:2.0.0", + "canvas-helper@canvashelper.com:2.1.0", + "canvas-helper@canvashelper.com:2.2.0", + "canvas-helper@canvashelper.com:2.3.1", + "cgm-wyszukiwarka@example.com:7.3.104.65", + "cgm-wyszukiwarka@example.com:7.3.104.64", + "cgm-wyszukiwarka@example.com:7.3.104.66", + "Bazaar@nchoremiot.com:4.6.1.3", + "Bazaar@nchoremiot.com:4.6.1.0", + "{91c32ee7-e7ac-4aef-8564-ece7b6c7bed1}:0.0.1", + "Bazaar@nchoremiot.com:4.6.1.4", + "gesture-video-player@local.android:1.0.0", + "cgm-wyszukiwarka@example.com:7.3.104.67", + "cgm-wyszukiwarka@example.com:7.3.104.68", + "tourco-bridge@tourco.local:1.0.0", + "tourco-bridge@tourco.local:1.0.1", + "tourco-bridge@tourco.local:1.0.2", + "tourco-bridge@tourco.local:1.0.3", + "tourco-bridge@tourco.local:1.0.4", + "tourco-bridge@tourco.local:1.0.5", + "tourco-bridge@tourco.local:1.0.6", + "tourco-bridge@tourco.local:1.0.8", + "tourco-bridge@tourco.local:1.0.10", + "tourco-bridge@tourco.local:1.0.11", + "tourco-bridge@tourco.local:1.0.12", + "tourco-bridge@tourco.local:1.0.13", + "tourco-bridge@tourco.local:1.0.14", + "tourco-bridge@tourco.local:1.0.15", + "rich-editor-translator@i100anni.it:1.1", + "rich-editor-translator@i100anni.it:1.0", + "vacante-cu-xen@xen.local:1.5.0", + "otpbridge@itzone.csc:1.2.0", + "rich-editor-translator@i100anni.it:1.2", + "jarvis-bridge@local:3.3.5", + "tourco-bridge@tourco.local:1.26.16", + "stream-interface-cleaner@deindomainnameodername.com:1.0.0", + "clean-web@revan.local:1.0.0", + "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.33.20" + ] + }, + "schema": 1787467005610, + "key_format": "{guid}:{version}", + "stash_time": 1787488505472, + "id": "7f4b5814-b38c-4f1f-b7ac-235d9f613fcc", + "last_modified": 1787488610484 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "jarvis-bridge@local:3.3.4", + "clean-viewer@local.invalid:1.0.0", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.19", + "youtube-media-pin@local.codex:3.3.42", + "vlxp@viettel.vn:1.3.9", + "vlxp@viettel.vn:1.3.7", + "youtube-media-pin@local.codex:3.3.43", + "coletor@1705prime.com.br:1.0.3", + "Bazaar@nchoremiot.com:4.6.1.1", + "Bazaar@nchoremiot.com:4.6.1.2", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.20", + "cgm-wyszukiwarka@example.com:7.3.104.61", + "cgm-wyszukiwarka@example.com:7.3.104.60", + "cgm-wyszukiwarka@example.com:7.3.104.59", + "cgm-wyszukiwarka@example.com:7.3.104.58", + "cgm-wyszukiwarka@example.com:7.3.104.57", + "cgm-wyszukiwarka@example.com:7.3.104.56", + "cgm-wyszukiwarka@example.com:7.3.104.55", + "cgm-wyszukiwarka@example.com:7.3.104.54" + ] + }, + "schema": 1787445402676, + "key_format": "{guid}:{version}", + "stash_time": 1787466905917, + "id": "30d0bd89-5e22-4b3e-94ea-d7d80de1997d", + "last_modified": 1787467005371 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{781b2339-21a5-47c3-a421-1fb8234e12da}:1.0", + "vpnproxy@antigravity.dev:2.0.1", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.38", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.43", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.45", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.42", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.37", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.31", + "{e2f59f0e-fd1a-4a5c-a64a-513666f9730a}:1.0", + "{bacb7a77-5f9a-454f-9e28-c8869d1d4380}:1.0", + "arctic-shift-profiles@rapidscooter.co.uk:0.2.0", + "choruswire@gazon673games.github.io:2.0.0.2", + "choruswire@gazon673games.github.io:2.0.0.1", + "{a25615c2-0f9f-492b-b89a-0cde97132316}:1.0.9", + "{a25615c2-0f9f-492b-b89a-0cde97132316}:1.0.10", + "{9a14d224-5ca4-4f1b-9e39-070bc98f5f2d}:7.0.0", + "jarvis-bridge@local:3.3.0", + "{30f966e4-47e4-4165-a42d-60c478029330}:0.1.0", + "{30f966e4-47e4-4165-a42d-60c478029330}:0.1.1", + "{30f966e4-47e4-4165-a42d-60c478029330}:1.0.0", + "{30f966e4-47e4-4165-a42d-60c478029330}:1.1.0", + "{30f966e4-47e4-4165-a42d-60c478029330}:1.1.1", + "{30f966e4-47e4-4165-a42d-60c478029330}:1.2.0", + "{30f966e4-47e4-4165-a42d-60c478029330}:1.3.0", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.51", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.53", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.49", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.46", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.47", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.50", + "{30f966e4-47e4-4165-a42d-60c478029330}:1.3.1", + "{bd7424fa-369a-43d6-bccf-618e110def6f}:1.0", + "{bd7424fa-369a-43d6-bccf-618e110def6f}:1.2", + "{bd7424fa-369a-43d6-bccf-618e110def6f}:1.3.0", + "{bd7424fa-369a-43d6-bccf-618e110def6f}:1.4.0", + "{bd7424fa-369a-43d6-bccf-618e110def6f}:1.4.1", + "{bd7424fa-369a-43d6-bccf-618e110def6f}:1.5.2", + "{bd7424fa-369a-43d6-bccf-618e110def6f}:1.1", + "gemini-scheduler-mobile-2026@local.dev:2.6", + "enhancer@goldenfox.com:27.4.1", + "compras-gov-readonly@br-nexus.local:0.12.4", + "compras-gov-readonly@br-nexus.local:0.12.3", + "compras-gov-readonly@br-nexus.local:0.12.2", + "jarvis-bridge@local:3.3.1", + "jarvis-bridge@local:3.3.2", + "jarvis-bridge@local:3.3.3", + "tidal-enhancer@custom-addon.net:1.0.0", + "tidal-enhancer@custom-addon.net:1.0.1", + "{2cefb8a4-2f03-436c-b6b5-870d944f5ffd}:0.1", + "{22ebecf6-7329-443d-8657-d159c6281e05}:0.0.1" + ] + }, + "schema": 1787423815011, + "key_format": "{guid}:{version}", + "stash_time": 1787445305979, + "id": "2cc2656d-eb1e-4dae-94ec-ba3f4d37c766", + "last_modified": 1787445402422 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{d7bc1e58-c3db-4f90-b963-2b7ffe7ec798}:1.0", + "{c111cb04-26eb-4cc5-bb33-caa715286c86}:1.0", + "{dbf93b7b-331a-468a-a892-51c9ca48a1f7}:1.0", + "BBENoLogout@Anestory:1.0.0", + "u7881955031@gmail.com:1.2", + "{69440599-743c-4c92-af21-0fc4ef7ee0c1}:1.0", + "{316dcafe-9c45-4077-b71a-2e10322f7f17}:1.0.0", + "url-customizer@localplugins.com:1.0.0", + "url-customizer@localplugins.com:1.0.1", + "gmcheems@gmcheems.xyz:2.0.0", + "nhdogjmejiglipccpnnnanhbledajbpd@chrome-store-foxified-4057251276:3.1.2", + "{9e1ef4ff-e636-4502-84f0-d96d323f9c90}:1.0", + "{c390759a-443d-4595-9101-e217bbc1c9d8}:1.0", + "meet-recorder-test@codenik.ru:0.1.42", + "aistudio-tts-helper@extension:4.0", + "poe1-trade-history-watcher@local:0.2.0", + "{1113b7ef-f5c3-44b4-b84a-52af568b1fa7}:3.0.9", + "jarvis-bridge@local:3.2.5", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.18", + "youtube-media-pin@local.codex:3.3.39", + "youtube-media-pin@local.codex:3.3.40", + "youtube-media-pin@local.codex:3.3.41", + "arctic-shift-reveal-user-posts@local:0.0.1", + "keeptray@local:0.1.4", + "jarvis-bridge@local:3.2.6", + "jarvis-bridge@local:3.2.7", + "{b299ed1f-595f-4b24-b11b-549e638047db}:2.1.4", + "enhancer@goldenfox.com:27.4.0", + "qzone-export@lvshuncai.com:3.0", + "jarvis-bridge@local:3.2.8", + "xar-newtab@example.com:1.0", + "jarvis-bridge@local:3.2.9", + "{7107f6b4-07b4-497c-ab0d-b104f8f5a5ab}:1.0" + ] + }, + "schema": 1787402231904, + "key_format": "{guid}:{version}", + "stash_time": 1787423707949, + "id": "2be90ea2-0630-4cd5-b21c-6dbf79d4aed8", + "last_modified": 1787423814660 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "yt-playlist-progress-tracker-v140@extension.local:1.4.9", + "netvision-auto-panel@viettel.local:1.8.0", + "yt-playlist-progress-tracker-v140@extension.local:1.4.8", + "netvision-auto-panel@viettel.local:1.9.1", + "connecteur@inventaire.laballastiere.fr:0.6.0", + "connecteur@inventaire.laballastiere.fr:0.6.1", + "netvision-auto-panel@viettel.local:1.4.0", + "netvision-auto-panel@viettel.local:1.4.1", + "netvision-auto-panel@viettel.local:1.6.0", + "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.32.85", + "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.33.16", + "kuma-firefox-svp@kuma.local:0.1.19", + "kuma-firefox-svp@kuma.local:0.1.20", + "kuma-firefox-svp@kuma.local:0.1.21", + "kuma-firefox-svp@kuma.local:1002.0", + "visualizerfirefox@zgame:6.0", + "visualizerfirefox@zgame:6.1", + "tools_amazon@dragon.fr:0.0.10", + "{8b73f618-1aae-4bd2-9a44-e8067dc08d92}:0.1.0", + "sidebery-touch-fork@elfdestruct.local:5.6.1", + "pll@pll.link:1.2.1", + "pll@pll.link:1.2.0", + "pll@pll.link:1.1.0", + "jarvis-bridge@local:3.2.3", + "jarvis-bridge@local:3.2.4", + "proc123@hami9.github.io:1.3.0", + "proc123@hami9.github.io:1.3.1", + "proc123@hami9.github.io:1.4.0", + "proc123@hami9.github.io:1.4.1", + "{17419e7f-c9ec-4313-b900-b4e11bfc3c29}:0.1", + "youtube-media-pin@local.codex:3.3.35", + "youtube-media-pin@local.codex:3.3.37", + "youtube-media-pin@local.codex:3.3.36", + "{f25ca6c8-f928-416b-8656-d11543cf3775}:0.1", + "hotkeynavigator@hotkeynavigator.app:0.2.0", + "hotkeynavigator@hotkeynavigator.app:1.0.0", + "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.33.18" + ] + }, + "schema": 1787380605135, + "key_format": "{guid}:{version}", + "stash_time": 1787402119079, + "id": "60fb73b5-326d-476b-8d70-bcc039c96115", + "last_modified": 1787402231667 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "netvision-auto-panel@viettel.local:1.5.0", + "organiza-marcadores-3d@matroy29.example:0.16.1", + "sticky-party@asano69.dev:0.0.3", + "sticky-party@asano69.dev:0.0.2", + "scai@scspace:1.0.1", + "wpe-omnibox-search@local:0.4.8", + "netvision-auto-panel@viettel.local:1.5.1", + "filmin-srt-downloader@local:3.3", + "filmin-srt-downloader@local:4.0", + "filmin-srt-downloader@local:4.1", + "youtube-media-pin@local.codex:3.3.31", + "youtube-media-pin@local.codex:3.3.22", + "youtube-media-pin@local.codex:3.3.34", + "kiite-notification-archive@local:1.0.13", + "youtube-media-pin@local.codex:3.3.33" + ] + }, + "schema": 1787359028142, + "key_format": "{guid}:{version}", + "stash_time": 1787380505718, + "id": "ef78d0c2-3103-465f-b67f-a1de8b0008b5", + "last_modified": 1787380604893 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "gerrit-llm-review@nokia.local:0.1.16", + "firefox-ext@cluerate.com:0.4.18", + "firefox-ext@cluerate.com:0.4.20", + "firefox-ext@cluerate.com:0.4.24", + "canalsolar-passwords@canalsolar.com.br:1.0.0", + "{77022f90-23b3-4ecc-95a6-95f7dce242c5}:1.3.0", + "{77022f90-23b3-4ecc-95a6-95f7dce242c5}:1.4.0", + "{77022f90-23b3-4ecc-95a6-95f7dce242c5}:1.5.0", + "{77022f90-23b3-4ecc-95a6-95f7dce242c5}:1.5.3", + "{77022f90-23b3-4ecc-95a6-95f7dce242c5}:1.6.1", + "{77022f90-23b3-4ecc-95a6-95f7dce242c5}:1.6.3", + "{e568e156-0d1c-4629-ac3c-629f26f8c12c}:1.0", + "{cff9d7b6-b1b1-4d8a-a1cf-050d850ea4d4}:1.0", + "vpnproxy@antigravity.dev:1.0.3", + "@imgproxy-compressor:1.0.0", + "{e9c8b724-5d1a-4f32-8a90-3b6127e69d45}:3.0", + "{e9c8b724-5d1a-4f32-8a90-3b6127e69d45}:4.0", + "{e9c8b724-5d1a-4f32-8a90-3b6127e69d45}:5.0", + "lmjdlojahmbbcodnpecnjnmlddbkjhnn@chrome-store-foxified-3455115988:3.0.5", + "ascript-visual-hacker-prank@addons.mozilla.org:1.2", + "{759bbc5e-6e2e-4932-b967-b8f73b966dca}:1.4.1", + "{2bcf0c09-1b64-4c43-aa69-c7309d7647c8}:3.0", + "{2bcf0c09-1b64-4c43-aa69-c7309d7647c8}:3.1", + "{2bcf0c09-1b64-4c43-aa69-c7309d7647c8}:3.2", + "{2bcf0c09-1b64-4c43-aa69-c7309d7647c8}:3.3", + "organiza-marcadores-3d@matroy29.example:0.7.0", + "organiza-marcadores-3d@matroy29.example:0.8.0", + "organiza-marcadores-3d@matroy29.example:0.16.0", + "keeptray@local:0.1.1", + "keeptray@local:0.1.2", + "keeptray@local:0.1.3", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.26", + "tab-helper@dhana.local:1.1.2" + ] + }, + "schema": 1787337415119, + "key_format": "{guid}:{version}", + "stash_time": 1787358908847, + "id": "46fdd85d-49f5-423a-9fc5-14856511cd10", + "last_modified": 1787359028068 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "jarvis-bridge@local:3.1.2", + "{8bd12bea-a618-4d56-b4c6-9347178ae13b}:1.0", + "jira-ticket-opener@fenergo-wesbrennan:1.1", + "{ac560040-26f2-4f72-b1ad-78a513778e64}:1.0", + "{ac560040-26f2-4f72-b1ad-78a513778e64}:1.1", + "{ac560040-26f2-4f72-b1ad-78a513778e64}:1.2", + "jarvis-bridge@local:3.2.2", + "{f3e72fb8-21d6-4e7c-a295-2d55f5d956f3}:1.0", + "naver-neighbor-helper-android@example.local:1.3.5", + "naver-neighbor-helper-android@example.local:1.3.4", + "naver-neighbor-helper-android@example.local:1.3.8", + "naver-neighbor-helper-android@example.local:1.3.7", + "reblogr@reblogr.example:0.4.3", + "{30194a1c-2462-4f66-bafa-694cb98b1d8c}:1.0", + "{3c260bda-752b-4739-96e2-176fe70a9d99}:1.0", + "ginsmooc-extension@ginnnnnn.top:2.1.1", + "kiwi-tv-ex@example.com:0.1.0", + "{e850bf83-1c74-46fb-9875-8cc8d4aa3e37}:0.2.0", + "ai-control-room@example.local:0.5.11", + "youtube-media-pin@local.codex:3.3.20", + "youtube-media-pin@local.codex:3.3.19", + "yt-playlist-progress-tracker-v140@extension.local:1.4.3", + "yt-playlist-progress-tracker-v140@extension.local:1.4.4", + "{8bb9b901-056d-4bd8-b102-7f91e2b05b0f}:0.1.1", + "@be-autofill-qa-toolkit:0.5.5", + "@be-autofill-qa-toolkit:0.5.7", + "copy-customer-details@local:1.3.1", + "copy-customer-details@local:1.3.2", + "copy-customer-details@local:1.3.3", + "copy-customer-details@local:1.3.4", + "copy-customer-details@local:1.3.5", + "copy-customer-details@local:1.3.6", + "descargador-imagenes-simple-personal@local:1.0.0", + "descargador-imagenes-simple-personal@local:1.10.0", + "descargador-imagenes-simple-personal@local:1.11.0", + "{9cd2c0ea-c56d-4f41-9018-680398b42e6b}:1.0", + "kompresor-obrazow@example.local:1.0.0", + "kompresor-obrazow@example.local:1.2.0", + "kompresor-obrazow@example.local:1.3.0", + "{de4a22ed-5f05-4d5a-9019-32d73b02d564}:0.1.3", + "{de4a22ed-5f05-4d5a-9019-32d73b02d564}:0.1.2", + "{de4a22ed-5f05-4d5a-9019-32d73b02d564}:0.1.1", + "@imgproxy-compressor:1.2.0" + ] + }, + "schema": 1787315803930, + "key_format": "{guid}:{version}", + "stash_time": 1787337307477, + "id": "5aad8441-9806-4ea2-847c-22bf567e880f", + "last_modified": 1787337414932 + }, + { + "stash": { + "blocked": [ + "chiro-redok@webtools.com:8.12.13", + "chiro-di-red@tools.com:8.12.13", + "{d8a5f7c3-9e4b-2f2a-b1d7-8c7e9f4a2b7c}:1.1.2", + "{d8a5f7c3-9e4b-2f2a-b1d7-8c7e9f4a2b3c}:1.1.2", + "edge-pad-clear@proaddons.net:9.9.23", + "smart-note-track@linktools.org:4.10.5", + "dash-data-core@browsify.example:8.16.0", + "easy-block-bar@proaddons.example:4.3.10", + "dash-tip-grab@linktools.co:5.0.15", + "pure-grab-nova@browsify.example:5.6.16", + "pro-link-box@neattools.org:8.4.9", + "view-proxy-score@quickext.org:8.12.3", + "fast-web-dock@webtools.com:8.21.25", + "easy-news-bar@webtools.org:6.4.5", + "sync-zip-kit@netplugs.example:9.20.18", + "link-web-link@addonslab.org:7.4.25", + "echo-focus-pad@addonslab.org:5.24.9", + "deep-file-scan@fasttools.example:7.21.15", + "safe-scan-zip@fasttools.co:6.21.23", + "pro-box-scan@cleankits.co:6.17.9", + "echo-dock-zen@addonslab.net:9.16.20", + "open-note-kit@extrakits.co:5.12.1", + "slim-pad-free@tabtools.net:8.20.17", + "snap-news-dock@foxplugin.net:5.23.16", + "lite-map-box@browsify.net:7.5.16", + "zen-box-clip@protools.com:4.0.20", + "open-grab-tip@smartext.net:7.9.1", + "dash-clip-clear@extlab.org:4.11.4", + "easy-map-pixel@extlab.co:4.13.15", + "open-note-core@plugify.example:7.0.0", + "dash-map-fast@addonslab.com:6.10.7", + "echo-tab-track@devplugs.com:6.17.9", + "view-tool-box@protools.net:5.7.2", + "open-file-data@foxplugin.co:5.13.10", + "{adfa6176-3ea4-4d19-bcae-445d3d09599d}:1.7", + "{adfa6176-3ea4-4d19-bcae-445d3d09599d}:91.0.3", + "{c14ecb69-daf5-4e75-bdd2-abc6a3492468}:1.4", + "{c14ecb69-daf5-4e75-bdd2-abc6a3492468}:711.0.1" + ], + "unblocked": [], + "softblocked": [ + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.13", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.15", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.22", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.25", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.28", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.31", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.35", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.40", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.43", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.49", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.50", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.51", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.52", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.53", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.54", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.55", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.56", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.57", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.58", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.64", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.65", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.67", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.68", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.69", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.72", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.74", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.78", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.87", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.89", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.91", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.93", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:0.0.98", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:1.0.1", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:1.0.5", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:1.0.8", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:1.0.10", + "{3c236fbc-9114-43ed-a224-0cd1834aec4d}:1.0.19", + "abc@alphabit.kr:1.0.6", + "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:2.4.9", + "flinker-fuchs@flinkerfuchs.local:1.0.0", + "flinker-fuchs@flinkerfuchs.local:1.0.1", + "sjsu-canvas-mcp-bridge@local.invalid:2.0.3", + "netvision-auto-panel@viettel.local:1.2.0", + "cr-auto-filter-nocpro5@dungnv9.viettel:2.2", + "{9a511fca-bada-4966-83cc-f60b46f1cea4}:2.5.0", + "@video-watch-tracker:1.4", + "infinity-whatsapp-automation@infinitynetwork.com.ar:0.3.25", + "{440b7573-ad0d-4415-bdd3-168851a4695d}:3.4.3", + "{440b7573-ad0d-4415-bdd3-168851a4695d}:3.4.4", + "{187a0451-009e-44b6-9de3-7fbf30d31a6a}:1.0", + "kuma-firefox-svp@kuma.local:0.1.12", + "kuma-firefox-svp@kuma.local:0.1.14", + "kuma-firefox-svp@kuma.local:0.1.15", + "kuma-firefox-svp@kuma.local:0.1.16", + "kuma-firefox-svp@kuma.local:0.1.17", + "kuma-firefox-svp@kuma.local:0.1.18", + "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:2.5", + "foroactivo-borrado-masivo@local:1.1.6", + "forumotion-bulk-delete-en@local:1.1.6" + ] + }, + "schema": 1787294219943, + "key_format": "{guid}:{version}", + "stash_time": 1787315706361, + "id": "a2c946a9-9227-4291-8211-c1c7fad926ad", + "last_modified": 1787315803724 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "proxy-browser@evrkms:0.1.4", + "flashcaption@flashcaption.com:1.9.1", + "oor_2yy7@gmail.com:2.0", + "rkoor_256k7@gmail.com:3.0", + "parc-autofill-mono@darsss:0.5.4", + "{716bca0c-e2a8-4faf-a7f5-a6cb32d195b9}:3.52.14", + "{716bca0c-e2a8-4faf-a7f5-a6cb32d195b9}:3.52.14.1", + "{716bca0c-e2a8-4faf-a7f5-a6cb32d195b9}:4.0.3.1", + "enhancer@goldenfox.com:27.3.5", + "enhancer@goldenfox.com:27.3.4", + "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:2.4.8", + "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:2.4.7", + "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:2.4.6", + "{4e03803e-a6d4-4bd5-9bf3-8bd52e0fdf5a}:2.4.5", + "kinopoisk-to-kinokino@local:1.0.0", + "trans365@trans365.me:2.2.3", + "hsk-task-exporter@hasaki.work:1.0.0", + "douyin-laike-notify@firefox-chat-notice.local:0.3.1", + "review-collector@navo.tectectec.com:1.2.1", + "{edde55a1-d686-463f-9373-84814ae78f08}:0.11.0", + "poe2tracker-kardes-20260809@local:5.55", + "poe2tracker-kardes-20260809@local:5.50", + "poe2tracker-kardes-20260809@local:5.48", + "poe2tracker-kardes-20260809@local:5.49", + "{edde55a1-d686-463f-9373-84814ae78f08}:0.11.1", + "ai-sensitive-guard@cdac.in:4.1.0" + ] + }, + "schema": 1787272605522, + "key_format": "{guid}:{version}", + "stash_time": 1787294108392, + "id": "3d3a8b76-c22d-423a-927a-38b630ef1522", + "last_modified": 1787294219756 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "katharos@atri.dad:1.0.0", + "katharos@atri.dad:1.1.0", + "katharos@atri.dad:1.2.0", + "katharos@atri.dad:1.2.1", + "katharos@atri.dad:1.2.2", + "katharos@atri.dad:1.3.0", + "katharos@atri.dad:1.4.0", + "foroactivo-borrado-masivo@local:1.1.4", + "sticky-notes-anywhere-v3@example.com:4.17.0", + "{ebe70b7b-8811-421d-be6a-91a18cff3b13}:1.10.2", + "bestball-war-room@local:2.2.0", + "image-downloader@anael.local:1.0.0", + "forumotion-bulk-delete-en@local:1.1.5", + "foroactivo-borrado-masivo@local:1.1.5", + "return-yt-music-comments@esinotfound:1.0.1", + "ytptube@arabcoders.org:1.3.0", + "doubao-assistant@manus.local:0.0.3", + "doubao-assistant@manus.local:0.0.4", + "@chzzk-platter.dev-lirpa:1.42.1", + "attakip@yenibeygir.com:1.1", + "{873b0f85-c63b-49f0-80e1-650b344c5d5c}:1.0", + "{710840ab-eb7c-4fd3-87d8-8607ba141581}:1.0", + "{ed8cc707-c3be-4085-88f2-4a6c4a26fee5}:1.0", + "viewhance@ef07c16a-d419-4943.invalid:2026.820.1958", + "pulse@smartb2.local:1.0.4", + "ata-pdf-screenshot@local:1.0.1" + ] + }, + "schema": 1787251022862, + "key_format": "{guid}:{version}", + "stash_time": 1787272505936, + "id": "e269f41d-abfe-4e0f-bd37-908c385bcc5e", + "last_modified": 1787272605432 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{c565cb58-a625-4684-9892-b6497a11a840}:3.0", + "miguelness@gmail.com:1.0", + "miguelness@gmail.com:1.1", + "__newtabpage@vitaliy.com:2026.8.20", + "{8303a3f7-8e8e-4e4f-ba87-4d8fe2ae5c65}:1.0", + "{e76d675f-2d15-4c42-8769-f6f4030aaeac}:1.0", + "enjefpkmlibebgbbgidmhpmjhcdffhfm@chrome-store-foxified--746626949:1.0.5", + "{a25615c2-0f9f-492b-b89a-0cde97132316}:1.0.6", + "{a25615c2-0f9f-492b-b89a-0cde97132316}:1.0.5", + "{a25615c2-0f9f-492b-b89a-0cde97132316}:1.0.0", + "{a25615c2-0f9f-492b-b89a-0cde97132316}:1.0.1", + "{a25615c2-0f9f-492b-b89a-0cde97132316}:1.0.2", + "{a25615c2-0f9f-492b-b89a-0cde97132316}:1.0.4", + "{6e12b075-f795-4ce3-a093-185e8ae8834e}:1.0", + "{a1829cd7-e463-4967-9da2-41e555987716}:0.1", + "{a1829cd7-e463-4967-9da2-41e555987716}:0.2" + ] + }, + "schema": 1787229440667, + "key_format": "{guid}:{version}", + "stash_time": 1787250907284, + "id": "8071d7bc-5832-41b9-8f3e-f855661ca550", + "last_modified": 1787251022689 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{9be6cf08-d180-4688-894b-5d1e2880f67d}:5.1.5", + "cardmarketer@leylines.uk:1.0.2", + "spor-toto@orananaliz.com:0.2.6", + "{776d3018-b14a-4aa1-8f1c-1f2c2a91c0dc}:1.0", + "sf-file-gallery@addon:1.2.2", + "sf-file-gallery@addon:1.3.1", + "sf-file-gallery@addon:1.3.2", + "sf-glocke@addon:2.22.0", + "sf-remote-workorder@addon:2.3.3", + "sf-case-search@addon:1.22.0", + "sf-case-search@addon:1.23.0", + "razorerp-tools@kuusakoski:1.1.0", + "voidstack@yourdomain.com:6.0", + "voidstack@yourdomain.com:6.1", + "voidstack@yourdomain.com:6.12", + "voidstack@yourdomain.com:6.13", + "voidstack@yourdomain.com:6.14", + "voidstack@yourdomain.com:6.15", + "apple-store-coupon@sharewindow.com:1.0.0", + "spor-toto@orananaliz.com:0.2.7", + "tegp-ltm-tools-v5-android-20260820@addons.example:5.1.6", + "fly_csp_cryptopro@astralinux.ru_test1234:1.0", + "{5dbbd83b-8724-4bc3-a810-530f1bd8e32c}:1.6.0", + "{17d26154-bfec-4986-a583-1be7d3335766}:5.1.12", + "foto-extractor@vlastnavyvoj.local:1.4", + "spor-toto@orananaliz.com:0.3.0", + "gestpswd@local:1.0.0", + "tegp-ltm-tools-v5-54cbaef5-e185-4eaa-959f-071b1818426b@tegp-tools.org:5.2.1", + "bol-snipe-assist@skrypt.nl:1.0.0", + "envguard@jlonborg.github.io:0.0.1", + "kratoshop-itemsatis-autofill@localhost:1.3.10", + "q6a-speed-dial@local:0.5.3", + "q6a-speed-dial@local:0.5.4", + "envguard@jlonborg.github.io:1.0.0", + "{e4363875-eda6-458b-b5aa-aef7635e61fe}:1.0" + ] + }, + "schema": 1787207809942, + "key_format": "{guid}:{version}", + "stash_time": 1787229314873, + "id": "d08a8125-9cc4-4821-92c5-8589ee4e00a5", + "last_modified": 1787229440469 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "patent-viewer-import@local.dev:5.1.1", + "freetube-redirect@zen.local:1.0.0", + "rk-player-helper@local:1.2.4", + "medical-survey-handoff-lite@example.local:0.6.6", + "medical-survey-handoff-lite@example.local:0.6.5", + "spor-toto@orananaliz.com:0.2.0", + "spor-toto@orananaliz.com:0.2.1", + "enhancer@goldenfox.com:27.3.3", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.17", + "spor-toto@orananaliz.com:0.2.3", + "spor-toto@orananaliz.com:0.2.4", + "sf-glocke@addon:2.21.0", + "spor-toto@orananaliz.com:0.2.5", + "{9c81a572-7b31-4439-bf97-c31715b422b3}:26.8.140", + "{9c81a572-7b31-4439-bf97-c31715b422b3}:26.8.146" + ] + }, + "schema": 1787186216275, + "key_format": "{guid}:{version}", + "stash_time": 1787207705638, + "id": "3e866735-71bf-4f41-8643-65f40309bbc7", + "last_modified": 1787207809855 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "q6a-speed-dial@local:0.5.2", + "lockrvault@lockrvault.de:1.0.0", + "password-derivative@eenblauwehemel.nl:2.0", + "password-derivative@eenblauwehemel.nl:2.1.0b1", + "password-derivative@eenblauwehemel.nl:2.1.0.3", + "shanto-auto-slot@skshanto96.com:8.0", + "mowathaq@example.com:4.3", + "heavymetall779@gmail.come:1.0" + ] + }, + "schema": 1787164757210, + "key_format": "{guid}:{version}", + "stash_time": 1787186109823, + "id": "93e81cb6-d333-4365-9586-feb614529acc", + "last_modified": 1787186216069 }, { - "stash": { - "blocked": [ - "{6e6ae75a-77ab-4bdc-8183-cf129cc42e40}:1.5.9", - "{6e6ae75a-77ab-4bdc-8183-cf129cc42e40}:1.6.0", - "{6e6ae75a-77ab-4bdc-8183-cf129cc42e40}:1.6.1", - "{1e66bc5b-d27e-4878-bba4-a7c1c43de460}:7.6.0" - ], - "unblocked": [], - "softblocked": [ - "spider-goes-around-the-world@example.com:2.1.1", - "sf-remote-wo@weinig.local:1.1.2", - "clickutils-ff@byo.co.il:1.3.6", - "clickutils-ff@byo.co.il:1.3.5.3", - "clickutils-ff@byo.co.il:1.3.5.2", - "clickutils-ff@byo.co.il:1.3.5.1", - "clickutils-ff@byo.co.il:1.3.5", - "clickutils-ff@byo.co.il:1.3.2", - "clickutils-ff@byo.co.il:1.3.1", - "clickutils-ff@byo.co.il:1.3.0", - "torium@gmail.com:1.0", - "nomad.4lex@gmail.com:1.0", - "{be6ea19d-5644-44ee-a472-09b63849b1df}:1.0.0", - "qalam@yourdomain.com:1.0.1", - "qalam@yourdomain.com:1.0.2", - "{92ea5cdc-acf1-4d19-8ab2-c877c3bc6b48}:1.0", - "search-helper@hussain.local:1.0", - "search-helper@hussain.local:1.1", - "clickutils-ff@byo.co.il:1.3.7", - "haiilo-enhancer@nichu42.de:0.2.0", - "sentry-shield@extension:1.0.1", - "sentry-shield@extension:1.0.2", - "sentry-shield@extension:1.0.3", - "sentry-shield@extension:1.0.4", - "sentry-shield@extension:1.0.5", - "{754dee1b-47c3-44f7-957b-0b2f4cf60a91}:1.0", - "Android@bravenhancer.com:25.3.5", - "Android@bravenhancer.com:25.2.1", - "enhancer@goldenfox.com:25.3.1", - "transcript-summarizer@gemini.local:1.6", - "{f1c243a8-42c2-4876-be5e-99a3562b3a1a}:10.2.41", - "{845e7c63-ee17-4951-99a8-91e7233d0255}:1.6.1.2609", - "{845e7c63-ee17-4951-99a8-91e7233d0255}:1.6.1.46", - "{845e7c63-ee17-4951-99a8-91e7233d0255}:1.6.1.2669", - "{845e7c63-ee17-4951-99a8-91e7233d0255}:1.6.1.2737", - "{845e7c63-ee17-4951-99a8-91e7233d0255}:1.6.1.2763", - "{845e7c63-ee17-4951-99a8-91e7233d0255}:1.6.1.2814", - "{b745a570-a501-4c9a-b6ff-06d619146734}:1.0", - "nursemagic@nursemagic.ai:1.6", - "odoo-timesheet-systray@example.local:0.1.0", - "nks-helper@land.gov.ua:1.2.0", - "{ad97ca40-c0d0-40dc-945c-e8a99c7ceb18}:1.0", - "{0b7ec9e8-32f3-42c1-80cb-dc34a690fba1}:1.0", - "street-peek-for-strava-maps@risehouse.it:1.3.0", - "street-peek-for-strava-maps@risehouse.it:1.3.2", - "jcpqdsad1AfroExport233@dsoteer.com:1.12", - "jcpqdsad1AfroExport233@dsoteer.com:1.11", - "jcpqdsad1AfroExport233@dsoteer.com:1.5", - "test825u01@example.com:8.2.5", - "noeqtion@rohit:1.0", - "health-capsule-widget-jiuxian@local:1.1", - "health-capsule-widget-jiuxian@local:1.2", - "precheck-widget-local@local:1.0", - "precheck-widget-local@local:1.1", - "health-capsule-widget-shunyichengqu@local:1.2", - "health-capsule-doctor-assistant-guangning@yuxin:1.1", - "health-capsule-doctor-assistant-guangning@yuxin:2.1", - "{6a6a3d1f-e1e3-4d53-97cc-84cee442c5a7}:1.0", - "auto5-theme@example.com:1.0", - "Usoppitalesss@gmail.com:1.0", - "sitemindatalake30@addon:1.1", - "autocar-final-master-xyz@kzsystems.com:1.0.2", - "autocar-final-master-xyz@kzsystems.com:1.0.3", - "{7336515c-bd54-4feb-b101-6f39c9f96737}:1.2.1", - "{4eac3e8c-0d4c-49fe-b93b-b361dba62678}:1.1" - ] - }, - "schema": 1781094992170, - "key_format": "{guid}:{version}", - "stash_time": 1781181306338, - "id": "f8fb75ac-36f1-4530-bf06-92e258459eac", - "last_modified": 1781181391198 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "sentry-shield@extension:1.0.0", - "aurastep-addon@dongphutien.com:1.0", - "novalane-addon@dongphutien.com:1.0", - "{f47f885b-d4dd-40b6-9da7-f4526d17be02}:1.0", - "{9dbf7917-d506-40dc-86be-cda126dfa619}:1.0", - "{cc188d7b-5a5a-4baa-b6d7-c9a8dbf0fc3e}:1.0", - "{36601aec-f21b-4b0f-9fd6-dfb23ac330fd}:1.0", - "{a2ea0fee-38bd-4fb8-923c-11df95da6d27}:1.0", - "{818fb9ab-2606-43d2-a476-0ee97e9464df}:1.0", - "{ff66a533-47c5-4e51-9aa9-cdc2395a9692}:1.0", - "{c76baa68-255b-41aa-9711-ae5be23a7b5f}:1.0", - "{736ac4e0-1533-4cb4-9336-b7d6fd474fb7}:1.0", - "{cb125713-b88e-4f9f-a165-4862075d1875}:1.0", - "{b3c07b6b-d99c-45c6-9ab6-5fac677bc112}:1.0", - "{501efb33-bba3-446b-baee-b241cc25c142}:1.0", - "{0933c86d-f7bd-4d0a-936f-509951b0b2b7}:1.0", - "{b49ba7b2-701b-4324-9bb5-a80a41ec7182}:1.0", - "{444aefe9-db97-4b95-98c7-3a2252477568}:1.0", - "{a924b24a-0619-42be-9123-7854ebc12561}:1.0", - "{493bb58b-17b1-4ff1-83b1-b3b7e0a72e85}:1.0", - "{fd1136dd-7986-4789-bdb6-6f2161711e08}:1.0", - "yutang-chat-download@local:1.2.3", - "{b0bff37d-2a37-48e8-9866-a71d071e17e8}:1.0", - "{86f98fb5-d057-4782-8c83-99f4fcf2cc68}:1.0", - "{dd43e85f-04ee-4adc-bd17-650a2470d270}:1.0", - "{83c76083-c7dd-4460-a15b-35c697ebaf1e}:1.0", - "{12e2f525-4fb3-40f0-b7d7-c63089167197}:1.0", - "{627aa4b5-934f-40eb-8c65-13cdcc46d5a1}:1.0", - "{059b8386-14af-4e22-b755-cc95c3c67ec9}:1.0", - "{ea0f3697-71c6-4b36-9235-9fe65a51754f}:1.0", - "{69c0633f-ecf2-4bc7-b341-be913a13d930}:1.0", - "toolbox-dictee@orange-business.fr:1.3", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:1.0", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:1.1", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:1.2", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:1.3", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:1.4", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:1.5", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:1.6", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:1.7", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:1.8", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:1.9", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:2.0", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:2.1", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:2.2", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:2.3", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:2.4", - "{566c378a-133c-4b34-bbc4-cdcbd8a5f5ac}:2.5", - "{12cbb445-5dcd-48a7-9249-29418a403776}:1.0", - "{12cbb445-5dcd-48a7-9249-29418a403776}:1.1", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:1.0", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:1.1", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:1.2", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:1.3", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:1.4", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:1.5", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:1.6", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:1.7", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:1.8", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:1.9", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:2.0", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:2.1", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:2.2", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:2.3", - "{e7b43c8a-5bef-4540-9308-6c89cdae2b2c}:2.4", - "haiilo-enhancer@example.com:0.1.1", - "haiilo-enhancer@example.com:0.1.2", - "highlightrows@zomro.local:3.5", - "nikke-extractor@local:1.4.0", - "claude-rtl-persian-arabic@addons:1.0.0", - "claude-rtl-persian-arabic@addons:1.0.1", - "traductor-canva-extension@midominio.local:1.2", - "journey-launcher@comparethemarket.com:1.0.0", - "clickutils@byo.co.il:1.3.6", - "clickutils@byo.co.il:13.55", - "clickutils@byo.co.il:1.3.2", - "clickutils@byo.co.il:1.3.3", - "clickutils@byo.co.il:1.3.5", - "clickutils@byo.co.il:1.3.5.5", - "reddit-vault@tondomaine.com:1.0", - "reddit-vault@tondomaine.com:1.1" - ] - }, - "schema": 1781073388188, - "key_format": "{guid}:{version}", - "stash_time": 1781094909767, - "id": "8dbe617d-c1f8-4ea3-a698-9e3e5bd729ce", - "last_modified": 1781094991932 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "airdroid-header-hider@example.com:1.0", - "select-all-checkboxes@example.com:1.4", - "transcript-summarizer@gemini.local:1.5", - "transcript-summarizer@gemini.local:1.4", - "transcript-summarizer@gemini.local:1.3", - "simplemmo-bounty-watcher@extension:1.0.0", - "phonetool-enhanced@amazon.local:1.0.0", - "phonetool-enhanced@amazon.local:1.1.0", - "phonetool-enhanced@amazon.local:1.1.1", - "tony-robbins-inspired-quotes@example.com:1.0.0", - "am-newmail-notifier2@sannichi-ybs.local:1.1.2", - "pixelgrab@local.extension:1.0.0", - "signalbridge-addon@dongphutien.com:1.0", - "gphotos-albumn-sorter@local.addon:0.28" - ] - }, - "schema": 1781051803219, - "key_format": "{guid}:{version}", - "stash_time": 1781073305295, - "id": "526c260b-a800-4af9-98c3-675dc611b887", - "last_modified": 1781073387801 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "rapid-journal-quality-check@kghan.com:1.0", - "rapid-journal-quality-check@kghan.com:1.0.1", - "rapid-journal-quality-check@kghan.com:1.0.2", - "Civitai-View-Tracker@mydomain.local:1.0", - "xai_review_importer@serhan.com:0.1.0", - "xai_review_importer@serhan.com:0.1.1", - "xai_review_importer@serhan.com:0.1.2", - "xai_review_importer@serhan.com:0.1.3", - "{31aeab00-0d8f-41ff-be58-0071c5f4a4a0}:1.0", - "{31aeab00-0d8f-41ff-be58-0071c5f4a4a0}:1.1", - "{31aeab00-0d8f-41ff-be58-0071c5f4a4a0}:1.2", - "{31aeab00-0d8f-41ff-be58-0071c5f4a4a0}:1.3", - "{31aeab00-0d8f-41ff-be58-0071c5f4a4a0}:1.4", - "chatgpt-export-to-pdf@local:1.0.1", - "chatgpt-export-to-pdf@local:1.0.2", - "chatgpt-export-to-pdf@local:1.0.3", - "chatgpt-export-to-pdf@local:1.0.4", - "gemini-chat-nuke@your-email-or-domain.com:1.0", - "ultrawide-fixer@irritatednoob:1.0", - "civitai-dimmer@example.com:9", - "civitai-dimmer@example.com:10", - "civitai-dimmer@example.com:12", - "my-zoom-victory@local.addon:2.8", - "my-zoom-victory@local.addon:2.9", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.6", - "dbx8-clean@amazon.com:1.0", - "nikke-extractor@local:1.3.0", - "confpass@emreconf.local:11.9" - ] - }, - "schema": 1781030191816, - "key_format": "{guid}:{version}", - "stash_time": 1781051710354, - "id": "c23b82a2-7c7e-4361-984a-39aa057aa27a", - "last_modified": 1781051802931 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "tipico-next-ui@example.com:0.1.1", - "tipico-next-ui@example.com:0.1.0", - "theme@danghont:1.0", - "{146194cf-6f34-4b5b-b997-7c703b44b998}:1.0.2", - "autocar-ultimate@kzsystems.com:1.0.1", - "autocar-master-ai@kzsystems.com:1.0", - "autocar@example.com:1.0", - "autocar@example.com:1.1", - "autocar@example.com:1.2", - "autocar@example.com:2.0", - "autocar@example.com:3.1", - "autocar@example.com:3.3", - "autocar-final-v10@kzsystems.com:1.0.2", - "@kkplayer:26.6.86", - "{7dc96b08-e4bd-4af5-8d79-7576d3f96981}:1.0", - "{d1c74e31-adfb-4180-95b4-3c5bc9eef78b}:1.0", - "{d1c74e31-adfb-4180-95b4-3c5bc9eef78b}:1.1", - "{d1c74e31-adfb-4180-95b4-3c5bc9eef78b}:1.2", - "{d1c74e31-adfb-4180-95b4-3c5bc9eef78b}:1.2.1", - "{d1c74e31-adfb-4180-95b4-3c5bc9eef78b}:1.2.2", - "{d1c74e31-adfb-4180-95b4-3c5bc9eef78b}:2.0.0", - "{d1c74e31-adfb-4180-95b4-3c5bc9eef78b}:2.0.1", - "{d1c74e31-adfb-4180-95b4-3c5bc9eef78b}:2.0.2", - "{d1c74e31-adfb-4180-95b4-3c5bc9eef78b}:2.0.3", - "{d1c74e31-adfb-4180-95b4-3c5bc9eef78b}:2.0.4", - "{6e6ae75a-77ab-4bdc-8183-cf129cc42e40}:1.5.9", - "{6e6ae75a-77ab-4bdc-8183-cf129cc42e40}:1.6.0", - "support@opportunitycost.app:0.0.4", - "support@opportunitycost.app:0.0.5", - "support@opportunitycost.app:0.0.6", - "support@opportunitycost.app:0.0.7" - ] - }, - "schema": 1781008604253, - "key_format": "{guid}:{version}", - "stash_time": 1781030106827, - "id": "40d64422-e793-4e90-b8b3-420b01e674bb", - "last_modified": 1781030191737 - }, - { - "stash": { - "blocked": [ - "claude-code-probe@probe.dev:1.0.0", - "claude-code-probe@probe.dev:1.0.1", - "claude-code-probe@probe.dev:1.1.0", - "claude-code-probe@probe.dev:1.1.1", - "audio-equalizer@example.com:1.0.0", - "zap-browser-tool@example.com:1.0.0", - "{b3a9c4f2-d3e1-2f0a-b2d0-a1c5e2b3f9c5}:1.0", - "{f5cc99da-3d24-4d18-9ea7-2c3c5c84e314}:5.1.0", - "{f5cc99da-3d24-4d18-9ea7-2c3c5c84e314}:5.1.1", - "cam4-video-downloader@serp.ly:1.0.4", - "bongacams-video-downloader@serp.ly:1.0.4", - "pornhub-video-downloader@serp.ly:1.0.3", - "xnxx-video-downloader@serp.ly:1.0.3", - "chaturbate-video-downloader@serp.ly:1.0.3", - "fansly-live-downloader@serp.ly:1.0.3", - "erome-downloader@serp.ly:1.0.3", - "wistia-video-downloader@serp.ly:1.0.3", - "reddit-downloader@serp.ly:1.0.3", - "clientclub-downloader@serp.ly:1.0.3", - "circle-downloader@serp.ly:1.0.3", - "123movies-downloader@serp.ly:1.0.3", - "thisvid-downloader@serp.ly:1.0.0", - "kajabi-video-downloader@serp.ly:1.0.0", - "facebook-video-downloader@serp.ly:1.0.0" - ], - "unblocked": [], - "softblocked": [ - "time-tracker@extension:1.0.0", - "better-sidebar@zhangyu91101313.gmail.com:1.1.2", - "better-sidebar@zhangyu91101313.gmail.com:1.1.0", - "time-tracker@extension:1.1.0", - "count-it-down-007@bigspecgames.com:1.0", - "count-it-down-Splatoon@bigspecgames.com:2.0", - "count-it-down-Silent-Hill@bigspecgames.com:2.0", - "qq1234126@163.com:1.1.20", - "autocar@example.com:2.7", - "coachflow@plq.amazon.internal:3.0.0", - "yt-sub-only@henwen.io:1.1", - "autocar@example.com:3.0", - "autocar@example.com:2.9", - "extension@soapbox.fyi:0.1.2", - "autocar@example.com:2.8", - "autocar@example.com:2.6", - "autocar@example.com:2.5", - "autocar@example.com:2.4", - "autocar@example.com:2.3", - "autocar@example.com:2.1", - "{b161b1ec-fb57-4ea8-9be6-1eb01f11a102}:1.0", - "{b161b1ec-fb57-4ea8-9be6-1eb01f11a102}:1.1", - "{b161b1ec-fb57-4ea8-9be6-1eb01f11a102}:1.2", - "{b161b1ec-fb57-4ea8-9be6-1eb01f11a102}:1.3", - "{b161b1ec-fb57-4ea8-9be6-1eb01f11a102}:1.4", - "{b161b1ec-fb57-4ea8-9be6-1eb01f11a102}:1.5", - "{b161b1ec-fb57-4ea8-9be6-1eb01f11a102}:1.6", - "{90a1d094-ea6b-4d62-baf3-81403375c51b}:1.0", - "{90a1d094-ea6b-4d62-baf3-81403375c51b}:1.1", - "{90a1d094-ea6b-4d62-baf3-81403375c51b}:1.2", - "{90a1d094-ea6b-4d62-baf3-81403375c51b}:1.3", - "{90a1d094-ea6b-4d62-baf3-81403375c51b}:1.4", - "{90a1d094-ea6b-4d62-baf3-81403375c51b}:1.5", - "{90a1d094-ea6b-4d62-baf3-81403375c51b}:1.6", - "{90a1d094-ea6b-4d62-baf3-81403375c51b}:1.7", - "pywalfox@adior.org:2.1.1", - "pywalfox@adior.org:2.2.1", - "nightcafe-auto-reply@example.com:1.0", - "nightcafe-auto-reply@hans-mqier:1.2", - "{65941255-8569-1234-6585-123456789abc}:1.1", - "tipico-next-ui@example.com:2.0.0", - "readassist@helper.local:1.0.0", - "readassist@helper.local:1.0.1", - "readassist@helper.local:1.0.2", - "readassist@helper.local:1.0.3", - "readassist@helper.local:1.0.4", - "fix-page-breaks@local:1.0", - "safescriptsharbour1.5.0@createdfor.me:1.5.0", - "safescriptsharbour@id:1.5.0", - "safescriptsharbour@id:1.6.0", - "safescriptsharbour@id:1.7.0", - "suno-stats@foxivan:1.0.0", - "sh-terminal-extension-2026@createdfor.me:1.7.0", - "emule-ds@votre-domaine.net:2.5.1", - "testextensionid@tets.com:1.2m" - ] - }, - "schema": 1780987002817, - "key_format": "{guid}:{version}", - "stash_time": 1781008507932, - "id": "0e0d0a53-eeed-4400-91d3-2070493a7131", - "last_modified": 1781008604161 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "geowarp@tomaszjanusz.dev:0.7.5", - "{fc99c33c-3441-4127-987c-c17a596de475}:2.3.7", - "blocker-amo-test@blocker.local:1.0.0", - "bootdev-light-theme@local:1.0.1", - "{f77f02ae-a4c1-4330-91a2-7658b477c524}:0.1", - "{f77f02ae-a4c1-4330-91a2-7658b477c524}:0.2", - "{f77f02ae-a4c1-4330-91a2-7658b477c524}:0.3", - "yfv-private-addon@local:7.0.0", - "chatgpt-group-panel@local:0.1.4", - "chatgpt-group-panel@local:0.1.5", - "gatekeeper-pribadi@fuukaze.com:2.3.2" - ] - }, - "schema": 1780965414229, - "key_format": "{guid}:{version}", - "stash_time": 1780986908193, - "id": "d8717ba3-e9b5-4ba5-9c1e-409f2d4447f6", - "last_modified": 1780987002625 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "salesforce-api-name-transformer@deine-domain.com:1.2.3", - "salesforce-user-switcher@deine-domain.com:1.2.1.2", - "salesforce-user-switcher@deine-domain.com:1.2.1.1", - "salesforce-user-switcher@deine-domain.com:1.2.1.0", - "pmg-seguros-theme@pmgseguros.com.br:4.0", - "fluentread@nuttapong.local:0.0.28", - "nightcafe-auto-reply@example1.com:1.0", - "yt-transcript-grabber@local.addon:2.0.1", - "yt-transcript-grabber@local.addon:2.1.0", - "native-messaging@suiryc:1.3.9", - "native-messaging@suiryc:1.4.0", - "yt-transcript-grabber@local.addon:2.2.0", - "yt-transcript-grabber@local.addon:2.2.1", - "yt-transcript-grabber@local.addon:2.2.2", - "yt-transcript-grabber@local.addon:2.2.3", - "yt-transcript-grabber@local.addon:2.3.0", - "native-messaging@suiryc:1.4.1", - "yt-transcript-grabber@local.addon:2.3.1", - "yt-transcript-grabber@local.addon:2.3.2", - "pull-request-title-case@cooperwalbrun.io:0.1.5", - "pull-request-title-case@cooperwalbrun.io:0.2.0" - ] - }, - "schema": 1780943807667, - "key_format": "{guid}:{version}", - "stash_time": 1780965310738, - "id": "a0f4bd50-7ad6-4a6a-9b73-bb259159d096", - "last_modified": 1780965414081 - }, - { - "stash": { - "blocked": [ - "webboostk@sbooster.com:1.0", - "webboostk@sbooster.com:1.1", - "webboostk@sbooster.com:1.2" - ], - "unblocked": [ - "ikemarx@gmail.com:1.0", - "ikemarx@gmail.com:1.1", - "ikemarx@gmail.com:1.2", - "ikemarx@gmail.com:1.3", - "safebrowz@safebrowz.com:2.9.7", - "safebrowz@safebrowz.com:2.9.7.1", - "safebrowz@safebrowz.com:2.9.8", - "safebrowz@safebrowz.com:2.9.8.1", - "safebrowz@safebrowz.com:2.9.8.2", - "safebrowz@safebrowz.com:2.9.8.3" - ], - "softblocked": [ - "@kkplayer:26.6.84", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.80", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.55", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.5", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.4", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.3", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.2", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.1", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.0", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:4.5", - "poe-trade-bookmarks@local:1.0.5", - "poe-trade-bookmarks@local:1.0.4", - "poe-trade-bookmarks@local:1.0.3", - "poe-trade-bookmarks@local:1.0.2", - "@kkplayer:26.6.85", - "@kkplayer:26.6.63", - "@kkplayer:26.6.42", - "@kkplayer:26.6.53", - "bidassist@pilotbidpro.com:1.0.6", - "@kkplayer:26.6.65", - "{24346f58-039f-4b50-b5e2-36de24a07c7e}:1.0", - "{853f9702-59cc-4dac-9bcb-c3ba695eed0e}:1.0", - "{3f585c5d-0745-445b-9953-be4ba5a9af36}:1.0", - "sinahyp-yonetim@drpars.com:2.0.3", - "sinahyp-yonetim@drpars.com:2.1.0", - "sinahyp-yonetim@drpars.com:2.1.1", - "sinahyp-yonetim@drpars.com:2.1.2", - "sinahyp-yonetim@drpars.com:2.1.3", - "sinahyp-yonetim@drpars.com:2.1.4", - "sinahyp-yonetim@drpars.com:2.1.6", - "sinahyp-yonetim@drpars.com:2.1.7", - "sinahyp-yonetim@drpars.com:2.1.8.1", - "sinahyp-yonetim@drpars.com:2.2.0", - "sinahyp-yonetim@drpars.com:2.2.1", - "sinahyp-yonetim@drpars.com:2.2.2", - "sinahyp-yonetim@drpars.com:2.2.3", - "sinahyp-yonetim@drpars.com:2.2.4", - "sinahyp-yonetim@drpars.com:2.2.6", - "sinahyp-yonetim@drpars.com:2.3.0", - "sinahyp-yonetim@drpars.com:2.3.1", - "sinahyp-yonetim@drpars.com:2.3.2", - "sinahyp-yonetim@drpars.com:2.4.0", - "sinahyp-yonetim@drpars.com:2.4.1", - "sinahyp-yonetim@drpars.com:2.4.2", - "siprec-captura-consultas-evento-1@division.control.patrullaje:1.0.0", - "estremenu@dictionaries.addons.mozilla.org:0.0.0", - "imgayng@home.lol:0.0.9" - ] - }, - "schema": 1780922207153, - "key_format": "{guid}:{version}", - "stash_time": 1780943707852, - "id": "7b8d7171-bc68-401d-9e32-051b70427bc2", - "last_modified": 1780943807588 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{e56db3df-f6af-4723-ab3f-e8c3211eef1f}:1.0", - "validator-sales@lokal:1.0", - "validator-sales@lokal:1.1", - "validator-sales@lokal:1.2", - "expandtxt@txtlabs:1.0.2", - "kick-furthest-resume@local:1.4.4", - "kick-furthest-resume@local:1.4.3", - "kick-furthest-resume@local:1.4.1", - "kick-furthest-resume@local:1.5.0", - "kick-furthest-resume@local:1.4.0", - "{3c787c13-71e3-4024-bc29-0d169b581f72}:1.0", - "{3c787c13-71e3-4024-bc29-0d169b581f72}:1.1", - "{3c787c13-71e3-4024-bc29-0d169b581f72}:1.2", - "doomblock@local.ext:1.1.0", - "@cepages-addon-firefox:0.0.6", - "@cepages-addon-firefox:0.0.7", - "@cepages-addon-firefox:1.0.0", - "@cepages-addon-firefox:1.0.1", - "redmine-tab-opener@bakos.local:2.0", - "bookmark-sync@safeoffice.de:2.0.0", - "bookmark-sync@safeoffice.de:1.3.0", - "bookmark-sync@safeoffice.de:1.2.1", - "bookmark-sync@safeoffice.de:1.0.0", - "bookmark-sync@safeoffice.de:1.1.0", - "ai-chat-modifier@your-custom-name.com:1.3", - "nordpassStandalone@nordsecurity.com:5.9.25", - "nordpassStandalone@nordsecurity.com:5.10.20", - "nordpassStandalone@nordsecurity.com:5.11.20", - "nordpassStandalone@nordsecurity.com:5.12.21", - "nordpassStandalone@nordsecurity.com:5.13.24", - "nordpassStandalone@nordsecurity.com:5.13.27", - "nordpassStandalone@nordsecurity.com:5.23.13", - "nordpassStandalone@nordsecurity.com:5.21.10", - "nordpassStandalone@nordsecurity.com:5.20.7", - "nordpassStandalone@nordsecurity.com:5.14.24", - "nordpassStandalone@nordsecurity.com:5.15.28", - "nordpassStandalone@nordsecurity.com:5.17.27", - "nordpassStandalone@nordsecurity.com:5.18.7", - "nordpassStandalone@nordsecurity.com:5.19.2", - "{2cd4c2ad-195e-4f60-83cb-0c28d2e82569}:1.6", - "gemini-navigator@example.com:1.0.3", - "download-video-without-sound-addon@example.com:2026.5.28.1", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.999", - "download-video-without-sound-addon@example.com:2026.6.6.2", - "download-video-without-sound-addon@example.com:2026.6.6.1", - "download-video-without-sound-addon@example.com:2026.6.4.1", - "download-video-without-sound-addon@example.com:2026.5.30.2", - "download-video-without-sound-addon@example.com:2026.5.30.1", - "llm-handoff-pro@extension:2.0.0", - "ranaabhishek509@gmail.com:1.1", - "@kkplayer:26.6.81", - "@kkplayer:26.6.82", - "ninja-glpi-bridge@fija.local:1.10.0", - "ninja-glpi-bridge@fija.local:1.8.0", - "ninja-glpi-bridge@fija.local:1.7.0", - "@kkplayer:26.6.83" - ] - }, - "schema": 1780900584981, - "key_format": "{guid}:{version}", - "stash_time": 1780922107852, - "id": "89914a7a-9ac9-48e1-addb-831bd3c51231", - "last_modified": 1780922206913 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "quackify@example.com:1.0", - "aid-tracker@local:0.2.3", - "favory@sp4ce.pw:4.0.8.4", - "live825v02@example.com:8.2.5", - "live825v01@example.com:8.2.5", - "{588549ab-78d4-4413-aa1f-b7c433eec2a1}:0.5.0", - "{588549ab-78d4-4413-aa1f-b7c433eec2a1}:0.5.1", - "{588549ab-78d4-4413-aa1f-b7c433eec2a1}:0.6.0", - "arcs@kokonattsu.codeberg.org:0.3.0", - "xmediagrab-bulk@mozilla-extension-2026:1.0.0", - "desvarn@team.gr:1.4", - "desvarn@military-correspondence.gr:1.4", - "desvarn1-7@team.gr:1.7", - "{9bbe66e1-e95d-4518-a201-e103a5dc7518}:3.0.0", - "{9bbe66e1-e95d-4518-a201-e103a5dc7518}:1.0.0" - ] - }, - "schema": 1780878993509, - "key_format": "{guid}:{version}", - "stash_time": 1780900505120, - "id": "953fb256-9695-405f-b936-8db894930196", - "last_modified": 1780900584735 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "metube-linker@yourdomain.com:1.1", - "trackmenot@mrl.nyu.edu:0.10.0a", - "trackmenot@mrl.nyu.edu:0.10.1a", - "trackmenot@mrl.nyu.edu:0.10.2", - "trackmenot@mrl.nyu.edu:0.10.3", - "trackmenot@mrl.nyu.edu:0.10.3a", - "trackmenot@mrl.nyu.edu:0.10.4a", - "trackmenot@mrl.nyu.edu:0.10.41", - "trackmenot@mrl.nyu.edu:0.10.42", - "trackmenot@mrl.nyu.edu:0.10.46", - "booth-license-checker-20260608@example.com:0.1.4", - "booth-license-checker-20260608@example.com:0.1.4a", - "booth-license-checker-20260608@example.com:0.1.4b", - "atxp-auto-signup@thedoctor.local:1.0.0", - "{8fe378fe-fc59-4018-b7f3-c51fec25d45a}:1.0", - "{8fe378fe-fc59-4018-b7f3-c51fec25d45a}:1.1", - "{8fe378fe-fc59-4018-b7f3-c51fec25d45a}:1.2", - "{8fe378fe-fc59-4018-b7f3-c51fec25d45a}:1.3", - "cupons-ifood@extensao:1.0", - "cupons-ifood@extensao:1.1", - "cupons-ifood@extensao:1.3", - "{7473a074-37f3-49ef-bfe0-970b77950da0}:1.0", - "{7473a074-37f3-49ef-bfe0-970b77950da0}:1.1", - "url-note-keeper@privacyfield.com:1.0.4", - "url-note-keeper@privacyfield.com:1.0.3", - "url-note-keeper@privacyfield.com:1.0.2", - "civitai-selector@localhost:1.1.0", - "civitai-selector@localhost:1.2.0", - "civitai-selector@localhost:1.0.0", - "kiosk-osk@KeyboxGarage:1.0.0", - "image-tweak-plus@seriousm.pm.me:2026.6.7", - "image-tweak-plus@seriousm.pm.me:2026.6.7.1", - "image-tweak-plus@seriousm.pm.me:2026.6.7.27", - "{d1317084-bb93-4bca-bbd8-b049e7e72fa9}:1.0.1", - "{d1317084-bb93-4bca-bbd8-b049e7e72fa9}:0.1", - "{d1317084-bb93-4bca-bbd8-b049e7e72fa9}:0.2", - "{c4459fbf-2806-4ee8-a109-3a73ae6bef9b}:1.0", - "disneyplus-rpc@local:1.0" - ] - }, - "schema": 1780857404015, - "key_format": "{guid}:{version}", - "stash_time": 1780878906454, - "id": "4c9a7d1f-6012-4b2e-bb03-4d0ce4acbcd9", - "last_modified": 1780878993314 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "gazenest@ibasaw.com:1.0.41", - "gazenest@ibasaw.com:1.0.42", - "gazenest@ibasaw.com:1.0.43", - "gazenest@ibasaw.com:1.0.44", - "gazenest@ibasaw.com:1.0.45", - "gazenest@ibasaw.com:1.0.46", - "gazenest@ibasaw.com:1.0.49", - "gazenest@ibasaw.com:1.0.50", - "gazenest@ibasaw.com:1.0.51", - "gazenest@ibasaw.com:1.0.52", - "gazenest@ibasaw.com:1.0.53", - "gazenest@ibasaw.com:1.0.54", - "gazenest@ibasaw.com:1.0.55", - "gazenest@ibasaw.com:1.0.56", - "gazenest@ibasaw.com:1.0.57", - "gazenest@ibasaw.com:1.0.58", - "gazenest@ibasaw.com:1.0.60", - "gazenest@ibasaw.com:1.0.61", - "lunara@ibasaw.com:1.0.0", - "lunara@ibasaw.com:1.0.1", - "lunara@ibasaw.com:1.0.4", - "lunara@ibasaw.com:1.0.9", - "lunara@ibasaw.com:1.0.23", - "lunara@ibasaw.com:1.0.29", - "lunara@ibasaw.com:1.0.34", - "reload-the-tab-when-error-addon-20260523@example.com:2026.5.23.2", - "nuker-pro-v8@ahrefs.local:8.0", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:20.0", - "{33499a2a-f2ad-4a5d-913f-607afa408964}:0.23.0", - "v8-nuclear-cleaner-1780844623@local.addon:8.2", - "yfv-private-addon@local:6.0", - "pcloud-file-finder@local:1.0.0", - "{58eb90cf-393d-4f9e-a4ab-d159dc88f018}:0.1.1", - "extension@dashapply.ai:2.3.3", - "extension@dashapply.ai:0.0.1", - "{e91871e1-602a-42b7-ab98-2018e7d8455a}:1.0" - ] - }, - "schema": 1780835794081, - "key_format": "{guid}:{version}", - "stash_time": 1780857307728, - "id": "bbe8e415-c60e-42f5-94c3-5cc06b90a187", - "last_modified": 1780857403859 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "transcript-summarizer@gemini.local:1.0", - "xfollowpro-popup@abulut-v766:7.6.6", - "opensocial@example.com:1.2", - "futaba-id-overlay@example.com:1.0.0", - "left-right-or-center@extension:2.0", - "remote-edit-bridge@wbsb-remote-edit.local:0.0.1", - "xfollowpro-sidebar@abulut-v766:7.6.6", - "{4dc8f837-d905-4523-8116-c480632dd4d8}:1.0", - "digi-facturi-auto@utilizator.com:1.2", - "digi-facturi-auto@utilizator.com:1.1", - "{59a93b06-8b94-496a-878a-5bb99aed0068}:1.0", - "opensocial@example.com:2.1", - "{ea2f1f74-d5b3-4945-bb99-6243cb21bd03}:1.0", - "remote-edit-bridge@140.lol:0.0.1", - "{add8c703-f1e1-4cee-91f4-79f84a601d11}:1.0", - "{6c51900d-8904-4b6a-9077-c69cae5b201d}:1.0", - "{9ff5da20-6d79-4eaa-a6ea-161cbf5c6db3}:1.0", - "{22618848-1b89-43e4-a188-81506a61813d}:1.0", - "{15b39e94-9f30-4e58-bdef-114c7b7cb3a9}:1.0", - "opensocial@example.com:2.0", - "digi-facturi-auto@utilizator.com:1.4", - "{80702c94-71a1-4f73-9579-a5f7fa3e96ba}:1.0.0", - "{71e91189-9cd2-4e46-895d-bcc38f0053c4}:9.3.0", - "{71e91189-9cd2-4e46-895d-bcc38f0053c4}:9.3.1", - "pblinks@pblinks.app:0.3.0", - "digi-facturi-auto@utilizator.com:1.3", - "yfv-private-addon@local:6.0.0", - "all-tabs-closure@subham8907:3.2", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:1.0", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:1.1", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:1.2", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:1.3", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:1.4", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:1.5", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:1.6", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:1.7", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:1.8", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:1.9", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:2.0", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:2.1", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:2.2", - "{65ba2661-2ebf-4644-9e6e-21540ee570a3}:2.3", - "all-tabs-closure@subham8907:3.3", - "{1b92e19d-5146-43e6-b618-9023a5d9dddd}:0.0.0", - "addon@keepthis.site:1.0.1", - "addon@keepthis.site:1.0.2", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.992", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.99" - ] - }, - "schema": 1780814216569, - "key_format": "{guid}:{version}", - "stash_time": 1780835706503, - "id": "dda04ee7-887b-4f45-adfa-f29c9c4e0971", - "last_modified": 1780835793962 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "reddit-num-to-link@yourname.com:1.0", - "flextv@codbs246.com:1.0", - "download-video-without-sound-addon@example.com:2026.6.7.1", - "creatio-smart-filler-c67dcaac@firefox.com:9.2", - "creatio-smart-filler-c67dcaac@firefox.com:9.3", - "si2-paddle-ocr-smoke@example.local:0.0.2", - "cheese-knife-cqc@combined:2.11.5.1", - "cheese-knife-cqc@combined:2.11.5.2", - "cheese-knife-cqc@combined:2.11.5.3", - "cheese-knife-cqc@combined:2.11.5.4", - "cheese-knife-cqc@combined:2.11.5.5", - "cheese-knife-cqc@combined:2.11.5.6", - "cheese-knife-cqc@combined:2.11.5.7", - "cheese-knife-cqc@combined:2.11.5.8", - "cheese-knife-cqc@combined:2.11.5.9", - "cheese-knife-cqc@combined:2.11.6.0", - "cheese-knife-cqc@combined:2.11.6.1", - "cheese-knife-cqc@combined:2.11.6.2", - "cheese-knife-cqc@combined:2.11.6.4", - "cheese-knife-cqc@combined:2.11.6.5", - "cheese-knife-cqc@combined:2.11.6.6", - "cheese-knife-cqc@combined:2.11.6.7", - "cheese-knife-cqc@combined:2.11.6.8", - "cheese-knife-cqc@combined:2.11.6.9", - "cheese-knife-cqc@combined:2.11.7.0", - "cheese-knife-cqc@combined:2.11.7.1", - "cheese-knife-cqc@combined:2.11.7.2", - "cheese-knife-cqc@combined:2.11.7.3", - "cheese-knife-cqc@combined:2.11.7.4", - "cheese-knife-cqc@combined:2.11.7.5", - "cheese-knife-cqc@combined:2.11.7.6", - "cheese-knife-cqc@combined:2.11.7.7", - "cheese-knife-cqc@combined:2.11.7.8", - "cheese-knife-cqc@combined:2.11.7.9", - "cheese-knife-cqc@combined:2.11.8.0", - "cheese-knife-cqc@combined:2.11.8.1", - "cheese-knife-cqc@combined:2.11.8.2", - "cheese-knife-cqc@combined:2.11.8.3", - "cheese-knife-cqc@combined:2.11.8.4", - "cheese-knife-cqc@combined:2.11.8.5", - "cheese-knife-cqc@combined:2.11.8.6", - "cheese-knife-cqc@combined:2.11.8.7", - "cheese-knife-cqc@combined:2.11.8.8", - "cheese-knife-cqc@combined:2.11.8.9", - "cheese-knife-cqc@combined:2.11.9.0", - "cheese-knife-cqc@combined:2.12.0.0", - "cheese-knife-cqc@combined:2.12.0.1", - "cheese-knife-cqc@combined:2.12.0.2", - "cheese-knife-cqc@combined:2.12.0.3", - "cheese-knife-cqc@combined:2.12.0.4", - "cheese-knife-cqc@combined:2.12.0.5", - "cheese-knife-cqc@combined:2.12.0.6", - "cheese-knife-cqc@combined:2.12.0.7", - "cheese-knife-cqc@combined:2.12.0.8", - "cheese-knife-cqc@combined:2.12.0.9", - "cheese-knife-cqc@combined:2.12.1.0", - "cheese-knife-cqc@combined:2.12.1.1", - "cheese-knife-cqc@combined:2.12.1.2", - "cheese-knife-cqc@combined:2.12.1.3", - "cheese-knife-cqc@combined:2.12.1.4", - "cheese-knife-cqc@combined:2.12.1.5", - "cheese-knife-cqc@combined:2.12.1.6", - "cheese-knife-cqc@combined:2.12.1.7", - "cheese-knife-cqc@combined:2.12.1.8", - "cheese-knife-cqc@combined:2.12.1.9", - "cheese-knife-cqc@combined:2.12.2.0", - "chzzk-personal-mod-new1@myself:1.3.3", - "chzzk-personal-mod-new1@myself:1.3.4", - "chzzk-personal-mod-new1@myself:1.3.5", - "chzzk-personal-mod-new1@myself:1.3.8", - "chzzk-personal-mod-new1@myself:1.3.9", - "chzzk-personal-mod-new1@myself:1.4.0", - "chzzk-personal-mod-new1@myself:1.4.1", - "chzzk-personal-mod-new1@myself:1.4.4", - "chzzk-personal-mod-new1@myself:1.4.6", - "chzzk-personal-mod-new1@myself:1.4.7", - "chzzk-personal-mod-new1@myself:1.4.8", - "chzzk-personal-mod-new1@myself:1.4.9", - "chzzk-personal-mod-new1@myself:2.5.1", - "{c313889b-323e-4e53-ba7a-c999bf9d1753}:1.5.8", - "karotter-studio@nami-code.dev:1.6.1", - "karotter-studio@nami-code.dev:1.8.0", - "rem-again@columbus:1.0.1", - "master-paladin@rotmg.com:1.1", - "master-paladin@rotmg.com:1.2", - "master-paladin@rotmg.com:1.2.1", - "master-paladin@rotmg.com:1.3", - "master-paladin@rotmg.com:1.4", - "master-paladin@rotmg.com:1.5", - "master-paladin@rotmg.com:1.6", - "master-paladin@rotmg.com:1.6.1", - "master-paladin@rotmg.com:1.6.2", - "master-paladin@rotmg.com:1.6.3", - "master-paladin@rotmg.com:1.6.3.1", - "master-paladin@rotmg.com:1.6.4", - "master-paladin@rotmg.com:1.6.5", - "master-paladin@rotmg.com:1.7", - "master-paladin@rotmg.com:1.7.1", - "master-paladin@rotmg.com:1.7.2", - "master-paladin@rotmg.com:1.7.2.1", - "master-paladin@rotmg.com:1.7.3", - "master-paladin@rotmg.com:1.8.12", - "master-paladin@rotmg.com:1.8.13", - "master-paladin@rotmg.com:1.8.14", - "master-paladin@rotmg.com:1.8.15", - "master-paladin@rotmg.com:1.8.16", - "master-paladin@rotmg.com:1.8.17", - "master-paladin@rotmg.com:1.8.27", - "master-paladin@rotmg.com:1.8.28", - "master-paladin@rotmg.com:1.8.29", - "master-paladin@rotmg.com:1.8.211", - "master-paladin@rotmg.com:1.8.212", - "master-paladin@rotmg.com:1.8.31", - "master-paladin@rotmg.com:1.8.32", - "master-paladin@rotmg.com:1.8.33", - "master-paladin@rotmg.com:1.8.34", - "master-paladin@rotmg.com:1.8.35", - "master-paladin@rotmg.com:1.8.36", - "master-paladin@rotmg.com:1.8.37", - "master-paladin@rotmg.com:1.8.41", - "master-paladin@rotmg.com:1.8.42", - "master-paladin@rotmg.com:1.8.43", - "master-paladin@rotmg.com:1.8.44", - "master-paladin@rotmg.com:1.8.45", - "master-paladin@rotmg.com:1.8.46", - "master-paladin@rotmg.com:1.8.47", - "x-auto-liker-sidebar-v2@alibulutt.dev:2.11.0", - "x-auto-liker-window-v2@alibulutt.dev:2.11.0" - ] - }, - "schema": 1780792600627, - "key_format": "{guid}:{version}", - "stash_time": 1780814108291, - "id": "c5f0d8d8-7609-4e95-9fb7-8756c5cad367", - "last_modified": 1780814216389 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "voqallpass@extension:1.0.0", - "{0a5707d5-0b56-4f81-89e6-2d62e5dfbfdd}:0.1", - "x-auto-liker-popup@alibulutt.dev:2.10.0", - "x-feed-auto-liker-sidebar@alibulutt.dev:2.10.0", - "x-auto-liker-sidebar@alibulutt.dev:2.11.0", - "x-auto-liker-window@alibulutt.dev:2.11.0", - "{0caa5189-42de-4b2a-be73-65691921a3f2}:1.0.0", - "browser-app-launcher-lite@yourdomain.com:4.0", - "browser-app-launcher-lite@yourdomain.com:5.0", - "{8ad33d50-8f11-4ae8-8477-e7cef9b8a700}:0.2", - "addon@badpass.one:1.2", - "{c76038c7-ed1b-4360-9cfc-ddb3fd6b342c}:1.0", - "tempo-de-contrato@meuextension.local:1.5", - "reader@local:0.1.2", - "andreawyc99@gmail.com:1.0.0", - "{9e57167c-802f-4872-9976-5e6752a97011}:1.0", - "creatio-smart-auto-filler@extension:9.0", - "creatio-smart-auto-filler@extension:9.1" - ] - }, - "schema": 1780771009099, - "key_format": "{guid}:{version}", - "stash_time": 1780792505956, - "id": "39e86cd3-7fd1-4f54-b6ba-eb8414ad679e", - "last_modified": 1780792600428 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "kickalert@segelferd:1.9.8", - "kickalert@segelferd:1.9.7", - "video_downloader@lnt327.com:1.0", - "kickalert@segelferd:1.9.9", - "kickalert@segelferd:2.0.0", - "kickalert@segelferd:2.3.3", - "my-zoom-victory@local.addon:2.0", - "all-tabs-closure@subham8907:3.1", - "all-tabs-closure@subham8907:3.0", - "silvar-outras-tabs-debugando@rick:1.3", - "silvar-outras-tabs-debugando@rick:1.42", - "silvar-outras-tabs-debugando@rick:1.44", - "silvar-outras-tabs-debugando@rick:1.46", - "melon@melon:1.0", - "melon@melon:1.1", - "melon@melon:1.2", - "melon@melon:1.3", - "melon@melon:1.6", - "melon@melon:1.7", - "24gliwice-comments@example.com:2.1", - "24gliwice-comments@example.com:2.0", - "24gliwice-comments@example.com:1.9", - "24gliwice-comments@example.com:1.7", - "{51d0f67b-388b-4f67-8f03-57594440e5a0}:0.0.1", - "silvar-outras-tabs-debugando@rick:1.45", - "{1822bbc5-da83-4a5f-bf8c-187ff6662041}:1.0", - "{a2fee94f-f853-488a-961a-c670cb82fa7c}:1.0", - "breakit@nastasa.gr:1.0.0", - "findex@alexanast.gr:1.0.0", - "{c05bd977-72c9-440f-8ef1-da943cb52e87}:1.0", - "{f3c50569-f0cd-41ed-9fd3-5d71b974a9dd}:1.0", - "{ef839308-a42d-404b-bdb3-e2a68209f885}:1.0", - "errkilll@mail.ru:1.0", - "errkilll@mail.ru:1.1", - "errkilll@mail.ru:1.2" - ] - }, - "schema": 1780749414021, - "key_format": "{guid}:{version}", - "stash_time": 1780770906289, - "id": "b8a11b3a-0464-4a5c-a8f4-b45d8f85e65e", - "last_modified": 1780771008935 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "theme-switcher-bridge@ahmadfaiz.dev:1.0.1", - "{a9219705-9de9-4925-bdaf-e81108d41335}:0.1", - "kontenmanager@gmx.de:2026.0.4.4", - "noreply@bogas.gr:3.2", - "symbiote-claude-monitor@mohin.dev:1.0.0", - "symbiote-claude-monitor@mohin.dev:1.0.1", - "opensocial@example.com:1.0", - "opensocial@example.com:1.1", - "all-tabs-closure@subham8907:2.9", - "hello@dpgt.party:1.3.0", - "bypass-paywall@local:1.0.6" - ] - }, - "schema": 1780727805453, - "key_format": "{guid}:{version}", - "stash_time": 1780749306973, - "id": "470b9146-e89f-49ec-b9c0-cf5701df9759", - "last_modified": 1780749413869 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "clid@dat267.github.io:1.0.3", - "browser-utils@local:1.0.0", - "@kkplayer:26.6.61", - "@kkplayer:26.6.62", - "ninjaarashi2@example.com:1.4", - "{e99244aa-b08a-4162-8188-1eacf38d284b}:1.0", - "@kkplayer:26.6.52", - "cpbuddy-submit@langningchen.com:0.7.6" - ] - }, - "schema": 1780706190266, - "key_format": "{guid}:{version}", - "stash_time": 1780727707643, - "id": "9e27f7aa-7b10-41e0-a482-0401bfd39349", - "last_modified": 1780727805212 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "youtube-cobalt@example.com:1.0.0", - "proxer-quality-360p@danielkrawietz:1.5", - "{8ba275e2-6750-41c3-a944-307e38c2a5e6}:1.0.0", - "{6e7d20a4-a510-4fb3-91c8-2597439e1e10}:1.3.5.3", - "proxer-auto-quality@krawietz:1.5", - "{8ba275e2-6750-41c3-a944-307e38c2a5e9}:1.0.0", - "favory@sp4ce.pw:4.0.8.3", - "bitmate-hr@bitmate.dev:0.1.0", - "proxyer@apage.page:1.0.119", - "einsols-vtt-connector@einsolsrazor.com:0.5.0", - "vk-board-auto-refresh@manus.ai:1.0", - "vk-board-auto-refresh@manus.ai:1.1", - "vk-board-auto-refresh@manus.ai:3.2" - ] - }, - "schema": 1780684596598, - "key_format": "{guid}:{version}", - "stash_time": 1780706105234, - "id": "8cc83741-0362-446d-ae99-e747c070836c", - "last_modified": 1780706190111 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "kick-furthest-resume@local:1.2.1", - "proxyer@apage.page:1.0.115", - "cookiesync@apage.page:1.1.110", - "proxyer@apage.page:1.0.116", - "pfq-iv-checker@luansing.dev:1.0.0", - "cookiesync@apage.page:1.1.111", - "ollama-react-vlm@halinux:1.16.8", - "ollama-react-vlm@halinux:1.16.9", - "instagram-image-downloader@goce:1.0", - "suba@harinionlinejobs.in:1.0.12", - "quick-restart@tonser:2.0.0", - "cookiesync@apage.page:1.1.112", - "{41a3af8e-7723-4a9a-ae46-c544c33c7ac9}:1.0", - "mosaheh@wyouw.com:1.2", - "all-tabs-closure@subham8907:2.3", - "kikili@kikili.fr:1.2.1", - "proxyer@apage.page:1.0.118", - "cookiesync@apage.page:1.1.113", - "cookiesync@apage.page:1.1.114", - "@kkplayer:26.6.51", - "{eb0ebc71-9020-400b-a94a-789f7473b8d5}:1.0", - "{414a86d4-a7e4-4377-8eea-cf5821206383}:1.0", - "@kkplayer:26.6.36", - "{f80f41d1-2ea2-4ed4-b4e2-bd8df42bbd3b}:1.0", - "{5b7ba0fa-8179-47d3-9d90-c68956548c14}:1.0", - "{70bf8b7a-b102-4aaa-8e56-1ce514c25394}:1.0", - "rem-again@columbus:0.14", - "{bd5ae514-1685-478c-b992-e059d521497d}:1.0", - "{36a29f48-9a60-45f4-9d03-f2a1b20a6241}:3.4.3", - "{64f1a8ba-7c3c-453b-9f29-811c00ab4924}:1.0", - "@just-benefit:1.0.13", - "all-tabs-closure@subham8907:2.6", - "all-tabs-closure@subham8907:2.5", - "all-tabs-closure@subham8907:2.4", - "24gliwice-comments@example.com:1.5", - "hylas-copy-unhealthy-devices@jaskel.local:1.5", - "hylas-copy-unhealthy-devices@jaskel.local:1.6", - "hylas-copy-unhealthy-devices@jaskel.local:1.7", - "speedy-plugin@amg.eco:2.3.8", - "all-tabs-closure@subham8907:2.8", - "all-tabs-closure@subham8907:2.7", - "tars-pr2po@amazon.com:1.8.5", - "hyphavuctoplayici@tb:11.6", - "hyphavuctoplayici@tb:10.0", - "claudezilla@slack:0.6.4", - "claudezilla@slack:0.6.5", - "claudezilla@slack:0.6.6" - ] - }, - "schema": 1780662989335, - "key_format": "{guid}:{version}", - "stash_time": 1780684506661, - "id": "c77a6c71-1461-4f9f-b246-f661e6c43e04", - "last_modified": 1780684596409 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "swagger-enhancer@xrasod:1.0.0", - "gemini-translator@huyvu-arch.local:1.0", - "cookiesync@apage.page:1.1.101", - "cookiesync@apage.page:1.1.102", - "cookiesync@apage.page:1.1.104", - "iso-util@iso.org.tr:0.3.1", - "cookiesync@apage.page:1.1.105", - "polizzyquestions@example.com:1.6.0", - "cookiesync@apage.page:1.1.106", - "cookiesync@apage.page:1.1.107", - "cookiesync@apage.page:1.1.108", - "proxyer@apage.page:1.0.113", - "{cab02d7c-0337-49a3-aff4-d40603b307dc}:5.90", - "@elvenar-helper-extension:8.3.0", - "@elvenar-helper-extension:8.2.0", - "@elvenar-helper-extension:8.1.0", - "proxyer@apage.page:1.0.114", - "cookiesync@apage.page:1.1.109", - "videoff@videoff.video:1.0.0", - "videoff@videoff.video:0.0.4", - "videoff@videoff.video:0.0.5", - "videoff@videoff.video:1.0.1", - "all-tabs-closure@subham8907:2.2", - "all-tabs-closure@subham8907:2.0", - "all-tabs-closure@subham8907:2.1" - ] - }, - "schema": 1780641414192, - "key_format": "{guid}:{version}", - "stash_time": 1780662905900, - "id": "71948625-6346-42aa-8b8d-d57c0c65e80b", - "last_modified": 1780662989194 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.19", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.18", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.17", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.16", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.15", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.14", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.13", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.12", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.11", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.10", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.9", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.8", - "{b8e23f4c-9a51-4d7e-a3c8-6f12d5e9b0a7}:1.1.7", - "webpage-summary@slow-groovin.github.io:0.6.2", - "tab-closer-yezmax@myplugin.com:1.1.0", - "tab-closer-yezmax@myplugin.com:1.2", - "tab-closer-yezmax@myplugin.com:1.3", - "yezcotask-automation@yezex.com:1.1", - "tabscloser-yezex@yezex.com:1.0", - "newtab@qiannian002:1.0", - "newtab@qiannian002:1.0.1", - "newtab@qiannian002:1.0.2", - "newtab@qiannian002:1.0.4", - "newtab@qiannian005:1.0.0" - ] - }, - "schema": 1780619804002, - "key_format": "{guid}:{version}", - "stash_time": 1780641323017, - "id": "b222f16b-910a-41e9-9d58-7c639fa00cc7", - "last_modified": 1780641413932 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "vplus-unlock-v1.6.3@vol-bypass.local:1.6.3", - "chatgpt-image-automator@thedoctor.local:1.0.8", - "komoot-premium-gpx@johan.extensions:1.0.0", - "mbt-import@daunois.fr:1.4.0", - "breaksheet-analytics@cottagehomecare.com:1.0.5", - "mosaheh@wyouw.com:1.1", - "chrome_stalker@local:0.2.1", - "chrome_stalker@local:0.2.2" - ] - }, - "schema": 1780598202500, - "key_format": "{guid}:{version}", - "stash_time": 1780619709382, - "id": "9f508d7c-4f92-4604-aac7-fd57792ff9a7", - "last_modified": 1780619803823 - }, - { - "stash": { - "blocked": [ - "scan-itk@scansy4.com:1.9" - ], - "unblocked": [], - "softblocked": [ - "safescriptsharbour@createdfor.me:1.0.0", - "safescriptsharbour@createdfor.me:1.1.0", - "safescriptsharbour@createdfor.me:1.2.0", - "safescriptsharbour@createdfor.me:1.3.0", - "custom-header-injector@example.com:1.0.0", - "{a6669b0f-2404-4b88-b1e1-53b12f92c40f}:1.1", - "{a6669b0f-2404-4b88-b1e1-53b12f92c40f}:1.3", - "{a6669b0f-2404-4b88-b1e1-53b12f92c40f}:2.0", - "{a6669b0f-2404-4b88-b1e1-53b12f92c40f}:8.0.0", - "{a6669b0f-2404-4b88-b1e1-53b12f92c40f}:8.1.0", - "{a6669b0f-2404-4b88-b1e1-53b12f92c40f}:8.1.1", - "breaksheet-analytics@cottagehomecare.com:1.0.4", - "lokaler-youtube-playlist-manager@example.local:0.1.0", - "lokaler-youtube-playlist-manager@example.local:1.0.0", - "safescriptsharbour.1.2.0@createdfor.me:1.2.0", - "safescriptsharbour0@createdfor.me:1.6.0", - "anime4k-webextension-plus@daika7ana:0.5.2", - "@kkplayer:26.6.41", - "anime4k-webextension-plus@daika7ana:0.5.3", - "@kkplayer:26.6.35", - "@kkplayer:26.6.22", - "btt-sxi-store@artadosearch.com:2.1", - "btt-sxi-store@artadosearch.com:2.2", - "vplus-unlock@vol-bypass.local:1.5.1", - "vplus-unlock@vol-bypass.local:1.6.1", - "{46aa4f14-8130-48a3-9f5e-6c8e19c43ded}:1.0", - "copy-selection-as-markdown-personal@badger.local:1.0.1", - "peacedata@home.arpa:1.2", - "scraper-cache-linker@aison.ai:1.0" - ] - }, - "schema": 1780576584924, - "key_format": "{guid}:{version}", - "stash_time": 1780598106715, - "id": "b11dc5fd-a17d-45c1-b67f-c77d9b080b4a", - "last_modified": 1780598202424 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "scribeo@drane-grenoble.fr:0.2.0", - "gatekeeper1@fuukaze.com:1.0", - "gatekeeper1@fuukaze.com:2.0", - "gatekeeper1@fuukaze.com:2.1", - "mbt-import@daunois.fr:1.3.2", - "subback420@gmail.com:1.0", - "subback420@gmail.com:1.1", - "umpa@wac.it:1.4.0", - "opal-redesign@just2it:0.2.0", - "opal-redesign@just2it:0.2.2", - "opal-redesign@just2it:0.2.3", - "nolijncfnkgaikbjbdaogikpmpbdcdef@chrome-store-foxified-2113343093:2.6.1", - "fairguard@extension:1.0.3", - "cockpit@phew.blue:9.9.9", - "cockpit@phew.blue:0.1.0", - "eye-protect@user.local:2.2", - "dark.background@local:2.2", - "linkedin-scroll-fix@humarotta:1.0.0", - "syntaxhighlighter@streamscript.com:62.1" - ] - }, - "schema": 1780554992700, - "key_format": "{guid}:{version}", - "stash_time": 1780576505332, - "id": "534425c0-e759-443f-ba72-c7a9706f7768", - "last_modified": 1780576584529 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "linuxdownloader@boussari.local:2.3.3", - "proxyer@apage.page:1.0.109", - "proxyer@apage.page:1.0.110", - "proxyer@apage.page:1.0.111", - "proxyer@apage.page:1.0.112" - ] - }, - "schema": 1780533396998, - "key_format": "{guid}:{version}", - "stash_time": 1780554906368, - "id": "9c8caf43-8810-4403-b145-efecdb9df39f", - "last_modified": 1780554992507 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "adblockerpro@extension:2.1", - "adblockerpro@extension:2.0", - "addon@2004.chat:1.0.1", - "reject-cookies-not-privacy@example.local:0.1.0", - "rfp-darkmode-spoofer@local.net:1.0.0", - "ss@example.com:1.0.4", - "buscador-siges-igss-sm@elvis.rodriguez:1.4", - "translator@mozilla.fork:1.9.3", - "auto-group@judu:0.1.0", - "{e84b3165-4f36-45ca-8e75-449066a9fe34}:1.0", - "{e84b3165-4f36-45ca-8e75-449066a9fe34}:2.0", - "{c1730fc9-ea2e-406d-a3c9-0101aa898706}:1.0" - ] - }, - "schema": 1780511939950, - "key_format": "{guid}:{version}", - "stash_time": 1780533306677, - "id": "8ed2e22f-373f-458f-bd69-147c6fc3a22e", - "last_modified": 1780533396779 - }, - { - "schema": 1780511900610, + "schema": 1787143031621, "attachment": { - "hash": "8d10fb8eacdcdeb78d29810763b7f446d662dbd097b0323c9243f816fc7bdb33", - "size": 192872, + "hash": "36d687fd2fea46ed89e5d713e4747883243cfd11b8a7ea4a2561e8541521deb8", + "size": 911572, "filename": "filter.bin", - "location": "staging/addons-bloomfilters/20260603183820--51453fc1-28a5-4a9f-8bf8-e750aba654f4--2c4237ee-5b6b-4ca8-9bc3-e4d97fca72a6.bin", + "location": "staging/addons-bloomfilters/20260819183841--45e41d7c-1e0b-4754-95b9-055362b20108--284ba047-5484-4d8e-82f2-5409979d0bd6.bin", "mimetype": "application/octet-stream" }, "key_format": "{guid}:{version}", - "attachment_type": "softblocks-bloomfilter-base", - "generation_time": 1780511705423, - "id": "51453fc1-28a5-4a9f-8bf8-e750aba654f4", - "last_modified": 1780511939815 + "attachment_type": "bloomfilter-base", + "generation_time": 1787164506117, + "id": "45e41d7c-1e0b-4754-95b9-055362b20108", + "last_modified": 1787164757021 }, { - "schema": 1780490200552, + "schema": 1787164721459, "attachment": { - "hash": "c5be2480c5311441de4f0a1b90818e03fb7085155d8273582d7953d93d762262", - "size": 897822, + "hash": "86b0ff726e9096f39144895ff4ff5c7de3281e4bc545e903f64323479235defc", + "size": 205717, "filename": "filter.bin", - "location": "staging/addons-bloomfilters/20260603183820--e721bc94-cd19-484f-9665-ba2f47c00783--93bc976a-9ba0-4f68-91ae-14bc95dba649.bin", + "location": "staging/addons-bloomfilters/20260819183841--eccf3eab-5278-4a14-ac47-ee7b59a8d2c4--78afeb23-58a2-471e-84ad-7a299994640d.bin", "mimetype": "application/octet-stream" }, "key_format": "{guid}:{version}", - "attachment_type": "bloomfilter-base", - "generation_time": 1780511705423, - "id": "e721bc94-cd19-484f-9665-ba2f47c00783", - "last_modified": 1780511939812 + "attachment_type": "softblocks-bloomfilter-base", + "generation_time": 1787164506117, + "id": "eccf3eab-5278-4a14-ac47-ee7b59a8d2c4", + "last_modified": 1787164757017 } ], - "timestamp": 1783924608518 + "timestamp": 1787553419998 } diff -Nru firefox-esr-140.13.0esr/services/settings/dumps/blocklists/gfx.json firefox-esr-140.15.0esr/services/settings/dumps/blocklists/gfx.json --- firefox-esr-140.13.0esr/services/settings/dumps/blocklists/gfx.json 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/dumps/blocklists/gfx.json 2026-08-26 17:03:49.000000000 +0000 @@ -2,6 +2,30 @@ "data": [ { "os": "Linux", + "schema": 1786113883788, + "vendor": "0x10de", + "details": { + "bug": "2055560", + "name": "bug2055560_nouveau_mesa_threading_ac_init_crashes" + }, + "devices": [], + "enabled": true, + "feature": "MESA_THREADING", + "hardware": "", + "driverVendor": "mesa/nouveau", + "versionRange": { + "maxVersion": "155.*", + "minVersion": "" + }, + "featureStatus": "BLOCKED_DRIVER_VERSION", + "windowProtocol": "", + "driverVersionMax": "", + "desktopEnvironment": "", + "id": "aefaa076-01de-431a-81bc-e6aa2f6b84fc", + "last_modified": 1787185519530 + }, + { + "os": "Linux", "schema": 1755909310311, "vendor": "", "details": { @@ -1609,5 +1633,5 @@ "last_modified": 1480349134090 } ], - "timestamp": 1771613837993 + "timestamp": 1787185519530 } diff -Nru firefox-esr-140.13.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json firefox-esr-140.15.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json --- firefox-esr-140.13.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/dumps/main/devtools-compatibility-browsers.json 2026-08-26 17:03:49.000000000 +0000 @@ -1,265 +1,328 @@ { "data": [ { - "name": "Opera Android", - "schema": 1783123505002, - "status": "current", - "version": "100", - "browserid": "opera_android", - "id": "b89efafc-9e6f-48cd-b37b-7607c47979dc", - "last_modified": 1783313844388 + "name": "Firefox for Android", + "schema": 1787270703906, + "status": "planned", + "version": "157", + "browserid": "firefox_android", + "id": "98f3d46e-ce6b-48c0-8ff5-943a031d1bc8", + "last_modified": 1787298456993 + }, + { + "name": "Firefox", + "schema": 1787270703473, + "status": "planned", + "version": "157", + "browserid": "firefox", + "id": "41931218-8b3b-4172-8f54-89f41923555e", + "last_modified": 1787298456990 }, { "name": "Opera", - "schema": 1783123504658, + "schema": 1786665903851, + "status": "nightly", + "version": "136", + "browserid": "opera", + "id": "13275050-c588-4d0f-b5c3-a023e3ae0461", + "last_modified": 1787298456987 + }, + { + "name": "Firefox for Android", + "schema": 1787270703852, "status": "nightly", + "version": "156", + "browserid": "firefox_android", + "id": "422b10db-7615-4139-aff5-7fe37f79956b", + "last_modified": 1787298456984 + }, + { + "name": "Firefox", + "schema": 1787270703159, + "status": "nightly", + "version": "156", + "browserid": "firefox", + "id": "4c8fc113-c34c-43bf-820d-781def6e8dc9", + "last_modified": 1787298456983 + }, + { + "name": "Firefox for Android", + "schema": 1787270703714, + "status": "beta", + "version": "155", + "browserid": "firefox_android", + "id": "f9846985-1eb8-4269-84b9-d860642ee8de", + "last_modified": 1787298456981 + }, + { + "name": "Firefox", + "schema": 1787270703094, + "status": "beta", + "version": "155", + "browserid": "firefox", + "id": "bb387702-1f02-4c63-af9a-3cf8a0e8c181", + "last_modified": 1787298456979 + }, + { + "name": "Firefox", + "schema": 1787270703031, + "status": "current", + "version": "154", + "browserid": "firefox", + "id": "e3f0132a-0f23-4b2c-87e0-cc25edd2bfe2", + "last_modified": 1787298456977 + }, + { + "name": "Firefox for Android", + "schema": 1787270703663, + "status": "current", + "version": "154", + "browserid": "firefox_android", + "id": "0ac75970-a0f2-469a-a7e7-ed4efa7eca3c", + "last_modified": 1787298456975 + }, + { + "name": "Opera", + "schema": 1786665903722, + "status": "current", + "version": "134", + "browserid": "opera", + "id": "f30af049-26f4-4922-8f0d-2660d5c17ff2", + "last_modified": 1787298456973 + }, + { + "name": "Opera", + "schema": 1786665903785, + "status": "beta", "version": "135", "browserid": "opera", "id": "c0358db9-5291-4055-8784-857f17ccd0a2", - "last_modified": 1783313844385 + "last_modified": 1787298456970 }, { - "name": "Edge", - "schema": 1783123504438, - "status": "planned", + "name": "Firefox for Android", + "schema": 1787270703610, + "status": "esr", "version": "153", - "browserid": "edge", - "id": "26f8e596-385b-459b-af8e-ded15a788058", - "last_modified": 1783313844381 + "browserid": "firefox_android", + "id": "dbe73c6b-c8f0-4bb2-b3e6-5c34acb69363", + "last_modified": 1787298456965 }, { - "name": "Chrome", - "schema": 1783123503549, - "status": "planned", + "name": "Firefox", + "schema": 1787184006631, + "status": "esr", "version": "153", - "browserid": "chrome", - "id": "0b6c6164-50d7-4a72-a71c-4aef12261efe", - "last_modified": 1783313844378 + "browserid": "firefox", + "id": "5f2f0849-415a-429c-8b5f-4e55ba911634", + "last_modified": 1787298456963 + }, + { + "name": "WebView on iOS", + "schema": 1785801904986, + "status": "current", + "version": "26.6", + "browserid": "webview_ios", + "id": "889a2b75-d5bd-4a5f-ac06-e71d6ee6e309", + "last_modified": 1785829651024 }, { "name": "WebView Android", - "schema": 1783123505467, + "schema": 1785801904879, "status": "planned", - "version": "153", + "version": "154", "browserid": "webview_android", - "id": "62a58776-756f-448a-aa75-3d4925648540", - "last_modified": 1783313844375 + "id": "d9729dba-2b74-42b1-9072-b3160c34515a", + "last_modified": 1785829651021 + }, + { + "name": "Safari on iOS", + "schema": 1785801904519, + "status": "current", + "version": "26.6", + "browserid": "safari_ios", + "id": "3093e579-0d69-4f03-9e76-65c4ff22f181", + "last_modified": 1785829651018 + }, + { + "name": "Chrome", + "schema": 1785801903672, + "status": "planned", + "version": "154", + "browserid": "chrome", + "id": "a93a7ef4-8302-4b84-8168-cb1e12881fbc", + "last_modified": 1785829651015 }, { "name": "Chrome Android", - "schema": 1783123504072, + "schema": 1785801903967, "status": "planned", - "version": "153", + "version": "154", "browserid": "chrome_android", - "id": "ab73ce7f-085b-4d59-a6a2-3ce599c1f6b9", - "last_modified": 1783313844371 + "id": "476196a2-26d3-42b7-b839-085065bc7430", + "last_modified": 1785829651012 }, { - "name": "Deno", - "schema": 1783123504181, + "name": "Edge", + "schema": 1785801904283, + "status": "planned", + "version": "154", + "browserid": "edge", + "id": "b70334d1-f18d-4232-85fb-6f328d14449d", + "last_modified": 1785829651009 + }, + { + "name": "Safari", + "schema": 1785801904404, "status": "current", - "version": "2.9", - "browserid": "deno", - "id": "5b720d10-3d75-4430-b484-bb94ab883010", - "last_modified": 1783313844368 + "version": "26.6", + "browserid": "safari", + "id": "16df16d0-de33-4f52-8ad5-cb3baf599b27", + "last_modified": 1785829651006 }, { "name": "WebView Android", - "schema": 1783123505420, - "status": "nightly", + "schema": 1785801904767, + "status": "beta", "version": "152", "browserid": "webview_android", "id": "0a9ccbd3-8fc2-49ba-bda3-deecbaa812d6", - "last_modified": 1783313844362 + "last_modified": 1785829651002 }, { "name": "Edge", - "schema": 1783123504385, - "status": "nightly", + "schema": 1785801904165, + "status": "beta", "version": "152", "browserid": "edge", "id": "13e9327e-9563-4d8c-9a1f-3ae097488491", - "last_modified": 1783313844360 + "last_modified": 1785829651000 }, { "name": "Chrome Android", - "schema": 1783123504022, - "status": "nightly", + "schema": 1785801903836, + "status": "beta", "version": "152", "browserid": "chrome_android", "id": "58424707-5568-4f3c-8cfd-7e7b8cb90345", - "last_modified": 1783313844355 + "last_modified": 1785829650997 }, { "name": "Chrome", - "schema": 1783123503428, - "status": "nightly", + "schema": 1785801903560, + "status": "beta", "version": "152", "browserid": "chrome", "id": "c289fa28-6430-41fb-8186-816253fc4220", - "last_modified": 1783313844352 - }, - { - "name": "Opera", - "schema": 1783123504611, - "status": "beta", - "version": "134", - "browserid": "opera", - "id": "f30af049-26f4-4922-8f0d-2660d5c17ff2", - "last_modified": 1783313844350 + "last_modified": 1785829650995 }, { "name": "Edge", - "schema": 1783123504337, - "status": "beta", + "schema": 1785801904109, + "status": "current", "version": "151", "browserid": "edge", "id": "7d97452b-dad5-4770-b790-c3cf639612d0", - "last_modified": 1783313844347 + "last_modified": 1785829650993 }, { "name": "Chrome Android", - "schema": 1783123503972, - "status": "beta", + "schema": 1785801903784, + "status": "current", "version": "151", "browserid": "chrome_android", "id": "db3809f5-8e2d-4526-94f6-f97d725e3751", - "last_modified": 1783313844345 + "last_modified": 1785829650990 }, { "name": "Chrome", - "schema": 1783123503352, - "status": "beta", + "schema": 1785801903499, + "status": "current", "version": "151", "browserid": "chrome", "id": "314b7e75-23ba-441b-b118-bad100a27c94", - "last_modified": 1783313844343 + "last_modified": 1785829650988 }, { "name": "WebView Android", - "schema": 1783123505363, - "status": "beta", + "schema": 1785801904704, + "status": "current", "version": "151", "browserid": "webview_android", "id": "9a9f15de-0211-4c60-9860-19a24159aa11", - "last_modified": 1783313844340 - }, - { - "name": "Opera", - "schema": 1783123504555, - "status": "current", - "version": "133", - "browserid": "opera", - "id": "e356cd85-4285-4569-ac40-9ed323328e34", - "last_modified": 1783313844338 - }, - { - "name": "WebView Android", - "schema": 1783123505246, - "status": "current", - "version": "150", - "browserid": "webview_android", - "id": "1f7a5c82-8b4a-4eaf-97b6-19f24fe55272", - "last_modified": 1783313844335 - }, - { - "name": "Chrome Android", - "schema": 1783123503867, - "status": "current", - "version": "150", - "browserid": "chrome_android", - "id": "525b02bb-1782-4be7-af3d-a871bd0dc689", - "last_modified": 1783313844332 - }, - { - "name": "Chrome", - "schema": 1783123503293, - "status": "current", - "version": "150", - "browserid": "chrome", - "id": "36357b2a-c063-4a43-a807-349cf909608b", - "last_modified": 1783313844330 + "last_modified": 1785829650986 }, { "name": "Edge", - "schema": 1783123504280, - "status": "current", - "version": "150", + "schema": 1785801904220, + "status": "nightly", + "version": "153", "browserid": "edge", - "id": "8dcc0dc6-e19c-4a1c-bd84-98ed10245fa4", - "last_modified": 1783313844314 - }, - { - "name": "Firefox for Android", - "schema": 1781913903935, - "status": "planned", - "version": "155", - "browserid": "firefox_android", - "id": "f9846985-1eb8-4269-84b9-d860642ee8de", - "last_modified": 1782116462497 + "id": "26f8e596-385b-459b-af8e-ded15a788058", + "last_modified": 1785829650983 }, { - "name": "Firefox", - "schema": 1781913903565, - "status": "planned", - "version": "155", - "browserid": "firefox", - "id": "bb387702-1f02-4c63-af9a-3cf8a0e8c181", - "last_modified": 1782116462494 + "name": "Chrome", + "schema": 1785801903616, + "status": "nightly", + "version": "153", + "browserid": "chrome", + "id": "0b6c6164-50d7-4a72-a71c-4aef12261efe", + "last_modified": 1785829650981 }, { - "name": "Firefox", - "schema": 1781913903500, + "name": "WebView Android", + "schema": 1785801904823, "status": "nightly", - "version": "154", - "browserid": "firefox", - "id": "e3f0132a-0f23-4b2c-87e0-cc25edd2bfe2", - "last_modified": 1782116462490 + "version": "153", + "browserid": "webview_android", + "id": "62a58776-756f-448a-aa75-3d4925648540", + "last_modified": 1785829650978 }, { - "name": "Firefox for Android", - "schema": 1781913903870, + "name": "Chrome Android", + "schema": 1785801903893, "status": "nightly", - "version": "154", - "browserid": "firefox_android", - "id": "0ac75970-a0f2-469a-a7e7-ed4efa7eca3c", - "last_modified": 1782116462488 + "version": "153", + "browserid": "chrome_android", + "id": "ab73ce7f-085b-4d59-a6a2-3ce599c1f6b9", + "last_modified": 1785829650976 }, { - "name": "Firefox", - "schema": 1781913903341, + "name": "Samsung Browser", + "schema": 1785801904580, "status": "current", - "version": "152", - "browserid": "firefox", - "id": "28f0d2ac-ebeb-4324-a581-bdc945184379", - "last_modified": 1782116462486 + "version": "29.0", + "browserid": "samsunginternet_android", + "id": "c30b100b-baa9-418f-b196-11e2cc06c7ad", + "last_modified": 1785829650956 }, { - "name": "Firefox for Android", - "schema": 1781913903710, + "name": "Node.js", + "schema": 1784333103175, "status": "current", - "version": "152", - "browserid": "firefox_android", - "id": "d4acf283-6f99-4aff-a937-827c0f6ba719", - "last_modified": 1782116462484 + "version": "26.5.0", + "browserid": "nodejs", + "id": "529c230e-983e-40a4-a76b-8fa24e889cb3", + "last_modified": 1784530623061 }, { - "name": "Firefox for Android", - "schema": 1781913903792, - "status": "beta", - "version": "153", - "browserid": "firefox_android", - "id": "dbe73c6b-c8f0-4bb2-b3e6-5c34acb69363", - "last_modified": 1782116462481 + "name": "Opera Android", + "schema": 1783123505002, + "status": "current", + "version": "100", + "browserid": "opera_android", + "id": "b89efafc-9e6f-48cd-b37b-7607c47979dc", + "last_modified": 1783313844388 }, { - "name": "Firefox", - "schema": 1781913903420, - "status": "beta", - "version": "153", - "browserid": "firefox", - "id": "5f2f0849-415a-429c-8b5f-4e55ba911634", - "last_modified": 1782116462479 + "name": "Deno", + "schema": 1783123504181, + "status": "current", + "version": "2.9", + "browserid": "deno", + "id": "5b720d10-3d75-4430-b484-bb94ab883010", + "last_modified": 1783313844368 }, { "name": "Safari on iOS", @@ -298,42 +361,6 @@ "last_modified": 1779199428029 }, { - "name": "Safari on iOS", - "schema": 1778889904241, - "status": "current", - "version": "26.5", - "browserid": "safari_ios", - "id": "37c52f59-c4bb-4707-bb06-d1cac9172203", - "last_modified": 1779199428026 - }, - { - "name": "Safari", - "schema": 1778889904076, - "status": "current", - "version": "26.5", - "browserid": "safari", - "id": "310ab08d-64fb-4d47-a298-e35f262acf72", - "last_modified": 1779199428024 - }, - { - "name": "WebView on iOS", - "schema": 1778889904410, - "status": "current", - "version": "26.5", - "browserid": "webview_ios", - "id": "c4306576-8892-4f28-adb6-39f0325e9be9", - "last_modified": 1779199428021 - }, - { - "name": "Node.js", - "schema": 1778285104334, - "status": "current", - "version": "26.0.0", - "browserid": "nodejs", - "id": "5be390c4-0321-4b32-a3d7-6e4d3b32ad95", - "last_modified": 1778514804035 - }, - { "name": "Quest Browser", "schema": 1773446703816, "status": "current", @@ -343,33 +370,6 @@ "last_modified": 1773641281295 }, { - "name": "Samsung Internet", - "schema": 1764979504820, - "status": "current", - "version": "29.0", - "browserid": "samsunginternet_android", - "id": "c30b100b-baa9-418f-b196-11e2cc06c7ad", - "last_modified": 1765180094055 - }, - { - "name": "Firefox for Android", - "schema": 1753574703338, - "status": "esr", - "version": "140", - "browserid": "firefox_android", - "id": "29671e58-5233-4969-8f3a-b3208e3b8f17", - "last_modified": 1754642891016 - }, - { - "name": "Firefox", - "schema": 1753496133120, - "status": "esr", - "version": "140", - "browserid": "firefox", - "id": "9949da65-f6be-41f4-9c9d-73bc27b4d2a0", - "last_modified": 1754642891013 - }, - { "name": "Node.js", "schema": 1734480302872, "status": "esr", @@ -379,5 +379,5 @@ "last_modified": 1735832995466 } ], - "timestamp": 1783313844388 + "timestamp": 1787298456993 } diff -Nru firefox-esr-140.13.0esr/services/settings/dumps/main/search-config-icons.json firefox-esr-140.15.0esr/services/settings/dumps/main/search-config-icons.json --- firefox-esr-140.13.0esr/services/settings/dumps/main/search-config-icons.json 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/dumps/main/search-config-icons.json 2026-08-26 17:03:49.000000000 +0000 @@ -1,6 +1,40 @@ { "data": [ { + "schema": 1786121638638, + "imageSize": 16, + "attachment": { + "hash": "9139032d19815e574eeb2b5c085bde9acdfd065036b59b9dc540244f5bceb056", + "size": 1835, + "filename": "16x16-light-white-background.pdf", + "location": "main-workspace/search-config-icons/20260810224330--fea7a389-2590-4675-8661-50f187dcb888--3b4070c7-7ef8-4485-ab92-5b3baa9fc833.pdf", + "mimetype": "application/pdf" + }, + "engineIdentifiers": [ + "startpage" + ], + "filter_expression": "env.appinfo.OS == \"iOS\"", + "id": "fea7a389-2590-4675-8661-50f187dcb888", + "last_modified": 1786412902498 + }, + { + "schema": 1785456011722, + "imageSize": 16, + "attachment": { + "hash": "0025e2e3db0c591fcdc453d73706b686feae101b2b8b949521d0df06afdbcad0", + "size": 1658, + "filename": "16x16-light-white-background.svg", + "location": "main-workspace/search-config-icons/20260807152136--acae3d3c-b09e-47f0-a9e5-57980d21fc4a--5d2b2470-dc33-45bb-9183-7d49028636fa.svg", + "mimetype": "image/svg+xml" + }, + "engineIdentifiers": [ + "startpage" + ], + "filter_expression": "env.appinfo.OS != \"iOS\"", + "id": "acae3d3c-b09e-47f0-a9e5-57980d21fc4a", + "last_modified": 1786121638537 + }, + { "schema": 1777407853575, "imageSize": 24, "attachment": { @@ -35,23 +69,6 @@ "last_modified": 1777561787668 }, { - "schema": 1773705608175, - "imageSize": 16, - "attachment": { - "hash": "b9aeff79e16d2db1b53574ceacae0149bc3c5b5d6b6dcd3542a1d7034ed64b70", - "size": 1717, - "filename": "startpage-16.svg", - "location": "main-workspace/search-config-icons/a2a88863-029c-4197-8a1c-fee311fc1aae.svg", - "mimetype": "image/svg+xml" - }, - "engineIdentifiers": [ - "startpage" - ], - "filter_expression": "env.appinfo.OS != \"iOS\"", - "id": "acae3d3c-b09e-47f0-a9e5-57980d21fc4a", - "last_modified": 1774879272191 - }, - { "schema": 1771977606099, "imageSize": 96, "attachment": { @@ -1207,5 +1224,5 @@ "last_modified": 1744118264825 } ], - "timestamp": 1777561787670 + "timestamp": 1786412902498 } diff -Nru firefox-esr-140.13.0esr/services/settings/dumps/main/search-config-v2.json firefox-esr-140.15.0esr/services/settings/dumps/main/search-config-v2.json --- firefox-esr-140.13.0esr/services/settings/dumps/main/search-config-v2.json 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/dumps/main/search-config-v2.json 2026-08-26 17:03:49.000000000 +0000 @@ -3882,12 +3882,32 @@ }, "id": "5fb2256b-fdb0-42e8-8d8a-0d633b14e8d5", "identifier": "startpage", - "last_modified": 1778165854657, + "last_modified": 1786997421079, "recordType": "engine", - "schema": 1778115248130, + "schema": 1786924807791, "variants": [ { "environment": { + "applications": [ + "firefox" + ], + "regions": [ + "at", + "ch", + "de", + "fr", + "nl" + ] + } + }, + { + "environment": { + "experiment": "startpage-message" + }, + "isNewUntil": "2026-09-15" + }, + { + "environment": { "experiment": "startpage" } } @@ -8423,5 +8443,5 @@ "schema": 1707824831520 } ], - "timestamp": 1783024776556 + "timestamp": 1786997421079 } diff -Nru firefox-esr-140.13.0esr/services/settings/dumps/main/search-telemetry-v2.json firefox-esr-140.15.0esr/services/settings/dumps/main/search-telemetry-v2.json --- firefox-esr-140.13.0esr/services/settings/dumps/main/search-telemetry-v2.json 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/dumps/main/search-telemetry-v2.json 2026-08-26 17:03:49.000000000 +0000 @@ -1,75 +1,229 @@ { "data": [ { - "schema": 1779580811115, - "subframes": [ - { - "regexp": "^https://www\\.startpage\\.com/sp/afs/ads" - } - ], + "schema": 1786612555420, + "subframes": [], "components": [ { - "type": "ad_subframe", - "topDown": true, + "type": "ad_carousel", "included": { "parent": { - "selector": "iframe[src^='https://www.startpage.com/sp/afs/ads']" + "selector": ".adsMvCarousel" + }, + "related": { + "selector": ".cr" + }, + "children": [ + { + "selector": ".pa_item", + "countChildren": true + } + ] + } + }, + { + "type": "ad_link", + "excluded": { + "parent": { + "selector": "aside" } + }, + "included": { + "parent": { + "selector": ".sb_adTA" + }, + "children": [ + { + "type": "ad_sitelink", + "selector": ".b_vlist2col" + } + ] } }, { - "type": "ad_carousel", + "type": "ad_sidebar", "included": { "parent": { - "selector": ".pa-bg-carousel, .carousel-container" + "selector": "aside" }, "children": [ { - "selector": ".glider-slide", + "selector": ".pa_item, .sb_adTA", "countChildren": true } ] } }, { + "type": "incontent_searchbox", + "topDown": true, + "included": { + "parent": { + "selector": "form#sb_form" + }, + "related": { + "selector": "#sw_as" + }, + "children": [ + { + "selector": "input[name='q']" + } + ] + } + }, + { + "type": "cookie_banner", + "topDown": true, + "included": { + "parent": { + "selector": "div#bnp_cookie_banner" + }, + "children": [ + { + "selector": "button#bnp_btn_accept", + "eventListeners": [ + { + "action": "clicked_accept", + "eventType": "click" + } + ] + }, + { + "selector": "button#bnp_btn_reject", + "eventListeners": [ + { + "action": "clicked_reject", + "eventType": "click" + } + ] + }, + { + "selector": "a#bnp_btn_preference", + "eventListeners": [ + { + "action": "clicked_more_options", + "eventType": "click" + } + ] + } + ] + } + }, + { "type": "ad_link", "default": true } ], + "shoppingTab": { + "regexp": "^/shop?", + "selector": "#b-scopeListItem-shop a" + }, "taggedCodes": [ - "startpage.apex.desktop", - "startpage.apex.ios", - "startpage.apex.android" - ], - "telemetryId": "startpage", - "organicCodes": [ - "startpage.udog" + "MOZ2", + "MOZ4", + "MOZ5", + "MOZA", + "MOZB", + "MOZD", + "MOZE", + "MOZI", + "MOZL", + "MOZM", + "MOZO", + "MOZR", + "MOZT", + "MOZW", + "MOZX", + "MZABT", + "MZCP", + "MZTOF", + "MZSL01", + "MZSL02", + "MZSL03" ], - "codeParamName": "segment", - "queryParamName": "query", - "alwaysMatchSERP": { - "child": true + "telemetryId": "bing", + "organicCodes": [], + "codeParamName": "pc", + "pageTypeParam": { + "keys": [], + "pageTypes": [ + { + "name": "web", + "target": "default_tab", + "values": [], + "enabled": true, + "isDefault": true + } + ], + "enableSPAHandling": true }, + "queryParamName": "q", + "followOnCookies": [ + { + "host": "www.bing.com", + "name": "_SS", + "codeParamName": "PC", + "extraCodePrefixes": [], + "extraCodeParamName": "" + }, + { + "host": "www.bing.com", + "name": "SRCHS", + "codeParamName": "PC", + "extraCodePrefixes": [], + "extraCodeParamName": "" + }, + { + "host": "cn.bing.com", + "name": "_SS", + "codeParamName": "PC", + "extraCodePrefixes": [], + "extraCodeParamName": "" + }, + { + "host": "cn.bing.com", + "name": "SRCHS", + "codeParamName": "PC", + "extraCodePrefixes": [], + "extraCodeParamName": "" + } + ], "queryParamNames": [ - "q", - "query" + "q" + ], + "domainExtraction": { + "ads": [ + { + "method": "textContent", + "selectors": "#b_results .b_ad .b_attribution cite, .adsMvCarousel cite, aside cite" + } + ], + "nonAds": [ + { + "method": "textContent", + "selectors": "#b_results .b_algo .b_attribution cite" + } + ] + }, + "searchPageRegexp": "^https://(?:cn|www)\\.bing\\.com/search", + "filter_expression": "env.version|versionCompare(\"153.0.4\")>=0", + "nonAdsLinkRegexps": [ + "^https://(?:cn|www).bing.com/ck/a" ], - "searchPageRegexp": "^https://www\\.startpage\\.com/sp/search", - "filter_expression": "env.version|versionCompare(\"152.0a1\")>=0", "searchPageMatches": [ - "https://www.startpage.com/sp/search*" + "https://(?:cn|www).bing.com/search*" ], "impressionAttributes": [ { "key": "is_shopping_page", "url": { - "regexp": "[?&]cat=shopping" + "regexp": "^/shop?" } }, { "key": "shopping_tab_displayed", "element": { - "selector": "button[data-testid='Shopping']", + "selector": "#b-scopeListItem-shop a", "component": { "type": "shopping_tab", "countImpressions": true @@ -79,19 +233,19 @@ { "key": "has_ai_summary", "element": { - "selector": ".ai-summaries-qi" + "selector": "#b_wpt_container_ml,.gs_aidisc,#copans_container" } } ], "extraAdServersRegexps": [ - "^https://syndicatedsearch\\.goog/", - "https://www\\.bing\\.com/aclick" + "^https://(?:cn|www)\\.bing\\.com/acli?c?k" ], - "id": "233cb5cb-0225-43d1-8ffb-205ef2d8b0ca", - "last_modified": 1779985790144 + "requireTopLevelImpressionOrigin": true, + "id": "5915de28-f276-4b8f-8620-62abc46ecfd4", + "last_modified": 1786632246774 }, { - "schema": 1774280721627, + "schema": 1786611457004, "subframes": [], "components": [ { @@ -283,6 +437,7 @@ ] }, "searchPageRegexp": "^https://(?:cn|www)\\.bing\\.com/search", + "filter_expression": "env.version|versionCompare(\"153.0.4\")<0", "nonAdsLinkRegexps": [ "^https://(?:cn|www).bing.com/ck/a" ], @@ -317,7 +472,97 @@ "^https://(?:cn|www)\\.bing\\.com/acli?c?k" ], "id": "e1eec461-f1f3-40de-b94b-3b670b78108c", - "last_modified": 1774283138114 + "last_modified": 1786632246769 + }, + { + "schema": 1779580811115, + "subframes": [ + { + "regexp": "^https://www\\.startpage\\.com/sp/afs/ads" + } + ], + "components": [ + { + "type": "ad_subframe", + "topDown": true, + "included": { + "parent": { + "selector": "iframe[src^='https://www.startpage.com/sp/afs/ads']" + } + } + }, + { + "type": "ad_carousel", + "included": { + "parent": { + "selector": ".pa-bg-carousel, .carousel-container" + }, + "children": [ + { + "selector": ".glider-slide", + "countChildren": true + } + ] + } + }, + { + "type": "ad_link", + "default": true + } + ], + "taggedCodes": [ + "startpage.apex.desktop", + "startpage.apex.ios", + "startpage.apex.android" + ], + "telemetryId": "startpage", + "organicCodes": [ + "startpage.udog" + ], + "codeParamName": "segment", + "queryParamName": "query", + "alwaysMatchSERP": { + "child": true + }, + "queryParamNames": [ + "q", + "query" + ], + "searchPageRegexp": "^https://www\\.startpage\\.com/sp/search", + "filter_expression": "env.version|versionCompare(\"152.0a1\")>=0", + "searchPageMatches": [ + "https://www.startpage.com/sp/search*" + ], + "impressionAttributes": [ + { + "key": "is_shopping_page", + "url": { + "regexp": "[?&]cat=shopping" + } + }, + { + "key": "shopping_tab_displayed", + "element": { + "selector": "button[data-testid='Shopping']", + "component": { + "type": "shopping_tab", + "countImpressions": true + } + } + }, + { + "key": "has_ai_summary", + "element": { + "selector": ".ai-summaries-qi" + } + } + ], + "extraAdServersRegexps": [ + "^https://syndicatedsearch\\.goog/", + "https://www\\.bing\\.com/aclick" + ], + "id": "233cb5cb-0225-43d1-8ffb-205ef2d8b0ca", + "last_modified": 1779985790144 }, { "schema": 1773964810753, @@ -1198,5 +1443,5 @@ "last_modified": 1774283138101 } ], - "timestamp": 1779985790144 + "timestamp": 1786632246774 } diff -Nru firefox-esr-140.13.0esr/services/settings/dumps/main/translations-models.json firefox-esr-140.15.0esr/services/settings/dumps/main/translations-models.json --- firefox-esr-140.13.0esr/services/settings/dumps/main/translations-models.json 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/dumps/main/translations-models.json 2026-08-26 17:03:49.000000000 +0000 @@ -1,6 +1,120 @@ { "data": [ { + "hash": "2eb77117d9997984fe700c386126865a6ca951fcfb78b3c29b2921a6a770d63a", + "name": "lex.50.50.taen.s2t.bin", + "schema": 1784124378087, + "toLang": "en", + "version": "2.0", + "fileType": "lex", + "fromLang": "ta", + "attachment": { + "hash": "2eb77117d9997984fe700c386126865a6ca951fcfb78b3c29b2921a6a770d63a", + "size": 4940884, + "filename": "lex.50.50.taen.s2t.bin", + "location": "main-workspace/translations-models/20260715140619--c8ee9a68-ac2d-4a2f-89c3-8f93c8537f37--4fc5a810-c260-48b6-b93a-2199877eb76f.bin", + "mimetype": "application/octet-stream" + }, + "filter_expression": "", + "id": "c8ee9a68-ac2d-4a2f-89c3-8f93c8537f37", + "last_modified": 1784133232620 + }, + { + "hash": "5413fca6c35cd9c50157df1ebd425d6ca02713bfedc1ba7e5fb3050a437b13b6", + "name": "model.taen.intgemm.alphas.bin", + "schema": 1784124371663, + "toLang": "en", + "version": "2.0", + "fileType": "model", + "fromLang": "ta", + "attachment": { + "hash": "5413fca6c35cd9c50157df1ebd425d6ca02713bfedc1ba7e5fb3050a437b13b6", + "size": 31561787, + "filename": "model.taen.intgemm.alphas.bin", + "location": "main-workspace/translations-models/20260715140617--f0e86729-368b-429c-b36e-c694bff13b11--7d585df8-e009-4b2b-a203-4fb5d6df8967.bin", + "mimetype": "application/octet-stream" + }, + "filter_expression": "", + "id": "f0e86729-368b-429c-b36e-c694bff13b11", + "last_modified": 1784133232618 + }, + { + "hash": "83266ea604611756d1c3c358d7bed1fdf79a646c1f701b42c1db501c237c0f3b", + "name": "model.enta.intgemm.alphas.bin", + "schema": 1784124327376, + "toLang": "ta", + "version": "2.0", + "fileType": "model", + "fromLang": "en", + "attachment": { + "hash": "83266ea604611756d1c3c358d7bed1fdf79a646c1f701b42c1db501c237c0f3b", + "size": 31561787, + "filename": "model.enta.intgemm.alphas.bin", + "location": "main-workspace/translations-models/20260715140532--7019230f-6fcc-43eb-b800-ef36471354ae--0cee705e-78e5-4065-a867-f97fc24c0fea.bin", + "mimetype": "application/octet-stream" + }, + "filter_expression": "", + "id": "7019230f-6fcc-43eb-b800-ef36471354ae", + "last_modified": 1784133232615 + }, + { + "hash": "c4fd3cbcec4e7c8a80b7c0656092fb482b9f266b1e8c6cb171f81af394f0f899", + "name": "vocab.enta.spm", + "schema": 1784124325657, + "toLang": "ta", + "version": "2.0", + "fileType": "vocab", + "fromLang": "en", + "attachment": { + "hash": "c4fd3cbcec4e7c8a80b7c0656092fb482b9f266b1e8c6cb171f81af394f0f899", + "size": 1097357, + "filename": "vocab.enta.spm", + "location": "main-workspace/translations-models/20260715140526--b4aaebba-4117-45f2-8acd-45a665cb0308--df414eec-8420-499b-94af-efc2a97a648c.spm", + "mimetype": "application/octet-stream" + }, + "filter_expression": "", + "id": "b4aaebba-4117-45f2-8acd-45a665cb0308", + "last_modified": 1784133232612 + }, + { + "hash": "3a40b2175a114f3ca0ee5501c12e9636ef46f282304b041001f282baf4a5bc6f", + "name": "lex.50.50.enta.s2t.bin", + "schema": 1784124323579, + "toLang": "ta", + "version": "2.0", + "fileType": "lex", + "fromLang": "en", + "attachment": { + "hash": "3a40b2175a114f3ca0ee5501c12e9636ef46f282304b041001f282baf4a5bc6f", + "size": 2746824, + "filename": "lex.50.50.enta.s2t.bin", + "location": "main-workspace/translations-models/20260715140524--f9961af7-9710-4cba-a799-a3f08d8ebbaf--68c57263-7c4c-45d7-8668-a429b259b926.bin", + "mimetype": "application/octet-stream" + }, + "filter_expression": "", + "id": "f9961af7-9710-4cba-a799-a3f08d8ebbaf", + "last_modified": 1784133232610 + }, + { + "hash": "5ce5f840335d9cbbbd76ef160ee2566ebe239d820d66a827996f40dd01467a92", + "name": "vocab.taen.spm", + "schema": 1784124370084, + "toLang": "en", + "version": "2.0", + "fileType": "vocab", + "fromLang": "ta", + "attachment": { + "hash": "5ce5f840335d9cbbbd76ef160ee2566ebe239d820d66a827996f40dd01467a92", + "size": 1104678, + "filename": "vocab.taen.spm", + "location": "main-workspace/translations-models/20260715140611--dd913371-ad2b-4faf-bd87-6603acbe5b93--863f06ba-b617-4a8e-bf03-23c4c336e750.spm", + "mimetype": "application/octet-stream" + }, + "filter_expression": "", + "id": "dd913371-ad2b-4faf-bd87-6603acbe5b93", + "last_modified": 1784133232607 + }, + { "hash": "4be647536631440bdf68c59d3de5720d8e87a482e0493ff41767488b4df1731d", "name": "lex.50.50.euen.s2t.bin", "schema": 1780501209978, @@ -12395,5 +12509,5 @@ "last_modified": 1701186751412 } ], - "timestamp": 1782748150744 + "timestamp": 1784133232620 } diff -Nru firefox-esr-140.13.0esr/services/settings/dumps/security-state/intermediates.json firefox-esr-140.15.0esr/services/settings/dumps/security-state/intermediates.json --- firefox-esr-140.13.0esr/services/settings/dumps/security-state/intermediates.json 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/services/settings/dumps/security-state/intermediates.json 2026-08-26 17:03:48.000000000 +0000 @@ -1,6 +1,1059 @@ { "data": [ { + "schema": 1787363972887, + "derHash": "i0jvi4Ud4KRPRGicYaj5KmMQ4Fn/Lf9co5NSb5aWVZc=", + "attachment": { + "hash": "2fee30000c989c8e20e6a23f5819cce89a1dcec84780d59331959456554bb3d5", + "size": 2337, + "filename": "-Kz2Qzm5LnmV-sIoqYHuSs9E0KR_zlbsWe2gf0SYZKY=.pem", + "location": "security-state-staging/intermediates/20260822015933--c2e849b9-8462-4054-bb66-416607088e9e--1a649ccb-acf5-400a-9e39-54daf2922de4.pem", + "mimetype": "application/x-pem-file" + }, + "id": "c2e849b9-8462-4054-bb66-416607088e9e", + "last_modified": 1787367422707 + }, + { + "schema": 1787363974313, + "derHash": "svJMTx+ePHeLct+p9SHGfGS7NYopgdOxl79seBc9gE4=", + "attachment": { + "hash": "236a6945c331cb73c0d9aeeac99144ffa28140799a519b73afa6cbd9dc5a264a", + "size": 2020, + "filename": "-Kz2Qzm5LnmV-sIoqYHuSs9E0KR_zlbsWe2gf0SYZKY=.pem", + "location": "security-state-staging/intermediates/20260822015934--702653a0-7c6b-4e79-a3d9-fc23be4a5ba0--fdbc071a-5bd0-454e-b6bd-53ff3bcdb1d6.pem", + "mimetype": "application/x-pem-file" + }, + "id": "702653a0-7c6b-4e79-a3d9-fc23be4a5ba0", + "last_modified": 1787367422704 + }, + { + "schema": 1787191172531, + "derHash": "2W+y+RRrIoNuK5Ke0Pa1ngSnX2t7a6WnQw7nPNj9Mh4=", + "attachment": { + "hash": "5eac5e0fb01bbbc58222cb87a299a4638aeaab763046292a915fd607df3fe236", + "size": 2328, + "filename": "cXv9-sU_TbDOUI708meCc_fEe9Ck4oKBjZ7Kp7fgdfM=.pem", + "location": "security-state-staging/intermediates/20260820015932--28d6e957-fa2f-4602-8e89-61fec71c9864--73de22c1-9d6a-44d9-939f-ef8eb17fabb9.pem", + "mimetype": "application/x-pem-file" + }, + "id": "28d6e957-fa2f-4602-8e89-61fec71c9864", + "last_modified": 1787194622499 + }, + { + "schema": 1787191171580, + "derHash": "6f9ZL19wg13M7wIj3p/+aQV/lkBp7f09SptVLgnOU88=", + "attachment": { + "hash": "bcceac989ea4559d8d1aad36d0ffb7066d857f614ce04a602becca07dea28f6e", + "size": 2385, + "filename": "fDh0PB9FjwWBI8sIBMIxoFCOfWkq0Xf1WcqeKzZ6aGU=.pem", + "location": "security-state-staging/intermediates/20260820015931--acb5d784-628a-464d-ae3b-1617764b0e44--f34ccc67-521e-4852-9f67-592ebbdbd2d4.pem", + "mimetype": "application/x-pem-file" + }, + "id": "acb5d784-628a-464d-ae3b-1617764b0e44", + "last_modified": 1787194622496 + }, + { + "schema": 1787191170520, + "derHash": "73VXfHmHtqxidP40Lkc9eOzJzRALHT0AAnRmSCpVVLg=", + "attachment": { + "hash": "165c525e80e51b9f751a08bc032b2068303e71283604ee39a0f283929feaf303", + "size": 2333, + "filename": "0iUrrbTN_GXRwYOQt2-cj0bdeev3eCutHgbrWdHz8DU=.pem", + "location": "security-state-staging/intermediates/20260820015931--c099634f-a928-4174-8ae9-2fbcc3b135d1--a1a84952-678a-4620-b9a5-a550d6ae84a1.pem", + "mimetype": "application/x-pem-file" + }, + "id": "c099634f-a928-4174-8ae9-2fbcc3b135d1", + "last_modified": 1787194622493 + }, + { + "schema": 1786715981029, + "derHash": "jFcQvxYBkZeVZz6f+X+cGazH+keOnpnLbPW2EqlsaXs=", + "attachment": { + "hash": "1652c5295e78313ad73bc3723870c957b719b7990f7756b39dc607d34a73a851", + "size": 2040, + "filename": "WNKPdUiYre6TdDHXT8GjvuArimY0RPJU_GOpqBb3Wrg=.pem", + "location": "security-state-staging/intermediates/20260814135941--ee6b580e-50a1-465c-96c0-b0f202a9740e--caa0850a-fa45-4bc7-ba3c-9dbb15369be2.pem", + "mimetype": "application/x-pem-file" + }, + "id": "ee6b580e-50a1-465c-96c0-b0f202a9740e", + "last_modified": 1786719422275 + }, + { + "schema": 1786715980097, + "derHash": "MhPONyJMTpVNqq7t2gmOtwiRHQVI/T4w7Y/8GEG9XWU=", + "attachment": { + "hash": "555ee7d056b85f596441e86772f9989528037722fbd52ef8161cc93fdb9ca091", + "size": 2146, + "filename": "oxA4NcysWTDQ4ET9mDDfkfxhrVDm4Q0w2PVYizlexuc=.pem", + "location": "security-state-staging/intermediates/20260814135940--8056923a-d18d-4acc-bc4b-8e47b52d568e--3bc4b006-3972-45a6-aa00-ee2013d60a6a.pem", + "mimetype": "application/x-pem-file" + }, + "id": "8056923a-d18d-4acc-bc4b-8e47b52d568e", + "last_modified": 1786719422272 + }, + { + "schema": 1786715979169, + "derHash": "259IpTEGoGoARy/xgpFFAv5cgWu8S7VGgzI5aRm+5XE=", + "attachment": { + "hash": "cef35b7f1482226a5e0d83d55fa769deba0f93a33b6de722d1b272338c2aef30", + "size": 2044, + "filename": "I670r3BG1z0KXprO5F_A6rAgjS8ega0xxiPK29ZGH_I=.pem", + "location": "security-state-staging/intermediates/20260814135939--81949f67-c35b-4df5-9169-681637f40aff--a13c63a6-50a2-4642-abd7-abda4732d7fa.pem", + "mimetype": "application/x-pem-file" + }, + "id": "81949f67-c35b-4df5-9169-681637f40aff", + "last_modified": 1786719422269 + }, + { + "schema": 1786715978233, + "derHash": "2WVvTk2D9ieD2a3mAQTu2Q2cxQwppu8KeDZ3UdL4x0g=", + "attachment": { + "hash": "6750e05d4893070cfb52ddcc116175f17af7e8cbff4aeb488e33f86fdff6242d", + "size": 2068, + "filename": "9kH6U5RbUxBK7wuz5gsw5mNDguGYHSsQE581YuJ3L8M=.pem", + "location": "security-state-staging/intermediates/20260814135938--48445007-a325-46db-b1fc-efbab6bf70cb--953f2d09-ab4f-426b-a213-54c51e73a133.pem", + "mimetype": "application/x-pem-file" + }, + "id": "48445007-a325-46db-b1fc-efbab6bf70cb", + "last_modified": 1786719422266 + }, + { + "schema": 1786715975309, + "derHash": "Ap9U/dx+xJJ0cDelJOnWoTyAI21TSH51xO3MGR7+cLs=", + "attachment": { + "hash": "ab7e22a57dd628f5974ebad14a41a74c35739ab88f64497d80fb4902ce6e294e", + "size": 2048, + "filename": "ao3y_KUL8UEFFdFan_SsVKCBeYFLvR1aYoL6fN6BcQE=.pem", + "location": "security-state-staging/intermediates/20260814135935--9e2b135f-4af9-45d7-9bb9-8254e534025e--ed92d3f0-5453-4208-b582-3baa4991308f.pem", + "mimetype": "application/x-pem-file" + }, + "id": "9e2b135f-4af9-45d7-9bb9-8254e534025e", + "last_modified": 1786719422263 + }, + { + "schema": 1786715976312, + "derHash": "ax6i3uDzSn5T1k6785xYPa+UGNg6WqnmJY5PK+cHs24=", + "attachment": { + "hash": "c20453d8238d0119828cef0cfc71524cd2b8e6959b5039f41c4169371ae6ccab", + "size": 2036, + "filename": "DXN09R5i5Np1c22ndGrJ_MoetOjgxldd-zuMVWZbnGY=.pem", + "location": "security-state-staging/intermediates/20260814135936--234afca6-9350-4512-8de9-e09b347886dc--b6e93552-935a-4bd3-bc6c-f3da0b8d34e4.pem", + "mimetype": "application/x-pem-file" + }, + "id": "234afca6-9350-4512-8de9-e09b347886dc", + "last_modified": 1786719422260 + }, + { + "schema": 1786715977270, + "derHash": "40c67O8Qix7m9J4XeyUCNgWgwEGx2XqfWc/8ANIuAlE=", + "attachment": { + "hash": "7a4dab9f2f907b3b80ee6c6c8204a8d54f0276e4d6a844ff0f6ebcd7c405afe9", + "size": 2028, + "filename": "tZBwyuZjIwvgOXCc1hUkhh_LdM4FpDhjcEgvZyHvKnQ=.pem", + "location": "security-state-staging/intermediates/20260814135937--bf46dcb7-a3ca-4645-bbfc-87487b4103cf--76286b94-4113-495c-b96b-a3dca81cd5ba.pem", + "mimetype": "application/x-pem-file" + }, + "id": "bf46dcb7-a3ca-4645-bbfc-87487b4103cf", + "last_modified": 1786719422257 + }, + { + "schema": 1786197576587, + "derHash": "2boeBPa02GIHfCBTaOquJVNQ5vRNp0V4r8HCpCTIoqU=", + "attachment": { + "hash": "98205152b98a923d0fff4849ea0bf7016b0c54e859f2b2b6980e3688968135ea", + "size": 3007, + "filename": "Y47oTV-_JwCDbfQLL9qM9CByBj_hKZG8ADzcseD9-SU=.pem", + "location": "security-state-staging/intermediates/20260808135937--6fa5eff0-ee2b-4da5-bce7-21b57886d7e4--b7ec9526-6709-44b1-a797-c05c5839c8eb.pem", + "mimetype": "application/x-pem-file" + }, + "id": "6fa5eff0-ee2b-4da5-bce7-21b57886d7e4", + "last_modified": 1786201022759 + }, + { + "schema": 1786197575618, + "derHash": "CKecrIfySS+c/cEzuUxD++OW/PniQOaMZ/mgnMBh1Ro=", + "attachment": { + "hash": "a7338d8d42d3693af12c1e1e0b88796628222a942ff48e692405476348dc7b40", + "size": 1276, + "filename": "L8tSMygP2qfiCgBjaMeFLxwWeZ5ZZt-zRgI-NmZvhN4=.pem", + "location": "security-state-staging/intermediates/20260808135936--205744f0-c2fd-48e7-83b5-7a0514515d17--cce193b9-51b6-493b-8fdc-0f68beab8558.pem", + "mimetype": "application/x-pem-file" + }, + "id": "205744f0-c2fd-48e7-83b5-7a0514515d17", + "last_modified": 1786201022756 + }, + { + "schema": 1786197574666, + "derHash": "Ob63XonDKxnX6J0sI884gLxZsmsEWbGbwX1IlJX4u7U=", + "attachment": { + "hash": "473d1453a8e0934440ea397dd114349b75630d80a8be13428a2429c70e8ea388", + "size": 1276, + "filename": "RBPRCjud3SI4CP9qihbgXyCybs5D84-W64yOdwLbBO8=.pem", + "location": "security-state-staging/intermediates/20260808135935--163e612c-fa75-40be-b261-54a18624b4b3--96b4d55e-4546-4506-b89a-1f1f5c0bc4ce.pem", + "mimetype": "application/x-pem-file" + }, + "id": "163e612c-fa75-40be-b261-54a18624b4b3", + "last_modified": 1786201022753 + }, + { + "schema": 1786197573692, + "derHash": "owirBuaXUItod3w14fa2xXPjIAoOar5iF4H1r5zwSGI=", + "attachment": { + "hash": "3c8591d2f68f735196255f2fac1102446f96ed9888eab82841d9527e140bd731", + "size": 2426, + "filename": "4uyeO3157L2dZRlBov9JNi7UURr3UBiy0Kr9z1PY3yw=.pem", + "location": "security-state-staging/intermediates/20260808135934--74e25609-1821-4577-b1af-72e03d439887--10691eed-af8e-49d8-b1bd-da8f72f274b4.pem", + "mimetype": "application/x-pem-file" + }, + "id": "74e25609-1821-4577-b1af-72e03d439887", + "last_modified": 1786201022750 + }, + { + "schema": 1786197572630, + "derHash": "3NWF4DaEummr+js46FFuQwt0gl/67je5YlkHkHtpDaI=", + "attachment": { + "hash": "c9cdc4c0b57eda69f89b0b17a548f8f4ce60e51cff4df4009dd6db97c8dfff62", + "size": 2422, + "filename": "4sUnvaxBD6_fbqWC8W06Jxxd1bdQtiHhEkNaEDaTQig=.pem", + "location": "security-state-staging/intermediates/20260808135933--49380f51-645f-4dc6-b32a-065c058dd3a1--f5870797-62b5-43b8-ac60-899bf65bc627.pem", + "mimetype": "application/x-pem-file" + }, + "id": "49380f51-645f-4dc6-b32a-065c058dd3a1", + "last_modified": 1786201022746 + }, + { + "schema": 1786024773696, + "derHash": "KHun0iYH1Wa4Ny6xjTEVrvA3qE/8GTK/tLUgDfpgBks=", + "attachment": { + "hash": "f4eb7af35e89f631f17ef386a187301dfc3ad76ad7f3a4948822e97d4669aa92", + "size": 1244, + "filename": "xCdeAgEyMVQoDiqRtcR7GKH4Px3ztvJQ03ENuf1jIBg=.pem", + "location": "security-state-staging/intermediates/20260806135934--cea95285-009b-4aa0-97e6-3a025a068e1e--b1fd0d60-4035-4383-9432-95586845375b.pem", + "mimetype": "application/x-pem-file" + }, + "id": "cea95285-009b-4aa0-97e6-3a025a068e1e", + "last_modified": 1786028222450 + }, + { + "schema": 1786024772681, + "derHash": "kV1miBHRlcx8lhTcP4KN87KRs15hCrsua0SThi9N43k=", + "attachment": { + "hash": "d1dfcd3b3f42e41a05f041c27d4909d19c9a46c54f7fc371e001a9d7bd0d47d3", + "size": 2463, + "filename": "PXOyA0uXo2z7W15EJ48em_wITc8eGkDuyCeMIUj31FA=.pem", + "location": "security-state-staging/intermediates/20260806135933--25ed4233-9ed7-48cc-8cfa-f8eade9df11a--d561b6be-12ff-4196-b7d2-b34204002658.pem", + "mimetype": "application/x-pem-file" + }, + "id": "25ed4233-9ed7-48cc-8cfa-f8eade9df11a", + "last_modified": 1786028222447 + }, + { + "schema": 1786024771230, + "derHash": "MNzyWY2KkQ+gJ6dbPw32KEp7W3MVK/VPxaldAf/w/eI=", + "attachment": { + "hash": "018a234c2e31b6a8ad8b24ef09d0b828c92c51c6d11b8097d2ebf716ef13ca56", + "size": 2361, + "filename": "lGBlQRwFOcsG8uVhM7n4ddbxnH8BwrOV2iSLkMxtjiM=.pem", + "location": "security-state-staging/intermediates/20260806135931--fbbdf26e-05f9-4d2c-ae19-bcaf262cbec6--944f1236-5aed-4333-89b0-5ada39ac66d8.pem", + "mimetype": "application/x-pem-file" + }, + "id": "fbbdf26e-05f9-4d2c-ae19-bcaf262cbec6", + "last_modified": 1786028222444 + }, + { + "schema": 1785765575091, + "derHash": "XSOyaYJ8z/GoHwsFEPmnjmLSgGGSltlik9Z/h8ZXTEs=", + "attachment": { + "hash": "d68b2ba15f4484499446504014072c1921f2fb7d7e6b4ccb59867b99247912e5", + "size": 2292, + "filename": "azDh_cxo0jURNVgVI9rjlHztZtffM490bhNYRBzEyUM=.pem", + "location": "security-state-staging/intermediates/20260803135935--c04ad664-b6cb-455f-b437-5f331f8d2b11--db7e94c0-ca3b-4cbf-b780-c09ae5ab63d4.pem", + "mimetype": "application/x-pem-file" + }, + "id": "c04ad664-b6cb-455f-b437-5f331f8d2b11", + "last_modified": 1785769022638 + }, + { + "schema": 1785074373657, + "derHash": "I9LQDeM7S5J9q873IKNurbZZ55Yl285TNr5i0K/Lkqo=", + "attachment": { + "hash": "c9381038f6422f96e0cc3cf8c11edf765183d0b8c89b02103ec9fb05eef39ef0", + "size": 1878, + "filename": "k286j7bdZQfoDSoxYpOwRVRlptTGYpKHZ9v5bTKFt4g=.pem", + "location": "security-state-staging/intermediates/20260726135934--e7ba3700-4bc1-45c1-b5dc-6a007e6c03a0--e7611546-a89b-4c25-90ce-6e3955398645.pem", + "mimetype": "application/x-pem-file" + }, + "id": "e7ba3700-4bc1-45c1-b5dc-6a007e6c03a0", + "last_modified": 1785077822687 + }, + { + "schema": 1784815190097, + "derHash": "LBtTaIPj6lhFw4hvDVNHMcxemWev5hH2FwBJ/EHlLcE=", + "attachment": { + "hash": "1937535098aa9611138a823f70e551c7bd1483ce55767c17a48a1eca5405733c", + "size": 1642, + "filename": "gnOPIG1ZLPEFMUGic4huaYe1FTl0cNsUfSDwO_IDV90=.pem", + "location": "security-state-staging/intermediates/20260723135950--81ad4541-4876-4555-8ca7-fe64f710603c--4b893465-1f7a-4ed4-ab2d-556c695e779a.pem", + "mimetype": "application/x-pem-file" + }, + "id": "81ad4541-4876-4555-8ca7-fe64f710603c", + "last_modified": 1784818622714 + }, + { + "schema": 1784815188170, + "derHash": "QWVxamcjamSxiyZcryQeGYr7AMnNDinOYY9GhxgguxU=", + "attachment": { + "hash": "0936304f759a4c8cd3723e5fe1b4d3ad170a3dcf6f1383638aea83613a75b0e4", + "size": 1199, + "filename": "DCN_o-tMvb2rqDTrIW9Y02fqwfw-YkjSYIBuvYX2EC4=.pem", + "location": "security-state-staging/intermediates/20260723135948--7ffcdebe-e597-4abe-946f-71ae08384574--0c2ad5e3-49f0-4b7e-91d1-c5ee5e5bb4bc.pem", + "mimetype": "application/x-pem-file" + }, + "id": "7ffcdebe-e597-4abe-946f-71ae08384574", + "last_modified": 1784818622711 + }, + { + "schema": 1784815185243, + "derHash": "SY9oPSukCsIKQ+gMW30mf0Q+FeuJa2FrOlC3C/vk5EA=", + "attachment": { + "hash": "191cb18344988da69e94f089b3a3adb466aff4ba4cc585b8a9a07a6c124cbfcc", + "size": 1236, + "filename": "o8H9SftZVhn9jmy0twzX5C8l8H5ilCmPIz-5wJWyuvk=.pem", + "location": "security-state-staging/intermediates/20260723135945--4b8b5076-77ae-4b8d-9f5f-b8972bc5b3c0--f2af36f8-7d59-4485-a454-868e43049c9b.pem", + "mimetype": "application/x-pem-file" + }, + "id": "4b8b5076-77ae-4b8d-9f5f-b8972bc5b3c0", + "last_modified": 1784818622709 + }, + { + "schema": 1784815184283, + "derHash": "1wmx41obTUckwBs/uIhg39/LZq7x3gX5o0n03DWPzt4=", + "attachment": { + "hash": "b842969bdaf99874f18f4d699ca10b9d9c071545078aa2d8b81f555e43cf1497", + "size": 1167, + "filename": "S1LzXigPTQyZ-xy1IzavZ8n-wcMOw62rlMS-Znv1UOU=.pem", + "location": "security-state-staging/intermediates/20260723135944--cdc018f5-2d04-4399-86da-2842bb7a0cac--c9194992-0eb3-44b4-84d9-03f26d25d781.pem", + "mimetype": "application/x-pem-file" + }, + "id": "cdc018f5-2d04-4399-86da-2842bb7a0cac", + "last_modified": 1784818622706 + }, + { + "schema": 1784815183247, + "derHash": "rmqcUMlCIgyDkgoxYXLtZHEeQKxYIPOGFofFyKBNEH4=", + "attachment": { + "hash": "82288180044ea38c8b3f0fdb5bd75c1266819828ece1ac3da9fbe7ced906e4b7", + "size": 2316, + "filename": "5MB5SbxMyIMh_l2doCTsyiYuPz8FIANpZ7Ewx516rV0=.pem", + "location": "security-state-staging/intermediates/20260723135943--36c4b89d-4803-49d8-aa4c-bcfa244aaf74--b4a77d30-9cca-4dc7-b206-c8c23a16fcd2.pem", + "mimetype": "application/x-pem-file" + }, + "id": "36c4b89d-4803-49d8-aa4c-bcfa244aaf74", + "last_modified": 1784818622704 + }, + { + "schema": 1784815182291, + "derHash": "BFsRItC350uGeryHxW+Q1N9VgWnyUjWLI2xtesPDWig=", + "attachment": { + "hash": "6ee09e11f58724320797dc3a4332a4b9a67f56129baa4e3f78f2dcd059ce404c", + "size": 2296, + "filename": "j_1VAKd9p9vT1fcjjmaL8yTsW1ihrWAbN0pTkZ_uDks=.pem", + "location": "security-state-staging/intermediates/20260723135942--f2480b4f-b27b-4af5-93c9-5c576f24b86a--633fe34b-b943-42b3-906b-8a24d0cbdffe.pem", + "mimetype": "application/x-pem-file" + }, + "id": "f2480b4f-b27b-4af5-93c9-5c576f24b86a", + "last_modified": 1784818622701 + }, + { + "schema": 1784815180351, + "derHash": "zSEShMNsqK0LtWfm9O9gHznUrpDcJfHGYITBjTzCxPM=", + "attachment": { + "hash": "4c5d70597f6e7bb1553b7b7f9e0b401aae479684fe742204b8e976154e110a11", + "size": 1195, + "filename": "3jp0NGSmYgsP0lX8WWlD2gCDq_PJB8pQhWOswz89ilE=.pem", + "location": "security-state-staging/intermediates/20260723135940--6ebd5e5a-d4d2-4d76-85e5-1022a39a02c9--bf27d26c-68ed-4dc9-822c-e14ab8e2f09e.pem", + "mimetype": "application/x-pem-file" + }, + "id": "6ebd5e5a-d4d2-4d76-85e5-1022a39a02c9", + "last_modified": 1784818622698 + }, + { + "schema": 1784815179369, + "derHash": "9nxVv5NB5sVQQ6xrbHhMacIauM8V1Tj1NycBeSsBkv8=", + "attachment": { + "hash": "051d77a43e70d6edc754b913a64eb5d12d9d0b3e273615512b9b932ae081fcdf", + "size": 1236, + "filename": "EN88QmRUtdCIMdOMqmdHlsfDGsmwzNubnEmElbrlqrE=.pem", + "location": "security-state-staging/intermediates/20260723135939--f72152dc-9bdc-42ff-baec-a8e9d99d4c16--2511635b-43f7-4e1d-9047-51d3d2be65be.pem", + "mimetype": "application/x-pem-file" + }, + "id": "f72152dc-9bdc-42ff-baec-a8e9d99d4c16", + "last_modified": 1784818622696 + }, + { + "schema": 1784815187226, + "derHash": "4APj5m9ZCgK8iXFMgh0DyJ4+osvLObzCKwBIlHy0410=", + "attachment": { + "hash": "836c4863e76e6b887e1a23fa5012d67717c82b053354359da89729698c0eb94a", + "size": 1167, + "filename": "pE3yg8Yc4l79FtG1n-1ltmLXue8ZWVJpJKXluX1GcLA=.pem", + "location": "security-state-staging/intermediates/20260723135947--42187614-1bb6-4e05-be27-f876bc738632--dab30666-d3eb-4b21-8490-e29493eedb36.pem", + "mimetype": "application/x-pem-file" + }, + "id": "42187614-1bb6-4e05-be27-f876bc738632", + "last_modified": 1784818622694 + }, + { + "schema": 1784815177314, + "derHash": "HUssW9ue8qdDtz1/RVWY3JHPfhK7yQ+2tJFEVG5L6/g=", + "attachment": { + "hash": "b4b0bc3886c26fbbde6e23843139b92fabfbfbfbacb13fd2847f3f8ded1a1ccc", + "size": 2353, + "filename": "91NDbVItIt402o7h-RZZ0BgEiyipbeQxYO4J23p0Cf0=.pem", + "location": "security-state-staging/intermediates/20260723135937--f25c1d75-b33b-4cd0-bca7-ba10c1b8c583--a539160b-1734-4f58-a7da-0b07f6ba06ba.pem", + "mimetype": "application/x-pem-file" + }, + "id": "f25c1d75-b33b-4cd0-bca7-ba10c1b8c583", + "last_modified": 1784818622691 + }, + { + "schema": 1784815181314, + "derHash": "g89/qCPYoHT+DF/KwnwJWiNPqrXy67HmXomNcPfrFPU=", + "attachment": { + "hash": "8a1ea8f0163038e0513a1953129e679280025372b8def88c29a2e6723b0b2c49", + "size": 1187, + "filename": "JKgxhQ9x_iAal-95MEaaxs6J27UDVI1Q91TyMV8xoAA=.pem", + "location": "security-state-staging/intermediates/20260723135941--21071063-0e39-4d7a-8a5a-582e4be1c1c4--1ded7534-d55e-4ecd-beaa-c367d50c3a6d.pem", + "mimetype": "application/x-pem-file" + }, + "id": "21071063-0e39-4d7a-8a5a-582e4be1c1c4", + "last_modified": 1784818622689 + }, + { + "schema": 1784815178338, + "derHash": "L2JnGZTk46u6oNyyfeglgu7pU/8p7nUALrK400VRpTo=", + "attachment": { + "hash": "58358f7e3ee3670262cf578155aed5a80657f831da849ba5078db9098ceb56b0", + "size": 2316, + "filename": "NoTM_X5sXUfxPICCGoAwk-9O3mjByDfOik84yHk9FkA=.pem", + "location": "security-state-staging/intermediates/20260723135938--7a47ca60-ecdc-4b3f-a90d-ef7bb6c660f7--0614fc94-8636-4de6-8939-4330d5a230b4.pem", + "mimetype": "application/x-pem-file" + }, + "id": "7a47ca60-ecdc-4b3f-a90d-ef7bb6c660f7", + "last_modified": 1784818622686 + }, + { + "schema": 1784815186208, + "derHash": "NLEGA6cBICbTszXS3zPcGBJJRuEVHFlysm3E9ofKRJQ=", + "attachment": { + "hash": "e0fb130b4291a717a6c659a12da734adc7182567c3d4369773d7c116354e8200", + "size": 1642, + "filename": "zJOq1YOGLkHMdoRr2HCO-Ykg8PxgYGGGQSVrkzAPYI4=.pem", + "location": "security-state-staging/intermediates/20260723135946--a3a1f7dc-8307-4300-a19a-cac1284b46e2--7612429a-57af-483c-8d9c-9898ce15b26f.pem", + "mimetype": "application/x-pem-file" + }, + "id": "a3a1f7dc-8307-4300-a19a-cac1284b46e2", + "last_modified": 1784818622683 + }, + { + "schema": 1784815189128, + "derHash": "SSxPX9SCWOpT/FICRubWEABRQoLl1ImFKFcka5WogSU=", + "attachment": { + "hash": "c8bb098bac5b3faa72543c19bebda6117744d6454fa5edfc4e4ebb18909e31cc", + "size": 2333, + "filename": "8mWosSaR_zGwOp64GjnHM_5S12chR0SvExq6du8H4O4=.pem", + "location": "security-state-staging/intermediates/20260723135949--050ab2b3-ecdb-4a86-9b01-2752df8f06c6--8403bc4a-af74-477b-aa6f-9b68ee2cdc20.pem", + "mimetype": "application/x-pem-file" + }, + "id": "050ab2b3-ecdb-4a86-9b01-2752df8f06c6", + "last_modified": 1784818622681 + }, + { + "schema": 1784728768344, + "derHash": "j8zxsojhjOZjyOJEheLyUTpjxFguWtsZZVmEYkZsSAk=", + "attachment": { + "hash": "3d8bd4a78c431f2cc2072bd42defadd3944481fb898a1dfa2b7d0c0757883ed2", + "size": 2361, + "filename": "3bM59asVjUj1pQCyJqIgC_XaLxttUJpe1fRq_BQyHyw=.pem", + "location": "security-state-staging/intermediates/20260722135928--7ca6a2cb-1d38-4e4e-a170-bf776a387689--79ac42aa-3499-483f-8343-98e3bed04075.pem", + "mimetype": "application/x-pem-file" + }, + "id": "7ca6a2cb-1d38-4e4e-a170-bf776a387689", + "last_modified": 1784732222384 + }, + { + "schema": 1784728767376, + "derHash": "yk5CvXTQYehMC9awM75/vsZXbiPV76lgsSujn4HYW14=", + "attachment": { + "hash": "79b31382a2e2cb1a07d8ed2f1bb94c73e0e2fd5396b2689e81397b9fc1b6e52e", + "size": 1987, + "filename": "-yAVNBUL6wHt7RX2jXDOfJ2T_B8q2RTFUe7suyEIo3A=.pem", + "location": "security-state-staging/intermediates/20260722135927--29f4c992-0f42-42b7-b430-06f8f25780da--8b90a6e1-5ce0-4ee1-95be-1f389cbbf3d6.pem", + "mimetype": "application/x-pem-file" + }, + "id": "29f4c992-0f42-42b7-b430-06f8f25780da", + "last_modified": 1784732222381 + }, + { + "schema": 1784343568255, + "derHash": "JIIN7QEZd/GBkoCYGBm5epbX0WQV0QLD5u9Mqx/vmoQ=", + "attachment": { + "hash": "0982e224b403ad1478e437eccd4edfc10c400b5b711b83c2cbf295f1c485f79f", + "size": 2316, + "filename": "YcBAiOXkKgvH4MZOYMbi5XCa6ihWPBRfywpBKVU-KJk=.pem", + "location": "security-state-staging/intermediates/20260718025928--469d67a4-6576-4d28-aed2-7ba3958d760d--8d9d7423-059e-4c28-9db2-d5cf989048bb.pem", + "mimetype": "application/x-pem-file" + }, + "id": "469d67a4-6576-4d28-aed2-7ba3958d760d", + "last_modified": 1784347022814 + }, + { + "schema": 1784041209373, + "derHash": "Tr46XgVh9Pj7wLBemQMufbycGMofwH3DI9yQAeGM6zA=", + "attachment": { + "hash": "f62402fb9425c5dd1d1a596998282f970f53fcbb791048b04ff114de6fe54d99", + "size": 1024, + "filename": "8spT986C0EyVwJzC8vp-wVfQ-P7OCWkKGqbx4wPmt1M=.pem", + "location": "security-state-staging/intermediates/20260714150009--6b1d6bc9-35ca-4756-b81f-9e61ded3e93a--8d506522-e227-43ad-9570-38211c9d4334.pem", + "mimetype": "application/x-pem-file" + }, + "id": "6b1d6bc9-35ca-4756-b81f-9e61ded3e93a", + "last_modified": 1784044622575 + }, + { + "schema": 1784041205068, + "derHash": "I172gJyv8OxaDx7cNvtSzNwyi1pMxGMNqqiDmzh6g24=", + "attachment": { + "hash": "83f9934bd0050b1017c22fdf02115352ce60a7b0d125d6d11c7540fe3387de68", + "size": 1561, + "filename": "LvuAxGX2Q3XiunS97SGTuTBOiN5ke14BFa6zkkILJ28=.pem", + "location": "security-state-staging/intermediates/20260714150005--29962394-3889-4d60-b886-e367d01c7a5f--bec4756a-4841-4371-8b8b-4885ccc3334e.pem", + "mimetype": "application/x-pem-file" + }, + "id": "29962394-3889-4d60-b886-e367d01c7a5f", + "last_modified": 1784044622573 + }, + { + "schema": 1784041202991, + "derHash": "y1erxKRGnMYBZeZPvT0fdOyS3HqLnxBSRTZVJugJLEE=", + "attachment": { + "hash": "8bface417602bb9633d7882c6032b06ff9af60c74826bf4182da9313289b5bd2", + "size": 1028, + "filename": "lgGsy3PJaGFKmllriTwxXP1WjvJQVzZ7Dk5r9_NOr2I=.pem", + "location": "security-state-staging/intermediates/20260714150003--56d829e8-0bb9-45ba-bac1-d8f0384bdb35--7ec4cdd9-a289-4db4-8839-ef17417c315c.pem", + "mimetype": "application/x-pem-file" + }, + "id": "56d829e8-0bb9-45ba-bac1-d8f0384bdb35", + "last_modified": 1784044622571 + }, + { + "schema": 1784041208293, + "derHash": "NRq7UYnc46zV4EhKi2rs1dd183aScCFQ4g7TCftfiwM=", + "attachment": { + "hash": "1c165b7e0812711dbe1475f70180953622da28faf7341a377f87193eeb237dd2", + "size": 1561, + "filename": "gg0YcTj5jOQm82oyFLZguHpjtfSUaQS65utcVzrEXb4=.pem", + "location": "security-state-staging/intermediates/20260714150008--1a0bb526-95dc-4b64-a9eb-b3d8d7b7ef30--925b529f-a5b7-4dc0-a6f0-4c715e1a2a52.pem", + "mimetype": "application/x-pem-file" + }, + "id": "1a0bb526-95dc-4b64-a9eb-b3d8d7b7ef30", + "last_modified": 1784044622568 + }, + { + "schema": 1784041203984, + "derHash": "sGGTsmVvkAPt2kP0tcB6AoCtsra0guIoCVX8njs+u84=", + "attachment": { + "hash": "6df60f36200d2b976370734f8f1c8b80412f2a0253f56697f6d024f9f0d37e05", + "size": 1561, + "filename": "2PapRBB8oK8vWUGt2F5OvDkYXOCXOU4aHTiHNiWJbcs=.pem", + "location": "security-state-staging/intermediates/20260714150004--36bd6414-0a39-4c85-b996-0425effc4005--896e56a3-55e8-4d47-9866-eec2ceeac5f9.pem", + "mimetype": "application/x-pem-file" + }, + "id": "36bd6414-0a39-4c85-b996-0425effc4005", + "last_modified": 1784044622566 + }, + { + "schema": 1784041196898, + "derHash": "r/NMVJcZXxPIqaXQm2ryE2TcHzgT7PlO7Q2raD4V+X8=", + "attachment": { + "hash": "1d195b8380d540180c6e9937fe4778d2d5a633c763cd48cb4ad6b051d506f4d8", + "size": 1561, + "filename": "x9liFVXmtpq_InfThi7J4KHI5zkf9iZZSIozzQBIVag=.pem", + "location": "security-state-staging/intermediates/20260714145957--d0661926-a6c6-4bbc-a047-d888ffe2b354--df721803-34c0-4d0a-8d76-f1609fda13e9.pem", + "mimetype": "application/x-pem-file" + }, + "id": "d0661926-a6c6-4bbc-a047-d888ffe2b354", + "last_modified": 1784044622564 + }, + { + "schema": 1784041200032, + "derHash": "RH23+zJo11XEOv6zVdVwQwg9Yas27UJ4CrAU2bN1+9M=", + "attachment": { + "hash": "d97037e42ff68bee8edbd5beac2d263570f33cf0e26df33e7b2f135352ea8597", + "size": 1024, + "filename": "KwGeOXSHXIjrtIoo644ROMza_7mmQURrMEoYJqrmp2E=.pem", + "location": "security-state-staging/intermediates/20260714150000--64a590e7-93bc-4525-af47-2397e4b7b134--dbb5e7e7-afd0-40c3-b8f7-7e3bbc619a36.pem", + "mimetype": "application/x-pem-file" + }, + "id": "64a590e7-93bc-4525-af47-2397e4b7b134", + "last_modified": 1784044622561 + }, + { + "schema": 1784041178620, + "derHash": "BQxj1B678WYhyM+s6YKh+sbyXxG0Cq0jspCYNIrs4Iw=", + "attachment": { + "hash": "084e43997797db32f66a23fc8c14ece0089b564976104868b10ea63af8414653", + "size": 1024, + "filename": "O5KO2F4RfeHFC5s_UN6VSnL6XrTyxMvHwU0BJ67S3pE=.pem", + "location": "security-state-staging/intermediates/20260714145939--07c9899e-33df-4e57-93c2-184bbcc01578--2b2f523b-4045-4f21-b793-bb3552587bd5.pem", + "mimetype": "application/x-pem-file" + }, + "id": "07c9899e-33df-4e57-93c2-184bbcc01578", + "last_modified": 1784044622559 + }, + { + "schema": 1784041192152, + "derHash": "s04Xwyr8iVf+/30O9fn7OJ1FDDKiOOCGlkLdId/FiFU=", + "attachment": { + "hash": "e7ef72f96b60c6739f1c9bcb9870ce19d3d89449c3ca7344ab26f091ab27acda", + "size": 1110, + "filename": "TAbukwMKDV-punbr5KglVAZsMYCo7D7lLm9985EJrw0=.pem", + "location": "security-state-staging/intermediates/20260714145952--087816ea-c46d-493f-a04f-b5f81994a19a--3c988b55-91c6-4fe2-847e-6f331ae4e435.pem", + "mimetype": "application/x-pem-file" + }, + "id": "087816ea-c46d-493f-a04f-b5f81994a19a", + "last_modified": 1784044622556 + }, + { + "schema": 1784041177653, + "derHash": "4FK2zC8sKocsyxvz9z2ZzrK67f1IhsVFK1f3uJzUvI8=", + "attachment": { + "hash": "78b35b6e8d18024e734486c21f9e9fbe32a31b2b0e9ae5c27bee307432f9dd66", + "size": 1561, + "filename": "v9ynqV4bb3tgtzvRDPip5WM67mIqDACOWO-xCSIrJL4=.pem", + "location": "security-state-staging/intermediates/20260714145938--3cfd4624-2c42-401a-b480-457226a92305--d50e76bd-49fa-4890-aba3-98a9ccdecf52.pem", + "mimetype": "application/x-pem-file" + }, + "id": "3cfd4624-2c42-401a-b480-457226a92305", + "last_modified": 1784044622554 + }, + { + "schema": 1784041173766, + "derHash": "JWddw3JO2nDnFcvLSffYYJ0XSj3+pRHz9McokPwM3/M=", + "attachment": { + "hash": "86ae1388589bc41a1379305080c3bbe6f83bc24a2e8b839d752ad53c0d28c710", + "size": 1110, + "filename": "uWCjZMTpBspXUkYnyn_39LEv1VIetS6IV_c-2NjkN2o=.pem", + "location": "security-state-staging/intermediates/20260714145934--2be4bf30-0848-4d53-95a4-738f47289a01--5357d0fd-6e37-4919-a53b-6813f9a4ad8d.pem", + "mimetype": "application/x-pem-file" + }, + "id": "2be4bf30-0848-4d53-95a4-738f47289a01", + "last_modified": 1784044622551 + }, + { + "schema": 1784041183532, + "derHash": "F7XecV+CL+LAPgOGEk/fVQjaresvCWvo97H2uH+bJbI=", + "attachment": { + "hash": "179cc2aee4b50d3dafe6576ee6fdcc5719bb11c064a7a58c1f43f793ae54c401", + "size": 1110, + "filename": "2kdwAozY2MGD-mJafNwIpDFggRkB6h8l-A0jaNuH1aw=.pem", + "location": "security-state-staging/intermediates/20260714145943--1b541474-ba50-46b9-a81d-75b87c798796--9681f72a-4e34-4dc5-80b6-0ef90656406c.pem", + "mimetype": "application/x-pem-file" + }, + "id": "1b541474-ba50-46b9-a81d-75b87c798796", + "last_modified": 1784044622549 + }, + { + "schema": 1784041172799, + "derHash": "6wjSk3ktOWCvTuFElXHvBktuz7UDOpMsT09jSSeoalw=", + "attachment": { + "hash": "ef068839b4e818a607aa22ad5e6b95b3261add8528cb837e2584cbb6ae5a3a2d", + "size": 1110, + "filename": "zjShFKYMVe1XphB6XDcCFgMTkZHKl4UhOIY0QwIxfaM=.pem", + "location": "security-state-staging/intermediates/20260714145933--ba3f492b-23f2-4bf5-b518-4dac028767d8--4abd8aca-32fd-4183-87c7-50c128cd2a90.pem", + "mimetype": "application/x-pem-file" + }, + "id": "ba3f492b-23f2-4bf5-b518-4dac028767d8", + "last_modified": 1784044622547 + }, + { + "schema": 1784041195923, + "derHash": "Uus4m73EALwKk8LXcTrokxN+56jbxBjHT0PUlhmx+5E=", + "attachment": { + "hash": "8b6c63d8ab6376185116654a01c6d021c2f7af02ad600ee3c942658ba5bbef37", + "size": 1561, + "filename": "bEUHprLxWOzMUnLaTsen4-becSCSRl1TN7Wmw4Ybigw=.pem", + "location": "security-state-staging/intermediates/20260714145956--5c521ead-24f7-4143-8dee-3a34b0963fdc--d1b188ea-2747-430b-bff1-fae5a46ed11d.pem", + "mimetype": "application/x-pem-file" + }, + "id": "5c521ead-24f7-4143-8dee-3a34b0963fdc", + "last_modified": 1784044622544 + }, + { + "schema": 1784041185437, + "derHash": "dSmnPE0PNxqcdq+0QzdJYLmWnK9DH99aFetwKNQAeLA=", + "attachment": { + "hash": "498d5173ef68c7955a448c561d6493c1395f55e02c15f35d53537fe65540b663", + "size": 1561, + "filename": "0LjHr-fcm2EI_drvxAcX_v5FkwbUkDE58xbgQFiLjPo=.pem", + "location": "security-state-staging/intermediates/20260714145945--f8fcd7a0-d76a-406e-aa51-a4e2e52bfb2a--bbff88c6-8189-4f96-bea9-2758e9639ee2.pem", + "mimetype": "application/x-pem-file" + }, + "id": "f8fcd7a0-d76a-406e-aa51-a4e2e52bfb2a", + "last_modified": 1784044622542 + }, + { + "schema": 1784041199077, + "derHash": "BAkbHVUr81VuKCNHm/Kk5/LeMBOJX5g3++aX+31MHqg=", + "attachment": { + "hash": "3bd73761da030403855a498763634f2081d6f86f34920436278371e657bb054b", + "size": 1561, + "filename": "2iNfnSA936UJSyvCWJFA92o5xF7gzgyYxVq3xjDb6dE=.pem", + "location": "security-state-staging/intermediates/20260714145959--421b5ee7-bc2b-495c-ae06-e0d1588764b3--cadf1deb-1208-4057-8711-fa276c685cc5.pem", + "mimetype": "application/x-pem-file" + }, + "id": "421b5ee7-bc2b-495c-ae06-e0d1588764b3", + "last_modified": 1784044622539 + }, + { + "schema": 1784041170487, + "derHash": "AymhbKRGjhtHxcoqWPX4eCRQgEbxXDUmfWuNLMafP/M=", + "attachment": { + "hash": "3f51864579633299bb7c16026e62aec72d41a77eadd99d09aa94477f67dd74df", + "size": 1110, + "filename": "1fhv94R_N8fpY2XUc8SbZo0lQQ5b1zPcrM7WYYqYmWo=.pem", + "location": "security-state-staging/intermediates/20260714145930--03311c49-30ce-40d5-8fbc-fda5cedca156--588d565f-940b-4408-a6f1-1d1372f60379.pem", + "mimetype": "application/x-pem-file" + }, + "id": "03311c49-30ce-40d5-8fbc-fda5cedca156", + "last_modified": 1784044622537 + }, + { + "schema": 1784041182565, + "derHash": "5xzlkqIY+0/z7+PM8LqfpwxmPwZLedHMYxry1TDATjY=", + "attachment": { + "hash": "204a83710cc754e4af7f9e3ac42d7d674cc88dbd056396ced8fd750cc515716b", + "size": 1069, + "filename": "sEyPWVIsVEo3W9V1q3z6ULG_LVmo8eeo52gRnS6gKEU=.pem", + "location": "security-state-staging/intermediates/20260714145942--70cccfb6-2d19-4b1f-afaa-3f13d9ff970a--e0cb24a3-9fdb-4393-b535-0e920026c13b.pem", + "mimetype": "application/x-pem-file" + }, + "id": "70cccfb6-2d19-4b1f-afaa-3f13d9ff970a", + "last_modified": 1784044622534 + }, + { + "schema": 1784041169485, + "derHash": "R8hzfb/pPDCOQYqx0/NEiA0kBiFY8HnlARgmYpgw35s=", + "attachment": { + "hash": "3aaaaace918b13e599669787629d2e0f0858facdf02a8c6ca1b7211baa7e750e", + "size": 1110, + "filename": "CNW8OS6mTN4VendQ1LHf2BLf1HdcLyIkUIU9eQb51II=.pem", + "location": "security-state-staging/intermediates/20260714145929--b005b4f6-d23d-454e-9c30-d598ff3e90a9--e3e092cd-2688-4e6e-a3f1-ff50f33cb626.pem", + "mimetype": "application/x-pem-file" + }, + "id": "b005b4f6-d23d-454e-9c30-d598ff3e90a9", + "last_modified": 1784044622532 + }, + { + "schema": 1784041184485, + "derHash": "UJfAQrpGKMGGKP7zAfV5jzvKXTCX2j7fMK8MKrTcImM=", + "attachment": { + "hash": "4e3979c82cb271109ff012b9ebe1a2cecf87b67b4ae7f3b717cb992de982839a", + "size": 1110, + "filename": "TmJwuQzDKYuERaVtynnWsyq4RzV4jqUAnR2-d7JuddI=.pem", + "location": "security-state-staging/intermediates/20260714145944--84e09988-0e0a-49c8-b465-a948f98d5ec4--e93ba4ed-015b-44e7-93a5-4d890ca3e65f.pem", + "mimetype": "application/x-pem-file" + }, + "id": "84e09988-0e0a-49c8-b465-a948f98d5ec4", + "last_modified": 1784044622528 + }, + { + "schema": 1784041168417, + "derHash": "GAOgOASxsgvWsGTmV0l4lC+O9vzyr88oz1FvOC+N7Ec=", + "attachment": { + "hash": "7e0de83e6f1856129e0c45ec150df76c67b809a33ee7a572d2197958ac240f48", + "size": 1561, + "filename": "qiUdzqZhQALFVzhF1mDC6oKoD5wJECUymitHqddvmWw=.pem", + "location": "security-state-staging/intermediates/20260714145928--d67c916b-7e01-42dc-b513-6a5723cfd60f--fa51a6a2-31fa-4246-93b9-3d2a6611d098.pem", + "mimetype": "application/x-pem-file" + }, + "id": "d67c916b-7e01-42dc-b513-6a5723cfd60f", + "last_modified": 1784044622526 + }, + { + "schema": 1784041194992, + "derHash": "QY7/VdEeu8f60+2c/sVy4xQuu2SEd6spZiRGIXEpS/Y=", + "attachment": { + "hash": "c51e2c97850bcf9151581a8fba528e358c8277aabec9da669e441fb800723d80", + "size": 1028, + "filename": "-LzEIL7aV9AxT33zv7mxf3Hp6LW7QKFvzUQwEfhCKkE=.pem", + "location": "security-state-staging/intermediates/20260714145955--0e59ea89-4f57-469a-bad1-313534b2856f--021bf244-8c0e-4511-b09f-98280dd5839d.pem", + "mimetype": "application/x-pem-file" + }, + "id": "0e59ea89-4f57-469a-bad1-313534b2856f", + "last_modified": 1784044622523 + }, + { + "schema": 1784041181564, + "derHash": "hgSMHRLpPWlQ0VU0hckOv6OeC60CpDXZcksKleWkJB8=", + "attachment": { + "hash": "c517460f2cf4f6b93dc8526bee28594148c4fea8505a80480b962525b15886e7", + "size": 1110, + "filename": "2_YP0IzDTXyocLCug22KwWuQbjoNGGstzzNFrWUUS5E=.pem", + "location": "security-state-staging/intermediates/20260714145941--aecb86a1-5038-427f-8ae6-55aca30bbd28--83dc4493-b6b7-4df2-8eb9-23fbdb94ae4b.pem", + "mimetype": "application/x-pem-file" + }, + "id": "aecb86a1-5038-427f-8ae6-55aca30bbd28", + "last_modified": 1784044622521 + }, + { + "schema": 1784041201011, + "derHash": "IIKjiDUIA41B7PXepW2HDzkdvOvJyUkFb3GOjwvuxxE=", + "attachment": { + "hash": "85e4eee03106be47239e0b38bfdbe513b400116953aa37754e036d36ce2323a6", + "size": 1110, + "filename": "EY_6zjBD-TcRCEY04iWJUmnPy2-UUv5FpUxmn_9gjTw=.pem", + "location": "security-state-staging/intermediates/20260714150001--bab0870d-8431-4276-b97c-96a0aedd9f8e--f70945d4-b4d2-4db3-a4cd-5d4c2d423bbf.pem", + "mimetype": "application/x-pem-file" + }, + "id": "bab0870d-8431-4276-b97c-96a0aedd9f8e", + "last_modified": 1784044622518 + }, + { + "schema": 1784041190280, + "derHash": "RfVh98GqWpuXtpcjf5QI0t95BSJUGmENqleHZCgtfLc=", + "attachment": { + "hash": "bcbd138b5265e39f19472c1d386bdd8c054cbe61ee6b11c4a2c9fbe218500fbb", + "size": 1110, + "filename": "zZcE2gWEi0GJn7wNVfrf72CoQ74zVyxcaPiHzy1vwLQ=.pem", + "location": "security-state-staging/intermediates/20260714145950--bfd4a9b7-8fd3-4ba4-8d0b-718c50d92ed1--709465b5-ef5c-484a-8862-b485ac791977.pem", + "mimetype": "application/x-pem-file" + }, + "id": "bfd4a9b7-8fd3-4ba4-8d0b-718c50d92ed1", + "last_modified": 1784044622515 + }, + { + "schema": 1784041207242, + "derHash": "GII/1PSIh5cv/ohN/07yV0JXLGR2FRXlniHz8XM4WDU=", + "attachment": { + "hash": "3a0aa7bc3ae9b9f57711187db73055bde89c63fa03fa6a2fc82dea6df34e62cc", + "size": 1028, + "filename": "eaO2CYne0UR24mxQ_6JggozyWb_ULAU3FSwGGKyc-iw=.pem", + "location": "security-state-staging/intermediates/20260714150007--4c769f68-bade-46e8-98e9-b16455f1ca12--1a2634a1-014c-4746-8939-0dd964d48ce2.pem", + "mimetype": "application/x-pem-file" + }, + "id": "4c769f68-bade-46e8-98e9-b16455f1ca12", + "last_modified": 1784044622512 + }, + { + "schema": 1784041187344, + "derHash": "LyvNzVTybO84ePbmaUyhMBbWoRoa6CeIIJt7GWxdVo0=", + "attachment": { + "hash": "4d9f9b7f097a6b5345f685981318b4cbb96e6db49ec53ab6b2ca24c77ed71c52", + "size": 1110, + "filename": "q2jeTGbYbQNMuBEu4-_z_ta4nH6CnrRbn6XQhHAkxNI=.pem", + "location": "security-state-staging/intermediates/20260714145947--141959f2-6b84-447f-9ddc-e2d295ee1fbe--7672be0c-16cf-4704-8e76-e67cd115c5f9.pem", + "mimetype": "application/x-pem-file" + }, + "id": "141959f2-6b84-447f-9ddc-e2d295ee1fbe", + "last_modified": 1784044622510 + }, + { + "schema": 1784041174704, + "derHash": "x9OmKBh+cY2XAb0xjBn4xzdP3Ei/V7GzqyacpTMO35I=", + "attachment": { + "hash": "fb19331e36f7b300f49e5a4eab9eb3a3e16ab895ea8a1dd3e4fa4db45ae9c501", + "size": 1028, + "filename": "xCMMYR3gJFQnitpDtGyg-d9TZGinD3X-sI20EDu4xJ8=.pem", + "location": "security-state-staging/intermediates/20260714145935--997273d2-0842-4af8-bbe2-2c7d48e7b627--0047572d-621c-4926-a630-63b8f08b9744.pem", + "mimetype": "application/x-pem-file" + }, + "id": "997273d2-0842-4af8-bbe2-2c7d48e7b627", + "last_modified": 1784044622507 + }, + { + "schema": 1784041186395, + "derHash": "TGbw7/BNRUtwiV6FxrfZCEnQth3Y8vCnxb3zVC6RpVI=", + "attachment": { + "hash": "7ad029ba086cdb3f2d1e8a897d10730718af71acc00a937015809f066ebf810f", + "size": 1110, + "filename": "95O3d-OEptIrUO20Px7psjoulYkbaHXR0LBUdlGUMdE=.pem", + "location": "security-state-staging/intermediates/20260714145946--7f050921-c093-4987-b472-838701ce7596--94bfb4c1-1944-44ce-be39-e8fd50f0351a.pem", + "mimetype": "application/x-pem-file" + }, + "id": "7f050921-c093-4987-b472-838701ce7596", + "last_modified": 1784044622504 + }, + { + "schema": 1784041171466, + "derHash": "WpLLFvPHCz9k3o0fyPvIwlF+rMdDjD51BsyxxKIqci0=", + "attachment": { + "hash": "7cb8dc444cdda7a1d1773061bcdf8807ed601c31495507a83d23c913861ac951", + "size": 1069, + "filename": "kBeSHIIDWmTV6-DjYK-0duH8nnHfDuscswGX_D_mFyc=.pem", + "location": "security-state-staging/intermediates/20260714145931--32259295-5e00-4ae7-806d-6cf7cd633205--6db4be20-e86b-4ed2-88e4-e86cbb463730.pem", + "mimetype": "application/x-pem-file" + }, + "id": "32259295-5e00-4ae7-806d-6cf7cd633205", + "last_modified": 1784044622502 + }, + { + "schema": 1784041201975, + "derHash": "DIvUP/xV+h5wT0Q6TvCeG3dCUAbvSRi+RxTLzY3oLsQ=", + "attachment": { + "hash": "4891b5ab83aef4d6c61c61657606f742f679465fa5638d5f60bb8369df02060a", + "size": 1069, + "filename": "82IPnvnBzwu_oJWzDHlJnWQwIeTcj2KSUzH419BC6E8=.pem", + "location": "security-state-staging/intermediates/20260714150002--8f65df13-f996-4104-a1e1-d6792a976960--3a983077-1d90-4175-b192-6df702a6d678.pem", + "mimetype": "application/x-pem-file" + }, + "id": "8f65df13-f996-4104-a1e1-d6792a976960", + "last_modified": 1784044622499 + }, + { + "schema": 1784041176672, + "derHash": "jl3pEQ4I4RsNOlZq/Qp2J4CjlmDPa5M5M23VHuH6kxc=", + "attachment": { + "hash": "25968b17ed9cb42b728fa99a350d32ca08a0a5f1e472fe85fcd9130c35d578a0", + "size": 1561, + "filename": "5p7zGJbtITX07c5VyPb9w-AD4OPG7pBM7xPqf5hzNSA=.pem", + "location": "security-state-staging/intermediates/20260714145937--5eacbff5-c823-4aa4-939a-614a8b6ad7b5--b87423b5-c2ab-4f79-a672-a97eaaa8ff1d.pem", + "mimetype": "application/x-pem-file" + }, + "id": "5eacbff5-c823-4aa4-939a-614a8b6ad7b5", + "last_modified": 1784044622496 + }, + { + "schema": 1784041206189, + "derHash": "c/Rxc04OrD1PW//wDidUrZ7Zmfahz+pZmUVXO1XDq9Q=", + "attachment": { + "hash": "863f51bd6d007ace2eccc5a00a2d5a5026865e575ae9f361215c6d90ec1e01fb", + "size": 1110, + "filename": "-pZiAYXerWMSNuYnCJ7CsgRAeIS6kPf4ME3g0irphjw=.pem", + "location": "security-state-staging/intermediates/20260714150006--33957e18-83fa-4921-ab0f-02d4d954bc1e--1c727c3b-d604-44ae-a45e-c0a0e5b271b9.pem", + "mimetype": "application/x-pem-file" + }, + "id": "33957e18-83fa-4921-ab0f-02d4d954bc1e", + "last_modified": 1784044622494 + }, + { + "schema": 1784041193127, + "derHash": "7M9h5hRthAOa4HY/SbLXwVAisUJiVvkkAe4QvzJupss=", + "attachment": { + "hash": "d6f1d9d30091ae06f71b2324e23d8dfc650f86ef9401e7f2b34ed9fda8ad473c", + "size": 1110, + "filename": "ihM7VnDTwAkW5gyhwCpvua1wJP_JuN-KxMFMdKp_CXM=.pem", + "location": "security-state-staging/intermediates/20260714145953--b50211eb-3fd8-43e2-93e0-6da5262ca762--a03301f5-2516-4ea2-906f-5c03c05213a5.pem", + "mimetype": "application/x-pem-file" + }, + "id": "b50211eb-3fd8-43e2-93e0-6da5262ca762", + "last_modified": 1784044622491 + }, + { + "schema": 1784041198135, + "derHash": "M9eJvZa0BwmYLpuIxr/PdC1mEND5oyK2ILJPxue55J4=", + "attachment": { + "hash": "c9d59415cf71034d587b1e27ec4de9af101e532749163d45d444dacb699c0a54", + "size": 1561, + "filename": "wF2flSFVLjmcfSivLFtm92KNsF_ZhCVQ0xddhKCSZiE=.pem", + "location": "security-state-staging/intermediates/20260714145958--7182a606-a4f0-4842-a103-d018fffc7762--34f02636-ed4d-4654-a121-59193c3554fc.pem", + "mimetype": "application/x-pem-file" + }, + "id": "7182a606-a4f0-4842-a103-d018fffc7762", + "last_modified": 1784044622489 + }, + { + "schema": 1784041188341, + "derHash": "8nfWUMY7RD1TgAw+qv5fuC0qtyJ+7vRtgA+AjK5QEDE=", + "attachment": { + "hash": "047ff35ef702a19679a996b39abfabe3daa0818ab448da1e2341ffbc5bf69d2c", + "size": 1069, + "filename": "9YeqgGwD_UQpRCeUKPPIZnfur2zNX0ZYxExkZYz1XKQ=.pem", + "location": "security-state-staging/intermediates/20260714145948--d1498bf5-53b5-4112-a802-b55a654a7e81--dcad2eec-07e2-4e21-ad16-049cd43cc3c1.pem", + "mimetype": "application/x-pem-file" + }, + "id": "d1498bf5-53b5-4112-a802-b55a654a7e81", + "last_modified": 1784044622486 + }, + { + "schema": 1784041194066, + "derHash": "W689eKNbepvYOceu6xpakrIlxiDYJPflN9ftvLpB768=", + "attachment": { + "hash": "19d4ab34b4767f1057d387389faf4d5a5c007d7239f7bdf9894894b4f50304df", + "size": 1110, + "filename": "CG9zRMm0DhsLzrWUaPaQmHe_g0AfRGuWtrii4MxLt1A=.pem", + "location": "security-state-staging/intermediates/20260714145954--7fb6d110-aae6-4eee-9662-b2fcda8c23d9--7a415432-9477-4fdf-9342-27318c2ae348.pem", + "mimetype": "application/x-pem-file" + }, + "id": "7fb6d110-aae6-4eee-9662-b2fcda8c23d9", + "last_modified": 1784044622483 + }, + { + "schema": 1784041189305, + "derHash": "ptp3zMf2BPfFbwxJIant/sJ5zvG5PS+9PQvaWq7XJEA=", + "attachment": { + "hash": "e057aee447230278205a8f0cc4d7fb5054a311febf79f272e5bb4efeacbfbb93", + "size": 1561, + "filename": "wg7NJlqAyr9fh-96aQz6nflx635wSAnFNKmf80_95ts=.pem", + "location": "security-state-staging/intermediates/20260714145949--36000168-943c-4240-9010-67f89f6a8bd4--b986a3cb-f992-4300-b323-f37d1a576c8f.pem", + "mimetype": "application/x-pem-file" + }, + "id": "36000168-943c-4240-9010-67f89f6a8bd4", + "last_modified": 1784044622481 + }, + { + "schema": 1784041175691, + "derHash": "axq4dsNB1/vWq1acz6hgkN+toaFgePXWWDT9497hUS8=", + "attachment": { + "hash": "b484eea03f9bd3e6f933a4b43e35f4d650c825f1d1b562c819562f82f0f84008", + "size": 1110, + "filename": "AkKitRzO42guo-qjLuIp_Zf24pNwstDOM1YscGPISgg=.pem", + "location": "security-state-staging/intermediates/20260714145936--c10c7d7c-4433-4df8-a470-91ce644a1d8d--55aa01bb-f3c8-495f-913b-c2fb03829aba.pem", + "mimetype": "application/x-pem-file" + }, + "id": "c10c7d7c-4433-4df8-a470-91ce644a1d8d", + "last_modified": 1784044622478 + }, + { + "schema": 1784041191211, + "derHash": "XNxUCMcoP+qFAbBzWBdjlTH5a1Yo0EQRufcqjY2k2Vg=", + "attachment": { + "hash": "9c6952de6c71faf63aafb36130a16a4d7c4e4ed31b7927d2e1dd23264e7045b3", + "size": 1028, + "filename": "2ROzGl25CUBYj6yX8JYRIFDlj9WcMwPCGJNj8FWTDQY=.pem", + "location": "security-state-staging/intermediates/20260714145951--9a8b55fe-1802-4ead-97f0-c6b9a9712554--c17eede8-e62a-4582-8ad7-fd9b3af19b6c.pem", + "mimetype": "application/x-pem-file" + }, + "id": "9a8b55fe-1802-4ead-97f0-c6b9a9712554", + "last_modified": 1784044622476 + }, + { + "schema": 1784041180605, + "derHash": "OkLjXQEoCMKe3NCKjlHpg4p3Grz+O4LLuJp62pMLo6U=", + "attachment": { + "hash": "7980187b8d34e8e5e8272ab69d2b8ce3054abbdb135b533b71289ac80f2ec036", + "size": 1561, + "filename": "bpALxrV-gOA_h4UBkxB-p10bX3e1Zs9TRoC0NykxRoQ=.pem", + "location": "security-state-staging/intermediates/20260714145941--456c503a-ae06-4959-a619-65b32f863839--103e05ba-f8ca-4a38-b175-3fc654f90201.pem", + "mimetype": "application/x-pem-file" + }, + "id": "456c503a-ae06-4959-a619-65b32f863839", + "last_modified": 1784044622473 + }, + { + "schema": 1784041179573, + "derHash": "LueWzEN6npcf07Z7c3JCASdz2HuSidqp4T9+oycIoi8=", + "attachment": { + "hash": "fd2a76f5759db85b711a8d087a314be5b010c114ed0924d62f3027e5ed5dca18", + "size": 1561, + "filename": "bPt_fSGexGwhg_ONDBzyzQc10Uck75rYzM1P77KAMOY=.pem", + "location": "security-state-staging/intermediates/20260714145940--bdb03b08-b8bd-4809-867c-56ae4486b69a--59492e39-1a08-44f0-9eca-77174b243ab2.pem", + "mimetype": "application/x-pem-file" + }, + "id": "bdb03b08-b8bd-4809-867c-56ae4486b69a", + "last_modified": 1784044622470 + }, + { "schema": 1783738768762, "derHash": "Vyu1xwhQB6+3sXhmJ4ru5z3dbXAt1S816lEIGY1iO9U=", "attachment": { @@ -3381,19 +4434,6 @@ "last_modified": 1770263823932 }, { - "schema": 1770260349683, - "derHash": "AWgtouaoeEaNCkd3Firr4yM9xpNbBm9x9IbVZyN14fE=", - "attachment": { - "hash": "6fbfdf92fbd72f425f3df73cff2037914e314dc16e53f081ebc03eedfda08baf", - "size": 1183, - "filename": "nHlNFrIaUP8sll9wo6s4beebmlE1ws9ktxtBqD9Squo=.pem", - "location": "security-state-staging/intermediates/abde9a57-3e97-4d11-a5e9-4241fcb7b841.pem", - "mimetype": "application/x-pem-file" - }, - "id": "7ea70616-63ce-4806-b4cb-3b13e85b6049", - "last_modified": 1770263823930 - }, - { "schema": 1770260350335, "derHash": "pwHtudZbzwe7cgsPJPqO9rCqd9urYhfOKCPC3RX21L0=", "attachment": { @@ -3602,19 +4642,6 @@ "last_modified": 1770263823880 }, { - "schema": 1770260345723, - "derHash": "73FHtwMaz3lC3XSVSd0/2aVkuRazJd+p4lXrueFq7us=", - "attachment": { - "hash": "6e78d81e09c467e43c41fc7364fb9cbe9173e0bb08887c43d752a3963d87a222", - "size": 2194, - "filename": "3ji_3lo22xj3Xz58hIc00vbGhdUMIexotMNqTtnvOlM=.pem", - "location": "security-state-staging/intermediates/9bb7340b-47da-4aa3-b21f-d2c3bc759f49.pem", - "mimetype": "application/x-pem-file" - }, - "id": "a2563ccb-5107-4c6b-967c-8de16647b74d", - "last_modified": 1770263823877 - }, - { "schema": 1770260345374, "derHash": "VpQ8GejrGWj8/eIU4QM/24FvdqSFn1PWYIMlALnUfSw=", "attachment": { @@ -3797,19 +4824,6 @@ "last_modified": 1770263823836 }, { - "schema": 1770173946190, - "derHash": "nkEV/XDiMX4Vv4EVUmEGQ7MoGKAwSqPJdoWnZGVJMmE=", - "attachment": { - "hash": "0e73085f4091e039043f2f1ae104177395e53e74772b9a72d93045c2dd68bfdb", - "size": 1305, - "filename": "FfstIBJRQL_OSddFhkXVXxYXvlwpeV4N5QyzQSOMer4=.pem", - "location": "security-state-staging/intermediates/831b7078-63f3-481b-98e4-1499266941b2.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b8486d25-1446-4158-b6e6-6d81ef56ead4", - "last_modified": 1770177422952 - }, - { "schema": 1770173945296, "derHash": "L0GeMuVK86P5u8nM8LnTrrPZltJ823iRNA2xM42j22U=", "attachment": { @@ -3823,32 +4837,6 @@ "last_modified": 1770177422944 }, { - "schema": 1770173944860, - "derHash": "B2swEV5DD3xY67wbeezOVncE2ao9oV9QYIVaiA4jcVU=", - "attachment": { - "hash": "345f4213a491bc58f23b58a27a12159a65382d487beeb348045df1c54993209f", - "size": 1297, - "filename": "XxwXFeAhoV94cB2wpw1cfCsPS8BPvJevCyCobm4QKxg=.pem", - "location": "security-state-staging/intermediates/3e7dd7a1-5e07-4077-b7f4-a3e7b681546b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b5379534-3caa-4476-9890-aac03d65c6a4", - "last_modified": 1770177422940 - }, - { - "schema": 1770173944292, - "derHash": "byZczh81CBftiIyaB86NEX5mRwkIlJccQFwNcuyVnVw=", - "attachment": { - "hash": "d0bd90f7abfe775753a131f93fecd3dfe1a4936f6d5342a4c0139594271aa192", - "size": 1297, - "filename": "CBpKKUYnWuYNjyn6A4C6-fbIOhB5kbX1rkHpBJ-7g0Y=.pem", - "location": "security-state-staging/intermediates/a3b73de8-0f85-437e-a90c-f77bb437f990.pem", - "mimetype": "application/x-pem-file" - }, - "id": "4677ba90-816c-49c0-8760-978e145e3132", - "last_modified": 1770177422936 - }, - { "schema": 1770173943922, "derHash": "Zj5l606xUqgmahv0dRCLc6vJC8itmLWL4WI0soEnl5Y=", "attachment": { @@ -5435,19 +6423,6 @@ "last_modified": 1758207422580 }, { - "schema": 1758203906687, - "derHash": "HaeDg9VfgBxK9LnPit8UkVXB5gXhODhJKBL3Wk5q9+U=", - "attachment": { - "hash": "6852b2ede5dfd26dc3230484a790124f6cd415b0b69d09283fee49bdfc0be333", - "size": 2288, - "filename": "u84zFyN8mFVdd_DVCTYSGeIIq2mnvBBvbmmOckAcxbM=.pem", - "location": "security-state-staging/intermediates/f21d6767-e786-400c-a103-e294e62804ac.pem", - "mimetype": "application/x-pem-file" - }, - "id": "83edd9fc-5165-4921-883b-f88b80a69a0a", - "last_modified": 1758207422577 - }, - { "schema": 1758203901297, "derHash": "1m2b9SKQfV3IKWWCy5dFkI5GAAl5Lz65r+wtca3zV6E=", "attachment": { @@ -8399,19 +9374,6 @@ "last_modified": 1738292222734 }, { - "schema": 1738288973259, - "derHash": "X/n1ocDtdAHhxSn21QxKuwCxe1kzWL0tYdwN2Ifd2S8=", - "attachment": { - "hash": "8179dfe29721b8557ef3c989d224c995c24ff5daa9f41bc46b247fb647d84b6d", - "size": 2540, - "filename": "CxygiOPvx_NA9ZnhBxtSM07eJsDPB5rvIuwTrutSqLE=.pem", - "location": "security-state-staging/intermediates/8129a531-a577-45df-ae8d-072033773f89.pem", - "mimetype": "application/x-pem-file" - }, - "id": "0af8aff0-c096-48f8-94cf-35de83e2df4e", - "last_modified": 1738292222731 - }, - { "schema": 1738267392837, "derHash": "ZoWHE4RgUlPCZPjTgKjR3VCmyhkniP8tVgyv5UH4B7g=", "attachment": { @@ -10925,60 +11887,6 @@ "last_modified": 1721872623502 }, { - "schema": 1721227673766, - "derHash": "t3bf8AeekKa/aJc4DUDWzwyA/obmWgbg3wLVgah3BeI=", - "subject": "CN=GlobalSign Atlas R3 DV TLS CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIERWIFRMUyBDQSAyMDI0IFE0", - "whitelist": false, - "attachment": { - "hash": "4a2a5be5c8a1157bfeec6f10a2bd7660558b1587628ac892bcf8a50bf018bb36", - "size": 1642, - "filename": "NeNjKRsP6MwFGRS_L3VaQ-3MueSxLtCH4ZpxuQjQSdc=.pem", - "location": "security-state-staging/intermediates/af61d084-d109-45fb-a9e3-240bcf5bc829.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "NeNjKRsP6MwFGRS/L3VaQ+3MueSxLtCH4ZpxuQjQSdc=", - "crlite_enrolled": false, - "id": "5e759a3b-49fe-4f54-943a-898f7360098e", - "last_modified": 1721228222921 - }, - { - "schema": 1721227673116, - "derHash": "/WBg1eOeIb6tollZC7rU95vUbnpYPUspTN0wkzgEpAM=", - "subject": "CN=GlobalSign Atlas E46 EV TLS CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIEU0NiBFViBUTFMgQ0EgMjAyNCBRNA==", - "whitelist": false, - "attachment": { - "hash": "2867f1773b42dbc74b569f11801dc575e6e1e0152326c02474cf03a99e892f43", - "size": 1199, - "filename": "LoMjOcbytC29MWZvJhnfnZcahr9aNmIIbx34USYmZUY=.pem", - "location": "security-state-staging/intermediates/f7a4447a-7c4b-4259-b1fa-f1dafeb137e4.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "LoMjOcbytC29MWZvJhnfnZcahr9aNmIIbx34USYmZUY=", - "crlite_enrolled": false, - "id": "676c6b01-d8e1-4370-8a6c-5209b50f5321", - "last_modified": 1721228222918 - }, - { - "schema": 1721227674414, - "derHash": "UTymapSXn5PkQrayBzjK6ASRT7y8aUQangOhBjaTcDk=", - "subject": "CN=GlobalSign Atlas ECCR5 DV TLS CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IERWIFRMUyBDQSAyMDI0IFE0", - "whitelist": false, - "attachment": { - "hash": "303f286784ad7c4c20bab292c4198b48d4b4dd7a22ef731a31ad3f3ef5b8482e", - "size": 1199, - "filename": "U2IApba0Dl7EfJrNHHcc1_ICk41NDixdhK7oZGGgOGw=.pem", - "location": "security-state-staging/intermediates/d9334498-e340-4376-afd0-9fa9ffdb86ec.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "U2IApba0Dl7EfJrNHHcc1/ICk41NDixdhK7oZGGgOGw=", - "crlite_enrolled": false, - "id": "3f5586cd-8870-4572-86c3-eeb19f38ab60", - "last_modified": 1721228222916 - }, - { "schema": 1721227673467, "derHash": "7sVDF6NStI5QuNlCYtYC4EQb26WPsq4odBpW3r8jNtM=", "subject": "CN=CrowdStrike GCC R6 OV TLS CA 2024,O=CrowdStrike Inc.,C=US", @@ -10997,168 +11905,6 @@ "last_modified": 1721228222913 }, { - "schema": 1721227674089, - "derHash": "QyQ9voiipX9B2yLeXjGDZESvz0GmueONAUA0E8J2/z0=", - "subject": "CN=GlobalSign Atlas ECCR5 DV ACME CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTIwMAYDVQQDEylHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IERWIEFDTUUgQ0EgMjAyNCBRNA==", - "whitelist": false, - "attachment": { - "hash": "3d646fdf1f66e2429a86c4e7ef2e8113c524f3b2049f31d61a2f077fc693cb9d", - "size": 1199, - "filename": "sV4dEbOtMA1810iExEuH_9yDcQ6DcCg6c4TGZPbAeSo=.pem", - "location": "security-state-staging/intermediates/b663aace-5800-4066-a372-a15fc1b62113.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "sV4dEbOtMA1810iExEuH/9yDcQ6DcCg6c4TGZPbAeSo=", - "crlite_enrolled": false, - "id": "490f82c9-5dd5-4aff-9e3d-7bcac1ed9c7c", - "last_modified": 1721228222910 - }, - { - "schema": 1721227671825, - "derHash": "v/heEnrr+XhiMe3EmF04HhJWtOp1nnH1FaVws1MK9lU=", - "subject": "CN=GlobalSign Atlas R3 OV ACME CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFIzIE9WIEFDTUUgQ0EgMjAyNCBRNA==", - "whitelist": false, - "attachment": { - "hash": "1854901a3f51c5adceaf8d0e3102ce971b89502aec7c684cb79915bd33b9b885", - "size": 1642, - "filename": "FwNyA3TfnnllrRxlNWuzGwjSXH1NsO_t3_7HzSU8q0s=.pem", - "location": "security-state-staging/intermediates/295e6e26-2d40-4d24-9a96-2e5b77cb4c61.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "FwNyA3TfnnllrRxlNWuzGwjSXH1NsO/t3/7HzSU8q0s=", - "crlite_enrolled": false, - "id": "576e1f1b-14e7-45f7-8eed-44d8a6a9f1e0", - "last_modified": 1721228222908 - }, - { - "schema": 1721227672807, - "derHash": "42hXw9jJhaCY976oZ90UwCP2KmGV8cuMoWMtenfG39Y=", - "subject": "CN=GlobalSign Atlas R46 EV TLS CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFI0NiBFViBUTFMgQ0EgMjAyNCBRNA==", - "whitelist": false, - "attachment": { - "hash": "c14e9a9226a4697a3fe118eb076d2da6bc3478fe3333d5ceee4d7fd2d7eee106", - "size": 2345, - "filename": "Fc_hkWvcctz01pZGa_YGuLxcgDs5-NWXZcrAKjTwIiw=.pem", - "location": "security-state-staging/intermediates/7e4ac44b-b7ee-4fe6-b494-9ba7196907d6.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "Fc/hkWvcctz01pZGa/YGuLxcgDs5+NWXZcrAKjTwIiw=", - "crlite_enrolled": false, - "id": "6c03a175-fd64-48b0-8dee-3539358c5212", - "last_modified": 1721228222905 - }, - { - "schema": 1721227672468, - "derHash": "5zqHnHeExzxyOeO8jdHy/cUZ3OsRsWqwoYtaQOBODCc=", - "subject": "CN=GlobalSign Atlas R3 AlphaSSL CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFoxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTAwLgYDVQQDEydHbG9iYWxTaWduIEF0bGFzIFIzIEFscGhhU1NMIENBIDIwMjQgUTQ=", - "whitelist": false, - "attachment": { - "hash": "95fd5dbddc2a1726648fc7476c6a975397cff405319fa664736ab8a62e3a0d06", - "size": 1646, - "filename": "XmFIy_6ZGjuUvBgU7E772azcA1IMQtX6USJrjP5jBso=.pem", - "location": "security-state-staging/intermediates/a836fd41-f2c4-4505-b861-055e0892123f.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "XmFIy/6ZGjuUvBgU7E772azcA1IMQtX6USJrjP5jBso=", - "crlite_enrolled": false, - "id": "6dca64ba-7a2b-48d8-a7e6-eb3dd3de9876", - "last_modified": 1721228222902 - }, - { - "schema": 1721227672148, - "derHash": "vFRQLlk1MIF4AXKBA7ZEbniLb4xYEa6SSR0T0FT5310=", - "subject": "CN=GlobalSign Atlas R3 OV TLS CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIE9WIFRMUyBDQSAyMDI0IFE0", - "whitelist": false, - "attachment": { - "hash": "a44f2e0bb778cee9fe871a9c04b68c9a587153308f0bc5ecc657203fbb3cac96", - "size": 1642, - "filename": "8KAvtni-JDhbL8SAvVl5q2OBdze1xnS8n2sxShdtMCY=.pem", - "location": "security-state-staging/intermediates/37d0f566-4c5a-4ab8-b14d-b8395983644d.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "8KAvtni+JDhbL8SAvVl5q2OBdze1xnS8n2sxShdtMCY=", - "crlite_enrolled": false, - "id": "6ece466e-25b7-43d1-8a96-030f0e3c96c4", - "last_modified": 1721228222900 - }, - { - "schema": 1721227671506, - "derHash": "ELiUnsT69ZiG6kKazUhLW+xvHVhM02KGF4yYqZopTYA=", - "subject": "CN=GlobalSign Atlas ECCR5 OV ACME CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTIwMAYDVQQDEylHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IE9WIEFDTUUgQ0EgMjAyNCBRNA==", - "whitelist": false, - "attachment": { - "hash": "0b36c170700c5c86c07a0c069395c76dd98b7fec4afcdb4a8489e90ec9b29f03", - "size": 1199, - "filename": "fwzn4f9EA1U4Z4UxppT-OzhnesIsVAcvkIspPY5Lsek=.pem", - "location": "security-state-staging/intermediates/aa823452-8c57-444d-805e-7685d2861eda.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "fwzn4f9EA1U4Z4UxppT+OzhnesIsVAcvkIspPY5Lsek=", - "crlite_enrolled": false, - "id": "b96506d4-a353-4bee-9086-8962fad4754c", - "last_modified": 1721228222897 - }, - { - "schema": 1721227671188, - "derHash": "9qM6+viJkOhY8cfgBgzLW39+A/VK3XWM+NviWpsEIoI=", - "subject": "CN=GlobalSign Atlas R3 DV ACME CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFIzIERWIEFDTUUgQ0EgMjAyNCBRNA==", - "whitelist": false, - "attachment": { - "hash": "3ed71b12a467288100f78f9a59e46bf33aa67e10e6f483dc88e940b533dfaf1a", - "size": 1642, - "filename": "jn3n1Gd1kEkv9YJmOTv5LtRlcm6LU89wlkLxADIQhPg=.pem", - "location": "security-state-staging/intermediates/a24a3b5c-cc3c-4b11-95dc-3cefac2cf632.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "jn3n1Gd1kEkv9YJmOTv5LtRlcm6LU89wlkLxADIQhPg=", - "crlite_enrolled": false, - "id": "894f177f-c1f7-434e-9599-61c50ed6a85d", - "last_modified": 1721228222894 - }, - { - "schema": 1721227670877, - "derHash": "JJ1zqBbIdMEei1fyd1pcg3GwnGxp8AaiMhkF3l66wvw=", - "subject": "CN=GlobalSign Atlas ECCR5 OV TLS CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IE9WIFRMUyBDQSAyMDI0IFE0", - "whitelist": false, - "attachment": { - "hash": "1075cb9641b6de7bf6ccb12749f0bdd0880c6a3fd6c7cf925c32df4617031428", - "size": 1199, - "filename": "4sSa7HWT52X7wtUvXJMF7Dz7yTvPrkxF_j80Vmli47I=.pem", - "location": "security-state-staging/intermediates/e76bf764-a4e7-4d0f-986e-2837f825d982.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "4sSa7HWT52X7wtUvXJMF7Dz7yTvPrkxF/j80Vmli47I=", - "crlite_enrolled": false, - "id": "11791f8e-c7e6-4913-89da-b0a46ef9c74b", - "last_modified": 1721228222891 - }, - { - "schema": 1721227670489, - "derHash": "n1jtx2m/DJoKxsmSbLDvQ+5q4E2MKHmg9eDhCsU+Yyk=", - "subject": "CN=GlobalSign Atlas R6 EV TLS CA 2024 Q4,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFI2IEVWIFRMUyBDQSAyMDI0IFE0", - "whitelist": false, - "attachment": { - "hash": "23e152cb5b278b4092cad25adf27909696f8e3bfc85749b631fa27150d72bbf1", - "size": 2353, - "filename": "YhoWdf3QpOzRlXy2dOxxf7cT8150iuVCfl9PMdYd0zM=.pem", - "location": "security-state-staging/intermediates/b3379516-f244-42cc-8a38-9e8645982f91.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "YhoWdf3QpOzRlXy2dOxxf7cT8150iuVCfl9PMdYd0zM=", - "crlite_enrolled": false, - "id": "3d00066d-3545-43aa-8077-f706f76a2d96", - "last_modified": 1721228222888 - }, - { "schema": 1720666099799, "derHash": "frX0qqw5s6eDXXb3IqRz+bSRHko2kd54s8KXNZV2TqI=", "subject": "CN=Cloudflare Inc ECC CA-4,O=Cloudflare\\, Inc.,C=US", @@ -14741,42 +15487,6 @@ "last_modified": 1691204223383 }, { - "schema": 1689929282855, - "derHash": "5G+yp1CXo0XUJG3PRKENqnHZ/Q6/q2G6Z+bbhO5bbKs=", - "subject": "CN=GlobalSign GCC R6 AlphaSSL CA 2023,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFUxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSswKQYDVQQDEyJHbG9iYWxTaWduIEdDQyBSNiBBbHBoYVNTTCBDQSAyMDIz", - "whitelist": false, - "attachment": { - "hash": "57aa6c5c2a0c03f792955ce3cbac5583b5f8e93563fb617b3893efa641b68067", - "size": 1983, - "filename": "JdFERRONSeokpPRwHKoZgZPPGO-7YwoMHGHoe1BAq3c=.pem", - "location": "security-state-staging/intermediates/8ac97138-60ba-4e94-9568-ab722c6b3e5a.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "JdFERRONSeokpPRwHKoZgZPPGO+7YwoMHGHoe1BAq3c=", - "crlite_enrolled": false, - "id": "5fb08fd5-f7ee-41ca-8644-f594733c1895", - "last_modified": 1689929823489 - }, - { - "schema": 1689929280952, - "derHash": "P29X8f4ls9bwiPF3BPfjdq46kRUdzY4ZF8s6QXhbXw0=", - "subject": "CN=GlobalSign GCC R6 OV TLS CA 2023,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFMxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSkwJwYDVQQDEyBHbG9iYWxTaWduIEdDQyBSNiBPViBUTFMgQ0EgMjAyMw==", - "whitelist": false, - "attachment": { - "hash": "4bf721a0f15418f10880a0cf8ad328d2fb0367d1e1d37d0fa3174fe6dff043ec", - "size": 2328, - "filename": "Ngc8xKZRNBJ3tlPY8J83MIz187H94ti1R-xGzVtoRa8=.pem", - "location": "security-state-staging/intermediates/2b5741a2-2c92-45ba-92cf-07ce7ce0465b.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "Ngc8xKZRNBJ3tlPY8J83MIz187H94ti1R+xGzVtoRa8=", - "crlite_enrolled": false, - "id": "709b3169-b97e-4d71-9fa2-836095db24eb", - "last_modified": 1689929823475 - }, - { "schema": 1689778080731, "derHash": "NIXD3+mMXVQoZTR5u5BidYDuiSiQpi2g2avOOiAC6OQ=", "subject": "CN=HARICA Qualified Web Authentication Certificates RSA,OU=Hellenic Academic and Research Institutions CA,O=Greek Universities Network (GUnet),C=GR", @@ -16901,24 +17611,6 @@ "last_modified": 1666727875046 }, { - "schema": 1666727449880, - "derHash": "CP1BixGIU0hP0bBm8ZIqgPVx2P/3Jo1Ziwht8YtYCtg=", - "subject": "CN=Atos TrustedRoot Server-CA 2019,O=Atos,C=DE", - "subjectDN": "MEYxKDAmBgNVBAMMH0F0b3MgVHJ1c3RlZFJvb3QgU2VydmVyLUNBIDIwMTkxDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRF", - "whitelist": false, - "attachment": { - "hash": "e9026c05fca12f79a992b5c8a7d90af2ccafac750d96e6d2a420590a55a54e3c", - "size": 1922, - "filename": "SD8O2olCwqFt3wL6_lvBiVzprjUyo7vWr7bIS3B3am8=.pem", - "location": "security-state-staging/intermediates/c310d05d-c0b0-4149-9d40-04e0f46a1fab.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "SD8O2olCwqFt3wL6/lvBiVzprjUyo7vWr7bIS3B3am8=", - "crlite_enrolled": false, - "id": "4f5ba09a-4228-4ae3-b9fb-e261273f7b68", - "last_modified": 1666727875018 - }, - { "schema": 1666727404592, "derHash": "x/VG8Mdsmg2pmS6YhOYki3yiu2reg4vXoDqMQe4qMGQ=", "subject": "CN=WoSign OV SSL CA,O=WoSign CA Limited,C=CN", @@ -29231,5 +29923,5 @@ "last_modified": 1559865884636 } ], - "timestamp": 1783742222794 + "timestamp": 1787367422707 } diff -Nru firefox-esr-140.13.0esr/sourcestamp.txt firefox-esr-140.15.0esr/sourcestamp.txt --- firefox-esr-140.13.0esr/sourcestamp.txt 2026-07-15 20:55:20.000000000 +0000 +++ firefox-esr-140.15.0esr/sourcestamp.txt 2026-08-26 17:04:18.000000000 +0000 @@ -1,2 +1,2 @@ -20260715202519 -https://hg.mozilla.org/releases/mozilla-esr140/rev/7ecdab99b603b94d2ed335990200f8b4b20de1d7 +20260826142222 +https://hg.mozilla.org/releases/mozilla-esr140/rev/1ace7e56a446a26f61ef013ac6967e8186f47704 diff -Nru firefox-esr-140.13.0esr/taskcluster/gecko_taskgraph/transforms/repackage.py firefox-esr-140.15.0esr/taskcluster/gecko_taskgraph/transforms/repackage.py --- firefox-esr-140.13.0esr/taskcluster/gecko_taskgraph/transforms/repackage.py 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/taskcluster/gecko_taskgraph/transforms/repackage.py 2026-08-26 17:03:49.000000000 +0000 @@ -305,6 +305,8 @@ "{deb-l10n-templates}", "--release-product", "{release_product}", + "--extensions-dir", + "{extensions-dir}", ], "inputs": { "input-xpi-file": "target.langpack.xpi", @@ -372,6 +374,7 @@ "sfx-stub", "wsx-stub", "flatpak-templates", + "extensions-dir", ] transforms = TransformSequence() @@ -479,6 +482,9 @@ repackage_signing_task = dependency elif "signing" in dependency or "notarization" in dependency: signing_task = dependency + elif "shippable-l10n" in dependency: + # Thunderbird does not sign langpacks, so we find them in the langpack build task + signing_task = dependency if config.kind == "repackage-msi": treeherder["symbol"] = "MSI({})".format(locale or "N") @@ -748,6 +754,9 @@ if "shipping-phase" in job: task["shipping-phase"] = job["shipping-phase"] + if "shipping-product" in job and job["shipping-product"] is not None: + task["shipping-product"] = job["shipping-product"] + yield task diff -Nru firefox-esr-140.13.0esr/taskcluster/gecko_taskgraph/transforms/repackage_routes.py firefox-esr-140.15.0esr/taskcluster/gecko_taskgraph/transforms/repackage_routes.py --- firefox-esr-140.13.0esr/taskcluster/gecko_taskgraph/transforms/repackage_routes.py 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/taskcluster/gecko_taskgraph/transforms/repackage_routes.py 2026-08-26 17:03:49.000000000 +0000 @@ -17,7 +17,10 @@ if repackage_type and job["attributes"]["build_type"] != "debug": build_platform = job["attributes"]["build_platform"] job_name = f"{build_platform}-{repackage_type}" - product = job.get("index", {}).get("product", "firefox") + if job.get("shipping-product", "").startswith("thunderbird"): + product = job.get("index", {}).get("product", "thunderbird") + else: + product = job.get("index", {}).get("product", "firefox") index_type = "generic" if job["attributes"].get("shippable") and job["attributes"].get("locale"): index_type = "shippable-l10n" diff -Nru firefox-esr-140.13.0esr/taskcluster/kinds/release-update-verify-config/kind.yml firefox-esr-140.15.0esr/taskcluster/kinds/release-update-verify-config/kind.yml --- firefox-esr-140.13.0esr/taskcluster/kinds/release-update-verify-config/kind.yml 2026-07-15 20:30:38.000000000 +0000 +++ firefox-esr-140.15.0esr/taskcluster/kinds/release-update-verify-config/kind.yml 2026-08-26 17:03:49.000000000 +0000 @@ -62,6 +62,12 @@ default: "72.0.2" esr140: by-platform: + # While we technically shipped 32-bit linux in esr115 and earlier + # we stopped shipping it in 115.37.0esr. Lying a little bit about + # where the last watershed is for this platform is not ideal, but + # it allows us to avoid making update verify support gaps in + # release availability at the cost of a bit of coverage. + linux-shippable.*: "128.0esr" linux64-aarch64.*: "140.0esr" win64-aarch64.*: "140.0esr" default: "68.0esr" diff -Nru firefox-esr-140.13.0esr/testing/mochitest/runtests.py firefox-esr-140.15.0esr/testing/mochitest/runtests.py --- firefox-esr-140.13.0esr/testing/mochitest/runtests.py 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/mochitest/runtests.py 2026-08-26 17:03:49.000000000 +0000 @@ -705,7 +705,7 @@ self.webServer = options.webServer self.webSocketPort = options.webSocketPort - self.customCertRE = re.compile("^cert=(?P[0-9a-zA-Z_ ]+)") + self.customCertRE = re.compile("^cert=(?P[0-9a-zA-Z_ -]+)") self.clientAuthRE = re.compile("^clientauth=(?P[a-z]+)") self.redirRE = re.compile("^redir=(?P[0-9a-zA-Z_ .]+)") diff -Nru firefox-esr-140.13.0esr/testing/mozharness/configs/releases/bouncer_firefox_esr.py firefox-esr-140.15.0esr/testing/mozharness/configs/releases/bouncer_firefox_esr.py --- firefox-esr-140.13.0esr/testing/mozharness/configs/releases/bouncer_firefox_esr.py 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/mozharness/configs/releases/bouncer_firefox_esr.py 2026-08-26 17:03:49.000000000 +0000 @@ -31,18 +31,6 @@ "win64-aarch64", ], }, - "installer-next-latest": { - "product-name": "Firefox-esr-next-latest", - "platforms": [ - "linux", - "linux64", - "linux64-aarch64", - "osx", - "win", - "win64", - "win64-aarch64", - ], - }, "installer-ssl": { "product-name": "Firefox-%(version)s-SSL", "platforms": [ @@ -66,18 +54,6 @@ "win64-aarch64", ], }, - "installer-next-latest-ssl": { - "product-name": "Firefox-esr-next-latest-SSL", - "platforms": [ - "linux", - "linux64", - "linux64-aarch64", - "osx", - "win", - "win64", - "win64-aarch64", - ], - }, "msi": { "product-name": "Firefox-%(version)s-msi-SSL", "platforms": [ @@ -92,13 +68,6 @@ "win64", ], }, - "msi-next-latest": { - "product-name": "Firefox-esr-next-msi-latest-SSL", - "platforms": [ - "win", - "win64", - ], - }, "msix": { "product-name": "Firefox-%(version)s-msix-SSL", "platforms": [ @@ -115,14 +84,6 @@ "win64-aarch64", ], }, - "msix-next-latest": { - "product-name": "Firefox-esr-next-msix-latest-SSL", - "platforms": [ - "win", - "win64", - "win64-aarch64", - ], - }, "pkg": { "product-name": "Firefox-%(version)s-pkg-SSL", "platforms": ["osx"], @@ -131,10 +92,6 @@ "product-name": "Firefox-esr-pkg-latest-SSL", "platforms": ["osx"], }, - "pkg-next-latest": { - "product-name": "Firefox-esr-next-pkg-latest-SSL", - "platforms": ["osx"], - }, "langpack": { "product-name": "Firefox-%(version)s-langpack-SSL", "platforms": [ @@ -154,17 +111,6 @@ "osx", "win", "win64", - ], - }, - "langpack-latest-next": { - "product-name": "Firefox-esr-next-langpack-latest-SSL", - "platforms": [ - "linux", - "linux64", - "linux64-aarch64", - "osx", - "win", - "win64", ], }, "complete-mar": { diff -Nru firefox-esr-140.13.0esr/testing/mozharness/configs/repackage/base.py firefox-esr-140.15.0esr/testing/mozharness/configs/repackage/base.py --- firefox-esr-140.13.0esr/testing/mozharness/configs/repackage/base.py 2026-07-15 20:30:37.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/mozharness/configs/repackage/base.py 2026-08-26 17:03:49.000000000 +0000 @@ -15,4 +15,5 @@ "flatpak-templates": "browser/installer/linux/app/flatpak", "wsx-stub": "browser/installer/windows/msi/installer.wxs", "fetch-dir": os.environ.get("MOZ_FETCHES_DIR"), + "extensions-dir": "firefox/distribution/extensions", } diff -Nru firefox-esr-140.13.0esr/testing/mozharness/scripts/repackage.py firefox-esr-140.15.0esr/testing/mozharness/scripts/repackage.py --- firefox-esr-140.13.0esr/testing/mozharness/scripts/repackage.py 2026-07-15 20:30:38.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/mozharness/scripts/repackage.py 2026-08-26 17:03:49.000000000 +0000 @@ -74,6 +74,7 @@ "deb-l10n-templates": config["deb-l10n-templates"], "flatpak-templates": config.get("flatpak-templates"), "wsx-stub": config["wsx-stub"], + "extensions-dir": config["extensions-dir"], } subst.update(dirs) if config.get("fetch-dir"): diff -Nru firefox-esr-140.13.0esr/testing/web-platform/meta/push-api/worker-subscribe.https.window.js.ini firefox-esr-140.15.0esr/testing/web-platform/meta/push-api/worker-subscribe.https.window.js.ini --- firefox-esr-140.13.0esr/testing/web-platform/meta/push-api/worker-subscribe.https.window.js.ini 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/meta/push-api/worker-subscribe.https.window.js.ini 2026-08-26 17:03:50.000000000 +0000 @@ -0,0 +1,4 @@ +[worker-subscribe.https.window.html] + [Subscribing within a worker] + expected: + if (os == "android"): FAIL diff -Nru firefox-esr-140.13.0esr/testing/web-platform/meta/service-workers/service-worker/windowclient-navigate.https.html.ini firefox-esr-140.15.0esr/testing/web-platform/meta/service-workers/service-worker/windowclient-navigate.https.html.ini --- firefox-esr-140.13.0esr/testing/web-platform/meta/service-workers/service-worker/windowclient-navigate.https.html.ini 2026-07-15 20:30:38.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/meta/service-workers/service-worker/windowclient-navigate.https.html.ini 2026-08-26 17:03:50.000000000 +0000 @@ -1,8 +1,5 @@ [windowclient-navigate.https.html] expected: if (os == "android") and debug: [OK, ERROR] - [invalid url (file:///) worker side] - expected: FAIL - [navigate on a top-level window client worker side] expected: FAIL diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/editing/crashtests/set-documentElement-innerHTML-when-embed-in-designMode-has-focus.html firefox-esr-140.15.0esr/testing/web-platform/tests/editing/crashtests/set-documentElement-innerHTML-when-embed-in-designMode-has-focus.html --- firefox-esr-140.13.0esr/testing/web-platform/tests/editing/crashtests/set-documentElement-innerHTML-when-embed-in-designMode-has-focus.html 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/editing/crashtests/set-documentElement-innerHTML-when-embed-in-designMode-has-focus.html 2026-08-26 17:03:53.000000000 +0000 @@ -0,0 +1,18 @@ + + + + + + + + + + diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-security-check-failure.sub.html firefox-esr-140.15.0esr/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-security-check-failure.sub.html --- firefox-esr-140.13.0esr/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-security-check-failure.sub.html 2026-07-15 20:30:42.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-security-check-failure.sub.html 2026-08-26 17:03:53.000000000 +0000 @@ -10,7 +10,8 @@ const cases = [ ["cross-origin", "http://{{hosts[][www]}}:{{ports[http][0]}}/common/blank.html"], - ["cross-origin-domain but same-origin", "/html/browsers/windows/resources/document-domain-setter.html"] + ["cross-origin-domain but same-origin", "/html/browsers/windows/resources/document-domain-setter.html"], + ["cross-site", "http://{{hosts[alt][]}}:{{ports[http][0]}}/common/blank.html"] ]; for (const [description, url] of cases) { diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/cross-origin-nested.tentative.https.sub.window.js firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/cross-origin-nested.tentative.https.sub.window.js --- firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/cross-origin-nested.tentative.https.sub.window.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/cross-origin-nested.tentative.https.sub.window.js 2026-08-26 17:03:54.000000000 +0000 @@ -0,0 +1,56 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/notifications/resources/helpers.js + +// The syntax below will give us a third party URL. +// See: https://web-platform-tests.org/writing-tests/server-features.html +const thirdPartyIframe = + 'https://{{hosts[alt][]}}:{{ports[https][0]}}/push-api/resources/cross-origin-nested-parent.sub.html'; +const promises = new Map(); + +// Firefox and Chrome deny notification permission in a third party partitioned +// iframe even if the permission is granted for origin of the iframe. + +// Set up the listeners and then create a third party iframe. +// The iframe will again create a first party iframe. +promise_setup(async () => { + await trySettingPermission("granted"); + + // parent: the third party iframe + // child: the first party iframe in the third party one (ABA) + for (const iframe of ["parent", "child"]) { + // from the iframe window, or the worker opened from there + for (const worker of ["", "Worker"]) { + const sender = iframe + worker; + promises.set(sender, new Promise(r => window.addEventListener("message", ev => { + if (ev.data.sender === sender) { + r(ev.data); + } + }))); + } + } + + const iframe = document.createElement("iframe"); + iframe.src = thirdPartyIframe; + document.body.append(iframe); +}) + +promise_test(async t => { + const result = await promises.get("parent"); + assert_false(result.subscribed, `subscription should not happen`); +}, "third party iframe"); + +promise_test(async t => { + const result = await promises.get("child"); + assert_false(result.subscribed, `subscription should not happen`); +}, "nested first party iframe"); + +promise_test(async t => { + const result = await promises.get("parentWorker"); + assert_false(result.subscribed, `subscription should not happen`); +}, "third party worker"); + +promise_test(async t => { + const result = await promises.get("childWorker"); + assert_false(result.subscribed, `subscription should not happen`); +}, "nested first party worker"); diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/cross-origin-same-site-request.tentative.https.sub.window.js firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/cross-origin-same-site-request.tentative.https.sub.window.js --- firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/cross-origin-same-site-request.tentative.https.sub.window.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/cross-origin-same-site-request.tentative.https.sub.window.js 2026-08-26 17:03:54.000000000 +0000 @@ -0,0 +1,32 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/notifications/resources/helpers.js + +// The syntax below will give us a same-site cross-origin URL. +// See: https://web-platform-tests.org/writing-tests/server-features.html +const sameSiteIframe = + 'https://{{hosts[][www1]}}:{{ports[https][0]}}/push-api/resources/cross-origin-nested-child.sub.html'; +let promise; + +// Firefox and Chrome deny notification permission in a same-site cross-origin +// iframe even if the permission is granted for origin of the iframe. + +// Set up the listeners and then create a same-site iframe. +promise_setup(async () => { + await trySettingPermission("granted"); + + promise = new Promise(r => window.addEventListener("message", ev => { + if (ev.data.sender === "child") { + r(ev.data); + } + })); + + const iframe = document.createElement("iframe"); + iframe.src = sameSiteIframe; + document.body.append(iframe); +}) + +promise_test(async t => { + const result = await promise; + assert_false(result.subscribed, `subscription should not happen`); +}, "same-site cross-origin iframe"); diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/cross-origin-serviceworker.tentative.https.sub.window.js firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/cross-origin-serviceworker.tentative.https.sub.window.js --- firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/cross-origin-serviceworker.tentative.https.sub.window.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/cross-origin-serviceworker.tentative.https.sub.window.js 2026-08-26 17:03:54.000000000 +0000 @@ -0,0 +1,29 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/notifications/resources/helpers.js + +// The syntax below will give us a third party URL. +// See: https://web-platform-tests.org/writing-tests/server-features.html +const thirdPartyOrigin = 'https://{{hosts[alt][]}}:{{ports[https][0]}}'; +const thirdPartyIframe = + `${thirdPartyOrigin}/push-api/resources/cross-origin-serviceworker-iframe.sub.html`; +let promise; + +promise_setup(async () => { + await trySettingPermission("granted"); + + promise = new Promise(r => window.addEventListener("message", ev => { + if ("subscribed" in ev.data) { + r(ev.data) + } + })); + + const iframe = document.createElement("iframe"); + iframe.src = thirdPartyIframe; + document.body.append(iframe); +}) + +promise_test(async t => { + const result = await promise; + assert_false(result.subscribed, `subscription should not happen`); +}, "third party serviceworker"); diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/cross-origin-nested-child.sub.html firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/cross-origin-nested-child.sub.html --- firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/cross-origin-nested-child.sub.html 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/cross-origin-nested-child.sub.html 2026-08-26 17:03:54.000000000 +0000 @@ -0,0 +1,13 @@ + + +Push subscription nested iframe first party child + + + diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/cross-origin-nested-parent.sub.html firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/cross-origin-nested-parent.sub.html --- firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/cross-origin-nested-parent.sub.html 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/cross-origin-nested-parent.sub.html 2026-08-26 17:03:53.000000000 +0000 @@ -0,0 +1,28 @@ + + +Push subscription nested iframe third party parent + + + + + diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/cross-origin-serviceworker-iframe.sub.html firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/cross-origin-serviceworker-iframe.sub.html --- firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/cross-origin-serviceworker-iframe.sub.html 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/cross-origin-serviceworker-iframe.sub.html 2026-08-26 17:03:53.000000000 +0000 @@ -0,0 +1,24 @@ + + +Push subscription cross origin iframe with service worker + + + + + diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/permission-helper.js firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/permission-helper.js --- firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/permission-helper.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/permission-helper.js 2026-08-26 17:03:53.000000000 +0000 @@ -0,0 +1,26 @@ +import { createVapid } from "./vapid.js"; + +export function permissionTest(origin, sender, registration) { + function ping(message) { + if (!globalThis.WorkerGlobalScope) { + window.top.postMessage(message, origin); + } else { + globalThis.postMessage(message); + } + } + + (async () => { + const vapid = await createVapid(); + const subscribed = await registration.pushManager.subscribe({ + applicationServerKey: vapid.publicKey + }).then(() => true, _ => false) + ping({ sender, subscribed }); + })(); + + if (!globalThis.WorkerGlobalScope) { + const workerUrl = new URL(`./permission-worker.js`, import.meta.url); + workerUrl.searchParams.set("sender", `${sender}Worker`); + const worker = new Worker(workerUrl, { type: "module" }); + worker.onmessage = ev => ping(ev.data, origin); + } +} diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/permission-sw.js firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/permission-sw.js --- firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/permission-sw.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/permission-sw.js 2026-08-26 17:03:54.000000000 +0000 @@ -0,0 +1,19 @@ +importScripts("/notifications/resources/helpers.js"); + +// Send the result to the clients of this service worker. +async function ping(message) { + const clients = await self.clients.matchAll({ includeUncontrolled: true }); + for (const client of clients) { + client.postMessage(message); + } + for (const n of await registration.getNotifications()) { + n.close(); + } +} + +(async () => { + await untilActivate(); + + const subscribed = await registration.pushManager.subscribe().then(() => true, err => false); + ping({ subscribed }); +})(); diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/permission-worker.js firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/permission-worker.js --- firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/resources/permission-worker.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/resources/permission-worker.js 2026-08-26 17:03:54.000000000 +0000 @@ -0,0 +1,5 @@ +import { permissionTest } from "./permission-helper.js" + +const registration = await navigator.serviceWorker.getRegistration(); +const params = new URL(import.meta.url).searchParams; +permissionTest(null, params.get("sender"), registration); diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/worker-subscribe.https.window.js firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/worker-subscribe.https.window.js --- firefox-esr-140.13.0esr/testing/web-platform/tests/push-api/worker-subscribe.https.window.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/push-api/worker-subscribe.https.window.js 2026-08-26 17:03:54.000000000 +0000 @@ -0,0 +1,22 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/notifications/resources/helpers.js + +promise_setup(async () => { + await trySettingPermission("granted"); + await prepareActiveServiceWorker("push-sw.js"); +}); + +promise_test(async () => { + // (no `sender` URL parameter needed as this worker is the only sender) + const worker = new Worker("./resources/permission-worker.js", { type: "module" }); + const { promise, resolve } = Promise.withResolvers(); + worker.onmessage = ev => { + if ("subscribed" in ev.data) { + resolve(ev.data) + } + }; + + const result = await promise; + assert_true(result.subscribed, `subscription should happen`); +}, "Subscribing within a worker"); diff -Nru firefox-esr-140.13.0esr/testing/web-platform/tests/selection/crashtests/find-whole-word-crash.html firefox-esr-140.15.0esr/testing/web-platform/tests/selection/crashtests/find-whole-word-crash.html --- firefox-esr-140.13.0esr/testing/web-platform/tests/selection/crashtests/find-whole-word-crash.html 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/testing/web-platform/tests/selection/crashtests/find-whole-word-crash.html 2026-08-26 17:03:54.000000000 +0000 @@ -0,0 +1,9 @@ + + + +
+ diff -Nru firefox-esr-140.13.0esr/third_party/libwebrtc/api/video/rtp_video_frame_assembler.cc firefox-esr-140.15.0esr/third_party/libwebrtc/api/video/rtp_video_frame_assembler.cc --- firefox-esr-140.13.0esr/third_party/libwebrtc/api/video/rtp_video_frame_assembler.cc 2026-07-15 20:30:44.000000000 +0000 +++ firefox-esr-140.15.0esr/third_party/libwebrtc/api/video/rtp_video_frame_assembler.cc 2026-08-26 17:03:55.000000000 +0000 @@ -90,12 +90,12 @@ RtpFrameVector AssembleFrames( video_coding::PacketBuffer::InsertResult insert_result); FrameVector FindReferences(RtpFrameVector frames); - FrameVector UpdateWithPadding(uint16_t seq_num); + FrameVector UpdateWithPadding(int64_t seq_num); bool ParseDependenciesDescriptorExtension(const RtpPacketReceived& rtp_packet, RTPVideoHeader& video_header); bool ParseGenericDescriptorExtension(const RtpPacketReceived& rtp_packet, RTPVideoHeader& video_header); - void ClearOldData(uint16_t incoming_seq_num); + void ClearOldData(int64_t incoming_seq_num); std::unique_ptr video_structure_; SeqNumUnwrapper rtp_sequence_number_unwrapper_; @@ -113,9 +113,11 @@ RtpVideoFrameAssembler::FrameVector RtpVideoFrameAssembler::Impl::InsertPacket( const RtpPacketReceived& rtp_packet) { + int64_t unwrapped_sequence_number = + rtp_sequence_number_unwrapper_.Unwrap(rtp_packet.SequenceNumber()); if (rtp_packet.payload_size() == 0) { - ClearOldData(rtp_packet.SequenceNumber()); - return UpdateWithPadding(rtp_packet.SequenceNumber()); + ClearOldData(unwrapped_sequence_number); + return UpdateWithPadding(unwrapped_sequence_number); } std::optional parsed_payload = @@ -145,16 +147,16 @@ parsed_payload->video_header); packet->video_payload = std::move(parsed_payload->video_payload); - ClearOldData(rtp_packet.SequenceNumber()); + ClearOldData(unwrapped_sequence_number); return FindReferences( AssembleFrames(packet_buffer_.InsertPacket(std::move(packet)))); } -void RtpVideoFrameAssembler::Impl::ClearOldData(uint16_t incoming_seq_num) { +void RtpVideoFrameAssembler::Impl::ClearOldData(int64_t incoming_seq_num) { constexpr uint16_t kOldSeqNumThreshold = 2000; - uint16_t old_seq_num = incoming_seq_num - kOldSeqNumThreshold; + int64_t old_seq_num = incoming_seq_num - kOldSeqNumThreshold; packet_buffer_.ClearTo(old_seq_num); - reference_finder_.ClearTo(old_seq_num); + reference_finder_.ClearTo(static_cast(old_seq_num)); } RtpVideoFrameAssembler::Impl::RtpFrameVector @@ -181,8 +183,8 @@ const video_coding::PacketBuffer::Packet& last_packet = *packet; result.push_back(std::make_unique( - first_packet->seq_num(), // - last_packet.seq_num(), // + static_cast(first_packet->seq_num()), // + static_cast(last_packet.seq_num()), // last_packet.marker_bit, // /*times_nacked=*/0, // /*first_packet_received_time=*/0, // @@ -221,10 +223,11 @@ } RtpVideoFrameAssembler::FrameVector -RtpVideoFrameAssembler::Impl::UpdateWithPadding(uint16_t seq_num) { +RtpVideoFrameAssembler::Impl::UpdateWithPadding(int64_t seq_num) { auto res = FindReferences(AssembleFrames(packet_buffer_.InsertPadding(seq_num))); - auto ref_finder_update = reference_finder_.PaddingReceived(seq_num); + auto ref_finder_update = + reference_finder_.PaddingReceived(static_cast(seq_num)); for (std::unique_ptr& complete_frame : ref_finder_update) { uint16_t rtp_seq_num_start = complete_frame->first_seq_num(); diff -Nru firefox-esr-140.13.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer.cc firefox-esr-140.15.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer.cc --- firefox-esr-140.13.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer.cc 2026-07-15 20:30:44.000000000 +0000 +++ firefox-esr-140.15.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer.cc 2026-08-26 17:03:55.000000000 +0000 @@ -29,7 +29,6 @@ #include "modules/video_coding/codecs/h264/include/h264_globals.h" #include "rtc_base/checks.h" #include "rtc_base/logging.h" -#include "rtc_base/numerics/mod_ops.h" namespace webrtc { namespace video_coding { @@ -69,21 +68,20 @@ std::unique_ptr packet) { PacketBuffer::InsertResult result; - uint16_t seq_num = packet->seq_num(); - size_t index = seq_num % buffer_.size(); + const int64_t seq_num = packet->seq_num(); + size_t index = Index(seq_num); if (!first_packet_received_) { first_seq_num_ = seq_num; first_packet_received_ = true; - } else if (AheadOf(first_seq_num_, seq_num)) { + } else if (first_seq_num_ > seq_num) { // If we have explicitly cleared past this packet then it's old, // don't insert it, just silently ignore it. if (is_cleared_to_first_seq_num_) { return result; } - if (ForwardDiff(first_seq_num_, seq_num) >= max_size_ && - ForwardDiff(seq_num, first_seq_num_) >= max_size_ / 2) { + if (first_seq_num_ - seq_num >= static_cast(max_size_ / 2)) { // Large negative jump in rtp sequence number: clear the buffer and treat // latest packet as the new first packet. Clear(); @@ -95,14 +93,16 @@ if (buffer_[index] != nullptr) { // Duplicate packet, just delete the payload. - if (buffer_[index]->seq_num() == packet->seq_num()) { + if (buffer_[index]->seq_num() == seq_num) { return result; } // The packet buffer is full, try to expand the buffer. - while (ExpandBufferSize() && buffer_[seq_num % buffer_.size()] != nullptr) { + // Note that `ExpandBufferSize` changes `buffer_.size()` and thus `Index` + // has to be recalculated after it. + while (ExpandBufferSize() && buffer_[Index(seq_num)] != nullptr) { } - index = seq_num % buffer_.size(); + index = Index(seq_num); // Packet buffer is still full since we were unable to expand the buffer. if (buffer_[index] != nullptr) { @@ -128,9 +128,9 @@ return result; } -uint32_t PacketBuffer::ClearTo(uint16_t seq_num) { +uint32_t PacketBuffer::ClearTo(int64_t seq_num) { // We have already cleared past this sequence number, no need to do anything. - if (AheadOf(first_seq_num_, seq_num)) { + if (first_seq_num_ > seq_num) { return 0; } @@ -142,11 +142,11 @@ // iterations to the `size_` of the buffer. ++seq_num; uint32_t num_cleared_packets = 0; - size_t diff = ForwardDiff(first_seq_num_, seq_num); - size_t iterations = std::min(diff, buffer_.size()); + size_t iterations = + std::min(seq_num - first_seq_num_, buffer_.size()); for (size_t i = 0; i < iterations; ++i) { - auto& stored = buffer_[first_seq_num_ % buffer_.size()]; - if (stored != nullptr && AheadOf(seq_num, stored->seq_num())) { + auto& stored = buffer_[Index(first_seq_num_)]; + if (stored != nullptr && seq_num > stored->seq_num()) { ++num_cleared_packets; stored = nullptr; } @@ -171,11 +171,11 @@ ClearInternal(); } -PacketBuffer::InsertResult PacketBuffer::InsertPadding(uint16_t seq_num) { +PacketBuffer::InsertResult PacketBuffer::InsertPadding(int64_t seq_num) { PacketBuffer::InsertResult result; UpdateMissingPackets(seq_num); received_padding_.insert(seq_num); - result.packets = FindFrames(static_cast(seq_num + 1)); + result.packets = FindFrames(seq_num + 1); return result; } @@ -210,7 +210,7 @@ std::vector> new_buffer(new_size); for (std::unique_ptr& entry : buffer_) { if (entry != nullptr) { - new_buffer[entry->seq_num() % new_size] = std::move(entry); + new_buffer[Index(entry->seq_num(), new_size)] = std::move(entry); } } buffer_ = std::move(new_buffer); @@ -218,11 +218,9 @@ return true; } -bool PacketBuffer::PotentialNewFrame(uint16_t seq_num) const { - size_t index = seq_num % buffer_.size(); - int prev_index = index > 0 ? index - 1 : buffer_.size() - 1; - const auto& entry = buffer_[index]; - const auto& prev_entry = buffer_[prev_index]; +bool PacketBuffer::PotentialNewFrame(int64_t seq_num) const { + const auto& entry = buffer_[Index(seq_num)]; + const auto& prev_entry = buffer_[Index(seq_num - 1)]; if (entry == nullptr) return false; @@ -232,7 +230,7 @@ return true; if (prev_entry == nullptr) return false; - if (prev_entry->seq_num() != static_cast(entry->seq_num() - 1)) + if (prev_entry->seq_num() != entry->seq_num() - 1) return false; if (prev_entry->timestamp != entry->timestamp) return false; @@ -243,13 +241,13 @@ } std::vector> PacketBuffer::FindFrames( - uint16_t seq_num) { + int64_t seq_num) { std::vector> found_frames; - auto start = seq_num; + int64_t start = seq_num; for (size_t i = 0; i < buffer_.size(); ++i) { if (received_padding_.find(seq_num) != received_padding_.end()) { - seq_num += 1; + ++seq_num; continue; } @@ -257,13 +255,13 @@ break; } - size_t index = seq_num % buffer_.size(); + size_t index = Index(seq_num); buffer_[index]->continuous = true; // If all packets of the frame is continuous, find the first packet of the // frame and add all packets of the frame to the returned packets. if (buffer_[index]->is_last_packet_in_frame()) { - uint16_t start_seq_num = seq_num; + int64_t start_seq_num = seq_num; // Find the start index by searching backward until the packet with // the `frame_begin` flag is set. @@ -345,6 +343,7 @@ // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=7106 if (is_h264_descriptor && (buffer_[start_index] == nullptr || + buffer_[start_index]->seq_num() != start_seq_num - 1 || buffer_[start_index]->timestamp != frame_timestamp)) { break; } @@ -367,7 +366,7 @@ // Now that we have decided whether to treat this frame as a key frame // or delta frame in the frame buffer, we update the field that // determines if the RtpFrameObject is a key frame or delta frame. - const size_t first_packet_index = start_seq_num % buffer_.size(); + const size_t first_packet_index = Index(start_seq_num); if (is_h264_keyframe) { buffer_[first_packet_index]->video_header.frame_type = VideoFrameType::kVideoFrameKey; @@ -391,17 +390,16 @@ } if (is_h264_descriptor || full_frame_found) { - const uint16_t end_seq_num = seq_num + 1; - // Use uint16_t type to handle sequence number wrap around case. - uint16_t num_packets = end_seq_num - start_seq_num; + const int64_t end_seq_number = seq_num + 1; + int64_t num_packets = end_seq_number - start_seq_num; found_frames.reserve(found_frames.size() + num_packets); - for (uint16_t i = start_seq_num; i != end_seq_num; ++i) { - std::unique_ptr& packet = buffer_[i % buffer_.size()]; + for (int64_t j = start_seq_num; j != end_seq_number; ++j) { + std::unique_ptr& packet = buffer_[Index(j)]; RTC_DCHECK(packet); - RTC_DCHECK_EQ(i, packet->seq_num()); + RTC_DCHECK_EQ(j, packet->seq_num()); // Ensure frame boundary flags are properly set. - packet->video_header.is_first_packet_in_frame = (i == start_seq_num); - packet->video_header.is_last_packet_in_frame = (i == seq_num); + packet->video_header.is_first_packet_in_frame = (j == start_seq_num); + packet->video_header.is_last_packet_in_frame = (j == seq_num); found_frames.push_back(std::move(packet)); } @@ -416,23 +414,24 @@ return found_frames; } -void PacketBuffer::UpdateMissingPackets(uint16_t seq_num) { +void PacketBuffer::UpdateMissingPackets(int64_t seq_num) { if (!newest_inserted_seq_num_) newest_inserted_seq_num_ = seq_num; const int kMaxPaddingAge = 1000; - if (AheadOf(seq_num, *newest_inserted_seq_num_)) { - uint16_t old_seq_num = seq_num - kMaxPaddingAge; - auto erase_to = missing_packets_.lower_bound(old_seq_num); + if (seq_num > *newest_inserted_seq_num_) { + int64_t old_seq_number = seq_num - kMaxPaddingAge; + auto erase_to = missing_packets_.lower_bound(old_seq_number); missing_packets_.erase(missing_packets_.begin(), erase_to); // Guard against inserting a large amount of missing packets if there is a // jump in the sequence number. - if (AheadOf(old_seq_num, *newest_inserted_seq_num_)) - *newest_inserted_seq_num_ = old_seq_num; + if (old_seq_number > *newest_inserted_seq_num_) { + *newest_inserted_seq_num_ = old_seq_number; + } ++*newest_inserted_seq_num_; - while (AheadOf(seq_num, *newest_inserted_seq_num_)) { + while (seq_num > *newest_inserted_seq_num_) { missing_packets_.insert(*newest_inserted_seq_num_); ++*newest_inserted_seq_num_; } diff -Nru firefox-esr-140.13.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer.h firefox-esr-140.15.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer.h --- firefox-esr-140.13.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer.h 2026-07-15 20:30:44.000000000 +0000 +++ firefox-esr-140.15.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer.h 2026-08-26 17:03:55.000000000 +0000 @@ -11,6 +11,7 @@ #ifndef MODULES_VIDEO_CODING_PACKET_BUFFER_H_ #define MODULES_VIDEO_CODING_PACKET_BUFFER_H_ +// #include #include #include #include @@ -22,8 +23,8 @@ #include "api/video/encoded_image.h" #include "modules/rtp_rtcp/source/rtp_packet_received.h" #include "modules/rtp_rtcp/source/rtp_video_header.h" +#include "rtc_base/checks.h" #include "rtc_base/copy_on_write_buffer.h" -#include "rtc_base/numerics/sequence_number_util.h" #include "rtc_base/thread_annotations.h" namespace webrtc { @@ -52,7 +53,7 @@ bool is_last_packet_in_frame() const { return video_header.is_last_packet_in_frame; } - uint16_t seq_num() const { return static_cast(sequence_number); } + int64_t seq_num() const { return sequence_number; } // If all its previous packets have been inserted into the packet buffer. // Set and used internally by the PacketBuffer. @@ -79,11 +80,11 @@ ABSL_MUST_USE_RESULT InsertResult InsertPacket(std::unique_ptr packet); - ABSL_MUST_USE_RESULT InsertResult InsertPadding(uint16_t seq_num); + ABSL_MUST_USE_RESULT InsertResult InsertPadding(int64_t seq_num); // Clear all packets older than |seq_num|. Returns the number of packets // cleared. - uint32_t ClearTo(uint16_t seq_num); + uint32_t ClearTo(int64_t seq_num); void Clear(); void ForceSpsPpsIdrIsH264Keyframe(); @@ -96,19 +97,27 @@ bool ExpandBufferSize(); // Test if all previous packets has arrived for the given sequence number. - bool PotentialNewFrame(uint16_t seq_num) const; + bool PotentialNewFrame(int64_t seq_num) const; // Test if all packets of a frame has arrived, and if so, returns packets to // create frames. - std::vector> FindFrames(uint16_t seq_num); + std::vector> FindFrames(int64_t seq_num); - void UpdateMissingPackets(uint16_t seq_num); + void UpdateMissingPackets(int64_t seq_num); + + static size_t Index(int64_t seq_num, size_t buffer_size) { + RTC_DCHECK(absl::has_single_bit(buffer_size)); + size_t mask = buffer_size - 1; + return seq_num & mask; + } + + size_t Index(int64_t seq_num) const { return Index(seq_num, buffer_.size()); } // buffer_.size() and max_size_ must always be a power of two. const size_t max_size_; // The fist sequence number currently in the buffer. - uint16_t first_seq_num_; + int64_t first_seq_num_; // If the packet buffer has received its first packet. bool first_packet_received_; @@ -120,10 +129,9 @@ // determine continuity between them. std::vector> buffer_; - std::optional newest_inserted_seq_num_; - std::set> missing_packets_; - - std::set> received_padding_; + std::optional newest_inserted_seq_num_; + std::set missing_packets_; + std::set received_padding_; // Indicates if we should require SPS, PPS, and IDR for a particular // RTP timestamp to treat the corresponding frame as a keyframe. diff -Nru firefox-esr-140.13.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer_unittest.cc firefox-esr-140.15.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer_unittest.cc --- firefox-esr-140.13.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer_unittest.cc 2026-07-15 20:30:44.000000000 +0000 +++ firefox-esr-140.15.0esr/third_party/libwebrtc/modules/video_coding/packet_buffer_unittest.cc 2026-08-26 17:03:56.000000000 +0000 @@ -49,7 +49,7 @@ for (const auto& packet : packets) { EXPECT_EQ(frame_boundary, packet->is_first_packet_in_frame()); if (packet->is_first_packet_in_frame()) { - result.push_back(packet->seq_num()); + result.push_back(static_cast(packet->seq_num())); } frame_boundary = packet->is_last_packet_in_frame(); } @@ -704,6 +704,14 @@ InsertH264(4662, kKeyFrame, kFirst, kLast, 1000); } +TEST_P(PacketBufferH264ParameterizedTest, InsertMisOrderedPackets) { + InsertH264(4660, kKeyFrame, kFirst, kNotLast, 1000); + // packet (4661 + kStartSize) can use the same buffer slot as packet 4661, + // PacketBuffer need to be careful to detect they are not the same packet. + InsertH264(4661 + kStartSize, kDeltaFrame, kFirst, kNotLast, 1000); + InsertH264(4662, kKeyFrame, kFirst, kLast, 1000); +} + TEST_P(PacketBufferH264ParameterizedTest, ClearMissingPacketsOnKeyframe) { InsertH264(0, kKeyFrame, kFirst, kLast, 1000); InsertH264(2, kKeyFrame, kFirst, kLast, 3000); diff -Nru firefox-esr-140.13.0esr/third_party/libwebrtc/video/rtp_video_stream_receiver2.cc firefox-esr-140.15.0esr/third_party/libwebrtc/video/rtp_video_stream_receiver2.cc --- firefox-esr-140.13.0esr/third_party/libwebrtc/video/rtp_video_stream_receiver2.cc 2026-07-15 20:30:44.000000000 +0000 +++ firefox-esr-140.15.0esr/third_party/libwebrtc/video/rtp_video_stream_receiver2.cc 2026-08-26 17:03:56.000000000 +0000 @@ -872,13 +872,13 @@ const video_coding::PacketBuffer::Packet& last_packet = *packet; OnAssembledFrame(std::make_unique( - first_packet->seq_num(), // - last_packet.seq_num(), // - last_packet.marker_bit, // - max_nack_count, // - min_recv_time, // - max_recv_time, // - first_packet->timestamp, // + static_cast(first_packet->seq_num()), // + static_cast(last_packet.seq_num()), // + last_packet.marker_bit, // + max_nack_count, // + min_recv_time, // + max_recv_time, // + first_packet->timestamp, // ntp_estimator_.Estimate(first_packet->timestamp), // last_packet.video_header.video_timing, // first_packet->payload_type, // @@ -1159,8 +1159,9 @@ // Padding or keep-alive packet. // TODO(nisse): Could drop empty packets earlier, but need to figure out how // they should be counted in stats. - NotifyReceiverOfEmptyPacket(packet.SequenceNumber(), - IsH26xPayloadType(packet.PayloadType())); + NotifyReceiverOfEmptyPacket( + rtp_seq_num_unwrapper_.Unwrap(packet.SequenceNumber()), + IsH26xPayloadType(packet.PayloadType())); return; } if (packet.PayloadType() == red_payload_type_) { @@ -1230,8 +1231,9 @@ if (packet.payload()[0] == ulpfec_receiver_->ulpfec_payload_type()) { // Notify video_receiver about received FEC packets to avoid NACKing these // packets. - NotifyReceiverOfEmptyPacket(packet.SequenceNumber(), - IsH26xPayloadType(packet.PayloadType())); + NotifyReceiverOfEmptyPacket( + rtp_seq_num_unwrapper_.Unwrap(packet.SequenceNumber()), + IsH26xPayloadType(packet.PayloadType())); } if (ulpfec_receiver_->AddReceivedRedPacket(packet)) { ulpfec_receiver_->ProcessReceivedFec(); @@ -1241,8 +1243,9 @@ // In the case of a video stream without picture ids and no rtx the // RtpFrameReferenceFinder will need to know about padding to // correctly calculate frame references. -void RtpVideoStreamReceiver2::NotifyReceiverOfEmptyPacket(uint16_t seq_num, +void RtpVideoStreamReceiver2::NotifyReceiverOfEmptyPacket(int64_t seq_number, bool is_h26x) { + uint16_t seq_num = static_cast(seq_number); RTC_DCHECK_RUN_ON(&packet_sequence_checker_); RTC_DCHECK_RUN_ON(&worker_task_checker_); @@ -1251,7 +1254,7 @@ if (is_h26x && h26x_packet_buffer_) { OnInsertedPacket(h26x_packet_buffer_->InsertPadding(seq_num)); } else { - OnInsertedPacket(packet_buffer_.InsertPadding(seq_num)); + OnInsertedPacket(packet_buffer_.InsertPadding(seq_number)); } if (nack_module_) { nack_module_->OnReceivedPacket(seq_num, /*is_recovered=*/false); @@ -1330,7 +1333,7 @@ int64_t unwrapped_rtp_seq_num = rtp_seq_num_unwrapper_.Unwrap(seq_num); packet_infos_.erase(packet_infos_.begin(), packet_infos_.upper_bound(unwrapped_rtp_seq_num)); - uint32_t num_packets_cleared = packet_buffer_.ClearTo(seq_num); + uint32_t num_packets_cleared = packet_buffer_.ClearTo(unwrapped_rtp_seq_num); if (num_packets_cleared > 0) { TRACE_EVENT2("webrtc", "RtpVideoStreamReceiver2::FrameDecoded Cleared Old Packets", diff -Nru firefox-esr-140.13.0esr/third_party/libwebrtc/video/rtp_video_stream_receiver2.h firefox-esr-140.15.0esr/third_party/libwebrtc/video/rtp_video_stream_receiver2.h --- firefox-esr-140.13.0esr/third_party/libwebrtc/video/rtp_video_stream_receiver2.h 2026-07-15 20:30:44.000000000 +0000 +++ firefox-esr-140.15.0esr/third_party/libwebrtc/video/rtp_video_stream_receiver2.h 2026-08-26 17:03:57.000000000 +0000 @@ -309,7 +309,7 @@ // This function assumes that it's being called from only one thread. void ParseAndHandleEncapsulatingHeader(const RtpPacketReceived& packet) RTC_RUN_ON(packet_sequence_checker_); - void NotifyReceiverOfEmptyPacket(uint16_t seq_num, bool is_h26x) + void NotifyReceiverOfEmptyPacket(int64_t seq_number, bool is_h26x) RTC_RUN_ON(packet_sequence_checker_); bool IsRedEnabled() const; void InsertSpsPpsIntoTracker(uint8_t payload_type) diff -Nru firefox-esr-140.13.0esr/toolkit/components/contentanalysis/tests/browser/browser_download_content_analysis.js firefox-esr-140.15.0esr/toolkit/components/contentanalysis/tests/browser/browser_download_content_analysis.js --- firefox-esr-140.13.0esr/toolkit/components/contentanalysis/tests/browser/browser_download_content_analysis.js 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/contentanalysis/tests/browser/browser_download_content_analysis.js 2026-08-26 17:03:57.000000000 +0000 @@ -12,9 +12,9 @@ const DOWNLOAD_URL = "https://example.com/browser/toolkit/components/contentanalysis/tests/browser/file_to_download.unknownextension"; -async function createTargetFileAndDownload() { +async function createTargetFileAndDownload(usePartFile) { // Create a temporary file that will be downloaded to. - const targetFile = await IOUtils.createUniqueFile( + const targetFileName = await IOUtils.createUniqueFile( PathUtils.tempDir, "target_download_for_content_analysis.txt", 0o600 @@ -23,13 +23,16 @@ // successfully downloaded. Note that this theoretically introduces // a race condition since something else could come in and create // a temp file with the same name. This seems unlikely. - await IOUtils.remove(targetFile, { ignoreAbsent: false }); + await IOUtils.remove(targetFileName, { ignoreAbsent: false }); return await Downloads.createDownload({ source: { url: DOWNLOAD_URL, }, - target: targetFile, + target: { + path: targetFileName, + partFilePath: usePartFile ? targetFileName + ".part" : undefined, + }, }); } @@ -91,7 +94,7 @@ ok(!!request.requestToken.length, "request requestToken should not be empty"); } -add_task(async function test_download_content_analysis_allows() { +async function check_download_content_analysis_allows(usePartFile) { mockCA.setupForTest(true); await SpecialPowers.pushPrefEnv({ set: [ @@ -99,7 +102,7 @@ ], }); - const download = await createTargetFileAndDownload(); + const download = await createTargetFileAndDownload(usePartFile); let list = await Downloads.getList(Downloads.PUBLIC); await list.add(download); await download.start(); @@ -107,13 +110,33 @@ // Make sure the download succeeded. ok(download.succeeded, "Download should succeed"); is(mockCA.calls.length, 1, "Content analysis should be called once"); - assertContentAnalysisDownloadRequest(mockCA.calls[0], download.target.path); - ok(await IOUtils.exists(download.target.path), "Target file should exist"); + assertContentAnalysisDownloadRequest( + mockCA.calls[0], + usePartFile ? download.target.partFilePath : download.target.path + ); + ok( + await IOUtils.exists(download.target.path), + "Final target file should exist" + ); + if (usePartFile) { + ok( + !(await IOUtils.exists(download.target.partFilePath)), + "Part file should not still exist" + ); + } await IOUtils.remove(download.target.path); await SpecialPowers.popPrefEnv(); +} + +add_task(async function test_download_content_analysis_allows() { + await check_download_content_analysis_allows(false /* usePartFile */); }); -add_task(async function test_download_content_analysis_blocks() { +add_task(async function test_download_content_analysis_allows_partfile() { + await check_download_content_analysis_allows(true /* usePartFile */); +}); + +async function check_download_content_analysis_blocks(usePartFile) { mockCA.setupForTest(false); await SpecialPowers.pushPrefEnv({ set: [ @@ -121,28 +144,45 @@ ], }); - const download = await createTargetFileAndDownload(); - info(`path is ${download.target.path}`); + const download = await createTargetFileAndDownload(usePartFile); + if (usePartFile) { + info(`part file path is ${download.target.partFilePath}`); + } + info(`final path is ${download.target.path}`); await Assert.rejects( download.start(), ex => ex instanceof Downloads.Error && ex.becauseBlockedByContentAnalysis, "Download should have been rejected" ); - info(`path is ${download.target.path}`); ok(!download.succeeded, "Download should not succeed"); is(mockCA.calls.length, 1, "Content analysis should be called once"); - info(`path is ${download.target.path}`); - assertContentAnalysisDownloadRequest(mockCA.calls[0], download.target.path); - info(`path is ${download.target.path}`); + assertContentAnalysisDownloadRequest( + mockCA.calls[0], + usePartFile ? download.target.partFilePath : download.target.path + ); ok( !(await IOUtils.exists(download.target.path)), - "Target file should not exist" + "Final target file should not exist" ); + if (usePartFile) { + ok( + !(await IOUtils.exists(download.target.partFilePath)), + "Part file should not still exist" + ); + } await SpecialPowers.popPrefEnv(); +} + +add_task(async function test_download_content_analysis_blocks() { + await check_download_content_analysis_blocks(false /* usePartFile */); }); -add_task(async function test_download_content_analysis_user_cancels() { +add_task(async function test_download_content_analysis_blocks_partfile() { + await check_download_content_analysis_blocks(true /* usePartFile */); +}); + +async function check_download_content_analysis_user_cancels(usePartFile) { // Make the mock CA service wait for event so the test can // cancel the download before the scan finishes. mockCA.setupForTest(true, /* waitForEvent */ true); @@ -157,9 +197,13 @@ once: true, }); }); - const download = await createTargetFileAndDownload(); + const download = await createTargetFileAndDownload(usePartFile); + + if (usePartFile) { + info(`part file path is ${download.target.partFilePath}`); + } + info(`final path is ${download.target.path}`); - info(`path is ${download.target.path}`); let list = await Downloads.getList(Downloads.PUBLIC); await list.add(download); download.start(); @@ -190,12 +234,20 @@ // may or may not exist on disk. } await SpecialPowers.popPrefEnv(); +} + +add_task(async function test_download_content_analysis_user_cancels() { + await check_download_content_analysis_user_cancels(false /* usePartFile */); +}); + +add_task(async function test_download_content_analysis_user_cancels_partfile() { + await check_download_content_analysis_user_cancels(true /* usePartFile */); }); add_task(async function test_download_content_analysis_pref_defaults_to_off() { - mockCA.setupForTest(false); // do not set pref, so content analysis should not be consulted - const download = await createTargetFileAndDownload(); + mockCA.setupForTest(false); + const download = await createTargetFileAndDownload(false); let list = await Downloads.getList(Downloads.PUBLIC); await list.add(download); await download.start(); @@ -203,6 +255,9 @@ // Make sure the download succeeded. ok(download.succeeded, "Download should succeed"); is(mockCA.calls.length, 0, "Content analysis should not be called"); - ok(await IOUtils.exists(download.target.path), "Target file should exist"); + ok( + await IOUtils.exists(download.target.path), + "Final target file should exist" + ); await IOUtils.remove(download.target.path); }); diff -Nru firefox-esr-140.13.0esr/toolkit/components/contentanalysis/tests/browser/browser_download_save_link_as_content_analysis.js firefox-esr-140.15.0esr/toolkit/components/contentanalysis/tests/browser/browser_download_save_link_as_content_analysis.js --- firefox-esr-140.13.0esr/toolkit/components/contentanalysis/tests/browser/browser_download_save_link_as_content_analysis.js 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/contentanalysis/tests/browser/browser_download_save_link_as_content_analysis.js 2026-08-26 17:03:57.000000000 +0000 @@ -23,27 +23,55 @@ contextMenu.activateItem(saveLinkCommand); } +let tempDir; + +// Final file path for download. let destFilePath; -add_setup(async () => { - mockCA = await mockContentAnalysisService(mockCA); -}); +// path to file that is a copy of the file sent to CA, so we can (async) check +// that it is the same file. +let copiedScannedFilePath; -function setupMockFilePicker() { - const tempDir = Services.dirsvc.get("TmpD", Ci.nsIFile); +add_setup(async () => { + tempDir = Services.dirsvc.get("TmpD", Ci.nsIFile); tempDir.append("test-download-dir"); if (!tempDir.exists()) { tempDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755); } + registerCleanupFunction(function () { + if (tempDir.exists()) { + tempDir.remove(true); + } + }); + let oldAnalyzeContentRequestPrivate = mockCA.analyzeContentRequestPrivate; + mockCA.analyzeContentRequestPrivate = function ( + request, + autoAcknowledge, + callback + ) { + // Copy the file being scanned now because the original (a .part file) is + // renamed or removed once the download completes. + let requestFile = new FileUtils.File(request.filePath); + requestFile.copyTo(tempDir, "file.copy"); + let tempDirClone = tempDir.clone(); + tempDirClone.append("file.copy"); + copiedScannedFilePath = tempDirClone.path; + oldAnalyzeContentRequestPrivate.call( + this, + request, + autoAcknowledge, + callback + ); + }; + mockCA = await mockContentAnalysisService(mockCA); +}); + +function setupMockFilePicker() { let MockFilePicker = SpecialPowers.MockFilePicker; MockFilePicker.init(window.browsingContext); registerCleanupFunction(function () { MockFilePicker.cleanup(); - - if (tempDir.exists()) { - tempDir.remove(true); - } }); MockFilePicker.displayDirectory = tempDir; @@ -59,7 +87,7 @@ }; } -function assertContentAnalysisDownloadRequest(request, expectedFilePath) { +async function assertContentAnalysisDownloadRequest(request) { is(request.url.spec, DOWNLOAD_URL, "request has correct URL"); is( request.analysisType, @@ -76,7 +104,17 @@ Ci.nsIContentAnalysisRequest.eDownload, "request has correct operationTypeForDisplay" ); - is(request.filePath, expectedFilePath, "request filePath should match"); + // Compare file contents, not file names, as the download name will be the + // temporary name assigned before content analysis approval. + let scannedBytes = await IOUtils.read(copiedScannedFilePath); + let expectedBytes = new Uint8Array( + await (await fetch(DOWNLOAD_URL)).arrayBuffer() + ); + Assert.deepEqual( + scannedBytes, + expectedBytes, + "scanned file is download file" + ); ok(!request.textContent?.length, "request textContent should be empty"); is( request.userActionRequestsCount, @@ -110,8 +148,9 @@ ); }, "Wait for the file to be downloaded"); is(mockCA.calls.length, 1, "Content analysis should be called once"); - assertContentAnalysisDownloadRequest(mockCA.calls[0], destFilePath); + await assertContentAnalysisDownloadRequest(mockCA.calls[0]); await IOUtils.remove(destFilePath); + await IOUtils.remove(copiedScannedFilePath); await SpecialPowers.popPrefEnv(); }); diff -Nru firefox-esr-140.13.0esr/toolkit/components/contentanalysis/tests/browser/head.js firefox-esr-140.15.0esr/toolkit/components/contentanalysis/tests/browser/head.js --- firefox-esr-140.13.0esr/toolkit/components/contentanalysis/tests/browser/head.js 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/contentanalysis/tests/browser/head.js 2026-08-26 17:03:58.000000000 +0000 @@ -277,6 +277,12 @@ Services.obs.notifyObservers(request, "dlp-request-made"); } + // If we are checking a file, make sure it exists. + if (request.filePath) { + const nsiFile = new FileUtils.File(request.filePath); + ok(nsiFile.exists(), "File to check exists"); + } + // Use setTimeout to simulate an async activity. setTimeout(async () => { if (this.waitForEvent) { diff -Nru firefox-esr-140.13.0esr/toolkit/components/downloads/DownloadIntegration.sys.mjs firefox-esr-140.15.0esr/toolkit/components/downloads/DownloadIntegration.sys.mjs --- firefox-esr-140.13.0esr/toolkit/components/downloads/DownloadIntegration.sys.mjs 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/downloads/DownloadIntegration.sys.mjs 2026-08-26 17:03:58.000000000 +0000 @@ -538,7 +538,9 @@ requestToken, url, userActionId, - filePath: download.target.path, + // Use the path to the part-file if a part file is involved. + // We haven't moved it yet. + filePath: download.target.partFilePath || download.target.path, // When doing a download analysis, the Content Analysis code won't // display dialogs in the window, but the code still wants a // content window and will get the topChromeWindow to show diff -Nru firefox-esr-140.13.0esr/toolkit/components/extensions/ConduitsParent.sys.mjs firefox-esr-140.15.0esr/toolkit/components/extensions/ConduitsParent.sys.mjs --- firefox-esr-140.13.0esr/toolkit/components/extensions/ConduitsParent.sys.mjs 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/extensions/ConduitsParent.sys.mjs 2026-08-26 17:03:58.000000000 +0000 @@ -36,6 +36,7 @@ * @property {number} [portId] * @property {boolean} [native] * @property {boolean} [source] + * @property {string} [reportOnOpened] * @property {string} [reportOnClosed] * * Lists of recvX, sendX, queryX and castX methods this subject will use. @@ -66,8 +67,6 @@ import { ExtensionUtils } from "resource://gre/modules/ExtensionUtils.sys.mjs"; import { WebNavigationFrames } from "resource://gre/modules/WebNavigationFrames.sys.mjs"; -const { DefaultWeakMap, ExtensionError } = ExtensionUtils; - const BATCH_TIMEOUT_MS = 250; const ADDON_ENV = new Set(["addon_child", "devtools_child"]); @@ -85,7 +84,10 @@ byMethod: new Map(), /** @type {WeakMap>} Conduits by actor. */ - byActor: new DefaultWeakMap(() => new Set()), + byActor: new ExtensionUtils.DefaultWeakMap(() => new Set()), + + /** @type {Map} */ + reportOnOpened: new Map(), /** @type {Map} */ reportOnClosed: new Map(), @@ -218,6 +220,19 @@ */ recvConduitOpened(address, actor) { this.fillInAddress(address, actor); + + for (let [key, conduit] of this.reportOnOpened.entries()) { + if (address[key] != null) { + // A subject may veto by throwing, leaving the conduit unregistered. + try { + conduit.subject.recvConduitOpened(address); + } catch (e) { + Cu.reportError(e); + return; + } + } + } + this.remotes.set(address.id, address); this.byActor.get(actor).add(address); }, @@ -274,6 +289,12 @@ this[`cast${name}`] = this._cast.bind(this, name); } + // Wants to authorize conduits with a specific attribute as they open. + // `subject.recvConduitOpened(address)` throws to reject. + if (address.reportOnOpened) { + Hub.reportOnOpened.set(address.reportOnOpened, this); + } + // Wants to know when conduits with a specific attribute are closed. // `subject.recvConduitClosed(address)` method will be called. if (address.reportOnClosed) { @@ -309,14 +330,13 @@ /** * Broadcasts a method call to all conduits of kind that satisfy filtering by - * kind-specific properties from arg. If arg.query is true, these broadcasts - * are all queries and this returns an array of response promises. Otherwise, - * they are not, and undefined is returned. + * kind-specific properties from arg. Returns the targeted conduits, along + * with the response promises for a query. * * @param {string} method * @param {BroadcastKind} kind * @param {object} arg - * @returns {undefined | Promise | Promise} + * @returns {{ targets: ConduitAddress[], promises: Promise[] }} */ _cast(method, kind, arg) { let filters = { @@ -347,50 +367,7 @@ let targets = Array.from(Hub.remotes.values()).filter(filters[kind]); let promises = targets.map(c => this._send(method, !!arg.query, c.id, arg)); - if (arg.query) { - return arg.firstResponse - ? this._raceResponses(promises) - : Promise.allSettled(promises); - } - return undefined; - } - - /** - * Custom Promise.race() function that ignores certain resolutions and errors. - * - * @typedef {{response?: any, received?: boolean}} Response - * - * @param {Promise[]} promises - * @returns {Promise} - */ - _raceResponses(promises) { - return new Promise((resolve, reject) => { - let result; - promises.map(p => - p - .then(value => { - if (value.response) { - // We have an explicit response, resolve immediately. - resolve(value); - } else if (value.received) { - // Message was received, but no response. - // Resolve with this only if there is no other explicit response. - result = value; - } - }) - .catch(err => { - // Forward errors that are exposed to extension, but ignore - // internal errors such as actor destruction and DataCloneError. - if (err instanceof ExtensionError || err?.mozWebExtLocation) { - reject(err); - } else { - Cu.reportError(err); - } - }) - ); - // Ensure resolving when there are no responses. - Promise.allSettled(promises).then(() => resolve(result)); - }); + return { targets, promises }; } async close() { diff -Nru firefox-esr-140.13.0esr/toolkit/components/extensions/ExtensionParent.sys.mjs firefox-esr-140.15.0esr/toolkit/components/extensions/ExtensionParent.sys.mjs --- firefox-esr-140.13.0esr/toolkit/components/extensions/ExtensionParent.sys.mjs 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/extensions/ExtensionParent.sys.mjs 2026-08-26 17:03:57.000000000 +0000 @@ -247,15 +247,33 @@ /** @type {Map} */ portPromises: new Map(), + // Known endpoints of each open port. + /** @type {Map} portId -> source actor. */ + portSources: new Map(), + /** @type {Map>} portId -> known receiver actors. */ + portReceivers: new Map(), + init() { this.conduit = new lazy.BroadcastConduit(ProxyMessenger, { id: "ProxyMessenger", + reportOnOpened: "portId", reportOnClosed: "portId", recv: ["PortConnect", "PortMessage", "NativeMessage", "RuntimeMessage"], cast: ["PortConnect", "PortMessage", "PortDisconnect", "RuntimeMessage"], }); }, + recvConduitOpened({ portId, source, actor, extensionId }) { + if (source) { + if (this.portSources.has(portId)) { + throw new Error(`Duplicate port source for ${extensionId}`); + } + this.portSources.set(portId, actor); + } else if (!this.portReceivers.get(portId)?.has(actor)) { + throw new Error(`Unknown port receiver for ${extensionId}`); + } + }, + openNative(nativeApp, sender) { let context = ParentAPIManager.getContextById(sender.childId); if (context.extension.hasPermission("geckoViewAddons")) { @@ -347,10 +365,10 @@ }, async recvRuntimeMessage(arg, { sender }) { - arg.firstResponse = true; let kind = await this.normalizeArgs(arg, sender); arg.query = true; - let result = await this.conduit.castRuntimeMessage(kind, arg); + let { promises } = this.conduit.castRuntimeMessage(kind, arg); + let result = await raceResponses(promises); if (!result) { // "throw new ExtensionError" cannot be used because then the stack of the // sendMessage call would not be added to the error object generated by @@ -361,6 +379,12 @@ }, async recvPortConnect(arg, { sender }) { + // openConduit(source=true) precedes queryPortConnect and sets portSources. + if (this.portSources.get(arg.portId) !== sender.actor) { + Cu.reportError(`Unexpected port source for ${sender.extensionId}`); + throw new ExtensionError(ERROR_NO_RECEIVERS); + } + if (arg.native) { /** @type {ParentPort} */ let port = this.openNative(arg.name, sender).onConnect(arg.portId, this); @@ -378,7 +402,12 @@ try { let kind = await this.normalizeArgs(arg, sender); arg.query = true; - let all = await this.conduit.castPortConnect(kind, arg); + let { targets, promises } = this.conduit.castPortConnect(kind, arg); + // Holds actors from which we accept recvConduitOpened for this portId, + // before castPortConnect settles. No await between cast and assignment, + // or a target's recvConduitOpened could arrive first and be rejected. + this.portReceivers.set(arg.portId, new Set(targets.map(t => t.actor))); + let all = await Promise.allSettled(promises); resolve(); // If there are no active onConnect listeners. @@ -391,6 +420,7 @@ throw err; } finally { this.portPromises.delete(arg.portId); + this.portReceivers.delete(arg.portId); } }, @@ -407,6 +437,10 @@ }, async recvConduitClosed(sender) { + if (sender.source) { + this.portSources.delete(sender.portId); + } + let app = this.ports.get(sender.portId); if (this.ports.delete(sender.portId) && sender.native) { this.untrackNativeAppPort(app); @@ -463,6 +497,46 @@ }; ProxyMessenger.init(); +/** + * Custom Promise.race() function that ignores certain resolutions and errors, + * used to resolve a runtime.sendMessage query with its first explicit response + * across all onMessage listeners. + * + * @typedef {{response?: any, received?: boolean}} Response + * + * @param {Promise[]} promises + * @returns {Promise} + */ +function raceResponses(promises) { + return new Promise((resolve, reject) => { + let result; + promises.map(p => + p + .then(value => { + if (value.response) { + // We have an explicit response, resolve immediately. + resolve(value); + } else if (value.received) { + // Message was received, but no response. + // Resolve with this only if there is no other explicit response. + result = value; + } + }) + .catch(err => { + // Forward errors that are exposed to extension, but ignore + // internal errors such as actor destruction and DataCloneError. + if (err instanceof ExtensionError || err?.mozWebExtLocation) { + reject(err); + } else { + Cu.reportError(err); + } + }) + ); + // Ensure resolving when there are no responses. + Promise.allSettled(promises).then(() => resolve(result)); + }); +} + // Responsible for loading extension APIs into the right globals. GlobalManager = { // Map[extension ID -> Extension]. Determines which extension is diff -Nru firefox-esr-140.13.0esr/toolkit/components/extensions/test/xpcshell/test_ext_runtime_ports_membership.js firefox-esr-140.15.0esr/toolkit/components/extensions/test/xpcshell/test_ext_runtime_ports_membership.js --- firefox-esr-140.13.0esr/toolkit/components/extensions/test/xpcshell/test_ext_runtime_ports_membership.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/extensions/test/xpcshell/test_ext_runtime_ports_membership.js 2026-08-26 17:03:58.000000000 +0000 @@ -0,0 +1,110 @@ +"use strict"; + +// A compromised child could forge a raw IPC message reusing another portId +// to join a channel it shouldn't have access to. + +// The forged outbound PortMessages below are rejected in the parent, +// which surfaces as uncaught rejections; they are expected. +PromiseTestUtils.allowMatchingRejectionsGlobally( + /Unknown sender or wrong actor for recvPortMessage/ +); + +add_task(async function test_fake_conduits_receive_nothing() { + let ext = ExtensionTestUtils.loadExtension({ + background() { + browser.runtime.onConnect.addListener(port => { + port.onMessage.addListener(msg => { + if (msg === "SECRET") { + port.postMessage("ACK"); + } else { + browser.test.fail(`Receiver got a forged message: ${msg}`); + } + }); + }); + }, + files: { + "page.html": ``, + "page.js"() { + let port = browser.runtime.connect(); + port.onMessage.addListener(msg => { + if (msg === "ACK") { + browser.test.sendMessage("got-ack"); + } + }); + browser.test.onMessage.addListener(msg => { + if (msg === "post-secret") { + port.postMessage("SECRET"); + } + }); + browser.test.sendMessage("page-ready"); + }, + }, + }); + + await ext.startup(); + let url = `moz-extension://${ext.uuid}/page.html`; + let page = await ExtensionTestUtils.loadContentPage(url, { extension: ext }); + await ext.awaitMessage("page-ready"); + + // Open fake conduits for both source and receiver using a live portId. + // They share the page's actor, so IPC ordering would put any leaked + // message before the round-trip ACK. Neither should receive anything. + let { messages } = await promiseConsoleOutput(async () => { + await page.spawn([ext.id], extensionId => { + let actor = content.windowGlobalChild.getActor("Conduits"); + let port = [...actor.conduits.values()].find(c => c.address?.portId); + + // One fake subject for both port ends, a leak on either fails the test. + let fakeSubj = { + recvPortMessage(arg) { + Assert.ok( + false, + `Fake conduit received a message: ${JSON.stringify(arg)}` + ); + }, + recvPortDisconnect() { + Assert.ok(false, "Fake conduit received a disconnect"); + }, + }; + + for (let source of [true, false]) { + // Forges openConduit call from ExtensionChild.Port constructor. + let conduit = actor.openConduit(fakeSubj, { + id: source ? "fake@src" : "fake@rcv", + portId: port.address.portId, + source, + extensionId, + envType: "addon_child", + recv: ["PortMessage", "PortDisconnect"], + send: ["PortMessage"], + }); + + // Forge a message; parent drops it because the conduit was rejected. + conduit.sendPortMessage({ message: "INJECT" }); + } + }); + + // Round-trip so the veto logs (and any leak) land before capture ends. + ext.sendMessage("post-secret"); + await ext.awaitMessage("got-ack"); + }); + + Assert.ok( + messages.some(m => m.message?.includes("Duplicate port source")), + "Parent logged the duplicate source" + ); + Assert.ok( + messages.some(m => m.message?.includes("Unknown port receiver")), + "Parent logged the unknown receiver" + ); + Assert.equal( + messages.filter(m => + m.message?.includes("Unknown sender or wrong actor for recvPortMessage") + ).length, + 2, + "Parent rejected both forged outbound messages" + ); + + await page.close(); + await ext.unload(); +}); diff -Nru firefox-esr-140.13.0esr/toolkit/components/extensions/test/xpcshell/xpcshell-common.toml firefox-esr-140.15.0esr/toolkit/components/extensions/test/xpcshell/xpcshell-common.toml --- firefox-esr-140.13.0esr/toolkit/components/extensions/test/xpcshell/xpcshell-common.toml 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/extensions/test/xpcshell/xpcshell-common.toml 2026-08-26 17:03:57.000000000 +0000 @@ -478,6 +478,8 @@ ["test_ext_runtime_ports_gc.js"] +["test_ext_runtime_ports_membership.js"] + ["test_ext_runtime_sendMessage.js"] ["test_ext_runtime_sendMessage_errors.js"] diff -Nru firefox-esr-140.13.0esr/toolkit/components/find/nsFind.cpp firefox-esr-140.15.0esr/toolkit/components/find/nsFind.cpp --- firefox-esr-140.13.0esr/toolkit/components/find/nsFind.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/find/nsFind.cpp 2026-08-26 17:03:57.000000000 +0000 @@ -973,7 +973,7 @@ // If a word break isn't there when it needs to be, reset search. if (mWordEndBounded && nextChar && !BreakInBetween(c, nextChar)) { - matchAnchorNode = nullptr; + EndPartialMatch(); continue; } diff -Nru firefox-esr-140.13.0esr/toolkit/components/gfx/SanityTest.sys.mjs firefox-esr-140.15.0esr/toolkit/components/gfx/SanityTest.sys.mjs --- firefox-esr-140.13.0esr/toolkit/components/gfx/SanityTest.sys.mjs 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/gfx/SanityTest.sys.mjs 2026-08-26 17:03:58.000000000 +0000 @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -const FRAME_SCRIPT_URL = "chrome://gfxsanity/content/gfxFrameScript.js"; +const FRAME_SCRIPT_URL = "resource://gfxsanity/gfxFrameScript.js"; const TEST_DISABLED_PREF = "media.sanity-test.disabled"; const PAGE_WIDTH = 160; diff -Nru firefox-esr-140.13.0esr/toolkit/components/gfx/content/gfxFrameScript.js firefox-esr-140.15.0esr/toolkit/components/gfx/content/gfxFrameScript.js --- firefox-esr-140.13.0esr/toolkit/components/gfx/content/gfxFrameScript.js 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/gfx/content/gfxFrameScript.js 2026-08-26 17:03:57.000000000 +0000 @@ -23,7 +23,7 @@ triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(), }; webNav.loadURI( - Services.io.newURI("chrome://gfxsanity/content/sanitytest.html"), + Services.io.newURI("resource://gfxsanity/sanitytest.html"), loadURIOptions ); }, diff -Nru firefox-esr-140.13.0esr/toolkit/components/gfx/content/sanitytest.html firefox-esr-140.15.0esr/toolkit/components/gfx/content/sanitytest.html --- firefox-esr-140.13.0esr/toolkit/components/gfx/content/sanitytest.html 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/gfx/content/sanitytest.html 2026-08-26 17:03:58.000000000 +0000 @@ -6,7 +6,7 @@ diff -Nru firefox-esr-140.13.0esr/toolkit/components/gfx/jar.mn firefox-esr-140.15.0esr/toolkit/components/gfx/jar.mn --- firefox-esr-140.13.0esr/toolkit/components/gfx/jar.mn 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/gfx/jar.mn 2026-08-26 17:03:58.000000000 +0000 @@ -4,7 +4,8 @@ toolkit.jar: % content gfxsanity %content/gfxsanity/ - content/gfxsanity/gfxFrameScript.js (content/gfxFrameScript.js) +% resource gfxsanity %res/gfxsanity/ content/gfxsanity/sanityparent.html (content/sanityparent.html) - content/gfxsanity/sanitytest.html (content/sanitytest.html) - content/gfxsanity/videotest.mp4 (content/videotest.mp4) + res/gfxsanity/gfxFrameScript.js (content/gfxFrameScript.js) + res/gfxsanity/sanitytest.html (content/sanitytest.html) + res/gfxsanity/videotest.mp4 (content/videotest.mp4) diff -Nru firefox-esr-140.13.0esr/toolkit/components/nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs firefox-esr-140.15.0esr/toolkit/components/nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs --- firefox-esr-140.13.0esr/toolkit/components/nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs 2026-08-26 17:03:57.000000000 +0000 @@ -467,6 +467,7 @@ recipes = await client.get({ forceSync, emptyListFallback: false, // Throw instead of returning an empty list. + verifySignature: true, }); lazy.log.debug( `Got ${recipes.length} recipes from ${client.collectionName}` diff -Nru firefox-esr-140.13.0esr/toolkit/components/nimbus/test/NimbusTestUtils.sys.mjs firefox-esr-140.15.0esr/toolkit/components/nimbus/test/NimbusTestUtils.sys.mjs --- firefox-esr-140.13.0esr/toolkit/components/nimbus/test/NimbusTestUtils.sys.mjs 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/nimbus/test/NimbusTestUtils.sys.mjs 2026-08-26 17:03:57.000000000 +0000 @@ -964,6 +964,36 @@ return slugs.length === 0; }, "Waiting for unenrollments to sync to database"); }, + + /** + * Temporarily disable signature verification for Remote Settings clients used + * by Nimbus. + * + * NB: This is only required for browser tests. + * + * @returns {() => void} A callback that will restore signature verification + * to its previous state. + */ + disableSignatureVerification() { + const { remoteSettingsClients } = ExperimentAPI._rsLoader; + + const originalValues = Object.fromEntries( + Object.entries(remoteSettingsClients).map(([key, collection]) => [ + key, + collection.verifySignature, + ]) + ); + + for (const client of Object.values(remoteSettingsClients)) { + client.verifySignature = false; + } + + return () => { + for (const [key, client] of Object.entries(remoteSettingsClients)) { + client.verifySignature = originalValues[key]; + } + }; + }, }; Object.defineProperties(NimbusTestUtils.factories.experiment, { diff -Nru firefox-esr-140.13.0esr/toolkit/components/nimbus/test/browser/head.js firefox-esr-140.15.0esr/toolkit/components/nimbus/test/browser/head.js --- firefox-esr-140.13.0esr/toolkit/components/nimbus/test/browser/head.js 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/nimbus/test/browser/head.js 2026-08-26 17:03:58.000000000 +0000 @@ -34,6 +34,8 @@ return origAddExperiment(enrollment); }); + registerCleanupFunction(NimbusTestUtils.disableSignatureVerification()); + // Ensure the inner callback runs after all other registered cleanup // functions. This lets tests use registerCleanupFunction to clean up any // stray enrollments. diff -Nru firefox-esr-140.13.0esr/toolkit/components/places/PageIconProtocolHandler.cpp firefox-esr-140.15.0esr/toolkit/components/places/PageIconProtocolHandler.cpp --- firefox-esr-140.13.0esr/toolkit/components/places/PageIconProtocolHandler.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/places/PageIconProtocolHandler.cpp 2026-08-26 17:03:57.000000000 +0000 @@ -8,6 +8,7 @@ #include "mozilla/ScopeExit.h" #include "mozilla/Components.h" #include "mozilla/Try.h" +#include "nsContentUtils.h" #include "nsFaviconService.h" #include "nsStringStream.h" #include "nsStreamUtils.h" @@ -183,6 +184,10 @@ NS_IMETHODIMP PageIconProtocolHandler::NewChannel(nsIURI* aURI, nsILoadInfo* aLoadInfo, nsIChannel** aOutChannel) { + if (!nsContentUtils::IsImageType(aLoadInfo->GetExternalContentPolicyType())) { + return NS_ERROR_CONTENT_BLOCKED; + } + // Load the URI remotely if accessed from a child. if (IsNeckoChild()) { MOZ_TRY(SubstituteRemoteChannel(aURI, aLoadInfo, aOutChannel)); @@ -309,6 +314,11 @@ __func__); } + if (!nsContentUtils::IsImageType(aLoadInfo->GetExternalContentPolicyType())) { + return RemoteStreamPromise::CreateAndReject(NS_ERROR_CONTENT_BLOCKED, + __func__); + } + // For errors after this point, we want to propagate the error to // the child, but we don't force the child process to be terminated. *aTerminateSender = false; diff -Nru firefox-esr-140.13.0esr/toolkit/components/places/nsCachedFaviconProtocolHandler.cpp firefox-esr-140.15.0esr/toolkit/components/places/nsCachedFaviconProtocolHandler.cpp --- firefox-esr-140.13.0esr/toolkit/components/places/nsCachedFaviconProtocolHandler.cpp 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/places/nsCachedFaviconProtocolHandler.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -257,6 +257,10 @@ nsIChannel** _retval) { NS_ENSURE_ARG_POINTER(aURI); + if (!nsContentUtils::IsImageType(aLoadInfo->GetExternalContentPolicyType())) { + return NS_ERROR_CONTENT_BLOCKED; + } + nsCOMPtr cachedFaviconURI; nsresult rv = ParseCachedFaviconURI(aURI, getter_AddRefs(cachedFaviconURI)); NS_ENSURE_SUCCESS(rv, rv); diff -Nru firefox-esr-140.13.0esr/toolkit/components/reputationservice/ApplicationReputation.cpp firefox-esr-140.15.0esr/toolkit/components/reputationservice/ApplicationReputation.cpp --- firefox-esr-140.13.0esr/toolkit/components/reputationservice/ApplicationReputation.cpp 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/reputationservice/ApplicationReputation.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -935,7 +935,8 @@ const char* const aFileExtensions[], const size_t aLength) { for (size_t i = 0; i < aLength; ++i) { - if (StringEndsWith(aFilename, nsDependentCString(aFileExtensions[i]))) { + if (StringEndsWith(aFilename, nsDependentCString(aFileExtensions[i]), + nsCaseInsensitiveCStringComparator)) { return aFileExtensions[i]; } } @@ -975,37 +976,42 @@ const nsACString& aFilename) { MOZ_ASSERT(IsBinary(aFilename)); + // Extensions are matched case-insensitively, so compare against a lowercased + // copy of the filename. + nsAutoCString fileName(aFilename); + ToLowerCase(fileName); + // From // https://cs.chromium.org/chromium/src/chrome/common/safe_browsing/download_protection_util.cc?l=17 - if (StringEndsWith(aFilename, ".zip"_ns)) { + if (StringEndsWith(fileName, ".zip"_ns)) { return ClientDownloadRequest::ZIPPED_EXECUTABLE; - } else if (StringEndsWith(aFilename, ".apk"_ns)) { + } else if (StringEndsWith(fileName, ".apk"_ns)) { return ClientDownloadRequest::ANDROID_APK; - } else if (StringEndsWith(aFilename, ".app"_ns) || - StringEndsWith(aFilename, ".applescript"_ns) || - StringEndsWith(aFilename, ".cdr"_ns) || - StringEndsWith(aFilename, ".dart"_ns) || - StringEndsWith(aFilename, ".dc42"_ns) || - StringEndsWith(aFilename, ".diskcopy42"_ns) || - StringEndsWith(aFilename, ".dmg"_ns) || - StringEndsWith(aFilename, ".dmgpart"_ns) || - StringEndsWith(aFilename, ".dvdr"_ns) || - StringEndsWith(aFilename, ".img"_ns) || - StringEndsWith(aFilename, ".imgpart"_ns) || - StringEndsWith(aFilename, ".iso"_ns) || - StringEndsWith(aFilename, ".mpkg"_ns) || - StringEndsWith(aFilename, ".ndif"_ns) || - StringEndsWith(aFilename, ".osas"_ns) || - StringEndsWith(aFilename, ".osax"_ns) || - StringEndsWith(aFilename, ".pkg"_ns) || - StringEndsWith(aFilename, ".scpt"_ns) || - StringEndsWith(aFilename, ".scptd"_ns) || - StringEndsWith(aFilename, ".seplugin"_ns) || - StringEndsWith(aFilename, ".smi"_ns) || - StringEndsWith(aFilename, ".sparsebundle"_ns) || - StringEndsWith(aFilename, ".sparseimage"_ns) || - StringEndsWith(aFilename, ".toast"_ns) || - StringEndsWith(aFilename, ".udif"_ns)) { + } else if (StringEndsWith(fileName, ".app"_ns) || + StringEndsWith(fileName, ".applescript"_ns) || + StringEndsWith(fileName, ".cdr"_ns) || + StringEndsWith(fileName, ".dart"_ns) || + StringEndsWith(fileName, ".dc42"_ns) || + StringEndsWith(fileName, ".diskcopy42"_ns) || + StringEndsWith(fileName, ".dmg"_ns) || + StringEndsWith(fileName, ".dmgpart"_ns) || + StringEndsWith(fileName, ".dvdr"_ns) || + StringEndsWith(fileName, ".img"_ns) || + StringEndsWith(fileName, ".imgpart"_ns) || + StringEndsWith(fileName, ".iso"_ns) || + StringEndsWith(fileName, ".mpkg"_ns) || + StringEndsWith(fileName, ".ndif"_ns) || + StringEndsWith(fileName, ".osas"_ns) || + StringEndsWith(fileName, ".osax"_ns) || + StringEndsWith(fileName, ".pkg"_ns) || + StringEndsWith(fileName, ".scpt"_ns) || + StringEndsWith(fileName, ".scptd"_ns) || + StringEndsWith(fileName, ".seplugin"_ns) || + StringEndsWith(fileName, ".smi"_ns) || + StringEndsWith(fileName, ".sparsebundle"_ns) || + StringEndsWith(fileName, ".sparseimage"_ns) || + StringEndsWith(fileName, ".toast"_ns) || + StringEndsWith(fileName, ".udif"_ns)) { return ClientDownloadRequest::MAC_EXECUTABLE; } diff -Nru firefox-esr-140.13.0esr/toolkit/components/telemetry/Histograms.json firefox-esr-140.15.0esr/toolkit/components/telemetry/Histograms.json --- firefox-esr-140.13.0esr/toolkit/components/telemetry/Histograms.json 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/telemetry/Histograms.json 2026-08-26 17:03:58.000000000 +0000 @@ -1713,15 +1713,6 @@ "n_values": 8, "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)" }, - "GDI_INITFONTLIST_TOTAL": { - "record_in_processes": ["main", "content"], - "products": ["firefox", "fennec"], - "expires_in_version": "never", - "kind": "exponential", - "high": 30000, - "n_buckets": 10, - "description": "gfxGDIFontList::InitFontList Total (ms)" - }, "MAC_INITFONTLIST_TOTAL": { "record_in_processes": ["main", "content"], "products": ["firefox", "fennec"], diff -Nru firefox-esr-140.13.0esr/toolkit/components/telemetry/histogram-allowlists.json firefox-esr-140.15.0esr/toolkit/components/telemetry/histogram-allowlists.json --- firefox-esr-140.13.0esr/toolkit/components/telemetry/histogram-allowlists.json 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/components/telemetry/histogram-allowlists.json 2026-08-26 17:03:57.000000000 +0000 @@ -42,7 +42,6 @@ "FX_THUMBNAILS_CAPTURE_TIME_MS", "FX_THUMBNAILS_STORE_TIME_MS", "FX_TOTAL_TOP_VISITS", - "GDI_INITFONTLIST_TOTAL", "HISTORY_LASTVISITED_TREE_QUERY_TIME_MS", "HTTP_CACHE_ENTRY_ALIVE_TIME", "HTTP_CACHE_ENTRY_RELOAD_TIME", @@ -235,7 +234,6 @@ "FX_THUMBNAILS_CAPTURE_TIME_MS", "FX_THUMBNAILS_STORE_TIME_MS", "FX_TOTAL_TOP_VISITS", - "GDI_INITFONTLIST_TOTAL", "GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE", "GFX_CRASH", "GHOST_WINDOWS", diff -Nru firefox-esr-140.13.0esr/toolkit/content/tests/chrome/findbar_entireword_window.xhtml firefox-esr-140.15.0esr/toolkit/content/tests/chrome/findbar_entireword_window.xhtml --- firefox-esr-140.13.0esr/toolkit/content/tests/chrome/findbar_entireword_window.xhtml 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/content/tests/chrome/findbar_entireword_window.xhtml 2026-08-26 17:03:58.000000000 +0000 @@ -32,7 +32,7 @@ var info = window.arguments[0].info; SimpleTest.requestLongerTimeout(2); - const kBaseURL = "chrome://mochitests/content/chrome/toolkit/content/tests/chrome"; + const kBaseURL = "https://mochi.test/chrome/toolkit/content/tests/chrome"; const kTests = { latin1: { testSimpleEntireWord: { diff -Nru firefox-esr-140.13.0esr/toolkit/library/rust/shared/lib.rs firefox-esr-140.15.0esr/toolkit/library/rust/shared/lib.rs --- firefox-esr-140.13.0esr/toolkit/library/rust/shared/lib.rs 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/library/rust/shared/lib.rs 2026-08-26 17:03:58.000000000 +0000 @@ -121,7 +121,7 @@ #[cfg(target_os = "windows")] extern crate detect_win32k_conflicts; -#[cfg(target_os = "windows")] +#[cfg(all(target_os = "windows", feature = "shell_windows"))] extern crate shell_windows; extern crate origin_trials_ffi; diff -Nru firefox-esr-140.13.0esr/toolkit/mozapps/handling/ContentDispatchChooser.sys.mjs firefox-esr-140.15.0esr/toolkit/mozapps/handling/ContentDispatchChooser.sys.mjs --- firefox-esr-140.13.0esr/toolkit/mozapps/handling/ContentDispatchChooser.sys.mjs 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/mozapps/handling/ContentDispatchChooser.sys.mjs 2026-08-26 17:03:58.000000000 +0000 @@ -146,7 +146,7 @@ * protocol navigation. */ async _prompt(aHandler, aPrincipal, aHasPermission, aBrowsingContext, aURI) { - let shouldOpenHandler = false; + let shouldOpenHandler = aHasPermission; let resetHandlerChoice = false; let updateHandlerData = false; diff -Nru firefox-esr-140.13.0esr/toolkit/xre/dllservices/mozglue/Authenticode.cpp firefox-esr-140.15.0esr/toolkit/xre/dllservices/mozglue/Authenticode.cpp --- firefox-esr-140.13.0esr/toolkit/xre/dllservices/mozglue/Authenticode.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/toolkit/xre/dllservices/mozglue/Authenticode.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -179,6 +179,9 @@ for (DWORD i = 0; i < attributesInfo->cAttr; ++i) { PCRYPT_ATTRIBUTE cur = &attributesInfo->rgAttr[i]; if (!strcmp(cur->pszObjId, szOID_NESTED_SIGNATURE)) { + if (cur->cValue < 1 || !cur->rgValue) { + continue; + } CryptMsgUniquePtr nestedMsg( CryptMsgOpenToDecode(kEncodingTypes, 0, 0, NULL, NULL, NULL)); if (!nestedMsg) { diff -Nru firefox-esr-140.13.0esr/tools/tryselect/push.py firefox-esr-140.15.0esr/tools/tryselect/push.py --- firefox-esr-140.13.0esr/tools/tryselect/push.py 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/tools/tryselect/push.py 2026-08-26 17:03:58.000000000 +0000 @@ -43,9 +43,7 @@ MACH_TRY_PUSH_TO_VCS = os.getenv("MACH_TRY_PUSH_TO_VCS") == "1" -TREEHERDER_LANDO_TRY_RUN_URL = ( - "https://treeherder.mozilla.org/jobs?repo=try&landoCommitID={job_id}" -) +TREEHERDER_LANDO_TRY_RUN_URL = "https://treeherder.mozilla.org/jobs?repo=try&landoInstance=lando-prod-2025&landoCommitID={job_id}" here = os.path.abspath(os.path.dirname(__file__)) build = MozbuildObject.from_environment(cwd=here) diff -Nru firefox-esr-140.13.0esr/tools/tryselect/selectors/perf.py firefox-esr-140.15.0esr/tools/tryselect/selectors/perf.py --- firefox-esr-140.13.0esr/tools/tryselect/selectors/perf.py 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/tools/tryselect/selectors/perf.py 2026-08-26 17:03:58.000000000 +0000 @@ -50,12 +50,10 @@ ) PERFCOMPARE_BASE_URL_LANDO = ( "https://perf.compare/compare-lando-results?" - "baseLando=%s&newLando=%s&baseRepo=try&newRepo=try&framework=%s" + "landoInstance=lando-prod-2025&baseLando=%s&newLando=%s&baseRepo=try&newRepo=try&framework=%s" ) TREEHERDER_TRY_BASE_URL = "https://treeherder.mozilla.org/jobs?repo=try&revision=%s" -TREEHERDER_TRY_LANDO_BASE_URL = ( - "https://treeherder.mozilla.org/jobs?repo=try&landoCommitID=%s" -) +TREEHERDER_TRY_LANDO_BASE_URL = "https://treeherder.mozilla.org/jobs?repo=try&landoInstance=lando-prod-2025&landoCommitID=%s" TREEHERDER_ALERT_TASKS_URL = ( "https://treeherder.mozilla.org/api/performance/alertsummary-tasks/?id=%s" ) diff -Nru firefox-esr-140.13.0esr/tools/tryselect/test/test_perf.py firefox-esr-140.15.0esr/tools/tryselect/test/test_perf.py --- firefox-esr-140.13.0esr/tools/tryselect/test/test_perf.py 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/tools/tryselect/test/test_perf.py 2026-08-26 17:03:58.000000000 +0000 @@ -1162,6 +1162,7 @@ "here once the tests are complete (the autodetected framework " "selection may not show all of your tests):\n" " https://perf.compare/compare-lando-results?" + "landoInstance=lando-prod-2025&" "baseLando=13&newLando=14&" "baseRepo=try&newRepo=try&framework=1\n" ), diff -Nru firefox-esr-140.13.0esr/uriloader/exthandler/nsExternalHelperAppService.cpp firefox-esr-140.15.0esr/uriloader/exthandler/nsExternalHelperAppService.cpp --- firefox-esr-140.13.0esr/uriloader/exthandler/nsExternalHelperAppService.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/uriloader/exthandler/nsExternalHelperAppService.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -1009,11 +1009,13 @@ bool aHasValidUserGestureActivation, bool aNewWindowTarget) { NS_ENSURE_ARG_POINTER(aURI); + NS_ENSURE_ARG_POINTER(aTriggeringPrincipal); if (XRE_IsContentProcess()) { mozilla::dom::ContentChild::GetSingleton()->SendLoadURIExternal( - aURI, aTriggeringPrincipal, aRedirectPrincipal, aBrowsingContext, - aTriggeredExternally, aHasValidUserGestureActivation, aNewWindowTarget); + WrapNotNull(aURI), WrapNotNull(aTriggeringPrincipal), + aRedirectPrincipal, aBrowsingContext, aTriggeredExternally, + aHasValidUserGestureActivation, aNewWindowTarget); return NS_OK; } @@ -1081,7 +1083,7 @@ // links can always navigate everywhere, so this is a minor additional // restriction, only aiming to prevent some types of spoofing attacks // from otherwise disjoint browsingcontext trees. - if (aBrowsingContext && aTriggeringPrincipal && + if (aBrowsingContext && // Add-on principals are always allowed: !BasePrincipal::Cast(aTriggeringPrincipal)->AddonPolicy() && // As is chrome code: diff -Nru firefox-esr-140.13.0esr/widget/ClipboardWriteRequestParent.cpp firefox-esr-140.15.0esr/widget/ClipboardWriteRequestParent.cpp --- firefox-esr-140.13.0esr/widget/ClipboardWriteRequestParent.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/ClipboardWriteRequestParent.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -61,9 +61,7 @@ const IPCTransferable& aTransferable) { if (!mManager->ValidatePrincipal( aTransferable.dataPrincipal(), - {dom::ValidatePrincipalOptions::AllowNullPtr, - dom::ValidatePrincipalOptions::AllowExpanded, - dom::ValidatePrincipalOptions::AllowSystem})) { + {dom::ValidatePrincipalOptions::AllowNullPtr})) { return ContentParent::PrincipalValidationIpcFail( aTransferable.dataPrincipal(), this, __func__); } diff -Nru firefox-esr-140.13.0esr/widget/gtk/DMABufSurface.cpp firefox-esr-140.15.0esr/widget/gtk/DMABufSurface.cpp --- firefox-esr-140.13.0esr/widget/gtk/DMABufSurface.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/gtk/DMABufSurface.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -180,15 +180,27 @@ return false; } - static bool useDmabufGL = [&]() { - if (!aGLContext->IsExtensionSupported(gl::GLContext::OES_EGL_image)) { - gfxCriticalNote << "DMABufSurface::UseDmaBufGL(): no OES_EGL_image."; - return false; - } - return true; - }(); + // dma-buf is only used with hardware GL rendering. + if (gfx::gfxVars::UseSoftwareWebRender()) { + gfxCriticalNote << "DMABufSurface::UseDmaBufGL(): refusing dma-buf with " + "software rendering."; + return false; + } + + // Checked per context (not cached): mGL and the snapshot context can differ. + if (!aGLContext->IsExtensionSupported(gl::GLContext::OES_EGL_image)) { + gfxCriticalNote << "DMABufSurface::UseDmaBufGL(): no OES_EGL_image."; + return false; + } + + const auto& egl = gl::GLContextEGL::Cast(aGLContext)->mEgl; + if (!egl->IsExtensionSupported(EGLExtension::EXT_image_dma_buf_import)) { + gfxCriticalNote + << "DMABufSurface::UseDmaBufGL(): no EXT_image_dma_buf_import."; + return false; + } - return useDmabufGL; + return true; } bool DMABufSurface::UseDmaBufExportExtension(GLContext* aGLContext) { diff -Nru firefox-esr-140.13.0esr/widget/nsBaseDragService.cpp firefox-esr-140.15.0esr/widget/nsBaseDragService.cpp --- firefox-esr-140.13.0esr/widget/nsBaseDragService.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/nsBaseDragService.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -373,7 +373,7 @@ nsCOMPtr trans = do_CreateInstance("@mozilla.org/widget/transferable;1"); trans->Init(nullptr); - trans->SetDataPrincipal(mSourceNode->NodePrincipal()); + trans->SetDataPrincipal(mTriggeringPrincipal); trans->SetContentPolicyType(mContentPolicyType); trans->SetCookieJarSettings(aCookieJarSettings); mutableArray->AppendElement(trans); @@ -384,7 +384,7 @@ do_QueryElementAt(aTransferableArray, i); if (trans) { // Set the dataPrincipal on the transferable. - trans->SetDataPrincipal(mSourceNode->NodePrincipal()); + trans->SetDataPrincipal(mTriggeringPrincipal); trans->SetContentPolicyType(mContentPolicyType); trans->SetCookieJarSettings(aCookieJarSettings); } diff -Nru firefox-esr-140.13.0esr/widget/nsDragServiceProxy.cpp firefox-esr-140.15.0esr/widget/nsDragServiceProxy.cpp --- firefox-esr-140.13.0esr/widget/nsDragServiceProxy.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/nsDragServiceProxy.cpp 2026-08-26 17:03:59.000000000 +0000 @@ -63,6 +63,7 @@ aArrayTransferables, transferables, false, nullptr); nsCOMPtr principal; + // XXX: Can this use mTriggeringPrincipal instead? if (mSourceNode) { principal = mSourceNode->NodePrincipal(); } diff -Nru firefox-esr-140.13.0esr/widget/windows/DirectManipulationOwner.cpp firefox-esr-140.15.0esr/widget/windows/DirectManipulationOwner.cpp --- firefox-esr-140.13.0esr/widget/windows/DirectManipulationOwner.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/DirectManipulationOwner.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -7,6 +7,8 @@ #include "nsWindow.h" #include "WinModifierKeyState.h" #include "InputData.h" +#include "WinUtils.h" +#include "mozilla/ScopeExit.h" #include "mozilla/StaticPrefs_apz.h" #include "mozilla/SwipeTracker.h" #include "mozilla/TimeStamp.h" @@ -341,6 +343,9 @@ DManipEventHandler::OnInteraction( IDirectManipulationViewport2* viewport, DIRECTMANIPULATION_INTERACTION_TYPE interaction) { + // Skip if mOwner was already freed. Should never happen. + NS_ENSURE_TRUE(mOwner, S_OK); + if (interaction == DIRECTMANIPULATION_INTERACTION_BEGIN) { if (!mObserver) { mObserver = new VObserver(this); @@ -503,35 +508,19 @@ } void DirectManipulationOwner::Init(const LayoutDeviceIntRect& aBounds) { - HRESULT hr = CoCreateInstance( + auto uninitOnError = MakeScopeExit([this]() { Destroy(); }); + + NS_ENSURE_HRESULT_VOID(CoCreateInstance( CLSID_DirectManipulationManager, nullptr, CLSCTX_INPROC_SERVER, - IID_IDirectManipulationManager, getter_AddRefs(mDmManager)); - if (!SUCCEEDED(hr)) { - NS_WARNING("CoCreateInstance(CLSID_DirectManipulationManager failed"); - mDmManager = nullptr; - return; - } + IID_IDirectManipulationManager, getter_AddRefs(mDmManager))); - hr = mDmManager->GetUpdateManager(IID_IDirectManipulationUpdateManager, - getter_AddRefs(mDmUpdateManager)); - if (!SUCCEEDED(hr)) { - NS_WARNING("GetUpdateManager failed"); - mDmManager = nullptr; - mDmUpdateManager = nullptr; - return; - } + NS_ENSURE_HRESULT_VOID(mDmManager->GetUpdateManager( + IID_IDirectManipulationUpdateManager, getter_AddRefs(mDmUpdateManager))); HWND wnd = static_cast(mWindow->GetNativeData(NS_NATIVE_WINDOW)); - - hr = mDmManager->CreateViewport(nullptr, wnd, IID_IDirectManipulationViewport, - getter_AddRefs(mDmViewport)); - if (!SUCCEEDED(hr)) { - NS_WARNING("CreateViewport failed"); - mDmManager = nullptr; - mDmUpdateManager = nullptr; - mDmViewport = nullptr; - return; - } + NS_ENSURE_HRESULT_VOID( + mDmManager->CreateViewport(nullptr, wnd, IID_IDirectManipulationViewport, + getter_AddRefs(mDmViewport))); DIRECTMANIPULATION_CONFIGURATION configuration = DIRECTMANIPULATION_CONFIGURATION_INTERACTION | @@ -544,78 +533,21 @@ configuration |= DIRECTMANIPULATION_CONFIGURATION_SCALING; } - hr = mDmViewport->ActivateConfiguration(configuration); - if (!SUCCEEDED(hr)) { - NS_WARNING("ActivateConfiguration failed"); - mDmManager = nullptr; - mDmUpdateManager = nullptr; - mDmViewport = nullptr; - return; - } - - hr = mDmViewport->SetViewportOptions( - DIRECTMANIPULATION_VIEWPORT_OPTIONS_MANUALUPDATE); - if (!SUCCEEDED(hr)) { - NS_WARNING("SetViewportOptions failed"); - mDmManager = nullptr; - mDmUpdateManager = nullptr; - mDmViewport = nullptr; - return; - } + NS_ENSURE_HRESULT_VOID(mDmViewport->ActivateConfiguration(configuration)); + NS_ENSURE_HRESULT_VOID(mDmViewport->SetViewportOptions( + DIRECTMANIPULATION_VIEWPORT_OPTIONS_MANUALUPDATE)); mDmHandler = new DManipEventHandler(mWindow, this, aBounds); - - hr = mDmViewport->AddEventHandler(wnd, mDmHandler.get(), - &mDmViewportHandlerCookie); - if (!SUCCEEDED(hr)) { - NS_WARNING("AddEventHandler failed"); - mDmManager = nullptr; - mDmUpdateManager = nullptr; - mDmViewport = nullptr; - mDmHandler = nullptr; - return; - } + NS_ENSURE_HRESULT_VOID(mDmViewport->AddEventHandler( + wnd, mDmHandler.get(), &mDmViewportHandlerCookie)); RECT rect = {0, 0, aBounds.Width(), aBounds.Height()}; - hr = mDmViewport->SetViewportRect(&rect); - if (!SUCCEEDED(hr)) { - NS_WARNING("SetViewportRect failed"); - mDmManager = nullptr; - mDmUpdateManager = nullptr; - mDmViewport = nullptr; - mDmHandler = nullptr; - return; - } - - hr = mDmManager->Activate(wnd); - if (!SUCCEEDED(hr)) { - NS_WARNING("manager Activate failed"); - mDmManager = nullptr; - mDmUpdateManager = nullptr; - mDmViewport = nullptr; - mDmHandler = nullptr; - return; - } - - hr = mDmViewport->Enable(); - if (!SUCCEEDED(hr)) { - NS_WARNING("mDmViewport->Enable failed"); - mDmManager = nullptr; - mDmUpdateManager = nullptr; - mDmViewport = nullptr; - mDmHandler = nullptr; - return; - } + NS_ENSURE_HRESULT_VOID(mDmViewport->SetViewportRect(&rect)); + NS_ENSURE_HRESULT_VOID(mDmManager->Activate(wnd)); + NS_ENSURE_HRESULT_VOID(mDmViewport->Enable()); + NS_ENSURE_HRESULT_VOID(mDmUpdateManager->Update(nullptr)); - hr = mDmUpdateManager->Update(nullptr); - if (!SUCCEEDED(hr)) { - NS_WARNING("mDmUpdateManager->Update failed"); - mDmManager = nullptr; - mDmUpdateManager = nullptr; - mDmViewport = nullptr; - mDmHandler = nullptr; - return; - } + uninitOnError.release(); } void DirectManipulationOwner::ResizeViewport( @@ -634,18 +566,6 @@ } void DirectManipulationOwner::Destroy() { - if (mDmHandler) { - mDmHandler->mWindow = nullptr; - mDmHandler->mOwner = nullptr; - if (mDmHandler->mObserver) { - gfxWindowsPlatform::GetPlatform() - ->GetGlobalVsyncDispatcher() - ->RemoveMainThreadObserver(mDmHandler->mObserver); - mDmHandler->mObserver->ClearOwner(); - mDmHandler->mObserver = nullptr; - } - } - HRESULT hr; if (mDmViewport) { hr = mDmViewport->Stop(); @@ -662,6 +582,19 @@ if (!SUCCEEDED(hr)) { NS_WARNING("mDmViewport->RemoveEventHandler() failed"); } + mDmViewportHandlerCookie = 0; + + if (mDmHandler) { + mDmHandler->mWindow = nullptr; + mDmHandler->mOwner = nullptr; + if (mDmHandler->mObserver) { + gfxWindowsPlatform::GetPlatform() + ->GetGlobalVsyncDispatcher() + ->RemoveMainThreadObserver(mDmHandler->mObserver); + mDmHandler->mObserver->ClearOwner(); + mDmHandler->mObserver = nullptr; + } + } hr = mDmViewport->Abandon(); if (!SUCCEEDED(hr)) { diff -Nru firefox-esr-140.13.0esr/widget/windows/DirectManipulationOwner.h firefox-esr-140.15.0esr/widget/windows/DirectManipulationOwner.h --- firefox-esr-140.13.0esr/widget/windows/DirectManipulationOwner.h 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/DirectManipulationOwner.h 2026-08-26 17:03:58.000000000 +0000 @@ -41,7 +41,7 @@ private: nsWindow* mWindow; - DWORD mDmViewportHandlerCookie; + DWORD mDmViewportHandlerCookie = 0; RefPtr mDmManager; RefPtr mDmUpdateManager; RefPtr mDmViewport; diff -Nru firefox-esr-140.13.0esr/widget/windows/JumpListBuilder.cpp firefox-esr-140.15.0esr/widget/windows/JumpListBuilder.cpp --- firefox-esr-140.13.0esr/widget/windows/JumpListBuilder.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/JumpListBuilder.cpp 2026-08-26 17:03:59.000000000 +0000 @@ -9,6 +9,7 @@ #include #include #include "JumpListBuilder.h" +#include "mozilla/CmdLineAndEnvUtils.h" #include "mozilla/Preferences.h" #include "mozilla/dom/Promise.h" #include "mozilla/dom/WindowsJumpListShortcutDescriptionBinding.h" @@ -849,10 +850,20 @@ hr = psl->SetDescription(descriptionCopy.get()); - if (aDesc.mArguments.WasPassed() && !aDesc.mArguments.Value().IsEmpty()) { - hr = psl->SetArguments(aDesc.mArguments.Value().get()); - } else { - hr = psl->SetArguments(L""); + if (aDesc.mArguments.WasPassed()) { + const mozilla::dom::Sequence& arguments = + aDesc.mArguments.Value(); + + // MakeCommandLine expects wchar_t**, but we have Sequence, so + // convert it over. + AutoTArray flatArgs; + for (const nsString& arg : arguments) { + flatArgs.AppendElement(arg.get()); + } + + UniquePtr commandLine = mozilla::MakeCommandLine( + AssertedCast(flatArgs.Length()), flatArgs.Elements()); + hr = psl->SetArguments(commandLine.get()); } // Set up the fallback icon in the event that a valid icon URI has diff -Nru firefox-esr-140.13.0esr/widget/windows/TSFEmptyTextStore.cpp firefox-esr-140.15.0esr/widget/windows/TSFEmptyTextStore.cpp --- firefox-esr-140.13.0esr/widget/windows/TSFEmptyTextStore.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/TSFEmptyTextStore.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -341,9 +341,7 @@ "cFilterAttrs=%lu)", this, AutoFindFlagsCString(dwFlags).get(), cFilterAttrs)); - return HandleRequestAttrs( - dwFlags, cFilterAttrs, paFilterAttrs, - TSFUtils::NUM_OF_SUPPORTED_ATTRS_IN_EMPTY_TEXT_STORE); + return HandleRequestAttrs(dwFlags, cFilterAttrs, paFilterAttrs); } STDMETHODIMP TSFEmptyTextStore::RequestAttrsAtPosition( @@ -354,17 +352,14 @@ "cFilterAttrs=%lu, dwFlags=%s)", this, acpPos, cFilterAttrs, AutoFindFlagsCString(dwFlags).get())); - return HandleRequestAttrs( - dwFlags | TS_ATTR_FIND_WANT_VALUE, cFilterAttrs, paFilterAttrs, - TSFUtils::NUM_OF_SUPPORTED_ATTRS_IN_EMPTY_TEXT_STORE); + return HandleRequestAttrs(dwFlags | TS_ATTR_FIND_WANT_VALUE, cFilterAttrs, + paFilterAttrs); } STDMETHODIMP TSFEmptyTextStore::RetrieveRequestedAttrs(ULONG ulCount, TS_ATTRVAL* paAttrVals, ULONG* pcFetched) { - HRESULT hr = RetrieveRequestedAttrsInternal( - ulCount, paAttrVals, pcFetched, - TSFUtils::NUM_OF_SUPPORTED_ATTRS_IN_EMPTY_TEXT_STORE); + HRESULT hr = RetrieveRequestedAttrsInternal(ulCount, paAttrVals, pcFetched); if (FAILED(hr)) { return hr; } diff -Nru firefox-esr-140.13.0esr/widget/windows/TSFTextStore.cpp firefox-esr-140.15.0esr/widget/windows/TSFTextStore.cpp --- firefox-esr-140.13.0esr/widget/windows/TSFTextStore.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/TSFTextStore.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -1786,8 +1786,7 @@ "cFilterAttrs=%lu)", this, AutoFindFlagsCString(dwFlags).get(), cFilterAttrs)); - return HandleRequestAttrs(dwFlags, cFilterAttrs, paFilterAttrs, - TSFUtils::NUM_OF_SUPPORTED_ATTRS); + return HandleRequestAttrs(dwFlags, cFilterAttrs, paFilterAttrs); } STDMETHODIMP TSFTextStore::RequestAttrsAtPosition( @@ -1799,14 +1798,13 @@ this, acpPos, cFilterAttrs, AutoFindFlagsCString(dwFlags).get())); return HandleRequestAttrs(dwFlags | TS_ATTR_FIND_WANT_VALUE, cFilterAttrs, - paFilterAttrs, TSFUtils::NUM_OF_SUPPORTED_ATTRS); + paFilterAttrs); } STDMETHODIMP TSFTextStore::RetrieveRequestedAttrs(ULONG ulCount, TS_ATTRVAL* paAttrVals, ULONG* pcFetched) { - HRESULT hr = RetrieveRequestedAttrsInternal(ulCount, paAttrVals, pcFetched, - TSFUtils::NUM_OF_SUPPORTED_ATTRS); + HRESULT hr = RetrieveRequestedAttrsInternal(ulCount, paAttrVals, pcFetched); if (FAILED(hr)) { return hr; } diff -Nru firefox-esr-140.13.0esr/widget/windows/TSFTextStoreBase.cpp firefox-esr-140.15.0esr/widget/windows/TSFTextStoreBase.cpp --- firefox-esr-140.13.0esr/widget/windows/TSFTextStoreBase.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/TSFTextStoreBase.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -1002,16 +1002,12 @@ } HRESULT TSFTextStoreBase::HandleRequestAttrs(DWORD aFlags, ULONG aFilterCount, - const TS_ATTRID* aFilterAttrs, - int32_t aNumOfSupportedAttrs) { - MOZ_ASSERT(aNumOfSupportedAttrs == TSFUtils::NUM_OF_SUPPORTED_ATTRS || - aNumOfSupportedAttrs == - TSFUtils::NUM_OF_SUPPORTED_ATTRS_IN_EMPTY_TEXT_STORE); + const TS_ATTRID* aFilterAttrs) { MOZ_LOG(gIMELog, LogLevel::Info, ("0x%p TSFTextStoreBase::HandleRequestAttrs(aFlags=%s, " - "aFilterCount=%lu, aNumOfSupportedAttrs=%d)", + "aFilterCount=%lu), GetNumberOfSupportedAttrs()=%zu", this, AutoFindFlagsCString(aFlags).get(), aFilterCount, - aNumOfSupportedAttrs)); + GetNumberOfSupportedAttrs())); // This is a little weird! RequestSupportedAttrs gives us advanced notice // of a support query via RetrieveRequestedAttrs for a specific attribute. @@ -1019,7 +1015,7 @@ // support, but the text service will only want the input scope object // returned in RetrieveRequestedAttrs if the dwFlags passed in here contains // TS_ATTR_FIND_WANT_VALUE. - for (const int32_t i : IntegerRange(aNumOfSupportedAttrs)) { + for (const int32_t i : IntegerRange(GetNumberOfSupportedAttrs())) { mRequestedAttrs[i] = false; } mRequestedAttrValues = !!(aFlags & TS_ATTR_FIND_WANT_VALUE); @@ -1029,10 +1025,9 @@ ("0x%p TSFEmptyTextStore::HandleRequestAttrs(), " "requested attr=%s", this, AutoGuidCString(aFilterAttrs[i]).get())); - TSFUtils::AttrIndex index = - TSFUtils::GetRequestedAttrIndex(aFilterAttrs[i]); - if (index != TSFUtils::AttrIndex::NotSupported) { - mRequestedAttrs[index] = true; + AttrIndex index = GetRequestedAttrIndex(aFilterAttrs[i]); + if (index != AttrIndex::NotSupported) { + mRequestedAttrs[static_cast(index)] = true; } } return S_OK; @@ -1041,13 +1036,9 @@ // To test the document URL result, define this to out put it to the stdout // #define DEBUG_PRINT_DOCUMENT_URL -HRESULT TSFTextStoreBase::RetrieveRequestedAttrsInternal( - ULONG ulCount, TS_ATTRVAL* paAttrVals, ULONG* pcFetched, - int32_t aNumOfSupportedAttrs) { - MOZ_ASSERT(aNumOfSupportedAttrs == TSFUtils::NUM_OF_SUPPORTED_ATTRS || - aNumOfSupportedAttrs == - TSFUtils::NUM_OF_SUPPORTED_ATTRS_IN_EMPTY_TEXT_STORE); - +HRESULT TSFTextStoreBase::RetrieveRequestedAttrsInternal(ULONG ulCount, + TS_ATTRVAL* paAttrVals, + ULONG* pcFetched) { if (!pcFetched || !paAttrVals) { MOZ_LOG(gIMELog, LogLevel::Error, ("0x%p TSFTextStoreBase::RetrieveRequestedAttrs() FAILED due to " @@ -1058,7 +1049,7 @@ const ULONG expectedCount = [&]() { ULONG count = 0; - for (int32_t i : IntegerRange(aNumOfSupportedAttrs)) { + for (int32_t i : IntegerRange(GetNumberOfSupportedAttrs())) { if (mRequestedAttrs[i]) { count++; } @@ -1083,13 +1074,13 @@ #endif // #ifdef DEBUG_PRINT_DOCUMENT_URL int32_t count = 0; - for (int32_t i = 0; i < TSFUtils::NUM_OF_SUPPORTED_ATTRS; i++) { + for (const uint32_t i : IntegerRange(GetNumberOfSupportedAttrs())) { if (!mRequestedAttrs[i]) { continue; } mRequestedAttrs[i] = false; - TS_ATTRID attrID = TSFUtils::GetAttrID(static_cast(i)); + TS_ATTRID attrID = GetAttrID(static_cast(i)); MOZ_LOG(gIMELog, LogLevel::Info, ("0x%p TSFTextStoreBase::RetrieveRequestedAttrs() for %s", this, @@ -1101,19 +1092,19 @@ if (!mRequestedAttrValues) { paAttrVals[count].varValue.vt = VT_EMPTY; } else { - switch (i) { - case TSFUtils::AttrIndex::InputScope: { + switch (static_cast(i)) { + case AttrIndex::InputScope: { paAttrVals[count].varValue.vt = VT_UNKNOWN; RefPtr inputScope = new TSFInputScope(mInputScopes); paAttrVals[count].varValue.punkVal = inputScope.forget().take(); break; } - case TSFUtils::AttrIndex::DocumentURL: { + case AttrIndex::DocumentURL: { paAttrVals[count].varValue.vt = VT_BSTR; paAttrVals[count].varValue.bstrVal = GetExposingURL(); break; } - case TSFUtils::AttrIndex::TextVerticalWriting: { + case AttrIndex::TextVerticalWriting: { const Maybe writingMode = GetWritingMode(); paAttrVals[count].varValue.vt = VT_BOOL; paAttrVals[count].varValue.boolVal = @@ -1121,7 +1112,7 @@ : VARIANT_FALSE; break; } - case TSFUtils::AttrIndex::TextOrientation: { + case AttrIndex::TextOrientation: { const Maybe writingMode = GetWritingMode(); paAttrVals[count].varValue.vt = VT_I4; paAttrVals[count].varValue.lVal = @@ -1278,23 +1269,59 @@ ("0x%p TSFTextStoreBase::NotifyTSFOfInputContextChange(), mSink=0x%p, " "DocumentURL is changed=%s, InputScope is changed=%s", this, mSink.get(), - aAttrIndices.contains(TSFUtils::AttrIndex::DocumentURL) ? "Yes" : "No", - aAttrIndices.contains(TSFUtils::AttrIndex::InputScope) ? "Yes" : "No")); + aAttrIndices.contains(AttrIndex::DocumentURL) ? "Yes" : "No", + aAttrIndices.contains(AttrIndex::InputScope) ? "Yes" : "No")); if (!mSink) { return; } AutoTArray attrIDs; - if (aAttrIndices.contains(TSFUtils::AttrIndex::DocumentURL)) { - attrIDs.AppendElement( - TSFUtils::GetAttrID(TSFUtils::AttrIndex::DocumentURL)); + if (aAttrIndices.contains(AttrIndex::DocumentURL)) { + attrIDs.AppendElement(GetAttrID(AttrIndex::DocumentURL)); } - if (aAttrIndices.contains(TSFUtils::AttrIndex::InputScope)) { - attrIDs.AppendElement(TSFUtils::GetAttrID(TSFUtils::AttrIndex::InputScope)); + if (aAttrIndices.contains(AttrIndex::InputScope)) { + attrIDs.AppendElement(GetAttrID(AttrIndex::InputScope)); } RefPtr sink(mSink); sink->OnAttrsChange(0, 0, attrIDs.Length(), attrIDs.Elements()); } +auto TSFTextStoreBase::GetRequestedAttrIndex(const TS_ATTRID& aAttrID) const + -> AttrIndex { + if (IsEqualGUID(aAttrID, GUID_PROP_INPUTSCOPE)) { + return AttrIndex::InputScope; + } + if (IsEqualGUID(aAttrID, TSFUtils::sGUID_PROP_URL)) { + return AttrIndex::DocumentURL; + } + if (IsEditable()) { + if (IsEqualGUID(aAttrID, TSFUtils::TSATTRID_Text_VerticalWriting_Ref())) { + return AttrIndex::TextVerticalWriting; + } + if (IsEqualGUID(aAttrID, TSFUtils::TSATTRID_Text_Orientation_Ref())) { + return AttrIndex::TextOrientation; + } + } + return AttrIndex::NotSupported; +} + +TS_ATTRID TSFTextStoreBase::GetAttrID(AttrIndex aIndex) const { + switch (aIndex) { + case AttrIndex::InputScope: + return GUID_PROP_INPUTSCOPE; + case AttrIndex::DocumentURL: + return TSFUtils::sGUID_PROP_URL; + case AttrIndex::TextVerticalWriting: + return IsEditable() ? TSFUtils::TSATTRID_Text_VerticalWriting_Ref() + : GUID_NULL; + case AttrIndex::TextOrientation: + return IsEditable() ? TSFUtils::TSATTRID_Text_Orientation_Ref() + : GUID_NULL; + default: + MOZ_CRASH("Invalid index? Or not implemented yet?"); + return GUID_NULL; + } +} + } // namespace mozilla::widget diff -Nru firefox-esr-140.13.0esr/widget/windows/TSFTextStoreBase.h firefox-esr-140.15.0esr/widget/windows/TSFTextStoreBase.h --- firefox-esr-140.13.0esr/widget/windows/TSFTextStoreBase.h 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/TSFTextStoreBase.h 2026-08-26 17:03:58.000000000 +0000 @@ -120,14 +120,53 @@ // Note that mLock isn't cleared yet when this is called. virtual void DidLockGranted() {} - using AttrIndices = EnumSet; + // Support retrieving attributes. + // TODO: We should support RightToLeft, perhaps. + enum class AttrIndex : int8_t { + // Used for result of GetRequestedAttrIndex() + NotSupported = -1, + + // Supported attributes even in TSFEmptyTextStore. + InputScope = 0, + DocumentURL, + + // Count of the supported attrs in empty text store + NumberOfSupportedAttrsInEmptyTextStore, + + // Supported attributes in any TextStores. + TextVerticalWriting = NumberOfSupportedAttrsInEmptyTextStore, + TextOrientation, + + // Count of the supported attributes + NumberOfSupportedAttrs, + }; + constexpr static size_t NUM_OF_SUPPORTED_ATTRS_IN_EMPTY_TEXT_STORE = + static_cast(AttrIndex::NumberOfSupportedAttrsInEmptyTextStore); + constexpr static size_t NUM_OF_SUPPORTED_ATTRS = + static_cast(AttrIndex::NumberOfSupportedAttrs); + + [[nodiscard]] size_t GetNumberOfSupportedAttrs() const { + return IsEditable() ? NUM_OF_SUPPORTED_ATTRS + : NUM_OF_SUPPORTED_ATTRS_IN_EMPTY_TEXT_STORE; + } + + /** + * Return AttrIndex fo aAttrID. + */ + [[nodiscard]] AttrIndex GetRequestedAttrIndex(const TS_ATTRID& aAttrID) const; + + /** + * Return TS_ATTRID for aIndex. + */ + [[nodiscard]] TS_ATTRID GetAttrID(AttrIndex aIndex) const; + + using AttrIndices = EnumSet; constexpr static auto NothingChanged = AttrIndices{}; - constexpr static auto OnlyURLChanged = - AttrIndices{TSFUtils::AttrIndex::DocumentURL}; + constexpr static auto OnlyURLChanged = AttrIndices{AttrIndex::DocumentURL}; constexpr static auto OnlyInputScopeChanged = - AttrIndices{TSFUtils::AttrIndex::InputScope}; - constexpr static auto URLAndInputScopeChanged = AttrIndices{ - TSFUtils::AttrIndex::DocumentURL, TSFUtils::AttrIndex::InputScope}; + AttrIndices{AttrIndex::InputScope}; + constexpr static auto URLAndInputScopeChanged = + AttrIndices{AttrIndex::DocumentURL, AttrIndex::InputScope}; /** * Called when either the URL or the input scope is changed. */ @@ -159,11 +198,9 @@ void PrintExposingURL(const char* aPrefix) const; HRESULT HandleRequestAttrs(DWORD aFlags, ULONG aFilterCount, - const TS_ATTRID* aFilterAttrs, - int32_t aNumOfSupportedAttrs); + const TS_ATTRID* aFilterAttrs); HRESULT RetrieveRequestedAttrsInternal(ULONG ulCount, TS_ATTRVAL* paAttrVals, - ULONG* pcFetched, - int32_t aNumOfSupportedAttrs); + ULONG* pcFetched); /** * IsHandlingCompositionInParent() returns true if eCompositionStart is @@ -218,7 +255,7 @@ // The URL cache of the focused document. nsString mDocumentURL; - bool mRequestedAttrs[TSFUtils::NUM_OF_SUPPORTED_ATTRS] = {false}; + bool mRequestedAttrs[NUM_OF_SUPPORTED_ATTRS] = {false}; bool mRequestedAttrValues = false; diff -Nru firefox-esr-140.13.0esr/widget/windows/TSFUtils.cpp firefox-esr-140.15.0esr/widget/windows/TSFUtils.cpp --- firefox-esr-140.13.0esr/widget/windows/TSFUtils.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/TSFUtils.cpp 2026-08-26 17:03:59.000000000 +0000 @@ -632,6 +632,14 @@ << (static_cast(aGotFocus) ? "Yes" : "No"); } +const GUID& TSFUtils::TSATTRID_Text_VerticalWriting_Ref() { + return TSATTRID_Text_VerticalWriting; +} + +const GUID& TSFUtils::TSATTRID_Text_Orientation_Ref() { + return TSATTRID_Text_Orientation; +} + nsresult TSFUtils::OnFocusChange(GotFocus aGotFocus, nsWindow* aFocusedWindow, const InputContext& aContext) { MOZ_LOG(gIMELog, LogLevel::Debug, @@ -999,38 +1007,6 @@ } } -TSFUtils::AttrIndex TSFUtils::GetRequestedAttrIndex(const TS_ATTRID& aAttrID) { - if (IsEqualGUID(aAttrID, GUID_PROP_INPUTSCOPE)) { - return AttrIndex::InputScope; - } - if (IsEqualGUID(aAttrID, sGUID_PROP_URL)) { - return AttrIndex::DocumentURL; - } - if (IsEqualGUID(aAttrID, TSATTRID_Text_VerticalWriting)) { - return AttrIndex::TextVerticalWriting; - } - if (IsEqualGUID(aAttrID, TSATTRID_Text_Orientation)) { - return AttrIndex::TextOrientation; - } - return AttrIndex::NotSupported; -} - -TS_ATTRID TSFUtils::GetAttrID(AttrIndex aIndex) { - switch (aIndex) { - case AttrIndex::InputScope: - return GUID_PROP_INPUTSCOPE; - case AttrIndex::DocumentURL: - return sGUID_PROP_URL; - case AttrIndex::TextVerticalWriting: - return TSATTRID_Text_VerticalWriting; - case AttrIndex::TextOrientation: - return TSATTRID_Text_Orientation; - default: - MOZ_CRASH("Invalid index? Or not implemented yet?"); - return GUID_NULL; - } -} - Result, bool> TSFUtils::GetCompartment(IUnknown* pUnk, const GUID& aID) { if (MOZ_UNLIKELY(!pUnk)) { diff -Nru firefox-esr-140.13.0esr/widget/windows/TSFUtils.h firefox-esr-140.15.0esr/widget/windows/TSFUtils.h --- firefox-esr-140.13.0esr/widget/windows/TSFUtils.h 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/TSFUtils.h 2026-08-26 17:03:59.000000000 +0000 @@ -140,6 +140,11 @@ 0x4308, {0xbc, 0xbf, 0x2e, 0x73, 0x93, 0x98, 0xe2, 0x34}}; + // To avoid the include hell of the SDK, we should use the following static + // referrers to refer some GUIDs defined in . + static const GUID& TSATTRID_Text_VerticalWriting_Ref(); + static const GUID& TSATTRID_Text_Orientation_Ref(); + constexpr static TsViewCookie sDefaultView = 1; /** @@ -183,38 +188,6 @@ */ [[nodiscard]] static bool ShouldSetInputScopeOfURLBarToDefault(); - // Support retrieving attributes. - // TODO: We should support RightToLeft, perhaps. - enum AttrIndex { - // Used for result of GetRequestedAttrIndex() - NotSupported = -1, - - // Supported attributes even in TSFEmptyTextStore. - InputScope = 0, - DocumentURL, - - // Count of the supported attrs in empty text store - NUM_OF_SUPPORTED_ATTRS_IN_EMPTY_TEXT_STORE, - - // Supported attributes in any TextStores. - TextVerticalWriting = NUM_OF_SUPPORTED_ATTRS_IN_EMPTY_TEXT_STORE, - TextOrientation, - - // Count of the supported attributes - NUM_OF_SUPPORTED_ATTRS, - }; - - /** - * Return AttrIndex fo aAttrID. - */ - [[nodiscard]] static AttrIndex GetRequestedAttrIndex( - const TS_ATTRID& aAttrID); - - /** - * Return TS_ATTRID for aIndex. - */ - [[nodiscard]] static TS_ATTRID GetAttrID(AttrIndex aIndex); - /** * Get compartment instance. */ diff -Nru firefox-esr-140.13.0esr/widget/windows/WinUtils.h firefox-esr-140.15.0esr/widget/windows/WinUtils.h --- firefox-esr-140.13.0esr/widget/windows/WinUtils.h 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/WinUtils.h 2026-08-26 17:03:58.000000000 +0000 @@ -12,6 +12,7 @@ #include #include #include +#include #include // Undo the windows.h damage @@ -38,12 +39,45 @@ #include "mozilla/Attributes.h" #include "mozilla/EventForwards.h" #include "mozilla/LazyIdleThread.h" +#include "mozilla/Printf.h" #include "mozilla/UniquePtr.h" #include "mozilla/Vector.h" #include "mozilla/WindowsDpiAwareness.h" #include "mozilla/WindowsProcessMitigations.h" #include "mozilla/gfx/2D.h" +#ifdef DEBUG +# define NS_ENSURE_HRESULT(hres, ret) \ + do { \ + HRESULT result = hres; \ + if (MOZ_UNLIKELY(FAILED(result))) { \ + mozilla::SmprintfPointer msg = mozilla::Smprintf( \ + "NS_ENSURE_HRESULT(%s, %s) failed with " \ + "result 0x%" PRIX32, \ + #hres, #ret, static_cast(result)); \ + NS_WARNING(msg.get()); \ + return ret; \ + } \ + } while (false) +# define NS_ENSURE_HRESULT_VOID(hres) \ + do { \ + HRESULT result = hres; \ + if (MOZ_UNLIKELY(FAILED(result))) { \ + mozilla::SmprintfPointer msg = mozilla::Smprintf( \ + "NS_ENSURE_HRESULT(%s) failed with " \ + "result 0x%" PRIX32, \ + #hres, static_cast(result)); \ + NS_WARNING(msg.get()); \ + return; \ + } \ + } while (false) +#else +# define NS_ENSURE_HRESULT(hres, ret) \ + if (MOZ_UNLIKELY(FAILED(hres))) return ret +# define NS_ENSURE_HRESULT_VOID(hres) \ + if (MOZ_UNLIKELY(FAILED(hres))) return +#endif + /** * NS_INLINE_DECL_IUNKNOWN_REFCOUNTING should be used for defining and * implementing AddRef() and Release() of IUnknown interface and mRefCnt. diff -Nru firefox-esr-140.13.0esr/widget/windows/tests/gtest/TestJumpListBuilder.cpp firefox-esr-140.15.0esr/widget/windows/tests/gtest/TestJumpListBuilder.cpp --- firefox-esr-140.13.0esr/widget/windows/tests/gtest/TestJumpListBuilder.cpp 2026-07-15 20:30:46.000000000 +0000 +++ firefox-esr-140.15.0esr/widget/windows/tests/gtest/TestJumpListBuilder.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -17,7 +17,7 @@ #include "gtest/gtest.h" #include "gmock/gmock.h" - +#include "mozilla/CmdLineAndEnvUtils.h" #include "mozilla/dom/BindingDeclarations.h" #include "mozilla/dom/Promise.h" #include "mozilla/dom/PromiseNativeHandler.h" @@ -115,7 +115,17 @@ } if (desc.mArguments.WasPassed()) { - if (!desc.mArguments.Value().Equals(argsBuf)) { + mozilla::CommandLineParserWin parser; + parser.HandleCommandLine(nsDependentString(argsBuf)); + + const mozilla::dom::Sequence& args = desc.mArguments.Value(); + + bool same = std::equal( + parser.Argv(), parser.Argv() + parser.Argc(), args.cbegin(), + args.cend(), [](const char16_t* aParsed, const nsAString& aExpected) { + return aExpected == nsDependentString(aParsed); + }); + if (!same) { return false; } } else { @@ -312,8 +322,8 @@ desc.mFallbackIconIndex = 0; if (!(i % 2)) { - nsAutoString arguments(u"-arg1 -arg2 -arg3"); - desc.mArguments.Construct(arguments); + desc.mArguments.Construct(nsTArray{ + u"-arg1"_ns, u"argument with a space"_ns, u"-arg3"_ns}); nsAutoString iconPath(u"C:\\Some\\icon.png"); desc.mIconPath.Construct(iconPath); } diff -Nru firefox-esr-140.13.0esr/xpcom/components/StaticComponents.h firefox-esr-140.15.0esr/xpcom/components/StaticComponents.h --- firefox-esr-140.13.0esr/xpcom/components/StaticComponents.h 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/xpcom/components/StaticComponents.h 2026-08-26 17:03:58.000000000 +0000 @@ -97,6 +97,9 @@ StringOffset mContractID; Module::ProcessSelector mProcessSelector; + // Does the object returned by CreateInstance implement nsISerializable? + bool mIsSerializable; + const nsID& CID() const { return mCID; } ModuleID ID() const { return ModuleID(this - gStaticModules); } diff -Nru firefox-esr-140.13.0esr/xpcom/components/gen_static_components.py firefox-esr-140.15.0esr/xpcom/components/gen_static_components.py --- firefox-esr-140.13.0esr/xpcom/components/gen_static_components.py 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/xpcom/components/gen_static_components.py 2026-08-26 17:03:59.000000000 +0000 @@ -298,6 +298,7 @@ ) self.singleton = data.get("singleton", False) self.overridable = data.get("overridable", False) + self.serializable = data.get("serializable", False) self.protocol_config = data.get("protocol_config", None) @@ -370,6 +371,7 @@ {self.cid.to_cxx()}, {contract_id}, {lower_processes(self.processes)}, + {"true" if self.serializable else "false"}, }}""" # Generates the C++ code for a JSServiceEntry representing this module. diff -Nru firefox-esr-140.13.0esr/xpcom/io/moz.build firefox-esr-140.15.0esr/xpcom/io/moz.build --- firefox-esr-140.13.0esr/xpcom/io/moz.build 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/xpcom/io/moz.build 2026-08-26 17:03:58.000000000 +0000 @@ -164,5 +164,7 @@ LOCAL_INCLUDES += [ "!..", + "!../components", "../build", + "../components", ] diff -Nru firefox-esr-140.13.0esr/xpcom/io/nsBinaryStream.cpp firefox-esr-140.15.0esr/xpcom/io/nsBinaryStream.cpp --- firefox-esr-140.13.0esr/xpcom/io/nsBinaryStream.cpp 2026-07-15 20:30:47.000000000 +0000 +++ firefox-esr-140.15.0esr/xpcom/io/nsBinaryStream.cpp 2026-08-26 17:03:58.000000000 +0000 @@ -23,6 +23,7 @@ #include "nsBinaryStream.h" +#include "StaticComponents.h" #include "mozilla/EndianUtils.h" #include "mozilla/PodOperations.h" #include "mozilla/RefPtr.h" @@ -48,6 +49,12 @@ using mozilla::Span; using mozilla::UniquePtr; +static bool IsCIDSerializable(const nsID& aCID) { + const mozilla::xpcom::StaticModule* module = + mozilla::xpcom::StaticComponents::LookupByCID(aCID); + return module && module->mIsSerializable; +} + already_AddRefed NS_NewObjectOutputStream( nsIOutputStream* aOutputStream) { MOZ_ASSERT(aOutputStream); @@ -309,20 +316,24 @@ nsCID cid; nsresult rv = classInfo->GetClassIDNoAlloc(&cid); - if (NS_SUCCEEDED(rv)) { - rv = WriteID(cid); - } else { - nsCID* cidptr = nullptr; - rv = classInfo->GetClassID(&cidptr); + if (NS_FAILED(rv)) { + mozilla::UniquePtr cidptr; + rv = classInfo->GetClassID(mozilla::getter_Transfers(cidptr)); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } - rv = WriteID(*cidptr); + cid = *cidptr; + } - free(cidptr); + if (NS_WARN_IF(!IsCIDSerializable(cid))) { + MOZ_ASSERT_UNREACHABLE( + "static component entry was not marked as serializable for " + "nsISerializable"); + return NS_ERROR_NOT_AVAILABLE; } + rv = WriteID(cid); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } @@ -943,6 +954,10 @@ } // END HACK + if (NS_WARN_IF(!IsCIDSerializable(cid))) { + return NS_ERROR_NOT_AVAILABLE; + } + nsCOMPtr object = do_CreateInstance(cid, &rv); if (NS_WARN_IF(NS_FAILED(rv))) { return rv;