/****************************************************************************
**
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \externalpage http://wiki.qt.io/Building_Qt_5_from_Git
    \title Building Qt 5 From Git
*/

/*!
    \externalpage http://qt-project.org/contribute
    \title Contributing to Qt
*/

/*!
    \externalpage http://www.chromium.org/Home
    \title The Chromium Projects
*/

/*!
    \externalpage http://itunes.apple.com/us/app/xcode/id497799835?ls=1&mt=12
    \title Xcode
*/

/*!
    \externalpage https://developer.apple.com/programs/
    \title Apple Developer Program
*/

/*!
    \externalpage http://help.apple.com/xcode/mac/8.0/#/dev10510b1f7
    \title Create asset catalogs and sets
*/

/*!
    \externalpage https://developer.apple.com/library/content/qa/qa1686/_index.html
    \title App Icons on iPhone, iPad and Apple Watch
*/

/*!
    \externalpage https://spdx.org/licenses/BSD-3-Clause.html
    \title BSD 3-Clause "New" or "Revised" License
*/

/*!
    \externalpage http://qt.io/licensing/
    \title Qt Licensing Overview
*/

/*!
    \externalpage http://www.gnu.org/licenses/gpl-2.0.html
    \title GNU General Public License, version 2
*/

/*!
    \externalpage http://www.gnu.org/licenses/gpl-3.0.html
    \title GNU General Public License, version 3
*/

/*!
    \externalpage http://www.gnu.org/licenses/lgpl-2.1.html
    \title GNU Lesser General Public License, version 2.1
*/

/*!
    \externalpage http://www.gnu.org/licenses/lgpl-3.0.html
    \title GNU Lesser General Public License, version 3
*/


/*!
    \externalpage https://spdx.org/licenses/BSD-3-Clause.html
    \title BSD 3-clause "New" or "Revised" License
*/

/*!
    \externalpage http://qt-project.org/faq/answer/how_to_compress_data_with_qt
    \title How to compress data with Qt?
*/

/*!
    \externalpage https://play.google.com/store/apps/details?id=com.digia.Qt5Intro
    \title Google Play: Introduction to Qt 5
*/

/*!
    \externalpage https://play.google.com/store/apps/details?id=com.digia.Qt5Everywhere
    \title Google Play: Qt 5 Everywhere
*/

/*!
    \externalpage https://itunes.apple.com/us/app/subattack/id659283830
    \title iTunes: SubAttack
*/

/*!
    \externalpage https://itunes.apple.com/us/app/qtquicksand/id666273528
    \title iTunes: QtQuicksand
*/

/*!
   \externalpage http://www.windowsphone.com/en-us/store/app/quickforecast/35572287-c6d6-4d5c-9799-46555f7fc459
   \title Windows Store: QuickForecast
*/

/*!
    \externalpage https://itunes.apple.com/us/app/quick-forecast/id736658981
    \title iTunes: Quick Forecast
*/

/*!
    \externalpage https://play.google.com/store/apps/details?id=org.qtproject.quickforecast
    \title Google Play: Quick Forecast
*/

/*!
    \externalpage https://itunes.apple.com/us/app/qt-hangman/id762381104
    \title iTunes: Qt Hangman
*/

/*!
    \externalpage https://play.google.com/store/apps/details?id=com.digia.QtHangman
    \title Google Play: Qt Hangman
*/
/*!
    \externalpage https://play.google.com/store/apps/details?id=com.digia.Flyingbus
    \title Google Play: Flyingbus
*/

/*!
    \externalpage https://itunes.apple.com/us/app/flyingbus/id762515926?mt=8
    \title iTunes: Flyingbus
*/

/*!
    \externalpage http://www.gnu.org/copyleft/fdl.html
    \title GNU Free Documentation License
*/

/*!
    \externalpage https://www.qt.io/terms-conditions/#marketplace
    \title Qt Marketplace License Agreement
*/

/*!
    \externalpage http://doc.qt.io/qbs/index.html
    \title Qbs Manual
*/

/*!
    \externalpage https://play.google.com/apps/publish
    \title Google Play Developer Console
*/

