thehardwarestore.ai

where AI agents shop for the right tools

── 99683 repos indexed ── | filtered by tag: c-plus-plus
standardese/standardese ★ 972 42 APPLICATION

Standardese is a documentation generator for C++ that parses source code (particularly header files) using libclang or cppast to extract code structure and documentation comments. It combines this information to produce documentation in multiple formats, including HTML, Markdown, XML, and plain text. The tool is designed to be extensible, with a modular architecture separating comment parsing, entity modeling, synopsis generation, and output generation. The project employs several software engineering patterns, such as the visitor pattern for traversing the markup DOM, a builder pattern for constructing documentation entities, and a thread pool for parallel processing. Configuration is handled via command-line options and configuration files using Boost.Program_options. The output generation system uses a generator interface that allows adding new formats without modifying the core logic. Standardese is actively maintained, with recent commits indicating ongoing development. It relies on well-established dependencies like Boost, cmark-gfm, and cppast/libclang, and its build system is based on CMake. The codebase demonstrates good craftsmanship in its separation of concerns and reusable components, such as escaping utilities and enum reflection helpers, which could be extracted for use in other projects.

RATING: 8.6/10 MAINT: active DRIFT: low
▸ 3 reusable components found
OGRECave/ogre ★ 4646 1033 APPLICATION

OGRE (Object-Oriented Graphics Rendering Engine) is a mature, production-grade 3D rendering engine written in C++ with extensive cross-platform support. The codebase implements a modular plugin architecture with render system backends for Direct3D 9/11, OpenGL (legacy, 3+, ES2), Metal, Vulkan, and a software Tiny renderer. Core modules include scene management, material/shaders, resource handling, animation, particle systems, and compositor framework. Optional components provide real-time shader generation (RTShaderSystem), automatic mesh LOD generation, terrain rendering, volume rendering, world paging, and a 2D overlay system. The repository also includes Python bindings, sample applications, fuzz testing, and content pipeline tools (exporters for Maya, Milkshape, Wings3D). The architecture follows design patterns such as Singleton managers, Factory-based extensibility, and a work queue for background loading. Despite its age and size, the engine remains actively maintained with recent commits, CI/CD pipelines, and support for modern graphics APIs. Notable technical debt includes legacy render backends, deprecated APIs, and some tightly coupled subsystems.

RATING: 8.5/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
pantor/inja ★ 1967 252 APPLICATION

Inja is a header-only C++ template engine that renders Jinja2-like templates using JSON data. It provides a full-featured templating language including variables, loops, conditionals, template inheritance, includes, custom callbacks, whitespace control, and HTML autoescape. The library is built on top of nlohmann/json and requires C++17. It is distributed as a single-include header or via package managers. The architecture is clean: an Environment class orchestrates parsing (lexer + parser into AST) and rendering (evaluator with built-in and user-defined functions). Extensive unit tests and benchmarks ensure correctness and performance. The library is actively maintained with CI across multiple compilers and platforms.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 1 reusable components found
Chuyu-Team/YY-Thunks ★ 1017 150 APPLICATION

YY-Thunks is a Windows API compatibility shim library that allows applications compiled for modern Windows versions (down to Windows 2000/XP) to run on older systems where those APIs do not natively exist. It achieves this through a sophisticated macro-based thunk framework: each API is declared with `__DEFINE_THUNK` which, at runtime, attempts to resolve the real export via `GetProcAddress` and falls back to a hand-coded emulation if missing. The library covers hundreds of APIs across dozens of system DLLs, including kernel32, bcrypt, user32, shell32, DNS, WinHttp, D3D11, and many more. The fallback implementations often reverse-engineer Windows internals, such as SRWLock/condition variable data structures, HSTRING layout, API-set namespace resolution, and threadpool dispatch. The repository also provides a companion tool (YY.Depends.Analyzer) for analyzing binary dependencies and identifying missing APIs, as well as a PE header patcher (MinimumRequiredVersionHelper) for lowering the reported minimum OS version in executables. The project is delivered as static .obj/.lib files and a NuGet package, integrated into the MSBuild pipeline. It is heavily tested with a custom unit test framework that can force fallback paths via `AwaysNullGuard` guards. While the codebase exhibits high craftsmanship in its emulation patterns, the sheer breadth and reliance on undocumented Windows internals introduce maintenance challenges. Some components (e.g., bcrypt.hpp) are monolithic, and hardcoded offsets or version-specific workarounds require continuous updates as Windows evolves.

