Can't start virtual camera: OSSystemExtensionErrorDomain error 10

kamguy

New Member
Hi All, I am new to OBS. I have a 2022 M2 Macbook Pro running Ventura 13.7.5.

My intent is to use OBS to use my mirrorless camera with anamorphic lens and have OBS perform the desqueeze. Then I wish to use OBS as a virtual camera for Zoom meetings.

My progress is as follows:
- I installed OBS 31.0.3 (64-bit) on it.
- I configured my USB microphone. I can see audio levels from this mic.
- I configured my USB HDMI capture interface. I can see the camera feed.
- I configured the transform options to properly desqueeze the anamorphic feed.

My problem:
- When I try to Start Virtual Camera (program mode), I get this popup error message:

---
An error has occured while installing the virtual camera:
The operation couldn’t be completed. (OSSystemExtensionErrorDomain error 10.)
---

My troubleshooting:
- I went to my System Settings > Privacy & Security and made sure these sections have OBS allowed:
    • Microphone
    • Camera
    • Accessibility
    • Screen Recording

- I tried searching the OBS forum for similar, and found this older thread:


But seems the solution wasn't found/discussed in detail.

- I rebooted my Macbook Pro, but this had no effect.


Request:
Hs anyone else encountered this same issue on OBS 31.0.3? And is there any suggestion on how to fix this issue?

Thank you kindly for your help
 

kamguy

New Member
I just learned how to create and upload a log file. I reproduced the issue again and reviewed the logs. Aside from logging the issue as reported, there isn't any further logging after the problem is encountered. But perhaps the events during program launch may help?

-> The cached device pixel ratio value was stale on window expose. Please file a QTBUG which explains how to reproduce.
^^^ I am researching this....


###
OBS 31.0.3 log file uploaded at 2025-05-06, 08:39:37