/*!
    \externalpage http://www.qt.io/qt-features/
    \title Qt Enterprise
*/
/*!
    \externalpage https://sailfishos.org/
    \title Sailfish OS
*/
/*!
    \externalpage https://www.tizen.org/
    \title Tizen
*/
/*!
    \externalpage http://developer.android.com/guide/topics/manifest/manifest-intro.html
    \title Android: App Manifest
*/
/*!
    \externalpage http://developer.android.com/sdk/index.html
    \title Android: The Android SDK Tools
*/
/*!
    \externalpage http://developer.android.com/tools/sdk/ndk/index.html
    \title Android: The Android NDK
*/
/*!
    \externalpage https://developer.android.com/studio/index.html
    \title Android: Android Studio
*/
/*!
    \externalpage https://developer.android.com/studio/intro/update#sdk-manager
    \title Android: Update your tools with the SDK Manager
*/
/*!
    \externalpage https://developer.android.com/studio/command-line/sdkmanager
    \title Android: sdkmanager
*/
/*!
    \externalpage https://developer.android.com/studio/run/emulator
    \title Android: Android Emulator
*/
/*!
    \externalpage http://developer.android.com/tools/help/adb.html
    \title Android: adb
*/
/*!
    \externalpage https://developer.android.com/reference/android/app/Service
    \title Android: Service
*/
/*!
    \externalpage https://developer.android.com/reference/android/content/Intent
    \title Android: Intent
*/
/*!
    \externalpage https://developer.android.com/reference/android/content/Context#startService(android.content.Intent)
    \title Android: startService()
*/
/*!
    \externalpage https://developer.android.com/reference/android/content/BroadcastReceiver
    \title Android: BroadcastReceiver
*/
/*!
    \externalpage https://developer.android.com/reference/android/content/Context#sendBroadcast(android.content.Intent)
    \title Android: sendBroadcast()
*/
/*!
    \externalpage https://developer.android.com/reference/android/os/Binder.html
    \title Android: Binder
*/
/*!
    \externalpage https://developer.android.com/guide/app-bundle
    \title Android: App Bundles
*/
/*!
    \externalpage https://developer.android.com/guide/components/activities/intro-activities
    \title Android: Introduction to Activities
*/
/*!
    \externalpage https://developer.android.com/studio/build#build-files
    \title Android: Build Configuration Files
*/
/*!
    \externalpage https://developer.android.com/reference/android/app/Activity
    \title Android: Activity
*/
/*!
    \externalpage https://developer.android.com/studio/build/dependencies
    \title Android: Add build dependencies
*/
/*!
    \externalpage https://developer.android.com/training/articles/keystore
    \title Android: Android keystore system
*/
/*!
    \externalpage https://developer.android.com/guide/topics/resources/providing-resources#OriginalFiles
    \title Android: Accessing original files
*/
/*!
    \externalpage https://developer.android.com/guide/components/fragments
    \title Android: Fragments
*/
/*!
    \externalpage https://bugreports.qt.io/browse/QTBUG-81461
    \title QTBUG-81461
*/
/*!
    \externalpage https://bugreports.qt.io/browse/QTBUG-78009
    \title QTBUG-78009
*/
/*!
    \externalpage https://bugreports.qt.io/browse/QTBUG-72086
    \title QTBUG-72086
*/
/*!
    \externalpage http://strawberryperl.com
    \title Perl
*/
/*!
    \externalpage https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
    \title Java SE Development Kit
*/
/*!
    \externalpage http://openjdk.java.net
    \title OpenJDK
*/
/*!
    \externalpage https://adoptopenjdk.net/
    \title AdoptOpenJDK
*/
/*!
    \externalpage http://www.gradle.org
    \title Gradle
*/
/*!
    \externalpage https://qtcloudservices.com/
    \title Qt Cloud Services
*/
/*!
    \externalpage http://doc.qt.io/qtcreator/creator-configuring.html
    \title Configuring Qt Creator
*/
/*!
    \externalpage http://doc.qt.io/qtcreator/creator-deploying-android.html#signing-android-packages
    \title Qt Creator: Signing Android Packages
*/
/*!
    \externalpage http://doc.qt.io/qtcreator/creator-deploying-android.html#specifying-settings-for-packages
    \title Qt Creator: Specifying Settings for Packages
*/
/*!
    \externalpage http://doc.qt.io/qtcreator/creator-developing-android.html#specifying-android-device-settings
    \title Qt Creator: Specifying Android Device Settings
*/
/*!
    \externalpage http://doc.qt.io/qtcreator/creator-deploying-android.html#managing-android-skd-packages
    \title Qt Creator: Managing Android SDK Packages
*/
/*!
    \externalpage http://doc.qt.io/qtcreator/creator-deploying-android.html#editing-manifest-files
    \title Qt Creator: Editing Manifest Files
*/

/*!
    \externalpage http://doc.qt.io/qtcreator/creator-build-example-application.html
    \title Building and Running Example
*/
/*!
    \externalpage http://doc.qt.io/qtcreator/qt-creator-accelbubble-example.html
    \title Creating a Mobile Application
*/
/*!
    \externalpage http://wiki.qt.io/Qt5ForAndroidBuilding
    \title Building Qt 5 for Android
*/

/*!
    \externalpage http://wiki.openssl.org/index.php/Compilation_and_Installation#Configure_Options
    \title OpenSSL Configure Options
*/

/*!
    \externalpage https://github.com/KDAB/android_openssl
    \title OpenSSL for Android
*/