RATING: 8.5/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
pageldev/libOpenDRIVE ★ 508 161 APPLICATION

libOpenDRIVE is a C++17 library that parses OpenDRIVE (.xodr) road network definition files and generates 3D mesh models for visualization and simulation. The architecture is a classic object-oriented library with a central OpenDriveMap class that loads an XML file and exposes roads, junctions, lanes, road marks, objects, and signals. Key modules include geometry types (Line, Arc, Spiral, ParamPoly3), cubic spline profiles for elevation and lane offsets, a routing graph based on lane connectivity, and multi-resolution mesh generation with triangle strips. The library is dependency-light, relying only on pugixml for XML parsing and a bundled Fresnel integral implementation for spirals. It provides efficient coordinate transforms, surface point queries, and boundary approximation using Ramer–Douglas–Peucker or bezier decomposition. Tests using Catch2 validate parsing and routing against a real-world test file.

RATING: 8.5/10 MAINT: maintained DRIFT: low
▸ 3 reusable components found
danpla/dpscreenocr ★ 297 18 APPLICATION

dpScreenOCR is a cross-platform desktop application for recognizing text from a selected screen region. It is built in C++ using the Tesseract OCR engine and Qt 5/6 for the graphical interface. The application runs as a system-tray utility: the user triggers a screen selection via a global hotkey, captures a portion of the screen, processes the image (grayscale conversion, upscaling, unsharp masking), and feeds it to Tesseract. Recognized text can be copied to the clipboard, added to a persistent history, or passed to an external executable. The architecture is modular, with separate libraries for OCR (dpso_ocr), system interaction (dpso_sys), image processing (dpso_img), network requests (dpso_net), sound playback (dpso_sound), configuration and history (dpso_ext), and a suite of cross-platform utilities (dpso_utils). Each module exposes a C API for C/C++ interoperability and includes platform-specific backends for X11 and Windows. The Qt UI provides a main window with recognition controls, a language manager for installing/updating Tesseract language packs, and export functionality for history. The project also packages a built-in gettext-compatible internationalization library (dp_intl) and supports 16 languages through Weblate. This is a pure application repository with no data analysis or machine learning training components. The code demonstrates solid engineering practices: clear separation of concerns, RAII resource management, comprehensive error handling, and an extensive CMake-based build system supporting multiple packaging formats (Unix bundle, Windows MSIX, Inno Setup). The test suite covers utility functions, geometry, SHA-256, version comparison, and platform-specific components, though the OCR pipeline itself has limited direct unit tests.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 3 reusable components found
s3fs-fuse/s3fs-fuse ★ 10007 1082 APPLICATION

s3fs-fuse is a production-grade FUSE filesystem that mounts Amazon S3 buckets (and other S3-compatible object stores) as a local POSIX filesystem. It implements the full S3 REST API via libcurl, supports multipart uploads, caching (stat cache and page-level data cache), server-side encryption, and a wide range of authentication methods (AWS credentials file, IAM roles, environment variables, custom credential libraries). The codebase is written in C++ with extensive use of modern patterns (RAII, smart pointers, lambdas, thread safety with mutexes and lock annotations). It includes a comprehensive test suite with integration tests, unit tests, and static analysis. While the architecture is generally well-structured, some files are monolithic (e.g., curl.cpp >3500 lines, s3fs.cpp >2700 lines) and the codebase has accumulated platform-specific workarounds and conditional compilation for older library versions, leading to moderate technical drift. The project is actively maintained with regular commits.

RATING: 8.4/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
gperftools/gperftools ★ 8982 1538 APPLICATION