08:37:50.409: [macOS] Permission for audio device access granted.
08:37:50.412: [macOS] Permission for video device access granted.
08:37:50.414: [macOS] Permission for accessibility granted.
08:37:50.419: [macOS] Permission for screen capture granted.
08:37:50.419: CPU Name: Apple M2
08:37:50.419: Physical Cores: 8, Logical Cores: 8
08:37:50.419: Physical Memory: 16384MB Total
08:37:50.419: Model Identifier: Mac14,7
08:37:50.419: OS Name: macOS
08:37:50.419: OS Version: Version 13.7.5 (Build 22H527)
08:37:50.419: Rosetta translation used: false
08:37:50.419: Kernel Version: 22.6.0
08:37:50.420: hotkeys-cocoa: Using keyboard layout 'com.apple.keylayout.US'
08:37:50.420: Current Date/Time: 2025-05-06, 08:37:50
08:37:50.420: Browser Hardware Acceleration: true
08:37:50.420: Qt Version: 6.6.3 (runtime), 6.6.3 (compiled)
08:37:50.420: Portable mode: false
08:37:50.536: OBS 31.0.3 (mac)
08:37:50.536: ---------------------------------
08:37:50.540: ---------------------------------
08:37:50.540: audio settings reset:
08:37:50.540: samples per sec: 48000
08:37:50.540: speakers: 2
08:37:50.540: max buffering: 960 milliseconds
08:37:50.540: buffering type: dynamically increasing
08:37:50.542: ---------------------------------
08:37:50.542: Initializing OpenGL...
08:37:50.579: Loading up OpenGL on adapter Apple Apple M2
08:37:50.579: OpenGL loaded successfully, version 4.1 Metal - 83.1, shading language 4.10
08:37:50.752: ---------------------------------
08:37:50.752: video settings reset:
08:37:50.752: base resolution: 1920x1080
08:37:50.752: output resolution: 1920x1080
08:37:50.752: downscale filter: Bicubic
08:37:50.752: fps: 30/1
08:37:50.752: format: NV12
08:37:50.752: YUV mode: Rec. 709/Partial
08:37:50.752: NV12 texture support enabled
08:37:50.752: P010 texture support not available
08:37:50.756: Audio monitoring device:
08:37:50.756: name: Default
08:37:50.756: id: default
08:37:50.757: ---------------------------------
08:37:50.765: No AJA devices found, skipping loading AJA UI plugin
08:37:50.765: Failed to initialize module 'aja-output-ui'
08:37:50.772: No AJA devices found, skipping loading AJA plugin
08:37:50.772: Failed to initialize module 'aja'
08:37:50.775: Failed to load 'en-US' text for module: 'decklink-captions'
08:37:50.777: Failed to load 'en-US' text for module: 'decklink-output-ui'
08:37:50.779: A DeckLink iterator could not be created. The DeckLink drivers may not be installed
08:37:50.779: Failed to initialize module 'decklink'
08:37:50.968: [obs-browser]: Version 2.24.6
08:37:50.968: [obs-browser]: CEF Version 127.0.6533.120 (runtime), 127.0.0-6533-fix-stutter.3039+g2b7d20b+chromium-127.0.6533.120 (compiled)
08:37:50.996: [obs-websocket] [obs_module_load] you can haz websockets (Version: 5.5.6 | RPC Version: 1)
08:37:50.996: [obs-websocket] [obs_module_load] Qt version (compile-time): 6.6.3 | Qt version (run-time): 6.6.3
08:37:50.996: [obs-websocket] [obs_module_load] Linked ASIO Version: 103100
08:37:50.996: DEPRECATION: obs_frontend_get_global_config is deprecated. Read from global or user configuration explicitly instead.
08:37:51.000: [obs-websocket] [obs_module_load] Module loaded.
08:37:51.015: os_dlopen(/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib->/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib): dlopen(/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib, 0x0105): tried: '/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib' (no such file), '/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/Applications/VLC.app/Contents/MacOS/lib/libvlccore.9.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Applications/VLC.app/Contents/MacOS/lib/libvlccore.9.dylib' (no such file), '/Applications/VLC.app/Contents/MacOS/lib/libvlccore.9.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))
08:37:51.015:
08:37:51.015: [vlc-video]: Couldn't find VLC installation, VLC video source disabled
08:37:51.015: ---------------------------------
08:37:51.015: Loaded Modules:
08:37:51.015: vlc-video
08:37:51.015: text-freetype2
08:37:51.015: rtmp-services
08:37:51.015: obs-x264
08:37:51.015: obs-websocket
08:37:51.015: obs-webrtc
08:37:51.015: obs-vst
08:37:51.015: obs-transitions
08:37:51.015: obs-outputs
08:37:51.015: obs-filters
08:37:51.015: obs-ffmpeg
08:37:51.015: obs-browser
08:37:51.015: mac-virtualcam
08:37:51.015: mac-videotoolbox
08:37:51.015: mac-syphon
08:37:51.015: mac-capture
08:37:51.015: mac-avcapture
08:37:51.015: mac-avcapture-legacy
08:37:51.015: image-source
08:37:51.015: frontend-tools
08:37:51.015: decklink-output-ui
08:37:51.015: decklink-captions
08:37:51.015: coreaudio-encoder
08:37:51.015: ---------------------------------
08:37:51.015: [VideoToolbox encoder]: Added VideoToolbox encoders
08:37:51.015: ---------------------------------
08:37:51.015: Available Encoders:
08:37:51.015: Video Encoders:
08:37:51.015: - ffmpeg_aom_av1 (AOM AV1)
08:37:51.015: - obs_x264 (x264)
08:37:51.015: - com.apple.videotoolbox.videoencoder.prores-422 (Apple VT ProRes Software Encoder)
08:37:51.015: - com.apple.videotoolbox.videoencoder.appleproreshw.422 (Apple VT ProRes Hardware Encoder)
08:37:51.015: - com.apple.videotoolbox.videoencoder.ave.avc (Apple VT H264 Hardware Encoder)
08:37:51.015: - com.apple.videotoolbox.videoencoder.h264 (Apple VT H264 Software Encoder)
08:37:51.015: - com.apple.videotoolbox.videoencoder.ave.hevc (Apple VT HEVC Hardware Encoder)
08:37:51.015: - com.apple.videotoolbox.videoencoder.hevc.vcp (Apple VT HEVC Software Encoder)
08:37:51.015: Audio Encoders:
08:37:51.015: - CoreAudio_AAC (CoreAudio AAC)
08:37:51.015: - ffmpeg_aac (FFmpeg AAC)
08:37:51.015: - ffmpeg_opus (FFmpeg Opus)
08:37:51.015: - ffmpeg_pcm_s16le (FFmpeg PCM (16-bit))
08:37:51.015: - ffmpeg_pcm_s24le (FFmpeg PCM (24-bit))
08:37:51.015: - ffmpeg_pcm_f32le (FFmpeg PCM (32-bit float))
08:37:51.015: - ffmpeg_alac (FFmpeg ALAC (24-bit))
08:37:51.015: - ffmpeg_flac (FFmpeg FLAC (16-bit))
08:37:51.015: ==== Startup complete ===============================================
08:37:51.056: All scene data cleared
08:37:51.056: ------------------------------------------------
08:37:51.364: Downmix enabled: 1 to 2 channels.
08:37:51.395: coreaudio: Device 'MacBook Pro Microphone' [48000 Hz] initialized
08:37:51.395: [Loaded global audio device]: 'Mic/Aux'
08:37:51.398: Downmix enabled: 2 to 2 channels.
08:37:51.415: USB HDMI: Selected device 'USB3 Video'
08:37:51.443: coreaudio: Device 'simorr Wave U1' [48000 Hz] initialized
08:37:51.444: Switched to scene 'Scene'
08:37:51.444: ------------------------------------------------
08:37:51.444: Loaded scenes:
08:37:51.444: - scene 'Scene':
08:37:51.444: - source: 'USB HDMI' (macos-avcapture)
08:37:51.444: - source: 'Simorr WaveU1' (coreaudio_input_capture)
08:37:51.444: ------------------------------------------------
08:37:51.598: The cached device pixel ratio value was stale on window expose. Please file a QTBUG which explains how to reproduce.
08:37:51.610: The cached device pixel ratio value was stale on window expose. Please file a QTBUG which explains how to reproduce.
08:37:51.709: [mac-virtualcam] mac-camera-extension: OSSystemExtensionErrorCode 10 ("The operation couldn’t be completed. (OSSystemExtensionErrorDomain error 10.)")
08:38:00.101: Starting Virtual Camera output to Program
 