/*!
    \externalpage http://www.openssl.org/source
    \title OpenSSL Source
*/

/*!
    \externalpage https://codereview.qt-project.org/#/admin/projects/qt/qthttp
    \title Qt HTTP
*/

/*!
    \externalpage https://codereview.qt-project.org/#/admin/projects/qt/qtftp
    \title Qt FTP
*/

/*!
    \externalpage http://doc.qt.io/QtQuickCompiler
    \title Qt Quick Compiler
*/

/*!
    \externalpage http://doc.qt.io/QtForDeviceCreation
    \title Qt for Device Creation
*/

/*!
    \externalpage https://doc.qt.io/QtForMCUs
    \title Qt for MCUs
*/

/*!
    \externalpage http://doc.qt.io/QtQuick2DRenderer
    \title Qt Quick 2D Renderer
*/

/*!
    \externalpage http://doc.qt.io/QtSupportedPlatforms/index.html
    \title Officially Supported Platforms
*/

/*!
    \externalpage http://www.bluetooth.org
    \title Bluetooth SIG
*/

/*!
    \externalpage https://account.qt.io/
    \title Qt Account
*/

/*!
    \externalpage http://doc.qt.io/qtvstools/index.html
    \title Qt VS Tools
*/
/*!
    \externalpage http://doc.qt.io/emulator/index.html
    \title Emulator
*/
/*!
    \externalpage http://doc.qt.io/archives/qt-5.3/qtwebkit-index.html
    \title Qt WebKit
*/
/*!
    \externalpage http://doc.qt.io/archives/qt-5.3/qtwebkitwidgets-index.html
    \title Qt WebKit Widgets
*/
/*!
    \externalpage http://www.opengl.org/wiki/Vertex_Rendering#Instancing
    \title OpenGL Instanced Rendering
*/
/*!
    \externalpage http://www.opengl.org/wiki/Vertex_Rendering#Primitive_Restart
    \title OpenGL Primitive Restart
*/
/*!
    \externalpage http://www.khronos.org/gltf/
    \title OpenGL glTF
*/
/*!
    \externalpage http://doc.qt.io/archives/qt-5.3/enginio-index.html
    \title Enginio Manual
*/
/*!
    \externalpage http://doc.qt.io/QtForDeviceCreation/qtb2-index.html
    \title Boot2Qt
*/
/*!
    \externalpage https://doc.qt.io/QtForDeviceCreation/qt-configuration-tool.html
    \title Qt Configuration Tool
*/
/*!
    \externalpage https://doc.qt.io/QtForDeviceCreation/qtdc-supported-platforms.html
    \title Qt for Device Creation: Supported Target Devices and Development Hosts
*/

/*!
    \externalpage https://qmlbook.github.io/
    \title QML Book
*/

/*!
    \externalpage https://doc.qt.io/qt-5/vxworks.html
    \title ext: Qt for VxWorks
*/

/*
    This prevents autolinking of each occurrence of 'macOS'
*/
/*!
    \externalpage nolink
    \title macOS
    \internal
*/
/*!
    \externalpage https://wiki.openssl.org/images/7/70/Setenv-android.sh
    \title OpenSSL: Build Setup Script
*/

/*!
    \externalpage http://doc.qt.io/QtForAutomation/index.html
    \title Qt for Automation
*/

/*!
    \externalpage https://doc.qt.io/QtAutomotiveSuite/index.html
    \title Qt Automotive Suite
*/

/*!
    \externalpage https://doc.qt.io/QtQuickEnterpriseControls/
    \title Qt Quick Enterprise Controls
*/

/*!
    \externalpage https://wiki.qt.io/Qt_for_WebAssembly
    \title Qt for WebAssembly wiki
*/

/*!
    \externalpage http://blog.qt.io/blog/2018/04/23/beta-qt-webassembly-technology-preview/
    \title Qt for WebAssembly Technology Preview
*/

/*!
    \externalpage http://blog.qt.io/blog/2018/05/22/qt-for-webassembly/
    \title Qt and WebAssembly
*/

/*!
    \externalpage http://blog.qt.io/blog/2018/11/19/getting-started-qt-webassembly/
    \title Getting Started with Qt for WebAssembly
*/

/*!
    \externalpage http://blog.qt.io/blog/2018/06/12/remote-uis-webgl-webassembly/
    \title Remote UIs with WebGL and WebAssembly
*/

/*!
    \externalpage https://webassembly.org
    \title WebAssembly Resource site
*/

/*!
    \externalpage https://www.freedesktop.org/wiki/Software/libinput
    \title libinput
*/

/*!
    \externalpage https://www.yoctoproject.org
    \title Yocto Project
*/

/*!
    \externalpage http://lct.sourceforge.net/
    \title Linux Console Tools (LCT)
*/

/*!
    \externalpage https://www.x.org/
    \title X.org
*/