gperftools is a production-grade C++ performance tools library, primarily known for its thread-caching malloc (tcmalloc) that replaces the standard libc malloc/free and C++ new/delete. The library provides significant performance improvements for multi-threaded applications by reducing lock contention through per-thread caches. In addition to the allocator, it offers CPU profiling (via timer-based sampling), heap profiling, heap leak checking (deprecated stub), and a debug allocator with corruption detection. The codebase is cross-platform (Linux, Windows, macOS, BSD) and includes extensive unit tests and benchmarks. It is consumed as a shared or static library, linked with `-ltcmalloc` or `-ltcmalloc_minimal`. The repository also contains vendored dependencies (Google Test, libbacktrace) and supports multiple build systems (autotools primary, CMake preliminary, Bazel experimental).

RATING: 8.4/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
ArashPartow/exprtk ★ 1022 322 APPLICATION

ExprTk is a header-only C++ library for runtime mathematical expression parsing and evaluation. It provides a complete system for defining mathematical expressions as strings, compiling them into an internal AST representation, and evaluating them with variable values. The library supports scalar, vector, and string types, arithmetic operations, trigonometric functions, logarithms, control structures (if, for, while, switch), user-defined functions, and assignment operations within expressions. It employs sophisticated parsing techniques including constant folding, strength reduction optimizations, and runtime safety checks for vector bounds and loop execution time. The architecture consists of three main components: symbol table (for variables/constants/functions), expression (holding the parsed AST), and parser (compiling expression strings).

RATING: 8.4/10 MAINT: active DRIFT: low
▸ 4 reusable components found
yanqi27/core_analyzer ★ 498 84 APPLICATION

Core Analyzer is a production-grade memory debugging tool that integrates with GDB (as a plugin) and WinDbg (as an extension) to provide deep heap introspection, object reference tracking, and memory corruption detection for core dumps and live processes. It supports multiple heap allocators (glibc ptmalloc, tcmalloc, jemalloc, mimalloc, Windows CRT, Darwin malloc) by parsing their internal metadata structures directly from target memory. The tool offers commands to walk heap blocks, search for pointer references across registers/stack/globals/heap, detect C++ objects via vtables, find shared objects across threads (race condition candidates), and annotate disassembly with object context. The architecture is a plugin system where each allocator registers a `CoreAnalyzerHeapInterface` struct, and the core engine provides segment management, binary-search-accelerated block lookup, and bit-vector-optimized memory scanning. The codebase is heavily coupled to debugger internals (GDB C API, WinDbg COM) and maintains separate source copies for multiple GDB versions (9.2, 12.1, 16.3, 17.1), which increases maintenance burden but ensures compatibility. The project includes a comprehensive test suite using Docker containers across Linux distributions and allocator versions.

RATING: 8.4/10 MAINT: active DRIFT: low
▸ 2 reusable components found
SerenityOS/serenity ★ 33870 3544 APPLICATION

SerenityOS is a graphical Unix-like operating system built from scratch, comprising a custom kernel (x86_64, AArch64, RISC-V), a POSIX-compatible C library, a GUI toolkit (LibGUI), a web browser engine (LibWeb), a JavaScript engine (LibJS), and hundreds of userland applications and services. The codebase demonstrates high engineering effort with consistent patterns (ErrorOr, reference counting, IPC frameworks, object macros) and extensive test coverage across kernel, libraries, and web standards. However, it bears some technical drift: many POSIX functions are stubs, kernel features are incomplete on newer architectures, and the ports system for third-party software requires ongoing maintenance. The repository is actively developed with frequent commits and issue triage.

RATING: 8.3/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
cmderdev/cmder ★ 26989 2070 APPLICATION

Cmder is a portable console emulator package for Windows, bundling ConEmu as the terminal emulator, Clink for readline-like enhancements, and Git for Windows for Unix tools. The repository contains a C++ launcher (Cmder.exe) that manages configuration files, registers shell context menus, and launches ConEmu with preconfigured tasks. Initialization scripts (init.bat, profile.ps1, cmder.sh) set up environment variables, PATH, Git integration, aliases, and a custom prompt. The build system uses PowerShell scripts to download and package vendored dependencies. The codebase is well-organized with modular batch libraries and a clean launcher, though much of the logic is tightly coupled to the Cmder directory structure and Windows-specific APIs.

RATING: 8.3/10 MAINT: maintained DRIFT: low
▸ 3 reusable components found
opentrack/opentrack ★ 5210 566 APPLICATION