kamguy

New Member
One more log session output of me trying different things to see if more logs can get generated.

###
08:37:50.409: [macOS] Permission for audio device access granted.
08:37:50.412: [macOS] Permission for video device access granted.
08:37:50.414: [macOS] Permission for accessibility granted.
08:37:50.419: [macOS] Permission for screen capture granted.
08:37:50.419: CPU Name: Apple M2
08:37:50.419: Physical Cores: 8, Logical Cores: 8
08:37:50.419: Physical Memory: 16384MB Total
08:37:50.419: Model Identifier: Mac14,7
08:37:50.419: OS Name: macOS
08:37:50.419: OS Version: Version 13.7.5 (Build 22H527)
08:37:50.419: Rosetta translation used: false
08:37:50.419: Kernel Version: 22.6.0
08:37:50.420: hotkeys-cocoa: Using keyboard layout 'com.apple.keylayout.US'
08:37:50.420: Current Date/Time: 2025-05-06, 08:37:50
08:37:50.420: Browser Hardware Acceleration: true
08:37:50.420: Qt Version: 6.6.3 (runtime), 6.6.3 (compiled)
08:37:50.420: Portable mode: false
08:37:50.536: OBS 31.0.3 (mac)
08:37:50.536: ---------------------------------
08:37:50.540: ---------------------------------
08:37:50.540: audio settings reset:
08:37:50.540: samples per sec: 48000
08:37:50.540: speakers: 2
08:37:50.540: max buffering: 960 milliseconds
08:37:50.540: buffering type: dynamically increasing
08:37:50.542: ---------------------------------
08:37:50.542: Initializing OpenGL...
08:37:50.579: Loading up OpenGL on adapter Apple Apple M2
08:37:50.579: OpenGL loaded successfully, version 4.1 Metal - 83.1, shading language 4.10
08:37:50.752: ---------------------------------
08:37:50.752: video settings reset:
08:37:50.752: base resolution: 1920x1080
08:37:50.752: output resolution: 1920x1080
08:37:50.752: downscale filter: Bicubic
08:37:50.752: fps: 30/1
08:37:50.752: format: NV12
08:37:50.752: YUV mode: Rec. 709/Partial
08:37:50.752: NV12 texture support enabled
08:37:50.752: P010 texture support not available
08:37:50.756: Audio monitoring device:
08:37:50.756: name: Default
08:37:50.756: id: default
08:37:50.757: ---------------------------------
08:37:50.765: No AJA devices found, skipping loading AJA UI plugin
08:37:50.765: Failed to initialize module 'aja-output-ui'
08:37:50.772: No AJA devices found, skipping loading AJA plugin
08:37:50.772: Failed to initialize module 'aja'
08:37:50.775: Failed to load 'en-US' text for module: 'decklink-captions'
08:37:50.777: Failed to load 'en-US' text for module: 'decklink-output-ui'
08:37:50.779: A DeckLink iterator could not be created. The DeckLink drivers may not be installed
08:37:50.779: Failed to initialize module 'decklink'
08:37:50.968: [obs-browser]: Version 2.24.6
08:37:50.968: [obs-browser]: CEF Version 127.0.6533.120 (runtime), 127.0.0-6533-fix-stutter.3039+g2b7d20b+chromium-127.0.6533.120 (compiled)
08:37:50.996: [obs-websocket] [obs_module_load] you can haz websockets (Version: 5.5.6 | RPC Version: 1)
08:37:50.996: [obs-websocket] [obs_module_load] Qt version (compile-time): 6.6.3 | Qt version (run-time): 6.6.3
08:37:50.996: [obs-websocket] [obs_module_load] Linked ASIO Version: 103100
08:37:50.996: DEPRECATION: obs_frontend_get_global_config is deprecated. Read from global or user configuration explicitly instead.
08:37:51.000: [obs-websocket] [obs_module_load] Module loaded.
08:37:51.015: os_dlopen(/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib->/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib): dlopen(/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib, 0x0105): tried: '/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib' (no such file), '/Applications/VLC.app/Contents/MacOS/lib/libvlccore.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/Applications/VLC.app/Contents/MacOS/lib/libvlccore.9.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Applications/VLC.app/Contents/MacOS/lib/libvlccore.9.dylib' (no such file), '/Applications/VLC.app/Contents/MacOS/lib/libvlccore.9.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))
08:37:51.015:
08:37:51.015: [vlc-video]: Couldn't find VLC installation, VLC video source disabled
08:37:51.015: ---------------------------------
08:37:51.015: Loaded Modules:
08:37:51.015: vlc-video
08:37:51.015: text-freetype2
08:37:51.015: rtmp-services
08:37:51.015: obs-x264
08:37:51.015: obs-websocket
08:37:51.015: obs-webrtc
08:37:51.015: obs-vst
08:37:51.015: obs-transitions
08:37:51.015: obs-outputs
08:37:51.015: obs-filters
08:37:51.015: obs-ffmpeg
08:37:51.015: obs-browser
08:37:51.015: mac-virtualcam
08:37:51.015: mac-videotoolbox
08:37:51.015: mac-syphon
08:37:51.015: mac-capture
08:37:51.015: mac-avcapture
08:37:51.015: mac-avcapture-legacy
08:37:51.015: image-source
08:37:51.015: frontend-tools
08:37:51.015: decklink-output-ui
08:37:51.015: decklink-captions
08:37:51.015: coreaudio-encoder
08:37:51.015: ---------------------------------
08:37:51.015: [VideoToolbox encoder]: Added VideoToolbox encoders
08:37:51.015: ---------------------------------
08:37:51.015: Available Encoders:
08:37:51.015: Video Encoders:
08:37:51.015: - ffmpeg_aom_av1 (AOM AV1)
08:37:51.015: - obs_x264 (x264)
08:37:51.015: - com.apple.videotoolbox.videoencoder.prores-422 (Apple VT ProRes Software Encoder)
08:37:51.015: - com.apple.videotoolbox.videoencoder.appleproreshw.422 (Apple VT ProRes Hardware Encoder)
08:37:51.015: - com.apple.videotoolbox.videoencoder.ave.avc (Apple VT H264 Hardware Encoder)
08:37:51.015: - com.apple.videotoolbox.videoencoder.h264 (Apple VT H264 Software Encoder)
08:37:51.015: - com.apple.videotoolbox.videoencoder.ave.hevc (Apple VT HEVC Hardware Encoder)
08:37:51.015: - com.apple.videotoolbox.videoencoder.hevc.vcp (Apple VT HEVC Software Encoder)
08:37:51.015: Audio Encoders:
08:37:51.015: - CoreAudio_AAC (CoreAudio AAC)
08:37:51.015: - ffmpeg_aac (FFmpeg AAC)
08:37:51.015: - ffmpeg_opus (FFmpeg Opus)
08:37:51.015: - ffmpeg_pcm_s16le (FFmpeg PCM (16-bit))
08:37:51.015: - ffmpeg_pcm_s24le (FFmpeg PCM (24-bit))
08:37:51.015: - ffmpeg_pcm_f32le (FFmpeg PCM (32-bit float))
08:37:51.015: - ffmpeg_alac (FFmpeg ALAC (24-bit))
08:37:51.015: - ffmpeg_flac (FFmpeg FLAC (16-bit))
08:37:51.015: ==== Startup complete ===============================================
08:37:51.056: All scene data cleared
08:37:51.056: ------------------------------------------------
08:37:51.364: Downmix enabled: 1 to 2 channels.
08:37:51.395: coreaudio: Device 'MacBook Pro Microphone' [48000 Hz] initialized
08:37:51.395: [Loaded global audio device]: 'Mic/Aux'
08:37:51.398: Downmix enabled: 2 to 2 channels.
08:37:51.415: USB HDMI: Selected device 'USB3 Video'
08:37:51.443: coreaudio: Device 'simorr Wave U1' [48000 Hz] initialized
08:37:51.444: Switched to scene 'Scene'
08:37:51.444: ------------------------------------------------
08:37:51.444: Loaded scenes:
08:37:51.444: - scene 'Scene':
08:37:51.444: - source: 'USB HDMI' (macos-avcapture)
08:37:51.444: - source: 'Simorr WaveU1' (coreaudio_input_capture)
08:37:51.444: ------------------------------------------------
08:37:51.598: The cached device pixel ratio value was stale on window expose. Please file a QTBUG which explains how to reproduce.
08:37:51.610: The cached device pixel ratio value was stale on window expose. Please file a QTBUG which explains how to reproduce.
08:37:51.709: [mac-virtualcam] mac-camera-extension: OSSystemExtensionErrorCode 10 ("The operation couldn’t be completed. (OSSystemExtensionErrorDomain error 10.)")
08:38:00.101: Starting Virtual Camera output to Program
08:46:54.378: Populating font family aliases took 107 ms. Replace uses of missing font family "MS Shell Dlg" with one that exists to avoid this cost.
08:46:54.387: OpenType support missing for "Open Sans", script 11
08:46:54.388: OpenType support missing for ".AppleSystemUIFont", script 11
08:46:54.389: OpenType support missing for "Open Sans", script 12
08:46:54.389: OpenType support missing for ".AppleSystemUIFont", script 12
08:46:54.389: OpenType support missing for "Open Sans", script 20
08:46:54.390: OpenType support missing for ".AppleSystemUIFont", script 20
08:47:18.289: Number of remaining views: 1
08:47:18.290: ---------------------------------
08:47:18.290: video settings reset:
08:47:18.290: base resolution: 1920x1080
08:47:18.290: output resolution: 960x540
08:47:18.290: downscale filter: Bicubic
08:47:18.290: fps: 30/1
08:47:18.290: format: NV12
08:47:18.290: YUV mode: Rec. 709/Partial
08:47:18.290: NV12 texture support enabled
08:47:18.290: P010 texture support not available
08:47:18.293: Settings changed (outputs, video)
08:47:18.294: ------------------------------------------------
08:47:18.379: [mac-virtualcam] mac-camera-extension: OSSystemExtensionErrorCode 10 ("The operation couldn’t be completed. (OSSystemExtensionErrorDomain error 10.)")
08:47:21.689: Starting Virtual Camera output to Program
08:47:34.758: Number of remaining views: 1
08:47:34.758: ---------------------------------
08:47:34.758: video settings reset:
08:47:34.758: base resolution: 1280x720
08:47:34.758: output resolution: 960x540
08:47:34.758: downscale filter: Bicubic
08:47:34.758: fps: 30/1
08:47:34.758: format: NV12
08:47:34.758: YUV mode: Rec. 709/Partial
08:47:34.759: NV12 texture support enabled
08:47:34.759: P010 texture support not available
08:47:34.765: Settings changed (outputs, video)
08:47:34.765: ------------------------------------------------
08:47:34.853: [mac-virtualcam] mac-camera-extension: OSSystemExtensionErrorCode 10 ("The operation couldn’t be completed. (OSSystemExtensionErrorDomain error 10.)")
08:47:38.130: Starting Virtual Camera output to Program
08:48:05.392: Number of remaining views: 1
08:48:05.393: ---------------------------------
08:48:05.393: video settings reset:
08:48:05.393: base resolution: 1920x1080
08:48:05.393: output resolution: 1920x1080
08:48:05.393: downscale filter: Bicubic
08:48:05.393: fps: 24000/1001
08:48:05.393: format: NV12
08:48:05.393: YUV mode: Rec. 709/Partial
08:48:05.393: NV12 texture support enabled
08:48:05.393: P010 texture support not available
08:48:05.399: Settings changed (outputs, video)
08:48:05.399: ------------------------------------------------
08:48:05.483: [mac-virtualcam] mac-camera-extension: OSSystemExtensionErrorCode 10 ("The operation couldn’t be completed. (OSSystemExtensionErrorDomain error 10.)")
08:48:09.288: Starting Virtual Camera output to Program
08:48:11.285: Switched to Preview/Program mode
08:48:11.285: ------------------------------------------------
08:48:14.361: Switched to scene 'Scene'
08:48:14.367: Switched to regular Preview mode
08:48:14.367: ------------------------------------------------
08:48:54.449: Starting Virtual Camera output to Program
08:49:14.682: Starting Virtual Camera output to Program
08:50:07.267: Number of remaining views: 1
08:50:07.267: ---------------------------------
08:50:07.267: video settings reset:
08:50:07.267: base resolution: 1920x1080
08:50:07.267: output resolution: 1920x1080
08:50:07.267: downscale filter: Bicubic
08:50:07.267: fps: 30/1
08:50:07.267: format: NV12
08:50:07.267: YUV mode: Rec. 709/Partial
08:50:07.267: NV12 texture support enabled
08:50:07.267: P010 texture support not available
08:50:07.272: Settings changed (video)
08:50:07.272: ------------------------------------------------
08:50:12.218: Starting Virtual Camera output to Program
08:50:33.638: Starting Virtual Camera output to Program
08:51:00.661: Starting Virtual Camera output to Program
08:51:09.232: Changing Virtual Camera output to Preview
08:51:10.749: NV12 texture support enabled
08:51:10.749: P010 texture support not available
08:51:12.222: Starting Virtual Camera output to Preview
08:51:22.055: Changing Virtual Camera output to Program
 
Top