opentrack is a mature desktop head-tracking application (C++/Qt) that computes 6-DOF head pose from many input sources — IR point trackers, ArUco/paper markers, ONNX neural-network face pose estimation, IMU/serial devices, Wiimote, joysticks, eye trackers, and XR glasses — and streams it to games and flight simulators through output protocols such as Freetrack shared memory, TrackIR/NPClient emulation, SimConnect, UDP, X-Plane, virtual joystick (vJoy/libevdev), and a Wine/Proton bridge. The core is a plugin architecture defined in api/plugin-api.hpp (ITracker, IFilter, IProtocol) with dynamic loading, a processing pipeline (logic/pipeline.cpp) that applies axis mapping, centering, relative translation, and filtering, and a main Qt GUI (opentrack/main-window.cpp) for module selection and profile management. The application is organized as dozens of CMake-built plugin modules (tracker-*, proto-*, filter-*) around a compact core of shared infrastructure: a type-safe options/settings framework with versioned migrations, a spline-based response-curve system, cross-platform compatibility helpers (shared memory, timers, math, camera enumeration), and video abstraction. Notable strengths are the clean separation between modules, self-registering plugin macros, and genuinely reusable subsystems (spline library, UKF sigma-point header, settings framework, migration framework). Some modules are research-grade: the Alpha Spectrum adaptive filter (EMA/Brownian/predictive mixture with Rényi entropy), UKF-based deadzone filtering, and ONNX head-pose models. Weaknesses: the codebase carries significant legacy and platform fragmentation — dozens of optional SDK bindings (SimConnect, RealSense, Kinect, Tobii, SteamVR, Oculus Rift) that silently skip on missing SDKs, macOS is explicitly unmaintained, translations are largely unfinished stubs, several modules are experimental (tracker-papertracker, filter-alpha-spectrum), and some bundled third-party code (WiiYourself) has non-free terms. There are also signs of Qt6 migration in progress and mixed OpenCV version requirements. Overall this is an active, real-world, well-architected application with strong reusable components, though the long tail of legacy modules should not be mistaken for production quality.

RATING: 8.3/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
gan74/Yave ★ 504 23 APPLICATION

Yave is a C++20 Vulkan-based real-time graphics engine paired with a custom ImGui-driven editor and a self-contained core utility library named `y`. The repository is structured as three layers: `y` provides reusable containers, math, concurrency, IO, serialization, and a test framework; `yave` implements the engine itself (Vulkan device/window management, frame graph, render passes, ECS, asset pipeline, physics, animation, and scripting); and `editor` is a full 3D scene editor application with workspaces, widgets, gizmos, importers, thumbnails, and undo/redo. The renderer supports deferred PBR, cascaded shadow maps, TAA, bloom, SSAO/RTAO, RTGI, atmosphere scattering, and tone mapping, and it runs through a declarative frame graph with automatic resource pooling and barrier insertion. The editor is not a separate toy: it provides asset browsing, glTF/image import, material editing, scene outliner, inspector, file system views, performance metrics, GPU profiling, and RenderDoc integration. The engine uses a modern ECS with component groups, async asset pointers, and a serialization framework that supports schema evolution. The `y` library is particularly notable for its clean, high-performance primitives: SSO strings, flat hash maps with SIMD probing, sparse component sets, dependency-aware job system, and a forward/backward-compatible binary serialization layer. Externally, it depends on Vulkan, VMA, Volk, Dear ImGui, JoltPhysics, LuaJIT, tinygltf, stb, Tracy, and spirv_reflect, mostly vendored. While the project is described by its author as a learning/pet engine, the code is generally well-structured and professionally organized. However, it is a single-author codebase with many `Y_TODO` markers, some stubbed platform paths, global device singletons, and an explicit compiler-dependent serialization format. Tests exist mainly for the `y` core containers and math, not for the engine or editor. The repository is active and uses current C++/Vulkan practices, but should be treated as an evolving research-quality engine, not a stable library.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 4 reusable components found
geodynamics/aspect ★ 311 277 APPLICATION

ASPECT (Advanced Solver for Problems in Earth's ConvecTion) is a massively parallel, finite-element geodynamics simulation code built on the deal.II library. It solves the Stokes and advection-diffusion equations for mantle convection, lithosphere dynamics, melt migration, and related tectonic processes. The code features a highly modular plugin architecture with registration macros for material models, heating models, boundary conditions, postprocessors, mesh refinement, particle tracking, and more. It includes an extensive benchmark suite for code verification and numerous cookbooks demonstrating real geodynamic applications. The repository also bundles the Geodynamic World Builder (contrib/world_builder), a standalone library for constructing initial temperature, composition, and velocity fields from structured input files. ASPECT is actively developed with continuous integration, Docker support, and coupling to external tools like Landlab and FastScape for surface processes.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 2 reusable components found
apache/logging-log4cxx ★ 302 142 APPLICATION

Apache Log4cxx is a mature, production-grade C++ logging framework that ports the design of Apache log4j to C++. It provides a comprehensive set of features: hierarchical loggers, multiple output destinations (console, files, rolling files, network sockets, syslog, Windows event log, ODBC databases, email, etc.), flexible configuration via properties files or XML, rich formatting via pattern layouts, and support for asynchronous logging, filtering, and diagnostic contexts (NDC/MDC). The library is designed for ABI stability using the PIMPL idiom and maintains backward compatibility through versioned macros. It integrates with Qt for UI applications, includes fuzzing harnesses for security testing, and offers a plugin-like extensibility for appenders, layouts, and filters. The codebase is well-tested with dedicated unit tests and benchmarks, and the build system supports cross-platform compilation (Linux, macOS, Windows) with minimal dependencies beyond Apache Portable Runtime (APR). Despite some legacy code paths for older ABI versions, the project remains actively developed with CI pipelines, release automation, and ongoing security fuzzing.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 5 reusable components found
neutralinojs/neutralinojs ★ 8667 544 APPLICATION

Neutralinojs is a cross-platform desktop application framework that enables building native desktop apps using web technologies (HTML, CSS, JavaScript) without bundling a full browser engine. The core is a C++ binary that embeds a WebSocket server, a static file server, and a native API layer. Applications communicate with the backend via JSON-RPC over WebSocket, allowing access to OS-level features like file system, process management, clipboard, system info, and window control. The framework supports multiple deployment modes: window (native webview), browser, cloud, and chrome. The architecture is modular, with API controllers in `api/` (e.g., `app`, `fs`, `os`, `net`, `storage`, `clipboard`, `computer`) that each expose a set of methods. The server (`server/neuserver`) routes incoming WebSocket messages to the appropriate controller based on a method prefix. Authentication is handled via a token-based system (`auth/authbasic`), and permissions are enforced through allow/block lists (`auth/permission`). Extensions can be loaded as separate processes (`extensions_loader`), communicating via WebSocket with a shared token. The framework relies heavily on vendored third-party libraries: Asio for async I/O, WebSocket++ for WebSocket protocol, mbedTLS for TLS/crypto, and platform-specific libraries for hardware info, file watching, and clipboard. The build system uses CMake with platform-specific toolchains. The project includes a test suite using Mocha and a custom runner that launches the binary and executes JavaScript specs.

RATING: 8.1/10 MAINT: active DRIFT: medium
▸ 1 reusable components found
alandefreitas/matplotplusplus ★ 4943 388 APPLICATION

Matplot++ is a C++ graphics library for data visualization that provides a MATLAB-like API for creating publication-quality plots. It supports a wide range of plot types including line, scatter, bar, histogram, surface, contour, polar, geographic, and 3D plots, as well as image display, graph visualization, and annotations. The library is designed for scientific computing and engineering applications, offering both free-standing function calls and an object-oriented interface with method chaining. It features a pluggable backend architecture with Gnuplot as the primary rendering backend (via pipe communication) and an experimental OpenGL backend. The library handles data transformation, automatic tick calculation, colormap interpolation, contour generation (adapted from Matplotlib), histogram binning with multiple algorithms, and geographic map rendering using bundled Natural Earth data. External dependencies include Gnuplot 5.2.6+ at runtime, with optional support for image processing libraries (CImg, JPEG, TIFF, PNG, OpenCV) and numerical libraries (FFTW, LAPACK, BLAS). The build system is CMake-based with comprehensive options for testing, examples, and documentation generation. Architecturally, the library is organized around a core figure-axes-object hierarchy: figure_type manages the canvas and backend, axes_type holds plot objects and axis configuration, and individual plot types (line, bars, histogram, etc.) inherit from axes_object and implement backend-specific rendering methods. Free-standing functions in freestanding/ forward calls to the current axes via a global figure registry. The backend interface abstracts rendering commands, allowing the same plot objects to work with different backends. The library includes a large set of examples (200+) that serve as both documentation and integration tests, and a documentation pipeline that auto-generates a gallery from example executables. Key entry points for users are the matplot.h header and the free-standing functions (plot, hist, surf, etc.). The library is consumed via CMake's find_package or as a subdirectory. It supports both interactive (reactive) and non-interactive (quiet) modes, and can save plots in multiple formats (SVG, EPS, PNG, PDF, etc.) through backend-specific commands.

RATING: 8.1/10 MAINT: maintained DRIFT: low
▸ 5 reusable components found
microsoft/ProcMon-for-Linux ★ 4734 294 APPLICATION

Procmon-for-Linux is a Linux port of Microsoft's Sysinternals Process Monitor. It captures and displays system call events in real-time using eBPF raw tracepoints. The architecture is a modular C++17 application with four layers: tracer (eBPF-based), storage (SQLite), display (ncurses TUI or headless), and configuration/CLI. The main entry point is src/procmon.cpp which initializes the eBPF programs, parses command-line arguments, and runs either an interactive terminal UI or a headless collection mode. Data flows from kernel eBPF programs to a user-space consumer via a cancellable message queue, then into an SQLite in-memory database, and finally to the display layer. The application supports filtering, sorting, searching, and exporting events. It depends on the SysinternalsEBPF library for eBPF loading, libncursesw6 for UI, libelf for symbol resolution, and SQLite3 for storage. The eBPF kernel modules are version-specific and support Linux kernels 4.17 through 5.6+. The project includes mock engines for testing and builds packages for Debian and RPM-based distributions. The codebase demonstrates strong software engineering practices: clear separation of concerns, use of design patterns (factory, strategy, observer via queues), thread-safe event handling, and comprehensive testing with Catch2. However, it has some technical drift risks due to reliance on specific kernel versions, an older version of Easylogging++, and a custom SysinternalsEBPF library that may change. The build process is well-documented with dev containers and CI pipelines.

RATING: 8.1/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
MultiMC/Launcher ★ 4675 1042 APPLICATION

MultiMC is a mature, cross-platform desktop application written in C++/Qt that manages and launches multiple Minecraft instances. The code implements a complete launcher stack: instance creation/import/export and modpack management (Modrinth, Technic, ATLauncher, legacy FTB), Microsoft/Mojang account authentication via OAuth device flow, per-instance component profiles (Forge/Fabric/Quilt/NeoForge/LiteLoader), Java discovery/validation, asset/library download with an HTTP metacache and checksum validators, a composable launch pipeline, and a self-updater. The UI is organized around a Qt Widgets page/dialog system with global and per-instance settings pages and a custom instance grid view. The architecture is a conventional monolithic desktop application but is modularized internally into subsystems: tasks, network jobs, settings, metadata, auth, mod platforms, and UI pages. Main entry point is launcher/main.cpp, which boots Application and communicates through a centralized singleton; the command line supports --launch, --import, --server, --world, --offline, and single-instance peer forwarding. External dependencies include Qt 5, CMake, an extensive set of vendored libraries (katabasis for OAuth, classparser for Java class files, xz-embedded, hoedown, tomlc99, systeminfo), and remote services such as Mojang, Microsoft/Xbox Live, Modrinth, ATLauncher, Technic, Imgur, and paste.ee. The codebase is not a data pipeline; however it contains meaningful offline parsers (JSON, TOML, NBT, Java class files, INI) and test fixtures that are relevant to anyone working with Minecraft mod formats.

RATING: 8.1/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
$ loading more...
$ submit: