{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.KA92l4bn/b1/libtorrent-rasterbar_2.0.11-1_arm64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.KA92l4bn/b2/libtorrent-rasterbar_2.0.11-1_arm64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,7 +1,7 @@\n \n 8879bb4196c7494bdc732b50c9654f4d 366352 libdevel optional libtorrent-rasterbar-dev_2.0.11-1_arm64.deb\n- db11e98dc1b81f5a2e53a6969fb5ee5a 1669540 doc optional libtorrent-rasterbar-doc_2.0.11-1_all.deb\n+ 7ec1da8ba9e530b5020684b1da8ebdb9 1669900 doc optional libtorrent-rasterbar-doc_2.0.11-1_all.deb\n e6156e96d36de4cf42aee101bebd9b59 50632164 debug optional libtorrent-rasterbar2.0t64-dbgsym_2.0.11-1_arm64.deb\n 54f49ceb5f788a4d068ebbca3c6bcfb0 1490920 libs optional libtorrent-rasterbar2.0t64_2.0.11-1_arm64.deb\n 4a71d2444899a0639fd02d2cff7ce19a 13137228 debug optional python3-libtorrent-dbgsym_2.0.11-1_arm64.deb\n e499c73b029b4ec1126c793da002b8c6 672852 python optional python3-libtorrent_2.0.11-1_arm64.deb\n"}, {"source1": "libtorrent-rasterbar-doc_2.0.11-1_all.deb", "source2": "libtorrent-rasterbar-doc_2.0.11-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2025-01-28 14:33:12.000000 debian-binary\n--rw-r--r-- 0 0 0 3632 2025-01-28 14:33:12.000000 control.tar.xz\n--rw-r--r-- 0 0 0 1665716 2025-01-28 14:33:12.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 3624 2025-01-28 14:33:12.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 1666084 2025-01-28 14:33:12.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Add_Torrent.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Add_Torrent.html", "comments": ["Ordering differences only"], "unified_diff": "@@ -48,20 +48,20 @@\n requiring the same type be requested out of it as was assigned to it.

\n
\n struct client_data_t\n {\n    client_data_t () = default;\n    explicit client_data_t (T* v);\n    client_data_t& operator= (T* v);\n-   T* get () const;\n    explicit operator T () const;\n+   T* get () const;\n    operator void const* () const = delete;\n-   operator void* () const = delete;\n-   client_data_t& operator= (void*) = delete;\n    client_data_t& operator= (void const*) = delete;\n+   client_data_t& operator= (void*) = delete;\n+   operator void* () const = delete;\n \n    template <typename T, typename U  = typename std::enable_if<std::is_pointer<T>::value>::type>\n };\n 
\n [report issue]
\n

client_data_t()

\n
\n@@ -71,17 +71,17 @@\n \n \n [report issue]
\n
\n

const*() operator=() void*()

\n
\n operator void const* () const = delete;\n-operator void* () const = delete;\n-client_data_t& operator= (void*) = delete;\n client_data_t& operator= (void const*) = delete;\n+client_data_t& operator= (void*) = delete;\n+operator void* () const = delete;\n 
\n

we don't allow type-unsafe operations

\n [report issue]
\n \n
\n

add_torrent_params

\n

Declared in "libtorrent/add_torrent_params.hpp"

\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -14,34 +14,34 @@\n passed in to libtorrent and returned on demand. It adds type-safety by\n requiring the same type be requested out of it as was assigned to it.\n struct client_data_t\n {\n c\bcl\bli\bie\ben\bnt\bt_\b_d\bda\bat\bta\ba_\b_t\bt () = default;\n explicit c\bcl\bli\bie\ben\bnt\bt_\b_d\bda\bat\bta\ba_\b_t\bt (T* v);\n client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (T* v);\n- T* g\bge\bet\bt () const;\n explicit operator T\bT () const;\n+ T* g\bge\bet\bt () const;\n operator void c\bco\bon\bns\bst\bt*\b* () const = delete;\n- operator v\bvo\boi\bid\bd*\b* () const = delete;\n- client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void*) = delete;\n client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void const*) = delete;\n+ client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void*) = delete;\n+ operator v\bvo\boi\bid\bd*\b* () const = delete;\n \n template ::value>::type>\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\bli\bie\ben\bnt\bt_\b_d\bda\bat\bta\ba_\b_t\bt(\b()\b) *\b**\b**\b**\b**\b*\n c\bcl\bli\bie\ben\bnt\bt_\b_d\bda\bat\bta\ba_\b_t\bt () = default;\n construct a nullptr client data\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bco\bon\bns\bst\bt*\b*(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) v\bvo\boi\bid\bd*\b*(\b()\b) *\b**\b**\b**\b**\b*\n operator void c\bco\bon\bns\bst\bt*\b* () const = delete;\n-operator v\bvo\boi\bid\bd*\b* () const = delete;\n-client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void*) = delete;\n client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void const*) = delete;\n+client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void*) = delete;\n+operator v\bvo\boi\bid\bd*\b* () const = delete;\n we don't allow type-unsafe operations\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\bra\bam\bms\bs *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs_\b._\bh_\bp_\bp\"\n The _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs contains all the information in a .torrent file along\n with all information necessary to add that torrent to a _\bs_\be_\bs_\bs_\bi_\bo_\bn. The key fields\n when adding a torrent are:\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Alerts.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Alerts.html", "unified_diff": "@@ -94,15 +94,15 @@\n
  • piece_finished_alert
  • \n
  • request_dropped_alert
  • \n
  • block_timeout_alert
  • \n
  • block_finished_alert
  • \n
  • block_downloading_alert
  • \n
  • unwanted_block_alert
  • \n
  • storage_moved_alert\n
  • \n
  • storage_moved_failed_alert\n
  • \n
  • torrent_deleted_alert
  • \n@@ -199,20 +199,20 @@\n \n \n
  • dht_get_peers_reply_alert
  • \n
  • dht_direct_response_alert
  • \n
  • picker_log_alert
  • \n
  • session_error_alert
  • \n
  • dht_live_nodes_alert\n
  • \n
  • session_stats_header_alert
  • \n
  • dht_sample_infohashes_alert\n
  • \n
  • block_uploaded_alert
  • \n
  • alerts_dropped_alert
  • \n
  • socks5_alert
  • \n@@ -1287,26 +1287,26 @@\n torrent_handle::move_storage. This is useful to synchronize with the\n actual disk. The storage_path() member return the new path of the\n storage.

    \n
    \n struct storage_moved_alert final : torrent_alert\n {\n    std::string message () const override;\n-   char const* storage_path () const;\n    char const* old_path () const;\n+   char const* storage_path () const;\n \n    static constexpr alert_category_t static_category  = alert_category::storage;\n };\n 
    \n-\n-[report issue]
    \n-

    old_path() storage_path()

    \n+\n+[report issue]
    \n+

    storage_path() old_path()

    \n
    \n-char const* storage_path () const;\n char const* old_path () const;\n+char const* storage_path () const;\n 
    \n

    the path the torrent was moved to and from, respectively.

    \n [report issue]
    \n
    \n
    \n

    storage_moved_failed_alert

    \n

    Declared in "libtorrent/alert_types.hpp"

    \n@@ -2951,17 +2951,17 @@\n std::vector<std::pair<sha1_hash, udp::endpoint>> nodes () const;\n int num_nodes () const;\n \n static constexpr alert_category_t static_category = alert_category::dht;\n sha1_hash node_id;\n };\n \n-\n-[report issue]
    \n-

    num_nodes() nodes()

    \n+\n+[report issue]
    \n+

    nodes() num_nodes()

    \n
    \n std::vector<std::pair<sha1_hash, udp::endpoint>> nodes () const;\n int num_nodes () const;\n 
    \n

    the number of nodes in the routing table and the actual nodes.

    \n [report issue]
    \n
    node_id
    \n@@ -3005,17 +3005,17 @@\n static constexpr alert_category_t static_category = alert_category::dht_operation;\n sha1_hash node_id;\n aux::noexcept_movable<udp::endpoint> endpoint;\n time_duration const interval;\n int const num_infohashes;\n };\n \n-\n-[report issue]
    \n-

    num_samples() samples()

    \n+\n+[report issue]
    \n+

    samples() num_samples()

    \n
    \n std::vector<sha1_hash> samples () const;\n int num_samples () const;\n 
    \n

    returns the number of info-hashes returned by the node, as well as the\n actual info-hashes. num_samples() is more efficient than\n samples().size().

    \n@@ -3079,16 +3079,16 @@\n

    this alert is posted to indicate to the client that some alerts were\n dropped. Dropped meaning that the alert failed to be delivered to the\n client. The most common cause of such failure is that the internal alert\n queue grew too big (controlled by alert_queue_size).

    \n
    \n struct alerts_dropped_alert final : alert\n {\n-   std::string message () const override;\n    static_assert (num_alert_types <= abi_alert_count, "need to increase bitset. This is an ABI break");\n+   std::string message () const override;\n \n    static constexpr alert_category_t static_category  = alert_category::error;\n    std::bitset<abi_alert_count> dropped_alerts;\n };\n 
    \n [report issue]
    \n
    dropped_alerts
    \n@@ -3299,16 +3299,16 @@\n
    list of trackers and their status for the torrent
    \n
    \n [report issue]
    \n
    \n

    alert_cast()

    \n

    Declared in "libtorrent/alert.hpp"

    \n
    \n-template <typename T> T* alert_cast (alert* a);\n template <typename T> T const* alert_cast (alert const* a);\n+template <typename T> T* alert_cast (alert* a);\n 
    \n

    When you get an alert, you can use alert_cast<> to attempt to cast the\n pointer to a specific alert type, in order to query it for more\n information.

    \n
    \n

    Note

    \n

    alert_cast<> can only cast to an exact alert type, not a base class

    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -47,15 +47,15 @@\n * _\bp_\bi_\be_\bc_\be_\b__\bf_\bi_\bn_\bi_\bs_\bh_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\br_\be_\bq_\bu_\be_\bs_\bt_\b__\bd_\br_\bo_\bp_\bp_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bb_\bl_\bo_\bc_\bk_\b__\bt_\bi_\bm_\be_\bo_\bu_\bt_\b__\ba_\bl_\be_\br_\bt\n * _\bb_\bl_\bo_\bc_\bk_\b__\bf_\bi_\bn_\bi_\bs_\bh_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bb_\bl_\bo_\bc_\bk_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\bi_\bn_\bg_\b__\ba_\bl_\be_\br_\bt\n * _\bu_\bn_\bw_\ba_\bn_\bt_\be_\bd_\b__\bb_\bl_\bo_\bc_\bk_\b__\ba_\bl_\be_\br_\bt\n * _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bm_\bo_\bv_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n- o _\bo_\bl_\bd_\b__\bp_\ba_\bt_\bh_\b(_\b)_\b _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)\n+ o _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)_\b _\bo_\bl_\bd_\b__\bp_\ba_\bt_\bh_\b(_\b)\n * _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bm_\bo_\bv_\be_\bd_\b__\bf_\ba_\bi_\bl_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n o _\bf_\bi_\bl_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bd_\be_\bl_\be_\bt_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bd_\be_\bl_\be_\bt_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\ba_\bl_\be_\br_\bt\n * _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\bf_\ba_\bi_\bl_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\bu_\bs_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n@@ -120,18 +120,18 @@\n o _\bp_\bk_\bt_\b__\bb_\bu_\bf_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn_\b__\bt\n * _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bp_\be_\be_\br_\bs_\b__\br_\be_\bp_\bl_\by_\b__\ba_\bl_\be_\br_\bt\n * _\bd_\bh_\bt_\b__\bd_\bi_\br_\be_\bc_\bt_\b__\br_\be_\bs_\bp_\bo_\bn_\bs_\be_\b__\ba_\bl_\be_\br_\bt\n * _\bp_\bi_\bc_\bk_\be_\br_\b__\bl_\bo_\bg_\b__\ba_\bl_\be_\br_\bt\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\be_\br_\br_\bo_\br_\b__\ba_\bl_\be_\br_\bt\n * _\bd_\bh_\bt_\b__\bl_\bi_\bv_\be_\b__\bn_\bo_\bd_\be_\bs_\b__\ba_\bl_\be_\br_\bt\n- o _\bn_\bu_\bm_\b__\bn_\bo_\bd_\be_\bs_\b(_\b)_\b _\bn_\bo_\bd_\be_\bs_\b(_\b)\n+ o _\bn_\bo_\bd_\be_\bs_\b(_\b)_\b _\bn_\bu_\bm_\b__\bn_\bo_\bd_\be_\bs_\b(_\b)\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bs_\bt_\ba_\bt_\bs_\b__\bh_\be_\ba_\bd_\be_\br_\b__\ba_\bl_\be_\br_\bt\n * _\bd_\bh_\bt_\b__\bs_\ba_\bm_\bp_\bl_\be_\b__\bi_\bn_\bf_\bo_\bh_\ba_\bs_\bh_\be_\bs_\b__\ba_\bl_\be_\br_\bt\n- o _\bn_\bu_\bm_\b__\bs_\ba_\bm_\bp_\bl_\be_\bs_\b(_\b)_\b _\bs_\ba_\bm_\bp_\bl_\be_\bs_\b(_\b)\n+ o _\bs_\ba_\bm_\bp_\bl_\be_\bs_\b(_\b)_\b _\bn_\bu_\bm_\b__\bs_\ba_\bm_\bp_\bl_\be_\bs_\b(_\b)\n o _\bn_\bu_\bm_\b__\bn_\bo_\bd_\be_\bs_\b(_\b)\n o _\bn_\bo_\bd_\be_\bs_\b(_\b)\n * _\bb_\bl_\bo_\bc_\bk_\b__\bu_\bp_\bl_\bo_\ba_\bd_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\ba_\bl_\be_\br_\bt_\bs_\b__\bd_\br_\bo_\bp_\bp_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bs_\bo_\bc_\bk_\bs_\b5_\b__\ba_\bl_\be_\br_\bt\n * _\bf_\bi_\bl_\be_\b__\bp_\br_\bi_\bo_\b__\ba_\bl_\be_\br_\bt\n * _\bo_\bv_\be_\br_\bs_\bi_\bz_\be_\bd_\b__\bf_\bi_\bl_\be_\b__\ba_\bl_\be_\br_\bt\n@@ -1035,24 +1035,24 @@\n The storage_moved_alert is generated when all the disk IO has completed and the\n files have been moved, as an effect of a call to torrent_handle::move_storage.\n This is useful to synchronize with the actual disk. The storage_path() member\n return the new path of the storage.\n struct storage_moved_alert final : torrent_alert\n {\n std::string m\bme\bes\bss\bsa\bag\bge\be () const override;\n- char const* s\bst\bto\bor\bra\bag\bge\be_\b_p\bpa\bat\bth\bh () const;\n char const* o\bol\bld\bd_\b_p\bpa\bat\bth\bh () const;\n+ char const* s\bst\bto\bor\bra\bag\bge\be_\b_p\bpa\bat\bth\bh () const;\n \n static constexpr alert_category_t s\bst\bta\bat\bti\bic\bc_\b_c\bca\bat\bte\beg\bgo\bor\bry\by = alert_category::\n storage;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bol\bld\bd_\b_p\bpa\bat\bth\bh(\b()\b) s\bst\bto\bor\bra\bag\bge\be_\b_p\bpa\bat\bth\bh(\b()\b) *\b**\b**\b**\b**\b*\n-char const* s\bst\bto\bor\bra\bag\bge\be_\b_p\bpa\bat\bth\bh () const;\n+*\b**\b**\b**\b**\b* s\bst\bto\bor\bra\bag\bge\be_\b_p\bpa\bat\bth\bh(\b()\b) o\bol\bld\bd_\b_p\bpa\bat\bth\bh(\b()\b) *\b**\b**\b**\b**\b*\n char const* o\bol\bld\bd_\b_p\bpa\bat\bth\bh () const;\n+char const* s\bst\bto\bor\bra\bag\bge\be_\b_p\bpa\bat\bth\bh () const;\n the path the torrent was moved to and from, respectively.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bst\bto\bor\bra\bag\bge\be_\b_m\bmo\bov\bve\bed\bd_\b_f\bfa\bai\bil\ble\bed\bd_\b_a\bal\ble\ber\brt\bt *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bl_\be_\br_\bt_\b__\bt_\by_\bp_\be_\bs_\b._\bh_\bp_\bp\"\n The storage_moved_failed_alert is generated when an attempt to move the\n storage, via _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bm_\bo_\bv_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b(_\b), fails.\n struct storage_moved_failed_alert final : torrent_alert\n@@ -2295,15 +2295,15 @@\n std::vector> n\bno\bod\bde\bes\bs () const;\n int n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs () const;\n \n static constexpr alert_category_t s\bst\bta\bat\bti\bic\bc_\b_c\bca\bat\bte\beg\bgo\bor\bry\by = alert_category::dht;\n sha1_hash node_id;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs(\b()\b) n\bno\bod\bde\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* n\bno\bod\bde\bes\bs(\b()\b) n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n std::vector> n\bno\bod\bde\bes\bs () const;\n int n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs () const;\n the number of nodes in the routing table and the actual nodes.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n node_id\n the local DHT node's node-ID this routing table belongs to\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -2339,15 +2339,15 @@\n dht_operation;\n sha1_hash node_id;\n aux::noexcept_movable endpoint;\n time_duration const interval;\n int const num_infohashes;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_s\bsa\bam\bmp\bpl\ble\bes\bs(\b()\b) s\bsa\bam\bmp\bpl\ble\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* s\bsa\bam\bmp\bpl\ble\bes\bs(\b()\b) n\bnu\bum\bm_\b_s\bsa\bam\bmp\bpl\ble\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n std::vector s\bsa\bam\bmp\bpl\ble\bes\bs () const;\n int n\bnu\bum\bm_\b_s\bsa\bam\bmp\bpl\ble\bes\bs () const;\n returns the number of info-hashes returned by the node, as well as the actual\n info-hashes. num_samples() is more efficient than samples().size().\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n int n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs () const;\n@@ -2394,17 +2394,17 @@\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bl_\be_\br_\bt_\b__\bt_\by_\bp_\be_\bs_\b._\bh_\bp_\bp\"\n this _\ba_\bl_\be_\br_\bt is posted to indicate to the client that some alerts were dropped.\n Dropped meaning that the _\ba_\bl_\be_\br_\bt failed to be delivered to the client. The most\n common cause of such failure is that the internal _\ba_\bl_\be_\br_\bt queue grew too big\n (controlled by alert_queue_size).\n struct alerts_dropped_alert final : alert\n {\n- std::string m\bme\bes\bss\bsa\bag\bge\be () const override;\n s\bst\bta\bat\bti\bic\bc_\b_a\bas\bss\bse\ber\brt\bt (num_alert_types <= abi_alert_count, \"need to increase bitset.\n This is an ABI break\");\n+ std::string m\bme\bes\bss\bsa\bag\bge\be () const override;\n \n static constexpr alert_category_t s\bst\bta\bat\bti\bic\bc_\b_c\bca\bat\bte\beg\bgo\bor\bry\by = alert_category::error;\n std::bitset dropped_alerts;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n dropped_alerts\n a bitmask indicating which alerts were dropped. Each bit represents the\n@@ -2574,16 +2574,16 @@\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n trackers\n list of trackers and their status for the torrent\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* a\bal\ble\ber\brt\bt_\b_c\bca\bas\bst\bt(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bl_\be_\br_\bt_\b._\bh_\bp_\bp\"\n-template T* a\bal\ble\ber\brt\bt_\b_c\bca\bas\bst\bt (alert* a);\n template T const* a\bal\ble\ber\brt\bt_\b_c\bca\bas\bst\bt (alert const* a);\n+template T* a\bal\ble\ber\brt\bt_\b_c\bca\bas\bst\bt (alert* a);\n When you get an _\ba_\bl_\be_\br_\bt, you can use alert_cast<> to attempt to cast the pointer\n to a specific _\ba_\bl_\be_\br_\bt type, in order to query it for more information.\n Note\n alert_cast<> can only cast to an exact _\ba_\bl_\be_\br_\bt type, not a base class\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bti\bio\bon\bn_\b_n\bna\bam\bme\be(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bo_\bp_\be_\br_\ba_\bt_\bi_\bo_\bn_\bs_\b._\bh_\bp_\bp\"\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Bdecoding.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Bdecoding.html", "unified_diff": "@@ -30,23 +30,23 @@\n \n

    home

    \n
    \n

    Table of contents

    \n
      \n
    • bdecode_node\n@@ -63,45 +63,45 @@\n non_owning() member function.

      \n

      There are 5 different types of nodes, see type_t.

      \n
      \n struct bdecode_node\n {\n    bdecode_node () = default;\n    bdecode_node& operator= (bdecode_node&&) & = default;\n-   bdecode_node& operator= (bdecode_node const&) &;\n    bdecode_node (bdecode_node const&);\n    bdecode_node (bdecode_node&&) noexcept;\n+   bdecode_node& operator= (bdecode_node const&) &;\n    type_t type () const noexcept;\n    explicit operator bool () const noexcept;\n    bdecode_node non_owning () const;\n    std::ptrdiff_t data_offset () const noexcept;\n    span<char const> data_section () const noexcept;\n    std::int64_t list_int_value_at (int i\n       , std::int64_t default_val = 0) const;\n    int list_size () const;\n    bdecode_node list_at (int i) const;\n    string_view list_string_value_at (int i\n       , string_view default_val = string_view()) const;\n-   std::pair<string_view, bdecode_node> dict_at (int i) const;\n+   std::int64_t dict_find_int_value (string_view key\n+      , std::int64_t default_val = 0) const;\n+   bdecode_node dict_find_int (string_view key) const;\n    string_view dict_find_string_value (string_view key\n       , string_view default_value = string_view()) const;\n    bdecode_node dict_find (string_view key) const;\n-   std::int64_t dict_find_int_value (string_view key\n-      , std::int64_t default_val = 0) const;\n-   bdecode_node dict_find_dict (string_view key) const;\n+   std::pair<string_view, bdecode_node> dict_at (int i) const;\n    bdecode_node dict_find_list (string_view key) const;\n+   bdecode_node dict_find_dict (string_view key) const;\n    std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n    bdecode_node dict_find_string (string_view key) const;\n    int dict_size () const;\n-   bdecode_node dict_find_int (string_view key) const;\n    std::int64_t int_value () const;\n-   int string_length () const;\n+   string_view string_value () const;\n    std::ptrdiff_t string_offset () const;\n    char const* string_ptr () const;\n-   string_view string_value () const;\n+   int string_length () const;\n    void clear ();\n    void swap (bdecode_node& n);\n    void reserve (int tokens);\n    void switch_underlying_buffer (char const* buf) noexcept;\n    bool has_soft_error (span<char> error) const;\n \n    enum type_t\n@@ -116,23 +116,23 @@\n 
      \n [report issue]
      \n

      bdecode_node()

      \n
      \n bdecode_node () = default;\n 
      \n

      creates a default constructed node, it will have the type none_t.

      \n-\n-[report issue]
      \n-
      \n-

      bdecode_node() operator=()

      \n+\n+[report issue]
      \n+
      \n+

      operator=() bdecode_node()

      \n
      \n bdecode_node& operator= (bdecode_node&&) & = default;\n-bdecode_node& operator= (bdecode_node const&) &;\n bdecode_node (bdecode_node const&);\n bdecode_node (bdecode_node&&) noexcept;\n+bdecode_node& operator= (bdecode_node const&) &;\n 
      \n

      For owning nodes, the copy will create a copy of the tree, but the\n underlying buffer remains the same.

      \n [report issue]
      \n
      \n

      type()

      \n
      \n@@ -164,57 +164,57 @@\n 
      \n

      returns the buffer and length of the section in the original bencoded\n buffer where this node is defined. For a dictionary for instance, this\n starts with d and ends with e, and has all the content of the\n dictionary in between.\n the data_offset() function returns the byte-offset to this node in,\n starting from the beginning of the buffer that was parsed.

      \n-\n+\n \n-\n-[report issue]
      \n-
      \n-

      list_at() list_int_value_at() list_string_value_at() list_size()

      \n+\n+[report issue]
      \n+
      \n+

      list_size() list_int_value_at() list_at() list_string_value_at()

      \n
      \n std::int64_t list_int_value_at (int i\n       , std::int64_t default_val = 0) const;\n int list_size () const;\n bdecode_node list_at (int i) const;\n string_view list_string_value_at (int i\n       , string_view default_val = string_view()) const;\n 
      \n

      functions with the list_ prefix operate on lists. These functions are\n only valid if type() == list_t. list_at() returns the item\n in the list at index i. i may not be greater than or equal to the\n size of the list. size() returns the size of the list.

      \n-\n-\n-\n \n+\n+\n+\n+\n \n+\n+\n \n-\n-\n-\n-[report issue]
      \n-
      \n-

      dict_at_node() dict_find_int() dict_find_list() dict_at() dict_find_dict() dict_find_int_value() dict_find_string_value() dict_find_string() dict_find() dict_size()

      \n+[report issue]
      \n+
      \n+

      dict_at() dict_find() dict_find_string() dict_find_string_value() dict_find_int() dict_find_dict() dict_at_node() dict_size() dict_find_int_value() dict_find_list()

      \n
      \n-std::pair<string_view, bdecode_node> dict_at (int i) const;\n+std::int64_t dict_find_int_value (string_view key\n+      , std::int64_t default_val = 0) const;\n+bdecode_node dict_find_int (string_view key) const;\n string_view dict_find_string_value (string_view key\n       , string_view default_value = string_view()) const;\n bdecode_node dict_find (string_view key) const;\n-std::int64_t dict_find_int_value (string_view key\n-      , std::int64_t default_val = 0) const;\n-bdecode_node dict_find_dict (string_view key) const;\n+std::pair<string_view, bdecode_node> dict_at (int i) const;\n bdecode_node dict_find_list (string_view key) const;\n+bdecode_node dict_find_dict (string_view key) const;\n std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n bdecode_node dict_find_string (string_view key) const;\n int dict_size () const;\n-bdecode_node dict_find_int (string_view key) const;\n 
      \n

      Functions with the dict_ prefix operates on dictionaries. They are\n only valid if type() == dict_t. In case a key you're looking up\n contains a 0 byte, you cannot use the 0-terminated string overloads,\n but have to use string_view instead. dict_find_list will return a\n valid bdecode_node if the key is found _and_ it is a list. Otherwise\n it will return a default-constructed bdecode_node.

      \n@@ -229,25 +229,25 @@\n
      \n

      int_value()

      \n
      \n std::int64_t int_value () const;\n 
      \n

      this function is only valid if type() == int_t. It returns the\n value of the integer.

      \n-\n-\n \n-[report issue]
      \n-
      \n-

      string_ptr() string_length() string_value() string_offset()

      \n+\n+\n+[report issue]
      \n+
      \n+

      string_value() string_length() string_offset() string_ptr()

      \n
      \n-int string_length () const;\n+string_view string_value () const;\n std::ptrdiff_t string_offset () const;\n char const* string_ptr () const;\n-string_view string_value () const;\n+int string_length () const;\n 
      \n

      these functions are only valid if type() == string_t. They return\n the string values. Note that string_ptr() is not 0-terminated.\n string_length() returns the number of bytes in the string.\n string_offset() returns the byte offset from the start of the parsed\n bencoded buffer this string can be found.

      \n [report issue]
      \n@@ -345,20 +345,20 @@\n

      print the bencoded structure in a human-readable format to a string\n that's returned.

      \n [report issue]
      \n
      \n

      bdecode()

      \n

      Declared in "libtorrent/bdecode.hpp"

      \n
      \n-int bdecode (char const* start, char const* end, bdecode_node& ret\n+bdecode_node bdecode (span<char const> buffer\n    , error_code& ec, int* error_pos = nullptr, int depth_limit = 100\n    , int token_limit = 2000000);\n bdecode_node bdecode (span<char const> buffer\n    , int depth_limit = 100, int token_limit = 2000000);\n-bdecode_node bdecode (span<char const> buffer\n+int bdecode (char const* start, char const* end, bdecode_node& ret\n    , error_code& ec, int* error_pos = nullptr, int depth_limit = 100\n    , int token_limit = 2000000);\n 
      \n

      This function decodes/parses bdecoded data (for example a .torrent file).\n The data structure is returned in the ret argument. the buffer to parse\n is specified by the start of the buffer as well as the end, i.e. one\n byte past the end. If the buffer fails to parse, the function returns a\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,25 @@\n >\n _\b[_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b _\bl_\bo_\bg_\bo_\b]\n V\bVe\ber\brs\bsi\bio\bon\bn:\b: 2.0.11\n _\bh_\bo_\bm_\be\n Table of contents\n * _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be\n o _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be_\b(_\b)\n- o _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n+ o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be_\b(_\b)\n o _\bt_\by_\bp_\be_\b(_\b)\n o _\bb_\bo_\bo_\bl_\b(_\b)\n o _\bn_\bo_\bn_\b__\bo_\bw_\bn_\bi_\bn_\bg_\b(_\b)\n o _\bd_\ba_\bt_\ba_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)_\b _\bd_\ba_\bt_\ba_\b__\bs_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b)\n- o _\bl_\bi_\bs_\bt_\b__\ba_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\bi_\bn_\bt_\b__\bv_\ba_\bl_\bu_\be_\b__\ba_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b__\ba_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\bs_\bi_\bz_\be_\b(_\b)\n- o _\bd_\bi_\bc_\bt_\b__\ba_\bt_\b__\bn_\bo_\bd_\be_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bi_\bn_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bl_\bi_\bs_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\ba_\bt_\b(_\b)\n- _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bd_\bi_\bc_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bi_\bn_\bt_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)\n- _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bs_\bi_\bz_\be_\b(_\b)\n+ o _\bl_\bi_\bs_\bt_\b__\bs_\bi_\bz_\be_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\bi_\bn_\bt_\b__\bv_\ba_\bl_\bu_\be_\b__\ba_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\ba_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b__\ba_\bt_\b(_\b)\n+ o _\bd_\bi_\bc_\bt_\b__\ba_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)\n+ _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bi_\bn_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bd_\bi_\bc_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\ba_\bt_\b__\bn_\bo_\bd_\be_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bs_\bi_\bz_\be_\b(_\b)\n+ _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bi_\bn_\bt_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bl_\bi_\bs_\bt_\b(_\b)\n o _\bi_\bn_\bt_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)\n- o _\bs_\bt_\br_\bi_\bn_\bg_\b__\bp_\bt_\br_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)\n+ o _\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bp_\bt_\br_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b(_\b)\n o _\bs_\bw_\ba_\bp_\b(_\b)\n o _\br_\be_\bs_\be_\br_\bv_\be_\b(_\b)\n o _\bs_\bw_\bi_\bt_\bc_\bh_\b__\bu_\bn_\bd_\be_\br_\bl_\by_\bi_\bn_\bg_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b)\n o _\bh_\ba_\bs_\b__\bs_\bo_\bf_\bt_\b__\be_\br_\br_\bo_\br_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bt_\by_\bp_\be_\b__\bt\n * _\bp_\br_\bi_\bn_\bt_\b__\be_\bn_\bt_\br_\by_\b(_\b)\n@@ -31,45 +31,45 @@\n able to copy it as a reference for instance). For that, use the _\bn_\bo_\bn_\b__\bo_\bw_\bn_\bi_\bn_\bg_\b(_\b)\n member function.\n There are 5 different types of nodes, see _\bt_\by_\bp_\be_\b__\bt.\n struct bdecode_node\n {\n b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be () = default;\n bdecode_node& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node&&) & = default;\n- bdecode_node& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be (bdecode_node const&);\n b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be (bdecode_node&&) noexcept;\n+ bdecode_node& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n type_t t\bty\byp\bpe\be () const noexcept;\n explicit operator b\bbo\boo\bol\bl () const noexcept;\n bdecode_node n\bno\bon\bn_\b_o\bow\bwn\bni\bin\bng\bg () const;\n std::ptrdiff_t d\bda\bat\bta\ba_\b_o\bof\bff\bfs\bse\bet\bt () const noexcept;\n span d\bda\bat\bta\ba_\b_s\bse\bec\bct\bti\bio\bon\bn () const noexcept;\n std::int64_t l\bli\bis\bst\bt_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt (int i\n , std::int64_t default_val = 0) const;\n int l\bli\bis\bst\bt_\b_s\bsi\biz\bze\be () const;\n bdecode_node l\bli\bis\bst\bt_\b_a\bat\bt (int i) const;\n string_view l\bli\bis\bst\bt_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt (int i\n , string_view default_val = string_view()) const;\n- std::pair d\bdi\bic\bct\bt_\b_a\bat\bt (int i) const;\n+ std::int64_t d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be (string_view key\n+ , std::int64_t default_val = 0) const;\n+ bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt (string_view key) const;\n string_view d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be (string_view key\n , string_view default_value = string_view()) const;\n bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd (string_view key) const;\n- std::int64_t d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be (string_view key\n- , std::int64_t default_val = 0) const;\n- bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt (string_view key) const;\n+ std::pair d\bdi\bic\bct\bt_\b_a\bat\bt (int i) const;\n bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_l\bli\bis\bst\bt (string_view key) const;\n+ bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt (string_view key) const;\n std::pair d\bdi\bic\bct\bt_\b_a\bat\bt_\b_n\bno\bod\bde\be (int i) const;\n bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg (string_view key) const;\n int d\bdi\bic\bct\bt_\b_s\bsi\biz\bze\be () const;\n- bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt (string_view key) const;\n std::int64_t i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be () const;\n- int s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh () const;\n+ string_view s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be () const;\n std::ptrdiff_t s\bst\btr\bri\bin\bng\bg_\b_o\bof\bff\bfs\bse\bet\bt () const;\n char const* s\bst\btr\bri\bin\bng\bg_\b_p\bpt\btr\br () const;\n- string_view s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be () const;\n+ int s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh () const;\n void c\bcl\ble\bea\bar\br ();\n void s\bsw\bwa\bap\bp (bdecode_node& n);\n void r\bre\bes\bse\ber\brv\bve\be (int tokens);\n void s\bsw\bwi\bit\btc\bch\bh_\b_u\bun\bnd\bde\ber\brl\bly\byi\bin\bng\bg_\b_b\bbu\buf\bff\bfe\ber\br (char const* buf) noexcept;\n bool h\bha\bas\bs_\b_s\bso\bof\bft\bt_\b_e\ber\brr\bro\bor\br (span error) const;\n \n enum type_t\n@@ -82,19 +82,19 @@\n };\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be(\b()\b) *\b**\b**\b**\b**\b*\n b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be () = default;\n creates a default constructed node, it will have the type none_t.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be(\b()\b) *\b**\b**\b**\b**\b*\n bdecode_node& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node&&) & = default;\n-bdecode_node& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be (bdecode_node const&);\n b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be (bdecode_node&&) noexcept;\n+bdecode_node& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n For owning nodes, the copy will create a copy of the tree, but the underlying\n buffer remains the same.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bty\byp\bpe\be(\b()\b) *\b**\b**\b**\b**\b*\n type_t t\bty\byp\bpe\be () const noexcept;\n the type of this node. See _\bt_\by_\bp_\be_\b__\bt.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -112,41 +112,41 @@\n span d\bda\bat\bta\ba_\b_s\bse\bec\bct\bti\bio\bon\bn () const noexcept;\n returns the buffer and length of the section in the original bencoded buffer\n where this node is defined. For a dictionary for instance, this starts with d\n and ends with e, and has all the content of the dictionary in between. the\n data_offset() function returns the byte-offset to this node in, starting from\n the beginning of the buffer that was parsed.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* l\bli\bis\bst\bt_\b_a\bat\bt(\b()\b) l\bli\bis\bst\bt_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt(\b()\b) l\bli\bis\bst\bt_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt(\b()\b) l\bli\bis\bst\bt_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* l\bli\bis\bst\bt_\b_s\bsi\biz\bze\be(\b()\b) l\bli\bis\bst\bt_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt(\b()\b) l\bli\bis\bst\bt_\b_a\bat\bt(\b()\b) l\bli\bis\bst\bt_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt(\b()\b) *\b**\b**\b**\b**\b*\n std::int64_t l\bli\bis\bst\bt_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt (int i\n , std::int64_t default_val = 0) const;\n int l\bli\bis\bst\bt_\b_s\bsi\biz\bze\be () const;\n bdecode_node l\bli\bis\bst\bt_\b_a\bat\bt (int i) const;\n string_view l\bli\bis\bst\bt_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt (int i\n , string_view default_val = string_view()) const;\n functions with the list_ prefix operate on lists. These functions are only\n valid if type() == list_t. list_at() returns the item in the list at index i. i\n may not be greater than or equal to the size of the list. size() returns the\n size of the list.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* d\bdi\bic\bct\bt_\b_a\bat\bt_\b_n\bno\bod\bde\be(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_l\bli\bis\bst\bt(\b()\b) d\bdi\bic\bct\bt_\b_a\bat\bt(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt\n-(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd\n-(\b()\b) d\bdi\bic\bct\bt_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n-std::pair d\bdi\bic\bct\bt_\b_a\bat\bt (int i) const;\n+*\b**\b**\b**\b**\b* d\bdi\bic\bct\bt_\b_a\bat\bt(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be(\b()\b)\n+d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt(\b()\b) d\bdi\bic\bct\bt_\b_a\bat\bt_\b_n\bno\bod\bde\be(\b()\b) d\bdi\bic\bct\bt_\b_s\bsi\biz\bze\be(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be\n+(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_l\bli\bis\bst\bt(\b()\b) *\b**\b**\b**\b**\b*\n+std::int64_t d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be (string_view key\n+ , std::int64_t default_val = 0) const;\n+bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt (string_view key) const;\n string_view d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be (string_view key\n , string_view default_value = string_view()) const;\n bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd (string_view key) const;\n-std::int64_t d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be (string_view key\n- , std::int64_t default_val = 0) const;\n-bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt (string_view key) const;\n+std::pair d\bdi\bic\bct\bt_\b_a\bat\bt (int i) const;\n bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_l\bli\bis\bst\bt (string_view key) const;\n+bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt (string_view key) const;\n std::pair d\bdi\bic\bct\bt_\b_a\bat\bt_\b_n\bno\bod\bde\be (int i) const;\n bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg (string_view key) const;\n int d\bdi\bic\bct\bt_\b_s\bsi\biz\bze\be () const;\n-bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt (string_view key) const;\n Functions with the dict_ prefix operates on dictionaries. They are only valid\n if type() == dict_t. In case a key you're looking up contains a 0 byte, you\n cannot use the 0-terminated string overloads, but have to use string_view\n instead. dict_find_list will return a valid bdecode_node if the key is found\n _and_ it is a list. Otherwise it will return a default-constructed\n _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be.\n Functions with the _value suffix return the value of the node directly, rather\n@@ -158,19 +158,19 @@\n string).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be(\b()\b) *\b**\b**\b**\b**\b*\n std::int64_t i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be () const;\n this function is only valid if type() == int_t. It returns the value of the\n integer.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bst\btr\bri\bin\bng\bg_\b_p\bpt\btr\br(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_o\bof\bff\bfs\bse\bet\bt(\b()\b) *\b**\b**\b**\b**\b*\n-int s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh () const;\n+*\b**\b**\b**\b**\b* s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_o\bof\bff\bfs\bse\bet\bt(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_p\bpt\btr\br(\b()\b) *\b**\b**\b**\b**\b*\n+string_view s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be () const;\n std::ptrdiff_t s\bst\btr\bri\bin\bng\bg_\b_o\bof\bff\bfs\bse\bet\bt () const;\n char const* s\bst\btr\bri\bin\bng\bg_\b_p\bpt\btr\br () const;\n-string_view s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be () const;\n+int s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh () const;\n these functions are only valid if type() == string_t. They return the string\n values. Note that string_ptr() is n\bno\bot\bt 0-terminated. string_length() returns the\n number of bytes in the string. string_offset() returns the byte offset from the\n start of the parsed bencoded buffer this string can be found.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br(\b()\b) *\b**\b**\b**\b**\b*\n void c\bcl\ble\bea\bar\br ();\n@@ -214,20 +214,20 @@\n std::string p\bpr\bri\bin\bnt\bt_\b_e\ben\bnt\btr\bry\by (bdecode_node const& e\n , bool single_line = false, int indent = 0);\n print the bencoded structure in a human-readable format to a string that's\n returned.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* b\bbd\bde\bec\bco\bod\bde\be(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bb_\bd_\be_\bc_\bo_\bd_\be_\b._\bh_\bp_\bp\"\n-int b\bbd\bde\bec\bco\bod\bde\be (char const* start, char const* end, bdecode_node& ret\n+bdecode_node b\bbd\bde\bec\bco\bod\bde\be (span buffer\n , error_code& ec, int* error_pos = nullptr, int depth_limit = 100\n , int token_limit = 2000000);\n bdecode_node b\bbd\bde\bec\bco\bod\bde\be (span buffer\n , int depth_limit = 100, int token_limit = 2000000);\n-bdecode_node b\bbd\bde\bec\bco\bod\bde\be (span buffer\n+int b\bbd\bde\bec\bco\bod\bde\be (char const* start, char const* end, bdecode_node& ret\n , error_code& ec, int* error_pos = nullptr, int depth_limit = 100\n , int token_limit = 2000000);\n This function decodes/parses bdecoded data (for example a .torrent file). The\n data structure is returned in the ret argument. the buffer to parse is\n specified by the start of the buffer as well as the end, i.e. one byte past the\n end. If the buffer fails to parse, the function returns a non-zero value and\n fills in ec with the error code. The optional argument error_pos, if set to\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Bencoding.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Bencoding.html", "unified_diff": "@@ -34,15 +34,15 @@\n

        \n
      • entry\n
      • \n@@ -69,46 +69,46 @@\n

        The entry class represents one node in a bencoded hierarchy. It works as a\n variant type, it can be either a list, a dictionary (std::map), an integer\n or a string.

        \n
        \n class entry\n {\n    data_type type () const;\n+   entry (integer_type);\n    entry (dictionary_type);\n    entry (preformatted_type);\n-   entry (integer_type);\n-   entry (span<char const>);\n    entry (list_type);\n+   entry (span<char const>);\n    entry (U v);\n    entry (data_type t);\n    entry (bdecode_node const& n);\n    entry& operator= (entry&&) & noexcept;\n-   entry& operator= (preformatted_type) &;\n+   entry& operator= (list_type) &;\n    entry& operator= (entry const&) &;\n+   entry& operator= (preformatted_type) &;\n+   entry& operator= (dictionary_type) &;\n+   entry& operator= (span<char const>) &;\n    entry& operator= (bdecode_node const&) &;\n    entry& operator= (integer_type) &;\n-   entry& operator= (list_type) &;\n-   entry& operator= (span<char const>) &;\n-   entry& operator= (dictionary_type) &;\n    entry& operator= (U v) &;\n-   dictionary_type const& dict () const;\n+   integer_type& integer ();\n+   string_type const& string () const;\n    string_type& string ();\n+   preformatted_type const& preformatted () const;\n+   preformatted_type& preformatted ();\n    integer_type const& integer () const;\n-   integer_type& integer ();\n+   dictionary_type const& dict () const;\n    list_type const& list () const;\n    dictionary_type& dict ();\n-   preformatted_type const& preformatted () const;\n    list_type& list ();\n-   string_type const& string () const;\n-   preformatted_type& preformatted ();\n    void swap (entry& e);\n-   entry const& operator[] (string_view key) const;\n    entry& operator[] (string_view key);\n-   entry* find_key (string_view key);\n+   entry const& operator[] (string_view key) const;\n    entry const* find_key (string_view key) const;\n+   entry* find_key (string_view key);\n    std::string to_string (bool single_line = false) const;\n \n    enum data_type\n    {\n       int_t,\n       string_t,\n       list_t,\n@@ -124,19 +124,19 @@\n data_type type () const;\n 
        \n

        returns the concrete type of the entry

        \n [report issue]
      \n
      \n

      entry()

      \n
      \n+entry (integer_type);\n entry (dictionary_type);\n entry (preformatted_type);\n-entry (integer_type);\n-entry (span<char const>);\n entry (list_type);\n+entry (span<char const>);\n 
      \n

      constructors directly from a specific type.\n The content of the argument is copied into the\n newly constructed entry

      \n [report issue]
      \n
      \n

      entry()

      \n@@ -153,42 +153,42 @@\n \n

      construct from bdecode_node parsed form (see bdecode())

      \n [report issue]
      \n
      \n

      operator=()

      \n
      \n entry& operator= (entry&&) & noexcept;\n-entry& operator= (preformatted_type) &;\n+entry& operator= (list_type) &;\n entry& operator= (entry const&) &;\n+entry& operator= (preformatted_type) &;\n+entry& operator= (dictionary_type) &;\n+entry& operator= (span<char const>) &;\n entry& operator= (bdecode_node const&) &;\n entry& operator= (integer_type) &;\n-entry& operator= (list_type) &;\n-entry& operator= (span<char const>) &;\n-entry& operator= (dictionary_type) &;\n 
      \n

      copies the structure of the right hand side into this\n entry.

      \n-\n-\n \n \n-[report issue]
      \n-
      \n-

      integer() preformatted() dict() list() string()

      \n+\n+\n+[report issue]
      \n+
      \n+

      dict() list() preformatted() string() integer()

      \n
      \n-dictionary_type const& dict () const;\n+integer_type& integer ();\n+string_type const& string () const;\n string_type& string ();\n+preformatted_type const& preformatted () const;\n+preformatted_type& preformatted ();\n integer_type const& integer () const;\n-integer_type& integer ();\n+dictionary_type const& dict () const;\n list_type const& list () const;\n dictionary_type& dict ();\n-preformatted_type const& preformatted () const;\n list_type& list ();\n-string_type const& string () const;\n-preformatted_type& preformatted ();\n 
      \n

      The integer(), string(), list() and dict() functions\n are accessors that return the respective type. If the entry object\n isn't of the type you request, the accessor will throw\n system_error. You can ask an entry for its type through the\n type() function.

      \n

      If you want to create an entry you give it the type you want it to\n@@ -232,32 +232,32 @@\n void swap (entry& e);\n \n

      swaps the content of this with e.

      \n [report issue]
      \n
      \n

      operator[]()

      \n
      \n-entry const& operator[] (string_view key) const;\n entry& operator[] (string_view key);\n+entry const& operator[] (string_view key) const;\n 
      \n

      All of these functions requires the entry to be a dictionary, if it\n isn't they will throw system_error.

      \n

      The non-const versions of the operator[] will return a reference\n to either the existing element at the given key or, if there is no\n element with the given key, a reference to a newly inserted element at\n that key.

      \n

      The const version of operator[] will only return a reference to an\n existing element at the given key. If the key is not found, it will\n throw system_error.

      \n [report issue]
      \n
      \n

      find_key()

      \n
      \n-entry* find_key (string_view key);\n entry const* find_key (string_view key) const;\n+entry* find_key (string_view key);\n 
      \n

      These functions requires the entry to be a dictionary, if it isn't\n they will throw system_error.

      \n

      They will look for an element at the given key in the dictionary, if\n the element cannot be found, they will return nullptr. If an element\n with the given key is found, the return a pointer to it.

      \n [report issue]
      \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -5,15 +5,15 @@\n Table of contents\n * _\be_\bn_\bt_\br_\by\n o _\bt_\by_\bp_\be_\b(_\b)\n o _\be_\bn_\bt_\br_\by_\b(_\b)\n o _\be_\bn_\bt_\br_\by_\b(_\b)\n o _\be_\bn_\bt_\br_\by_\b(_\b)\n o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n- o _\bi_\bn_\bt_\be_\bg_\be_\br_\b(_\b)_\b _\bp_\br_\be_\bf_\bo_\br_\bm_\ba_\bt_\bt_\be_\bd_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b(_\b)\n+ o _\bd_\bi_\bc_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b(_\b)_\b _\bp_\br_\be_\bf_\bo_\br_\bm_\ba_\bt_\bt_\be_\bd_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b(_\b)_\b _\bi_\bn_\bt_\be_\bg_\be_\br_\b(_\b)\n o _\bs_\bw_\ba_\bp_\b(_\b)\n o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b(_\b)\n o _\bf_\bi_\bn_\bd_\b__\bk_\be_\by_\b(_\b)\n o _\bt_\bo_\b__\bs_\bt_\br_\bi_\bn_\bg_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bd_\ba_\bt_\ba_\b__\bt_\by_\bp_\be\n * _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b(_\b)\n * _\bb_\be_\bn_\bc_\bo_\bd_\be_\b(_\b)\n@@ -35,46 +35,46 @@\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\be_\bn_\bt_\br_\by_\b._\bh_\bp_\bp\"\n The entry class represents one node in a bencoded hierarchy. It works as a\n variant type, it can be either a list, a dictionary (std::map), an integer or a\n string.\n class entry\n {\n data_type t\bty\byp\bpe\be () const;\n+ e\ben\bnt\btr\bry\by (integer_type);\n e\ben\bnt\btr\bry\by (dictionary_type);\n e\ben\bnt\btr\bry\by (preformatted_type);\n- e\ben\bnt\btr\bry\by (integer_type);\n- e\ben\bnt\btr\bry\by (span);\n e\ben\bnt\btr\bry\by (list_type);\n+ e\ben\bnt\btr\bry\by (span);\n e\ben\bnt\btr\bry\by (U v);\n e\ben\bnt\btr\bry\by (data_type t);\n e\ben\bnt\btr\bry\by (bdecode_node const& n);\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry&&) & noexcept;\n- entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (preformatted_type) &;\n+ entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (list_type) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry const&) &;\n+ entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (preformatted_type) &;\n+ entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (dictionary_type) &;\n+ entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (span) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (integer_type) &;\n- entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (list_type) &;\n- entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (span) &;\n- entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (dictionary_type) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (U v) &;\n- dictionary_type const& d\bdi\bic\bct\bt () const;\n+ integer_type& i\bin\bnt\bte\beg\bge\ber\br ();\n+ string_type const& s\bst\btr\bri\bin\bng\bg () const;\n string_type& s\bst\btr\bri\bin\bng\bg ();\n+ preformatted_type const& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd () const;\n+ preformatted_type& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd ();\n integer_type const& i\bin\bnt\bte\beg\bge\ber\br () const;\n- integer_type& i\bin\bnt\bte\beg\bge\ber\br ();\n+ dictionary_type const& d\bdi\bic\bct\bt () const;\n list_type const& l\bli\bis\bst\bt () const;\n dictionary_type& d\bdi\bic\bct\bt ();\n- preformatted_type const& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd () const;\n list_type& l\bli\bis\bst\bt ();\n- string_type const& s\bst\btr\bri\bin\bng\bg () const;\n- preformatted_type& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd ();\n void s\bsw\bwa\bap\bp (entry& e);\n- entry const& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key) const;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key);\n- entry* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key);\n+ entry const& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key) const;\n entry const* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key) const;\n+ entry* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key);\n std::string t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg (bool single_line = false) const;\n \n enum data_type\n {\n int_t,\n string_t,\n list_t,\n@@ -85,52 +85,52 @@\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bty\byp\bpe\be(\b()\b) *\b**\b**\b**\b**\b*\n data_type t\bty\byp\bpe\be () const;\n returns the concrete type of the _\be_\bn_\bt_\br_\by\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnt\btr\bry\by(\b()\b) *\b**\b**\b**\b**\b*\n+e\ben\bnt\btr\bry\by (integer_type);\n e\ben\bnt\btr\bry\by (dictionary_type);\n e\ben\bnt\btr\bry\by (preformatted_type);\n-e\ben\bnt\btr\bry\by (integer_type);\n-e\ben\bnt\btr\bry\by (span);\n e\ben\bnt\btr\bry\by (list_type);\n+e\ben\bnt\btr\bry\by (span);\n constructors directly from a specific type. The content of the argument is\n copied into the newly constructed _\be_\bn_\bt_\br_\by\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnt\btr\bry\by(\b()\b) *\b**\b**\b**\b**\b*\n e\ben\bnt\btr\bry\by (data_type t);\n construct an empty _\be_\bn_\bt_\br_\by of the specified type. see _\bd_\ba_\bt_\ba_\b__\bt_\by_\bp_\be enum.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnt\btr\bry\by(\b()\b) *\b**\b**\b**\b**\b*\n e\ben\bnt\btr\bry\by (bdecode_node const& n);\n construct from _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be parsed form (see _\bb_\bd_\be_\bc_\bo_\bd_\be_\b(_\b))\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry&&) & noexcept;\n-entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (preformatted_type) &;\n+entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (list_type) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry const&) &;\n+entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (preformatted_type) &;\n+entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (dictionary_type) &;\n+entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (span) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (integer_type) &;\n-entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (list_type) &;\n-entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (span) &;\n-entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (dictionary_type) &;\n copies the structure of the right hand side into this _\be_\bn_\bt_\br_\by.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* i\bin\bnt\bte\beg\bge\ber\br(\b()\b) p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd(\b()\b) d\bdi\bic\bct\bt(\b()\b) l\bli\bis\bst\bt(\b()\b) s\bst\btr\bri\bin\bng\bg(\b()\b) *\b**\b**\b**\b**\b*\n-dictionary_type const& d\bdi\bic\bct\bt () const;\n+*\b**\b**\b**\b**\b* d\bdi\bic\bct\bt(\b()\b) l\bli\bis\bst\bt(\b()\b) p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd(\b()\b) s\bst\btr\bri\bin\bng\bg(\b()\b) i\bin\bnt\bte\beg\bge\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n+integer_type& i\bin\bnt\bte\beg\bge\ber\br ();\n+string_type const& s\bst\btr\bri\bin\bng\bg () const;\n string_type& s\bst\btr\bri\bin\bng\bg ();\n+preformatted_type const& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd () const;\n+preformatted_type& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd ();\n integer_type const& i\bin\bnt\bte\beg\bge\ber\br () const;\n-integer_type& i\bin\bnt\bte\beg\bge\ber\br ();\n+dictionary_type const& d\bdi\bic\bct\bt () const;\n list_type const& l\bli\bis\bst\bt () const;\n dictionary_type& d\bdi\bic\bct\bt ();\n-preformatted_type const& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd () const;\n list_type& l\bli\bis\bst\bt ();\n-string_type const& s\bst\btr\bri\bin\bng\bg () const;\n-preformatted_type& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd ();\n The integer(), string(), list() and dict() functions are accessors that return\n the respective type. If the entry object isn't of the type you request, the\n accessor will throw system_error. You can ask an entry for its type through the\n type() function.\n If you want to create an entry you give it the type you want it to have in its\n constructor, and then use one of the non-const accessors to get a reference\n which you then can assign the value you want it to have.\n@@ -161,27 +161,27 @@\n _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo exists.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bsw\bwa\bap\bp(\b()\b) *\b**\b**\b**\b**\b*\n void s\bsw\bwa\bap\bp (entry& e);\n swaps the content of t\bth\bhi\bis\bs with e.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b](\b()\b) *\b**\b**\b**\b**\b*\n-entry const& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key) const;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key);\n+entry const& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key) const;\n All of these functions requires the _\be_\bn_\bt_\br_\by to be a dictionary, if it isn't they\n will throw system_error.\n The non-const versions of the operator[] will return a reference to either the\n existing element at the given key or, if there is no element with the given\n key, a reference to a newly inserted element at that key.\n The const version of operator[] will only return a reference to an existing\n element at the given key. If the key is not found, it will throw system_error.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bin\bnd\bd_\b_k\bke\bey\by(\b()\b) *\b**\b**\b**\b**\b*\n-entry* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key);\n entry const* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key) const;\n+entry* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key);\n These functions requires the _\be_\bn_\bt_\br_\by to be a dictionary, if it isn't they will\n throw system_error.\n They will look for an element at the given key in the dictionary, if the\n element cannot be found, they will return nullptr. If an element with the given\n key is found, the return a pointer to it.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg(\b()\b) *\b**\b**\b**\b**\b*\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Core.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Core.html", "unified_diff": "@@ -45,15 +45,15 @@\n
    \n \n
  • piece_block
  • \n
  • peer_request\n
  • \n-
  • load_torrent_buffer() load_torrent_parsed() load_torrent_file()
  • \n+
  • load_torrent_file() load_torrent_parsed() load_torrent_buffer()
  • \n
  • make_magnet_uri()
  • \n
  • parse_magnet_uri()
  • \n
  • torrent_peer_equal()
  • \n
  • truncate_files()
  • \n
  • version()
  • \n
  • enum socket_type_t
  • \n
  • enum protocol_version
  • \n@@ -565,20 +565,20 @@\n

    Note

    \n

    If has_v2() is false then the v1 hash might actually be a truncated\n v2 hash

    \n
    \n
    \n struct info_hash_t\n {\n-   info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n    explicit info_hash_t (sha1_hash h1) noexcept;\n-   info_hash_t () noexcept = default;\n    explicit info_hash_t (sha256_hash h2) noexcept;\n-   bool has (protocol_version v) const;\n+   info_hash_t () noexcept = default;\n+   info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n    bool has_v1 () const;\n+   bool has (protocol_version v) const;\n    bool has_v2 () const;\n    sha1_hash get (protocol_version v) const;\n    sha1_hash get_best () const;\n    friend bool operator!= (info_hash_t const& lhs, info_hash_t const& rhs);\n    friend bool operator== (info_hash_t const& lhs, info_hash_t const& rhs) noexcept;\n    template <typename F> void for_each (F f) const;\n    bool operator< (info_hash_t const& o) const;\n@@ -587,32 +587,32 @@\n    sha1_hash v1;\n    sha256_hash v2;\n };\n 
    \n [report issue]
    \n

    info_hash_t()

    \n
    \n-info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n explicit info_hash_t (sha1_hash h1) noexcept;\n-info_hash_t () noexcept = default;\n explicit info_hash_t (sha256_hash h2) noexcept;\n+info_hash_t () noexcept = default;\n+info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n 
    \n

    The default constructor creates an object that has neither a v1 or v2\n hash.

    \n

    For backwards compatibility, make it possible to construct directly\n from a v1 hash. This constructor allows implicit conversion from a\n v1 hash, but the implicitness is deprecated.

    \n \n \n [report issue]
    \n
    \n

    has_v1() has_v2() has()

    \n
    \n-bool has (protocol_version v) const;\n bool has_v1 () const;\n+bool has (protocol_version v) const;\n bool has_v2 () const;\n 
    \n

    returns true if the corresponding info hash is present in this\n object.

    \n [report issue]
    \n
    \n

    get()

    \n@@ -643,16 +643,16 @@\n
    \n
    \n

    piece_block

    \n

    Declared in "libtorrent/piece_block.hpp"

    \n
    \n struct piece_block\n {\n-   piece_block () = default;\n    piece_block (piece_index_t p_index, int b_index);\n+   piece_block () = default;\n    bool operator< (piece_block const& b) const;\n    bool operator== (piece_block const& b) const;\n    bool operator!= (piece_block const& b) const;\n \n    static const piece_block invalid;\n    piece_index_t piece_index {0};\n    int block_index  = 0;\n@@ -689,34 +689,34 @@\n 
    start
    \n
    The byte offset within that piece where the range starts.
    \n
    \n [report issue]
    \n
    length
    \n
    The size of the range, in bytes.
    \n
    \n-\n+\n \n-[report issue]
    \n+[report issue]
    \n
    \n-
    \n-

    load_torrent_buffer() load_torrent_parsed() load_torrent_file()

    \n+
    \n+

    load_torrent_file() load_torrent_parsed() load_torrent_buffer()

    \n

    Declared in "libtorrent/load_torrent.hpp"

    \n
    \n-add_torrent_params load_torrent_parsed (\n-   bdecode_node const& torrent_file);\n-add_torrent_params load_torrent_parsed (\n-   bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n-add_torrent_params load_torrent_file (\n-   std::string const& filename, load_torrent_limits const& cfg);\n add_torrent_params load_torrent_file (\n    std::string const& filename);\n+add_torrent_params load_torrent_parsed (\n+   bdecode_node const& torrent_file);\n add_torrent_params load_torrent_buffer (\n    span<char const> buffer, load_torrent_limits const& cfg);\n+add_torrent_params load_torrent_parsed (\n+   bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n add_torrent_params load_torrent_buffer (\n    span<char const> buffer);\n+add_torrent_params load_torrent_file (\n+   std::string const& filename, load_torrent_limits const& cfg);\n 
    \n

    These functions load the content of a .torrent file into an\n add_torrent_params object.\n The immutable part of a torrent file (the info-dictionary) is stored in\n the ti field in the add_torrent_params object (as a torrent_info\n object).\n The returned object is suitable to be:

    \n@@ -729,16 +729,16 @@\n \n [report issue]
    \n
    \n

    make_magnet_uri()

    \n

    Declared in "libtorrent/magnet_uri.hpp"

    \n
    \n std::string make_magnet_uri (add_torrent_params const& atp);\n-std::string make_magnet_uri (torrent_info const& info);\n std::string make_magnet_uri (torrent_handle const& handle);\n+std::string make_magnet_uri (torrent_info const& info);\n 
    \n

    Generates a magnet URI from the specified torrent.

    \n

    Several fields from the add_torrent_params objects are recorded in the\n magnet link. In order to not include them, they have to be cleared before\n calling make_magnet_uri(). These fields are used:

    \n
    \n ti, info_hashes, url_seeds, dht_nodes,\n@@ -758,17 +758,17 @@\n an empty string is returned.

    \n

    For more information about magnet links, see magnet links.

    \n [report issue]
    \n
    \n

    parse_magnet_uri()

    \n

    Declared in "libtorrent/magnet_uri.hpp"

    \n
    \n-void parse_magnet_uri (string_view uri, add_torrent_params& p, error_code& ec);\n add_torrent_params parse_magnet_uri (string_view uri);\n add_torrent_params parse_magnet_uri (string_view uri, error_code& ec);\n+void parse_magnet_uri (string_view uri, add_torrent_params& p, error_code& ec);\n 
    \n

    This function parses out information from the magnet link and populates the\n add_torrent_params object. The overload that does not take an\n error_code reference will throw a system_error on error\n The overload taking an add_torrent_params reference will fill in the\n fields specified in the magnet URI.

    \n [report issue]
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -10,15 +10,15 @@\n o _\bh_\ba_\bs_\b__\bv_\b1_\b(_\b)_\b _\bh_\ba_\bs_\b__\bv_\b2_\b(_\b)_\b _\bh_\ba_\bs_\b(_\b)\n o _\bg_\be_\bt_\b(_\b)\n o _\bg_\be_\bt_\b__\bb_\be_\bs_\bt_\b(_\b)\n o _\bf_\bo_\br_\b__\be_\ba_\bc_\bh_\b(_\b)\n * _\bp_\bi_\be_\bc_\be_\b__\bb_\bl_\bo_\bc_\bk\n * _\bp_\be_\be_\br_\b__\br_\be_\bq_\bu_\be_\bs_\bt\n o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b(_\b)\n- * _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b)_\b _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\bs_\be_\bd_\b(_\b)_\b _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)\n+ * _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)_\b _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\bs_\be_\bd_\b(_\b)_\b _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b)\n * _\bm_\ba_\bk_\be_\b__\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b(_\b)\n * _\bp_\ba_\br_\bs_\be_\b__\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b(_\b)\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\be_\be_\br_\b__\be_\bq_\bu_\ba_\bl_\b(_\b)\n * _\bt_\br_\bu_\bn_\bc_\ba_\bt_\be_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n * _\bv_\be_\br_\bs_\bi_\bo_\bn_\b(_\b)\n * _\be_\bn_\bu_\bm_\b _\bs_\bo_\bc_\bk_\be_\bt_\b__\bt_\by_\bp_\be_\b__\bt\n * _\be_\bn_\bu_\bm_\b _\bp_\br_\bo_\bt_\bo_\bc_\bo_\bl_\b__\bv_\be_\br_\bs_\bi_\bo_\bn\n@@ -413,20 +413,20 @@\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\b._\bh_\bp_\bp\"\n class holding the info-hash of a torrent. It can hold a v1 info-hash (SHA-1) or\n a v2 info-hash (SHA-256) or both.\n Note\n If has_v2() is false then the v1 hash might actually be a truncated v2 hash\n struct info_hash_t\n {\n- i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1, sha256_hash h2) noexcept;\n explicit i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1) noexcept;\n- i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt () noexcept = default;\n explicit i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha256_hash h2) noexcept;\n- bool h\bha\bas\bs (protocol_version v) const;\n+ i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt () noexcept = default;\n+ i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1, sha256_hash h2) noexcept;\n bool h\bha\bas\bs_\b_v\bv1\b1 () const;\n+ bool h\bha\bas\bs (protocol_version v) const;\n bool h\bha\bas\bs_\b_v\bv2\b2 () const;\n sha1_hash g\bge\bet\bt (protocol_version v) const;\n sha1_hash g\bge\bet\bt_\b_b\bbe\bes\bst\bt () const;\n friend bool o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (info_hash_t const& lhs, info_hash_t const& rhs);\n friend bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (info_hash_t const& lhs, info_hash_t const& rhs)\n noexcept;\n template void f\bfo\bor\br_\b_e\bea\bac\bch\bh (F f) const;\n@@ -434,26 +434,26 @@\n friend std::ostream& o\bop\bpe\ber\bra\bat\bto\bor\br<\b<<\b< (std::ostream& os, info_hash_t const& ih);\n \n sha1_hash v1;\n sha256_hash v2;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt(\b()\b) *\b**\b**\b**\b**\b*\n-i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1, sha256_hash h2) noexcept;\n explicit i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1) noexcept;\n-i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt () noexcept = default;\n explicit i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha256_hash h2) noexcept;\n+i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt () noexcept = default;\n+i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1, sha256_hash h2) noexcept;\n The default constructor creates an object that has neither a v1 or v2 hash.\n For backwards compatibility, make it possible to construct directly from a v1\n hash. This constructor allows i\bim\bmp\bpl\bli\bic\bci\bit\bt conversion from a v1 hash, but the\n implicitness is deprecated.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* h\bha\bas\bs_\b_v\bv1\b1(\b()\b) h\bha\bas\bs_\b_v\bv2\b2(\b()\b) h\bha\bas\bs(\b()\b) *\b**\b**\b**\b**\b*\n-bool h\bha\bas\bs (protocol_version v) const;\n bool h\bha\bas\bs_\b_v\bv1\b1 () const;\n+bool h\bha\bas\bs (protocol_version v) const;\n bool h\bha\bas\bs_\b_v\bv2\b2 () const;\n returns true if the corresponding info hash is present in this object.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* g\bge\bet\bt(\b()\b) *\b**\b**\b**\b**\b*\n sha1_hash g\bge\bet\bt (protocol_version v) const;\n returns the has for the specified protocol version\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -468,16 +468,16 @@\n The signature of F is:\n void(sha1_hash const&, protocol_version);\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_b\bbl\blo\boc\bck\bk *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bp_\bi_\be_\bc_\be_\b__\bb_\bl_\bo_\bc_\bk_\b._\bh_\bp_\bp\"\n struct piece_block\n {\n- p\bpi\bie\bec\bce\be_\b_b\bbl\blo\boc\bck\bk () = default;\n p\bpi\bie\bec\bce\be_\b_b\bbl\blo\boc\bck\bk (piece_index_t p_index, int b_index);\n+ p\bpi\bie\bec\bce\be_\b_b\bbl\blo\boc\bck\bk () = default;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br<\b< (piece_block const& b) const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (piece_block const& b) const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (piece_block const& b) const;\n \n static const piece_block invalid;\n piece_index_t piece_index {0};\n int b\bbl\blo\boc\bck\bk_\b_i\bin\bnd\bde\bex\bx = 0;\n@@ -506,41 +506,41 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n start\n The byte offset within that piece where the range starts.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n length\n The size of the range, in bytes.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b**\b* l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_b\bbu\buf\bff\bfe\ber\br(\b()\b) l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd(\b()\b) l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be(\b()\b) *\b**\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b**\b* l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be(\b()\b) l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd(\b()\b) l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_b\bbu\buf\bff\bfe\ber\br(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b._\bh_\bp_\bp\"\n-add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd (\n- bdecode_node const& torrent_file);\n-add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd (\n- bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n-add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (\n- std::string const& filename, load_torrent_limits const& cfg);\n add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (\n std::string const& filename);\n+add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd (\n+ bdecode_node const& torrent_file);\n add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_b\bbu\buf\bff\bfe\ber\br (\n span buffer, load_torrent_limits const& cfg);\n+add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd (\n+ bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_b\bbu\buf\bff\bfe\ber\br (\n span buffer);\n+add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (\n+ std::string const& filename, load_torrent_limits const& cfg);\n These functions load the content of a .torrent file into an _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs\n object. The immutable part of a torrent file (the info-dictionary) is stored in\n the ti field in the _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs object (as a _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object). The\n returned object is suitable to be:\n * added to a _\bs_\be_\bs_\bs_\bi_\bo_\bn via _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b) or _\ba_\bs_\by_\bn_\bc_\b__\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n * saved as a .torrent_file via _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)\n * turned into a magnet link via _\bm_\ba_\bk_\be_\b__\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b(_\b)\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b._\bh_\bp_\bp\"\n std::string m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (add_torrent_params const& atp);\n-std::string m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (torrent_info const& info);\n std::string m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (torrent_handle const& handle);\n+std::string m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (torrent_info const& info);\n Generates a magnet URI from the specified torrent.\n Several fields from the _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs objects are recorded in the magnet\n link. In order to not include them, they have to be cleared before calling\n _\bm_\ba_\bk_\be_\b__\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b(_\b). These fields are used:\n ti, info_hashes, url_seeds, dht_nodes, file_priorities, trackers,\n name, peers.\n Depending on what the use case for the resulting magnet link is, clearing peers\n@@ -555,17 +555,17 @@\n The overload that takes a _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be will make blocking calls to query\n information about the torrent. If the torrent handle is invalid, an empty\n string is returned.\n For more information about magnet links, see _\bm_\ba_\bg_\bn_\be_\bt_\b _\bl_\bi_\bn_\bk_\bs.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* p\bpa\bar\brs\bse\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b._\bh_\bp_\bp\"\n-void p\bpa\bar\brs\bse\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (string_view uri, add_torrent_params& p, error_code& ec);\n add_torrent_params p\bpa\bar\brs\bse\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (string_view uri);\n add_torrent_params p\bpa\bar\brs\bse\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (string_view uri, error_code& ec);\n+void p\bpa\bar\brs\bse\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (string_view uri, add_torrent_params& p, error_code& ec);\n This function parses out information from the magnet link and populates the\n _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs object. The overload that does not take an error_code\n reference will throw a system_error on error The overload taking an\n add_torrent_params reference will fill in the fields specified in the magnet\n URI.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpe\bee\ber\br_\b_e\beq\bqu\bua\bal\bl(\b()\b) *\b**\b**\b**\b**\b**\b*\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Create_Torrents.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Create_Torrents.html", "unified_diff": "@@ -30,33 +30,33 @@\n \n

    home

    \n \n

    This section describes the functions and classes that are used\n@@ -108,29 +108,29 @@\n .torrent file using bencode().

    \n
    \n struct create_torrent\n {\n    explicit create_torrent (torrent_info const& ti);\n    explicit create_torrent (file_storage& fs, int piece_size = 0\n       , create_flags_t flags = {});\n-   entry generate () const;\n    std::vector<char> generate_buf () const;\n+   entry generate () const;\n    file_storage const& files () const;\n    void set_comment (char const* str);\n    void set_creator (char const* str);\n    void set_creation_date (std::time_t timestamp);\n    void set_hash (piece_index_t index, sha1_hash const& h);\n    void set_hash2 (file_index_t file, piece_index_t::diff_type piece, sha256_hash const& h);\n    void add_url_seed (string_view url);\n    void add_http_seed (string_view url);\n    void add_node (std::pair<std::string, int> node);\n    void add_tracker (string_view url, int tier = 0);\n    void set_root_cert (string_view cert);\n-   void set_priv (bool p);\n    bool priv () const;\n+   void set_priv (bool p);\n    bool is_v1_only () const;\n    bool is_v2_only () const;\n    int num_pieces () const;\n    piece_index_t end_piece () const;\n    index_range<piece_index_t> piece_range () const noexcept;\n    file_index_t end_file () const;\n    index_range<file_index_t> file_range () const noexcept;\n@@ -175,21 +175,21 @@\n have any affect. Instead of using this overload, consider using\n write_torrent_file() instead.

    \n
    \n

    Warning

    \n

    The file_storage and torrent_info objects must stay alive for the\n entire duration of the create_torrent object.

    \n
    \n-\n-[report issue]
    \n-
    \n-

    generate_buf() generate()

    \n+\n+[report issue]
    \n+
    \n+

    generate() generate_buf()

    \n
    \n-entry generate () const;\n std::vector<char> generate_buf () const;\n+entry generate () const;\n 
    \n

    This function will generate the .torrent file as a bencode tree, or a\n bencoded into a buffer.\n In order to encode the entry into a flat file, use the bencode() function.

    \n

    The function returning an entry may be useful to add custom entries\n to the torrent file before bencoding it and saving it to disk.

    \n

    Whether the resulting torrent object is v1, v2 or hybrid depends on\n@@ -272,18 +272,18 @@\n 16 kiB blocks. Note that piece sizes must be powers-of-2, so all\n per-piece merkle trees are complete.\n A SHA-256 hash of all zeros is internally used to indicate a hash\n that has not been set. Setting such hash will not be considered set\n when calling generate().\n This function will throw std::system_error if it is called on an\n object constructed with the v1_only flag.

    \n-\n-[report issue]
    \n-
    \n-

    add_http_seed() add_url_seed()

    \n+\n+[report issue]
    \n+
    \n+

    add_url_seed() add_http_seed()

    \n
    \n void add_url_seed (string_view url);\n void add_http_seed (string_view url);\n 
    \n

    This adds a url seed to the torrent. You can have any number of url seeds. For a\n single file torrent, this should be an HTTP url, pointing to a file with identical\n content as the file of the torrent. For a multi-file torrent, it should point to\n@@ -320,21 +320,21 @@\n \n

    This function sets an X.509 certificate in PEM format to the torrent. This makes the\n torrent an SSL torrent. An SSL torrent requires that each peer has a valid certificate\n signed by this root certificate. For SSL torrents, all peers are connecting over SSL\n connections. For more information, see the section on ssl torrents.

    \n

    The string is not the path to the cert, it's the actual content of the\n certificate.

    \n-\n-[report issue]
    \n-
    \n-

    set_priv() priv()

    \n+\n+[report issue]
    \n+
    \n+

    priv() set_priv()

    \n
    \n-void set_priv (bool p);\n bool priv () const;\n+void set_priv (bool p);\n 
    \n

    Sets and queries the private flag of the torrent.\n Torrents with the private flag set ask the client to not use any other\n sources than the tracker for peers, and to not use DHT to advertise itself publicly,\n only the tracker.

    \n [report issue]
    \n
    \n@@ -369,29 +369,29 @@\n [report issue]
    \n
    \n

    total_size()

    \n
    \n std::int64_t total_size () const;\n 
    \n

    the total number of bytes of all files and pad files

    \n-\n-[report issue]
    \n-
    \n-

    piece_size() piece_length()

    \n+\n+[report issue]
    \n+
    \n+

    piece_length() piece_size()

    \n
    \n int piece_size (piece_index_t i) const;\n int piece_length () const;\n 
    \n

    piece_length() returns the piece size of all pieces but the\n last one. piece_size() returns the size of the specified piece.\n these functions are just forwarding to the associated file_storage.

    \n-\n-[report issue]
    \n-
    \n-

    add_collection() add_similar_torrent()

    \n+\n+[report issue]
    \n+
    \n+

    add_similar_torrent() add_collection()

    \n
    \n void add_similar_torrent (sha1_hash ih);\n void add_collection (string_view c);\n 
    \n

    Add similar torrents (by info-hash) or collections of similar torrents.\n Similar torrents are expected to share some files with this torrent.\n Torrents sharing a collection name with this torrent are also expected\n@@ -459,17 +459,17 @@\n [report issue]

    \n
    \n
    \n

    add_files()

    \n

    Declared in "libtorrent/create_torrent.hpp"

    \n
    \n void add_files (file_storage& fs, std::string const& file\n-   , create_flags_t flags = {});\n-void add_files (file_storage& fs, std::string const& file\n    , std::function<bool(std::string)> p, create_flags_t flags = {});\n+void add_files (file_storage& fs, std::string const& file\n+   , create_flags_t flags = {});\n 
    \n

    Adds the file specified by path to the file_storage object. In case path\n refers to a directory, files will be added recursively from the directory.

    \n

    If specified, the predicate p is called once for every file and directory that\n is encountered. Files for which p returns true are added, and directories for\n which p returns true are traversed. p must have the following signature:

    \n
    \n@@ -482,29 +482,29 @@\n 

    The flags argument should be the same as the flags passed to the create_torrent\n constructor.

    \n [report issue]
    \n
    \n

    set_piece_hashes()

    \n

    Declared in "libtorrent/create_torrent.hpp"

    \n
    \n+inline void set_piece_hashes (create_torrent& t, std::string const& p, error_code& ec);\n void set_piece_hashes (create_torrent& t, std::string const& p\n    , settings_interface const& settings, disk_io_constructor_type disk_io\n    , std::function<void(piece_index_t)> const& f, error_code& ec);\n-inline void set_piece_hashes (create_torrent& t, std::string const& p, error_code& ec);\n-inline void set_piece_hashes (create_torrent& t, std::string const& p\n-   , settings_interface const& settings\n-   , std::function<void(piece_index_t)> const& f);\n inline void set_piece_hashes (create_torrent& t, std::string const& p\n    , std::function<void(piece_index_t)> const& f);\n-inline void set_piece_hashes (create_torrent& t, std::string const& p);\n void set_piece_hashes (create_torrent& t, std::string const& p\n    , std::function<void(piece_index_t)> const& f, error_code& ec);\n void set_piece_hashes (create_torrent& t, std::string const& p\n    , settings_interface const& settings\n    , std::function<void(piece_index_t)> const& f, error_code& ec);\n+inline void set_piece_hashes (create_torrent& t, std::string const& p);\n+inline void set_piece_hashes (create_torrent& t, std::string const& p\n+   , settings_interface const& settings\n+   , std::function<void(piece_index_t)> const& f);\n 
    \n

    This function will assume that the files added to the torrent file exists at path\n p, read those files and hash the content and set the hashes in the create_torrent\n object. The optional function f is called in between every hash that is set. f\n must have the following signature:

    \n
    \n void Fun(piece_index_t);\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,33 +1,33 @@\n >\n _\b[_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b _\bl_\bo_\bg_\bo_\b]\n V\bVe\ber\brs\bsi\bio\bon\bn:\b: 2.0.11\n _\bh_\bo_\bm_\be\n Table of contents\n     * _\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt\n           o _\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n-          o _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b__\bb_\bu_\bf_\b(_\b)_\b _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b(_\b)\n+          o _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b(_\b)_\b _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b__\bb_\bu_\bf_\b(_\b)\n           o _\bf_\bi_\bl_\be_\bs_\b(_\b)\n           o _\bs_\be_\bt_\b__\bc_\bo_\bm_\bm_\be_\bn_\bt_\b(_\b)\n           o _\bs_\be_\bt_\b__\bc_\br_\be_\ba_\bt_\bo_\br_\b(_\b)\n           o _\bs_\be_\bt_\b__\bc_\br_\be_\ba_\bt_\bi_\bo_\bn_\b__\bd_\ba_\bt_\be_\b(_\b)\n           o _\bs_\be_\bt_\b__\bh_\ba_\bs_\bh_\b(_\b)\n           o _\bs_\be_\bt_\b__\bh_\ba_\bs_\bh_\b2_\b(_\b)\n-          o _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)\n+          o _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)\n           o _\ba_\bd_\bd_\b__\bn_\bo_\bd_\be_\b(_\b)\n           o _\ba_\bd_\bd_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)\n           o _\bs_\be_\bt_\b__\br_\bo_\bo_\bt_\b__\bc_\be_\br_\bt_\b(_\b)\n-          o _\bs_\be_\bt_\b__\bp_\br_\bi_\bv_\b(_\b)_\b _\bp_\br_\bi_\bv_\b(_\b)\n+          o _\bp_\br_\bi_\bv_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\br_\bi_\bv_\b(_\b)\n           o _\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)\n           o _\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n           o _\bf_\bi_\bl_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n           o _\bf_\bi_\bl_\be_\b__\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n           o _\bt_\bo_\bt_\ba_\bl_\b__\bs_\bi_\bz_\be_\b(_\b)\n-          o _\bp_\bi_\be_\bc_\be_\b__\bs_\bi_\bz_\be_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)\n-          o _\ba_\bd_\bd_\b__\bc_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b)_\b _\ba_\bd_\bd_\b__\bs_\bi_\bm_\bi_\bl_\ba_\br_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n+          o _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\bs_\bi_\bz_\be_\b(_\b)\n+          o _\ba_\bd_\bd_\b__\bs_\bi_\bm_\bi_\bl_\ba_\br_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)_\b _\ba_\bd_\bd_\b__\bc_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b)\n     * _\ba_\bd_\bd_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n     * _\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)\n This section describes the functions and classes that are used to create\n torrent files. It is a layered API with low level classes and higher level\n convenience functions. A torrent is created in 4 steps:\n    1. first the files that will be part of the torrent are determined.\n    2. the torrent properties are set, such as tracker url, web seeds, DHT nodes\n@@ -69,30 +69,30 @@\n _\be_\bn_\bt_\br_\by that's returned can then be bencoded into a .torrent file using _\bb_\be_\bn_\bc_\bo_\bd_\be\n _\b(_\b).\n struct create_torrent\n {\n    explicit c\bcr\bre\bea\bat\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt (torrent_info const& ti);\n    explicit c\bcr\bre\bea\bat\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt (file_storage& fs, int piece_size = 0\n       , create_flags_t flags = {});\n-   entry g\bge\ben\bne\ber\bra\bat\bte\be () const;\n    std::vector g\bge\ben\bne\ber\bra\bat\bte\be_\b_b\bbu\buf\bf () const;\n+   entry g\bge\ben\bne\ber\bra\bat\bte\be () const;\n    file_storage const& f\bfi\bil\ble\bes\bs () const;\n    void s\bse\bet\bt_\b_c\bco\bom\bmm\bme\ben\bnt\bt (char const* str);\n    void s\bse\bet\bt_\b_c\bcr\bre\bea\bat\bto\bor\br (char const* str);\n    void s\bse\bet\bt_\b_c\bcr\bre\bea\bat\bti\bio\bon\bn_\b_d\bda\bat\bte\be (std::time_t timestamp);\n    void s\bse\bet\bt_\b_h\bha\bas\bsh\bh (piece_index_t index, sha1_hash const& h);\n    void s\bse\bet\bt_\b_h\bha\bas\bsh\bh2\b2 (file_index_t file, piece_index_t::diff_type piece,\n sha256_hash const& h);\n    void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (string_view url);\n    void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (string_view url);\n    void a\bad\bdd\bd_\b_n\bno\bod\bde\be (std::pair node);\n    void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (string_view url, int tier = 0);\n    void s\bse\bet\bt_\b_r\bro\boo\bot\bt_\b_c\bce\ber\brt\bt (string_view cert);\n-   void s\bse\bet\bt_\b_p\bpr\bri\biv\bv (bool p);\n    bool p\bpr\bri\biv\bv () const;\n+   void s\bse\bet\bt_\b_p\bpr\bri\biv\bv (bool p);\n    bool i\bis\bs_\b_v\bv1\b1_\b_o\bon\bnl\bly\by () const;\n    bool i\bis\bs_\b_v\bv2\b2_\b_o\bon\bnl\bly\by () const;\n    int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n    piece_index_t e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be () const;\n    index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const noexcept;\n    file_index_t e\ben\bnd\bd_\b_f\bfi\bil\ble\be () const;\n    index_range f\bfi\bil\ble\be_\b_r\bra\ban\bng\bge\be () const noexcept;\n@@ -131,17 +131,17 @@\n functions of _\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt that affects the content of the info dictionary\n (such as _\bs_\be_\bt_\b__\bh_\ba_\bs_\bh_\b(_\b)), will have any affect. Instead of using this overload,\n consider using _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b) instead.\n Warning\n The _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be and _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo objects must stay alive for the entire\n duration of the _\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt object.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* g\bge\ben\bne\ber\bra\bat\bte\be_\b_b\bbu\buf\bf(\b()\b) g\bge\ben\bne\ber\bra\bat\bte\be(\b()\b) *\b**\b**\b**\b**\b*\n-entry g\bge\ben\bne\ber\bra\bat\bte\be () const;\n+*\b**\b**\b**\b**\b* g\bge\ben\bne\ber\bra\bat\bte\be(\b()\b) g\bge\ben\bne\ber\bra\bat\bte\be_\b_b\bbu\buf\bf(\b()\b) *\b**\b**\b**\b**\b*\n std::vector g\bge\ben\bne\ber\bra\bat\bte\be_\b_b\bbu\buf\bf () const;\n+entry g\bge\ben\bne\ber\bra\bat\bte\be () const;\n This function will generate the .torrent file as a bencode tree, or a bencoded\n into a buffer. In order to encode the _\be_\bn_\bt_\br_\by into a flat file, use the _\bb_\be_\bn_\bc_\bo_\bd_\be_\b(_\b)\n function.\n The function returning an _\be_\bn_\bt_\br_\by may be useful to add custom entries to the\n torrent file before bencoding it and saving it to disk.\n Whether the resulting torrent object is v1, v2 or hybrid depends on whether any\n of the v1_only or v2_only flags were set on the constructor. If neither were\n@@ -198,15 +198,15 @@\n the merkle tree formed by the piece's 16 kiB blocks. Note that piece sizes must\n be powers-of-2, so all per-piece merkle trees are complete. A SHA-256 hash of\n all zeros is internally used to indicate a hash that has not been set. Setting\n such hash will not be considered set when calling _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b(_\b). This function\n will throw std::system_error if it is called on an object constructed with the\n v1_only flag.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (string_view url);\n void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (string_view url);\n This adds a url seed to the torrent. You can have any number of url seeds. For\n a single file torrent, this should be an HTTP url, pointing to a file with\n identical content as the file of the torrent. For a multi-file torrent, it\n should point to a directory containing a directory with the same name as this\n torrent, and all the files of the torrent in it.\n@@ -235,17 +235,17 @@\n makes the torrent an S\bSS\bSL\bL t\bto\bor\brr\bre\ben\bnt\bt. An SSL torrent requires that each peer has a\n valid certificate signed by this root certificate. For SSL torrents, all peers\n are connecting over SSL connections. For more information, see the section on\n _\bs_\bs_\bl_\b _\bt_\bo_\br_\br_\be_\bn_\bt_\bs.\n The string is not the path to the cert, it's the actual content of the\n certificate.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpr\bri\biv\bv(\b()\b) p\bpr\bri\biv\bv(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_p\bpr\bri\biv\bv (bool p);\n+*\b**\b**\b**\b**\b* p\bpr\bri\biv\bv(\b()\b) s\bse\bet\bt_\b_p\bpr\bri\biv\bv(\b()\b) *\b**\b**\b**\b**\b*\n bool p\bpr\bri\biv\bv () const;\n+void s\bse\bet\bt_\b_p\bpr\bri\biv\bv (bool p);\n Sets and queries the private flag of the torrent. Torrents with the private\n flag set ask the client to not use any other sources than the tracker for\n peers, and to not use DHT to advertise itself publicly, only the tracker.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n returns the number of pieces in the associated _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be object.\n@@ -263,22 +263,22 @@\n for v2 and hybrid torrents only, the pieces in the specified file, specified as\n delta from the first piece in the file. i.e. the first index is 0.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n std::int64_t t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be () const;\n the total number of bytes of all files and pad files\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be(\b()\b) p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n int p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be (piece_index_t i) const;\n int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n piece_length() returns the piece size of all pieces but the last one.\n piece_size() returns the size of the specified piece. these functions are just\n forwarding to the associated _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bn(\b()\b) a\bad\bdd\bd_\b_s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) a\bad\bdd\bd_\b_c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bn(\b()\b) *\b**\b**\b**\b**\b*\n void a\bad\bdd\bd_\b_s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bt (sha1_hash ih);\n void a\bad\bdd\bd_\b_c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bn (string_view c);\n Add similar torrents (by info-hash) or collections of similar torrents. Similar\n torrents are expected to share some files with this torrent. Torrents sharing a\n collection name with this torrent are also expected to share files with this\n torrent. A torrent may have more than one collection and more than one similar\n torrents. For more information, see _\bB_\bE_\bP_\b _\b3_\b8.\n@@ -330,17 +330,17 @@\n       behavior deviates from the specification but was the way libtorrent\n       created torrents in version up to and including 2.0.7. This flag is here\n       for backwards compatibility.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_f\bfi\bil\ble\bes\bs(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b._\bh_\bp_\bp\"\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\bes\bs (file_storage& fs, std::string const& file\n-   , create_flags_t flags = {});\n-void a\bad\bdd\bd_\b_f\bfi\bil\ble\bes\bs (file_storage& fs, std::string const& file\n    , std::function p, create_flags_t flags = {});\n+void a\bad\bdd\bd_\b_f\bfi\bil\ble\bes\bs (file_storage& fs, std::string const& file\n+   , create_flags_t flags = {});\n Adds the file specified by path to the _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be object. In case path refers\n to a directory, files will be added recursively from the directory.\n If specified, the predicate p is called once for every file and directory that\n is encountered. Files for which p returns true are added, and directories for\n which p returns true are traversed. p must have the following signature:\n bool Pred(std::string const& p);\n The path that is passed in to the predicate is the full path of the file or\n@@ -348,30 +348,30 @@\n directories are traversed.\n The \"..\" directory is never traversed.\n The flags argument should be the same as the flags passed to the _\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt\n constructor.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b._\bh_\bp_\bp\"\n+inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p,\n+error_code& ec);\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n    , settings_interface const& settings, disk_io_constructor_type disk_io\n    , std::function const& f, error_code& ec);\n-inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p,\n-error_code& ec);\n-inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n-   , settings_interface const& settings\n-   , std::function const& f);\n inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n    , std::function const& f);\n-inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p);\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n    , std::function const& f, error_code& ec);\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n    , settings_interface const& settings\n    , std::function const& f, error_code& ec);\n+inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p);\n+inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n+   , settings_interface const& settings\n+   , std::function const& f);\n This function will assume that the files added to the torrent file exists at\n path p, read those files and hash the content and set the hashes in the\n create_torrent object. The optional function f is called in between every hash\n that is set. f must have the following signature:\n void Fun(piece_index_t);\n The overloads taking a _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk may be used to configure the underlying\n disk access. Such as settings_pack::aio_threads.\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Custom_Storage.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Custom_Storage.html", "unified_diff": "@@ -32,15 +32,15 @@\n 
    \n

    Table of contents

    \n
    \n-
    \n-

    async_write() async_read()

    \n+\n+[report issue]
    \n+
    \n+

    async_read() async_write()

    \n
    \n virtual void async_read (storage_index_t storage, peer_request const& r\n       , std::function<void(disk_buffer_holder, storage_error const&)> handler\n       , disk_job_flags_t flags = {}) = 0;\n virtual bool async_write (storage_index_t storage, peer_request const& r\n       , char const* buf, std::shared_ptr<disk_observer> o\n       , std::function<void(storage_error const&)> handler\n@@ -469,22 +469,22 @@\n internal libtorrent torrent object to tie the storage object allocated\n for a torrent to the lifetime of the internal torrent object. When a\n torrent is removed from the session, this holder is destructed and will\n inform the disk object.

    \n
    \n struct storage_holder\n {\n-   ~storage_holder ();\n    storage_holder (storage_index_t idx, disk_interface& disk_io);\n+   ~storage_holder ();\n    storage_holder () = default;\n    explicit operator bool () const;\n    operator storage_index_t () const;\n    void reset ();\n-   storage_holder (storage_holder const&) = delete;\n    storage_holder& operator= (storage_holder const&) = delete;\n+   storage_holder (storage_holder const&) = delete;\n    storage_holder (storage_holder&& rhs) noexcept;\n    storage_holder& operator= (storage_holder&& rhs) noexcept;\n };\n 
    \n [report issue]
    \n
    \n

    disk_observer

    \n@@ -610,21 +610,21 @@\n

    settings_interface

    \n

    Declared in "libtorrent/settings_pack.hpp"

    \n

    the common interface to settings_pack and the internal representation of\n settings.

    \n
    \n struct settings_interface\n {\n-   virtual bool has_val (int name) const = 0;\n    virtual void set_str (int name, std::string val) = 0;\n-   virtual void set_int (int name, int val) = 0;\n+   virtual bool has_val (int name) const = 0;\n    virtual void set_bool (int name, bool val) = 0;\n-   virtual bool get_bool (int name) const = 0;\n-   virtual std::string const& get_str (int name) const = 0;\n+   virtual void set_int (int name, int val) = 0;\n    virtual int get_int (int name) const = 0;\n+   virtual std::string const& get_str (int name) const = 0;\n+   virtual bool get_bool (int name) const = 0;\n };\n 
    \n [report issue]
    \n
    \n

    file_open_mode_t

    \n

    Declared in "libtorrent/disk_interface.hpp"

    \n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,15 +3,15 @@\n V\bVe\ber\brs\bsi\bio\bon\bn:\b: 2.0.11\n _\bh_\bo_\bm_\be\n Table of contents\n * _\bo_\bp_\be_\bn_\b__\bf_\bi_\bl_\be_\b__\bs_\bt_\ba_\bt_\be\n * _\bd_\bi_\bs_\bk_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n o _\bn_\be_\bw_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n o _\br_\be_\bm_\bo_\bv_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n- o _\ba_\bs_\by_\bn_\bc_\b__\bw_\br_\bi_\bt_\be_\b(_\b)_\b _\ba_\bs_\by_\bn_\bc_\b__\br_\be_\ba_\bd_\b(_\b)\n+ o _\ba_\bs_\by_\bn_\bc_\b__\br_\be_\ba_\bd_\b(_\b)_\b _\ba_\bs_\by_\bn_\bc_\b__\bw_\br_\bi_\bt_\be_\b(_\b)\n o _\ba_\bs_\by_\bn_\bc_\b__\bh_\ba_\bs_\bh_\b(_\b)\n o _\ba_\bs_\by_\bn_\bc_\b__\bh_\ba_\bs_\bh_\b2_\b(_\b)\n o _\ba_\bs_\by_\bn_\bc_\b__\bm_\bo_\bv_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b(_\b)\n o _\ba_\bs_\by_\bn_\bc_\b__\br_\be_\bl_\be_\ba_\bs_\be_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n o _\ba_\bs_\by_\bn_\bc_\b__\bc_\bh_\be_\bc_\bk_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n o _\ba_\bs_\by_\bn_\bc_\b__\bs_\bt_\bo_\bp_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n o _\ba_\bs_\by_\bn_\bc_\b__\br_\be_\bn_\ba_\bm_\be_\b__\bf_\bi_\bl_\be_\b(_\b)\n@@ -159,15 +159,15 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* r\bre\bem\bmo\bov\bve\be_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) *\b**\b**\b**\b**\b*\n virtual void r\bre\bem\bmo\bov\bve\be_\b_t\bto\bor\brr\bre\ben\bnt\bt (storage_index_t) = 0;\n remove the storage with the specified index. This is not expected to delete any\n files from disk, just to clean up any resources associated with the specified\n storage.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* a\bas\bsy\byn\bnc\bc_\b_w\bwr\bri\bit\bte\be(\b()\b) a\bas\bsy\byn\bnc\bc_\b_r\bre\bea\bad\bd(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* a\bas\bsy\byn\bnc\bc_\b_r\bre\bea\bad\bd(\b()\b) a\bas\bsy\byn\bnc\bc_\b_w\bwr\bri\bit\bte\be(\b()\b) *\b**\b**\b**\b**\b*\n virtual void a\bas\bsy\byn\bnc\bc_\b_r\bre\bea\bad\bd (storage_index_t storage, peer_request const& r\n , std::function handler\n , disk_job_flags_t flags = {}) = 0;\n virtual bool a\bas\bsy\byn\bnc\bc_\b_w\bwr\bri\bit\bte\be (storage_index_t storage, peer_request const& r\n , char const* buf, std::shared_ptr o\n , std::function handler\n , disk_job_flags_t flags = {}) = 0;\n@@ -361,22 +361,22 @@\n a unique, owning, reference to the storage of a torrent in a disk io subsystem\n (class that implements _\bd_\bi_\bs_\bk_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be). This is held by the internal libtorrent\n torrent object to tie the storage object allocated for a torrent to the\n lifetime of the internal torrent object. When a torrent is removed from the\n _\bs_\be_\bs_\bs_\bi_\bo_\bn, this holder is destructed and will inform the disk object.\n struct storage_holder\n {\n- ~\b~s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br ();\n s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br (storage_index_t idx, disk_interface& disk_io);\n+ ~\b~s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br ();\n s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br () = default;\n explicit operator b\bbo\boo\bol\bl () const;\n operator s\bst\bto\bor\bra\bag\bge\be_\b_i\bin\bnd\bde\bex\bx_\b_t\bt () const;\n void r\bre\bes\bse\bet\bt ();\n- s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br (storage_holder const&) = delete;\n storage_holder& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (storage_holder const&) = delete;\n+ s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br (storage_holder const&) = delete;\n s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br (storage_holder&& rhs) noexcept;\n storage_holder& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (storage_holder&& rhs) noexcept;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* d\bdi\bis\bsk\bk_\b_o\bob\bbs\bse\ber\brv\bve\ber\br *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bd_\bi_\bs_\bk_\b__\bo_\bb_\bs_\be_\br_\bv_\be_\br_\b._\bh_\bp_\bp\"\n struct disk_observer\n@@ -460,21 +460,21 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bse\bet\btt\bti\bin\bng\bgs\bs_\b_i\bin\bnt\bte\ber\brf\bfa\bac\bce\be *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk_\b._\bh_\bp_\bp\"\n the common interface to _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk and the internal representation of\n settings.\n struct settings_interface\n {\n- virtual bool h\bha\bas\bs_\b_v\bva\bal\bl (int name) const = 0;\n virtual void s\bse\bet\bt_\b_s\bst\btr\br (int name, std::string val) = 0;\n- virtual void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, int val) = 0;\n+ virtual bool h\bha\bas\bs_\b_v\bva\bal\bl (int name) const = 0;\n virtual void s\bse\bet\bt_\b_b\bbo\boo\bol\bl (int name, bool val) = 0;\n- virtual bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const = 0;\n- virtual std::string const& g\bge\bet\bt_\b_s\bst\btr\br (int name) const = 0;\n+ virtual void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, int val) = 0;\n virtual int g\bge\bet\bt_\b_i\bin\bnt\bt (int name) const = 0;\n+ virtual std::string const& g\bge\bet\bt_\b_s\bst\btr\br (int name) const = 0;\n+ virtual bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const = 0;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_o\bop\bpe\ben\bn_\b_m\bmo\bod\bde\be_\b_t\bt *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bd_\bi_\bs_\bk_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bp_\bp\"\n read_only\n open the file for reading only\n write_only\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Filter.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Filter.html", "comments": ["Ordering differences only"], "unified_diff": "@@ -56,19 +56,19 @@\n a single rule that allows all addresses (0.0.0.0 - 255.255.255.255 for\n the IPv4 range, and the equivalent range covering all addresses for the\n IPv6 range).

    \n

    A default constructed ip_filter does not filter any address.

    \n
    \n struct ip_filter\n {\n+   ip_filter (ip_filter&&);\n    ip_filter& operator= (ip_filter&&);\n-   ip_filter ();\n    ip_filter& operator= (ip_filter const&);\n+   ip_filter ();\n    ~ip_filter ();\n-   ip_filter (ip_filter&&);\n    ip_filter (ip_filter const&);\n    bool empty () const;\n    void add_rule (address const& first, address const& last, std::uint32_t flags);\n    std::uint32_t access (address const& addr) const;\n    filter_tuple_t export_filter () const;\n \n    enum access_flags\n@@ -154,19 +154,19 @@\n is primarily used to indicate whether a range of ports should\n be connected to or not. The default is to have the full port\n range (0-65535) set to flag 0.

    \n
    \n class port_filter\n {\n    port_filter (port_filter&&);\n-   ~port_filter ();\n    port_filter& operator= (port_filter&&);\n+   port_filter& operator= (port_filter const&);\n    port_filter (port_filter const&);\n    port_filter ();\n-   port_filter& operator= (port_filter const&);\n+   ~port_filter ();\n    void add_rule (std::uint16_t first, std::uint16_t last, std::uint32_t flags);\n    std::uint32_t access (std::uint16_t port) const;\n \n    enum access_flags\n    {\n       blocked,\n    };\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -19,19 +19,19 @@\n The ip_filter class is a set of rules that uniquely categorizes all ip\n addresses as allowed or disallowed. The default constructor creates a single\n rule that allows all addresses (0.0.0.0 - 255.255.255.255 for the IPv4 range,\n and the equivalent range covering all addresses for the IPv6 range).\n A default constructed _\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br does not filter any address.\n struct ip_filter\n {\n+   i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br (ip_filter&&);\n    ip_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (ip_filter&&);\n-   i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br ();\n    ip_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (ip_filter const&);\n+   i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br ();\n    ~\b~i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br ();\n-   i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br (ip_filter&&);\n    i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br (ip_filter const&);\n    bool e\bem\bmp\bpt\bty\by () const;\n    void a\bad\bdd\bd_\b_r\bru\bul\ble\be (address const& first, address const& last, std::uint32_t\n flags);\n    std::uint32_t a\bac\bcc\bce\bes\bss\bs (address const& addr) const;\n    filter_tuple_t e\bex\bxp\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br () const;\n \n@@ -82,19 +82,19 @@\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br_\b._\bh_\bp_\bp\"\n the port filter maps non-overlapping port ranges to flags. This is primarily\n used to indicate whether a range of ports should be connected to or not. The\n default is to have the full port range (0-65535) set to flag 0.\n class port_filter\n {\n    p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br (port_filter&&);\n-   ~\b~p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br ();\n    port_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (port_filter&&);\n+   port_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (port_filter const&);\n    p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br (port_filter const&);\n    p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br ();\n-   port_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (port_filter const&);\n+   ~\b~p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br ();\n    void a\bad\bdd\bd_\b_r\bru\bul\ble\be (std::uint16_t first, std::uint16_t last, std::uint32_t\n flags);\n    std::uint32_t a\bac\bcc\bce\bes\bss\bs (std::uint16_t port) const;\n \n    enum access_flags\n    {\n       blocked,\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-PeerClass.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-PeerClass.html", "unified_diff": "@@ -30,15 +30,15 @@\n \n 

    home

    \n \n@@ -104,16 +104,16 @@\n

    Declared in "libtorrent/peer_class_type_filter.hpp"

    \n

    peer_class_type_filter is a simple container for rules for adding and subtracting\n peer-classes from peers. It is applied after the peer class filter is applied (which\n is based on the peer's IP address).

    \n
    \n struct peer_class_type_filter\n {\n-   void remove (socket_type_t const st, peer_class_t const peer_class);\n    void add (socket_type_t const st, peer_class_t const peer_class);\n+   void remove (socket_type_t const st, peer_class_t const peer_class);\n    void disallow (socket_type_t const st, peer_class_t const peer_class);\n    void allow (socket_type_t const st, peer_class_t const peer_class);\n    std::uint32_t apply (socket_type_t const st, std::uint32_t peer_class_mask);\n    friend bool operator== (peer_class_type_filter const& lhs\n       , peer_class_type_filter const& rhs);\n \n    enum socket_type_t\n@@ -123,20 +123,20 @@\n       ssl_tcp_socket,\n       ssl_utp_socket,\n       i2p_socket,\n       num_socket_types,\n    };\n };\n 
    \n-\n-[report issue]
    \n-

    add() remove()

    \n+\n+[report issue]
    \n+

    remove() add()

    \n
    \n-void remove (socket_type_t const st, peer_class_t const peer_class);\n void add (socket_type_t const st, peer_class_t const peer_class);\n+void remove (socket_type_t const st, peer_class_t const peer_class);\n 
    \n

    add() and remove() adds and removes a peer class to be added\n to new peers based on socket type.

    \n \n [report issue]
    \n
    \n

    disallow() allow()

    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n >\n _\b[_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b _\bl_\bo_\bg_\bo_\b]\n V\bVe\ber\brs\bsi\bio\bon\bn:\b: 2.0.11\n _\bh_\bo_\bm_\be\n Table of contents\n * _\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bi_\bn_\bf_\bo\n * _\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bt_\by_\bp_\be_\b__\bf_\bi_\bl_\bt_\be_\br\n- o _\ba_\bd_\bd_\b(_\b)_\b _\br_\be_\bm_\bo_\bv_\be_\b(_\b)\n+ o _\br_\be_\bm_\bo_\bv_\be_\b(_\b)_\b _\ba_\bd_\bd_\b(_\b)\n o _\bd_\bi_\bs_\ba_\bl_\bl_\bo_\bw_\b(_\b)_\b _\ba_\bl_\bl_\bo_\bw_\b(_\b)\n o _\ba_\bp_\bp_\bl_\by_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bs_\bo_\bc_\bk_\be_\bt_\b__\bt_\by_\bp_\be_\b__\bt\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_i\bin\bnf\bfo\bo *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b._\bh_\bp_\bp\"\n holds settings for a peer class. Used in _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b) and _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)\n@@ -59,16 +59,16 @@\n *\b**\b**\b**\b**\b**\b* p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bt_\by_\bp_\be_\b__\bf_\bi_\bl_\bt_\be_\br_\b._\bh_\bp_\bp\"\n peer_class_type_filter is a simple container for rules for adding and\n subtracting peer-classes from peers. It is applied a\baf\bft\bte\ber\br the peer class filter\n is applied (which is based on the peer's IP address).\n struct peer_class_type_filter\n {\n- void r\bre\bem\bmo\bov\bve\be (socket_type_t const st, peer_class_t const peer_class);\n void a\bad\bdd\bd (socket_type_t const st, peer_class_t const peer_class);\n+ void r\bre\bem\bmo\bov\bve\be (socket_type_t const st, peer_class_t const peer_class);\n void d\bdi\bis\bsa\bal\bll\blo\bow\bw (socket_type_t const st, peer_class_t const peer_class);\n void a\bal\bll\blo\bow\bw (socket_type_t const st, peer_class_t const peer_class);\n std::uint32_t a\bap\bpp\bpl\bly\by (socket_type_t const st, std::uint32_t peer_class_mask);\n friend bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (peer_class_type_filter const& lhs\n , peer_class_type_filter const& rhs);\n \n enum socket_type_t\n@@ -78,17 +78,17 @@\n ssl_tcp_socket,\n ssl_utp_socket,\n i2p_socket,\n num_socket_types,\n };\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* a\bad\bdd\bd(\b()\b) r\bre\bem\bmo\bov\bve\be(\b()\b) *\b**\b**\b**\b**\b*\n-void r\bre\bem\bmo\bov\bve\be (socket_type_t const st, peer_class_t const peer_class);\n+*\b**\b**\b**\b**\b* r\bre\bem\bmo\bov\bve\be(\b()\b) a\bad\bdd\bd(\b()\b) *\b**\b**\b**\b**\b*\n void a\bad\bdd\bd (socket_type_t const st, peer_class_t const peer_class);\n+void r\bre\bem\bmo\bov\bve\be (socket_type_t const st, peer_class_t const peer_class);\n add() and remove() adds and removes a peer class to be added to new peers based\n on socket type.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* d\bdi\bis\bsa\bal\bll\blo\bow\bw(\b()\b) a\bal\bll\blo\bow\bw(\b()\b) *\b**\b**\b**\b**\b*\n void d\bdi\bis\bsa\bal\bll\blo\bow\bw (socket_type_t const st, peer_class_t const peer_class);\n void a\bal\bll\blo\bow\bw (socket_type_t const st, peer_class_t const peer_class);\n disallow() and allow() adds and removes a peer class to be removed from new\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Plugins.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Plugins.html", "unified_diff": "@@ -46,37 +46,37 @@\n
  • on_tick()
  • \n
  • get_unchoke_priority()
  • \n
  • load_state()
  • \n \n \n
  • torrent_plugin\n
  • \n
  • peer_plugin\n
  • \n
  • crypto_plugin\n@@ -345,16 +345,16 @@\n

    Torrent plugins are associated with a single torrent and have a number\n of functions called at certain events. Many of its functions have the\n ability to change or override the default libtorrent behavior.

    \n
    \n struct torrent_plugin\n {\n    virtual std::shared_ptr<peer_plugin> new_connection (peer_connection_handle const&);\n-   virtual void on_piece_pass (piece_index_t);\n    virtual void on_piece_failed (piece_index_t);\n+   virtual void on_piece_pass (piece_index_t);\n    virtual void tick ();\n    virtual bool on_pause ();\n    virtual bool on_resume ();\n    virtual void on_files_checked ();\n    virtual void on_state (torrent_status::state_t);\n    virtual void on_add_peer (tcp::endpoint const&,\n       peer_source_flags_t, add_peer_flags_t);\n@@ -376,38 +376,38 @@\n are supposed to return an instance of your peer_plugin class. Which in\n turn will have its hook functions called on event specific to that peer.

    \n

    The peer_connection_handle will be valid as long as the shared_ptr\n is being held by the torrent object. So, it is generally a good idea to not\n keep a shared_ptr to your own peer_plugin. If you want to keep references\n to it, use weak_ptr.

    \n

    If this function throws an exception, the connection will be closed.

    \n-\n-[report issue]
  • \n-
    \n-

    on_piece_failed() on_piece_pass()

    \n+\n+[report issue]
    \n+
    \n+

    on_piece_pass() on_piece_failed()

    \n
    \n-virtual void on_piece_pass (piece_index_t);\n virtual void on_piece_failed (piece_index_t);\n+virtual void on_piece_pass (piece_index_t);\n 
    \n

    These hooks are called when a piece passes the hash check or fails the hash\n check, respectively. The index is the piece index that was downloaded.\n It is possible to access the list of peers that participated in sending the\n piece through the torrent and the piece_picker.

    \n [report issue]
    \n
    \n

    tick()

    \n
    \n virtual void tick ();\n 
    \n

    This hook is called approximately once per second. It is a way of making it\n easy for plugins to do timed events, for sending messages or whatever.

    \n-\n-[report issue]
    \n-
    \n-

    on_pause() on_resume()

    \n+\n+[report issue]
    \n+
    \n+

    on_resume() on_pause()

    \n
    \n virtual bool on_pause ();\n virtual bool on_resume ();\n 
    \n

    These hooks are called when the torrent is paused and resumed respectively.\n The return value indicates if the event was handled. A return value of\n true indicates that it was handled, and no other plugin after this one\n@@ -475,51 +475,51 @@\n {\n virtual string_view type () const;\n virtual void add_handshake (entry&);\n virtual void on_disconnect (error_code const&);\n virtual void on_connected ();\n virtual bool on_handshake (span<char const>);\n virtual bool on_extension_handshake (bdecode_node const&);\n+ virtual bool on_bitfield (bitfield const& /*bitfield*/);\n+ virtual bool on_have_all ();\n virtual bool on_have_none ();\n virtual bool on_choke ();\n- virtual bool on_unchoke ();\n+ virtual bool on_allowed_fast (piece_index_t);\n virtual bool on_have (piece_index_t);\n- virtual bool on_dont_have (piece_index_t);\n+ virtual bool on_not_interested ();\n virtual bool on_request (peer_request const&);\n+ virtual bool on_unchoke ();\n+ virtual bool on_dont_have (piece_index_t);\n virtual bool on_interested ();\n- virtual bool on_not_interested ();\n- virtual bool on_allowed_fast (piece_index_t);\n- virtual bool on_bitfield (bitfield const& /*bitfield*/);\n- virtual bool on_have_all ();\n virtual bool on_piece (peer_request const& /*piece*/\n , span<char const> /*buf*/);\n virtual bool on_suggest (piece_index_t);\n virtual bool on_reject (peer_request const&);\n virtual bool on_cancel (peer_request const&);\n- virtual void sent_allow_fast (piece_index_t);\n- virtual void sent_have_all ();\n- virtual void sent_choke ();\n- virtual void sent_reject_request (peer_request const&);\n+ virtual void sent_suggest (piece_index_t);\n virtual void sent_request (peer_request const&);\n+ virtual void sent_reject_request (peer_request const&);\n virtual void sent_cancel (peer_request const&);\n+ virtual void sent_choke ();\n+ virtual void sent_allow_fast (piece_index_t);\n+ virtual void sent_have_all ();\n virtual void sent_have_none ();\n- virtual void sent_suggest (piece_index_t);\n- virtual void sent_interested ();\n- virtual void sent_piece (peer_request const&);\n virtual void sent_unchoke ();\n- virtual void sent_not_interested ();\n+ virtual void sent_interested ();\n virtual void sent_have (piece_index_t);\n+ virtual void sent_not_interested ();\n+ virtual void sent_piece (peer_request const&);\n virtual void sent_payload (int /* bytes */);\n virtual bool can_disconnect (error_code const& /*ec*/);\n virtual bool on_extended (int /*length*/, int /*msg*/,\n span<char const> /*body*/);\n virtual bool on_unknown_message (int /*length*/, int /*msg*/,\n span<char const> /*body*/);\n- virtual void on_piece_pass (piece_index_t);\n virtual void on_piece_failed (piece_index_t);\n+ virtual void on_piece_pass (piece_index_t);\n virtual void tick ();\n virtual bool write_request (peer_request const&);\n };\n

    \n [report issue]
    \n

    type()

    \n
    \n@@ -569,39 +569,39 @@\n virtual bool on_extension_handshake (bdecode_node const&);\n 
    \n

    called when the extension handshake from the other end is received\n if this returns false, it means that this extension isn't\n supported by this peer. It will result in this peer_plugin\n being removed from the peer_connection and destructed.\n this is not called for web seeds

    \n+\n+\n+\n \n+\n \n-\n-\n-\n-\n \n+\n+\n \n-\n-\n-[report issue]
    \n-
    \n-

    on_unchoke() on_interested() on_choke() on_have_none() on_have_all() on_allowed_fast() on_have() on_request() on_dont_have() on_not_interested() on_bitfield()

    \n+[report issue]
    \n+
    \n+

    on_bitfield() on_dont_have() on_have_none() on_unchoke() on_not_interested() on_interested() on_have() on_have_all() on_choke() on_request() on_allowed_fast()

    \n
    \n+virtual bool on_bitfield (bitfield const& /*bitfield*/);\n+virtual bool on_have_all ();\n virtual bool on_have_none ();\n virtual bool on_choke ();\n-virtual bool on_unchoke ();\n+virtual bool on_allowed_fast (piece_index_t);\n virtual bool on_have (piece_index_t);\n-virtual bool on_dont_have (piece_index_t);\n+virtual bool on_not_interested ();\n virtual bool on_request (peer_request const&);\n+virtual bool on_unchoke ();\n+virtual bool on_dont_have (piece_index_t);\n virtual bool on_interested ();\n-virtual bool on_not_interested ();\n-virtual bool on_allowed_fast (piece_index_t);\n-virtual bool on_bitfield (bitfield const& /*bitfield*/);\n-virtual bool on_have_all ();\n 
    \n

    returning true from any of the message handlers\n indicates that the plugin has handled the message.\n it will break the plugin chain traversing and not let\n anyone else handle the message, including the default\n handler.

    \n [report issue]
    \n@@ -614,26 +614,26 @@\n

    This function is called when the peer connection is receiving\n a piece. buf points (non-owning pointer) to the data in an\n internal immutable disk buffer. The length of the data is specified\n in the length member of the piece parameter.\n returns true to indicate that the piece is handled and the\n rest of the logic should be ignored.

    \n \n-\n+\n \n \n-[report issue]
    \n-
    \n-

    sent_interested() sent_have() sent_not_interested() sent_unchoke() sent_piece()

    \n+[report issue]
    \n+
    \n+

    sent_interested() sent_piece() sent_not_interested() sent_unchoke() sent_have()

    \n
    \n-virtual void sent_interested ();\n-virtual void sent_piece (peer_request const&);\n virtual void sent_unchoke ();\n-virtual void sent_not_interested ();\n+virtual void sent_interested ();\n virtual void sent_have (piece_index_t);\n+virtual void sent_not_interested ();\n+virtual void sent_piece (peer_request const&);\n 
    \n

    called after a choke message has been sent to the peer

    \n [report issue]
    \n
    \n

    sent_payload()

    \n
    \n virtual void sent_payload (int /* bytes */);\n@@ -669,21 +669,21 @@\n 
    \n

    on_unknown_message()

    \n
    \n virtual bool on_unknown_message (int /*length*/, int /*msg*/,\n       span<char const> /*body*/);\n 
    \n

    this is not called for web seeds

    \n-\n-[report issue]
    \n-
    \n-

    on_piece_failed() on_piece_pass()

    \n+\n+[report issue]
    \n+
    \n+

    on_piece_pass() on_piece_failed()

    \n
    \n-virtual void on_piece_pass (piece_index_t);\n virtual void on_piece_failed (piece_index_t);\n+virtual void on_piece_pass (piece_index_t);\n 
    \n

    called when a piece that this peer participated in either\n fails or passes the hash_check

    \n [report issue]
    \n
    \n

    tick()

    \n
    \n@@ -703,16 +703,16 @@\n 
    \n
    \n

    crypto_plugin

    \n

    Declared in "libtorrent/extensions.hpp"

    \n
    \n struct crypto_plugin\n {\n-   virtual void set_outgoing_key (span<char const> key) = 0;\n    virtual void set_incoming_key (span<char const> key) = 0;\n+   virtual void set_outgoing_key (span<char const> key) = 0;\n    encrypt (span<span<char>> /*send_vec*/) = 0;\n    virtual std::tuple<int, int, int> decrypt (span<span<char>> /*receive_vec*/) = 0;\n };\n 
    \n [report issue]
    \n

    decrypt()

    \n
    \n@@ -744,22 +744,22 @@\n    void add_extension (std::shared_ptr<peer_plugin>);\n    bool is_seed () const;\n    bool upload_only () const;\n    peer_id const& pid () const;\n    bool has_piece (piece_index_t i) const;\n    bool is_choked () const;\n    bool is_interesting () const;\n-   bool has_peer_choked () const;\n    bool is_peer_interested () const;\n+   bool has_peer_choked () const;\n    void maybe_unchoke_this_peer ();\n    void choke_this_peer ();\n    void get_peer_info (peer_info& p) const;\n    torrent_handle associated_torrent () const;\n-   tcp::endpoint local_endpoint () const;\n    tcp::endpoint const& remote () const;\n+   tcp::endpoint local_endpoint () const;\n    bool is_disconnecting () const;\n    bool is_connecting () const;\n    void disconnect (error_code const& ec, operation_t op\n       , disconnect_severity_t = peer_connection_interface::normal);\n    bool is_outgoing () const;\n    bool ignore_unchoke_slots () const;\n    bool on_local_network () const;\n@@ -767,18 +767,18 @@\n    void peer_log (peer_log_alert::direction_t direction\n       , char const* event, char const* fmt = "", ...) const TORRENT_FORMAT(4,5);\n    bool should_log (peer_log_alert::direction_t direction) const;\n    bool can_disconnect (error_code const& ec) const;\n    bool has_metadata () const;\n    bool in_handshake () const;\n    void send_buffer (char const* begin, int size);\n-   time_point time_of_last_unchoke () const;\n    std::time_t last_seen_complete () const;\n-   bool operator< (peer_connection_handle const& o) const;\n+   time_point time_of_last_unchoke () const;\n    bool operator== (peer_connection_handle const& o) const;\n+   bool operator< (peer_connection_handle const& o) const;\n    bool operator!= (peer_connection_handle const& o) const;\n    std::shared_ptr<peer_connection> native_handle () const;\n };\n 
    \n [report issue]
    \n
    \n

    bt_peer_connection_handle

    \n@@ -789,16 +789,16 @@\n
    \n struct bt_peer_connection_handle : peer_connection_handle\n {\n    explicit bt_peer_connection_handle (peer_connection_handle pc);\n    bool packet_finished () const;\n    bool support_extensions () const;\n    bool supports_encryption () const;\n-   void switch_recv_crypto (std::shared_ptr<crypto_plugin> crypto);\n    void switch_send_crypto (std::shared_ptr<crypto_plugin> crypto);\n+   void switch_recv_crypto (std::shared_ptr<crypto_plugin> crypto);\n    std::shared_ptr<bt_peer_connection> native_handle () const;\n };\n 
    \n [report issue]
    \n
    \n

    create_ut_pex_plugin()

    \n

    Declared in "libtorrent/extensions/ut_pex.hpp"

    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -15,38 +15,38 @@\n o _\bo_\bn_\b__\ba_\bl_\be_\br_\bt_\b(_\b)\n o _\bo_\bn_\b__\bu_\bn_\bk_\bn_\bo_\bw_\bn_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n o _\bo_\bn_\b__\bt_\bi_\bc_\bk_\b(_\b)\n o _\bg_\be_\bt_\b__\bu_\bn_\bc_\bh_\bo_\bk_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b)\n o _\bl_\bo_\ba_\bd_\b__\bs_\bt_\ba_\bt_\be_\b(_\b)\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\bl_\bu_\bg_\bi_\bn\n o _\bn_\be_\bw_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b)\n- o _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\ba_\bs_\bs_\b(_\b)\n+ o _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\ba_\bs_\bs_\b(_\b)_\b _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b(_\b)\n o _\bt_\bi_\bc_\bk_\b(_\b)\n- o _\bo_\bn_\b__\bp_\ba_\bu_\bs_\be_\b(_\b)_\b _\bo_\bn_\b__\br_\be_\bs_\bu_\bm_\be_\b(_\b)\n+ o _\bo_\bn_\b__\br_\be_\bs_\bu_\bm_\be_\b(_\b)_\b _\bo_\bn_\b__\bp_\ba_\bu_\bs_\be_\b(_\b)\n o _\bo_\bn_\b__\bf_\bi_\bl_\be_\bs_\b__\bc_\bh_\be_\bc_\bk_\be_\bd_\b(_\b)\n o _\bo_\bn_\b__\bs_\bt_\ba_\bt_\be_\b(_\b)\n o _\bo_\bn_\b__\ba_\bd_\bd_\b__\bp_\be_\be_\br_\b(_\b)\n * _\bp_\be_\be_\br_\b__\bp_\bl_\bu_\bg_\bi_\bn\n o _\bt_\by_\bp_\be_\b(_\b)\n o _\ba_\bd_\bd_\b__\bh_\ba_\bn_\bd_\bs_\bh_\ba_\bk_\be_\b(_\b)\n o _\bo_\bn_\b__\bd_\bi_\bs_\bc_\bo_\bn_\bn_\be_\bc_\bt_\b(_\b)\n o _\bo_\bn_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\be_\bd_\b(_\b)\n o _\bo_\bn_\b__\bh_\ba_\bn_\bd_\bs_\bh_\ba_\bk_\be_\b(_\b)\n o _\bo_\bn_\b__\be_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn_\b__\bh_\ba_\bn_\bd_\bs_\bh_\ba_\bk_\be_\b(_\b)\n- o _\bo_\bn_\b__\bu_\bn_\bc_\bh_\bo_\bk_\be_\b(_\b)_\b _\bo_\bn_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bc_\bh_\bo_\bk_\be_\b(_\b)_\b _\bo_\bn_\b__\bh_\ba_\bv_\be_\b__\bn_\bo_\bn_\be_\b(_\b)_\b _\bo_\bn_\b__\bh_\ba_\bv_\be_\b__\ba_\bl_\bl\n- _\b(_\b)_\b _\bo_\bn_\b__\ba_\bl_\bl_\bo_\bw_\be_\bd_\b__\bf_\ba_\bs_\bt_\b(_\b)_\b _\bo_\bn_\b__\bh_\ba_\bv_\be_\b(_\b)_\b _\bo_\bn_\b__\br_\be_\bq_\bu_\be_\bs_\bt_\b(_\b)_\b _\bo_\bn_\b__\bd_\bo_\bn_\bt_\b__\bh_\ba_\bv_\be_\b(_\b)\n- _\bo_\bn_\b__\bn_\bo_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd_\b(_\b)\n+ o _\bo_\bn_\b__\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd_\b(_\b)_\b _\bo_\bn_\b__\bd_\bo_\bn_\bt_\b__\bh_\ba_\bv_\be_\b(_\b)_\b _\bo_\bn_\b__\bh_\ba_\bv_\be_\b__\bn_\bo_\bn_\be_\b(_\b)_\b _\bo_\bn_\b__\bu_\bn_\bc_\bh_\bo_\bk_\be_\b(_\b)\n+ _\bo_\bn_\b__\bn_\bo_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bh_\ba_\bv_\be_\b(_\b)_\b _\bo_\bn_\b__\bh_\ba_\bv_\be_\b__\ba_\bl_\bl_\b(_\b)\n+ _\bo_\bn_\b__\bc_\bh_\bo_\bk_\be_\b(_\b)_\b _\bo_\bn_\b__\br_\be_\bq_\bu_\be_\bs_\bt_\b(_\b)_\b _\bo_\bn_\b__\ba_\bl_\bl_\bo_\bw_\be_\bd_\b__\bf_\ba_\bs_\bt_\b(_\b)\n o _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n- o _\bs_\be_\bn_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bh_\ba_\bv_\be_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bn_\bo_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bu_\bn_\bc_\bh_\bo_\bk_\be_\b(_\b)\n- _\bs_\be_\bn_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n+ o _\bs_\be_\bn_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bn_\bo_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bu_\bn_\bc_\bh_\bo_\bk_\be_\b(_\b)\n+ _\bs_\be_\bn_\bt_\b__\bh_\ba_\bv_\be_\b(_\b)\n o _\bs_\be_\bn_\bt_\b__\bp_\ba_\by_\bl_\bo_\ba_\bd_\b(_\b)\n o _\bc_\ba_\bn_\b__\bd_\bi_\bs_\bc_\bo_\bn_\bn_\be_\bc_\bt_\b(_\b)\n o _\bo_\bn_\b__\be_\bx_\bt_\be_\bn_\bd_\be_\bd_\b(_\b)\n o _\bo_\bn_\b__\bu_\bn_\bk_\bn_\bo_\bw_\bn_\b__\bm_\be_\bs_\bs_\ba_\bg_\be_\b(_\b)\n- o _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\ba_\bs_\bs_\b(_\b)\n+ o _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\ba_\bs_\bs_\b(_\b)_\b _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b(_\b)\n o _\bt_\bi_\bc_\bk_\b(_\b)\n o _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bq_\bu_\be_\bs_\bt_\b(_\b)\n * _\bc_\br_\by_\bp_\bt_\bo_\b__\bp_\bl_\bu_\bg_\bi_\bn\n o _\bd_\be_\bc_\br_\by_\bp_\bt_\b(_\b)\n * _\bp_\be_\be_\br_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b__\bh_\ba_\bn_\bd_\bl_\be\n * _\bb_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b__\bh_\ba_\bn_\bd_\bl_\be\n * _\bc_\br_\be_\ba_\bt_\be_\b__\bu_\bt_\b__\bp_\be_\bx_\b__\bp_\bl_\bu_\bg_\bi_\bn_\b(_\b)\n@@ -256,16 +256,16 @@\n Torrent plugins are associated with a single torrent and have a number of\n functions called at certain events. Many of its functions have the ability to\n change or override the default libtorrent behavior.\n struct torrent_plugin\n {\n virtual std::shared_ptr n\bne\bew\bw_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn (peer_connection_handle\n const&);\n- virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs (piece_index_t);\n virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_f\bfa\bai\bil\ble\bed\bd (piece_index_t);\n+ virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs (piece_index_t);\n virtual void t\bti\bic\bck\bk ();\n virtual bool o\bon\bn_\b_p\bpa\bau\bus\bse\be ();\n virtual bool o\bon\bn_\b_r\bre\bes\bsu\bum\bme\be ();\n virtual void o\bon\bn_\b_f\bfi\bil\ble\bes\bs_\b_c\bch\bhe\bec\bck\bke\bed\bd ();\n virtual void o\bon\bn_\b_s\bst\bta\bat\bte\be (torrent_status::state_t);\n virtual void o\bon\bn_\b_a\bad\bdd\bd_\b_p\bpe\bee\ber\br (tcp::endpoint const&,\n peer_source_flags_t, add_peer_flags_t);\n@@ -285,28 +285,28 @@\n have its hook functions called on event specific to that peer.\n The peer_connection_handle will be valid as long as the shared_ptr is being\n held by the torrent object. So, it is generally a good idea to not keep a\n shared_ptr to your own _\bp_\be_\be_\br_\b__\bp_\bl_\bu_\bg_\bi_\bn. If you want to keep references to it, use\n weak_ptr.\n If this function throws an exception, the connection will be closed.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_f\bfa\bai\bil\ble\bed\bd(\b()\b) o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs(\b()\b) *\b**\b**\b**\b**\b*\n-virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs (piece_index_t);\n+*\b**\b**\b**\b**\b* o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs(\b()\b) o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_f\bfa\bai\bil\ble\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_f\bfa\bai\bil\ble\bed\bd (piece_index_t);\n+virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs (piece_index_t);\n These hooks are called when a piece passes the hash check or fails the hash\n check, respectively. The index is the piece index that was downloaded. It is\n possible to access the list of peers that participated in sending the piece\n through the torrent and the piece_picker.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bti\bic\bck\bk(\b()\b) *\b**\b**\b**\b**\b*\n virtual void t\bti\bic\bck\bk ();\n This hook is called approximately once per second. It is a way of making it\n easy for plugins to do timed events, for sending messages or whatever.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bon\bn_\b_p\bpa\bau\bus\bse\be(\b()\b) o\bon\bn_\b_r\bre\bes\bsu\bum\bme\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* o\bon\bn_\b_r\bre\bes\bsu\bum\bme\be(\b()\b) o\bon\bn_\b_p\bpa\bau\bus\bse\be(\b()\b) *\b**\b**\b**\b**\b*\n virtual bool o\bon\bn_\b_p\bpa\bau\bus\bse\be ();\n virtual bool o\bon\bn_\b_r\bre\bes\bsu\bum\bme\be ();\n These hooks are called when the torrent is paused and resumed respectively. The\n return value indicates if the event was handled. A return value of true\n indicates that it was handled, and no other _\bp_\bl_\bu_\bg_\bi_\bn after this one will have\n this hook function called, and the standard handler will also not be invoked.\n So, returning true effectively overrides the standard behavior of pause or\n@@ -354,51 +354,51 @@\n {\n virtual string_view t\bty\byp\bpe\be () const;\n virtual void a\bad\bdd\bd_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be (entry&);\n virtual void o\bon\bn_\b_d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bt (error_code const&);\n virtual void o\bon\bn_\b_c\bco\bon\bnn\bne\bec\bct\bte\bed\bd ();\n virtual bool o\bon\bn_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be (span);\n virtual bool o\bon\bn_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be (bdecode_node const&);\n+ virtual bool o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& /\b/*\b*b\bbi\bit\btf\bfi\bie\bel\bld\bd*\b*/\b/);\n+ virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_n\bno\bon\bne\be ();\n virtual bool o\bon\bn_\b_c\bch\bho\bok\bke\be ();\n- virtual bool o\bon\bn_\b_u\bun\bnc\bch\bho\bok\bke\be ();\n+ virtual bool o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt (piece_index_t);\n virtual bool o\bon\bn_\b_h\bha\bav\bve\be (piece_index_t);\n- virtual bool o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n+ virtual bool o\bon\bn_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n virtual bool o\bon\bn_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n+ virtual bool o\bon\bn_\b_u\bun\bnc\bch\bho\bok\bke\be ();\n+ virtual bool o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n virtual bool o\bon\bn_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n- virtual bool o\bon\bn_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n- virtual bool o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt (piece_index_t);\n- virtual bool o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& /\b/*\b*b\bbi\bit\btf\bfi\bie\bel\bld\bd*\b*/\b/);\n- virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n virtual bool o\bon\bn_\b_p\bpi\bie\bec\bce\be (peer_request const& /\b/*\b*p\bpi\bie\bec\bce\be*\b*/\b/\n , span /\b/*\b*b\bbu\buf\bf*\b*/\b/);\n virtual bool o\bon\bn_\b_s\bsu\bug\bgg\bge\bes\bst\bt (piece_index_t);\n virtual bool o\bon\bn_\b_r\bre\bej\bje\bec\bct\bt (peer_request const&);\n virtual bool o\bon\bn_\b_c\bca\ban\bnc\bce\bel\bl (peer_request const&);\n- virtual void s\bse\ben\bnt\bt_\b_a\bal\bll\blo\bow\bw_\b_f\bfa\bas\bst\bt (piece_index_t);\n- virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n- virtual void s\bse\ben\bnt\bt_\b_c\bch\bho\bok\bke\be ();\n- virtual void s\bse\ben\bnt\bt_\b_r\bre\bej\bje\bec\bct\bt_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n+ virtual void s\bse\ben\bnt\bt_\b_s\bsu\bug\bgg\bge\bes\bst\bt (piece_index_t);\n virtual void s\bse\ben\bnt\bt_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n+ virtual void s\bse\ben\bnt\bt_\b_r\bre\bej\bje\bec\bct\bt_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n virtual void s\bse\ben\bnt\bt_\b_c\bca\ban\bnc\bce\bel\bl (peer_request const&);\n+ virtual void s\bse\ben\bnt\bt_\b_c\bch\bho\bok\bke\be ();\n+ virtual void s\bse\ben\bnt\bt_\b_a\bal\bll\blo\bow\bw_\b_f\bfa\bas\bst\bt (piece_index_t);\n+ virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be_\b_n\bno\bon\bne\be ();\n- virtual void s\bse\ben\bnt\bt_\b_s\bsu\bug\bgg\bge\bes\bst\bt (piece_index_t);\n- virtual void s\bse\ben\bnt\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n- virtual void s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be (peer_request const&);\n virtual void s\bse\ben\bnt\bt_\b_u\bun\bnc\bch\bho\bok\bke\be ();\n- virtual void s\bse\ben\bnt\bt_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n+ virtual void s\bse\ben\bnt\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n+ virtual void s\bse\ben\bnt\bt_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n+ virtual void s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be (peer_request const&);\n virtual void s\bse\ben\bnt\bt_\b_p\bpa\bay\byl\blo\boa\bad\bd (int /\b/*\b* b\bby\byt\bte\bes\bs *\b*/\b/);\n virtual bool c\bca\ban\bn_\b_d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bt (error_code const& /\b/*\b*e\bec\bc*\b*/\b/);\n virtual bool o\bon\bn_\b_e\bex\bxt\bte\ben\bnd\bde\bed\bd (int /\b/*\b*l\ble\ben\bng\bgt\bth\bh*\b*/\b/, int /\b/*\b*m\bms\bsg\bg*\b*/\b/,\n span /\b/*\b*b\bbo\bod\bdy\by*\b*/\b/);\n virtual bool o\bon\bn_\b_u\bun\bnk\bkn\bno\bow\bwn\bn_\b_m\bme\bes\bss\bsa\bag\bge\be (int /\b/*\b*l\ble\ben\bng\bgt\bth\bh*\b*/\b/, int /\b/*\b*m\bms\bsg\bg*\b*/\b/,\n span /\b/*\b*b\bbo\bod\bdy\by*\b*/\b/);\n- virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs (piece_index_t);\n virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_f\bfa\bai\bil\ble\bed\bd (piece_index_t);\n+ virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs (piece_index_t);\n virtual void t\bti\bic\bck\bk ();\n virtual bool w\bwr\bri\bit\bte\be_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bty\byp\bpe\be(\b()\b) *\b**\b**\b**\b**\b*\n virtual string_view t\bty\byp\bpe\be () const;\n This function is expected to return the name of the _\bp_\bl_\bu_\bg_\bi_\bn.\n@@ -426,48 +426,48 @@\n *\b**\b**\b**\b**\b* o\bon\bn_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be(\b()\b) *\b**\b**\b**\b**\b*\n virtual bool o\bon\bn_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be (bdecode_node const&);\n called when the extension handshake from the other end is received if this\n returns false, it means that this extension isn't supported by this peer. It\n will result in this _\bp_\be_\be_\br_\b__\bp_\bl_\bu_\bg_\bi_\bn being removed from the peer_connection and\n destructed. this is not called for web seeds\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bon\bn_\b_u\bun\bnc\bch\bho\bok\bke\be(\b()\b) o\bon\bn_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) o\bon\bn_\b_c\bch\bho\bok\bke\be(\b()\b) o\bon\bn_\b_h\bha\bav\bve\be_\b_n\bno\bon\bne\be(\b()\b) o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl(\b()\b)\n-o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt(\b()\b) o\bon\bn_\b_h\bha\bav\bve\be(\b()\b) o\bon\bn_\b_r\bre\beq\bqu\bue\bes\bst\bt(\b()\b) o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be(\b()\b) o\bon\bn_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b)\n-o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd(\b()\b) o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be(\b()\b) o\bon\bn_\b_h\bha\bav\bve\be_\b_n\bno\bon\bne\be(\b()\b) o\bon\bn_\b_u\bun\bnc\bch\bho\bok\bke\be(\b()\b)\n+o\bon\bn_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) o\bon\bn_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) o\bon\bn_\b_h\bha\bav\bve\be(\b()\b) o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl(\b()\b) o\bon\bn_\b_c\bch\bho\bok\bke\be(\b()\b)\n+o\bon\bn_\b_r\bre\beq\bqu\bue\bes\bst\bt(\b()\b) o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt(\b()\b) *\b**\b**\b**\b**\b*\n+virtual bool o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& /\b/*\b*b\bbi\bit\btf\bfi\bie\bel\bld\bd*\b*/\b/);\n+virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_n\bno\bon\bne\be ();\n virtual bool o\bon\bn_\b_c\bch\bho\bok\bke\be ();\n-virtual bool o\bon\bn_\b_u\bun\bnc\bch\bho\bok\bke\be ();\n+virtual bool o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt (piece_index_t);\n virtual bool o\bon\bn_\b_h\bha\bav\bve\be (piece_index_t);\n-virtual bool o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n+virtual bool o\bon\bn_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n virtual bool o\bon\bn_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n+virtual bool o\bon\bn_\b_u\bun\bnc\bch\bho\bok\bke\be ();\n+virtual bool o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n virtual bool o\bon\bn_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n-virtual bool o\bon\bn_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n-virtual bool o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt (piece_index_t);\n-virtual bool o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& /\b/*\b*b\bbi\bit\btf\bfi\bie\bel\bld\bd*\b*/\b/);\n-virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n returning true from any of the message handlers indicates that the _\bp_\bl_\bu_\bg_\bi_\bn has\n handled the message. it will break the _\bp_\bl_\bu_\bg_\bi_\bn chain traversing and not let\n anyone else handle the message, including the default handler.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* o\bon\bn_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n virtual bool o\bon\bn_\b_p\bpi\bie\bec\bce\be (peer_request const& /\b/*\b*p\bpi\bie\bec\bce\be*\b*/\b/\n , span /\b/*\b*b\bbu\buf\bf*\b*/\b/);\n This function is called when the peer connection is receiving a piece. buf\n points (non-owning pointer) to the data in an internal immutable disk buffer.\n The length of the data is specified in the length member of the piece\n parameter. returns true to indicate that the piece is handled and the rest of\n the logic should be ignored.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\ben\bnt\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be(\b()\b) s\bse\ben\bnt\bt_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) s\bse\ben\bnt\bt_\b_u\bun\bnc\bch\bho\bok\bke\be(\b()\b)\n-s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n-virtual void s\bse\ben\bnt\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n-virtual void s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be (peer_request const&);\n+*\b**\b**\b**\b**\b* s\bse\ben\bnt\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) s\bse\ben\bnt\bt_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) s\bse\ben\bnt\bt_\b_u\bun\bnc\bch\bho\bok\bke\be(\b()\b)\n+s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be(\b()\b) *\b**\b**\b**\b**\b*\n virtual void s\bse\ben\bnt\bt_\b_u\bun\bnc\bch\bho\bok\bke\be ();\n-virtual void s\bse\ben\bnt\bt_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n+virtual void s\bse\ben\bnt\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n+virtual void s\bse\ben\bnt\bt_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n+virtual void s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be (peer_request const&);\n called after a choke message has been sent to the peer\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\ben\bnt\bt_\b_p\bpa\bay\byl\blo\boa\bad\bd(\b()\b) *\b**\b**\b**\b**\b*\n virtual void s\bse\ben\bnt\bt_\b_p\bpa\bay\byl\blo\boa\bad\bd (int /\b/*\b* b\bby\byt\bte\bes\bs *\b*/\b/);\n called after piece data has been sent to the peer this can be used for stats\n book keeping\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -490,17 +490,17 @@\n receiving large messages.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* o\bon\bn_\b_u\bun\bnk\bkn\bno\bow\bwn\bn_\b_m\bme\bes\bss\bsa\bag\bge\be(\b()\b) *\b**\b**\b**\b**\b*\n virtual bool o\bon\bn_\b_u\bun\bnk\bkn\bno\bow\bwn\bn_\b_m\bme\bes\bss\bsa\bag\bge\be (int /\b/*\b*l\ble\ben\bng\bgt\bth\bh*\b*/\b/, int /\b/*\b*m\bms\bsg\bg*\b*/\b/,\n span /\b/*\b*b\bbo\bod\bdy\by*\b*/\b/);\n this is not called for web seeds\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_f\bfa\bai\bil\ble\bed\bd(\b()\b) o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs(\b()\b) *\b**\b**\b**\b**\b*\n-virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs (piece_index_t);\n+*\b**\b**\b**\b**\b* o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs(\b()\b) o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_f\bfa\bai\bil\ble\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_f\bfa\bai\bil\ble\bed\bd (piece_index_t);\n+virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs (piece_index_t);\n called when a piece that this peer participated in either fails or passes the\n hash_check\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bti\bic\bck\bk(\b()\b) *\b**\b**\b**\b**\b*\n virtual void t\bti\bic\bck\bk ();\n called approximately once every second\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -510,16 +510,16 @@\n original request message won't be sent and no other _\bp_\bl_\bu_\bg_\bi_\bn will have this\n function called.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* c\bcr\bry\byp\bpt\bto\bo_\b_p\bpl\blu\bug\bgi\bin\bn *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\be_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn_\bs_\b._\bh_\bp_\bp\"\n struct crypto_plugin\n {\n- virtual void s\bse\bet\bt_\b_o\bou\but\btg\bgo\boi\bin\bng\bg_\b_k\bke\bey\by (span key) = 0;\n virtual void s\bse\bet\bt_\b_i\bin\bnc\bco\bom\bmi\bin\bng\bg_\b_k\bke\bey\by (span key) = 0;\n+ virtual void s\bse\bet\bt_\b_o\bou\but\btg\bgo\boi\bin\bng\bg_\b_k\bke\bey\by (span key) = 0;\n e\ben\bnc\bcr\bry\byp\bpt\bt (span> /\b/*\b*s\bse\ben\bnd\bd_\b_v\bve\bec\bc*\b*/\b/) = 0;\n virtual std::tuple d\bde\bec\bcr\bry\byp\bpt\bt (span> /\b/*\b*r\bre\bec\bce\bei\biv\bve\be_\b_v\bve\bec\bc*\b*/\b/\n ) = 0;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* d\bde\bec\bcr\bry\byp\bpt\bt(\b()\b) *\b**\b**\b**\b**\b*\n virtual std::tuple d\bde\bec\bcr\bry\byp\bpt\bt (span> /\b/*\b*r\bre\bec\bce\bei\biv\bve\be_\b_v\bve\bec\bc*\b*/\b/) =\n@@ -546,22 +546,22 @@\n void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (std::shared_ptr);\n bool i\bis\bs_\b_s\bse\bee\bed\bd () const;\n bool u\bup\bpl\blo\boa\bad\bd_\b_o\bon\bnl\bly\by () const;\n peer_id const& p\bpi\bid\bd () const;\n bool h\bha\bas\bs_\b_p\bpi\bie\bec\bce\be (piece_index_t i) const;\n bool i\bis\bs_\b_c\bch\bho\bok\bke\bed\bd () const;\n bool i\bis\bs_\b_i\bin\bnt\bte\ber\bre\bes\bst\bti\bin\bng\bg () const;\n- bool h\bha\bas\bs_\b_p\bpe\bee\ber\br_\b_c\bch\bho\bok\bke\bed\bd () const;\n bool i\bis\bs_\b_p\bpe\bee\ber\br_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd () const;\n+ bool h\bha\bas\bs_\b_p\bpe\bee\ber\br_\b_c\bch\bho\bok\bke\bed\bd () const;\n void m\bma\bay\byb\bbe\be_\b_u\bun\bnc\bch\bho\bok\bke\be_\b_t\bth\bhi\bis\bs_\b_p\bpe\bee\ber\br ();\n void c\bch\bho\bok\bke\be_\b_t\bth\bhi\bis\bs_\b_p\bpe\bee\ber\br ();\n void g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo (peer_info& p) const;\n torrent_handle a\bas\bss\bso\boc\bci\bia\bat\bte\bed\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt () const;\n- _\bt_\bc_\bp_\b:_\b:_\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt l\blo\boc\bca\bal\bl_\b_e\ben\bnd\bdp\bpo\boi\bin\bnt\bt () const;\n _\bt_\bc_\bp_\b:_\b:_\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt const& r\bre\bem\bmo\bot\bte\be () const;\n+ _\bt_\bc_\bp_\b:_\b:_\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt l\blo\boc\bca\bal\bl_\b_e\ben\bnd\bdp\bpo\boi\bin\bnt\bt () const;\n bool i\bis\bs_\b_d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bti\bin\bng\bg () const;\n bool i\bis\bs_\b_c\bco\bon\bnn\bne\bec\bct\bti\bin\bng\bg () const;\n void d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bt (error_code const& ec, operation_t op\n , disconnect_severity_t = peer_connection_interface::normal);\n bool i\bis\bs_\b_o\bou\but\btg\bgo\boi\bin\bng\bg () const;\n bool i\big\bgn\bno\bor\bre\be_\b_u\bun\bnc\bch\bho\bok\bke\be_\b_s\bsl\blo\bot\bts\bs () const;\n bool o\bon\bn_\b_l\blo\boc\bca\bal\bl_\b_n\bne\bet\btw\bwo\bor\brk\bk () const;\n@@ -570,18 +570,18 @@\n , char const* event, char const* fmt = \"\", ...) const TORRENT_FORMAT\n (4,5);\n bool s\bsh\bho\bou\bul\bld\bd_\b_l\blo\bog\bg (peer_log_alert::direction_t direction) const;\n bool c\bca\ban\bn_\b_d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bt (error_code const& ec) const;\n bool h\bha\bas\bs_\b_m\bme\bet\bta\bad\bda\bat\bta\ba () const;\n bool i\bin\bn_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be () const;\n void s\bse\ben\bnd\bd_\b_b\bbu\buf\bff\bfe\ber\br (char const* begin, int size);\n- time_point t\bti\bim\bme\be_\b_o\bof\bf_\b_l\bla\bas\bst\bt_\b_u\bun\bnc\bch\bho\bok\bke\be () const;\n std::time_t l\bla\bas\bst\bt_\b_s\bse\bee\ben\bn_\b_c\bco\bom\bmp\bpl\ble\bet\bte\be () const;\n- bool o\bop\bpe\ber\bra\bat\bto\bor\br<\b< (peer_connection_handle const& o) const;\n+ time_point t\bti\bim\bme\be_\b_o\bof\bf_\b_l\bla\bas\bst\bt_\b_u\bun\bnc\bch\bho\bok\bke\be () const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (peer_connection_handle const& o) const;\n+ bool o\bop\bpe\ber\bra\bat\bto\bor\br<\b< (peer_connection_handle const& o) const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (peer_connection_handle const& o) const;\n std::shared_ptr n\bna\bat\bti\biv\bve\be_\b_h\bha\ban\bnd\bdl\ble\be () const;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* b\bbt\bt_\b_p\bpe\bee\ber\br_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn_\b_h\bha\ban\bnd\bdl\ble\be *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bp_\be_\be_\br_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b__\bh_\ba_\bn_\bd_\bl_\be_\b._\bh_\bp_\bp\"\n The _\bb_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b__\bh_\ba_\bn_\bd_\bl_\be provides a handle to the internal bittorrent peer\n@@ -589,16 +589,16 @@\n libtorrent versions.\n struct bt_peer_connection_handle : peer_connection_handle\n {\n explicit b\bbt\bt_\b_p\bpe\bee\ber\br_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn_\b_h\bha\ban\bnd\bdl\ble\be (peer_connection_handle pc);\n bool p\bpa\bac\bck\bke\bet\bt_\b_f\bfi\bin\bni\bis\bsh\bhe\bed\bd () const;\n bool s\bsu\bup\bpp\bpo\bor\brt\bt_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bns\bs () const;\n bool s\bsu\bup\bpp\bpo\bor\brt\bts\bs_\b_e\ben\bnc\bcr\bry\byp\bpt\bti\bio\bon\bn () const;\n- void s\bsw\bwi\bit\btc\bch\bh_\b_r\bre\bec\bcv\bv_\b_c\bcr\bry\byp\bpt\bto\bo (std::shared_ptr crypto);\n void s\bsw\bwi\bit\btc\bch\bh_\b_s\bse\ben\bnd\bd_\b_c\bcr\bry\byp\bpt\bto\bo (std::shared_ptr crypto);\n+ void s\bsw\bwi\bit\btc\bch\bh_\b_r\bre\bec\bcv\bv_\b_c\bcr\bry\byp\bpt\bto\bo (std::shared_ptr crypto);\n std::shared_ptr n\bna\bat\bti\biv\bve\be_\b_h\bha\ban\bnd\bdl\ble\be () const;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* c\bcr\bre\bea\bat\bte\be_\b_u\but\bt_\b_p\bpe\bex\bx_\b_p\bpl\blu\bug\bgi\bin\bn(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\be_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\b__\bp_\be_\bx_\b._\bh_\bp_\bp\"\n std::shared_ptr c\bcr\bre\bea\bat\bte\be_\b_u\but\bt_\b_p\bpe\bex\bx_\b_p\bpl\blu\bug\bgi\bin\bn (torrent_handle const&,\n client_data_t);\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Resume_Data.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Resume_Data.html", "unified_diff": "@@ -29,31 +29,31 @@\n \n \n

    home

    \n \n [report issue]
    \n

    read_resume_data()

    \n

    Declared in "libtorrent/read_resume_data.hpp"

    \n
    \n add_torrent_params read_resume_data (bdecode_node const& rd\n-   , error_code& ec, int piece_limit = 0x200000);\n-add_torrent_params read_resume_data (span<char const> buffer\n-   , load_torrent_limits const& cfg = {});\n-add_torrent_params read_resume_data (bdecode_node const& rd\n    , int piece_limit = 0x200000);\n add_torrent_params read_resume_data (span<char const> buffer\n    , error_code& ec, load_torrent_limits const& cfg = {});\n+add_torrent_params read_resume_data (span<char const> buffer\n+   , load_torrent_limits const& cfg = {});\n+add_torrent_params read_resume_data (bdecode_node const& rd\n+   , error_code& ec, int piece_limit = 0x200000);\n 
    \n

    these functions are used to parse resume data and populate the appropriate\n fields in an add_torrent_params object. This object can then be used to add\n the actual torrent_info object to and pass to session::add_torrent() or\n session::async_add_torrent().

    \n

    If the client wants to override any field that was loaded from the resume\n data, e.g. save_path, those fields must be changed after loading resume\n@@ -61,33 +61,33 @@\n

    The piece_limit parameter determines the largest number of pieces\n allowed in the torrent that may be loaded as part of the resume data, if\n it contains an info field. The overloads that take a flat buffer are\n instead configured with limits on torrent sizes via load_torrent limits.

    \n

    In order to support large torrents, it may also be necessary to raise the\n settings_pack::max_piece_count setting and pass a higher limit to calls\n to torrent_info::parse_info_section().

    \n-\n-[report issue]
    \n-
    \n-

    write_resume_data_buf() write_resume_data()

    \n+\n+[report issue]
    \n+
    \n+

    write_resume_data() write_resume_data_buf()

    \n

    Declared in "libtorrent/write_resume_data.hpp"

    \n
    \n-entry write_resume_data (add_torrent_params const& atp);\n std::vector<char> write_resume_data_buf (add_torrent_params const& atp);\n+entry write_resume_data (add_torrent_params const& atp);\n 
    \n

    this function turns the resume data in an add_torrent_params object\n into a bencoded structure

    \n \n [report issue]
    \n
    \n

    write_torrent_file_buf() write_torrent_file()

    \n

    Declared in "libtorrent/write_resume_data.hpp"

    \n
    \n-entry write_torrent_file (add_torrent_params const& atp, write_torrent_flags_t flags);\n entry write_torrent_file (add_torrent_params const& atp);\n+entry write_torrent_file (add_torrent_params const& atp, write_torrent_flags_t flags);\n std::vector<char> write_torrent_file_buf (add_torrent_params const& atp\n    , write_torrent_flags_t flags);\n 
    \n

    writes only the fields to create a .torrent file. This function may fail\n with a std::system_error exception if:

    \n
      \n
    • The add_torrent_params object passed to this function does not contain the\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,27 @@\n >\n _\b[_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b _\bl_\bo_\bg_\bo_\b]\n V\bVe\ber\brs\bsi\bio\bon\bn:\b: 2.0.11\n _\bh_\bo_\bm_\be\n Table of contents\n * _\br_\be_\ba_\bd_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)\n- * _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\bb_\bu_\bf_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)\n+ * _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\bb_\bu_\bf_\b(_\b)\n * _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b__\bb_\bu_\bf_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)\n * _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b__\bt\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\br_\be_\ba_\bd_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b._\bh_\bp_\bp\"\n add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (bdecode_node const& rd\n- , error_code& ec, int piece_limit = 0x200000);\n-add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (span buffer\n- , load_torrent_limits const& cfg = {});\n-add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (bdecode_node const& rd\n , int piece_limit = 0x200000);\n add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (span buffer\n , error_code& ec, load_torrent_limits const& cfg = {});\n+add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (span buffer\n+ , load_torrent_limits const& cfg = {});\n+add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (bdecode_node const& rd\n+ , error_code& ec, int piece_limit = 0x200000);\n these functions are used to parse resume data and populate the appropriate\n fields in an _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs object. This object can then be used to add the\n actual _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object to and pass to session::add_torrent() or session::\n async_add_torrent().\n If the client wants to override any field that was loaded from the resume data,\n e.g. save_path, those fields must be changed after loading resume data but\n before adding the torrent.\n@@ -29,26 +29,26 @@\n the torrent that may be loaded as part of the resume data, if it contains an\n info field. The overloads that take a flat buffer are instead configured with\n limits on torrent sizes via load_torrent limits.\n In order to support large torrents, it may also be necessary to raise the\n _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk_\b:_\b:_\bm_\ba_\bx_\b__\bp_\bi_\be_\bc_\be_\b__\bc_\bo_\bu_\bn_\bt setting and pass a higher limit to calls to\n _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo_\b:_\b:_\bp_\ba_\br_\bs_\be_\b__\bi_\bn_\bf_\bo_\b__\bs_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b**\b* w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba_\b_b\bbu\buf\bf(\b()\b) w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba(\b()\b) *\b**\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b**\b* w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba(\b()\b) w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba_\b_b\bbu\buf\bf(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b._\bh_\bp_\bp\"\n-entry w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (add_torrent_params const& atp);\n std::vector w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba_\b_b\bbu\buf\bf (add_torrent_params const& atp);\n+entry w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (add_torrent_params const& atp);\n this function turns the resume data in an add_torrent_params object into a\n bencoded structure\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be_\b_b\bbu\buf\bf(\b()\b) w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b._\bh_\bp_\bp\"\n+entry w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (add_torrent_params const& atp);\n entry w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (add_torrent_params const& atp, write_torrent_flags_t\n flags);\n-entry w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (add_torrent_params const& atp);\n std::vector w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be_\b_b\bbu\buf\bf (add_torrent_params const& atp\n , write_torrent_flags_t flags);\n writes only the fields to create a .torrent file. This function may fail with a\n std::system_error exception if:\n * The _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs object passed to this function does not contain\n the info dictionary (the ti field)\n * The piece layers are not complete for all files that need them\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Session.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Session.html", "unified_diff": "@@ -34,109 +34,109 @@\n \n
    \n [report issue]
    \n

    session_params

    \n

    Declared in "libtorrent/session_params.hpp"

    \n

    The session_params is a parameters pack for configuring the session\n before it's started.

    \n
    \n struct session_params\n {\n-   session_params ();\n    session_params (settings_pack&& sp);\n+   session_params ();\n    session_params (settings_pack const& sp);\n-   session_params (settings_pack const& sp\n-      , std::vector<std::shared_ptr<plugin>> exts);\n    session_params (settings_pack&& sp\n       , std::vector<std::shared_ptr<plugin>> exts);\n+   session_params (settings_pack const& sp\n+      , std::vector<std::shared_ptr<plugin>> exts);\n \n    settings_pack settings;\n    std::vector<std::shared_ptr<plugin>> extensions;\n    dht::dht_state dht_state;\n    dht::dht_storage_constructor_type dht_storage_constructor;\n    disk_io_constructor_type disk_io_constructor;\n    std::map<std::string, std::string> ext_state;\n    libtorrent::ip_filter ip_filter;\n };\n 
    \n [report issue]
    \n

    session_params()

    \n
    \n-session_params ();\n session_params (settings_pack&& sp);\n+session_params ();\n session_params (settings_pack const& sp);\n 
    \n

    This constructor can be used to start with the default plugins\n (ut_metadata, ut_pex and smart_ban). Pass a settings_pack to set the\n initial settings when the session starts.

    \n [report issue]
    \n
    \n

    session_params()

    \n
    \n-session_params (settings_pack const& sp\n-      , std::vector<std::shared_ptr<plugin>> exts);\n session_params (settings_pack&& sp\n       , std::vector<std::shared_ptr<plugin>> exts);\n+session_params (settings_pack const& sp\n+      , std::vector<std::shared_ptr<plugin>> exts);\n 
    \n

    This constructor helps to configure the set of initial plugins\n to be added to the session before it's started.

    \n [report issue]
    \n
    settings
    \n
    The settings to configure the session with
    \n
    \n@@ -178,33 +178,33 @@\n synchronize the completion of the shutdown. The lifetime of this object\n may outlive session, causing the session destructor to not block. The\n session_proxy destructor will block however, until the underlying session\n is done shutting down.

    \n
    \n struct session_proxy\n {\n-   session_proxy (session_proxy const&);\n-   ~session_proxy ();\n-   session_proxy& operator= (session_proxy&&) & noexcept;\n+   session_proxy ();\n    session_proxy (session_proxy&&) noexcept;\n+   session_proxy& operator= (session_proxy&&) & noexcept;\n    session_proxy& operator= (session_proxy const&) &;\n-   session_proxy ();\n+   ~session_proxy ();\n+   session_proxy (session_proxy const&);\n };\n 
    \n+\n \n-\n-[report issue]
    \n-

    session_proxy() ~session_proxy() operator=()

    \n+[report issue]
    \n+

    operator=() session_proxy() ~session_proxy()

    \n
    \n-session_proxy (session_proxy const&);\n-~session_proxy ();\n-session_proxy& operator= (session_proxy&&) & noexcept;\n+session_proxy ();\n session_proxy (session_proxy&&) noexcept;\n+session_proxy& operator= (session_proxy&&) & noexcept;\n session_proxy& operator= (session_proxy const&) &;\n-session_proxy ();\n+~session_proxy ();\n+session_proxy (session_proxy const&);\n 
    \n

    default constructor, does not refer to any session\n implementation object.

    \n [report issue]
    \n
    \n
    \n

    session

    \n@@ -218,52 +218,52 @@\n session_handle::apply_settings() member function. To change one or more\n configuration options, create a settings_pack. object and fill it with\n the settings to be set and pass it in to session::apply_settings().

    \n

    see apply_settings().

    \n
    \n struct session : session_handle\n {\n-   session (session_params const& params, session_flags_t flags);\n+   session ();\n    explicit session (session_params&& params);\n-   explicit session (session_params const& params);\n    session (session_params&& params, session_flags_t flags);\n-   session ();\n-   session (session_params&& params, io_context& ios);\n-   session (session_params const& params, io_context& ios);\n-   session (session_params const& params, io_context& ios, session_flags_t);\n+   session (session_params const& params, session_flags_t flags);\n+   explicit session (session_params const& params);\n    session (session_params&& params, io_context& ios, session_flags_t);\n+   session (session_params const& params, io_context& ios, session_flags_t);\n+   session (session_params const& params, io_context& ios);\n+   session (session_params&& params, io_context& ios);\n    ~session ();\n    session_proxy abort ();\n };\n 
    \n [report issue]
    \n

    session()

    \n
    \n-session (session_params const& params, session_flags_t flags);\n+session ();\n explicit session (session_params&& params);\n-explicit session (session_params const& params);\n session (session_params&& params, session_flags_t flags);\n-session ();\n+session (session_params const& params, session_flags_t flags);\n+explicit session (session_params const& params);\n 
    \n

    Constructs the session objects which acts as the container of torrents.\n In order to avoid a race condition between starting the session and\n configuring it, you can pass in a session_params object. Its settings\n will take effect before the session starts up.

    \n

    The overloads taking flags can be used to start a session in\n paused mode (by passing in session::paused). Note that\n add_default_plugins do not have an affect on constructors that\n take a session_params object. It already contains the plugins to use.

    \n [report issue]
    \n
    \n

    session()

    \n
    \n-session (session_params&& params, io_context& ios);\n-session (session_params const& params, io_context& ios);\n-session (session_params const& params, io_context& ios, session_flags_t);\n session (session_params&& params, io_context& ios, session_flags_t);\n+session (session_params const& params, io_context& ios, session_flags_t);\n+session (session_params const& params, io_context& ios);\n+session (session_params&& params, io_context& ios);\n 
    \n

    Overload of the constructor that takes an external io_context to run\n the session object on. This is primarily useful for tests that may want\n to run multiple sessions on a single io_context, or low resource\n systems where additional threads are expensive and sharing an\n io_context with other events is fine.

    \n
    \n@@ -328,24 +328,24 @@\n std::function<bool(torrent_status const&)> const& pred\n , status_flags_t flags = {}) const;\n void post_torrent_updates (status_flags_t flags = status_flags_t::all());\n void post_session_stats ();\n void post_dht_stats ();\n void set_dht_state (dht::dht_state const& st);\n void set_dht_state (dht::dht_state&& st);\n- torrent_handle find_torrent (sha1_hash const& info_hash) const;\n std::vector<torrent_handle> get_torrents () const;\n+ torrent_handle find_torrent (sha1_hash const& info_hash) const;\n+ void async_add_torrent (add_torrent_params&& params);\n torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n torrent_handle add_torrent (add_torrent_params const& params);\n+ torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n void async_add_torrent (add_torrent_params const& params);\n torrent_handle add_torrent (add_torrent_params&& params);\n- torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n- void async_add_torrent (add_torrent_params&& params);\n- bool is_paused () const;\n void resume ();\n+ bool is_paused () const;\n void pause ();\n bool is_dht_running () const;\n void set_dht_storage (dht::dht_storage_constructor_type sc);\n void add_dht_node (std::pair<std::string, int> const& node);\n void dht_get_item (sha1_hash const& target);\n void dht_get_item (std::array<char, 32> key\n , std::string salt = std::string());\n@@ -358,35 +358,35 @@\n void dht_get_peers (sha1_hash const& info_hash);\n void dht_live_nodes (sha1_hash const& nid);\n void dht_sample_infohashes (udp::endpoint const& ep, sha1_hash const& target);\n void dht_direct_request (udp::endpoint const& ep, entry const& e, client_data_t userdata = {});\n void add_extension (std::shared_ptr<plugin> ext);\n void add_extension (std::function<std::shared_ptr<torrent_plugin>(\n torrent_handle const&, client_data_t)> ext);\n- ip_filter get_ip_filter () const;\n void set_ip_filter (ip_filter f);\n+ ip_filter get_ip_filter () const;\n void set_port_filter (port_filter const& f);\n- unsigned short ssl_listen_port () const;\n unsigned short listen_port () const;\n bool is_listening () const;\n+ unsigned short ssl_listen_port () const;\n void set_peer_class_filter (ip_filter const& f);\n ip_filter get_peer_class_filter () const;\n- peer_class_type_filter get_peer_class_type_filter () const;\n void set_peer_class_type_filter (peer_class_type_filter const& f);\n+ peer_class_type_filter get_peer_class_type_filter () const;\n peer_class_t create_peer_class (char const* name);\n void delete_peer_class (peer_class_t cid);\n- void set_peer_class (peer_class_t cid, peer_class_info const& pci);\n peer_class_info get_peer_class (peer_class_t cid) const;\n+ void set_peer_class (peer_class_t cid, peer_class_info const& pci);\n void remove_torrent (const torrent_handle&, remove_flags_t = {});\n+ void apply_settings (settings_pack const&);\n settings_pack get_settings () const;\n void apply_settings (settings_pack&&);\n- void apply_settings (settings_pack const&);\n void pop_alerts (std::vector<alert*>* alerts);\n- alert* wait_for_alert (time_duration max_wait);\n void set_alert_notify (std::function<void()> const& fun);\n+ alert* wait_for_alert (time_duration max_wait);\n void delete_port_mapping (port_mapping_t handle);\n std::vector<port_mapping_t> add_port_mapping (portmap_protocol t, int external_port, int local_port);\n void reopen_network_sockets (reopen_network_flags_t options = reopen_map_ports);\n std::shared_ptr<aux::session_impl> native_handle () const;\n \n static constexpr save_state_flags_t save_settings = 0_bit;\n static constexpr save_state_flags_t save_dht_state = 2_bit;\n@@ -420,18 +420,18 @@\n

    returns the current session state. This can be passed to\n write_session_params() to save the state to disk and restored using\n read_session_params() when constructing a new session. The kind of\n state that's included is all settings, the DHT routing table, possibly\n plugin-specific state.\n the flags parameter can be used to only save certain parts of the\n session state

    \n-\n-[report issue]
    \n-
    \n-

    get_torrent_status() refresh_torrent_status()

    \n+\n+[report issue]
    \n+
    \n+

    refresh_torrent_status() get_torrent_status()

    \n
    \n void refresh_torrent_status (std::vector<torrent_status>* ret\n       , status_flags_t flags = {}) const;\n std::vector<torrent_status> get_torrent_status (\n       std::function<bool(torrent_status const&)> const& pred\n       , status_flags_t flags = {}) const;\n 
    \n@@ -507,41 +507,41 @@\n
    \n void set_dht_state (dht::dht_state const& st);\n void set_dht_state (dht::dht_state&& st);\n 
    \n

    set the DHT state for the session. This will be taken into account the\n next time the DHT is started, as if it had been passed in via the\n session_params on startup.

    \n-\n-[report issue]
    \n-
    \n-

    find_torrent() get_torrents()

    \n+\n+[report issue]
    \n+
    \n+

    get_torrents() find_torrent()

    \n
    \n-torrent_handle find_torrent (sha1_hash const& info_hash) const;\n std::vector<torrent_handle> get_torrents () const;\n+torrent_handle find_torrent (sha1_hash const& info_hash) const;\n 
    \n

    find_torrent() looks for a torrent with the given info-hash. In\n case there is such a torrent in the session, a torrent_handle to that\n torrent is returned. In case the torrent cannot be found, an invalid\n torrent_handle is returned.

    \n

    See torrent_handle::is_valid() to know if the torrent was found or\n not.

    \n

    get_torrents() returns a vector of torrent_handles to all the\n torrents currently in the session.

    \n \n [report issue]
    \n
    \n

    add_torrent() async_add_torrent()

    \n
    \n+void async_add_torrent (add_torrent_params&& params);\n torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n torrent_handle add_torrent (add_torrent_params const& params);\n+torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n void async_add_torrent (add_torrent_params const& params);\n torrent_handle add_torrent (add_torrent_params&& params);\n-torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n-void async_add_torrent (add_torrent_params&& params);\n 
    \n

    You add torrents through the add_torrent() function where you give an\n object with all the parameters. The add_torrent() overloads will block\n until the torrent has been added (or failed to be added) and returns\n an error code and a torrent_handle. In order to add torrents more\n efficiently, consider using async_add_torrent() which returns\n immediately, without waiting for the torrent to add. Notification of\n@@ -566,22 +566,22 @@\n want to control are torrent_flags::paused and\n torrent_flags::auto_managed. In order to add a magnet link that will\n just download the metadata, but no payload, set the\n torrent_flags::upload_mode flag.

    \n

    Special consideration has to be taken when adding hybrid torrents\n (i.e. torrents that are BitTorrent v2 torrents that are backwards\n compatible with v1). For more details, see BitTorrent v2 torrents.

    \n-\n+\n \n-[report issue]
    \n-
    \n-

    pause() is_paused() resume()

    \n+[report issue]
    \n+
    \n+

    resume() is_paused() pause()

    \n
    \n-bool is_paused () const;\n void resume ();\n+bool is_paused () const;\n void pause ();\n 
    \n

    Pausing the session has the same effect as pausing every torrent in\n it, except that torrents will not be resumed by the auto-manage\n mechanism. Resuming will restore the torrents to their previous paused\n state. i.e. the session pause state is separate from the torrent pause\n state. A torrent is inactive if it is paused or if the session is\n@@ -690,18 +690,18 @@\n with the function object's context and make the function entirely\n self-contained. The only reason data blob's value is computed\n via a function instead of just passing in the new value is to avoid\n race conditions. If you want to update the value in the DHT, you\n must first retrieve it, then modify it, then write it back. The way\n the DHT works, it is natural to always do a lookup before storing and\n calling the callback in between is convenient.

    \n-\n-[report issue]
    \n-
    \n-

    dht_announce() dht_get_peers()

    \n+\n+[report issue]
    \n+
    \n+

    dht_get_peers() dht_announce()

    \n
    \n void dht_announce (sha1_hash const& info_hash, int port = 0, dht::announce_flags_t flags = {});\n void dht_get_peers (sha1_hash const& info_hash);\n 
    \n

    dht_get_peers() will issue a DHT get_peer request to the DHT for the\n specified info-hash. The response (the peers) will be posted back in a\n dht_get_peers_reply_alert.

    \n@@ -792,16 +792,16 @@\n ses.add_extension(&lt::create_smart_ban_plugin);\n
    \n \n [report issue]
    \n
    \n

    set_ip_filter() get_ip_filter()

    \n
    \n-ip_filter get_ip_filter () const;\n void set_ip_filter (ip_filter f);\n+ip_filter get_ip_filter () const;\n 
    \n

    Sets a filter that will be used to reject and accept incoming as well\n as outgoing connections based on their originating ip address. The\n default filter will allow connections to any ip address. To build a\n set of rules for which addresses are accepted and not, see ip_filter.

    \n

    Each time a peer is blocked because of the IP filter, a\n peer_blocked_alert is generated. get_ip_filter() Returns the\n@@ -813,33 +813,33 @@\n void set_port_filter (port_filter const& f);\n

    \n

    apply port_filter f to incoming and outgoing peers. a port filter\n will reject making outgoing peer connections to certain remote ports.\n The main intention is to be able to avoid triggering certain\n anti-virus software by connecting to SMTP, FTP ports.

    \n \n-\n-[report issue]
    \n-
    \n-

    listen_port() is_listening() ssl_listen_port()

    \n+\n+[report issue]
    \n+
    \n+

    listen_port() ssl_listen_port() is_listening()

    \n
    \n-unsigned short ssl_listen_port () const;\n unsigned short listen_port () const;\n bool is_listening () const;\n+unsigned short ssl_listen_port () const;\n 
    \n

    is_listening() will tell you whether or not the session has\n successfully opened a listening port. If it hasn't, this function will\n return false, and then you can set a new\n settings_pack::listen_interfaces to try another interface and port to\n bind to.

    \n

    listen_port() returns the port we ended up listening on.

    \n-\n-[report issue]
    \n-
    \n-

    set_peer_class_filter() get_peer_class_filter()

    \n+\n+[report issue]
    \n+
    \n+

    get_peer_class_filter() set_peer_class_filter()

    \n
    \n void set_peer_class_filter (ip_filter const& f);\n ip_filter get_peer_class_filter () const;\n 
    \n

    Sets the peer class filter for this session. All new peer connections\n will take this into account and be added to the peer classes specified\n by this filter, based on the peer's IP address.

    \n@@ -867,16 +867,16 @@\n

    The get_peer_class_filter() function returns the current filter.

    \n

    For more information, see peer classes.

    \n \n [report issue]
    \n
    \n

    get_peer_class_type_filter() set_peer_class_type_filter()

    \n
    \n-peer_class_type_filter get_peer_class_type_filter () const;\n void set_peer_class_type_filter (peer_class_type_filter const& f);\n+peer_class_type_filter get_peer_class_type_filter () const;\n 
    \n

    Sets and gets the peer class type filter. This is controls automatic\n peer class assignments to peers based on what kind of socket it is.

    \n

    It does not only support assigning peer classes, it also supports\n removing peer classes based on socket type.

    \n

    The order of these rules being applied are:

    \n
      \n@@ -915,21 +915,21 @@\n remove the peer class if it's still assigned to torrents or peers. It\n will however remove it once the last peer and torrent drops their\n references to it.

      \n

      There is no need to call this function for custom peer classes. All\n peer classes will be properly destructed when the session object\n destructs.

      \n

      For more information on peer classes, see peer classes.

      \n-\n-[report issue]
    \n-
    \n-

    set_peer_class() get_peer_class()

    \n+\n+[report issue]
    \n+
    \n+

    get_peer_class() set_peer_class()

    \n
    \n-void set_peer_class (peer_class_t cid, peer_class_info const& pci);\n peer_class_info get_peer_class (peer_class_t cid) const;\n+void set_peer_class (peer_class_t cid, peer_class_info const& pci);\n 
    \n

    These functions queries information from a peer class and updates the\n configuration of a peer class, respectively.

    \n

    cid must refer to an existing peer class. If it does not, the\n return value of get_peer_class() is undefined.

    \n

    set_peer_class() sets all the information in the\n peer_class_info object in the specified peer class. There is no\n@@ -974,30 +974,30 @@\n advised to remove them from the back of the queue, to minimize the\n shifting.

    \n \n [report issue]
    \n
    \n

    apply_settings() get_settings()

    \n
    \n+void apply_settings (settings_pack const&);\n settings_pack get_settings () const;\n void apply_settings (settings_pack&&);\n-void apply_settings (settings_pack const&);\n 
    \n

    Applies the settings specified by the settings_pack s. This is an\n asynchronous operation that will return immediately and actually apply\n the settings to the main thread of libtorrent some time later.

    \n-\n+\n \n-[report issue]
    \n-
    \n-

    wait_for_alert() set_alert_notify() pop_alerts()

    \n+[report issue]
    \n+
    \n+

    pop_alerts() set_alert_notify() wait_for_alert()

    \n
    \n void pop_alerts (std::vector<alert*>* alerts);\n-alert* wait_for_alert (time_duration max_wait);\n void set_alert_notify (std::function<void()> const& fun);\n+alert* wait_for_alert (time_duration max_wait);\n 
    \n

    Alerts is the main mechanism for libtorrent to report errors and\n events. pop_alerts fills in the vector passed to it with pointers\n to new alerts. The session still owns these alerts and they will stay\n valid until the next time pop_alerts is called. You may not delete\n the alert objects.

    \n

    It is safe to call pop_alerts from multiple different threads, as\n@@ -1123,30 +1123,30 @@\n [report issue]

    \n
    reopen_map_ports
    \n
    This option indicates if the ports are mapped using natpmp\n and upnp. If mapping was already made, they are deleted and added\n again. This only works if natpmp and/or upnp are configured to be\n enable.
    \n
    \n-\n \n-[report issue]
    \n+\n+[report issue]\n \n-
    \n-

    read_session_params() write_session_params() write_session_params_buf()

    \n+
    \n+

    write_session_params() read_session_params() write_session_params_buf()

    \n

    Declared in "libtorrent/session_params.hpp"

    \n
    \n std::vector<char> write_session_params_buf (session_params const& sp\n    , save_state_flags_t flags = save_state_flags_t::all());\n+session_params read_session_params (bdecode_node const& e\n+   , save_state_flags_t flags = save_state_flags_t::all());\n entry write_session_params (session_params const& sp\n    , save_state_flags_t flags = save_state_flags_t::all());\n session_params read_session_params (span<char const> buf\n    , save_state_flags_t flags = save_state_flags_t::all());\n-session_params read_session_params (bdecode_node const& e\n-   , save_state_flags_t flags = save_state_flags_t::all());\n 
    \n

    These functions serialize and de-serialize a session_params object to and\n from bencoded form. The session_params object is used to initialize a new\n session using the state from a previous one (or by programmatically configure\n the session up-front).\n The flags parameter can be used to only save and load certain aspects of the\n session's state.\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,95 +3,95 @@\n V\bVe\ber\brs\bsi\bio\bon\bn:\b: 2.0.11\n _\bh_\bo_\bm_\be\n Table of contents\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs\n o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)\n o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by\n- o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by_\b(_\b)_\b _\b~_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n+ o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by_\b(_\b)_\b _\b~_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by_\b(_\b)\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn\n o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b(_\b)\n o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b(_\b)\n o _\b~_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b(_\b)\n o _\ba_\bb_\bo_\br_\bt_\b(_\b)\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bh_\ba_\bn_\bd_\bl_\be\n o _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b)\n o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bs_\bt_\ba_\bt_\be_\b(_\b)\n- o _\bg_\be_\bt_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)_\b _\br_\be_\bf_\br_\be_\bs_\bh_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)\n+ o _\br_\be_\bf_\br_\be_\bs_\bh_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)_\b _\bg_\be_\bt_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)\n o _\bp_\bo_\bs_\bt_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bu_\bp_\bd_\ba_\bt_\be_\bs_\b(_\b)\n o _\bp_\bo_\bs_\bt_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bs_\bt_\ba_\bt_\bs_\b(_\b)\n o _\bp_\bo_\bs_\bt_\b__\bd_\bh_\bt_\b__\bs_\bt_\ba_\bt_\bs_\b(_\b)\n o _\bs_\be_\bt_\b__\bd_\bh_\bt_\b__\bs_\bt_\ba_\bt_\be_\b(_\b)\n- o _\bf_\bi_\bn_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)_\b _\bg_\be_\bt_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\bs_\b(_\b)\n+ o _\bg_\be_\bt_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\bs_\b(_\b)_\b _\bf_\bi_\bn_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n o _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)_\b _\ba_\bs_\by_\bn_\bc_\b__\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n- o _\bp_\ba_\bu_\bs_\be_\b(_\b)_\b _\bi_\bs_\b__\bp_\ba_\bu_\bs_\be_\bd_\b(_\b)_\b _\br_\be_\bs_\bu_\bm_\be_\b(_\b)\n+ o _\br_\be_\bs_\bu_\bm_\be_\b(_\b)_\b _\bi_\bs_\b__\bp_\ba_\bu_\bs_\be_\bd_\b(_\b)_\b _\bp_\ba_\bu_\bs_\be_\b(_\b)\n o _\bi_\bs_\b__\bd_\bh_\bt_\b__\br_\bu_\bn_\bn_\bi_\bn_\bg_\b(_\b)\n o _\bs_\be_\bt_\b__\bd_\bh_\bt_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b(_\b)\n o _\ba_\bd_\bd_\b__\bd_\bh_\bt_\b__\bn_\bo_\bd_\be_\b(_\b)\n o _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bi_\bt_\be_\bm_\b(_\b)\n o _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bi_\bt_\be_\bm_\b(_\b)\n o _\bd_\bh_\bt_\b__\bp_\bu_\bt_\b__\bi_\bt_\be_\bm_\b(_\b)\n o _\bd_\bh_\bt_\b__\bp_\bu_\bt_\b__\bi_\bt_\be_\bm_\b(_\b)\n- o _\bd_\bh_\bt_\b__\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b)_\b _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bp_\be_\be_\br_\bs_\b(_\b)\n+ o _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bp_\be_\be_\br_\bs_\b(_\b)_\b _\bd_\bh_\bt_\b__\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b)\n o _\bd_\bh_\bt_\b__\bl_\bi_\bv_\be_\b__\bn_\bo_\bd_\be_\bs_\b(_\b)\n o _\bd_\bh_\bt_\b__\bs_\ba_\bm_\bp_\bl_\be_\b__\bi_\bn_\bf_\bo_\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)\n o _\bd_\bh_\bt_\b__\bd_\bi_\br_\be_\bc_\bt_\b__\br_\be_\bq_\bu_\be_\bs_\bt_\b(_\b)\n o _\ba_\bd_\bd_\b__\be_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn_\b(_\b)\n o _\bs_\be_\bt_\b__\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)_\b _\bg_\be_\bt_\b__\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)\n o _\bs_\be_\bt_\b__\bp_\bo_\br_\bt_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)\n- o _\bl_\bi_\bs_\bt_\be_\bn_\b__\bp_\bo_\br_\bt_\b(_\b)_\b _\bi_\bs_\b__\bl_\bi_\bs_\bt_\be_\bn_\bi_\bn_\bg_\b(_\b)_\b _\bs_\bs_\bl_\b__\bl_\bi_\bs_\bt_\be_\bn_\b__\bp_\bo_\br_\bt_\b(_\b)\n- o _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)_\b _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)\n+ o _\bl_\bi_\bs_\bt_\be_\bn_\b__\bp_\bo_\br_\bt_\b(_\b)_\b _\bs_\bs_\bl_\b__\bl_\bi_\bs_\bt_\be_\bn_\b__\bp_\bo_\br_\bt_\b(_\b)_\b _\bi_\bs_\b__\bl_\bi_\bs_\bt_\be_\bn_\bi_\bn_\bg_\b(_\b)\n+ o _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)\n o _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bt_\by_\bp_\be_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bt_\by_\bp_\be_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)\n o _\bc_\br_\be_\ba_\bt_\be_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)\n o _\bd_\be_\bl_\be_\bt_\be_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)\n- o _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)_\b _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)\n+ o _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)\n o _\br_\be_\bm_\bo_\bv_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n o _\ba_\bp_\bp_\bl_\by_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b)_\b _\bg_\be_\bt_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b)\n- o _\bw_\ba_\bi_\bt_\b__\bf_\bo_\br_\b__\ba_\bl_\be_\br_\bt_\b(_\b)_\b _\bs_\be_\bt_\b__\ba_\bl_\be_\br_\bt_\b__\bn_\bo_\bt_\bi_\bf_\by_\b(_\b)_\b _\bp_\bo_\bp_\b__\ba_\bl_\be_\br_\bt_\bs_\b(_\b)\n+ o _\bp_\bo_\bp_\b__\ba_\bl_\be_\br_\bt_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\ba_\bl_\be_\br_\bt_\b__\bn_\bo_\bt_\bi_\bf_\by_\b(_\b)_\b _\bw_\ba_\bi_\bt_\b__\bf_\bo_\br_\b__\ba_\bl_\be_\br_\bt_\b(_\b)\n o _\bd_\be_\bl_\be_\bt_\be_\b__\bp_\bo_\br_\bt_\b__\bm_\ba_\bp_\bp_\bi_\bn_\bg_\b(_\b)_\b _\ba_\bd_\bd_\b__\bp_\bo_\br_\bt_\b__\bm_\ba_\bp_\bp_\bi_\bn_\bg_\b(_\b)\n o _\br_\be_\bo_\bp_\be_\bn_\b__\bn_\be_\bt_\bw_\bo_\br_\bk_\b__\bs_\bo_\bc_\bk_\be_\bt_\bs_\b(_\b)\n o _\bn_\ba_\bt_\bi_\bv_\be_\b__\bh_\ba_\bn_\bd_\bl_\be_\b(_\b)\n- * _\br_\be_\ba_\bd_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b__\bb_\bu_\bf_\b(_\b)\n+ * _\bw_\br_\bi_\bt_\be_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)_\b _\br_\be_\ba_\bd_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b__\bb_\bu_\bf_\b(_\b)\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b._\bh_\bp_\bp\"\n The _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs is a parameters pack for configuring the _\bs_\be_\bs_\bs_\bi_\bo_\bn before it's\n started.\n struct session_params\n {\n- s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs ();\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack&& sp);\n+ s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs ();\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp);\n- s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp\n- , std::vector> exts);\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack&& sp\n , std::vector> exts);\n+ s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp\n+ , std::vector> exts);\n \n settings_pack settings;\n std::vector> extensions;\n dht::dht_state dht_state;\n dht::dht_storage_constructor_type dht_storage_constructor;\n disk_io_constructor_type disk_io_constructor;\n std::map ext_state;\n libtorrent::ip_filter ip_filter;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) *\b**\b**\b**\b**\b*\n-s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs ();\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack&& sp);\n+s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs ();\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp);\n This constructor can be used to start with the default plugins (ut_metadata,\n ut_pex and smart_ban). Pass a _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk to set the initial settings when\n the _\bs_\be_\bs_\bs_\bi_\bo_\bn starts.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) *\b**\b**\b**\b**\b*\n-s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp\n- , std::vector> exts);\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack&& sp\n , std::vector> exts);\n+s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp\n+ , std::vector> exts);\n This constructor helps to configure the set of initial plugins to be added to\n the _\bs_\be_\bs_\bs_\bi_\bo_\bn before it's started.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n settings\n The settings to configure the _\bs_\be_\bs_\bs_\bi_\bo_\bn with\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n extensions\n@@ -122,29 +122,29 @@\n _\bs_\be_\bs_\bs_\bi_\bo_\bn destruction is explicitly initiated, this holder is used to synchronize\n the completion of the shutdown. The lifetime of this object may outlive\n _\bs_\be_\bs_\bs_\bi_\bo_\bn, causing the _\bs_\be_\bs_\bs_\bi_\bo_\bn destructor to not block. The _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by\n destructor will block however, until the underlying _\bs_\be_\bs_\bs_\bi_\bo_\bn is done shutting\n down.\n struct session_proxy\n {\n- s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy const&);\n- ~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n- session_proxy& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (session_proxy&&) & noexcept;\n+ s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy&&) noexcept;\n+ session_proxy& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (session_proxy&&) & noexcept;\n session_proxy& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (session_proxy const&) &;\n- s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n+ ~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n+ s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy const&);\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by(\b()\b) ~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n-s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy const&);\n-~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n-session_proxy& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (session_proxy&&) & noexcept;\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by(\b()\b) ~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by(\b()\b) *\b**\b**\b**\b**\b*\n+s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy&&) noexcept;\n+session_proxy& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (session_proxy&&) & noexcept;\n session_proxy& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (session_proxy const&) &;\n-s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n+~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n+s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy const&);\n default constructor, does not refer to any _\bs_\be_\bs_\bs_\bi_\bo_\bn implementation object.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b._\bh_\bp_\bp\"\n The _\bs_\be_\bs_\bs_\bi_\bo_\bn holds all state that spans multiple torrents. Among other things it\n runs the network loop and manages all torrents. Once it's created, the _\bs_\be_\bs_\bs_\bi_\bo_\bn\n object will spawn the main thread that will do all the work. The main thread\n@@ -152,47 +152,47 @@\n You have some control over _\bs_\be_\bs_\bs_\bi_\bo_\bn configuration through the session_handle::\n apply_settings() member function. To change one or more configuration options,\n create a _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk. object and fill it with the settings to be set and pass\n it in to session::apply_settings().\n see _\ba_\bp_\bp_\bl_\by_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b).\n struct session : session_handle\n {\n- s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, session_flags_t flags);\n+ s\bse\bes\bss\bsi\bio\bon\bn ();\n explicit s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params);\n- explicit s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params);\n s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, session_flags_t flags);\n- s\bse\bes\bss\bsi\bio\bon\bn ();\n- s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, io_context& ios);\n- s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios);\n- s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios, session_flags_t);\n+ s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, session_flags_t flags);\n+ explicit s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params);\n s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, io_context& ios, session_flags_t);\n+ s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios, session_flags_t);\n+ s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios);\n+ s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, io_context& ios);\n ~\b~s\bse\bes\bss\bsi\bio\bon\bn ();\n session_proxy a\bab\bbo\bor\brt\bt ();\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn(\b()\b) *\b**\b**\b**\b**\b*\n-s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, session_flags_t flags);\n+s\bse\bes\bss\bsi\bio\bon\bn ();\n explicit s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params);\n-explicit s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params);\n s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, session_flags_t flags);\n-s\bse\bes\bss\bsi\bio\bon\bn ();\n+s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, session_flags_t flags);\n+explicit s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params);\n Constructs the _\bs_\be_\bs_\bs_\bi_\bo_\bn objects which acts as the container of torrents. In\n order to avoid a race condition between starting the _\bs_\be_\bs_\bs_\bi_\bo_\bn and configuring\n it, you can pass in a _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs object. Its settings will take effect\n before the _\bs_\be_\bs_\bs_\bi_\bo_\bn starts up.\n The overloads taking flags can be used to start a _\bs_\be_\bs_\bs_\bi_\bo_\bn in paused mode (by\n passing in session::paused). Note that add_default_plugins do not have an\n affect on constructors that take a _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs object. It already contains\n the plugins to use.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn(\b()\b) *\b**\b**\b**\b**\b*\n-s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, io_context& ios);\n-s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios);\n-s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios, session_flags_t);\n s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, io_context& ios, session_flags_t);\n+s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios, session_flags_t);\n+s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios);\n+s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, io_context& ios);\n Overload of the constructor that takes an external io_context to run the\n _\bs_\be_\bs_\bs_\bi_\bo_\bn object on. This is primarily useful for tests that may want to run\n multiple sessions on a single io_context, or low resource systems where\n additional threads are expensive and sharing an io_context with other events is\n fine.\n Warning\n The _\bs_\be_\bs_\bs_\bi_\bo_\bn object does not cleanly terminate with an external io_context. The\n@@ -242,25 +242,25 @@\n std::function const& pred\n , status_flags_t flags = {}) const;\n void p\bpo\bos\bst\bt_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_u\bup\bpd\bda\bat\bte\bes\bs (status_flags_t flags = status_flags_t::all());\n void p\bpo\bos\bst\bt_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_s\bst\bta\bat\bts\bs ();\n void p\bpo\bos\bst\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bts\bs ();\n void s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bte\be (dht::dht_state const& st);\n void s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bte\be (dht::dht_state&& st);\n- torrent_handle f\bfi\bin\bnd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (sha1_hash const& info_hash) const;\n std::vector g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs () const;\n+ torrent_handle f\bfi\bin\bnd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (sha1_hash const& info_hash) const;\n+ void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params, error_code& ec);\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n- void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n- torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params, error_code&\n ec);\n- void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n- bool i\bis\bs_\b_p\bpa\bau\bus\bse\bed\bd () const;\n+ void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n+ torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n void r\bre\bes\bsu\bum\bme\be ();\n+ bool i\bis\bs_\b_p\bpa\bau\bus\bse\bed\bd () const;\n void p\bpa\bau\bus\bse\be ();\n bool i\bis\bs_\b_d\bdh\bht\bt_\b_r\bru\bun\bnn\bni\bin\bng\bg () const;\n void s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bto\bor\bra\bag\bge\be (dht::dht_storage_constructor_type sc);\n void a\bad\bdd\bd_\b_d\bdh\bht\bt_\b_n\bno\bod\bde\be (std::pair const& node);\n void d\bdh\bht\bt_\b_g\bge\bet\bt_\b_i\bit\bte\bem\bm (sha1_hash const& target);\n void d\bdh\bht\bt_\b_g\bge\bet\bt_\b_i\bit\bte\bem\bm (std::array key\n , std::string salt = std::string());\n@@ -276,35 +276,35 @@\n void d\bdh\bht\bt_\b_s\bsa\bam\bmp\bpl\ble\be_\b_i\bin\bnf\bfo\boh\bha\bas\bsh\bhe\bes\bs (udp::endpoint const& ep, sha1_hash const&\n target);\n void d\bdh\bht\bt_\b_d\bdi\bir\bre\bec\bct\bt_\b_r\bre\beq\bqu\bue\bes\bst\bt (udp::endpoint const& ep, entry const& e,\n client_data_t userdata = {});\n void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (std::shared_ptr ext);\n void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (std::function(\n torrent_handle const&, client_data_t)> ext);\n- ip_filter g\bge\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br () const;\n void s\bse\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br (ip_filter f);\n+ ip_filter g\bge\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br () const;\n void s\bse\bet\bt_\b_p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br (port_filter const& f);\n- unsigned short s\bss\bsl\bl_\b_l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt () const;\n unsigned short l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt () const;\n bool i\bis\bs_\b_l\bli\bis\bst\bte\ben\bni\bin\bng\bg () const;\n+ unsigned short s\bss\bsl\bl_\b_l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt () const;\n void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br (ip_filter const& f);\n ip_filter g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br () const;\n- peer_class_type_filter g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br () const;\n void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br (peer_class_type_filter const& f);\n+ peer_class_type_filter g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br () const;\n peer_class_t c\bcr\bre\bea\bat\bte\be_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (char const* name);\n void d\bde\bel\ble\bet\bte\be_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid);\n- void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid, peer_class_info const& pci);\n peer_class_info g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid) const;\n+ void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid, peer_class_info const& pci);\n void r\bre\bem\bmo\bov\bve\be_\b_t\bto\bor\brr\bre\ben\bnt\bt (const torrent_handle&, remove_flags_t = {});\n+ void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack const&);\n settings_pack g\bge\bet\bt_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs () const;\n void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack&&);\n- void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack const&);\n void p\bpo\bop\bp_\b_a\bal\ble\ber\brt\bts\bs (std::vector* alerts);\n- alert* w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_a\bal\ble\ber\brt\bt (time_duration max_wait);\n void s\bse\bet\bt_\b_a\bal\ble\ber\brt\bt_\b_n\bno\bot\bti\bif\bfy\by (std::function const& fun);\n+ alert* w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_a\bal\ble\ber\brt\bt (time_duration max_wait);\n void d\bde\bel\ble\bet\bte\be_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg (port_mapping_t handle);\n std::vector a\bad\bdd\bd_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg (portmap_protocol t, int\n external_port, int local_port);\n void r\bre\beo\bop\bpe\ben\bn_\b_n\bne\bet\btw\bwo\bor\brk\bk_\b_s\bso\boc\bck\bke\bet\bts\bs (reopen_network_flags_t options =\n reopen_map_ports);\n std::shared_ptr n\bna\bat\bti\biv\bve\be_\b_h\bha\ban\bnd\bdl\ble\be () const;\n \n@@ -333,15 +333,15 @@\n all()) const;\n returns the current _\bs_\be_\bs_\bs_\bi_\bo_\bn state. This can be passed to _\bw_\br_\bi_\bt_\be_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)\n to save the state to disk and restored using _\br_\be_\ba_\bd_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b) when\n constructing a new _\bs_\be_\bs_\bs_\bi_\bo_\bn. The kind of state that's included is all settings,\n the DHT routing table, possibly plugin-specific state. the flags parameter can\n be used to only save certain parts of the _\bs_\be_\bs_\bs_\bi_\bo_\bn state\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) r\bre\bef\bfr\bre\bes\bsh\bh_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* r\bre\bef\bfr\bre\bes\bsh\bh_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\bef\bfr\bre\bes\bsh\bh_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs (std::vector* ret\n , status_flags_t flags = {}) const;\n std::vector g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs (\n std::function const& pred\n , status_flags_t flags = {}) const;\n Note\n these calls are potentially expensive and won't scale well with lots of\n@@ -397,31 +397,31 @@\n *\b**\b**\b**\b**\b* s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bte\be(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bte\be (dht::dht_state const& st);\n void s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bte\be (dht::dht_state&& st);\n set the DHT state for the _\bs_\be_\bs_\bs_\bi_\bo_\bn. This will be taken into account the next\n time the DHT is started, as if it had been passed in via the _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs on\n startup.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* f\bfi\bin\bnd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs(\b()\b) *\b**\b**\b**\b**\b*\n-torrent_handle f\bfi\bin\bnd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (sha1_hash const& info_hash) const;\n+*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs(\b()\b) f\bfi\bin\bnd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) *\b**\b**\b**\b**\b*\n std::vector g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs () const;\n+torrent_handle f\bfi\bin\bnd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (sha1_hash const& info_hash) const;\n find_torrent() looks for a torrent with the given info-hash. In case there is\n such a torrent in the _\bs_\be_\bs_\bs_\bi_\bo_\bn, a _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be to that torrent is returned. In\n case the torrent cannot be found, an invalid _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be is returned.\n See torrent_handle::is_valid() to know if the torrent was found or not.\n get_torrents() returns a vector of torrent_handles to all the torrents\n currently in the _\bs_\be_\bs_\bs_\bi_\bo_\bn.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) *\b**\b**\b**\b**\b*\n+void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params, error_code& ec);\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n+torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params, error_code& ec);\n void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n-torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params, error_code& ec);\n-void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n You add torrents through the _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b) function where you give an object\n with all the parameters. The _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b) overloads will block until the\n torrent has been added (or failed to be added) and returns an error code and a\n _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be. In order to add torrents more efficiently, consider using\n _\ba_\bs_\by_\bn_\bc_\b__\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b) which returns immediately, without waiting for the torrent\n to add. Notification of the torrent being added is sent as _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\ba_\bl_\be_\br_\bt.\n The save_path field in _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs must be set to a valid path where the\n@@ -442,17 +442,17 @@\n torrent_flags::paused and torrent_flags::auto_managed. In order to add a magnet\n link that will just download the metadata, but no payload, set the\n torrent_flags::upload_mode flag.\n Special consideration has to be taken when adding hybrid torrents (i.e.\n torrents that are BitTorrent v2 torrents that are backwards compatible with\n v1). For more details, see _\bB_\bi_\bt_\bT_\bo_\br_\br_\be_\bn_\bt_\b _\bv_\b2_\b _\bt_\bo_\br_\br_\be_\bn_\bt_\bs.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpa\bau\bus\bse\be(\b()\b) i\bis\bs_\b_p\bpa\bau\bus\bse\bed\bd(\b()\b) r\bre\bes\bsu\bum\bme\be(\b()\b) *\b**\b**\b**\b**\b*\n-bool i\bis\bs_\b_p\bpa\bau\bus\bse\bed\bd () const;\n+*\b**\b**\b**\b**\b* r\bre\bes\bsu\bum\bme\be(\b()\b) i\bis\bs_\b_p\bpa\bau\bus\bse\bed\bd(\b()\b) p\bpa\bau\bus\bse\be(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\bes\bsu\bum\bme\be ();\n+bool i\bis\bs_\b_p\bpa\bau\bus\bse\bed\bd () const;\n void p\bpa\bau\bus\bse\be ();\n Pausing the _\bs_\be_\bs_\bs_\bi_\bo_\bn has the same effect as pausing every torrent in it, except\n that torrents will not be resumed by the auto-manage mechanism. Resuming will\n restore the torrents to their previous paused state. i.e. the _\bs_\be_\bs_\bs_\bi_\bo_\bn pause\n state is separate from the torrent pause state. A torrent is inactive if it is\n paused or if the _\bs_\be_\bs_\bs_\bi_\bo_\bn is paused.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -529,15 +529,15 @@\n and make the function entirely self-contained. The only reason data blob's\n value is computed via a function instead of just passing in the new value is to\n avoid race conditions. If you want to u\bup\bpd\bda\bat\bte\be the value in the DHT, you must\n first retrieve it, then modify it, then write it back. The way the DHT works,\n it is natural to always do a lookup before storing and calling the callback in\n between is convenient.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be(\b()\b) d\bdh\bht\bt_\b_g\bge\bet\bt_\b_p\bpe\bee\ber\brs\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* d\bdh\bht\bt_\b_g\bge\bet\bt_\b_p\bpe\bee\ber\brs\bs(\b()\b) d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n void d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be (sha1_hash const& info_hash, int port = 0, dht::\n announce_flags_t flags = {});\n void d\bdh\bht\bt_\b_g\bge\bet\bt_\b_p\bpe\bee\ber\brs\bs (sha1_hash const& info_hash);\n dht_get_peers() will issue a DHT get_peer request to the DHT for the specified\n info-hash. The response (the peers) will be posted back in a\n _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bp_\be_\be_\br_\bs_\b__\br_\be_\bp_\bl_\by_\b__\ba_\bl_\be_\br_\bt.\n dht_announce() will issue a DHT announce request to the DHT to the specified\n@@ -598,16 +598,16 @@\n A _\bp_\bl_\bu_\bg_\bi_\bn that, with a small overhead, can ban peers that sends bad data\n with very high accuracy. Should eliminate most problems on poisoned\n torrents.\n #include \n ses.add_extension(<::create_smart_ban_plugin);\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) g\bge\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n-ip_filter g\bge\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br () const;\n void s\bse\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br (ip_filter f);\n+ip_filter g\bge\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br () const;\n Sets a filter that will be used to reject and accept incoming as well as\n outgoing connections based on their originating ip address. The default filter\n will allow connections to any ip address. To build a set of rules for which\n addresses are accepted and not, see _\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br.\n Each time a peer is blocked because of the IP filter, a _\bp_\be_\be_\br_\b__\bb_\bl_\bo_\bc_\bk_\be_\bd_\b__\ba_\bl_\be_\br_\bt is\n generated. get_ip_filter() Returns the _\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br currently in the _\bs_\be_\bs_\bs_\bi_\bo_\bn. See\n _\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br.\n@@ -615,25 +615,25 @@\n *\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br (port_filter const& f);\n apply _\bp_\bo_\br_\bt_\b__\bf_\bi_\bl_\bt_\be_\br f to incoming and outgoing peers. a port filter will reject\n making outgoing peer connections to certain remote ports. The main intention is\n to be able to avoid triggering certain anti-virus software by connecting to\n SMTP, FTP ports.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt(\b()\b) i\bis\bs_\b_l\bli\bis\bst\bte\ben\bni\bin\bng\bg(\b()\b) s\bss\bsl\bl_\b_l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt(\b()\b) *\b**\b**\b**\b**\b*\n-unsigned short s\bss\bsl\bl_\b_l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt () const;\n+*\b**\b**\b**\b**\b* l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt(\b()\b) s\bss\bsl\bl_\b_l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt(\b()\b) i\bis\bs_\b_l\bli\bis\bst\bte\ben\bni\bin\bng\bg(\b()\b) *\b**\b**\b**\b**\b*\n unsigned short l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt () const;\n bool i\bis\bs_\b_l\bli\bis\bst\bte\ben\bni\bin\bng\bg () const;\n+unsigned short s\bss\bsl\bl_\b_l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt () const;\n is_listening() will tell you whether or not the _\bs_\be_\bs_\bs_\bi_\bo_\bn has successfully opened\n a listening port. If it hasn't, this function will return false, and then you\n can set a new _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk_\b:_\b:_\bl_\bi_\bs_\bt_\be_\bn_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bs to try another interface and\n port to bind to.\n listen_port() returns the port we ended up listening on.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br (ip_filter const& f);\n ip_filter g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br () const;\n Sets the peer class filter for this _\bs_\be_\bs_\bs_\bi_\bo_\bn. All new peer connections will take\n this into account and be added to the peer classes specified by this filter,\n based on the peer's IP address.\n The ip-filter essentially maps an IP -> uint32. Each bit in that 32 bit integer\n represents a peer class. The least significant bit represents class 0, the next\n@@ -653,16 +653,16 @@\n removed from a peer as a result of this call, peer classes are only added.\n The peer_class argument cannot be greater than 31. The bitmasks representing\n peer classes in the peer_class_filter are 32 bits.\n The get_peer_class_filter() function returns the current filter.\n For more information, see _\bp_\be_\be_\br_\b _\bc_\bl_\ba_\bs_\bs_\be_\bs.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n-peer_class_type_filter g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br () const;\n void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br (peer_class_type_filter const& f);\n+peer_class_type_filter g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br () const;\n Sets and gets the p\bpe\bee\ber\br c\bcl\bla\bas\bss\bs t\bty\byp\bpe\be f\bfi\bil\blt\bte\ber\br. This is controls automatic peer class\n assignments to peers based on what kind of socket it is.\n It does not only support assigning peer classes, it also supports removing peer\n classes based on socket type.\n The order of these rules being applied are:\n 1. peer-class IP filter\n 2. peer-class type filter, removing classes\n@@ -690,17 +690,17 @@\n Since peer classes are reference counted, this function will not remove the\n peer class if it's still assigned to torrents or peers. It will however remove\n it once the last peer and torrent drops their references to it.\n There is no need to call this function for custom peer classes. All peer\n classes will be properly destructed when the _\bs_\be_\bs_\bs_\bi_\bo_\bn object destructs.\n For more information on peer classes, see _\bp_\be_\be_\br_\b _\bc_\bl_\ba_\bs_\bs_\be_\bs.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs(\b()\b) g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid, peer_class_info const& pci);\n+*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs(\b()\b) s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs(\b()\b) *\b**\b**\b**\b**\b*\n peer_class_info g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid) const;\n+void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid, peer_class_info const& pci);\n These functions queries information from a peer class and updates the\n configuration of a peer class, respectively.\n cid must refer to an existing peer class. If it does not, the return value of\n get_peer_class() is undefined.\n set_peer_class() sets all the information in the _\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bi_\bn_\bf_\bo object in the\n specified peer class. There is no option to only update a single property.\n A peer or torrent belonging to more than one class, the highest priority among\n@@ -731,25 +731,25 @@\n Note that when a queued or downloading torrent is removed, its position in the\n download queue is vacated and every subsequent torrent in the queue has their\n queue positions updated. This can potentially cause a large state_update to be\n posted. When removing all torrents, it is advised to remove them from the back\n of the queue, to minimize the shifting.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs(\b()\b) g\bge\bet\bt_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs(\b()\b) *\b**\b**\b**\b**\b*\n+void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack const&);\n settings_pack g\bge\bet\bt_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs () const;\n void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack&&);\n-void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack const&);\n Applies the settings specified by the _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk s. This is an asynchronous\n operation that will return immediately and actually apply the settings to the\n main thread of libtorrent some time later.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_a\bal\ble\ber\brt\bt(\b()\b) s\bse\bet\bt_\b_a\bal\ble\ber\brt\bt_\b_n\bno\bot\bti\bif\bfy\by(\b()\b) p\bpo\bop\bp_\b_a\bal\ble\ber\brt\bts\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* p\bpo\bop\bp_\b_a\bal\ble\ber\brt\bts\bs(\b()\b) s\bse\bet\bt_\b_a\bal\ble\ber\brt\bt_\b_n\bno\bot\bti\bif\bfy\by(\b()\b) w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_a\bal\ble\ber\brt\bt(\b()\b) *\b**\b**\b**\b**\b*\n void p\bpo\bop\bp_\b_a\bal\ble\ber\brt\bts\bs (std::vector* alerts);\n-alert* w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_a\bal\ble\ber\brt\bt (time_duration max_wait);\n void s\bse\bet\bt_\b_a\bal\ble\ber\brt\bt_\b_n\bno\bot\bti\bif\bfy\by (std::function const& fun);\n+alert* w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_a\bal\ble\ber\brt\bt (time_duration max_wait);\n Alerts is the main mechanism for libtorrent to report errors and events.\n pop_alerts fills in the vector passed to it with pointers to new alerts. The\n _\bs_\be_\bs_\bs_\bi_\bo_\bn still owns these alerts and they will stay valid until the next time\n pop_alerts is called. You may not delete the _\ba_\bl_\be_\br_\bt objects.\n It is safe to call pop_alerts from multiple different threads, as long as the\n alerts themselves are not accessed once another thread calls pop_alerts. Doing\n this requires manual synchronization between the popping threads.\n@@ -845,25 +845,25 @@\n protocols used by _\ba_\bd_\bd_\b__\bp_\bo_\br_\bt_\b__\bm_\ba_\bp_\bp_\bi_\bn_\bg_\b(_\b)\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n reopen_map_ports\n This option indicates if the ports are mapped using natpmp and upnp. If\n mapping was already made, they are deleted and added again. This only\n works if natpmp and/or upnp are configured to be enable.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b**\b* r\bre\bea\bad\bd_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs_\b_b\bbu\buf\bf(\b()\b)\n+*\b**\b**\b**\b**\b**\b* w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) r\bre\bea\bad\bd_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs_\b_b\bbu\buf\bf(\b()\b)\n *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b._\bh_\bp_\bp\"\n std::vector w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs_\b_b\bbu\buf\bf (session_params const& sp\n , save_state_flags_t flags = save_state_flags_t::all());\n+session_params r\bre\bea\bad\bd_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (bdecode_node const& e\n+ , save_state_flags_t flags = save_state_flags_t::all());\n entry w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (session_params const& sp\n , save_state_flags_t flags = save_state_flags_t::all());\n session_params r\bre\bea\bad\bd_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (span buf\n , save_state_flags_t flags = save_state_flags_t::all());\n-session_params r\bre\bea\bad\bd_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (bdecode_node const& e\n- , save_state_flags_t flags = save_state_flags_t::all());\n These functions serialize and de-serialize a session_params object to and from\n bencoded form. The _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs object is used to initialize a new _\bs_\be_\bs_\bs_\bi_\bo_\bn\n using the state from a previous one (or by programmatically configure the\n _\bs_\be_\bs_\bs_\bi_\bo_\bn up-front). The flags parameter can be used to only save and load\n certain aspects of the session's state. The _buf suffix indicates the function\n operates on buffer rather than the bencoded structure. The torrents in a\n _\bs_\be_\bs_\bs_\bi_\bo_\bn are not part of the _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs state, they have to be restored\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Settings.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Settings.html", "unified_diff": "@@ -29,33 +29,33 @@\n \n \n

    home

    \n \n

    You have some control over session configuration through the session::apply_settings()\n member function. To change one or more configuration options, create a settings_pack\n object and fill it with the settings to be set and pass it in to session::apply_settings().

    \n@@ -4598,24 +4598,24 @@\n
    \n
    \n struct settings_pack final : settings_interface\n {\n    friend  void apply_pack_impl (settings_pack const*\n       , aux::session_settings_single_thread&\n       , std::vector<void(aux::session_impl::*)()>*);\n-   void set_int (int name, int val) override;\n    void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n-   void set_bool (int name, bool val) override;\n+   void set_int (int name, int val) override;\n    void set_str (int name, std::string val) override;\n+   void set_bool (int name, bool val) override;\n    bool has_val (int name) const override;\n    void clear ();\n    void clear (int name);\n-   bool get_bool (int name) const override;\n    std::string const& get_str (int name) const override;\n    int get_int (int name) const override;\n+   bool get_bool (int name) const override;\n    void for_each (Fun&& f) const;\n \n    enum type_bases\n    {\n       string_type_base,\n       int_type_base,\n       bool_type_base,\n@@ -4686,22 +4686,22 @@\n       socks5_pw,\n       http,\n       http_pw,\n    };\n };\n 
    \n \n-\n-[report issue]
    \n-

    set_str() set_int() set_bool()

    \n+\n+[report issue]
    \n+

    set_str() set_bool() set_int()

    \n
    \n-void set_int (int name, int val) override;\n void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n-void set_bool (int name, bool val) override;\n+void set_int (int name, int val) override;\n void set_str (int name, std::string val) override;\n+void set_bool (int name, bool val) override;\n 
    \n

    set a configuration option in the settings_pack. name is one of\n the enum values from string_types, int_types or bool_types. They must\n match the respective type of the set_* function.

    \n [report issue]
    \n
    \n

    has_val()

    \n@@ -4721,23 +4721,23 @@\n [report issue]
    \n
    \n

    clear()

    \n
    \n void clear (int name);\n 
    \n

    clear a specific setting from the pack

    \n-\n \n-[report issue]
    \n-
    \n-

    get_bool() get_str() get_int()

    \n+\n+[report issue]
    \n+
    \n+

    get_str() get_int() get_bool()

    \n
    \n-bool get_bool (int name) const override;\n std::string const& get_str (int name) const override;\n int get_int (int name) const override;\n+bool get_bool (int name) const override;\n 
    \n

    queries the current configuration option from the settings_pack.\n name is one of the enumeration values from string_types, int_types\n or bool_types. The enum value must match the type of the get_*\n function. If the specified setting field has not been set, the default\n value is returned.

    \n [report issue]
    \n@@ -5154,18 +5154,18 @@\n Tribler\n \n \n \n

    There's an informal directory of client id's here.

    \n

    The major, minor, revision and tag parameters are used to\n identify the version of your client.

    \n-\n-[report issue]
    \n-
    \n-

    high_performance_seed() min_memory_usage()

    \n+\n+[report issue]
    \n+
    \n+

    min_memory_usage() high_performance_seed()

    \n

    Declared in "libtorrent/session.hpp"

    \n
    \n settings_pack high_performance_seed ();\n settings_pack min_memory_usage ();\n 
    \n

    The default values of the session settings are set for a regular\n bittorrent client running on a desktop system. There are functions that\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,30 @@\n >\n _\b[_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b _\bl_\bo_\bg_\bo_\b]\n V\bVe\ber\brs\bsi\bio\bon\bn:\b: 2.0.11\n _\bh_\bo_\bm_\be\n Table of contents\n * _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk\n- o _\bs_\be_\bt_\b__\bs_\bt_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bi_\bn_\bt_\b(_\b)_\b _\bs_\be_\bt_\b__\bb_\bo_\bo_\bl_\b(_\b)\n+ o _\bs_\be_\bt_\b__\bs_\bt_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bb_\bo_\bo_\bl_\b(_\b)_\b _\bs_\be_\bt_\b__\bi_\bn_\bt_\b(_\b)\n o _\bh_\ba_\bs_\b__\bv_\ba_\bl_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b(_\b)\n- o _\bg_\be_\bt_\b__\bb_\bo_\bo_\bl_\b(_\b)_\b _\bg_\be_\bt_\b__\bs_\bt_\br_\b(_\b)_\b _\bg_\be_\bt_\b__\bi_\bn_\bt_\b(_\b)\n+ o _\bg_\be_\bt_\b__\bs_\bt_\br_\b(_\b)_\b _\bg_\be_\bt_\b__\bi_\bn_\bt_\b(_\b)_\b _\bg_\be_\bt_\b__\bb_\bo_\bo_\bl_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bt_\by_\bp_\be_\b__\bb_\ba_\bs_\be_\bs\n o _\be_\bn_\bu_\bm_\b _\bm_\bm_\ba_\bp_\b__\bw_\br_\bi_\bt_\be_\b__\bm_\bo_\bd_\be_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\bs_\bu_\bg_\bg_\be_\bs_\bt_\b__\bm_\bo_\bd_\be_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\bc_\bh_\bo_\bk_\bi_\bn_\bg_\b__\ba_\bl_\bg_\bo_\br_\bi_\bt_\bh_\bm_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\bs_\be_\be_\bd_\b__\bc_\bh_\bo_\bk_\bi_\bn_\bg_\b__\ba_\bl_\bg_\bo_\br_\bi_\bt_\bh_\bm_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\bi_\bo_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bm_\bo_\bd_\be_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\bb_\ba_\bn_\bd_\bw_\bi_\bd_\bt_\bh_\b__\bm_\bi_\bx_\be_\bd_\b__\ba_\bl_\bg_\bo_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\be_\bn_\bc_\b__\bp_\bo_\bl_\bi_\bc_\by\n o _\be_\bn_\bu_\bm_\b _\be_\bn_\bc_\b__\bl_\be_\bv_\be_\bl\n o _\be_\bn_\bu_\bm_\b _\bp_\br_\bo_\bx_\by_\b__\bt_\by_\bp_\be_\b__\bt\n * _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b__\bf_\bi_\bn_\bg_\be_\br_\bp_\br_\bi_\bn_\bt_\b(_\b)\n- * _\bh_\bi_\bg_\bh_\b__\bp_\be_\br_\bf_\bo_\br_\bm_\ba_\bn_\bc_\be_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bm_\bi_\bn_\b__\bm_\be_\bm_\bo_\br_\by_\b__\bu_\bs_\ba_\bg_\be_\b(_\b)\n+ * _\bm_\bi_\bn_\b__\bm_\be_\bm_\bo_\br_\by_\b__\bu_\bs_\ba_\bg_\be_\b(_\b)_\b _\bh_\bi_\bg_\bh_\b__\bp_\be_\br_\bf_\bo_\br_\bm_\ba_\bn_\bc_\be_\b__\bs_\be_\be_\bd_\b(_\b)\n * _\bn_\ba_\bm_\be_\b__\bf_\bo_\br_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\b(_\b)_\b _\bs_\be_\bt_\bt_\bi_\bn_\bg_\b__\bb_\by_\b__\bn_\ba_\bm_\be_\b(_\b)\n * _\bd_\be_\bf_\ba_\bu_\bl_\bt_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b)\n You have some control over _\bs_\be_\bs_\bs_\bi_\bo_\bn configuration through the session::\n apply_settings() member function. To change one or more configuration options,\n create a _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk object and fill it with the settings to be set and pass\n it in to session::apply_settings().\n The _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk object is a collection of settings updates that are applied\n@@ -1435,24 +1435,24 @@\n connect to the external NAT-PMP port (configured using announce_port) instead\n of the actual local listening port.\n struct settings_pack final : settings_interface\n {\n friend void a\bap\bpp\bpl\bly\by_\b_p\bpa\bac\bck\bk_\b_i\bim\bmp\bpl\bl (settings_pack const*\n , aux::session_settings_single_thread&\n , std::vector*);\n- void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, int val) override;\n void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, flags::bitfield_flag const val);\n- void s\bse\bet\bt_\b_b\bbo\boo\bol\bl (int name, bool val) override;\n+ void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, int val) override;\n void s\bse\bet\bt_\b_s\bst\btr\br (int name, std::string val) override;\n+ void s\bse\bet\bt_\b_b\bbo\boo\bol\bl (int name, bool val) override;\n bool h\bha\bas\bs_\b_v\bva\bal\bl (int name) const override;\n void c\bcl\ble\bea\bar\br ();\n void c\bcl\ble\bea\bar\br (int name);\n- bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const override;\n std::string const& g\bge\bet\bt_\b_s\bst\btr\br (int name) const override;\n int g\bge\bet\bt_\b_i\bin\bnt\bt (int name) const override;\n+ bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const override;\n void f\bfo\bor\br_\b_e\bea\bac\bch\bh (Fun&& f) const;\n \n enum type_bases\n {\n string_type_base,\n int_type_base,\n bool_type_base,\n@@ -1522,19 +1522,19 @@\n socks5,\n socks5_pw,\n http,\n http_pw,\n };\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_s\bst\btr\br(\b()\b) s\bse\bet\bt_\b_i\bin\bnt\bt(\b()\b) s\bse\bet\bt_\b_b\bbo\boo\bol\bl(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, int val) override;\n+*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_s\bst\btr\br(\b()\b) s\bse\bet\bt_\b_b\bbo\boo\bol\bl(\b()\b) s\bse\bet\bt_\b_i\bin\bnt\bt(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, flags::bitfield_flag const val);\n-void s\bse\bet\bt_\b_b\bbo\boo\bol\bl (int name, bool val) override;\n+void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, int val) override;\n void s\bse\bet\bt_\b_s\bst\btr\br (int name, std::string val) override;\n+void s\bse\bet\bt_\b_b\bbo\boo\bol\bl (int name, bool val) override;\n set a configuration option in the _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk. name is one of the enum values\n from string_types, int_types or bool_types. They must match the respective type\n of the set_* function.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* h\bha\bas\bs_\b_v\bva\bal\bl(\b()\b) *\b**\b**\b**\b**\b*\n bool h\bha\bas\bs_\b_v\bva\bal\bl (int name) const override;\n queries whether the specified configuration option has a value set in this\n@@ -1545,18 +1545,18 @@\n void c\bcl\ble\bea\bar\br ();\n clear the settings pack from all settings\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br(\b()\b) *\b**\b**\b**\b**\b*\n void c\bcl\ble\bea\bar\br (int name);\n clear a specific setting from the pack\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_b\bbo\boo\bol\bl(\b()\b) g\bge\bet\bt_\b_s\bst\btr\br(\b()\b) g\bge\bet\bt_\b_i\bin\bnt\bt(\b()\b) *\b**\b**\b**\b**\b*\n-bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const override;\n+*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_s\bst\btr\br(\b()\b) g\bge\bet\bt_\b_i\bin\bnt\bt(\b()\b) g\bge\bet\bt_\b_b\bbo\boo\bol\bl(\b()\b) *\b**\b**\b**\b**\b*\n std::string const& g\bge\bet\bt_\b_s\bst\btr\br (int name) const override;\n int g\bge\bet\bt_\b_i\bin\bnt\bt (int name) const override;\n+bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const override;\n queries the current configuration option from the _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk. name is one of\n the enumeration values from string_types, int_types or bool_types. The enum\n value must match the type of the get_* function. If the specified setting field\n has not been set, the default value is returned.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnu\bum\bm t\bty\byp\bpe\be_\b_b\bba\bas\bse\bes\bs *\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk_\b._\bh_\bp_\bp\"\n@@ -1708,15 +1708,15 @@\n |_\bD_\bE_\b _\b _\b _\b _\b _\b _\b|_\bD_\be_\bl_\bu_\bg_\be_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |\n |_\bA_\bZ_\b _\b _\b _\b _\b _\b _\b|_\bA_\bz_\bu_\br_\be_\bu_\bs_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |\n |_\bT_\bL_\b _\b _\b _\b _\b _\b _\b|_\bT_\br_\bi_\bb_\bl_\be_\br_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |\n There's an informal directory of client id's _\bh_\be_\br_\be.\n The major, minor, revision and tag parameters are used to identify the version\n of your client.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b**\b* h\bhi\big\bgh\bh_\b_p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be_\b_s\bse\bee\bed\bd(\b()\b) m\bmi\bin\bn_\b_m\bme\bem\bmo\bor\bry\by_\b_u\bus\bsa\bag\bge\be(\b()\b) *\b**\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b**\b* m\bmi\bin\bn_\b_m\bme\bem\bmo\bor\bry\by_\b_u\bus\bsa\bag\bge\be(\b()\b) h\bhi\big\bgh\bh_\b_p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b._\bh_\bp_\bp\"\n settings_pack h\bhi\big\bgh\bh_\b_p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be_\b_s\bse\bee\bed\bd ();\n settings_pack m\bmi\bin\bn_\b_m\bme\bem\bmo\bor\bry\by_\b_u\bus\bsa\bag\bge\be ();\n The default values of the _\bs_\be_\bs_\bs_\bi_\bo_\bn settings are set for a regular bittorrent\n client running on a desktop system. There are functions that can set the\n _\bs_\be_\bs_\bs_\bi_\bo_\bn settings to pre set settings for other environments. These can be used\n for the basis, and should be tweaked to fit your needs better.\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Stats.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Stats.html", "unified_diff": "@@ -29,15 +29,15 @@\n \n \n

    home

    \n
    \n

    Table of contents

    \n \n@@ -45,28 +45,28 @@\n [report issue]
    \n

    counters

    \n

    Declared in "libtorrent/performance_counters.hpp"

    \n
    \n struct counters\n {\n    counters () ;\n-   counters& operator= (counters const&) & ;\n    counters (counters const&) ;\n-   std::int64_t operator[] (int i) const ;\n+   counters& operator= (counters const&) & ;\n    std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n+   std::int64_t operator[] (int i) const ;\n    void set_value (int c, std::int64_t value) ;\n    void blend_stats_counter (int c, std::int64_t value, int ratio) ;\n };\n 
    \n-\n-[report issue]
    \n-

    operator[]() inc_stats_counter()

    \n+\n+[report issue]
    \n+

    inc_stats_counter() operator[]()

    \n
    \n-std::int64_t operator[] (int i) const ;\n std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n+std::int64_t operator[] (int i) const ;\n 
    \n

    returns the new value

    \n [report issue]
    \n
    \n
    \n

    stats_metric

    \n

    Declared in "libtorrent/session_stats.hpp"

    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,35 +1,35 @@\n >\n _\b[_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b _\bl_\bo_\bg_\bo_\b]\n V\bVe\ber\brs\bsi\bio\bon\bn:\b: 2.0.11\n _\bh_\bo_\bm_\be\n Table of contents\n * _\bc_\bo_\bu_\bn_\bt_\be_\br_\bs\n- o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b(_\b)_\b _\bi_\bn_\bc_\b__\bs_\bt_\ba_\bt_\bs_\b__\bc_\bo_\bu_\bn_\bt_\be_\br_\b(_\b)\n+ o _\bi_\bn_\bc_\b__\bs_\bt_\ba_\bt_\bs_\b__\bc_\bo_\bu_\bn_\bt_\be_\br_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b(_\b)\n * _\bs_\bt_\ba_\bt_\bs_\b__\bm_\be_\bt_\br_\bi_\bc\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bs_\bt_\ba_\bt_\bs_\b__\bm_\be_\bt_\br_\bi_\bc_\bs_\b(_\b)\n * _\bf_\bi_\bn_\bd_\b__\bm_\be_\bt_\br_\bi_\bc_\b__\bi_\bd_\bx_\b(_\b)\n * _\be_\bn_\bu_\bm_\b _\bm_\be_\bt_\br_\bi_\bc_\b__\bt_\by_\bp_\be_\b__\bt\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* c\bco\bou\bun\bnt\bte\ber\brs\bs *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bp_\be_\br_\bf_\bo_\br_\bm_\ba_\bn_\bc_\be_\b__\bc_\bo_\bu_\bn_\bt_\be_\br_\bs_\b._\bh_\bp_\bp\"\n struct counters\n {\n c\bco\bou\bun\bnt\bte\ber\brs\bs () ;\n- counters& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (counters const&) & ;\n c\bco\bou\bun\bnt\bte\ber\brs\bs (counters const&) ;\n- std::int64_t o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (int i) const ;\n+ counters& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (counters const&) & ;\n std::int64_t i\bin\bnc\bc_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br (int c, std::int64_t value = 1) ;\n+ std::int64_t o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (int i) const ;\n void s\bse\bet\bt_\b_v\bva\bal\blu\bue\be (int c, std::int64_t value) ;\n void b\bbl\ble\ben\bnd\bd_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br (int c, std::int64_t value, int ratio) ;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b](\b()\b) i\bin\bnc\bc_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n-std::int64_t o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (int i) const ;\n+*\b**\b**\b**\b**\b* i\bin\bnc\bc_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b](\b()\b) *\b**\b**\b**\b**\b*\n std::int64_t i\bin\bnc\bc_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br (int c, std::int64_t value = 1) ;\n+std::int64_t o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (int i) const ;\n returns the new value\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bst\bta\bat\bts\bs_\b_m\bme\bet\btr\bri\bic\bc *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bs_\bt_\ba_\bt_\bs_\b._\bh_\bp_\bp\"\n describes one statistics metric from the _\bs_\be_\bs_\bs_\bi_\bo_\bn. For more information, see the\n _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b _\bs_\bt_\ba_\bt_\bi_\bs_\bt_\bi_\bc_\bs section.\n struct stats_metric\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Storage.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Storage.html", "unified_diff": "@@ -40,29 +40,29 @@\n
  • rename_file()
  • \n
  • map_block()
  • \n
  • map_file()
  • \n
  • num_files()
  • \n
  • end_file()
  • \n
  • file_range()
  • \n
  • total_size()
  • \n-
  • num_pieces() set_num_pieces()
  • \n+
  • set_num_pieces() num_pieces()
  • \n
  • end_piece()
  • \n
  • last_piece()
  • \n
  • piece_range()
  • \n-
  • set_piece_length() piece_length()
  • \n+
  • piece_length() set_piece_length()
  • \n
  • piece_size()
  • \n
  • piece_size2()
  • \n
  • blocks_in_piece2()
  • \n
  • blocks_per_piece()
  • \n-
  • set_name() name()
  • \n+
  • name() set_name()
  • \n
  • swap()
  • \n
  • canonicalize()
  • \n-
  • hash() file_path() file_name() mtime() root_ptr() file_size() pad_file_at() file_offset() symlink() root()
  • \n+
  • file_offset() root_ptr() mtime() file_name() file_path() hash() symlink() root() file_size() pad_file_at()
  • \n
  • file_num_pieces() file_piece_range() file_num_blocks()
  • \n-
  • file_first_piece_node() file_first_block_node()
  • \n+
  • file_first_block_node() file_first_piece_node()
  • \n
  • file_path_hash()
  • \n
  • all_path_hashes()
  • \n
  • file_flags()
  • \n
  • file_absolute_path()
  • \n
  • file_index_at_piece() file_index_at_offset()
  • \n
  • file_index_for_root()
  • \n
  • piece_index_at_file()
  • \n@@ -121,64 +121,64 @@\n {\n bool is_valid () const;\n void reserve (int num_files);\n void add_file (error_code& ec, std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n- void add_file (std::string const& path, std::int64_t file_size\n- , file_flags_t file_flags = {}\n- , std::time_t mtime = 0, string_view symlink_path = string_view()\n- , char const* root_hash = nullptr);\n void add_file_borrow (error_code& ec, string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n void add_file_borrow (string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n+ void add_file (std::string const& path, std::int64_t file_size\n+ , file_flags_t file_flags = {}\n+ , std::time_t mtime = 0, string_view symlink_path = string_view()\n+ , char const* root_hash = nullptr);\n void rename_file (file_index_t index, std::string const& new_filename);\n std::vector<file_slice> map_block (piece_index_t piece, std::int64_t offset\n , std::int64_t size) const;\n peer_request map_file (file_index_t file, std::int64_t offset, int size) const;\n int num_files () const noexcept;\n file_index_t end_file () const noexcept;\n index_range<file_index_t> file_range () const noexcept;\n std::int64_t total_size () const;\n- int num_pieces () const;\n void set_num_pieces (int n);\n+ int num_pieces () const;\n piece_index_t end_piece () const;\n piece_index_t last_piece () const;\n index_range<piece_index_t> piece_range () const noexcept;\n- int piece_length () const;\n void set_piece_length (int l);\n+ int piece_length () const;\n int piece_size (piece_index_t index) const;\n int piece_size2 (piece_index_t index) const;\n int blocks_in_piece2 (piece_index_t index) const;\n int blocks_per_piece () const;\n- std::string const& name () const;\n void set_name (std::string const& n);\n+ std::string const& name () const;\n void swap (file_storage& ti) noexcept;\n void canonicalize ();\n- std::int64_t file_offset (file_index_t index) const;\n- char const* root_ptr (file_index_t const index) const;\n std::time_t mtime (file_index_t index) const;\n- sha1_hash hash (file_index_t index) const;\n- bool pad_file_at (file_index_t index) const;\n- sha256_hash root (file_index_t index) const;\n- std::int64_t file_size (file_index_t index) const;\n string_view file_name (file_index_t index) const;\n std::string symlink (file_index_t index) const;\n+ bool pad_file_at (file_index_t index) const;\n+ std::int64_t file_size (file_index_t index) const;\n+ char const* root_ptr (file_index_t const index) const;\n+ sha1_hash hash (file_index_t index) const;\n+ sha256_hash root (file_index_t index) const;\n+ std::int64_t file_offset (file_index_t index) const;\n std::string file_path (file_index_t index, std::string const& save_path = "") const;\n+ int file_num_blocks (file_index_t index) const;\n int file_num_pieces (file_index_t index) const;\n index_range<piece_index_t::diff_type> file_piece_range (file_index_t) const;\n- int file_num_blocks (file_index_t index) const;\n int file_first_block_node (file_index_t index) const;\n int file_first_piece_node (file_index_t index) const;\n std::uint32_t file_path_hash (file_index_t index, std::string const& save_path) const;\n void all_path_hashes (std::unordered_set<std::uint32_t>& table) const;\n file_flags_t file_flags (file_index_t index) const;\n bool file_absolute_path (file_index_t index) const;\n file_index_t file_index_at_offset (std::int64_t offset) const;\n@@ -217,28 +217,28 @@\n
    \n

    add_file_borrow() add_file()

    \n
    \n void add_file (error_code& ec, std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}\n       , std::time_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n-void add_file (std::string const& path, std::int64_t file_size\n-      , file_flags_t file_flags = {}\n-      , std::time_t mtime = 0, string_view symlink_path = string_view()\n-      , char const* root_hash = nullptr);\n void add_file_borrow (error_code& ec, string_view filename\n       , std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}, char const* filehash = nullptr\n       , std::int64_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n void add_file_borrow (string_view filename\n       , std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}, char const* filehash = nullptr\n       , std::int64_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n+void add_file (std::string const& path, std::int64_t file_size\n+      , file_flags_t file_flags = {}\n+      , std::time_t mtime = 0, string_view symlink_path = string_view()\n+      , char const* root_hash = nullptr);\n 
    \n

    Adds a file to the file storage. The add_file_borrow version\n expects that filename is the file name (without a path) of\n the file that's being added.\n This memory is borrowed, i.e. it is the caller's\n responsibility to make sure it stays valid throughout the lifetime\n of this file_storage object or any copy of it. The same thing applies\n@@ -336,21 +336,21 @@\n [report issue]

    \n
    \n

    total_size()

    \n
    \n std::int64_t total_size () const;\n 
    \n

    returns the total number of bytes all the files in this torrent spans

    \n-\n-[report issue]
    \n-
    \n-

    num_pieces() set_num_pieces()

    \n+\n+[report issue]
    \n+
    \n+

    set_num_pieces() num_pieces()

    \n
    \n-int num_pieces () const;\n void set_num_pieces (int n);\n+int num_pieces () const;\n 
    \n

    set and get the number of pieces in the torrent

    \n [report issue]
    \n
    \n

    end_piece()

    \n
    \n piece_index_t end_piece () const;\n@@ -370,21 +370,21 @@\n 

    piece_range()

    \n
    \n index_range<piece_index_t> piece_range () const noexcept;\n 
    \n

    returns an implementation-defined type that can be used as the\n container in a range-for loop. Where the values are the indices of all\n pieces in the file_storage.

    \n-\n-[report issue]
    \n-
    \n-

    set_piece_length() piece_length()

    \n+\n+[report issue]
    \n+
    \n+

    piece_length() set_piece_length()

    \n
    \n-int piece_length () const;\n void set_piece_length (int l);\n+int piece_length () const;\n 
    \n

    set and get the size of each piece in this torrent. It must be a power of two\n and at least 16 kiB.

    \n [report issue]
    \n
    \n

    piece_size()

    \n
    \n@@ -413,21 +413,21 @@\n 
    \n

    blocks_per_piece()

    \n
    \n int blocks_per_piece () const;\n 
    \n

    returns the number of blocks there are in the typical piece. There\n may be fewer in the last piece)

    \n-\n-[report issue]
    \n-
    \n-

    set_name() name()

    \n+\n+[report issue]
    \n+
    \n+

    name() set_name()

    \n
    \n-std::string const& name () const;\n void set_name (std::string const& n);\n+std::string const& name () const;\n 
    \n

    set and get the name of this torrent. For multi-file torrents, this is also\n the name of the root directory all the files are stored in.

    \n [report issue]
    \n
    \n

    swap()

    \n
    \n@@ -438,36 +438,36 @@\n 
    \n

    canonicalize()

    \n
    \n void canonicalize ();\n 
    \n

    arrange files and padding to match the canonical form required\n by BEP 52

    \n-\n-\n-\n-\n-\n-\n-\n \n+\n+\n+\n+\n+\n \n-[report issue]
    \n-\n+\n
    \n

    file_num_pieces() file_piece_range() file_num_blocks()

    \n
    \n+int file_num_blocks (file_index_t index) const;\n int file_num_pieces (file_index_t index) const;\n index_range<piece_index_t::diff_type> file_piece_range (file_index_t) const;\n-int file_num_blocks (file_index_t index) const;\n 
    \n

    Returns the number of pieces or blocks the file at index spans,\n under the assumption that the file is aligned to the start of a piece.\n This is only meaningful for v2 torrents, where files are guaranteed\n such alignment.\n These numbers are used to size and navigate the merkle hash tree for\n each file.

    \n-\n-[report issue]
    \n-
    \n-

    file_first_piece_node() file_first_block_node()

    \n+\n+[report issue]
    \n+
    \n+

    file_first_block_node() file_first_piece_node()

    \n
    \n int file_first_block_node (file_index_t index) const;\n int file_first_piece_node (file_index_t index) const;\n 
    \n

    index of first piece node in the merkle tree

    \n [report issue]
    \n
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -11,30 +11,30 @@\n o _\br_\be_\bn_\ba_\bm_\be_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bm_\ba_\bp_\b__\bb_\bl_\bo_\bc_\bk_\b(_\b)\n o _\bm_\ba_\bp_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bn_\bu_\bm_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n o _\be_\bn_\bd_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n o _\bt_\bo_\bt_\ba_\bl_\b__\bs_\bi_\bz_\be_\b(_\b)\n- o _\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)\n+ o _\bs_\be_\bt_\b__\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)_\b _\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)\n o _\be_\bn_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n o _\bl_\ba_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n- o _\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)\n+ o _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bs_\bi_\bz_\be_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bs_\bi_\bz_\be_\b2_\b(_\b)\n o _\bb_\bl_\bo_\bc_\bk_\bs_\b__\bi_\bn_\b__\bp_\bi_\be_\bc_\be_\b2_\b(_\b)\n o _\bb_\bl_\bo_\bc_\bk_\bs_\b__\bp_\be_\br_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n- o _\bs_\be_\bt_\b__\bn_\ba_\bm_\be_\b(_\b)_\b _\bn_\ba_\bm_\be_\b(_\b)\n+ o _\bn_\ba_\bm_\be_\b(_\b)_\b _\bs_\be_\bt_\b__\bn_\ba_\bm_\be_\b(_\b)\n o _\bs_\bw_\ba_\bp_\b(_\b)\n o _\bc_\ba_\bn_\bo_\bn_\bi_\bc_\ba_\bl_\bi_\bz_\be_\b(_\b)\n- o _\bh_\ba_\bs_\bh_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bn_\ba_\bm_\be_\b(_\b)_\b _\bm_\bt_\bi_\bm_\be_\b(_\b)_\b _\br_\bo_\bo_\bt_\b__\bp_\bt_\br_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bs_\bi_\bz_\be_\b(_\b)\n- _\bp_\ba_\bd_\b__\bf_\bi_\bl_\be_\b__\ba_\bt_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)_\b _\bs_\by_\bm_\bl_\bi_\bn_\bk_\b(_\b)_\b _\br_\bo_\bo_\bt_\b(_\b)\n+ o _\bf_\bi_\bl_\be_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)_\b _\br_\bo_\bo_\bt_\b__\bp_\bt_\br_\b(_\b)_\b _\bm_\bt_\bi_\bm_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bn_\ba_\bm_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)_\b _\bh_\ba_\bs_\bh_\b(_\b)\n+ _\bs_\by_\bm_\bl_\bi_\bn_\bk_\b(_\b)_\b _\br_\bo_\bo_\bt_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bs_\bi_\bz_\be_\b(_\b)_\b _\bp_\ba_\bd_\b__\bf_\bi_\bl_\be_\b__\ba_\bt_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bn_\bu_\bm_\b__\bb_\bl_\bo_\bc_\bk_\bs_\b(_\b)\n- o _\bf_\bi_\bl_\be_\b__\bf_\bi_\br_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bn_\bo_\bd_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bf_\bi_\br_\bs_\bt_\b__\bb_\bl_\bo_\bc_\bk_\b__\bn_\bo_\bd_\be_\b(_\b)\n+ o _\bf_\bi_\bl_\be_\b__\bf_\bi_\br_\bs_\bt_\b__\bb_\bl_\bo_\bc_\bk_\b__\bn_\bo_\bd_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bf_\bi_\br_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bn_\bo_\bd_\be_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bp_\ba_\bt_\bh_\b__\bh_\ba_\bs_\bh_\b(_\b)\n o _\ba_\bl_\bl_\b__\bp_\ba_\bt_\bh_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bf_\bl_\ba_\bg_\bs_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\ba_\bb_\bs_\bo_\bl_\bu_\bt_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\ba_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\ba_\bt_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\bf_\bo_\br_\b__\br_\bo_\bo_\bt_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\ba_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)\n@@ -82,66 +82,66 @@\n bool i\bis\bs_\b_v\bva\bal\bli\bid\bd () const;\n void r\bre\bes\bse\ber\brv\bve\be (int num_files);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (error_code& ec, std::string const& path, std::int64_t\n file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n- void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (std::string const& path, std::int64_t file_size\n- , file_flags_t file_flags = {}\n- , std::time_t mtime = 0, string_view symlink_path = string_view()\n- , char const* root_hash = nullptr);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be_\b_b\bbo\bor\brr\bro\bow\bw (error_code& ec, string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be_\b_b\bbo\bor\brr\bro\bow\bw (string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n+ void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (std::string const& path, std::int64_t file_size\n+ , file_flags_t file_flags = {}\n+ , std::time_t mtime = 0, string_view symlink_path = string_view()\n+ , char const* root_hash = nullptr);\n void r\bre\ben\bna\bam\bme\be_\b_f\bfi\bil\ble\be (file_index_t index, std::string const& new_filename);\n std::vector m\bma\bap\bp_\b_b\bbl\blo\boc\bck\bk (piece_index_t piece, std::int64_t offset\n , std::int64_t size) const;\n peer_request m\bma\bap\bp_\b_f\bfi\bil\ble\be (file_index_t file, std::int64_t offset, int size)\n const;\n int n\bnu\bum\bm_\b_f\bfi\bil\ble\bes\bs () const noexcept;\n file_index_t e\ben\bnd\bd_\b_f\bfi\bil\ble\be () const noexcept;\n index_range f\bfi\bil\ble\be_\b_r\bra\ban\bng\bge\be () const noexcept;\n std::int64_t t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be () const;\n- int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n void s\bse\bet\bt_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs (int n);\n+ int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n piece_index_t e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be () const;\n piece_index_t l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be () const;\n index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const noexcept;\n- int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh (int l);\n+ int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n int p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be (piece_index_t index) const;\n int p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be2\b2 (piece_index_t index) const;\n int b\bbl\blo\boc\bck\bks\bs_\b_i\bin\bn_\b_p\bpi\bie\bec\bce\be2\b2 (piece_index_t index) const;\n int b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be () const;\n- std::string const& n\bna\bam\bme\be () const;\n void s\bse\bet\bt_\b_n\bna\bam\bme\be (std::string const& n);\n+ std::string const& n\bna\bam\bme\be () const;\n void s\bsw\bwa\bap\bp (file_storage& ti) noexcept;\n void c\bca\ban\bno\bon\bni\bic\bca\bal\bli\biz\bze\be ();\n- std::int64_t f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt (file_index_t index) const;\n- char const* r\bro\boo\bot\bt_\b_p\bpt\btr\br (file_index_t const index) const;\n std::time_t m\bmt\bti\bim\bme\be (file_index_t index) const;\n- sha1_hash h\bha\bas\bsh\bh (file_index_t index) const;\n- bool p\bpa\bad\bd_\b_f\bfi\bil\ble\be_\b_a\bat\bt (file_index_t index) const;\n- sha256_hash r\bro\boo\bot\bt (file_index_t index) const;\n- std::int64_t f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be (file_index_t index) const;\n string_view f\bfi\bil\ble\be_\b_n\bna\bam\bme\be (file_index_t index) const;\n std::string s\bsy\bym\bml\bli\bin\bnk\bk (file_index_t index) const;\n+ bool p\bpa\bad\bd_\b_f\bfi\bil\ble\be_\b_a\bat\bt (file_index_t index) const;\n+ std::int64_t f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be (file_index_t index) const;\n+ char const* r\bro\boo\bot\bt_\b_p\bpt\btr\br (file_index_t const index) const;\n+ sha1_hash h\bha\bas\bsh\bh (file_index_t index) const;\n+ sha256_hash r\bro\boo\bot\bt (file_index_t index) const;\n+ std::int64_t f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt (file_index_t index) const;\n std::string f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh (file_index_t index, std::string const& save_path =\n \"\") const;\n+ int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_b\bbl\blo\boc\bck\bks\bs (file_index_t index) const;\n int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs (file_index_t index) const;\n index_range f\bfi\bil\ble\be_\b_p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be (file_index_t) const;\n- int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_b\bbl\blo\boc\bck\bks\bs (file_index_t index) const;\n int f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_b\bbl\blo\boc\bck\bk_\b_n\bno\bod\bde\be (file_index_t index) const;\n int f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_n\bno\bod\bde\be (file_index_t index) const;\n std::uint32_t f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh_\b_h\bha\bas\bsh\bh (file_index_t index, std::string const&\n save_path) const;\n void a\bal\bll\bl_\b_p\bpa\bat\bth\bh_\b_h\bha\bas\bsh\bhe\bes\bs (std::unordered_set& table) const;\n file_flags_t f\bfi\bil\ble\be_\b_f\bfl\bla\bag\bgs\bs (file_index_t index) const;\n bool f\bfi\bil\ble\be_\b_a\bab\bbs\bso\bol\blu\but\bte\be_\b_p\bpa\bat\bth\bh (file_index_t index) const;\n@@ -171,28 +171,28 @@\n is known up-front.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_f\bfi\bil\ble\be_\b_b\bbo\bor\brr\bro\bow\bw(\b()\b) a\bad\bdd\bd_\b_f\bfi\bil\ble\be(\b()\b) *\b**\b**\b**\b**\b*\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (error_code& ec, std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n-void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (std::string const& path, std::int64_t file_size\n- , file_flags_t file_flags = {}\n- , std::time_t mtime = 0, string_view symlink_path = string_view()\n- , char const* root_hash = nullptr);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be_\b_b\bbo\bor\brr\bro\bow\bw (error_code& ec, string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be_\b_b\bbo\bor\brr\bro\bow\bw (string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n+void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (std::string const& path, std::int64_t file_size\n+ , file_flags_t file_flags = {}\n+ , std::time_t mtime = 0, string_view symlink_path = string_view()\n+ , char const* root_hash = nullptr);\n Adds a file to the file storage. The add_file_borrow version expects that\n filename is the file name (without a path) of the file that's being added. This\n memory is b\bbo\bor\brr\bro\bow\bwe\bed\bd, i.e. it is the caller's responsibility to make sure it\n stays valid throughout the lifetime of this _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be object or any copy of\n it. The same thing applies to filehash, which is an optional pointer to a 20\n byte binary SHA-1 hash of the file.\n if filename is empty, the filename from path is used and not borrowed.\n@@ -261,17 +261,17 @@\n range-for loop. Where the values are the indices of all files in the\n _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n std::int64_t t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be () const;\n returns the total number of bytes all the files in this torrent spans\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) s\bse\bet\bt_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n-int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n+*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs (int n);\n+int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n set and get the number of pieces in the torrent\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n piece_index_t e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be () const;\n returns the index of the one-past-end piece in the file storage\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n@@ -282,17 +282,17 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be(\b()\b) *\b**\b**\b**\b**\b*\n index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const noexcept;\n returns an implementation-defined type that can be used as the container in a\n range-for loop. Where the values are the indices of all pieces in the\n _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) *\b**\b**\b**\b**\b*\n-int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n+*\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh (int l);\n+int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n set and get the size of each piece in this torrent. It must be a power of two\n and at least 16 kiB.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n int p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be (piece_index_t index) const;\n returns the piece size of index. This will be the same as _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b),\n except for the last piece, which may be shorter.\n@@ -309,39 +309,39 @@\n returns the number of blocks in the specified piece, for v2 torrents.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n int b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be () const;\n returns the number of blocks there are in the typical piece. There may be fewer\n in the last piece)\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_n\bna\bam\bme\be(\b()\b) n\bna\bam\bme\be(\b()\b) *\b**\b**\b**\b**\b*\n-std::string const& n\bna\bam\bme\be () const;\n+*\b**\b**\b**\b**\b* n\bna\bam\bme\be(\b()\b) s\bse\bet\bt_\b_n\bna\bam\bme\be(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_n\bna\bam\bme\be (std::string const& n);\n+std::string const& n\bna\bam\bme\be () const;\n set and get the name of this torrent. For multi-file torrents, this is also the\n name of the root directory all the files are stored in.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bsw\bwa\bap\bp(\b()\b) *\b**\b**\b**\b**\b*\n void s\bsw\bwa\bap\bp (file_storage& ti) noexcept;\n swap all content of t\bth\bhi\bis\bs with t\bti\bi.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bca\ban\bno\bon\bni\bic\bca\bal\bli\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n void c\bca\ban\bno\bon\bni\bic\bca\bal\bli\biz\bze\be ();\n arrange files and padding to match the canonical form required by BEP 52\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* h\bha\bas\bsh\bh(\b()\b) f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh(\b()\b) f\bfi\bil\ble\be_\b_n\bna\bam\bme\be(\b()\b) m\bmt\bti\bim\bme\be(\b()\b) r\bro\boo\bot\bt_\b_p\bpt\btr\br(\b()\b) f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be(\b()\b) p\bpa\bad\bd_\b_f\bfi\bil\ble\be_\b_a\bat\bt\n-(\b()\b) f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt(\b()\b) s\bsy\bym\bml\bli\bin\bnk\bk(\b()\b) r\bro\boo\bot\bt(\b()\b) *\b**\b**\b**\b**\b*\n-std::int64_t f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt (file_index_t index) const;\n-char const* r\bro\boo\bot\bt_\b_p\bpt\btr\br (file_index_t const index) const;\n+*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt(\b()\b) r\bro\boo\bot\bt_\b_p\bpt\btr\br(\b()\b) m\bmt\bti\bim\bme\be(\b()\b) f\bfi\bil\ble\be_\b_n\bna\bam\bme\be(\b()\b) f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh(\b()\b) h\bha\bas\bsh\bh(\b()\b) s\bsy\bym\bml\bli\bin\bnk\bk(\b()\b)\n+r\bro\boo\bot\bt(\b()\b) f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be(\b()\b) p\bpa\bad\bd_\b_f\bfi\bil\ble\be_\b_a\bat\bt(\b()\b) *\b**\b**\b**\b**\b*\n std::time_t m\bmt\bti\bim\bme\be (file_index_t index) const;\n-sha1_hash h\bha\bas\bsh\bh (file_index_t index) const;\n-bool p\bpa\bad\bd_\b_f\bfi\bil\ble\be_\b_a\bat\bt (file_index_t index) const;\n-sha256_hash r\bro\boo\bot\bt (file_index_t index) const;\n-std::int64_t f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be (file_index_t index) const;\n string_view f\bfi\bil\ble\be_\b_n\bna\bam\bme\be (file_index_t index) const;\n std::string s\bsy\bym\bml\bli\bin\bnk\bk (file_index_t index) const;\n+bool p\bpa\bad\bd_\b_f\bfi\bil\ble\be_\b_a\bat\bt (file_index_t index) const;\n+std::int64_t f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be (file_index_t index) const;\n+char const* r\bro\boo\bot\bt_\b_p\bpt\btr\br (file_index_t const index) const;\n+sha1_hash h\bha\bas\bsh\bh (file_index_t index) const;\n+sha256_hash r\bro\boo\bot\bt (file_index_t index) const;\n+std::int64_t f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt (file_index_t index) const;\n std::string f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh (file_index_t index, std::string const& save_path = \"\")\n const;\n These functions are used to query attributes of files at a given index.\n The hash() is a SHA-1 hash of the file, or 0 if none was provided in the\n torrent file. This can potentially be used to join a bittorrent network with\n other file sharing networks.\n root() returns the SHA-256 merkle tree root of the specified file, in case this\n@@ -357,23 +357,23 @@\n pad_file_at() returns true if the file at the given index is a pad-file.\n file_name() returns j\bju\bus\bst\bt the name of the file, whereas file_path() returns the\n path (inside the torrent file) with the filename appended.\n file_offset() returns the byte offset within the torrent file where this file\n starts. It can be used to map the file to a piece index (given the piece size).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) f\bfi\bil\ble\be_\b_p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be(\b()\b) f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_b\bbl\blo\boc\bck\bks\bs(\b()\b) *\b**\b**\b**\b**\b*\n+int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_b\bbl\blo\boc\bck\bks\bs (file_index_t index) const;\n int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs (file_index_t index) const;\n index_range f\bfi\bil\ble\be_\b_p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be (file_index_t) const;\n-int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_b\bbl\blo\boc\bck\bks\bs (file_index_t index) const;\n Returns the number of pieces or blocks the file atindexspans, under the\n assumption that the file is aligned to the start of a piece. This is only\n meaningful for v2 torrents, where files are guaranteed such alignment. These\n numbers are used to size and navigate the merkle hash tree for each file.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_n\bno\bod\bde\be(\b()\b) f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_b\bbl\blo\boc\bck\bk_\b_n\bno\bod\bde\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_b\bbl\blo\boc\bck\bk_\b_n\bno\bod\bde\be(\b()\b) f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_n\bno\bod\bde\be(\b()\b) *\b**\b**\b**\b**\b*\n int f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_b\bbl\blo\boc\bck\bk_\b_n\bno\bod\bde\be (file_index_t index) const;\n int f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_n\bno\bod\bde\be (file_index_t index) const;\n index of first piece node in the merkle tree\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh_\b_h\bha\bas\bsh\bh(\b()\b) *\b**\b**\b**\b**\b*\n std::uint32_t f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh_\b_h\bha\bas\bsh\bh (file_index_t index, std::string const& save_path)\n const;\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Torrent_Handle.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Torrent_Handle.html", "unified_diff": "@@ -39,52 +39,52 @@\n \n
  • partial_piece_info
  • \n
  • torrent_handle\n
  • \n
  • hash_value()
  • \n@@ -94,16 +94,16 @@\n

    block_info

    \n

    Declared in "libtorrent/torrent_handle.hpp"

    \n

    holds the state of a block in a piece. Who we requested\n it from and how far along we are at downloading it.

    \n
    \n struct block_info\n {\n-   tcp::endpoint peer () const;\n    void set_peer (tcp::endpoint const& ep);\n+   tcp::endpoint peer () const;\n \n    enum block_state_t\n    {\n       none,\n       requested,\n       writing,\n       finished,\n@@ -115,16 +115,16 @@\n    unsigned num_peers:14;\n };\n 
    \n \n [report issue]
    \n

    set_peer() peer()

    \n
    \n-tcp::endpoint peer () const;\n void set_peer (tcp::endpoint const& ep);\n+tcp::endpoint peer () const;\n 
    \n

    The peer is the ip address of the peer this block was downloaded from.

    \n [report issue]
    \n
    \n

    enum block_state_t

    \n

    Declared in "libtorrent/torrent_handle.hpp"

    \n \n@@ -263,94 +263,94 @@\n handle will remain valid between two calls.

    \n \n
    \n struct torrent_handle\n {\n    friend std::size_t hash_value (torrent_handle const& th);\n    torrent_handle () noexcept = default;\n-   void add_piece (piece_index_t piece, char const* data, add_piece_flags_t flags = {}) const;\n    void add_piece (piece_index_t piece, std::vector<char> data, add_piece_flags_t flags = {}) const;\n+   void add_piece (piece_index_t piece, char const* data, add_piece_flags_t flags = {}) const;\n    void read_piece (piece_index_t piece) const;\n    bool have_piece (piece_index_t piece) const;\n    void get_peer_info (std::vector<peer_info>& v) const;\n    void post_peer_info () const;\n-   void post_status (status_flags_t flags = status_flags_t::all()) const;\n    torrent_status status (status_flags_t flags = status_flags_t::all()) const;\n+   void post_status (status_flags_t flags = status_flags_t::all()) const;\n+   std::vector<partial_piece_info> get_download_queue () const;\n    void get_download_queue (std::vector<partial_piece_info>& queue) const;\n    void post_download_queue () const;\n-   std::vector<partial_piece_info> get_download_queue () const;\n    void reset_piece_deadline (piece_index_t index) const;\n-   void clear_piece_deadlines () const;\n    void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t flags = {}) const;\n-   void file_progress (std::vector<std::int64_t>& progress, file_progress_flags_t flags = {}) const;\n-   std::vector<std::int64_t> file_progress (file_progress_flags_t flags = {}) const;\n+   void clear_piece_deadlines () const;\n    void post_file_progress (file_progress_flags_t flags) const;\n+   std::vector<std::int64_t> file_progress (file_progress_flags_t flags = {}) const;\n+   void file_progress (std::vector<std::int64_t>& progress, file_progress_flags_t flags = {}) const;\n    std::vector<open_file_state> file_status () const;\n    void clear_error () const;\n-   void add_tracker (announce_entry const&) const;\n    void replace_trackers (std::vector<announce_entry> const&) const;\n-   void post_trackers () const;\n    std::vector<announce_entry> trackers () const;\n+   void add_tracker (announce_entry const&) const;\n+   void post_trackers () const;\n+   std::set<std::string> url_seeds () const;\n    void remove_url_seed (std::string const& url) const;\n    void add_url_seed (std::string const& url) const;\n-   std::set<std::string> url_seeds () const;\n-   void add_http_seed (std::string const& url) const;\n    void remove_http_seed (std::string const& url) const;\n+   void add_http_seed (std::string const& url) const;\n    std::set<std::string> http_seeds () const;\n    void add_extension (\n       std::function<std::shared_ptr<torrent_plugin>(torrent_handle const&, client_data_t)> const& ext\n       , client_data_t userdata = client_data_t{});\n    bool set_metadata (span<char const> metadata) const;\n    bool is_valid () const;\n    void pause (pause_flags_t flags = {}) const;\n    void resume () const;\n-   void set_flags (torrent_flags_t flags) const;\n-   void unset_flags (torrent_flags_t flags) const;\n    torrent_flags_t flags () const;\n    void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n+   void unset_flags (torrent_flags_t flags) const;\n+   void set_flags (torrent_flags_t flags) const;\n    void flush_cache () const;\n    void force_recheck () const;\n    void save_resume_data (resume_data_flags_t flags = {}) const;\n-   bool need_save_resume_data () const;\n    bool need_save_resume_data (resume_data_flags_t flags) const;\n+   bool need_save_resume_data () const;\n    void queue_position_bottom () const;\n-   void queue_position_down () const;\n    queue_position_t queue_position () const;\n-   void queue_position_up () const;\n    void queue_position_top () const;\n+   void queue_position_up () const;\n+   void queue_position_down () const;\n    void queue_position_set (queue_position_t p) const;\n-   void set_ssl_certificate_buffer (std::string const& certificate\n-      , std::string const& private_key\n-      , std::string const& dh_params);\n    void set_ssl_certificate (std::string const& certificate\n       , std::string const& private_key\n       , std::string const& dh_params\n       , std::string const& passphrase = "");\n+   void set_ssl_certificate_buffer (std::string const& certificate\n+      , std::string const& private_key\n+      , std::string const& dh_params);\n    std::shared_ptr<const torrent_info> torrent_file () const;\n    std::shared_ptr<torrent_info> torrent_file_with_hashes () const;\n    std::vector<std::vector<sha256_hash>> piece_layers () const;\n-   void piece_availability (std::vector<int>& avail) const;\n    void post_piece_availability () const;\n-   std::vector<download_priority_t> get_piece_priorities () const;\n+   void piece_availability (std::vector<int>& avail) const;\n    void piece_priority (piece_index_t index, download_priority_t priority) const;\n-   void prioritize_pieces (std::vector<download_priority_t> const& pieces) const;\n-   download_priority_t piece_priority (piece_index_t index) const;\n+   std::vector<download_priority_t> get_piece_priorities () const;\n    void prioritize_pieces (std::vector<std::pair<piece_index_t, download_priority_t>> const& pieces) const;\n-   void file_priority (file_index_t index, download_priority_t priority) const;\n+   download_priority_t piece_priority (piece_index_t index) const;\n+   void prioritize_pieces (std::vector<download_priority_t> const& pieces) const;\n    std::vector<download_priority_t> get_file_priorities () const;\n-   download_priority_t file_priority (file_index_t index) const;\n+   void file_priority (file_index_t index, download_priority_t priority) const;\n    void prioritize_files (std::vector<download_priority_t> const& files) const;\n-   void force_dht_announce () const;\n+   download_priority_t file_priority (file_index_t index) const;\n    void force_lsd_announce () const;\n    void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {}) const;\n+   void force_dht_announce () const;\n    void scrape_tracker (int idx = -1) const;\n-   int download_limit () const;\n+   void set_download_limit (int limit) const;\n    int upload_limit () const;\n    void set_upload_limit (int limit) const;\n-   void set_download_limit (int limit) const;\n+   int download_limit () const;\n    void connect_peer (tcp::endpoint const& adr, peer_source_flags_t source = {}\n       , pex_flags_t flags = pex_encryption | pex_utp | pex_holepunch) const;\n    void clear_peers ();\n    void set_max_uploads (int max_uploads) const;\n    int max_uploads () const;\n    int max_connections () const;\n    void set_max_connections (int max_connections) const;\n@@ -398,16 +398,16 @@\n 
    \n

    constructs a torrent handle that does not refer to a torrent.\n i.e. is_valid() will return false.

    \n [report issue]\n
    \n

    add_piece()

    \n
    \n-void add_piece (piece_index_t piece, char const* data, add_piece_flags_t flags = {}) const;\n void add_piece (piece_index_t piece, std::vector<char> data, add_piece_flags_t flags = {}) const;\n+void add_piece (piece_index_t piece, char const* data, add_piece_flags_t flags = {}) const;\n 
    \n

    This function will write data to the storage as piece piece,\n as if it had been downloaded from a peer.

    \n

    By default, data that's already been downloaded is not overwritten by\n this buffer. If you trust this data to be correct (and pass the piece\n hash check) you may pass the overwrite_existing flag. This will\n instruct libtorrent to overwrite any data that may already have been\n@@ -444,39 +444,39 @@\n

    \n

    have_piece()

    \n
    \n bool have_piece (piece_index_t piece) const;\n 
    \n

    Returns true if this piece has been completely downloaded and written\n to disk, and false otherwise.

    \n-\n-[report issue]
    \n-
    \n-

    post_peer_info() get_peer_info()

    \n+\n+[report issue]
    \n+
    \n+

    get_peer_info() post_peer_info()

    \n
    \n void get_peer_info (std::vector<peer_info>& v) const;\n void post_peer_info () const;\n 
    \n

    Query information about connected peers for this torrent. If the\n torrent_handle is invalid, it will throw a system_error exception.

    \n

    post_peer_info() is asynchronous and will trigger the posting of\n a peer_info_alert. The alert contain a list of peer_info objects, one\n for each connected peer.

    \n

    get_peer_info() is synchronous and takes a reference to a vector\n that will be cleared and filled with one entry for each peer\n connected to this torrent, given the handle is valid. Each entry in\n the vector contains information about that particular peer. See\n peer_info.

    \n-\n-[report issue]
    \n-
    \n-

    status() post_status()

    \n+\n+[report issue]
    \n+
    \n+

    post_status() status()

    \n
    \n-void post_status (status_flags_t flags = status_flags_t::all()) const;\n torrent_status status (status_flags_t flags = status_flags_t::all()) const;\n+void post_status (status_flags_t flags = status_flags_t::all()) const;\n 
    \n

    status() will return a structure with information about the status\n of this torrent. If the torrent_handle is invalid, it will throw\n system_error exception. See torrent_status. The flags\n argument filters what information is returned in the torrent_status.\n Some information in there is relatively expensive to calculate, and if\n you're not interested in it (and see performance issues), you can\n@@ -486,38 +486,38 @@\n instead call post_status(). It will trigger posting of a\n state_update_alert with a single torrent_status object for this\n torrent.

    \n

    In order to get regular updates for torrents whose status changes,\n consider calling session::post_torrent_updates()`` instead.

    \n

    By default everything is included. The flags you can use to decide\n what to include are defined in this class.

    \n-\n-[report issue]
    \n-
    \n-

    post_download_queue() get_download_queue()

    \n+\n+[report issue]
    \n+
    \n+

    get_download_queue() post_download_queue()

    \n
    \n+std::vector<partial_piece_info> get_download_queue () const;\n void get_download_queue (std::vector<partial_piece_info>& queue) const;\n void post_download_queue () const;\n-std::vector<partial_piece_info> get_download_queue () const;\n 
    \n

    post_download_queue() triggers a download_queue_alert to be\n posted.\n get_download_queue() is a synchronous call and returns a vector\n with information about pieces that are partially downloaded or not\n downloaded but partially requested. See partial_piece_info for the\n fields in the returned vector.

    \n \n \n [report issue]
    \n
    \n

    clear_piece_deadlines() reset_piece_deadline() set_piece_deadline()

    \n
    \n void reset_piece_deadline (piece_index_t index) const;\n-void clear_piece_deadlines () const;\n void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t flags = {}) const;\n+void clear_piece_deadlines () const;\n 
    \n

    This function sets or resets the deadline associated with a specific\n piece index (index). libtorrent will attempt to download this\n entire piece before the deadline expires. This is not necessarily\n possible, but pieces with a more recent deadline will always be\n prioritized over pieces with a deadline further ahead in time. The\n deadline (and flags) of a piece can be changed by calling this\n@@ -528,22 +528,22 @@\n

    deadline is the number of milliseconds until this piece should be\n completed.

    \n

    reset_piece_deadline removes the deadline from the piece. If it\n hasn't already been downloaded, it will no longer be considered a\n priority.

    \n

    clear_piece_deadlines() removes deadlines on all pieces in\n the torrent. As if reset_piece_deadline() was called on all pieces.

    \n-\n-[report issue]
    \n-
    \n-

    post_file_progress() file_progress()

    \n+\n+[report issue]
    \n+
    \n+

    file_progress() post_file_progress()

    \n
    \n-void file_progress (std::vector<std::int64_t>& progress, file_progress_flags_t flags = {}) const;\n-std::vector<std::int64_t> file_progress (file_progress_flags_t flags = {}) const;\n void post_file_progress (file_progress_flags_t flags) const;\n+std::vector<std::int64_t> file_progress (file_progress_flags_t flags = {}) const;\n+void file_progress (std::vector<std::int64_t>& progress, file_progress_flags_t flags = {}) const;\n 
    \n

    This function fills in the supplied vector, or returns a vector, with\n the number of bytes downloaded of each file in this torrent. The\n progress values are ordered the same as the files in the\n torrent_info.

    \n

    This operation is not very cheap. Its complexity is O(n + mj).\n Where n is the number of files, m is the number of currently\n@@ -572,25 +572,25 @@\n

    \n

    clear_error()

    \n
    \n void clear_error () const;\n 
    \n

    If the torrent is in an error state (i.e. torrent_status::error is\n non-empty), this will clear the error and start the torrent again.

    \n+\n \n \n-\n-[report issue]
    \n-
    \n-

    trackers() add_tracker() replace_trackers() post_trackers()

    \n+[report issue]
    \n+
    \n+

    post_trackers() trackers() add_tracker() replace_trackers()

    \n
    \n-void add_tracker (announce_entry const&) const;\n void replace_trackers (std::vector<announce_entry> const&) const;\n-void post_trackers () const;\n std::vector<announce_entry> trackers () const;\n+void add_tracker (announce_entry const&) const;\n+void post_trackers () const;\n 
    \n

    trackers() returns the list of trackers for this torrent. The\n announce entry contains both a string url which specify the\n announce url for the tracker as well as an int tier, which is\n specifies the order in which this tracker is tried. If you want\n libtorrent to use another list of trackers for this torrent, you can\n use replace_trackers() which takes a list of the same form as the\n@@ -602,41 +602,41 @@\n

    add_tracker() will look if the specified tracker is already in the\n set. If it is, it doesn't do anything. If it's not in the current set\n of trackers, it will insert it in the tier specified in the\n announce_entry.

    \n

    The updated set of trackers will be saved in the resume data, and when\n a torrent is started with resume data, the trackers from the resume\n data will replace the original ones.

    \n-\n \n-[report issue]
    \n-
    \n-

    remove_url_seed() add_url_seed() url_seeds()

    \n+\n+[report issue]
    \n+
    \n+

    add_url_seed() url_seeds() remove_url_seed()

    \n
    \n+std::set<std::string> url_seeds () const;\n void remove_url_seed (std::string const& url) const;\n void add_url_seed (std::string const& url) const;\n-std::set<std::string> url_seeds () const;\n 
    \n

    add_url_seed() adds another url to the torrent's list of url\n seeds. If the given url already exists in that list, the call has no\n effect. The torrent will connect to the server and try to download\n pieces from it, unless it's paused, queued, checking or seeding.\n remove_url_seed() removes the given url if it exists already.\n url_seeds() return a set of the url seeds currently in this\n torrent. Note that URLs that fails may be removed automatically from\n the list.

    \n

    See http seeding for more information.

    \n-\n \n-[report issue]
    \n-
    \n-

    add_http_seed() http_seeds() remove_http_seed()

    \n+\n+[report issue]
    \n+
    \n+

    http_seeds() add_http_seed() remove_http_seed()

    \n
    \n-void add_http_seed (std::string const& url) const;\n void remove_http_seed (std::string const& url) const;\n+void add_http_seed (std::string const& url) const;\n std::set<std::string> http_seeds () const;\n 
    \n

    These functions are identical as the *_url_seed() variants, but\n they operate on BEP 17 web seeds instead of BEP 19.

    \n

    See http seeding for more information.

    \n [report issue]
    \n
    \n@@ -679,18 +679,18 @@\n afterward.

    \n

    Clients should only use is_valid() to determine if the result of\n session::find_torrent() was successful.

    \n

    Unlike other member functions which return a value, is_valid()\n completes immediately, without blocking on a result from the\n network thread. Also unlike other functions, it never throws\n the system_error exception.

    \n-\n-[report issue]
    \n-
    \n-

    pause() resume()

    \n+\n+[report issue]
    \n+
    \n+

    resume() pause()

    \n
    \n void pause (pause_flags_t flags = {}) const;\n void resume () const;\n 
    \n

    pause(), and resume() will disconnect all peers and reconnect\n all peers respectively. When a torrent is paused, it will however\n remember all share ratios to all peers and remember all potential (not\n@@ -704,24 +704,24 @@\n

    \n

    Note

    \n

    Torrents that are auto-managed may be automatically resumed again. It\n does not make sense to pause an auto-managed torrent without making it\n not auto-managed first. Torrents are auto-managed by default when added\n to the session. For more information, see queuing.

    \n
    \n+\n \n-\n-[report issue]
    \n-
    \n-

    set_flags() unset_flags() flags()

    \n+[report issue]
    \n+
    \n+

    flags() set_flags() unset_flags()

    \n
    \n-void set_flags (torrent_flags_t flags) const;\n-void unset_flags (torrent_flags_t flags) const;\n torrent_flags_t flags () const;\n void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n+void unset_flags (torrent_flags_t flags) const;\n+void set_flags (torrent_flags_t flags) const;\n 
    \n

    sets and gets the torrent state flags. See torrent_flags_t.\n The set_flags overload that take a mask will affect all\n flags part of the mask, and set their values to what the\n flags argument is set to. This allows clearing and\n setting flags in a single function call.\n The set_flags overload that just takes flags, sets all\n@@ -858,16 +858,16 @@\n report that they don't need to save resume data again, and skipped by\n the initial loop, and thwart the counter otherwise.

    \n
    \n [report issue]
    \n
    \n

    need_save_resume_data()

    \n
    \n-bool need_save_resume_data () const;\n bool need_save_resume_data (resume_data_flags_t flags) const;\n+bool need_save_resume_data () const;\n 
    \n

    This function returns true if anything that is stored in the resume\n data has changed since the last time resume data was saved.\n The overload that takes flags let you ask if specific categories\n of properties have changed. These flags have the same behavior as in\n the save_resume_data() call.

    \n

    This is a blocking call. It will wait for a response from\n@@ -877,27 +877,27 @@\n

    \n

    Note

    \n

    A torrent's resume data is considered saved as soon as the\n save_resume_data_alert is posted. It is important to make sure this\n alert is received and handled in order for this function to be\n meaningful.

    \n
    \n+\n+\n \n \n-\n-\n-[report issue]
    \n-
    \n-

    queue_position_up() queue_position_down() queue_position_bottom() queue_position() queue_position_top()

    \n+[report issue]
    \n+
    \n+

    queue_position() queue_position_top() queue_position_up() queue_position_down() queue_position_bottom()

    \n
    \n void queue_position_bottom () const;\n-void queue_position_down () const;\n queue_position_t queue_position () const;\n-void queue_position_up () const;\n void queue_position_top () const;\n+void queue_position_up () const;\n+void queue_position_down () const;\n 
    \n

    Every torrent that is added is assigned a queue position exactly one\n greater than the greatest queue position of all existing torrents.\n Torrents that are being seeded have -1 as their queue position, since\n they're no longer in line to be downloaded.

    \n

    When a torrent is removed or turns into a seed, all torrents with\n greater queue positions have their positions decreased to fill in the\n@@ -921,21 +921,21 @@\n of all other torrents remain intact but their numerical queue position\n shifts to make space for this torrent's new position

    \n \n [report issue]
    \n
    \n

    set_ssl_certificate_buffer() set_ssl_certificate()

    \n
    \n-void set_ssl_certificate_buffer (std::string const& certificate\n-      , std::string const& private_key\n-      , std::string const& dh_params);\n void set_ssl_certificate (std::string const& certificate\n       , std::string const& private_key\n       , std::string const& dh_params\n       , std::string const& passphrase = "");\n+void set_ssl_certificate_buffer (std::string const& certificate\n+      , std::string const& private_key\n+      , std::string const& dh_params);\n 
    \n

    For SSL torrents, use this to specify a path to a .pem file to use as\n this client's certificate. The certificate must be signed by the\n certificate in the .torrent file to be valid.

    \n

    The set_ssl_certificate_buffer() overload takes the actual certificate,\n private key and DH params as strings, rather than paths to files.

    \n

    cert is a path to the (signed) certificate in .pem format\n@@ -951,18 +951,18 @@\n

    Note that when a torrent first starts up, and it needs a certificate,\n it will suspend connecting to any peers until it has one. It's\n typically desirable to resume the torrent after setting the SSL\n certificate.

    \n

    If you receive a torrent_need_cert_alert, you need to call this to\n provide a valid cert. If you don't have a cert you won't be allowed to\n connect to any peers.

    \n-\n-[report issue]
    \n-
    \n-

    torrent_file() torrent_file_with_hashes()

    \n+\n+[report issue]
    \n+
    \n+

    torrent_file_with_hashes() torrent_file()

    \n
    \n std::shared_ptr<const torrent_info> torrent_file () const;\n std::shared_ptr<torrent_info> torrent_file_with_hashes () const;\n 
    \n

    torrent_file() returns a pointer to the torrent_info object\n associated with this torrent. The torrent_info object may be a copy\n of the internal object. If the torrent doesn't have metadata, the\n@@ -1002,37 +1002,37 @@\n vector. This is a blocking call that will synchronize with the\n libtorrent network thread.

    \n \n [report issue]
    \n
    \n

    piece_availability() post_piece_availability()

    \n
    \n-void piece_availability (std::vector<int>& avail) const;\n void post_piece_availability () const;\n+void piece_availability (std::vector<int>& avail) const;\n 
    \n

    The piece availability is the number of peers that we are connected\n that has advertised having a particular piece. This is the information\n that libtorrent uses in order to prefer picking rare pieces.

    \n

    post_piece_availability() will trigger a piece_availability_alert\n to be posted.

    \n

    piece_availability() fills the specified std::vector<int>\n with the availability for each piece in this torrent. libtorrent does\n not keep track of availability for seeds, so if the torrent is\n seeding the availability for all pieces is reported as 0.

    \n \n-\n-[report issue]
    \n-
    \n-

    prioritize_pieces() piece_priority() get_piece_priorities()

    \n+\n+[report issue]
    \n+
    \n+

    prioritize_pieces() get_piece_priorities() piece_priority()

    \n
    \n-std::vector<download_priority_t> get_piece_priorities () const;\n void piece_priority (piece_index_t index, download_priority_t priority) const;\n-void prioritize_pieces (std::vector<download_priority_t> const& pieces) const;\n-download_priority_t piece_priority (piece_index_t index) const;\n+std::vector<download_priority_t> get_piece_priorities () const;\n void prioritize_pieces (std::vector<std::pair<piece_index_t, download_priority_t>> const& pieces) const;\n+download_priority_t piece_priority (piece_index_t index) const;\n+void prioritize_pieces (std::vector<download_priority_t> const& pieces) const;\n 
    \n

    These functions are used to set and get the priority of individual\n pieces. By default all pieces have priority 4. That means that the\n random rarest first algorithm is effectively active for all pieces.\n You may however change the priority of individual pieces. There are 8\n priority levels. 0 means not to download the piece at all. Otherwise,\n lower priority values means less likely to be picked. Piece priority\n@@ -1054,24 +1054,24 @@\n Invalid entries, where the piece index or priority is out of range, are\n not allowed.

    \n

    get_piece_priorities returns a vector with one element for each piece\n in the torrent. Each element is the current priority of that piece.

    \n

    It's possible to cancel the effect of file priorities by setting the\n priorities for the affected pieces. Care has to be taken when mixing\n usage of file- and piece priorities.

    \n-\n \n-[report issue]
    \n-
    \n-

    get_file_priorities() prioritize_files() file_priority()

    \n+\n+[report issue]
    \n+
    \n+

    prioritize_files() file_priority() get_file_priorities()

    \n
    \n-void file_priority (file_index_t index, download_priority_t priority) const;\n std::vector<download_priority_t> get_file_priorities () const;\n-download_priority_t file_priority (file_index_t index) const;\n+void file_priority (file_index_t index, download_priority_t priority) const;\n void prioritize_files (std::vector<download_priority_t> const& files) const;\n+download_priority_t file_priority (file_index_t index) const;\n 
    \n

    index must be in the range [0, number_of_files).

    \n

    file_priority() queries or sets the priority of file index.

    \n

    prioritize_files() takes a vector that has at as many elements as\n there are files in the torrent. Each entry is the priority of that\n file. The function sets the priorities of all the pieces in the\n torrent based on the vector.

    \n@@ -1100,17 +1100,17 @@\n been created, it will not be moved into the partfile.

    \n \n \n [report issue]
    \n
    \n

    force_lsd_announce() force_reannounce() force_dht_announce()

    \n
    \n-void force_dht_announce () const;\n void force_lsd_announce () const;\n void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {}) const;\n+void force_dht_announce () const;\n 
    \n

    force_reannounce() will force this torrent to do another tracker\n request, to receive new peers. The seconds argument specifies how\n many seconds from now to issue the tracker announces.

    \n

    If the tracker's min_interval has not passed since the last\n announce, the forced announce will be scheduled to happen immediately\n as the min_interval expires. This is to honor trackers minimum\n@@ -1134,25 +1134,25 @@\n idx is >= 0, the tracker with the specified index will scraped.

    \n

    A scrape request queries the tracker for statistics such as total\n number of incomplete peers, complete peers, number of downloads etc.

    \n

    This request will specifically update the num_complete and\n num_incomplete fields in the torrent_status struct once it\n completes. When it completes, it will generate a scrape_reply_alert.\n If it fails, it will generate a scrape_failed_alert.

    \n-\n \n+\n \n-[report issue]
    \n-
    \n-

    set_upload_limit() upload_limit() download_limit() set_download_limit()

    \n+[report issue]
    \n+
    \n+

    upload_limit() set_upload_limit() download_limit() set_download_limit()

    \n
    \n-int download_limit () const;\n+void set_download_limit (int limit) const;\n int upload_limit () const;\n void set_upload_limit (int limit) const;\n-void set_download_limit (int limit) const;\n+int download_limit () const;\n 
    \n

    set_upload_limit will limit the upload bandwidth used by this\n particular torrent to the limit you set. It is given as the number of\n bytes per second the torrent is allowed to upload.\n set_download_limit works the same way but for download bandwidth\n instead of upload bandwidth. Note that setting a higher limit on a\n torrent then the global limit\n@@ -1184,32 +1184,32 @@\n

    clear_peers()

    \n
    \n void clear_peers ();\n 
    \n

    This will disconnect all peers and clear the peer list for this\n torrent. New peers will have to be acquired before resuming, from\n trackers, DHT or local service discovery, for example.

    \n-\n-[report issue]
    \n-
    \n-

    max_uploads() set_max_uploads()

    \n+\n+[report issue]
    \n+
    \n+

    set_max_uploads() max_uploads()

    \n
    \n void set_max_uploads (int max_uploads) const;\n int max_uploads () const;\n 
    \n

    set_max_uploads() sets the maximum number of peers that's unchoked\n at the same time on this torrent. If you set this to -1, there will be\n no limit. This defaults to infinite. The primary setting controlling\n this is the global unchoke slots limit, set by unchoke_slots_limit in\n settings_pack.

    \n

    max_uploads() returns the current settings.

    \n-\n-[report issue]
    \n-
    \n-

    set_max_connections() max_connections()

    \n+\n+[report issue]
    \n+
    \n+

    max_connections() set_max_connections()

    \n
    \n int max_connections () const;\n void set_max_connections (int max_connections) const;\n 
    \n

    set_max_connections() sets the maximum number of connection this\n torrent will open. If all connections are used up, incoming\n connections may be refused or poor connections may be closed. This\n@@ -1289,19 +1289,19 @@\n \n

    returns the info-hash(es) of the torrent. If this handle is to a\n torrent that hasn't loaded yet (for instance by being added) by a\n URL, the returned value is undefined.\n The info_hash() returns the SHA-1 info-hash for v1 torrents and a\n truncated hash for v2 torrents. For the full v2 info-hash, use\n info_hashes() instead.

    \n-\n \n-[report issue]
    \n+\n+[report issue]
    \n
    \n-

    operator==() operator!=() operator<()

    \n+

    operator!=() operator==() operator<()

    \n
    \n bool operator!= (const torrent_handle& h) const;\n bool operator== (const torrent_handle& h) const;\n bool operator< (const torrent_handle& h) const;\n 
    \n

    comparison operators. The order of the torrents is unspecified\n but stable.

    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,68 +8,68 @@\n o _\be_\bn_\bu_\bm_\b _\bb_\bl_\bo_\bc_\bk_\b__\bs_\bt_\ba_\bt_\be_\b__\bt\n * _\bp_\ba_\br_\bt_\bi_\ba_\bl_\b__\bp_\bi_\be_\bc_\be_\b__\bi_\bn_\bf_\bo\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be\n o _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be_\b(_\b)\n o _\ba_\bd_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n o _\br_\be_\ba_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n o _\bh_\ba_\bv_\be_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n- o _\bp_\bo_\bs_\bt_\b__\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo_\b(_\b)_\b _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo_\b(_\b)\n- o _\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)\n- o _\bp_\bo_\bs_\bt_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bq_\bu_\be_\bu_\be_\b(_\b)_\b _\bg_\be_\bt_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bq_\bu_\be_\bu_\be_\b(_\b)\n+ o _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo_\b(_\b)\n+ o _\bp_\bo_\bs_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)_\b _\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)\n+ o _\bg_\be_\bt_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bq_\bu_\be_\bu_\be_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bq_\bu_\be_\bu_\be_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\bs_\b(_\b)_\b _\br_\be_\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\b(_\b)\n- o _\bp_\bo_\bs_\bt_\b__\bf_\bi_\bl_\be_\b__\bp_\br_\bo_\bg_\br_\be_\bs_\bs_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bp_\br_\bo_\bg_\br_\be_\bs_\bs_\b(_\b)\n+ o _\bf_\bi_\bl_\be_\b__\bp_\br_\bo_\bg_\br_\be_\bs_\bs_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bf_\bi_\bl_\be_\b__\bp_\br_\bo_\bg_\br_\be_\bs_\bs_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b__\be_\br_\br_\bo_\br_\b(_\b)\n- o _\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)_\b _\br_\be_\bp_\bl_\ba_\bc_\be_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)\n- o _\br_\be_\bm_\bo_\bv_\be_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bu_\br_\bl_\b__\bs_\be_\be_\bd_\bs_\b(_\b)\n- o _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\br_\be_\bm_\bo_\bv_\be_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)\n+ o _\bp_\bo_\bs_\bt_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)_\b _\br_\be_\bp_\bl_\ba_\bc_\be_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)\n+ o _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bu_\br_\bl_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\br_\be_\bm_\bo_\bv_\be_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)\n+ o _\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\br_\be_\bm_\bo_\bv_\be_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)\n o _\ba_\bd_\bd_\b__\be_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn_\b(_\b)\n o _\bs_\be_\bt_\b__\bm_\be_\bt_\ba_\bd_\ba_\bt_\ba_\b(_\b)\n o _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b)\n- o _\bp_\ba_\bu_\bs_\be_\b(_\b)_\b _\br_\be_\bs_\bu_\bm_\be_\b(_\b)\n- o _\bs_\be_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b(_\b)_\b _\bu_\bn_\bs_\be_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b(_\b)_\b _\bf_\bl_\ba_\bg_\bs_\b(_\b)\n+ o _\br_\be_\bs_\bu_\bm_\be_\b(_\b)_\b _\bp_\ba_\bu_\bs_\be_\b(_\b)\n+ o _\bf_\bl_\ba_\bg_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b(_\b)_\b _\bu_\bn_\bs_\be_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b(_\b)\n o _\bf_\bl_\bu_\bs_\bh_\b__\bc_\ba_\bc_\bh_\be_\b(_\b)\n o _\bf_\bo_\br_\bc_\be_\b__\br_\be_\bc_\bh_\be_\bc_\bk_\b(_\b)\n o _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)\n o _\bn_\be_\be_\bd_\b__\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)\n- o _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bu_\bp_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bd_\bo_\bw_\bn_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bb_\bo_\bt_\bt_\bo_\bm_\b(_\b)\n- _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bt_\bo_\bp_\b(_\b)\n+ o _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bt_\bo_\bp_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bu_\bp_\b(_\b)\n+ _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bd_\bo_\bw_\bn_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bb_\bo_\bt_\bt_\bo_\bm_\b(_\b)\n o _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bs_\be_\bt_\b(_\b)\n o _\bs_\be_\bt_\b__\bs_\bs_\bl_\b__\bc_\be_\br_\bt_\bi_\bf_\bi_\bc_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bs_\bs_\bl_\b__\bc_\be_\br_\bt_\bi_\bf_\bi_\bc_\ba_\bt_\be_\b(_\b)\n- o _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)_\b _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b__\bw_\bi_\bt_\bh_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)\n+ o _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b__\bw_\bi_\bt_\bh_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)_\b _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bl_\ba_\by_\be_\br_\bs_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\ba_\bv_\ba_\bi_\bl_\ba_\bb_\bi_\bl_\bi_\bt_\by_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\ba_\bv_\ba_\bi_\bl_\ba_\bb_\bi_\bl_\bi_\bt_\by_\b(_\b)\n- o _\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\bz_\be_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b)_\b _\bg_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\be_\bs_\b(_\b)\n- o _\bg_\be_\bt_\b__\bf_\bi_\bl_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\be_\bs_\b(_\b)_\b _\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\bz_\be_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b)\n+ o _\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\bz_\be_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)_\b _\bg_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\be_\bs_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b)\n+ o _\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\bz_\be_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b)_\b _\bg_\be_\bt_\b__\bf_\bi_\bl_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\be_\bs_\b(_\b)\n o _\bf_\bo_\br_\bc_\be_\b__\bl_\bs_\bd_\b__\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b)_\b _\bf_\bo_\br_\bc_\be_\b__\br_\be_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b)_\b _\bf_\bo_\br_\bc_\be_\b__\bd_\bh_\bt_\b__\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b)\n o _\bs_\bc_\br_\ba_\bp_\be_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)\n- o _\bs_\be_\bt_\b__\bu_\bp_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)_\b _\bu_\bp_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)_\b _\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)\n+ o _\bu_\bp_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)_\b _\bs_\be_\bt_\b__\bu_\bp_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)_\b _\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)\n _\bs_\be_\bt_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)\n o _\bc_\bo_\bn_\bn_\be_\bc_\bt_\b__\bp_\be_\be_\br_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b__\bp_\be_\be_\br_\bs_\b(_\b)\n- o _\bm_\ba_\bx_\b__\bu_\bp_\bl_\bo_\ba_\bd_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bm_\ba_\bx_\b__\bu_\bp_\bl_\bo_\ba_\bd_\bs_\b(_\b)\n- o _\bs_\be_\bt_\b__\bm_\ba_\bx_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\bs_\b(_\b)_\b _\bm_\ba_\bx_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\bs_\b(_\b)\n+ o _\bs_\be_\bt_\b__\bm_\ba_\bx_\b__\bu_\bp_\bl_\bo_\ba_\bd_\bs_\b(_\b)_\b _\bm_\ba_\bx_\b__\bu_\bp_\bl_\bo_\ba_\bd_\bs_\b(_\b)\n+ o _\bm_\ba_\bx_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bm_\ba_\bx_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\bs_\b(_\b)\n o _\bm_\bo_\bv_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b(_\b)\n o _\br_\be_\bn_\ba_\bm_\be_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)_\b _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\b(_\b)\n- o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b(_\b)\n+ o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b(_\b)\n o _\bi_\bd_\b(_\b)\n o _\bn_\ba_\bt_\bi_\bv_\be_\b__\bh_\ba_\bn_\bd_\bl_\be_\b(_\b)\n o _\bu_\bs_\be_\br_\bd_\ba_\bt_\ba_\b(_\b)\n o _\bi_\bn_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b(_\b)\n * _\bh_\ba_\bs_\bh_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* b\bbl\blo\boc\bck\bk_\b_i\bin\bnf\bfo\bo *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be_\b._\bh_\bp_\bp\"\n holds the state of a block in a piece. Who we requested it from and how far\n along we are at downloading it.\n struct block_info\n {\n- _\bt_\bc_\bp_\b:_\b:_\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt p\bpe\bee\ber\br () const;\n void s\bse\bet\bt_\b_p\bpe\bee\ber\br (tcp::endpoint const& ep);\n+ _\bt_\bc_\bp_\b:_\b:_\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt p\bpe\bee\ber\br () const;\n \n enum block_state_t\n {\n none,\n requested,\n writing,\n finished,\n@@ -78,16 +78,16 @@\n unsigned bytes_progress:15;\n unsigned block_size:15;\n unsigned state:2;\n unsigned num_peers:14;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpe\bee\ber\br(\b()\b) p\bpe\bee\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n-_\bt_\bc_\bp_\b:_\b:_\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt p\bpe\bee\ber\br () const;\n void s\bse\bet\bt_\b_p\bpe\bee\ber\br (tcp::endpoint const& ep);\n+_\bt_\bc_\bp_\b:_\b:_\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt p\bpe\bee\ber\br () const;\n The peer is the ip address of the peer this block was downloaded from.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnu\bum\bm b\bbl\blo\boc\bck\bk_\b_s\bst\bta\bat\bte\be_\b_t\bt *\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be_\b._\bh_\bp_\bp\"\n _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b \n |_\bn\bn_\ba\ba_\bm\bm_\be\be_\b _\b _\b _\b _\b _\b|_\bv\bv_\ba\ba_\bl\bl_\bu\bu_\be\be_\b|_\bd\bd_\be\be_\bs\bs_\bc\bc_\br\br_\bi\bi_\bp\bp_\bt\bt_\bi\bi_\bo\bo_\bn\bn_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |\n |none |0 |This block has not been downloaded or requested form any |\n@@ -175,104 +175,104 @@\n the handle is no longer referring to a torrent. There is one exception _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd\n _\b(_\b) will never throw. Since the torrents are processed by a background thread,\n there is no guarantee that a handle will remain valid between two calls.\n struct torrent_handle\n {\n friend std::size_t h\bha\bas\bsh\bh_\b_v\bva\bal\blu\bue\be (torrent_handle const& th);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_h\bha\ban\bnd\bdl\ble\be () noexcept = default;\n- void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, char const* data, add_piece_flags_t\n-flags = {}) const;\n void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, std::vector data,\n add_piece_flags_t flags = {}) const;\n+ void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, char const* data, add_piece_flags_t\n+flags = {}) const;\n void r\bre\bea\bad\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece) const;\n bool h\bha\bav\bve\be_\b_p\bpi\bie\bec\bce\be (piece_index_t piece) const;\n void g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo (std::vector& v) const;\n void p\bpo\bos\bst\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo () const;\n- void p\bpo\bos\bst\bt_\b_s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n torrent_status s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n+ void p\bpo\bos\bst\bt_\b_s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n+ std::vector g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n void g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be (std::vector& queue) const;\n void p\bpo\bos\bst\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n- std::vector g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n void r\bre\bes\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be (piece_index_t index) const;\n- void c\bcl\ble\bea\bar\br_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\bes\bs () const;\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be (piece_index_t index, int deadline, deadline_flags_t\n flags = {}) const;\n- void f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (std::vector& progress,\n-file_progress_flags_t flags = {}) const;\n+ void c\bcl\ble\bea\bar\br_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\bes\bs () const;\n+ void p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags) const;\n std::vector f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags = {})\n const;\n- void p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags) const;\n+ void f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (std::vector& progress,\n+file_progress_flags_t flags = {}) const;\n std::vector f\bfi\bil\ble\be_\b_s\bst\bta\bat\btu\bus\bs () const;\n void c\bcl\ble\bea\bar\br_\b_e\ber\brr\bro\bor\br () const;\n- void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (announce_entry const&) const;\n void r\bre\bep\bpl\bla\bac\bce\be_\b_t\btr\bra\bac\bck\bke\ber\brs\bs (std::vector const&) const;\n- void p\bpo\bos\bst\bt_\b_t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n std::vector t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n+ void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (announce_entry const&) const;\n+ void p\bpo\bos\bst\bt_\b_t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n+ std::set u\bur\brl\bl_\b_s\bse\bee\bed\bds\bs () const;\n void r\bre\bem\bmo\bov\bve\be_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url) const;\n void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url) const;\n- std::set u\bur\brl\bl_\b_s\bse\bee\bed\bds\bs () const;\n- void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url) const;\n void r\bre\bem\bmo\bov\bve\be_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url) const;\n+ void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url) const;\n std::set h\bht\btt\btp\bp_\b_s\bse\bee\bed\bds\bs () const;\n void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (\n std::function(torrent_handle const&,\n client_data_t)> const& ext\n , client_data_t userdata = client_data_t{});\n bool s\bse\bet\bt_\b_m\bme\bet\bta\bad\bda\bat\bta\ba (span metadata) const;\n bool i\bis\bs_\b_v\bva\bal\bli\bid\bd () const;\n void p\bpa\bau\bus\bse\be (pause_flags_t flags = {}) const;\n void r\bre\bes\bsu\bum\bme\be () const;\n- void s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n- void u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n torrent_flags_t f\bfl\bla\bag\bgs\bs () const;\n void s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags, torrent_flags_t mask) const;\n+ void u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n+ void s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n void f\bfl\blu\bus\bsh\bh_\b_c\bca\bac\bch\bhe\be () const;\n void f\bfo\bor\brc\bce\be_\b_r\bre\bec\bch\bhe\bec\bck\bk () const;\n void s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (resume_data_flags_t flags = {}) const;\n- bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba () const;\n bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (resume_data_flags_t flags) const;\n+ bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_b\bbo\bot\btt\bto\bom\bm () const;\n- void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_d\bdo\bow\bwn\bn () const;\n queue_position_t q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn () const;\n- void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_u\bup\bp () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_t\bto\bop\bp () const;\n+ void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_u\bup\bp () const;\n+ void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_d\bdo\bow\bwn\bn () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_s\bse\bet\bt (queue_position_t p) const;\n- void s\bse\bet\bt_\b_s\bss\bsl\bl_\b_c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be_\b_b\bbu\buf\bff\bfe\ber\br (std::string const& certificate\n- , std::string const& private_key\n- , std::string const& dh_params);\n void s\bse\bet\bt_\b_s\bss\bsl\bl_\b_c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be (std::string const& certificate\n , std::string const& private_key\n , std::string const& dh_params\n , std::string const& passphrase = \"\");\n+ void s\bse\bet\bt_\b_s\bss\bsl\bl_\b_c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be_\b_b\bbu\buf\bff\bfe\ber\br (std::string const& certificate\n+ , std::string const& private_key\n+ , std::string const& dh_params);\n std::shared_ptr t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be () const;\n std::shared_ptr t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be_\b_w\bwi\bit\bth\bh_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n std::vector> p\bpi\bie\bec\bce\be_\b_l\bla\bay\bye\ber\brs\bs () const;\n- void p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by (std::vector& avail) const;\n void p\bpo\bos\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by () const;\n- std::vector g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n+ void p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by (std::vector& avail) const;\n void p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index, download_priority_t priority)\n const;\n- void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs (std::vector const& pieces)\n-const;\n- download_priority_t p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index) const;\n+ std::vector g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs (std::vector> const& pieces) const;\n- void f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index, download_priority_t priority) const;\n+ download_priority_t p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index) const;\n+ void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs (std::vector const& pieces)\n+const;\n std::vector g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n- download_priority_t f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index) const;\n+ void f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index, download_priority_t priority) const;\n void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_f\bfi\bil\ble\bes\bs (std::vector const& files) const;\n- void f\bfo\bor\brc\bce\be_\b_d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be () const;\n+ download_priority_t f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index) const;\n void f\bfo\bor\brc\bce\be_\b_l\bls\bsd\bd_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be () const;\n void f\bfo\bor\brc\bce\be_\b_r\bre\bea\ban\bnn\bno\bou\bun\bnc\bce\be (int seconds = 0, int idx = -1, reannounce_flags_t =\n {}) const;\n+ void f\bfo\bor\brc\bce\be_\b_d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be () const;\n void s\bsc\bcr\bra\bap\bpe\be_\b_t\btr\bra\bac\bck\bke\ber\br (int idx = -1) const;\n- int d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n+ void s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n int u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n void s\bse\bet\bt_\b_u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n- void s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n+ int d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n void c\bco\bon\bnn\bne\bec\bct\bt_\b_p\bpe\bee\ber\br (tcp::endpoint const& adr, peer_source_flags_t source = {}\n , pex_flags_t flags = pex_encryption | pex_utp | pex_holepunch) const;\n void c\bcl\ble\bea\bar\br_\b_p\bpe\bee\ber\brs\bs ();\n void s\bse\bet\bt_\b_m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs (int max_uploads) const;\n int m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs () const;\n int m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs () const;\n void s\bse\bet\bt_\b_m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs (int max_connections) const;\n@@ -315,18 +315,18 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bto\bor\brr\bre\ben\bnt\bt_\b_h\bha\ban\bnd\bdl\ble\be(\b()\b) *\b**\b**\b**\b**\b*\n t\bto\bor\brr\bre\ben\bnt\bt_\b_h\bha\ban\bnd\bdl\ble\be () noexcept = default;\n constructs a torrent handle that does not refer to a torrent. i.e. _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b)\n will return false.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n-void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, char const* data, add_piece_flags_t flags\n-= {}) const;\n void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, std::vector data, add_piece_flags_t\n flags = {}) const;\n+void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, char const* data, add_piece_flags_t flags\n+= {}) const;\n This function will write data to the storage as piece piece, as if it had been\n downloaded from a peer.\n By default, data that's already been downloaded is not overwritten by this\n buffer. If you trust this data to be correct (and pass the piece hash check)\n you may pass the overwrite_existing flag. This will instruct libtorrent to\n overwrite any data that may already have been downloaded with this data.\n Since the data is written asynchronously, you may know that is passed or failed\n@@ -354,30 +354,30 @@\n to finish in the same order as you initiated them.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* h\bha\bav\bve\be_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n bool h\bha\bav\bve\be_\b_p\bpi\bie\bec\bce\be (piece_index_t piece) const;\n Returns true if this piece has been completely downloaded and written to disk,\n and false otherwise.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpo\bos\bst\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo(\b()\b) g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo(\b()\b) p\bpo\bos\bst\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo(\b()\b) *\b**\b**\b**\b**\b*\n void g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo (std::vector& v) const;\n void p\bpo\bos\bst\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo () const;\n Query information about connected peers for this torrent. If the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be\n is invalid, it will throw a system_error exception.\n post_peer_info() is asynchronous and will trigger the posting of a\n _\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo_\b__\ba_\bl_\be_\br_\bt. The _\ba_\bl_\be_\br_\bt contain a list of _\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo objects, one for each\n connected peer.\n get_peer_info() is synchronous and takes a reference to a vector that will be\n cleared and filled with one _\be_\bn_\bt_\br_\by for each peer connected to this torrent,\n given the handle is valid. Each _\be_\bn_\bt_\br_\by in the vector contains information about\n that particular peer. See _\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bst\bta\bat\btu\bus\bs(\b()\b) p\bpo\bos\bst\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) *\b**\b**\b**\b**\b*\n-void p\bpo\bos\bst\bt_\b_s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n+*\b**\b**\b**\b**\b* p\bpo\bos\bst\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) s\bst\bta\bat\btu\bus\bs(\b()\b) *\b**\b**\b**\b**\b*\n torrent_status s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n+void p\bpo\bos\bst\bt_\b_s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n status() will return a structure with information about the status of this\n torrent. If the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be is invalid, it will throw system_error\n exception. See _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs. The flags argument filters what information is\n returned in the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs. Some information in there is relatively\n expensive to calculate, and if you're not interested in it (and see performance\n issues), you can filter them out.\n The status() function will block until the internal libtorrent thread responds\n@@ -385,29 +385,29 @@\n It will trigger posting of a _\bs_\bt_\ba_\bt_\be_\b__\bu_\bp_\bd_\ba_\bt_\be_\b__\ba_\bl_\be_\br_\bt with a single _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs\n object for this torrent.\n In order to get regular updates for torrents whose status changes, consider\n calling session::post_torrent_updates()`` instead.\n By default everything is included. The flags you can use to decide what to\n i\bin\bnc\bcl\blu\bud\bde\be are defined in this class.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpo\bos\bst\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be(\b()\b) g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be(\b()\b) p\bpo\bos\bst\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be(\b()\b) *\b**\b**\b**\b**\b*\n+std::vector g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n void g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be (std::vector& queue) const;\n void p\bpo\bos\bst\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n-std::vector g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n post_download_queue() triggers a download_queue_alert to be posted.\n get_download_queue() is a synchronous call and returns a vector with\n information about pieces that are partially downloaded or not downloaded but\n partially requested. See _\bp_\ba_\br_\bt_\bi_\ba_\bl_\b__\bp_\bi_\be_\bc_\be_\b__\bi_\bn_\bf_\bo for the fields in the returned\n vector.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\bes\bs(\b()\b) r\bre\bes\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be(\b()\b) s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\bes\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be (piece_index_t index) const;\n-void c\bcl\ble\bea\bar\br_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\bes\bs () const;\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be (piece_index_t index, int deadline, deadline_flags_t\n flags = {}) const;\n+void c\bcl\ble\bea\bar\br_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\bes\bs () const;\n This function sets or resets the deadline associated with a specific piece\n index (index). libtorrent will attempt to download this entire piece before the\n deadline expires. This is not necessarily possible, but pieces with a more\n recent deadline will always be prioritized over pieces with a deadline further\n ahead in time. The deadline (and flags) of a piece can be changed by calling\n this function again.\n If the piece is already downloaded when this call is made, nothing happens,\n@@ -415,20 +415,20 @@\n same effect as calling _\br_\be_\ba_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b) for index.\n deadline is the number of milliseconds until this piece should be completed.\n reset_piece_deadline removes the deadline from the piece. If it hasn't already\n been downloaded, it will no longer be considered a priority.\n clear_piece_deadlines() removes deadlines on all pieces in the torrent. As if\n _\br_\be_\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\b(_\b) was called on all pieces.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs(\b()\b) f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs(\b()\b) *\b**\b**\b**\b**\b*\n-void f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (std::vector& progress, file_progress_flags_t\n-flags = {}) const;\n+*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs(\b()\b) p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs(\b()\b) *\b**\b**\b**\b**\b*\n+void p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags) const;\n std::vector f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags = {})\n const;\n-void p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags) const;\n+void f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (std::vector& progress, file_progress_flags_t\n+flags = {}) const;\n This function fills in the supplied vector, or returns a vector, with the\n number of bytes downloaded of each file in this torrent. The progress values\n are ordered the same as the files in the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo.\n This operation is not very cheap. Its complexity is O\bO(\b(n\bn +\b+ m\bmj\bj)\b). Where n\bn is the\n number of files, m\bm is the number of currently downloading pieces and j\bj is the\n number of blocks in a piece.\n The flags parameter can be used to specify the granularity of the file\n@@ -449,19 +449,19 @@\n See _\bo_\bp_\be_\bn_\b__\bf_\bi_\bl_\be_\b__\bs_\bt_\ba_\bt_\be\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br_\b_e\ber\brr\bro\bor\br(\b()\b) *\b**\b**\b**\b**\b*\n void c\bcl\ble\bea\bar\br_\b_e\ber\brr\bro\bor\br () const;\n If the torrent is in an error state (i.e. torrent_status::error is non-empty),\n this will clear the error and start the torrent again.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br(\b()\b) r\bre\bep\bpl\bla\bac\bce\be_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) p\bpo\bos\bst\bt_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) *\b**\b**\b**\b**\b*\n-void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (announce_entry const&) const;\n+*\b**\b**\b**\b**\b* p\bpo\bos\bst\bt_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br(\b()\b) r\bre\bep\bpl\bla\bac\bce\be_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\bep\bpl\bla\bac\bce\be_\b_t\btr\bra\bac\bck\bke\ber\brs\bs (std::vector const&) const;\n-void p\bpo\bos\bst\bt_\b_t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n std::vector t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n+void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (announce_entry const&) const;\n+void p\bpo\bos\bst\bt_\b_t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n trackers() returns the list of trackers for this torrent. The announce _\be_\bn_\bt_\br_\by\n contains both a string url which specify the announce url for the tracker as\n well as an _\bi_\bn_\bt tier, which is specifies the order in which this tracker is\n tried. If you want libtorrent to use another list of trackers for this torrent,\n you can use replace_trackers() which takes a list of the same form as the one\n returned from trackers() and will replace it. If you want an immediate effect,\n you have to call _\bf_\bo_\br_\bc_\be_\b__\br_\be_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b). See _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by.\n@@ -470,29 +470,29 @@\n add_tracker() will look if the specified tracker is already in the set. If it\n is, it doesn't do anything. If it's not in the current set of trackers, it will\n insert it in the tier specified in the _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by.\n The updated set of trackers will be saved in the resume data, and when a\n torrent is started with resume data, the trackers from the resume data will\n replace the original ones.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* r\bre\bem\bmo\bov\bve\be_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) u\bur\brl\bl_\b_s\bse\bee\bed\bds\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) u\bur\brl\bl_\b_s\bse\bee\bed\bds\bs(\b()\b) r\bre\bem\bmo\bov\bve\be_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n+std::set u\bur\brl\bl_\b_s\bse\bee\bed\bds\bs () const;\n void r\bre\bem\bmo\bov\bve\be_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url) const;\n void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url) const;\n-std::set u\bur\brl\bl_\b_s\bse\bee\bed\bds\bs () const;\n add_url_seed() adds another url to the torrent's list of url seeds. If the\n given url already exists in that list, the call has no effect. The torrent will\n connect to the server and try to download pieces from it, unless it's paused,\n queued, checking or seeding. remove_url_seed() removes the given url if it\n exists already. url_seeds() return a set of the url seeds currently in this\n torrent. Note that URLs that fails may be removed automatically from the list.\n See _\bh_\bt_\bt_\bp_\b _\bs_\be_\be_\bd_\bi_\bn_\bg for more information.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) h\bht\btt\btp\bp_\b_s\bse\bee\bed\bds\bs(\b()\b) r\bre\bem\bmo\bov\bve\be_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n-void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url) const;\n+*\b**\b**\b**\b**\b* h\bht\btt\btp\bp_\b_s\bse\bee\bed\bds\bs(\b()\b) a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) r\bre\bem\bmo\bov\bve\be_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\bem\bmo\bov\bve\be_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url) const;\n+void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url) const;\n std::set h\bht\btt\btp\bp_\b_s\bse\bee\bed\bds\bs () const;\n These functions are identical as the *_url_seed() variants, but they operate on\n _\bB_\bE_\bP_\b _\b1_\b7 web seeds instead of _\bB_\bE_\bP_\b _\b1_\b9.\n See _\bh_\bt_\bt_\bp_\b _\bs_\be_\be_\bd_\bi_\bn_\bg for more information.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn(\b()\b) *\b**\b**\b**\b**\b*\n void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (\n@@ -524,15 +524,15 @@\n and false afterward.\n Clients should only use _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b) to determine if the result of session::\n find_torrent() was successful.\n Unlike other member functions which return a value, _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b) completes\n immediately, without blocking on a result from the network thread. Also unlike\n other functions, it never throws the system_error exception.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpa\bau\bus\bse\be(\b()\b) r\bre\bes\bsu\bum\bme\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* r\bre\bes\bsu\bum\bme\be(\b()\b) p\bpa\bau\bus\bse\be(\b()\b) *\b**\b**\b**\b**\b*\n void p\bpa\bau\bus\bse\be (pause_flags_t flags = {}) const;\n void r\bre\bes\bsu\bum\bme\be () const;\n pause(), and resume() will disconnect all peers and reconnect all peers\n respectively. When a torrent is paused, it will however remember all share\n ratios to all peers and remember all potential (not connected) peers. Torrents\n may be paused automatically if there is a file error (e.g. disk full) or\n something similar. See _\bf_\bi_\bl_\be_\b__\be_\br_\br_\bo_\br_\b__\ba_\bl_\be_\br_\bt.\n@@ -541,19 +541,19 @@\n for the torrent_status::paused flag.\n Note\n Torrents that are auto-managed may be automatically resumed again. It does not\n make sense to pause an auto-managed torrent without making it not auto-managed\n first. Torrents are auto-managed by default when added to the _\bs_\be_\bs_\bs_\bi_\bo_\bn. For more\n information, see _\bq_\bu_\be_\bu_\bi_\bn_\bg.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs(\b()\b) u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs(\b()\b) f\bfl\bla\bag\bgs\bs(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n-void u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n+*\b**\b**\b**\b**\b* f\bfl\bla\bag\bgs\bs(\b()\b) s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs(\b()\b) u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs(\b()\b) *\b**\b**\b**\b**\b*\n torrent_flags_t f\bfl\bla\bag\bgs\bs () const;\n void s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags, torrent_flags_t mask) const;\n+void u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n+void s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n sets and gets the torrent state flags. See _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b__\bt. The set_flags\n overload that take a mask will affect all flags part of the mask, and set their\n values to what the flags argument is set to. This allows clearing and setting\n flags in a single function call. The set_flags overload that just takes flags,\n sets all the specified flags and leave any other flags unchanged. unset_flags\n clears the specified flags, while leaving any other flags unchanged.\n Theseed_modeflag is special, it can only be cleared once the torrent has been\n@@ -663,35 +663,35 @@\n Note how outstanding_resume_data is a global counter in this example. This is\n deliberate, otherwise there is a race condition for torrents that was just\n asked to save their resume data, they posted the _\ba_\bl_\be_\br_\bt, but it has not been\n received yet. Those torrents would report that they don't need to save resume\n data again, and skipped by the initial loop, and thwart the counter otherwise.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba(\b()\b) *\b**\b**\b**\b**\b*\n-bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba () const;\n bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (resume_data_flags_t flags) const;\n+bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba () const;\n This function returns true if anything that is stored in the resume data has\n changed since the last time resume data was saved. The overload that takes\n flags let you ask if specific categories of properties have changed. These\n flags have the same behavior as in the _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b) call.\n This is a b\bbl\blo\boc\bck\bki\bin\bng\bg call. It will wait for a response from libtorrent's main\n thread. A way to avoid blocking is to instead call _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b) directly,\n specifying the conditions under which resume data should be saved.\n Note\n A torrent's resume data is considered saved as soon as the\n _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\ba_\bl_\be_\br_\bt is posted. It is important to make sure this _\ba_\bl_\be_\br_\bt is\n received and handled in order for this function to be meaningful.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_u\bup\bp(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_d\bdo\bow\bwn\bn(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_b\bbo\bot\btt\bto\bom\bm(\b()\b)\n-q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_t\bto\bop\bp(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_t\bto\bop\bp(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_u\bup\bp(\b()\b)\n+q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_d\bdo\bow\bwn\bn(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_b\bbo\bot\btt\bto\bom\bm(\b()\b) *\b**\b**\b**\b**\b*\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_b\bbo\bot\btt\bto\bom\bm () const;\n-void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_d\bdo\bow\bwn\bn () const;\n queue_position_t q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn () const;\n-void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_u\bup\bp () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_t\bto\bop\bp () const;\n+void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_u\bup\bp () const;\n+void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_d\bdo\bow\bwn\bn () const;\n Every torrent that is added is assigned a queue position exactly one greater\n than the greatest queue position of all existing torrents. Torrents that are\n being seeded have -1 as their queue position, since they're no longer in line\n to be downloaded.\n When a torrent is removed or turns into a seed, all torrents with greater queue\n positions have their positions decreased to fill in the space in the sequence.\n queue_position() returns the torrent's position in the download queue. The\n@@ -706,21 +706,21 @@\n *\b**\b**\b**\b**\b* q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_s\bse\bet\bt(\b()\b) *\b**\b**\b**\b**\b*\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_s\bse\bet\bt (queue_position_t p) const;\n updates the position in the queue for this torrent. The relative order of all\n other torrents remain intact but their numerical queue position shifts to make\n space for this torrent's new position\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bet\bt_\b_s\bss\bsl\bl_\b_c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be_\b_b\bbu\buf\bff\bfe\ber\br(\b()\b) s\bse\bet\bt_\b_s\bss\bsl\bl_\b_c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_s\bss\bsl\bl_\b_c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be_\b_b\bbu\buf\bff\bfe\ber\br (std::string const& certificate\n- , std::string const& private_key\n- , std::string const& dh_params);\n void s\bse\bet\bt_\b_s\bss\bsl\bl_\b_c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be (std::string const& certificate\n , std::string const& private_key\n , std::string const& dh_params\n , std::string const& passphrase = \"\");\n+void s\bse\bet\bt_\b_s\bss\bsl\bl_\b_c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be_\b_b\bbu\buf\bff\bfe\ber\br (std::string const& certificate\n+ , std::string const& private_key\n+ , std::string const& dh_params);\n For SSL torrents, use this to specify a path to a .pem file to use as this\n client's certificate. The certificate must be signed by the certificate in the\n .torrent file to be valid.\n The _\bs_\be_\bt_\b__\bs_\bs_\bl_\b__\bc_\be_\br_\bt_\bi_\bf_\bi_\bc_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b) overload takes the actual certificate, private\n key and DH params as strings, rather than paths to files.\n cert is a path to the (signed) certificate in .pem format corresponding to this\n torrent.\n@@ -734,15 +734,15 @@\n Note that when a torrent first starts up, and it needs a certificate, it will\n suspend connecting to any peers until it has one. It's typically desirable to\n resume the torrent after setting the SSL certificate.\n If you receive a _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bn_\be_\be_\bd_\b__\bc_\be_\br_\bt_\b__\ba_\bl_\be_\br_\bt, you need to call this to provide a\n valid cert. If you don't have a cert you won't be allowed to connect to any\n peers.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be(\b()\b) t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be_\b_w\bwi\bit\bth\bh_\b_h\bha\bas\bsh\bhe\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be_\b_w\bwi\bit\bth\bh_\b_h\bha\bas\bsh\bhe\bes\bs(\b()\b) t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be(\b()\b) *\b**\b**\b**\b**\b*\n std::shared_ptr t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be () const;\n std::shared_ptr t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be_\b_w\bwi\bit\bth\bh_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b) returns a pointer to the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object associated with\n this torrent. The _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object may be a copy of the internal object. If\n the torrent doesn't have metadata, the pointer will not be initialized (i.e. a\n nullptr). The torrent may be in a state without metadata only if it was started\n without a .torrent file, e.g. by being added by magnet link.\n@@ -771,32 +771,32 @@\n *\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_l\bla\bay\bye\ber\brs\bs(\b()\b) *\b**\b**\b**\b**\b*\n std::vector> p\bpi\bie\bec\bce\be_\b_l\bla\bay\bye\ber\brs\bs () const;\n returns the piece layers for all files in the torrent. If this is a v1 torrent\n (and doesn't have any piece layers) it returns an empty vector. This is a\n blocking call that will synchronize with the libtorrent network thread.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by(\b()\b) p\bpo\bos\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by(\b()\b) *\b**\b**\b**\b**\b*\n-void p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by (std::vector& avail) const;\n void p\bpo\bos\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by () const;\n+void p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by (std::vector& avail) const;\n The piece availability is the number of peers that we are connected that has\n advertised having a particular piece. This is the information that libtorrent\n uses in order to prefer picking rare pieces.\n post_piece_availability() will trigger a _\bp_\bi_\be_\bc_\be_\b__\ba_\bv_\ba_\bi_\bl_\ba_\bb_\bi_\bl_\bi_\bt_\by_\b__\ba_\bl_\be_\br_\bt to be posted.\n piece_availability() fills the specified std::vector with the availability\n for each piece in this torrent. libtorrent does not keep track of availability\n for seeds, so if the torrent is seeding the availability for all pieces is\n reported as 0.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by(\b()\b) g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n-std::vector g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n+*\b**\b**\b**\b**\b* p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs(\b()\b) p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by(\b()\b) *\b**\b**\b**\b**\b*\n void p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index, download_priority_t priority) const;\n-void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs (std::vector const& pieces) const;\n-download_priority_t p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index) const;\n+std::vector g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs (std::vector> const& pieces) const;\n+download_priority_t p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index) const;\n+void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs (std::vector const& pieces) const;\n These functions are used to set and get the priority of individual pieces. By\n default all pieces have priority 4. That means that the random rarest first\n algorithm is effectively active for all pieces. You may however change the\n priority of individual pieces. There are 8 priority levels. 0 means not to\n download the piece at all. Otherwise, lower priority values means less likely\n to be picked. Piece priority takes precedence over piece availability. Every\n piece with priority 7 will be attempted to be picked before a priority 6 piece\n@@ -816,19 +816,19 @@\n where the piece index or priority is out of range, are not allowed.\n get_piece_priorities returns a vector with one element for each piece in the\n torrent. Each element is the current priority of that piece.\n It's possible to cancel the effect of f\bfi\bil\ble\be priorities by setting the priorities\n for the affected pieces. Care has to be taken when mixing usage of file- and\n piece priorities.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs(\b()\b) p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_f\bfi\bil\ble\bes\bs(\b()\b) f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by(\b()\b) *\b**\b**\b**\b**\b*\n-void f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index, download_priority_t priority) const;\n+*\b**\b**\b**\b**\b* p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_f\bfi\bil\ble\bes\bs(\b()\b) f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by(\b()\b) g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n std::vector g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n-download_priority_t f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index) const;\n+void f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index, download_priority_t priority) const;\n void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_f\bfi\bil\ble\bes\bs (std::vector const& files) const;\n+download_priority_t f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index) const;\n index must be in the range [0, number_of_files).\n file_priority() queries or sets the priority of file index.\n prioritize_files() takes a vector that has at as many elements as there are\n files in the torrent. Each _\be_\bn_\bt_\br_\by is the priority of that file. The function\n sets the priorities of all the pieces in the torrent based on the vector.\n get_file_priorities() returns a vector with the priorities of all files.\n The priority values are the same as for _\bp_\bi_\be_\bc_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b). See\n@@ -848,18 +848,18 @@\n When loading the resume data, the file priorities will be applied first, then\n the piece priorities.\n Moving data from a file into the part file is currently not supported. If a\n file has its priority set to 0 a\baf\bft\bte\ber\br it has already been created, it will not\n be moved into the partfile.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfo\bor\brc\bce\be_\b_l\bls\bsd\bd_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be(\b()\b) f\bfo\bor\brc\bce\be_\b_r\bre\bea\ban\bnn\bno\bou\bun\bnc\bce\be(\b()\b) f\bfo\bor\brc\bce\be_\b_d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n-void f\bfo\bor\brc\bce\be_\b_d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be () const;\n void f\bfo\bor\brc\bce\be_\b_l\bls\bsd\bd_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be () const;\n void f\bfo\bor\brc\bce\be_\b_r\bre\bea\ban\bnn\bno\bou\bun\bnc\bce\be (int seconds = 0, int idx = -1, reannounce_flags_t = {})\n const;\n+void f\bfo\bor\brc\bce\be_\b_d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be () const;\n force_reannounce() will force this torrent to do another tracker request, to\n receive new peers. The seconds argument specifies how many seconds from now to\n issue the tracker announces.\n If the tracker's min_interval has not passed since the last announce, the\n forced announce will be scheduled to happen immediately as the min_interval\n expires. This is to honor trackers minimum re-announce interval settings.\n The tracker_index argument specifies which tracker to re-announce. If set to -\n@@ -877,20 +877,20 @@\n A scrape request queries the tracker for statistics such as total number of\n incomplete peers, complete peers, number of downloads etc.\n This request will specifically update the num_complete and num_incomplete\n fields in the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs struct once it completes. When it completes, it\n will generate a _\bs_\bc_\br_\ba_\bp_\be_\b__\br_\be_\bp_\bl_\by_\b__\ba_\bl_\be_\br_\bt. If it fails, it will generate a\n _\bs_\bc_\br_\ba_\bp_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b__\ba_\bl_\be_\br_\bt.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b)\n+*\b**\b**\b**\b**\b* u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) s\bse\bet\bt_\b_u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b)\n *\b**\b**\b**\b**\b*\n-int d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n+void s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n int u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n void s\bse\bet\bt_\b_u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n-void s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n+int d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n set_upload_limit will limit the upload bandwidth used by this particular\n torrent to the limit you set. It is given as the number of bytes per second the\n torrent is allowed to upload. set_download_limit works the same way but for\n download bandwidth instead of upload bandwidth. Note that setting a higher\n limit on a torrent then the global limit (settings_pack::upload_rate_limit)\n will not override the global rate limit. The torrent can never upload more than\n the global rate limit.\n@@ -913,24 +913,24 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br_\b_p\bpe\bee\ber\brs\bs(\b()\b) *\b**\b**\b**\b**\b*\n void c\bcl\ble\bea\bar\br_\b_p\bpe\bee\ber\brs\bs ();\n This will disconnect all peers and clear the peer list for this torrent. New\n peers will have to be acquired before resuming, from trackers, DHT or local\n service discovery, for example.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs(\b()\b) s\bse\bet\bt_\b_m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs(\b()\b) m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs (int max_uploads) const;\n int m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs () const;\n set_max_uploads() sets the maximum number of peers that's unchoked at the same\n time on this torrent. If you set this to -1, there will be no limit. This\n defaults to infinite. The primary setting controlling this is the global\n unchoke slots limit, set by unchoke_slots_limit in _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk.\n max_uploads() returns the current settings.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs(\b()\b) m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs(\b()\b) s\bse\bet\bt_\b_m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs(\b()\b) *\b**\b**\b**\b**\b*\n int m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs () const;\n void s\bse\bet\bt_\b_m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs (int max_connections) const;\n set_max_connections() sets the maximum number of connection this torrent will\n open. If all connections are used up, incoming connections may be refused or\n poor connections may be closed. This must be at least 2. The default is\n unlimited number of connections. If -1 is given to the function, it means\n unlimited. There is also a global limit of the number of connections, set by\n@@ -991,15 +991,15 @@\n sha1_hash i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh () const;\n returns the info-hash(es) of the torrent. If this handle is to a torrent that\n hasn't loaded yet (for instance by being added) by a URL, the returned value is\n undefined. The info_hash() returns the SHA-1 info-hash for v1 torrents and a\n truncated hash for v2 torrents. For the full v2 info-hash, use info_hashes()\n instead.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b=(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b=(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br<\b<(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b=(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b=(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br<\b<(\b()\b) *\b**\b**\b**\b**\b*\n bool o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (const torrent_handle& h) const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (const torrent_handle& h) const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br<\b< (const torrent_handle& h) const;\n comparison operators. The order of the torrents is unspecified but stable.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* i\bid\bd(\b()\b) *\b**\b**\b**\b**\b*\n std::uint32_t i\bid\bd () const;\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Torrent_Info.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Torrent_Info.html", "unified_diff": "@@ -42,22 +42,22 @@\n
  • torrent_info
      \n
    • torrent_info()
    • \n
    • ~torrent_info()
    • \n
    • files() orig_files()
    • \n
    • rename_file()
    • \n
    • remap_files()
    • \n
    • trackers() add_tracker() clear_trackers()
    • \n-
    • collections() similar_torrents()
    • \n-
    • add_http_seed() add_url_seed() web_seeds() set_web_seeds()
    • \n+
    • similar_torrents() collections()
    • \n+
    • web_seeds() add_url_seed() set_web_seeds() add_http_seed()
    • \n
    • total_size()
    • \n-
    • num_pieces() piece_length()
    • \n+
    • piece_length() num_pieces()
    • \n
    • blocks_per_piece()
    • \n-
    • last_piece() piece_range() end_piece()
    • \n+
    • last_piece() end_piece() piece_range()
    • \n
    • info_hashes() info_hash()
    • \n-
    • v2() v1()
    • \n+
    • v1() v2()
    • \n
    • num_files()
    • \n
    • map_block()
    • \n
    • map_file()
    • \n
    • ssl_cert()
    • \n
    • is_valid()
    • \n
    • priv()
    • \n
    • is_i2p()
    • \n@@ -197,58 +197,58 @@\n
      \n

      torrent_info

      \n

      Declared in "libtorrent/torrent_info.hpp"

      \n

      the torrent_info class holds the information found in a .torrent file.

      \n
      \n class torrent_info\n {\n-   torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n-   torrent_info (torrent_info const& t);\n+   torrent_info (std::string const& filename, error_code& ec);\n    torrent_info (span<char const> buffer, error_code& ec, from_span_t);\n-   explicit torrent_info (info_hash_t const& info_hash);\n    explicit torrent_info (span<char const> buffer, from_span_t);\n-   torrent_info (bdecode_node const& torrent_file, error_code& ec);\n-   torrent_info (char const* buffer, int size);\n-   torrent_info (char const* buffer, int size, error_code& ec);\n+   torrent_info (bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n    explicit torrent_info (bdecode_node const& torrent_file);\n    explicit torrent_info (std::string const& filename);\n-   torrent_info (std::string const& filename, error_code& ec);\n    torrent_info (span<char const> buffer, load_torrent_limits const& cfg, from_span_t);\n-   torrent_info (bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n+   torrent_info (torrent_info const& t);\n+   torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n+   torrent_info (bdecode_node const& torrent_file, error_code& ec);\n+   torrent_info (char const* buffer, int size, error_code& ec);\n+   explicit torrent_info (info_hash_t const& info_hash);\n+   torrent_info (char const* buffer, int size);\n    ~torrent_info ();\n-   file_storage const& files () const;\n    file_storage const& orig_files () const;\n+   file_storage const& files () const;\n    void rename_file (file_index_t index, std::string const& new_filename);\n    void remap_files (file_storage const& f);\n-   std::vector<announce_entry> const& trackers () const;\n+   void add_tracker (std::string const& url, int tier = 0);\n    void clear_trackers ();\n+   std::vector<announce_entry> const& trackers () const;\n    void add_tracker (std::string const& url, int tier\n       , announce_entry::tracker_source source);\n-   void add_tracker (std::string const& url, int tier = 0);\n-   std::vector<std::string> collections () const;\n    std::vector<sha1_hash> similar_torrents () const;\n+   std::vector<std::string> collections () const;\n    void add_http_seed (std::string const& url\n       , std::string const& extern_auth = std::string()\n       , web_seed_entry::headers_t const& extra_headers = web_seed_entry::headers_t());\n+   std::vector<web_seed_entry> const& web_seeds () const;\n    void add_url_seed (std::string const& url\n       , std::string const& ext_auth = std::string()\n       , web_seed_entry::headers_t const& ext_headers = web_seed_entry::headers_t());\n-   std::vector<web_seed_entry> const& web_seeds () const;\n    void set_web_seeds (std::vector<web_seed_entry> seeds);\n    std::int64_t total_size () const;\n-   int piece_length () const;\n    int num_pieces () const;\n+   int piece_length () const;\n    int blocks_per_piece () const;\n-   piece_index_t last_piece () const;\n    index_range<piece_index_t> piece_range () const;\n    piece_index_t end_piece () const;\n-   info_hash_t const& info_hashes () const;\n+   piece_index_t last_piece () const;\n    sha1_hash info_hash () const noexcept;\n-   bool v1 () const;\n+   info_hash_t const& info_hashes () const;\n    bool v2 () const;\n+   bool v1 () const;\n    int num_files () const;\n    std::vector<file_slice> map_block (piece_index_t const piece\n       , std::int64_t offset, int size) const;\n    peer_request map_file (file_index_t const file, std::int64_t offset, int size) const;\n    string_view ssl_cert () const;\n    bool is_valid () const;\n    bool priv () const;\n@@ -269,27 +269,27 @@\n    span<char const> piece_layer (file_index_t) const;\n    void free_piece_layers ();\n };\n 
      \n [report issue]
      \n

      torrent_info()

      \n
      \n-torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n-torrent_info (torrent_info const& t);\n+torrent_info (std::string const& filename, error_code& ec);\n torrent_info (span<char const> buffer, error_code& ec, from_span_t);\n-explicit torrent_info (info_hash_t const& info_hash);\n explicit torrent_info (span<char const> buffer, from_span_t);\n-torrent_info (bdecode_node const& torrent_file, error_code& ec);\n-torrent_info (char const* buffer, int size);\n-torrent_info (char const* buffer, int size, error_code& ec);\n+torrent_info (bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n explicit torrent_info (bdecode_node const& torrent_file);\n explicit torrent_info (std::string const& filename);\n-torrent_info (std::string const& filename, error_code& ec);\n torrent_info (span<char const> buffer, load_torrent_limits const& cfg, from_span_t);\n-torrent_info (bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n+torrent_info (torrent_info const& t);\n+torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n+torrent_info (bdecode_node const& torrent_file, error_code& ec);\n+torrent_info (char const* buffer, int size, error_code& ec);\n+explicit torrent_info (info_hash_t const& info_hash);\n+torrent_info (char const* buffer, int size);\n 
      \n

      The constructor that takes an info-hash will initialize the info-hash\n to the given value, but leave all other fields empty. This is used\n internally when downloading torrents without the metadata. The\n metadata will be created by libtorrent as soon as it has been\n downloaded from the swarm.

      \n

      The constructor that takes a bdecode_node will create a torrent_info\n@@ -323,16 +323,16 @@\n \n

      frees all storage associated with this torrent_info object

      \n \n [report issue]
      \n
      \n

      files() orig_files()

      \n
      \n-file_storage const& files () const;\n file_storage const& orig_files () const;\n+file_storage const& files () const;\n 
      \n

      The file_storage object contains the information on how to map the\n pieces to files. It is separated from the torrent_info object because\n when creating torrents a storage object needs to be created without\n having a torrent file. When renaming files in a storage, the storage\n needs to make its own copy of the file_storage in order to make its\n mapping differ from the one in the torrent file.

      \n@@ -382,57 +382,57 @@\n the current one.

      \n \n \n [report issue]
      \n
      \n

      trackers() add_tracker() clear_trackers()

      \n
      \n-std::vector<announce_entry> const& trackers () const;\n+void add_tracker (std::string const& url, int tier = 0);\n void clear_trackers ();\n+std::vector<announce_entry> const& trackers () const;\n void add_tracker (std::string const& url, int tier\n       , announce_entry::tracker_source source);\n-void add_tracker (std::string const& url, int tier = 0);\n 
      \n

      add_tracker() adds a tracker to the announce-list. The tier\n determines the order in which the trackers are to be tried.\n The trackers() function will return a sorted vector of\n announce_entry. Each announce entry contains a string, which is\n the tracker url, and a tier index. The tier index is the high-level\n priority. No matter which trackers that works or not, the ones with\n lower tier will always be tried before the one with higher tier\n number. For more information, see announce_entry.

      \n

      trackers() returns all entries from announce-list.

      \n

      clear_trackers() removes all trackers from announce-list.

      \n-\n-[report issue]
      \n-
      \n-

      collections() similar_torrents()

      \n+\n+[report issue]
      \n+
      \n+

      similar_torrents() collections()

      \n
      \n-std::vector<std::string> collections () const;\n std::vector<sha1_hash> similar_torrents () const;\n+std::vector<std::string> collections () const;\n 
      \n

      These two functions are related to BEP 38 (mutable torrents). The\n vectors returned from these correspond to the "similar" and\n "collections" keys in the .torrent file. Both info-hashes and\n collections from within the info-dict and from outside of it are\n included.

      \n-\n-\n \n-[report issue]
      \n-
      \n-

      add_http_seed() add_url_seed() web_seeds() set_web_seeds()

      \n+\n+\n+[report issue]
      \n+
      \n+

      web_seeds() add_url_seed() set_web_seeds() add_http_seed()

      \n
      \n void add_http_seed (std::string const& url\n       , std::string const& extern_auth = std::string()\n       , web_seed_entry::headers_t const& extra_headers = web_seed_entry::headers_t());\n+std::vector<web_seed_entry> const& web_seeds () const;\n void add_url_seed (std::string const& url\n       , std::string const& ext_auth = std::string()\n       , web_seed_entry::headers_t const& ext_headers = web_seed_entry::headers_t());\n-std::vector<web_seed_entry> const& web_seeds () const;\n void set_web_seeds (std::vector<web_seed_entry> seeds);\n 
      \n

      web_seeds() returns all url seeds and http seeds in the torrent.\n Each entry is a web_seed_entry and may refer to either a url seed\n or http seed.

      \n

      add_url_seed() and add_http_seed() adds one url to the list of\n url/http seeds.

      \n@@ -453,21 +453,21 @@\n std::int64_t total_size () const;\n \n

      total_size() returns the total number of bytes the torrent-file\n represents. Note that this is the number of pieces times the piece\n size (modulo the last piece possibly being smaller). With pad files,\n the total size will be larger than the sum of all (regular) file\n sizes.

      \n-\n-[report issue]
      \n-
      \n-

      num_pieces() piece_length()

      \n+\n+[report issue]
      \n+
      \n+

      piece_length() num_pieces()

      \n
      \n-int piece_length () const;\n int num_pieces () const;\n+int piece_length () const;\n 
      \n

      piece_length() and num_pieces() returns the number of byte\n for each piece and the total number of pieces, respectively. The\n difference between piece_size() and piece_length() is that\n piece_size() takes the piece index as argument and gives you the\n exact size of that piece. It will always be the same as\n piece_length() except in the case of the last piece, which may be\n@@ -477,47 +477,47 @@\n

      blocks_per_piece()

      \n
      \n int blocks_per_piece () const;\n 
      \n

      returns the number of blocks there are in the typical piece. There\n may be fewer in the last piece)

      \n \n-\n-[report issue]
      \n-
      \n-

      last_piece() piece_range() end_piece()

      \n+\n+[report issue]
      \n+
      \n+

      last_piece() end_piece() piece_range()

      \n
      \n-piece_index_t last_piece () const;\n index_range<piece_index_t> piece_range () const;\n piece_index_t end_piece () const;\n+piece_index_t last_piece () const;\n 
      \n

      last_piece() returns the index to the last piece in the torrent and\n end_piece() returns the index to the one-past-end piece in the\n torrent\n piece_range() returns an implementation-defined type that can be\n used as the container in a range-for loop. Where the values are the\n indices of all pieces in the file_storage.

      \n \n [report issue]
      \n
      \n

      info_hashes() info_hash()

      \n
      \n-info_hash_t const& info_hashes () const;\n sha1_hash info_hash () const noexcept;\n+info_hash_t const& info_hashes () const;\n 
      \n

      returns the info-hash of the torrent. For BitTorrent v2 support, use\n info_hashes() to get an object that may hold both a v1 and v2\n info-hash

      \n-\n-[report issue]
      \n-
      \n-

      v2() v1()

      \n+\n+[report issue]
      \n+
      \n+

      v1() v2()

      \n
      \n-bool v1 () const;\n bool v2 () const;\n+bool v1 () const;\n 
      \n

      returns whether this torrent has v1 and/or v2 metadata, respectively.\n Hybrid torrents have both. These are shortcuts for\n info_hashes().has_v1() and info_hashes().has_v2() calls.

      \n [report issue]
      \n
      \n

      num_files()

      \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -11,22 +11,22 @@\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo\n o _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo_\b(_\b)\n o _\b~_\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo_\b(_\b)\n o _\bf_\bi_\bl_\be_\bs_\b(_\b)_\b _\bo_\br_\bi_\bg_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n o _\br_\be_\bn_\ba_\bm_\be_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\br_\be_\bm_\ba_\bp_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n o _\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)_\b _\bc_\bl_\be_\ba_\br_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)\n- o _\bc_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn_\bs_\b(_\b)_\b _\bs_\bi_\bm_\bi_\bl_\ba_\br_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\bs_\b(_\b)\n- o _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bw_\be_\bb_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bw_\be_\bb_\b__\bs_\be_\be_\bd_\bs_\b(_\b)\n+ o _\bs_\bi_\bm_\bi_\bl_\ba_\br_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\bs_\b(_\b)_\b _\bc_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn_\bs_\b(_\b)\n+ o _\bw_\be_\bb_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bs_\be_\bt_\b__\bw_\be_\bb_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)\n o _\bt_\bo_\bt_\ba_\bl_\b__\bs_\bi_\bz_\be_\b(_\b)\n- o _\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)\n+ o _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)\n o _\bb_\bl_\bo_\bc_\bk_\bs_\b__\bp_\be_\br_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n- o _\bl_\ba_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)_\b _\be_\bn_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n+ o _\bl_\ba_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\be_\bn_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n o _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)_\b _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\b(_\b)\n- o _\bv_\b2_\b(_\b)_\b _\bv_\b1_\b(_\b)\n+ o _\bv_\b1_\b(_\b)_\b _\bv_\b2_\b(_\b)\n o _\bn_\bu_\bm_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n o _\bm_\ba_\bp_\b__\bb_\bl_\bo_\bc_\bk_\b(_\b)\n o _\bm_\ba_\bp_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bs_\bs_\bl_\b__\bc_\be_\br_\bt_\b(_\b)\n o _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b)\n o _\bp_\br_\bi_\bv_\b(_\b)\n o _\bi_\bs_\b__\bi_\b2_\bp_\b(_\b)\n@@ -120,62 +120,62 @@\n the max number of bdecode tokens\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo_\b._\bh_\bp_\bp\"\n the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo class holds the information found in a .torrent file.\n class torrent_info\n {\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, load_torrent_limits const& cfg);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (torrent_info const& t);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, error_code& ec);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, error_code& ec, from_span_t);\n- explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (info_hash_t const& info_hash);\n explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, from_span_t);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, error_code& ec);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size, error_code& ec);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, load_torrent_limits const&\n+cfg);\n explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file);\n explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, error_code& ec);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, load_torrent_limits const& cfg,\n from_span_t);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, load_torrent_limits const&\n-cfg);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (torrent_info const& t);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, load_torrent_limits const& cfg);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, error_code& ec);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size, error_code& ec);\n+ explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (info_hash_t const& info_hash);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size);\n ~\b~t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo ();\n- file_storage const& f\bfi\bil\ble\bes\bs () const;\n file_storage const& o\bor\bri\big\bg_\b_f\bfi\bil\ble\bes\bs () const;\n+ file_storage const& f\bfi\bil\ble\bes\bs () const;\n void r\bre\ben\bna\bam\bme\be_\b_f\bfi\bil\ble\be (file_index_t index, std::string const& new_filename);\n void r\bre\bem\bma\bap\bp_\b_f\bfi\bil\ble\bes\bs (file_storage const& f);\n- std::vector const& t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n+ void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (std::string const& url, int tier = 0);\n void c\bcl\ble\bea\bar\br_\b_t\btr\bra\bac\bck\bke\ber\brs\bs ();\n+ std::vector const& t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (std::string const& url, int tier\n , announce_entry::tracker_source source);\n- void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (std::string const& url, int tier = 0);\n- std::vector c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs () const;\n std::vector s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs () const;\n+ std::vector c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs () const;\n void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url\n , std::string const& extern_auth = std::string()\n , web_seed_entry::headers_t const& extra_headers = web_seed_entry::\n headers_t());\n+ std::vector const& w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs () const;\n void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url\n , std::string const& ext_auth = std::string()\n , web_seed_entry::headers_t const& ext_headers = web_seed_entry::\n headers_t());\n- std::vector const& w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs () const;\n void s\bse\bet\bt_\b_w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs (std::vector seeds);\n std::int64_t t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be () const;\n- int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n+ int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n int b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be () const;\n- piece_index_t l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be () const;\n index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const;\n piece_index_t e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be () const;\n- info_hash_t const& i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n+ piece_index_t l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be () const;\n sha1_hash i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh () const noexcept;\n- bool v\bv1\b1 () const;\n+ info_hash_t const& i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n bool v\bv2\b2 () const;\n+ bool v\bv1\b1 () const;\n int n\bnu\bum\bm_\b_f\bfi\bil\ble\bes\bs () const;\n std::vector m\bma\bap\bp_\b_b\bbl\blo\boc\bck\bk (piece_index_t const piece\n , std::int64_t offset, int size) const;\n peer_request m\bma\bap\bp_\b_f\bfi\bil\ble\be (file_index_t const file, std::int64_t offset, int\n size) const;\n string_view s\bss\bsl\bl_\b_c\bce\ber\brt\bt () const;\n bool i\bis\bs_\b_v\bva\bal\bli\bid\bd () const;\n@@ -196,29 +196,29 @@\n bdecode_node i\bin\bnf\bfo\bo (char const* key) const;\n span i\bin\bnf\bfo\bo_\b_s\bse\bec\bct\bti\bio\bon\bn () const;\n span p\bpi\bie\bec\bce\be_\b_l\bla\bay\bye\ber\br (file_index_t) const;\n void f\bfr\bre\bee\be_\b_p\bpi\bie\bec\bce\be_\b_l\bla\bay\bye\ber\brs\bs ();\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo(\b()\b) *\b**\b**\b**\b**\b*\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, load_torrent_limits const& cfg);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (torrent_info const& t);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, error_code& ec);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, error_code& ec, from_span_t);\n-explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (info_hash_t const& info_hash);\n explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, from_span_t);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, error_code& ec);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size, error_code& ec);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, load_torrent_limits const&\n+cfg);\n explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file);\n explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, error_code& ec);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, load_torrent_limits const& cfg,\n from_span_t);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, load_torrent_limits const&\n-cfg);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (torrent_info const& t);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, load_torrent_limits const& cfg);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, error_code& ec);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size, error_code& ec);\n+explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (info_hash_t const& info_hash);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size);\n The constructor that takes an info-hash will initialize the info-hash to the\n given value, but leave all other fields empty. This is used internally when\n downloading torrents without the metadata. The metadata will be created by\n libtorrent as soon as it has been downloaded from the swarm.\n The constructor that takes a _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be will create a _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object\n from the information found in the given torrent_file. The _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be\n represents a tree node in an bencoded file. To load an ordinary .torrent file\n@@ -242,16 +242,16 @@\n is an object in the libtorrent namespace of this type called from_span.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* ~\b~t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo(\b()\b) *\b**\b**\b**\b**\b*\n ~\b~t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo ();\n frees all storage associated with this _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bil\ble\bes\bs(\b()\b) o\bor\bri\big\bg_\b_f\bfi\bil\ble\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n-file_storage const& f\bfi\bil\ble\bes\bs () const;\n file_storage const& o\bor\bri\big\bg_\b_f\bfi\bil\ble\bes\bs () const;\n+file_storage const& f\bfi\bil\ble\bes\bs () const;\n The _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be object contains the information on how to map the pieces to\n files. It is separated from the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object because when creating\n torrents a storage object needs to be created without having a torrent file.\n When renaming files in a storage, the storage needs to make its own copy of the\n _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be in order to make its mapping differ from the one in the torrent\n file.\n orig_files() returns the original (unmodified) file storage for this torrent.\n@@ -285,47 +285,47 @@\n instance, download all data in a torrent to a single file, or to a number of\n fixed size sector aligned files, regardless of the number and sizes of the\n files in the torrent.\n The new specified file_storage must have the exact same size as the current\n one.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br(\b()\b) c\bcl\ble\bea\bar\br_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) *\b**\b**\b**\b**\b*\n-std::vector const& t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n+void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (std::string const& url, int tier = 0);\n void c\bcl\ble\bea\bar\br_\b_t\btr\bra\bac\bck\bke\ber\brs\bs ();\n+std::vector const& t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (std::string const& url, int tier\n , announce_entry::tracker_source source);\n-void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (std::string const& url, int tier = 0);\n add_tracker() adds a tracker to the announce-list. The tier determines the\n order in which the trackers are to be tried. The trackers() function will\n return a sorted vector of _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by. Each announce _\be_\bn_\bt_\br_\by contains a\n string, which is the tracker url, and a tier index. The tier index is the high-\n level priority. No matter which trackers that works or not, the ones with lower\n tier will always be tried before the one with higher tier number. For more\n information, see _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by.\n trackers() returns all entries from announce-list.\n clear_trackers() removes all trackers from announce-list.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs(\b()\b) s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs(\b()\b) *\b**\b**\b**\b**\b*\n-std::vector c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs () const;\n+*\b**\b**\b**\b**\b* s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs(\b()\b) c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs(\b()\b) *\b**\b**\b**\b**\b*\n std::vector s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs () const;\n+std::vector c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs () const;\n These two functions are related to _\bB_\bE_\bP_\b _\b3_\b8 (mutable torrents). The vectors\n returned from these correspond to the \"similar\" and \"collections\" keys in the\n .torrent file. Both info-hashes and collections from within the info-dict and\n from outside of it are included.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs(\b()\b) s\bse\bet\bt_\b_w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs(\b()\b) a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) s\bse\bet\bt_\b_w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs(\b()\b) a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url\n , std::string const& extern_auth = std::string()\n , web_seed_entry::headers_t const& extra_headers = web_seed_entry::\n headers_t());\n+std::vector const& w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs () const;\n void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url\n , std::string const& ext_auth = std::string()\n , web_seed_entry::headers_t const& ext_headers = web_seed_entry::\n headers_t());\n-std::vector const& w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs () const;\n void s\bse\bet\bt_\b_w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs (std::vector seeds);\n web_seeds() returns all url seeds and http seeds in the torrent. Each _\be_\bn_\bt_\br_\by is\n a web_seed_entry and may refer to either a url seed or http seed.\n add_url_seed() and add_http_seed() adds one url to the list of url/http seeds.\n set_web_seeds() replaces all web seeds with the ones specified in the seeds\n vector.\n The extern_auth argument can be used for other authorization schemes than basic\n@@ -339,47 +339,47 @@\n *\b**\b**\b**\b**\b* t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n std::int64_t t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be () const;\n total_size() returns the total number of bytes the torrent-file represents.\n Note that this is the number of pieces times the piece size (modulo the last\n piece possibly being smaller). With pad files, the total size will be larger\n than the sum of all (regular) file sizes.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) *\b**\b**\b**\b**\b*\n-int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n+*\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n+int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n piece_length() and num_pieces() returns the number of byte for each piece and\n the total number of pieces, respectively. The difference between piece_size()\n and piece_length() is that piece_size() takes the piece index as argument and\n gives you the exact size of that piece. It will always be the same as\n piece_length() except in the case of the last piece, which may be smaller.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n int b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be () const;\n returns the number of blocks there are in the typical piece. There may be fewer\n in the last piece)\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be(\b()\b) e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n-piece_index_t l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be () const;\n+*\b**\b**\b**\b**\b* l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be(\b()\b) p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be(\b()\b) *\b**\b**\b**\b**\b*\n index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const;\n piece_index_t e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be () const;\n+piece_index_t l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be () const;\n last_piece() returns the index to the last piece in the torrent and end_piece()\n returns the index to the one-past-end piece in the torrent piece_range()\n returns an implementation-defined type that can be used as the container in a\n range-for loop. Where the values are the indices of all pieces in the\n _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs(\b()\b) i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh(\b()\b) *\b**\b**\b**\b**\b*\n-info_hash_t const& i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n sha1_hash i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh () const noexcept;\n+info_hash_t const& i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n returns the info-hash of the torrent. For BitTorrent v2 support, use\n info_hashes() to get an object that may hold both a v1 and v2 info-hash\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* v\bv2\b2(\b()\b) v\bv1\b1(\b()\b) *\b**\b**\b**\b**\b*\n-bool v\bv1\b1 () const;\n+*\b**\b**\b**\b**\b* v\bv1\b1(\b()\b) v\bv2\b2(\b()\b) *\b**\b**\b**\b**\b*\n bool v\bv2\b2 () const;\n+bool v\bv1\b1 () const;\n returns whether this torrent has v1 and/or v2 metadata, respectively. Hybrid\n torrents have both. These are shortcuts for info_hashes().has_v1() and\n info_hashes().has_v2() calls.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_f\bfi\bil\ble\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n int n\bnu\bum\bm_\b_f\bfi\bil\ble\bes\bs () const;\n If you need index-access to files you can use the num_files() along with the\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Trackers.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Trackers.html", "unified_diff": "@@ -31,15 +31,15 @@\n

      home

      \n \n [report issue]
      \n

      announce_infohash

      \n@@ -131,19 +131,19 @@\n

      announce_entry

      \n

      Declared in "libtorrent/announce_entry.hpp"

      \n

      this class holds information about one bittorrent tracker, as it\n relates to a specific torrent.

      \n
      \n struct announce_entry\n {\n+   announce_entry& operator= (announce_entry const&) &;\n    announce_entry (announce_entry const&);\n-   announce_entry ();\n-   explicit announce_entry (string_view u);\n    ~announce_entry ();\n-   announce_entry& operator= (announce_entry const&) &;\n+   explicit announce_entry (string_view u);\n+   announce_entry ();\n \n    enum tracker_source\n    {\n       source_torrent,\n       source_client,\n       source_magnet_link,\n       source_tex,\n@@ -154,24 +154,24 @@\n    std::vector<announce_endpoint> endpoints;\n    std::uint8_t tier  = 0;\n    std::uint8_t fail_limit  = 0;\n    std::uint8_t source:4;\n    bool verified:1;\n };\n 
      \n+\n \n-\n-[report issue]
      \n-

      announce_entry() ~announce_entry() operator=()

      \n+[report issue]
      \n+

      operator=() announce_entry() ~announce_entry()

      \n
      \n+announce_entry& operator= (announce_entry const&) &;\n announce_entry (announce_entry const&);\n-announce_entry ();\n-explicit announce_entry (string_view u);\n ~announce_entry ();\n-announce_entry& operator= (announce_entry const&) &;\n+explicit announce_entry (string_view u);\n+announce_entry ();\n 
      \n

      constructs a tracker announce entry with u as the URL.

      \n [report issue]
      \n
      \n

      enum tracker_source

      \n

      Declared in "libtorrent/announce_entry.hpp"

      \n
  • \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,15 +2,15 @@\n _\b[_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b _\bl_\bo_\bg_\bo_\b]\n V\bVe\ber\brs\bsi\bio\bon\bn:\b: 2.0.11\n _\bh_\bo_\bm_\be\n Table of contents\n * _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\bi_\bn_\bf_\bo_\bh_\ba_\bs_\bh\n * _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt\n * _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by\n- o _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b(_\b)_\b _\b~_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n+ o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b(_\b)_\b _\b~_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bt_\br_\ba_\bc_\bk_\be_\br_\b__\bs_\bo_\bu_\br_\bc_\be\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_i\bin\bnf\bfo\boh\bha\bas\bsh\bh *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b._\bh_\bp_\bp\"\n struct announce_infohash\n {\n std::string message;\n@@ -78,19 +78,19 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b._\bh_\bp_\bp\"\n this class holds information about one bittorrent tracker, as it relates to a\n specific torrent.\n struct announce_entry\n {\n+ announce_entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (announce_entry const&) &;\n a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (announce_entry const&);\n- a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by ();\n- explicit a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (string_view u);\n ~\b~a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by ();\n- announce_entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (announce_entry const&) &;\n+ explicit a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (string_view u);\n+ a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by ();\n \n enum tracker_source\n {\n source_torrent,\n source_client,\n source_magnet_link,\n source_tex,\n@@ -101,20 +101,20 @@\n std::vector endpoints;\n std::uint8_t t\bti\bie\ber\br = 0;\n std::uint8_t f\bfa\bai\bil\bl_\b_l\bli\bim\bmi\bit\bt = 0;\n std::uint8_t source:4;\n bool verified:1;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by(\b()\b) ~\b~a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by(\b()\b) ~\b~a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by(\b()\b) *\b**\b**\b**\b**\b*\n+announce_entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (announce_entry const&) &;\n a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (announce_entry const&);\n-a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by ();\n-explicit a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (string_view u);\n ~\b~a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by ();\n-announce_entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (announce_entry const&) &;\n+explicit a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (string_view u);\n+a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by ();\n constructs a tracker announce _\be_\bn_\bt_\br_\by with u as the URL.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnu\bum\bm t\btr\bra\bac\bck\bke\ber\br_\b_s\bso\bou\bur\brc\bce\be *\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b._\bh_\bp_\bp\"\n _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b \n |_\bn\bn_\ba\ba_\bm\bm_\be\be_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\bv\bv_\ba\ba_\bl\bl_\bu\bu_\be\be_\b|_\bd\bd_\be\be_\bs\bs_\bc\bc_\br\br_\bi\bi_\bp\bp_\bt\bt_\bi\bi_\bo\bo_\bn\bn_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |\n |_\bs_\bo_\bu_\br_\bc_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b _\b _\b _\b _\b|_\b1_\b _\b _\b _\b _\b|_\bt_\bh_\be_\b _\bt_\br_\ba_\bc_\bk_\be_\br_\b _\bw_\ba_\bs_\b _\bp_\ba_\br_\bt_\b _\bo_\bf_\b _\bt_\bh_\be_\b _\b._\bt_\bo_\br_\br_\be_\bn_\bt_\b _\bf_\bi_\bl_\be_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Utility.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-Utility.html", "unified_diff": "@@ -31,15 +31,15 @@\n

    home

    \n \n@@ -70,49 +70,49 @@\n

    bitfield

    \n

    Declared in "libtorrent/bitfield.hpp"

    \n

    The bitfield type stores any number of bits as a bitfield\n in a heap allocated array.

    \n
    \n struct bitfield\n {\n-   bitfield (bitfield&& rhs) noexcept = default;\n    explicit bitfield (int bits);\n-   bitfield () noexcept = default;\n    bitfield (bitfield const& rhs);\n-   bitfield (char const* b, int bits);\n+   bitfield () noexcept = default;\n    bitfield (int bits, bool val);\n+   bitfield (bitfield&& rhs) noexcept = default;\n+   bitfield (char const* b, int bits);\n    void assign (char const* b, int const bits);\n    bool operator[] (int index) const noexcept;\n    bool get_bit (int index) const noexcept;\n-   void set_bit (int index) noexcept;\n    void clear_bit (int index) noexcept;\n+   void set_bit (int index) noexcept;\n    bool all_set () const noexcept;\n    bool none_set () const noexcept;\n    int size () const noexcept;\n    int num_words () const noexcept;\n    int num_bytes () const noexcept;\n    bool empty () const noexcept;\n-   char* data () noexcept;\n    char const* data () const noexcept;\n+   char* data () noexcept;\n    void swap (bitfield& rhs) noexcept;\n    int count () const noexcept;\n    int find_first_set () const noexcept;\n    int find_last_clear () const noexcept;\n    bool operator== (lt::bitfield const& rhs) const;\n };\n 
    \n [report issue]
    \n

    bitfield()

    \n
    \n-bitfield (bitfield&& rhs) noexcept = default;\n explicit bitfield (int bits);\n-bitfield () noexcept = default;\n bitfield (bitfield const& rhs);\n-bitfield (char const* b, int bits);\n+bitfield () noexcept = default;\n bitfield (int bits, bool val);\n+bitfield (bitfield&& rhs) noexcept = default;\n+bitfield (char const* b, int bits);\n 
    \n

    constructs a new bitfield. The default constructor creates an empty\n bitfield. bits is the size of the bitfield (specified in bits).\n val is the value to initialize the bits to. If not specified\n all bits are initialized to 0.

    \n

    The constructor taking a pointer b and bits copies a bitfield\n from the specified buffer, and bits number of bits (rounded up to\n@@ -121,30 +121,30 @@\n

    \n

    assign()

    \n
    \n void assign (char const* b, int const bits);\n 
    \n

    copy bitfield from buffer b of bits number of bits, rounded up to\n the nearest byte boundary.

    \n-\n-[report issue]
    \n-
    \n-

    get_bit() operator[]()

    \n+\n+[report issue]
    \n+
    \n+

    operator[]() get_bit()

    \n
    \n bool operator[] (int index) const noexcept;\n bool get_bit (int index) const noexcept;\n 
    \n

    query bit at index. Returns true if bit is 1, otherwise false.

    \n \n [report issue]
    \n
    \n

    clear_bit() set_bit()

    \n
    \n-void set_bit (int index) noexcept;\n void clear_bit (int index) noexcept;\n+void set_bit (int index) noexcept;\n 
    \n

    set bit at index to 0 (clear_bit) or 1 (set_bit).

    \n [report issue]
    \n
    \n

    all_set()

    \n
    \n bool all_set () const noexcept;\n@@ -187,16 +187,16 @@\n bool empty () const noexcept;\n 
    \n

    returns true if the bitfield has zero size.

    \n [report issue]
    \n
    \n

    data()

    \n
    \n-char* data () noexcept;\n char const* data () const noexcept;\n+char* data () noexcept;\n 
    \n

    returns a pointer to the internal buffer of the bitfield, or\n nullptr if it's empty.

    \n [report issue]
    \n
    \n

    swap()

    \n
    \n@@ -242,32 +242,32 @@\n 

    The built-in software version of sha1-algorithm was implemented\n by Steve Reid and released as public domain.\n For more info, see src/sha1.cpp.

    \n
    \n class hasher\n {\n    hasher ();\n-   hasher (char const* data, int len);\n    hasher& operator= (hasher const&) &;\n-   explicit hasher (span<char const> data);\n    hasher (hasher const&);\n+   hasher (char const* data, int len);\n+   explicit hasher (span<char const> data);\n    hasher& update (span<char const> data);\n    hasher& update (char const* data, int len);\n    sha1_hash final ();\n    void reset ();\n };\n 
    \n \n [report issue]
    \n

    operator=() hasher()

    \n
    \n-hasher (char const* data, int len);\n hasher& operator= (hasher const&) &;\n-explicit hasher (span<char const> data);\n hasher (hasher const&);\n+hasher (char const* data, int len);\n+explicit hasher (span<char const> data);\n 
    \n

    this is the same as default constructing followed by a call to\n update(data, len).

    \n [report issue]
    \n
    \n

    update()

    \n
    \n@@ -296,42 +296,42 @@\n 
    \n

    hasher256

    \n

    Declared in "libtorrent/hasher.hpp"

    \n
    \n class hasher256\n {\n    hasher256 ();\n-   hasher256 (hasher256 const&);\n-   explicit hasher256 (span<char const> data);\n    hasher256& operator= (hasher256 const&) &;\n+   explicit hasher256 (span<char const> data);\n    hasher256 (char const* data, int len);\n-   hasher256& update (span<char const> data);\n+   hasher256 (hasher256 const&);\n    hasher256& update (char const* data, int len);\n+   hasher256& update (span<char const> data);\n    sha256_hash final ();\n    void reset ();\n    ~hasher256 ();\n };\n 
    \n-\n-[report issue]
    \n-

    hasher256() operator=()

    \n+\n+[report issue]
    \n+

    operator=() hasher256()

    \n
    \n-hasher256 (hasher256 const&);\n-explicit hasher256 (span<char const> data);\n hasher256& operator= (hasher256 const&) &;\n+explicit hasher256 (span<char const> data);\n hasher256 (char const* data, int len);\n+hasher256 (hasher256 const&);\n 
    \n

    this is the same as default constructing followed by a call to\n update(data, len).

    \n [report issue]
    \n
    \n

    update()

    \n
    \n-hasher256& update (span<char const> data);\n hasher256& update (char const* data, int len);\n+hasher256& update (span<char const> data);\n 
    \n

    append the following bytes to what is being hashed

    \n [report issue]
    \n
    \n

    final()

    \n
    \n sha256_hash final ();\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,15 +2,15 @@\n _\b[_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b _\bl_\bo_\bg_\bo_\b]\n V\bVe\ber\brs\bsi\bio\bon\bn:\b: 2.0.11\n _\bh_\bo_\bm_\be\n Table of contents\n     * _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd\n           o _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd_\b(_\b)\n           o _\ba_\bs_\bs_\bi_\bg_\bn_\b(_\b)\n-          o _\bg_\be_\bt_\b__\bb_\bi_\bt_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b(_\b)\n+          o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b(_\b)_\b _\bg_\be_\bt_\b__\bb_\bi_\bt_\b(_\b)\n           o _\bc_\bl_\be_\ba_\br_\b__\bb_\bi_\bt_\b(_\b)_\b _\bs_\be_\bt_\b__\bb_\bi_\bt_\b(_\b)\n           o _\ba_\bl_\bl_\b__\bs_\be_\bt_\b(_\b)\n           o _\bn_\bo_\bn_\be_\b__\bs_\be_\bt_\b(_\b)\n           o _\bs_\bi_\bz_\be_\b(_\b)\n           o _\bn_\bu_\bm_\b__\bw_\bo_\br_\bd_\bs_\b(_\b)\n           o _\bn_\bu_\bm_\b__\bb_\by_\bt_\be_\bs_\b(_\b)\n           o _\be_\bm_\bp_\bt_\by_\b(_\b)\n@@ -21,78 +21,78 @@\n           o _\bf_\bi_\bn_\bd_\b__\bl_\ba_\bs_\bt_\b__\bc_\bl_\be_\ba_\br_\b(_\b)\n     * _\bh_\ba_\bs_\bh_\be_\br\n           o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\bh_\ba_\bs_\bh_\be_\br_\b(_\b)\n           o _\bu_\bp_\bd_\ba_\bt_\be_\b(_\b)\n           o _\bf_\bi_\bn_\ba_\bl_\b(_\b)\n           o _\br_\be_\bs_\be_\bt_\b(_\b)\n     * _\bh_\ba_\bs_\bh_\be_\br_\b2_\b5_\b6\n-          o _\bh_\ba_\bs_\bh_\be_\br_\b2_\b5_\b6_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n+          o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\bh_\ba_\bs_\bh_\be_\br_\b2_\b5_\b6_\b(_\b)\n           o _\bu_\bp_\bd_\ba_\bt_\be_\b(_\b)\n           o _\bf_\bi_\bn_\ba_\bl_\b(_\b)\n           o _\br_\be_\bs_\be_\bt_\b(_\b)\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* b\bbi\bit\btf\bfi\bie\bel\bld\bd *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd_\b._\bh_\bp_\bp\"\n The _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd type stores any number of bits as a _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd in a heap allocated\n array.\n struct bitfield\n {\n-   b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield&& rhs) noexcept = default;\n    explicit b\bbi\bit\btf\bfi\bie\bel\bld\bd (int bits);\n-   b\bbi\bit\btf\bfi\bie\bel\bld\bd () noexcept = default;\n    b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& rhs);\n-   b\bbi\bit\btf\bfi\bie\bel\bld\bd (char const* b, int bits);\n+   b\bbi\bit\btf\bfi\bie\bel\bld\bd () noexcept = default;\n    b\bbi\bit\btf\bfi\bie\bel\bld\bd (int bits, bool val);\n+   b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield&& rhs) noexcept = default;\n+   b\bbi\bit\btf\bfi\bie\bel\bld\bd (char const* b, int bits);\n    void a\bas\bss\bsi\big\bgn\bn (char const* b, int const bits);\n    bool o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (int index) const noexcept;\n    bool g\bge\bet\bt_\b_b\bbi\bit\bt (int index) const noexcept;\n-   void s\bse\bet\bt_\b_b\bbi\bit\bt (int index) noexcept;\n    void c\bcl\ble\bea\bar\br_\b_b\bbi\bit\bt (int index) noexcept;\n+   void s\bse\bet\bt_\b_b\bbi\bit\bt (int index) noexcept;\n    bool a\bal\bll\bl_\b_s\bse\bet\bt () const noexcept;\n    bool n\bno\bon\bne\be_\b_s\bse\bet\bt () const noexcept;\n    int s\bsi\biz\bze\be () const noexcept;\n    int n\bnu\bum\bm_\b_w\bwo\bor\brd\bds\bs () const noexcept;\n    int n\bnu\bum\bm_\b_b\bby\byt\bte\bes\bs () const noexcept;\n    bool e\bem\bmp\bpt\bty\by () const noexcept;\n-   char* d\bda\bat\bta\ba () noexcept;\n    char const* d\bda\bat\bta\ba () const noexcept;\n+   char* d\bda\bat\bta\ba () noexcept;\n    void s\bsw\bwa\bap\bp (bitfield& rhs) noexcept;\n    int c\bco\bou\bun\bnt\bt () const noexcept;\n    int f\bfi\bin\bnd\bd_\b_f\bfi\bir\brs\bst\bt_\b_s\bse\bet\bt () const noexcept;\n    int f\bfi\bin\bnd\bd_\b_l\bla\bas\bst\bt_\b_c\bcl\ble\bea\bar\br () const noexcept;\n    bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (lt::bitfield const& rhs) const;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* b\bbi\bit\btf\bfi\bie\bel\bld\bd(\b()\b) *\b**\b**\b**\b**\b*\n-b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield&& rhs) noexcept = default;\n explicit b\bbi\bit\btf\bfi\bie\bel\bld\bd (int bits);\n-b\bbi\bit\btf\bfi\bie\bel\bld\bd () noexcept = default;\n b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& rhs);\n-b\bbi\bit\btf\bfi\bie\bel\bld\bd (char const* b, int bits);\n+b\bbi\bit\btf\bfi\bie\bel\bld\bd () noexcept = default;\n b\bbi\bit\btf\bfi\bie\bel\bld\bd (int bits, bool val);\n+b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield&& rhs) noexcept = default;\n+b\bbi\bit\btf\bfi\bie\bel\bld\bd (char const* b, int bits);\n constructs a new _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd. The default constructor creates an empty _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd.\n bits is the size of the _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd (specified in bits). val is the value to\n initialize the bits to. If not specified all bits are initialized to 0.\n The constructor taking a pointer b and bits copies a _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd from the\n specified buffer, and bits number of bits (rounded up to the nearest byte\n boundary).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bas\bss\bsi\big\bgn\bn(\b()\b) *\b**\b**\b**\b**\b*\n void a\bas\bss\bsi\big\bgn\bn (char const* b, int const bits);\n copy _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd from buffer b of bits number of bits, rounded up to the nearest\n byte boundary.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_b\bbi\bit\bt(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b](\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b](\b()\b) g\bge\bet\bt_\b_b\bbi\bit\bt(\b()\b) *\b**\b**\b**\b**\b*\n bool o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (int index) const noexcept;\n bool g\bge\bet\bt_\b_b\bbi\bit\bt (int index) const noexcept;\n query bit at index. Returns true if bit is 1, otherwise false.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br_\b_b\bbi\bit\bt(\b()\b) s\bse\bet\bt_\b_b\bbi\bit\bt(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_b\bbi\bit\bt (int index) noexcept;\n void c\bcl\ble\bea\bar\br_\b_b\bbi\bit\bt (int index) noexcept;\n+void s\bse\bet\bt_\b_b\bbi\bit\bt (int index) noexcept;\n set bit at index to 0 (clear_bit) or 1 (set_bit).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bal\bll\bl_\b_s\bse\bet\bt(\b()\b) *\b**\b**\b**\b**\b*\n bool a\bal\bll\bl_\b_s\bse\bet\bt () const noexcept;\n returns true if all bits in the _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd are set\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bno\bon\bne\be_\b_s\bse\bet\bt(\b()\b) *\b**\b**\b**\b**\b*\n@@ -113,16 +113,16 @@\n returns the number of bytes needed to represent all bits in this _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\bem\bmp\bpt\bty\by(\b()\b) *\b**\b**\b**\b**\b*\n bool e\bem\bmp\bpt\bty\by () const noexcept;\n returns true if the _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd has zero size.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* d\bda\bat\bta\ba(\b()\b) *\b**\b**\b**\b**\b*\n-char* d\bda\bat\bta\ba () noexcept;\n char const* d\bda\bat\bta\ba () const noexcept;\n+char* d\bda\bat\bta\ba () noexcept;\n returns a pointer to the internal buffer of the _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd, or nullptr if it's\n empty.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bsw\bwa\bap\bp(\b()\b) *\b**\b**\b**\b**\b*\n void s\bsw\bwa\bap\bp (bitfield& rhs) noexcept;\n swaps the bit-fields two variables refer to\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -151,29 +151,29 @@\n If you want to reuse the _\bh_\ba_\bs_\bh_\be_\br object once you have created a hash, you have\n to call reset() to reinitialize it.\n The built-in software version of sha1-algorithm was implemented by Steve Reid\n and released as public domain. For more info, see src/sha1.cpp.\n class hasher\n {\n    h\bha\bas\bsh\bhe\ber\br ();\n-   h\bha\bas\bsh\bhe\ber\br (char const* data, int len);\n    hasher& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (hasher const&) &;\n-   explicit h\bha\bas\bsh\bhe\ber\br (span data);\n    h\bha\bas\bsh\bhe\ber\br (hasher const&);\n+   h\bha\bas\bsh\bhe\ber\br (char const* data, int len);\n+   explicit h\bha\bas\bsh\bhe\ber\br (span data);\n    hasher& u\bup\bpd\bda\bat\bte\be (span data);\n    hasher& u\bup\bpd\bda\bat\bte\be (char const* data, int len);\n    sha1_hash f\bfi\bin\bna\bal\bl ();\n    void r\bre\bes\bse\bet\bt ();\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) h\bha\bas\bsh\bhe\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n-h\bha\bas\bsh\bhe\ber\br (char const* data, int len);\n hasher& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (hasher const&) &;\n-explicit h\bha\bas\bsh\bhe\ber\br (span data);\n h\bha\bas\bsh\bhe\ber\br (hasher const&);\n+h\bha\bas\bsh\bhe\ber\br (char const* data, int len);\n+explicit h\bha\bas\bsh\bhe\ber\br (span data);\n this is the same as default constructing followed by a call to update(data,\n len).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* u\bup\bpd\bda\bat\bte\be(\b()\b) *\b**\b**\b**\b**\b*\n hasher& u\bup\bpd\bda\bat\bte\be (span data);\n hasher& u\bup\bpd\bda\bat\bte\be (char const* data, int len);\n append the following bytes to what is being hashed\n@@ -189,36 +189,36 @@\n constructed.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bh_\ba_\bs_\bh_\be_\br_\b._\bh_\bp_\bp\"\n class hasher256\n {\n    h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 ();\n-   h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (hasher256 const&);\n-   explicit h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (span data);\n    hasher256& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (hasher256 const&) &;\n+   explicit h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (span data);\n    h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (char const* data, int len);\n-   hasher256& u\bup\bpd\bda\bat\bte\be (span data);\n+   h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (hasher256 const&);\n    hasher256& u\bup\bpd\bda\bat\bte\be (char const* data, int len);\n+   hasher256& u\bup\bpd\bda\bat\bte\be (span data);\n    sha256_hash f\bfi\bin\bna\bal\bl ();\n    void r\bre\bes\bse\bet\bt ();\n    ~\b~h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 ();\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n-h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (hasher256 const&);\n-explicit h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (span data);\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6(\b()\b) *\b**\b**\b**\b**\b*\n hasher256& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (hasher256 const&) &;\n+explicit h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (span data);\n h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (char const* data, int len);\n+h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (hasher256 const&);\n this is the same as default constructing followed by a call to update(data,\n len).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* u\bup\bpd\bda\bat\bte\be(\b()\b) *\b**\b**\b**\b**\b*\n-hasher256& u\bup\bpd\bda\bat\bte\be (span data);\n hasher256& u\bup\bpd\bda\bat\bte\be (char const* data, int len);\n+hasher256& u\bup\bpd\bda\bat\bte\be (span data);\n append the following bytes to what is being hashed\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bin\bna\bal\bl(\b()\b) *\b**\b**\b**\b**\b*\n sha256_hash f\bfi\bin\bna\bal\bl ();\n returns the SHA-1 digest of the buffers previously passed to _\bu_\bp_\bd_\ba_\bt_\be_\b(_\b) and the\n _\bh_\ba_\bs_\bh_\be_\br constructor.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-ed25519.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference-ed25519.html", "comments": ["Ordering differences only"], "unified_diff": "@@ -84,18 +84,18 @@\n 
    \n

    Verifies the signature on the given message using pk

    \n [report issue]
    \n
    \n

    ed25519_add_scalar()

    \n

    Declared in "libtorrent/kademlia/ed25519.hpp"

    \n
    \n-public_key ed25519_add_scalar (public_key const& pk\n-   , std::array<char, 32> const& scalar);\n secret_key ed25519_add_scalar (secret_key const& sk\n    , std::array<char, 32> const& scalar);\n+public_key ed25519_add_scalar (public_key const& pk\n+   , std::array<char, 32> const& scalar);\n 
    \n

    Adds a scalar to the given key pair where scalar is a 32 byte buffer\n (possibly generated with ed25519_create_seed), generating a new key pair.

    \n

    You can calculate the public key sum without knowing the private key and\n vice versa by passing in null for the key you don't know. This is useful\n when a third party (an authoritative server for example) needs to enforce\n randomness on a key pair while only knowing the public key of the other\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -39,18 +39,18 @@\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bk_\ba_\bd_\be_\bm_\bl_\bi_\ba_\b/_\be_\bd_\b2_\b5_\b5_\b1_\b9_\b._\bh_\bp_\bp\"\n bool e\bed\bd2\b25\b55\b51\b19\b9_\b_v\bve\ber\bri\bif\bfy\by (signature const& sig\n , span msg, public_key const& pk);\n Verifies the signature on the given message using pk\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* e\bed\bd2\b25\b55\b51\b19\b9_\b_a\bad\bdd\bd_\b_s\bsc\bca\bal\bla\bar\br(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bk_\ba_\bd_\be_\bm_\bl_\bi_\ba_\b/_\be_\bd_\b2_\b5_\b5_\b1_\b9_\b._\bh_\bp_\bp\"\n-public_key e\bed\bd2\b25\b55\b51\b19\b9_\b_a\bad\bdd\bd_\b_s\bsc\bca\bal\bla\bar\br (public_key const& pk\n- , std::array const& scalar);\n secret_key e\bed\bd2\b25\b55\b51\b19\b9_\b_a\bad\bdd\bd_\b_s\bsc\bca\bal\bla\bar\br (secret_key const& sk\n , std::array const& scalar);\n+public_key e\bed\bd2\b25\b55\b51\b19\b9_\b_a\bad\bdd\bd_\b_s\bsc\bca\bal\bla\bar\br (public_key const& pk\n+ , std::array const& scalar);\n Adds a scalar to the given key pair where scalar is a 32 byte buffer (possibly\n generated withed25519_create_seed), generating a new key pair.\n You can calculate the public key sum without knowing the private key and vice\n versa by passing in null for the key you don't know. This is useful when a\n third party (an authoritative server for example) needs to enforce randomness\n on a key pair while only knowing the public key of the other side.\n Warning: the last bit of the scalar is ignored - if comparing scalars make sure\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/reference.html", "comments": ["Ordering differences only"], "unified_diff": "@@ -25,33 +25,33 @@\n

    \n
    \n

    Error Codes

    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,29 +3,29 @@\n *\b**\b**\b**\b**\b**\b* r\bre\bef\bfe\ber\bre\ben\bnc\bce\be d\bdo\boc\bcu\bum\bme\ben\bnt\bta\bat\bti\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n _\bs_\bi_\bn_\bg_\bl_\be_\b-_\bp_\ba_\bg_\be_\b _\bv_\be_\br_\bs_\bi_\bo_\bn\n Session\n _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs\n _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by\n _\bs_\be_\bs_\bs_\bi_\bo_\bn\n _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bh_\ba_\bn_\bd_\bl_\be\n-_\br_\be_\ba_\bd_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)\n _\bw_\br_\bi_\bt_\be_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)\n+_\br_\be_\ba_\bd_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)\n _\bw_\br_\bi_\bt_\be_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b__\bb_\bu_\bf_\b(_\b)\n Torrent Info\n _\bw_\be_\bb_\b__\bs_\be_\be_\bd_\b__\be_\bn_\bt_\br_\by\n _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bl_\bi_\bm_\bi_\bt_\bs\n _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo\n Core\n _\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo\n _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\b__\bt\n _\bp_\bi_\be_\bc_\be_\b__\bb_\bl_\bo_\bc_\bk\n _\bp_\be_\be_\br_\b__\br_\be_\bq_\bu_\be_\bs_\bt\n-_\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b)\n-_\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\bs_\be_\bd_\b(_\b)\n _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)\n+_\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\bs_\be_\bd_\b(_\b)\n+_\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b)\n _\bm_\ba_\bk_\be_\b__\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b(_\b)\n _\bp_\ba_\br_\bs_\be_\b__\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b(_\b)\n _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\be_\be_\br_\b__\be_\bq_\bu_\ba_\bl_\b(_\b)\n _\bt_\br_\bu_\bn_\bc_\ba_\bt_\be_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n _\bv_\be_\br_\bs_\bi_\bo_\bn_\b(_\b)\n _\bs_\bo_\bc_\bk_\be_\bt_\b__\bt_\by_\bp_\be_\b__\bt\n _\bp_\br_\bo_\bt_\bo_\bc_\bo_\bl_\b__\bv_\be_\br_\bs_\bi_\bo_\bn\n@@ -59,30 +59,30 @@\n _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\bi_\bn_\bf_\bo_\bh_\ba_\bs_\bh\n _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt\n _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by\n Settings\n _\bo_\bv_\be_\br_\bv_\bi_\be_\bw\n _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk\n _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b__\bf_\bi_\bn_\bg_\be_\br_\bp_\br_\bi_\bn_\bt_\b(_\b)\n-_\bh_\bi_\bg_\bh_\b__\bp_\be_\br_\bf_\bo_\br_\bm_\ba_\bn_\bc_\be_\b__\bs_\be_\be_\bd_\b(_\b)\n _\bm_\bi_\bn_\b__\bm_\be_\bm_\bo_\br_\by_\b__\bu_\bs_\ba_\bg_\be_\b(_\b)\n+_\bh_\bi_\bg_\bh_\b__\bp_\be_\br_\bf_\bo_\br_\bm_\ba_\bn_\bc_\be_\b__\bs_\be_\be_\bd_\b(_\b)\n _\bn_\ba_\bm_\be_\b__\bf_\bo_\br_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\b(_\b)\n _\bs_\be_\bt_\bt_\bi_\bn_\bg_\b__\bb_\by_\b__\bn_\ba_\bm_\be_\b(_\b)\n _\bd_\be_\bf_\ba_\bu_\bl_\bt_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b)\n DHT\n _\bd_\bh_\bt_\b__\bs_\bt_\ba_\bt_\be\n _\bd_\bh_\bt_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bc_\bo_\bu_\bn_\bt_\be_\br_\bs\n _\bd_\bh_\bt_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n _\bs_\bi_\bg_\bn_\b__\bm_\bu_\bt_\ba_\bb_\bl_\be_\b__\bi_\bt_\be_\bm_\b(_\b)\n _\bd_\bh_\bt_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bc_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bo_\br_\b(_\b)\n _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\bf_\bl_\ba_\bg_\bs_\b__\bt\n Resume Data\n _\br_\be_\ba_\bd_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)\n-_\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\bb_\bu_\bf_\b(_\b)\n _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)\n+_\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\bb_\bu_\bf_\b(_\b)\n _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b__\bb_\bu_\bf_\b(_\b)\n _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)\n _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b__\bt\n Error Codes\n _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\be_\br_\br_\bo_\br\n _\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bc_\ba_\bt_\be_\bg_\bo_\br_\by_\b(_\b)\n _\bh_\bt_\bt_\bp_\b__\bc_\ba_\bt_\be_\bg_\bo_\br_\by_\b(_\b)\n"}]}, {"source1": "./usr/share/doc/libtorrent-rasterbar-doc/html/single-page-ref.html", "source2": "./usr/share/doc/libtorrent-rasterbar-doc/html/single-page-ref.html", "unified_diff": "@@ -55,59 +55,59 @@\n
  • enum error_code_enum
  • \n
  • session_params\n
  • \n
  • session_proxy\n
  • \n
  • session\n
  • \n
  • session_handle\n
  • \n
  • read_session_params() write_session_params_buf() write_session_params()
  • \n
  • web_seed_entry\n
  • \n
  • load_torrent_limits
  • \n
  • torrent_info\n
  • \n
  • torrent_plugin\n
  • \n
  • peer_plugin\n
  • \n
  • storage_params
  • \n@@ -286,75 +286,75 @@\n
  • posix_disk_io_constructor()
  • \n
  • default_disk_io_constructor()
  • \n
  • enum storage_mode_t
  • \n
  • enum status_t
  • \n
  • enum move_flags_t
  • \n
  • client_data_t\n
  • \n
  • add_torrent_params
  • \n
  • peer_class_info
  • \n
  • peer_class_type_filter\n
  • \n
  • block_info\n
  • \n
  • partial_piece_info
  • \n
  • torrent_handle\n
  • \n
  • hash_value()
  • \n@@ -461,15 +461,15 @@\n
  • piece_finished_alert
  • \n
  • request_dropped_alert
  • \n
  • block_timeout_alert
  • \n
  • block_finished_alert
  • \n
  • block_downloading_alert
  • \n
  • unwanted_block_alert
  • \n
  • storage_moved_alert\n
  • \n
  • storage_moved_failed_alert\n
  • \n
  • torrent_deleted_alert
  • \n@@ -593,15 +593,15 @@\n
  • tracker_list_alert
  • \n
  • alert_cast()
  • \n
  • operation_name()
  • \n
  • enum operation_t
  • \n
  • alert_category_t
  • \n
  • int
  • \n
  • counters\n
  • \n
  • stats_metric
  • \n
  • session_stats_metrics()
  • \n
  • find_metric_idx()
  • \n
  • enum metric_type_t
  • \n
  • ip_filter\n
  • \n
  • add_files()
  • \n
  • set_piece_hashes()
  • \n
  • bitfield\n
  • \n
  • hasher256\n
  • \n
  • torrent_status\n
  • \n
  • announce_infohash
  • \n
  • announce_endpoint
  • \n
  • announce_entry\n
  • \n
  • settings_pack\n
  • \n
  • sign_mutable_item()
  • \n
  • dht_default_storage_constructor()
  • \n
  • announce_flags_t
  • \n
  • read_resume_data()
  • \n-
  • write_resume_data_buf() write_resume_data()
  • \n+
  • write_resume_data() write_resume_data_buf()
  • \n
  • write_torrent_file() write_torrent_file_buf()
  • \n
  • write_torrent_flags_t
  • \n
  • ed25519_create_seed()
  • \n
  • ed25519_create_keypair()
  • \n
  • ed25519_sign()
  • \n
  • ed25519_verify()
  • \n
  • ed25519_add_scalar()
  • \n@@ -2134,17 +2134,17 @@\n

    session_params

    \n

    Declared in "libtorrent/session_params.hpp"

    \n

    The session_params is a parameters pack for configuring the session\n before it's started.

    \n
    \n struct session_params\n {\n-   session_params (settings_pack const& sp);\n-   session_params (settings_pack&& sp);\n    session_params ();\n+   session_params (settings_pack&& sp);\n+   session_params (settings_pack const& sp);\n    session_params (settings_pack const& sp\n       , std::vector<std::shared_ptr<plugin>> exts);\n    session_params (settings_pack&& sp\n       , std::vector<std::shared_ptr<plugin>> exts);\n \n    settings_pack settings;\n    std::vector<std::shared_ptr<plugin>> extensions;\n@@ -2154,17 +2154,17 @@\n    std::map<std::string, std::string> ext_state;\n    libtorrent::ip_filter ip_filter;\n };\n 
    \n [report issue]
    \n

    session_params()

    \n
    \n-session_params (settings_pack const& sp);\n-session_params (settings_pack&& sp);\n session_params ();\n+session_params (settings_pack&& sp);\n+session_params (settings_pack const& sp);\n 
    \n

    This constructor can be used to start with the default plugins\n (ut_metadata, ut_pex and smart_ban). Pass a settings_pack to set the\n initial settings when the session starts.

    \n [report issue]
    \n
    \n

    session_params()

    \n@@ -2218,33 +2218,33 @@\n synchronize the completion of the shutdown. The lifetime of this object\n may outlive session, causing the session destructor to not block. The\n session_proxy destructor will block however, until the underlying session\n is done shutting down.

    \n
    \n struct session_proxy\n {\n-   ~session_proxy ();\n    session_proxy (session_proxy&&) noexcept;\n-   session_proxy (session_proxy const&);\n-   session_proxy ();\n    session_proxy& operator= (session_proxy const&) &;\n+   ~session_proxy ();\n    session_proxy& operator= (session_proxy&&) & noexcept;\n+   session_proxy ();\n+   session_proxy (session_proxy const&);\n };\n 
    \n+\n \n-\n-[report issue]
    \n-

    ~session_proxy() session_proxy() operator=()

    \n+[report issue]
    \n+

    operator=() ~session_proxy() session_proxy()

    \n
    \n-~session_proxy ();\n session_proxy (session_proxy&&) noexcept;\n-session_proxy (session_proxy const&);\n-session_proxy ();\n session_proxy& operator= (session_proxy const&) &;\n+~session_proxy ();\n session_proxy& operator= (session_proxy&&) & noexcept;\n+session_proxy ();\n+session_proxy (session_proxy const&);\n 
    \n

    default constructor, does not refer to any session\n implementation object.

    \n [report issue]
    \n
    \n
    \n

    session

    \n@@ -2258,52 +2258,52 @@\n session_handle::apply_settings() member function. To change one or more\n configuration options, create a settings_pack. object and fill it with\n the settings to be set and pass it in to session::apply_settings().

    \n

    see apply_settings().

    \n
    \n struct session : session_handle\n {\n-   session ();\n+   session (session_params const& params, session_flags_t flags);\n    explicit session (session_params const& params);\n+   session ();\n    explicit session (session_params&& params);\n-   session (session_params const& params, session_flags_t flags);\n    session (session_params&& params, session_flags_t flags);\n-   session (session_params const& params, io_context& ios, session_flags_t);\n    session (session_params&& params, io_context& ios);\n-   session (session_params const& params, io_context& ios);\n    session (session_params&& params, io_context& ios, session_flags_t);\n+   session (session_params const& params, io_context& ios);\n+   session (session_params const& params, io_context& ios, session_flags_t);\n    ~session ();\n    session_proxy abort ();\n };\n 
    \n [report issue]
    \n

    session()

    \n
    \n-session ();\n+session (session_params const& params, session_flags_t flags);\n explicit session (session_params const& params);\n+session ();\n explicit session (session_params&& params);\n-session (session_params const& params, session_flags_t flags);\n session (session_params&& params, session_flags_t flags);\n 
    \n

    Constructs the session objects which acts as the container of torrents.\n In order to avoid a race condition between starting the session and\n configuring it, you can pass in a session_params object. Its settings\n will take effect before the session starts up.

    \n

    The overloads taking flags can be used to start a session in\n paused mode (by passing in session::paused). Note that\n add_default_plugins do not have an affect on constructors that\n take a session_params object. It already contains the plugins to use.

    \n [report issue]
    \n
    \n

    session()

    \n
    \n-session (session_params const& params, io_context& ios, session_flags_t);\n session (session_params&& params, io_context& ios);\n-session (session_params const& params, io_context& ios);\n session (session_params&& params, io_context& ios, session_flags_t);\n+session (session_params const& params, io_context& ios);\n+session (session_params const& params, io_context& ios, session_flags_t);\n 
    \n

    Overload of the constructor that takes an external io_context to run\n the session object on. This is primarily useful for tests that may want\n to run multiple sessions on a single io_context, or low resource\n systems where additional threads are expensive and sharing an\n io_context with other events is fine.

    \n
    \n@@ -2358,77 +2358,77 @@\n any operation on it will throw a system_error exception, with error code\n invalid_session_handle.

    \n
    \n struct session_handle\n {\n    bool is_valid () const;\n    session_params session_state (save_state_flags_t flags = save_state_flags_t::all()) const;\n-   void refresh_torrent_status (std::vector<torrent_status>* ret\n-      , status_flags_t flags = {}) const;\n    std::vector<torrent_status> get_torrent_status (\n       std::function<bool(torrent_status const&)> const& pred\n       , status_flags_t flags = {}) const;\n+   void refresh_torrent_status (std::vector<torrent_status>* ret\n+      , status_flags_t flags = {}) const;\n    void post_torrent_updates (status_flags_t flags = status_flags_t::all());\n    void post_session_stats ();\n    void post_dht_stats ();\n    void set_dht_state (dht::dht_state const& st);\n    void set_dht_state (dht::dht_state&& st);\n-   std::vector<torrent_handle> get_torrents () const;\n    torrent_handle find_torrent (sha1_hash const& info_hash) const;\n+   std::vector<torrent_handle> get_torrents () const;\n    torrent_handle add_torrent (add_torrent_params&& params);\n+   void async_add_torrent (add_torrent_params&& params);\n    torrent_handle add_torrent (add_torrent_params const& params);\n+   torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n    torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n-   void async_add_torrent (add_torrent_params&& params);\n    void async_add_torrent (add_torrent_params const& params);\n-   torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n    void resume ();\n    bool is_paused () const;\n    void pause ();\n    bool is_dht_running () const;\n    void set_dht_storage (dht::dht_storage_constructor_type sc);\n    void add_dht_node (std::pair<std::string, int> const& node);\n    void dht_get_item (sha1_hash const& target);\n    void dht_get_item (std::array<char, 32> key\n       , std::string salt = std::string());\n    sha1_hash dht_put_item (entry data);\n    void dht_put_item (std::array<char, 32> key\n       , std::function<void(entry&, std::array<char, 64>&\n       , std::int64_t&, std::string const&)> cb\n       , std::string salt = std::string());\n-   void dht_get_peers (sha1_hash const& info_hash);\n    void dht_announce (sha1_hash const& info_hash, int port = 0, dht::announce_flags_t flags = {});\n+   void dht_get_peers (sha1_hash const& info_hash);\n    void dht_live_nodes (sha1_hash const& nid);\n    void dht_sample_infohashes (udp::endpoint const& ep, sha1_hash const& target);\n    void dht_direct_request (udp::endpoint const& ep, entry const& e, client_data_t userdata = {});\n    void add_extension (std::shared_ptr<plugin> ext);\n    void add_extension (std::function<std::shared_ptr<torrent_plugin>(\n       torrent_handle const&, client_data_t)> ext);\n    ip_filter get_ip_filter () const;\n    void set_ip_filter (ip_filter f);\n    void set_port_filter (port_filter const& f);\n+   bool is_listening () const;\n    unsigned short listen_port () const;\n    unsigned short ssl_listen_port () const;\n-   bool is_listening () const;\n-   void set_peer_class_filter (ip_filter const& f);\n    ip_filter get_peer_class_filter () const;\n+   void set_peer_class_filter (ip_filter const& f);\n    void set_peer_class_type_filter (peer_class_type_filter const& f);\n    peer_class_type_filter get_peer_class_type_filter () const;\n    peer_class_t create_peer_class (char const* name);\n    void delete_peer_class (peer_class_t cid);\n-   void set_peer_class (peer_class_t cid, peer_class_info const& pci);\n    peer_class_info get_peer_class (peer_class_t cid) const;\n+   void set_peer_class (peer_class_t cid, peer_class_info const& pci);\n    void remove_torrent (const torrent_handle&, remove_flags_t = {});\n-   void apply_settings (settings_pack&&);\n    settings_pack get_settings () const;\n+   void apply_settings (settings_pack&&);\n    void apply_settings (settings_pack const&);\n+   void pop_alerts (std::vector<alert*>* alerts);\n    alert* wait_for_alert (time_duration max_wait);\n    void set_alert_notify (std::function<void()> const& fun);\n-   void pop_alerts (std::vector<alert*>* alerts);\n-   void delete_port_mapping (port_mapping_t handle);\n    std::vector<port_mapping_t> add_port_mapping (portmap_protocol t, int external_port, int local_port);\n+   void delete_port_mapping (port_mapping_t handle);\n    void reopen_network_sockets (reopen_network_flags_t options = reopen_map_ports);\n    std::shared_ptr<aux::session_impl> native_handle () const;\n \n    static constexpr save_state_flags_t save_settings  = 0_bit;\n    static constexpr save_state_flags_t save_dht_state  = 2_bit;\n    static constexpr save_state_flags_t save_extension_state  = 11_bit;\n    static constexpr save_state_flags_t save_ip_filter  = 12_bit;\n@@ -2460,24 +2460,24 @@\n 

    returns the current session state. This can be passed to\n write_session_params() to save the state to disk and restored using\n read_session_params() when constructing a new session. The kind of\n state that's included is all settings, the DHT routing table, possibly\n plugin-specific state.\n the flags parameter can be used to only save certain parts of the\n session state

    \n-\n-[report issue]
    \n-
    \n-

    get_torrent_status() refresh_torrent_status()

    \n+\n+[report issue]
    \n+
    \n+

    refresh_torrent_status() get_torrent_status()

    \n
    \n-void refresh_torrent_status (std::vector<torrent_status>* ret\n-      , status_flags_t flags = {}) const;\n std::vector<torrent_status> get_torrent_status (\n       std::function<bool(torrent_status const&)> const& pred\n       , status_flags_t flags = {}) const;\n+void refresh_torrent_status (std::vector<torrent_status>* ret\n+      , status_flags_t flags = {}) const;\n 
    \n
    \n

    Note

    \n

    these calls are potentially expensive and won't scale well with\n lots of torrents. If you're concerned about performance, consider\n using post_torrent_updates() instead.

    \n
    \n@@ -2552,16 +2552,16 @@\n next time the DHT is started, as if it had been passed in via the\n session_params on startup.

    \n \n [report issue]
    \n
    \n

    find_torrent() get_torrents()

    \n
    \n-std::vector<torrent_handle> get_torrents () const;\n torrent_handle find_torrent (sha1_hash const& info_hash) const;\n+std::vector<torrent_handle> get_torrents () const;\n 
    \n

    find_torrent() looks for a torrent with the given info-hash. In\n case there is such a torrent in the session, a torrent_handle to that\n torrent is returned. In case the torrent cannot be found, an invalid\n torrent_handle is returned.

    \n

    See torrent_handle::is_valid() to know if the torrent was found or\n not.

    \n@@ -2569,19 +2569,19 @@\n torrents currently in the session.

    \n \n [report issue]
    \n
    \n

    async_add_torrent() add_torrent()

    \n
    \n torrent_handle add_torrent (add_torrent_params&& params);\n+void async_add_torrent (add_torrent_params&& params);\n torrent_handle add_torrent (add_torrent_params const& params);\n+torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n torrent_handle add_torrent (add_torrent_params&& params, error_code& ec);\n-void async_add_torrent (add_torrent_params&& params);\n void async_add_torrent (add_torrent_params const& params);\n-torrent_handle add_torrent (add_torrent_params const& params, error_code& ec);\n 
    \n

    You add torrents through the add_torrent() function where you give an\n object with all the parameters. The add_torrent() overloads will block\n until the torrent has been added (or failed to be added) and returns\n an error code and a torrent_handle. In order to add torrents more\n efficiently, consider using async_add_torrent() which returns\n immediately, without waiting for the torrent to add. Notification of\n@@ -2606,19 +2606,19 @@\n want to control are torrent_flags::paused and\n torrent_flags::auto_managed. In order to add a magnet link that will\n just download the metadata, but no payload, set the\n torrent_flags::upload_mode flag.

    \n

    Special consideration has to be taken when adding hybrid torrents\n (i.e. torrents that are BitTorrent v2 torrents that are backwards\n compatible with v1). For more details, see BitTorrent v2 torrents.

    \n-\n \n-[report issue]
    \n-
    \n-

    is_paused() resume() pause()

    \n+\n+[report issue]
    \n+
    \n+

    resume() pause() is_paused()

    \n
    \n void resume ();\n bool is_paused () const;\n void pause ();\n 
    \n

    Pausing the session has the same effect as pausing every torrent in\n it, except that torrents will not be resumed by the auto-manage\n@@ -2730,21 +2730,21 @@\n with the function object's context and make the function entirely\n self-contained. The only reason data blob's value is computed\n via a function instead of just passing in the new value is to avoid\n race conditions. If you want to update the value in the DHT, you\n must first retrieve it, then modify it, then write it back. The way\n the DHT works, it is natural to always do a lookup before storing and\n calling the callback in between is convenient.

    \n-\n-[report issue]
    \n-
    \n-

    dht_get_peers() dht_announce()

    \n+\n+[report issue]
    \n+
    \n+

    dht_announce() dht_get_peers()

    \n
    \n-void dht_get_peers (sha1_hash const& info_hash);\n void dht_announce (sha1_hash const& info_hash, int port = 0, dht::announce_flags_t flags = {});\n+void dht_get_peers (sha1_hash const& info_hash);\n 
    \n

    dht_get_peers() will issue a DHT get_peer request to the DHT for the\n specified info-hash. The response (the peers) will be posted back in a\n dht_get_peers_reply_alert.

    \n

    dht_announce() will issue a DHT announce request to the DHT to the\n specified info-hash, advertising the specified port. If the port is\n left at its default, 0, the port will be implied by the DHT message's\n@@ -2827,18 +2827,18 @@\n that sends bad data with very high accuracy. Should\n eliminate most problems on poisoned torrents.\n \n

    \n #include <libtorrent/extensions/smart_ban.hpp>\n ses.add_extension(&lt::create_smart_ban_plugin);\n 
    \n-\n-[report issue]
    \n-
    \n-

    set_ip_filter() get_ip_filter()

    \n+\n+[report issue]
    \n+
    \n+

    get_ip_filter() set_ip_filter()

    \n
    \n ip_filter get_ip_filter () const;\n void set_ip_filter (ip_filter f);\n 
    \n

    Sets a filter that will be used to reject and accept incoming as well\n as outgoing connections based on their originating ip address. The\n default filter will allow connections to any ip address. To build a\n@@ -2852,37 +2852,37 @@\n

    \n void set_port_filter (port_filter const& f);\n 
    \n

    apply port_filter f to incoming and outgoing peers. a port filter\n will reject making outgoing peer connections to certain remote ports.\n The main intention is to be able to avoid triggering certain\n anti-virus software by connecting to SMTP, FTP ports.

    \n+\n \n-\n-[report issue]
    \n-
    \n-

    ssl_listen_port() listen_port() is_listening()

    \n+[report issue]
    \n+
    \n+

    is_listening() ssl_listen_port() listen_port()

    \n
    \n+bool is_listening () const;\n unsigned short listen_port () const;\n unsigned short ssl_listen_port () const;\n-bool is_listening () const;\n 
    \n

    is_listening() will tell you whether or not the session has\n successfully opened a listening port. If it hasn't, this function will\n return false, and then you can set a new\n settings_pack::listen_interfaces to try another interface and port to\n bind to.

    \n

    listen_port() returns the port we ended up listening on.

    \n \n [report issue]
    \n
    \n

    get_peer_class_filter() set_peer_class_filter()

    \n
    \n-void set_peer_class_filter (ip_filter const& f);\n ip_filter get_peer_class_filter () const;\n+void set_peer_class_filter (ip_filter const& f);\n 
    \n

    Sets the peer class filter for this session. All new peer connections\n will take this into account and be added to the peer classes specified\n by this filter, based on the peer's IP address.

    \n

    The ip-filter essentially maps an IP -> uint32. Each bit in that 32\n bit integer represents a peer class. The least significant bit\n represents class 0, the next bit class 1 and so on.

    \n@@ -2960,16 +2960,16 @@\n destructs.

    \n

    For more information on peer classes, see peer classes.

    \n \n [report issue]
    \n
    \n

    get_peer_class() set_peer_class()

    \n
    \n-void set_peer_class (peer_class_t cid, peer_class_info const& pci);\n peer_class_info get_peer_class (peer_class_t cid) const;\n+void set_peer_class (peer_class_t cid, peer_class_info const& pci);\n 
    \n

    These functions queries information from a peer class and updates the\n configuration of a peer class, respectively.

    \n

    cid must refer to an existing peer class. If it does not, the\n return value of get_peer_class() is undefined.

    \n

    set_peer_class() sets all the information in the\n peer_class_info object in the specified peer class. There is no\n@@ -3009,35 +3009,35 @@\n handle.save_resume_data();\n

    Note that when a queued or downloading torrent is removed, its position\n in the download queue is vacated and every subsequent torrent in the\n queue has their queue positions updated. This can potentially cause a\n large state_update to be posted. When removing all torrents, it is\n advised to remove them from the back of the queue, to minimize the\n shifting.

    \n-\n-[report issue]
    \n-
    \n-

    get_settings() apply_settings()

    \n+\n+[report issue]
    \n+
    \n+

    apply_settings() get_settings()

    \n
    \n-void apply_settings (settings_pack&&);\n settings_pack get_settings () const;\n+void apply_settings (settings_pack&&);\n void apply_settings (settings_pack const&);\n 
    \n

    Applies the settings specified by the settings_pack s. This is an\n asynchronous operation that will return immediately and actually apply\n the settings to the main thread of libtorrent some time later.

    \n-\n \n-[report issue]
    \n-
    \n-

    set_alert_notify() wait_for_alert() pop_alerts()

    \n+\n+[report issue]
    \n+
    \n+

    wait_for_alert() pop_alerts() set_alert_notify()

    \n
    \n+void pop_alerts (std::vector<alert*>* alerts);\n alert* wait_for_alert (time_duration max_wait);\n void set_alert_notify (std::function<void()> const& fun);\n-void pop_alerts (std::vector<alert*>* alerts);\n 
    \n

    Alerts is the main mechanism for libtorrent to report errors and\n events. pop_alerts fills in the vector passed to it with pointers\n to new alerts. The session still owns these alerts and they will stay\n valid until the next time pop_alerts is called. You may not delete\n the alert objects.

    \n

    It is safe to call pop_alerts from multiple different threads, as\n@@ -3083,21 +3083,21 @@\n message to an HWND or some other main message pump. The actual\n retrieval of alerts should not be done in the callback. In fact, the\n callback should not block. It should not perform any expensive work.\n It really should just notify the main application thread.

    \n

    The type of an alert is returned by the polymorphic function\n alert::type() but can also be queries from a concrete type via\n T::alert_type, as a static constant.

    \n-\n-[report issue]
    \n-
    \n-

    delete_port_mapping() add_port_mapping()

    \n+\n+[report issue]
    \n+
    \n+

    add_port_mapping() delete_port_mapping()

    \n
    \n-void delete_port_mapping (port_mapping_t handle);\n std::vector<port_mapping_t> add_port_mapping (portmap_protocol t, int external_port, int local_port);\n+void delete_port_mapping (port_mapping_t handle);\n 
    \n

    add_port_mapping adds one or more port forwards on UPnP and/or NAT-PMP,\n whichever is enabled. A mapping is created for each listen socket\n in the session. The return values are all handles referring to the\n port mappings that were just created. Pass them to delete_port_mapping()\n to remove them.

    \n [report issue]
    \n@@ -3171,19 +3171,19 @@\n \n [report issue]
    \n
    \n
    \n

    read_session_params() write_session_params_buf() write_session_params()

    \n

    Declared in "libtorrent/session_params.hpp"

    \n
    \n-session_params read_session_params (span<char const> buf\n+entry write_session_params (session_params const& sp\n    , save_state_flags_t flags = save_state_flags_t::all());\n std::vector<char> write_session_params_buf (session_params const& sp\n    , save_state_flags_t flags = save_state_flags_t::all());\n-entry write_session_params (session_params const& sp\n+session_params read_session_params (span<char const> buf\n    , save_state_flags_t flags = save_state_flags_t::all());\n session_params read_session_params (bdecode_node const& e\n    , save_state_flags_t flags = save_state_flags_t::all());\n 
    \n

    These functions serialize and de-serialize a session_params object to and\n from bencoded form. The session_params object is used to initialize a new\n session using the state from a previous one (or by programmatically configure\n@@ -3314,58 +3314,58 @@\n

    \n

    torrent_info

    \n

    Declared in "libtorrent/torrent_info.hpp"

    \n

    the torrent_info class holds the information found in a .torrent file.

    \n
    \n class torrent_info\n {\n-   torrent_info (span<char const> buffer, load_torrent_limits const& cfg, from_span_t);\n-   torrent_info (char const* buffer, int size);\n-   explicit torrent_info (info_hash_t const& info_hash);\n-   explicit torrent_info (bdecode_node const& torrent_file);\n-   torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n-   torrent_info (std::string const& filename, error_code& ec);\n-   torrent_info (bdecode_node const& torrent_file, error_code& ec);\n    torrent_info (span<char const> buffer, error_code& ec, from_span_t);\n+   torrent_info (char const* buffer, int size);\n    torrent_info (bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n-   explicit torrent_info (span<char const> buffer, from_span_t);\n-   torrent_info (char const* buffer, int size, error_code& ec);\n    explicit torrent_info (std::string const& filename);\n    torrent_info (torrent_info const& t);\n+   explicit torrent_info (bdecode_node const& torrent_file);\n+   torrent_info (bdecode_node const& torrent_file, error_code& ec);\n+   explicit torrent_info (info_hash_t const& info_hash);\n+   torrent_info (char const* buffer, int size, error_code& ec);\n+   torrent_info (std::string const& filename, error_code& ec);\n+   explicit torrent_info (span<char const> buffer, from_span_t);\n+   torrent_info (span<char const> buffer, load_torrent_limits const& cfg, from_span_t);\n+   torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n    ~torrent_info ();\n    file_storage const& orig_files () const;\n    file_storage const& files () const;\n    void rename_file (file_index_t index, std::string const& new_filename);\n    void remap_files (file_storage const& f);\n+   std::vector<announce_entry> const& trackers () const;\n    void add_tracker (std::string const& url, int tier = 0);\n-   void clear_trackers ();\n    void add_tracker (std::string const& url, int tier\n       , announce_entry::tracker_source source);\n-   std::vector<announce_entry> const& trackers () const;\n-   std::vector<std::string> collections () const;\n+   void clear_trackers ();\n    std::vector<sha1_hash> similar_torrents () const;\n-   void set_web_seeds (std::vector<web_seed_entry> seeds);\n+   std::vector<std::string> collections () const;\n    std::vector<web_seed_entry> const& web_seeds () const;\n    void add_http_seed (std::string const& url\n       , std::string const& extern_auth = std::string()\n       , web_seed_entry::headers_t const& extra_headers = web_seed_entry::headers_t());\n    void add_url_seed (std::string const& url\n       , std::string const& ext_auth = std::string()\n       , web_seed_entry::headers_t const& ext_headers = web_seed_entry::headers_t());\n+   void set_web_seeds (std::vector<web_seed_entry> seeds);\n    std::int64_t total_size () const;\n    int num_pieces () const;\n    int piece_length () const;\n    int blocks_per_piece () const;\n+   index_range<piece_index_t> piece_range () const;\n    piece_index_t last_piece () const;\n    piece_index_t end_piece () const;\n-   index_range<piece_index_t> piece_range () const;\n    sha1_hash info_hash () const noexcept;\n    info_hash_t const& info_hashes () const;\n-   bool v2 () const;\n    bool v1 () const;\n+   bool v2 () const;\n    int num_files () const;\n    std::vector<file_slice> map_block (piece_index_t const piece\n       , std::int64_t offset, int size) const;\n    peer_request map_file (file_index_t const file, std::int64_t offset, int size) const;\n    string_view ssl_cert () const;\n    bool is_valid () const;\n    bool priv () const;\n@@ -3386,27 +3386,27 @@\n    span<char const> piece_layer (file_index_t) const;\n    void free_piece_layers ();\n };\n 
    \n [report issue]
    \n

    torrent_info()

    \n
    \n-torrent_info (span<char const> buffer, load_torrent_limits const& cfg, from_span_t);\n-torrent_info (char const* buffer, int size);\n-explicit torrent_info (info_hash_t const& info_hash);\n-explicit torrent_info (bdecode_node const& torrent_file);\n-torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n-torrent_info (std::string const& filename, error_code& ec);\n-torrent_info (bdecode_node const& torrent_file, error_code& ec);\n torrent_info (span<char const> buffer, error_code& ec, from_span_t);\n+torrent_info (char const* buffer, int size);\n torrent_info (bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n-explicit torrent_info (span<char const> buffer, from_span_t);\n-torrent_info (char const* buffer, int size, error_code& ec);\n explicit torrent_info (std::string const& filename);\n torrent_info (torrent_info const& t);\n+explicit torrent_info (bdecode_node const& torrent_file);\n+torrent_info (bdecode_node const& torrent_file, error_code& ec);\n+explicit torrent_info (info_hash_t const& info_hash);\n+torrent_info (char const* buffer, int size, error_code& ec);\n+torrent_info (std::string const& filename, error_code& ec);\n+explicit torrent_info (span<char const> buffer, from_span_t);\n+torrent_info (span<char const> buffer, load_torrent_limits const& cfg, from_span_t);\n+torrent_info (std::string const& filename, load_torrent_limits const& cfg);\n 
    \n

    The constructor that takes an info-hash will initialize the info-hash\n to the given value, but leave all other fields empty. This is used\n internally when downloading torrents without the metadata. The\n metadata will be created by libtorrent as soon as it has been\n downloaded from the swarm.

    \n

    The constructor that takes a bdecode_node will create a torrent_info\n@@ -3435,18 +3435,18 @@\n [report issue]

    \n
    \n

    ~torrent_info()

    \n
    \n ~torrent_info ();\n 
    \n

    frees all storage associated with this torrent_info object

    \n-\n-[report issue]
    \n-
    \n-

    files() orig_files()

    \n+\n+[report issue]
    \n+
    \n+

    orig_files() files()

    \n
    \n file_storage const& orig_files () const;\n file_storage const& files () const;\n 
    \n

    The file_storage object contains the information on how to map the\n pieces to files. It is separated from the torrent_info object because\n when creating torrents a storage object needs to be created without\n@@ -3493,25 +3493,25 @@\n

    \n

    Remaps the file storage to a new file layout. This can be used to, for\n instance, download all data in a torrent to a single file, or to a\n number of fixed size sector aligned files, regardless of the number\n and sizes of the files in the torrent.

    \n

    The new specified file_storage must have the exact same size as\n the current one.

    \n-\n \n-[report issue]
    \n-
    \n-

    clear_trackers() trackers() add_tracker()

    \n+\n+[report issue]
    \n+
    \n+

    trackers() add_tracker() clear_trackers()

    \n
    \n+std::vector<announce_entry> const& trackers () const;\n void add_tracker (std::string const& url, int tier = 0);\n-void clear_trackers ();\n void add_tracker (std::string const& url, int tier\n       , announce_entry::tracker_source source);\n-std::vector<announce_entry> const& trackers () const;\n+void clear_trackers ();\n 
    \n

    add_tracker() adds a tracker to the announce-list. The tier\n determines the order in which the trackers are to be tried.\n The trackers() function will return a sorted vector of\n announce_entry. Each announce entry contains a string, which is\n the tracker url, and a tier index. The tier index is the high-level\n priority. No matter which trackers that works or not, the ones with\n@@ -3520,37 +3520,37 @@\n

    trackers() returns all entries from announce-list.

    \n

    clear_trackers() removes all trackers from announce-list.

    \n \n [report issue]
    \n
    \n

    collections() similar_torrents()

    \n
    \n-std::vector<std::string> collections () const;\n std::vector<sha1_hash> similar_torrents () const;\n+std::vector<std::string> collections () const;\n 
    \n

    These two functions are related to BEP 38 (mutable torrents). The\n vectors returned from these correspond to the "similar" and\n "collections" keys in the .torrent file. Both info-hashes and\n collections from within the info-dict and from outside of it are\n included.

    \n-\n-\n \n-[report issue]
    \n-
    \n-

    set_web_seeds() add_url_seed() add_http_seed() web_seeds()

    \n+\n+\n+[report issue]
    \n+
    \n+

    add_http_seed() set_web_seeds() web_seeds() add_url_seed()

    \n
    \n-void set_web_seeds (std::vector<web_seed_entry> seeds);\n std::vector<web_seed_entry> const& web_seeds () const;\n void add_http_seed (std::string const& url\n       , std::string const& extern_auth = std::string()\n       , web_seed_entry::headers_t const& extra_headers = web_seed_entry::headers_t());\n void add_url_seed (std::string const& url\n       , std::string const& ext_auth = std::string()\n       , web_seed_entry::headers_t const& ext_headers = web_seed_entry::headers_t());\n+void set_web_seeds (std::vector<web_seed_entry> seeds);\n 
    \n

    web_seeds() returns all url seeds and http seeds in the torrent.\n Each entry is a web_seed_entry and may refer to either a url seed\n or http seed.

    \n

    add_url_seed() and add_http_seed() adds one url to the list of\n url/http seeds.

    \n

    set_web_seeds() replaces all web seeds with the ones specified in\n@@ -3594,22 +3594,22 @@\n

    blocks_per_piece()

    \n
    \n int blocks_per_piece () const;\n 
    \n

    returns the number of blocks there are in the typical piece. There\n may be fewer in the last piece)

    \n \n-\n-[report issue]
    \n-
    \n-

    end_piece() last_piece() piece_range()

    \n+\n+[report issue]
    \n+
    \n+

    end_piece() piece_range() last_piece()

    \n
    \n+index_range<piece_index_t> piece_range () const;\n piece_index_t last_piece () const;\n piece_index_t end_piece () const;\n-index_range<piece_index_t> piece_range () const;\n 
    \n

    last_piece() returns the index to the last piece in the torrent and\n end_piece() returns the index to the one-past-end piece in the\n torrent\n piece_range() returns an implementation-defined type that can be\n used as the container in a range-for loop. Where the values are the\n indices of all pieces in the file_storage.

    \n@@ -3625,16 +3625,16 @@\n info_hashes() to get an object that may hold both a v1 and v2\n info-hash

    \n \n [report issue]
    \n
    \n

    v1() v2()

    \n
    \n-bool v2 () const;\n bool v1 () const;\n+bool v2 () const;\n 
    \n

    returns whether this torrent has v1 and/or v2 metadata, respectively.\n Hybrid torrents have both. These are shortcuts for\n info_hashes().has_v1() and info_hashes().has_v2() calls.

    \n [report issue]
    \n
    \n

    num_files()

    \n@@ -3707,18 +3707,18 @@\n
    \n

    piece_size()

    \n
    \n int piece_size (piece_index_t index) const;\n 
    \n

    returns the piece size of file with index. This will be the same as piece_length(),\n except for the last piece, which may be shorter.

    \n-\n-[report issue]
    \n-
    \n-

    hash_for_piece() hash_for_piece_ptr()

    \n+\n+[report issue]
    \n+
    \n+

    hash_for_piece_ptr() hash_for_piece()

    \n
    \n char const* hash_for_piece_ptr (piece_index_t const index) const;\n sha1_hash hash_for_piece (piece_index_t index) const;\n 
    \n

    hash_for_piece() takes a piece-index and returns the 20-bytes\n sha1-hash for that piece and info_hash() returns the 20-bytes\n sha1-hash for the info-section of the torrent file.\n@@ -4330,17 +4330,17 @@\n

    If has_v2() is false then the v1 hash might actually be a truncated\n v2 hash

    \n
    \n
    \n struct info_hash_t\n {\n    explicit info_hash_t (sha256_hash h2) noexcept;\n-   explicit info_hash_t (sha1_hash h1) noexcept;\n-   info_hash_t () noexcept = default;\n    info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n+   info_hash_t () noexcept = default;\n+   explicit info_hash_t (sha1_hash h1) noexcept;\n    bool has_v1 () const;\n    bool has_v2 () const;\n    bool has (protocol_version v) const;\n    sha1_hash get (protocol_version v) const;\n    sha1_hash get_best () const;\n    friend bool operator!= (info_hash_t const& lhs, info_hash_t const& rhs);\n    friend bool operator== (info_hash_t const& lhs, info_hash_t const& rhs) noexcept;\n@@ -4352,28 +4352,28 @@\n    sha256_hash v2;\n };\n 
    \n [report issue]
    \n

    info_hash_t()

    \n
    \n explicit info_hash_t (sha256_hash h2) noexcept;\n-explicit info_hash_t (sha1_hash h1) noexcept;\n-info_hash_t () noexcept = default;\n info_hash_t (sha1_hash h1, sha256_hash h2) noexcept;\n+info_hash_t () noexcept = default;\n+explicit info_hash_t (sha1_hash h1) noexcept;\n 
    \n

    The default constructor creates an object that has neither a v1 or v2\n hash.

    \n

    For backwards compatibility, make it possible to construct directly\n from a v1 hash. This constructor allows implicit conversion from a\n v1 hash, but the implicitness is deprecated.

    \n \n-\n-[report issue]
    \n-
    \n-

    has_v2() has_v1() has()

    \n+\n+[report issue]
    \n+
    \n+

    has_v2() has() has_v1()

    \n
    \n bool has_v1 () const;\n bool has_v2 () const;\n bool has (protocol_version v) const;\n 
    \n

    returns true if the corresponding info hash is present in this\n object.

    \n@@ -4453,33 +4453,33 @@\n
    start
    \n
    The byte offset within that piece where the range starts.
    \n \n [report issue]
    \n
    length
    \n
    The size of the range, in bytes.
    \n
    \n+\n \n-\n-[report issue]
    \n+[report issue]
    \n
    \n-
    \n-

    load_torrent_file() load_torrent_parsed() load_torrent_buffer()

    \n+
    \n+

    load_torrent_buffer() load_torrent_file() load_torrent_parsed()

    \n

    Declared in "libtorrent/load_torrent.hpp"

    \n
    \n-add_torrent_params load_torrent_file (\n-   std::string const& filename);\n add_torrent_params load_torrent_buffer (\n    span<char const> buffer);\n+add_torrent_params load_torrent_file (\n+   std::string const& filename);\n+add_torrent_params load_torrent_parsed (\n+   bdecode_node const& torrent_file);\n add_torrent_params load_torrent_buffer (\n    span<char const> buffer, load_torrent_limits const& cfg);\n add_torrent_params load_torrent_file (\n    std::string const& filename, load_torrent_limits const& cfg);\n add_torrent_params load_torrent_parsed (\n-   bdecode_node const& torrent_file);\n-add_torrent_params load_torrent_parsed (\n    bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n 
    \n

    These functions load the content of a .torrent file into an\n add_torrent_params object.\n The immutable part of a torrent file (the info-dictionary) is stored in\n the ti field in the add_torrent_params object (as a torrent_info\n object).\n@@ -4492,17 +4492,17 @@\n \n \n [report issue]

    \n
    \n

    make_magnet_uri()

    \n

    Declared in "libtorrent/magnet_uri.hpp"

    \n
    \n-std::string make_magnet_uri (add_torrent_params const& atp);\n-std::string make_magnet_uri (torrent_handle const& handle);\n std::string make_magnet_uri (torrent_info const& info);\n+std::string make_magnet_uri (torrent_handle const& handle);\n+std::string make_magnet_uri (add_torrent_params const& atp);\n 
    \n

    Generates a magnet URI from the specified torrent.

    \n

    Several fields from the add_torrent_params objects are recorded in the\n magnet link. In order to not include them, they have to be cleared before\n calling make_magnet_uri(). These fields are used:

    \n
    \n ti, info_hashes, url_seeds, dht_nodes,\n@@ -4522,16 +4522,16 @@\n an empty string is returned.

    \n

    For more information about magnet links, see magnet links.

    \n [report issue]
    \n
    \n

    parse_magnet_uri()

    \n

    Declared in "libtorrent/magnet_uri.hpp"

    \n
    \n-add_torrent_params parse_magnet_uri (string_view uri);\n void parse_magnet_uri (string_view uri, add_torrent_params& p, error_code& ec);\n+add_torrent_params parse_magnet_uri (string_view uri);\n add_torrent_params parse_magnet_uri (string_view uri, error_code& ec);\n 
    \n

    This function parses out information from the magnet link and populates the\n add_torrent_params object. The overload that does not take an\n error_code reference will throw a system_error on error\n The overload taking an add_torrent_params reference will fill in the\n fields specified in the magnet URI.

    \n@@ -5397,18 +5397,18 @@\n
    \n

    tick()

    \n
    \n virtual void tick ();\n 
    \n

    This hook is called approximately once per second. It is a way of making it\n easy for plugins to do timed events, for sending messages or whatever.

    \n-\n-[report issue]
    \n-
    \n-

    on_pause() on_resume()

    \n+\n+[report issue]
    \n+
    \n+

    on_resume() on_pause()

    \n
    \n virtual bool on_pause ();\n virtual bool on_resume ();\n 
    \n

    These hooks are called when the torrent is paused and resumed respectively.\n The return value indicates if the event was handled. A return value of\n true indicates that it was handled, and no other plugin after this one\n@@ -5476,43 +5476,43 @@\n {\n virtual string_view type () const;\n virtual void add_handshake (entry&);\n virtual void on_disconnect (error_code const&);\n virtual void on_connected ();\n virtual bool on_handshake (span<char const>);\n virtual bool on_extension_handshake (bdecode_node const&);\n- virtual bool on_request (peer_request const&);\n- virtual bool on_have_all ();\n- virtual bool on_bitfield (bitfield const& /*bitfield*/);\n- virtual bool on_have (piece_index_t);\n- virtual bool on_allowed_fast (piece_index_t);\n virtual bool on_unchoke ();\n+ virtual bool on_interested ();\n+ virtual bool on_dont_have (piece_index_t);\n virtual bool on_have_none ();\n+ virtual bool on_have_all ();\n+ virtual bool on_request (peer_request const&);\n+ virtual bool on_have (piece_index_t);\n virtual bool on_not_interested ();\n+ virtual bool on_allowed_fast (piece_index_t);\n+ virtual bool on_bitfield (bitfield const& /*bitfield*/);\n virtual bool on_choke ();\n- virtual bool on_dont_have (piece_index_t);\n- virtual bool on_interested ();\n virtual bool on_piece (peer_request const& /*piece*/\n , span<char const> /*buf*/);\n- virtual bool on_suggest (piece_index_t);\n virtual bool on_cancel (peer_request const&);\n virtual bool on_reject (peer_request const&);\n- virtual void sent_cancel (peer_request const&);\n- virtual void sent_allow_fast (piece_index_t);\n- virtual void sent_request (peer_request const&);\n+ virtual bool on_suggest (piece_index_t);\n+ virtual void sent_reject_request (peer_request const&);\n virtual void sent_suggest (piece_index_t);\n virtual void sent_have_none ();\n+ virtual void sent_allow_fast (piece_index_t);\n+ virtual void sent_cancel (peer_request const&);\n+ virtual void sent_request (peer_request const&);\n virtual void sent_choke ();\n- virtual void sent_reject_request (peer_request const&);\n virtual void sent_have_all ();\n+ virtual void sent_have (piece_index_t);\n+ virtual void sent_piece (peer_request const&);\n virtual void sent_unchoke ();\n virtual void sent_interested ();\n virtual void sent_not_interested ();\n- virtual void sent_have (piece_index_t);\n- virtual void sent_piece (peer_request const&);\n virtual void sent_payload (int /* bytes */);\n virtual bool can_disconnect (error_code const& /*ec*/);\n virtual bool on_extended (int /*length*/, int /*msg*/,\n span<char const> /*body*/);\n virtual bool on_unknown_message (int /*length*/, int /*msg*/,\n span<char const> /*body*/);\n virtual void on_piece_pass (piece_index_t);\n@@ -5571,38 +5571,38 @@\n

    \n

    called when the extension handshake from the other end is received\n if this returns false, it means that this extension isn't\n supported by this peer. It will result in this peer_plugin\n being removed from the peer_connection and destructed.\n this is not called for web seeds

    \n \n-\n-\n \n-\n-\n-\n+\n \n+\n \n \n-[report issue]
    \n-
    \n-

    on_have_all() on_not_interested() on_interested() on_choke() on_dont_have() on_allowed_fast() on_unchoke() on_have_none() on_bitfield() on_request() on_have()

    \n+\n+\n+\n+[report issue]
    \n+
    \n+

    on_have_all() on_choke() on_not_interested() on_have_none() on_dont_have() on_bitfield() on_request() on_have() on_allowed_fast() on_unchoke() on_interested()

    \n
    \n-virtual bool on_request (peer_request const&);\n-virtual bool on_have_all ();\n-virtual bool on_bitfield (bitfield const& /*bitfield*/);\n-virtual bool on_have (piece_index_t);\n-virtual bool on_allowed_fast (piece_index_t);\n virtual bool on_unchoke ();\n+virtual bool on_interested ();\n+virtual bool on_dont_have (piece_index_t);\n virtual bool on_have_none ();\n+virtual bool on_have_all ();\n+virtual bool on_request (peer_request const&);\n+virtual bool on_have (piece_index_t);\n virtual bool on_not_interested ();\n+virtual bool on_allowed_fast (piece_index_t);\n+virtual bool on_bitfield (bitfield const& /*bitfield*/);\n virtual bool on_choke ();\n-virtual bool on_dont_have (piece_index_t);\n-virtual bool on_interested ();\n 
    \n

    returning true from any of the message handlers\n indicates that the plugin has handled the message.\n it will break the plugin chain traversing and not let\n anyone else handle the message, including the default\n handler.

    \n [report issue]
    \n@@ -5615,26 +5615,26 @@\n

    This function is called when the peer connection is receiving\n a piece. buf points (non-owning pointer) to the data in an\n internal immutable disk buffer. The length of the data is specified\n in the length member of the piece parameter.\n returns true to indicate that the piece is handled and the\n rest of the logic should be ignored.

    \n \n-\n-\n \n-[report issue]
    \n-
    \n-

    sent_have() sent_piece() sent_interested() sent_not_interested() sent_unchoke()

    \n+\n+\n+[report issue]
    \n+
    \n+

    sent_have() sent_not_interested() sent_piece() sent_unchoke() sent_interested()

    \n
    \n+virtual void sent_have (piece_index_t);\n+virtual void sent_piece (peer_request const&);\n virtual void sent_unchoke ();\n virtual void sent_interested ();\n virtual void sent_not_interested ();\n-virtual void sent_have (piece_index_t);\n-virtual void sent_piece (peer_request const&);\n 
    \n

    called after a choke message has been sent to the peer

    \n [report issue]
    \n
    \n

    sent_payload()

    \n
    \n virtual void sent_payload (int /* bytes */);\n@@ -5737,47 +5737,47 @@\n connection object, to be used by plugins. This is a low level interface that\n may not be stable across libtorrent versions

    \n
    \n struct peer_connection_handle\n {\n    explicit peer_connection_handle (std::weak_ptr<peer_connection> impl);\n    connection_type type () const;\n-   void add_extension (std::shared_ptr<peer_plugin>);\n    peer_plugin const* find_plugin (string_view type) const;\n+   void add_extension (std::shared_ptr<peer_plugin>);\n    bool is_seed () const;\n    bool upload_only () const;\n    peer_id const& pid () const;\n    bool has_piece (piece_index_t i) const;\n    bool is_choked () const;\n    bool is_interesting () const;\n-   bool is_peer_interested () const;\n    bool has_peer_choked () const;\n+   bool is_peer_interested () const;\n    void maybe_unchoke_this_peer ();\n    void choke_this_peer ();\n    void get_peer_info (peer_info& p) const;\n    torrent_handle associated_torrent () const;\n    tcp::endpoint const& remote () const;\n    tcp::endpoint local_endpoint () const;\n-   bool is_disconnecting () const;\n+   bool is_outgoing () const;\n    void disconnect (error_code const& ec, operation_t op\n       , disconnect_severity_t = peer_connection_interface::normal);\n-   bool is_outgoing () const;\n+   bool is_disconnecting () const;\n    bool is_connecting () const;\n-   bool ignore_unchoke_slots () const;\n    bool on_local_network () const;\n+   bool ignore_unchoke_slots () const;\n    bool failed () const;\n+   bool should_log (peer_log_alert::direction_t direction) const;\n    void peer_log (peer_log_alert::direction_t direction\n       , char const* event, char const* fmt = "", ...) const TORRENT_FORMAT(4,5);\n-   bool should_log (peer_log_alert::direction_t direction) const;\n    bool can_disconnect (error_code const& ec) const;\n    bool has_metadata () const;\n    bool in_handshake () const;\n    void send_buffer (char const* begin, int size);\n-   std::time_t last_seen_complete () const;\n    time_point time_of_last_unchoke () const;\n+   std::time_t last_seen_complete () const;\n    bool operator!= (peer_connection_handle const& o) const;\n    bool operator== (peer_connection_handle const& o) const;\n    bool operator< (peer_connection_handle const& o) const;\n    std::shared_ptr<peer_connection> native_handle () const;\n };\n 
    \n [report issue]
    \n@@ -5790,16 +5790,16 @@\n
    \n struct bt_peer_connection_handle : peer_connection_handle\n {\n    explicit bt_peer_connection_handle (peer_connection_handle pc);\n    bool packet_finished () const;\n    bool support_extensions () const;\n    bool supports_encryption () const;\n-   void switch_recv_crypto (std::shared_ptr<crypto_plugin> crypto);\n    void switch_send_crypto (std::shared_ptr<crypto_plugin> crypto);\n+   void switch_recv_crypto (std::shared_ptr<crypto_plugin> crypto);\n    std::shared_ptr<bt_peer_connection> native_handle () const;\n };\n 
    \n [report issue]
    \n
    \n

    create_ut_pex_plugin()

    \n

    Declared in "libtorrent/extensions/ut_pex.hpp"

    \n@@ -5879,76 +5879,76 @@\n size. Everything necessary to interpret a regular bittorrent storage\n file structure.

    \n
    \n class file_storage\n {\n    bool is_valid () const;\n    void reserve (int num_files);\n-   void add_file (std::string const& path, std::int64_t file_size\n-      , file_flags_t file_flags = {}\n-      , std::time_t mtime = 0, string_view symlink_path = string_view()\n-      , char const* root_hash = nullptr);\n    void add_file_borrow (error_code& ec, string_view filename\n       , std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}, char const* filehash = nullptr\n       , std::int64_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n    void add_file_borrow (string_view filename\n       , std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}, char const* filehash = nullptr\n       , std::int64_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n+   void add_file (std::string const& path, std::int64_t file_size\n+      , file_flags_t file_flags = {}\n+      , std::time_t mtime = 0, string_view symlink_path = string_view()\n+      , char const* root_hash = nullptr);\n    void add_file (error_code& ec, std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}\n       , std::time_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n    void rename_file (file_index_t index, std::string const& new_filename);\n    std::vector<file_slice> map_block (piece_index_t piece, std::int64_t offset\n       , std::int64_t size) const;\n    peer_request map_file (file_index_t file, std::int64_t offset, int size) const;\n    int num_files () const noexcept;\n    file_index_t end_file () const noexcept;\n    index_range<file_index_t> file_range () const noexcept;\n    std::int64_t total_size () const;\n-   int num_pieces () const;\n    void set_num_pieces (int n);\n+   int num_pieces () const;\n    piece_index_t end_piece () const;\n    piece_index_t last_piece () const;\n    index_range<piece_index_t> piece_range () const noexcept;\n-   int piece_length () const;\n    void set_piece_length (int l);\n+   int piece_length () const;\n    int piece_size (piece_index_t index) const;\n    int piece_size2 (piece_index_t index) const;\n    int blocks_in_piece2 (piece_index_t index) const;\n    int blocks_per_piece () const;\n-   std::string const& name () const;\n    void set_name (std::string const& n);\n+   std::string const& name () const;\n    void swap (file_storage& ti) noexcept;\n    void canonicalize ();\n-   std::time_t mtime (file_index_t index) const;\n-   std::string file_path (file_index_t index, std::string const& save_path = "") const;\n+   std::int64_t file_offset (file_index_t index) const;\n+   std::int64_t file_size (file_index_t index) const;\n    std::string symlink (file_index_t index) const;\n    sha1_hash hash (file_index_t index) const;\n-   sha256_hash root (file_index_t index) const;\n-   std::int64_t file_offset (file_index_t index) const;\n-   char const* root_ptr (file_index_t const index) const;\n    string_view file_name (file_index_t index) const;\n    bool pad_file_at (file_index_t index) const;\n-   std::int64_t file_size (file_index_t index) const;\n-   int file_num_pieces (file_index_t index) const;\n+   std::string file_path (file_index_t index, std::string const& save_path = "") const;\n+   sha256_hash root (file_index_t index) const;\n+   char const* root_ptr (file_index_t const index) const;\n+   std::time_t mtime (file_index_t index) const;\n    int file_num_blocks (file_index_t index) const;\n    index_range<piece_index_t::diff_type> file_piece_range (file_index_t) const;\n+   int file_num_pieces (file_index_t index) const;\n    int file_first_block_node (file_index_t index) const;\n    int file_first_piece_node (file_index_t index) const;\n    std::uint32_t file_path_hash (file_index_t index, std::string const& save_path) const;\n    void all_path_hashes (std::unordered_set<std::uint32_t>& table) const;\n    file_flags_t file_flags (file_index_t index) const;\n    bool file_absolute_path (file_index_t index) const;\n-   file_index_t file_index_at_offset (std::int64_t offset) const;\n    file_index_t file_index_at_piece (piece_index_t piece) const;\n+   file_index_t file_index_at_offset (std::int64_t offset) const;\n    file_index_t file_index_for_root (sha256_hash const& root_hash) const;\n    piece_index_t piece_index_at_file (file_index_t f) const;\n    void sanitize_symlinks ();\n    bool v2 () const;\n \n    static constexpr file_flags_t flag_pad_file  = 0_bit;\n    static constexpr file_flags_t flag_hidden  = 1_bit;\n@@ -5975,28 +5975,28 @@\n be used to avoid reallocating the internal file list when the number\n of files to be added is known up-front.

    \n \n [report issue]
    \n
    \n

    add_file_borrow() add_file()

    \n
    \n-void add_file (std::string const& path, std::int64_t file_size\n-      , file_flags_t file_flags = {}\n-      , std::time_t mtime = 0, string_view symlink_path = string_view()\n-      , char const* root_hash = nullptr);\n void add_file_borrow (error_code& ec, string_view filename\n       , std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}, char const* filehash = nullptr\n       , std::int64_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n void add_file_borrow (string_view filename\n       , std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}, char const* filehash = nullptr\n       , std::int64_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n+void add_file (std::string const& path, std::int64_t file_size\n+      , file_flags_t file_flags = {}\n+      , std::time_t mtime = 0, string_view symlink_path = string_view()\n+      , char const* root_hash = nullptr);\n void add_file (error_code& ec, std::string const& path, std::int64_t file_size\n       , file_flags_t file_flags = {}\n       , std::time_t mtime = 0, string_view symlink_path = string_view()\n       , char const* root_hash = nullptr);\n 
    \n

    Adds a file to the file storage. The add_file_borrow version\n expects that filename is the file name (without a path) of\n@@ -6098,21 +6098,21 @@\n [report issue]

    \n
    \n

    total_size()

    \n
    \n std::int64_t total_size () const;\n 
    \n

    returns the total number of bytes all the files in this torrent spans

    \n-\n-[report issue]
    \n-
    \n-

    set_num_pieces() num_pieces()

    \n+\n+[report issue]
    \n+
    \n+

    num_pieces() set_num_pieces()

    \n
    \n-int num_pieces () const;\n void set_num_pieces (int n);\n+int num_pieces () const;\n 
    \n

    set and get the number of pieces in the torrent

    \n [report issue]
    \n
    \n

    end_piece()

    \n
    \n piece_index_t end_piece () const;\n@@ -6137,16 +6137,16 @@\n container in a range-for loop. Where the values are the indices of all\n pieces in the file_storage.

    \n \n [report issue]
    \n
    \n

    piece_length() set_piece_length()

    \n
    \n-int piece_length () const;\n void set_piece_length (int l);\n+int piece_length () const;\n 
    \n

    set and get the size of each piece in this torrent. It must be a power of two\n and at least 16 kiB.

    \n [report issue]
    \n
    \n

    piece_size()

    \n
    \n@@ -6175,21 +6175,21 @@\n 
    \n

    blocks_per_piece()

    \n
    \n int blocks_per_piece () const;\n 
    \n

    returns the number of blocks there are in the typical piece. There\n may be fewer in the last piece)

    \n-\n-[report issue]
    \n-
    \n-

    name() set_name()

    \n+\n+[report issue]
    \n+
    \n+

    set_name() name()

    \n
    \n-std::string const& name () const;\n void set_name (std::string const& n);\n+std::string const& name () const;\n 
    \n

    set and get the name of this torrent. For multi-file torrents, this is also\n the name of the root directory all the files are stored in.

    \n [report issue]
    \n
    \n

    swap()

    \n
    \n@@ -6200,37 +6200,37 @@\n 
    \n

    canonicalize()

    \n
    \n void canonicalize ();\n 
    \n

    arrange files and padding to match the canonical form required\n by BEP 52

    \n+\n \n+\n \n-\n-\n-\n-\n \n-\n+\n+\n+\n \n-[report issue]
    \n-\n+\n
    \n

    file_piece_range() file_num_blocks() file_num_pieces()

    \n
    \n-int file_num_pieces (file_index_t index) const;\n int file_num_blocks (file_index_t index) const;\n index_range<piece_index_t::diff_type> file_piece_range (file_index_t) const;\n+int file_num_pieces (file_index_t index) const;\n 
    \n

    Returns the number of pieces or blocks the file at index spans,\n under the assumption that the file is aligned to the start of a piece.\n This is only meaningful for v2 torrents, where files are guaranteed\n such alignment.\n These numbers are used to size and navigate the merkle hash tree for\n each file.

    \n-\n-[report issue]
    \n-
    \n-

    file_first_block_node() file_first_piece_node()

    \n+\n+[report issue]
    \n+
    \n+

    file_first_piece_node() file_first_block_node()

    \n
    \n int file_first_block_node (file_index_t index) const;\n int file_first_piece_node (file_index_t index) const;\n 
    \n

    index of first piece node in the merkle tree

    \n [report issue]
    \n
    \n@@ -6309,21 +6309,21 @@\n

    file_absolute_path()

    \n
    \n bool file_absolute_path (file_index_t index) const;\n 
    \n

    returns true if the file at the specified index has been renamed to\n have an absolute path, i.e. is not anchored in the save path of the\n torrent.

    \n-\n-[report issue]
    \n-
    \n-

    file_index_at_offset() file_index_at_piece()

    \n+\n+[report issue]
    \n+
    \n+

    file_index_at_piece() file_index_at_offset()

    \n
    \n-file_index_t file_index_at_offset (std::int64_t offset) const;\n file_index_t file_index_at_piece (piece_index_t piece) const;\n+file_index_t file_index_at_offset (std::int64_t offset) const;\n 
    \n

    returns the index of the file at the given offset in the torrent

    \n [report issue]
    \n
    \n

    file_index_for_root()

    \n
    \n file_index_t file_index_for_root (sha256_hash const& root_hash) const;\n@@ -6568,40 +6568,40 @@\n requiring the same type be requested out of it as was assigned to it.

    \n
    \n struct client_data_t\n {\n    client_data_t () = default;\n    explicit client_data_t (T* v);\n    client_data_t& operator= (T* v);\n-   T* get () const;\n    explicit operator T () const;\n-   client_data_t& operator= (void const*) = delete;\n+   T* get () const;\n    operator void* () const = delete;\n-   client_data_t& operator= (void*) = delete;\n    operator void const* () const = delete;\n+   client_data_t& operator= (void const*) = delete;\n+   client_data_t& operator= (void*) = delete;\n \n    template <typename T, typename U  = typename std::enable_if<std::is_pointer<T>::value>::type>\n };\n 
    \n [report issue]
    \n

    client_data_t()

    \n
    \n client_data_t () = default;\n 
    \n

    construct a nullptr client data

    \n-\n+\n \n-[report issue]
    \n-
    \n-

    void*() operator=() const*()

    \n+[report issue]
    \n+
    \n+

    const*() operator=() void*()

    \n
    \n-client_data_t& operator= (void const*) = delete;\n operator void* () const = delete;\n-client_data_t& operator= (void*) = delete;\n operator void const* () const = delete;\n+client_data_t& operator= (void const*) = delete;\n+client_data_t& operator= (void*) = delete;\n 
    \n

    we don't allow type-unsafe operations

    \n [report issue]
    \n
    \n
    \n

    add_torrent_params

    \n

    Declared in "libtorrent/add_torrent_params.hpp"

    \n@@ -6988,16 +6988,16 @@\n peer-classes from peers. It is applied after the peer class filter is applied (which\n is based on the peer's IP address).

    \n
    \n struct peer_class_type_filter\n {\n    void add (socket_type_t const st, peer_class_t const peer_class);\n    void remove (socket_type_t const st, peer_class_t const peer_class);\n-   void disallow (socket_type_t const st, peer_class_t const peer_class);\n    void allow (socket_type_t const st, peer_class_t const peer_class);\n+   void disallow (socket_type_t const st, peer_class_t const peer_class);\n    std::uint32_t apply (socket_type_t const st, std::uint32_t peer_class_mask);\n    friend bool operator== (peer_class_type_filter const& lhs\n       , peer_class_type_filter const& rhs);\n \n    enum socket_type_t\n    {\n       tcp_socket,\n@@ -7014,21 +7014,21 @@\n 

    add() remove()

    \n
    \n void add (socket_type_t const st, peer_class_t const peer_class);\n void remove (socket_type_t const st, peer_class_t const peer_class);\n 
    \n

    add() and remove() adds and removes a peer class to be added\n to new peers based on socket type.

    \n-\n-[report issue]
    \n-
    \n-

    disallow() allow()

    \n+\n+[report issue]
    \n+
    \n+

    allow() disallow()

    \n
    \n-void disallow (socket_type_t const st, peer_class_t const peer_class);\n void allow (socket_type_t const st, peer_class_t const peer_class);\n+void disallow (socket_type_t const st, peer_class_t const peer_class);\n 
    \n

    disallow() and allow() adds and removes a peer class to be\n removed from new peers based on socket type.

    \n

    The peer_class argument cannot be greater than 31. The bitmasks representing\n peer classes in the peer_class_type_filter are 32 bits.

    \n [report issue]
    \n
    \n@@ -7106,17 +7106,17 @@\n \n unsigned bytes_progress:15;\n unsigned block_size:15;\n unsigned state:2;\n unsigned num_peers:14;\n };\n
    \n-\n-[report issue]
    \n-

    peer() set_peer()

    \n+\n+[report issue]
    \n+

    set_peer() peer()

    \n
    \n void set_peer (tcp::endpoint const& ep);\n tcp::endpoint peer () const;\n 
    \n

    The peer is the ip address of the peer this block was downloaded from.

    \n [report issue]
    \n
    \n@@ -7258,109 +7258,109 @@\n handle will remain valid between two calls.

    \n
    \n
    \n struct torrent_handle\n {\n    friend std::size_t hash_value (torrent_handle const& th);\n    torrent_handle () noexcept = default;\n-   void add_piece (piece_index_t piece, char const* data, add_piece_flags_t flags = {}) const;\n    void add_piece (piece_index_t piece, std::vector<char> data, add_piece_flags_t flags = {}) const;\n+   void add_piece (piece_index_t piece, char const* data, add_piece_flags_t flags = {}) const;\n    void read_piece (piece_index_t piece) const;\n    bool have_piece (piece_index_t piece) const;\n-   void post_peer_info () const;\n    void get_peer_info (std::vector<peer_info>& v) const;\n-   torrent_status status (status_flags_t flags = status_flags_t::all()) const;\n+   void post_peer_info () const;\n    void post_status (status_flags_t flags = status_flags_t::all()) const;\n-   std::vector<partial_piece_info> get_download_queue () const;\n-   void post_download_queue () const;\n+   torrent_status status (status_flags_t flags = status_flags_t::all()) const;\n    void get_download_queue (std::vector<partial_piece_info>& queue) const;\n-   void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t flags = {}) const;\n+   void post_download_queue () const;\n+   std::vector<partial_piece_info> get_download_queue () const;\n    void reset_piece_deadline (piece_index_t index) const;\n    void clear_piece_deadlines () const;\n+   void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t flags = {}) const;\n    void file_progress (std::vector<std::int64_t>& progress, file_progress_flags_t flags = {}) const;\n-   void post_file_progress (file_progress_flags_t flags) const;\n    std::vector<std::int64_t> file_progress (file_progress_flags_t flags = {}) const;\n+   void post_file_progress (file_progress_flags_t flags) const;\n    std::vector<open_file_state> file_status () const;\n    void clear_error () const;\n+   std::vector<announce_entry> trackers () const;\n    void replace_trackers (std::vector<announce_entry> const&) const;\n    void post_trackers () const;\n    void add_tracker (announce_entry const&) const;\n-   std::vector<announce_entry> trackers () const;\n+   void remove_url_seed (std::string const& url) const;\n    void add_url_seed (std::string const& url) const;\n    std::set<std::string> url_seeds () const;\n-   void remove_url_seed (std::string const& url) const;\n-   std::set<std::string> http_seeds () const;\n    void remove_http_seed (std::string const& url) const;\n    void add_http_seed (std::string const& url) const;\n+   std::set<std::string> http_seeds () const;\n    void add_extension (\n       std::function<std::shared_ptr<torrent_plugin>(torrent_handle const&, client_data_t)> const& ext\n       , client_data_t userdata = client_data_t{});\n    bool set_metadata (span<char const> metadata) const;\n    bool is_valid () const;\n-   void pause (pause_flags_t flags = {}) const;\n    void resume () const;\n+   void pause (pause_flags_t flags = {}) const;\n    torrent_flags_t flags () const;\n-   void unset_flags (torrent_flags_t flags) const;\n    void set_flags (torrent_flags_t flags) const;\n+   void unset_flags (torrent_flags_t flags) const;\n    void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n    void flush_cache () const;\n    void force_recheck () const;\n    void save_resume_data (resume_data_flags_t flags = {}) const;\n-   bool need_save_resume_data () const;\n    bool need_save_resume_data (resume_data_flags_t flags) const;\n+   bool need_save_resume_data () const;\n+   void queue_position_top () const;\n+   queue_position_t queue_position () const;\n    void queue_position_bottom () const;\n    void queue_position_down () const;\n-   queue_position_t queue_position () const;\n-   void queue_position_top () const;\n    void queue_position_up () const;\n    void queue_position_set (queue_position_t p) const;\n    void set_ssl_certificate_buffer (std::string const& certificate\n       , std::string const& private_key\n       , std::string const& dh_params);\n    void set_ssl_certificate (std::string const& certificate\n       , std::string const& private_key\n       , std::string const& dh_params\n       , std::string const& passphrase = "");\n    std::shared_ptr<const torrent_info> torrent_file () const;\n    std::shared_ptr<torrent_info> torrent_file_with_hashes () const;\n    std::vector<std::vector<sha256_hash>> piece_layers () const;\n-   void post_piece_availability () const;\n    void piece_availability (std::vector<int>& avail) const;\n+   void post_piece_availability () const;\n    void prioritize_pieces (std::vector<download_priority_t> const& pieces) const;\n-   std::vector<download_priority_t> get_piece_priorities () const;\n-   download_priority_t piece_priority (piece_index_t index) const;\n    void piece_priority (piece_index_t index, download_priority_t priority) const;\n    void prioritize_pieces (std::vector<std::pair<piece_index_t, download_priority_t>> const& pieces) const;\n-   download_priority_t file_priority (file_index_t index) const;\n-   std::vector<download_priority_t> get_file_priorities () const;\n+   download_priority_t piece_priority (piece_index_t index) const;\n+   std::vector<download_priority_t> get_piece_priorities () const;\n    void prioritize_files (std::vector<download_priority_t> const& files) const;\n+   std::vector<download_priority_t> get_file_priorities () const;\n+   download_priority_t file_priority (file_index_t index) const;\n    void file_priority (file_index_t index, download_priority_t priority) const;\n    void force_reannounce (int seconds = 0, int idx = -1, reannounce_flags_t = {}) const;\n    void force_dht_announce () const;\n    void force_lsd_announce () const;\n    void scrape_tracker (int idx = -1) const;\n-   void set_download_limit (int limit) const;\n-   int download_limit () const;\n    void set_upload_limit (int limit) const;\n    int upload_limit () const;\n+   int download_limit () const;\n+   void set_download_limit (int limit) const;\n    void connect_peer (tcp::endpoint const& adr, peer_source_flags_t source = {}\n       , pex_flags_t flags = pex_encryption | pex_utp | pex_holepunch) const;\n    void clear_peers ();\n    void set_max_uploads (int max_uploads) const;\n    int max_uploads () const;\n-   void set_max_connections (int max_connections) const;\n    int max_connections () const;\n+   void set_max_connections (int max_connections) const;\n    void move_storage (std::string const& save_path\n       , move_flags_t flags = move_flags_t::always_replace_files\n       ) const;\n    void rename_file (file_index_t index, std::string const& new_name) const;\n-   info_hash_t info_hashes () const;\n    sha1_hash info_hash () const;\n-   bool operator== (const torrent_handle& h) const;\n+   info_hash_t info_hashes () const;\n    bool operator< (const torrent_handle& h) const;\n+   bool operator== (const torrent_handle& h) const;\n    bool operator!= (const torrent_handle& h) const;\n    std::uint32_t id () const;\n    std::shared_ptr<torrent> native_handle () const;\n    client_data_t userdata () const;\n    bool in_session () const;\n \n    static constexpr add_piece_flags_t overwrite_existing  = 0_bit;\n@@ -7393,16 +7393,16 @@\n 
    \n

    constructs a torrent handle that does not refer to a torrent.\n i.e. is_valid() will return false.

    \n [report issue]
    \n
    \n

    add_piece()

    \n
    \n-void add_piece (piece_index_t piece, char const* data, add_piece_flags_t flags = {}) const;\n void add_piece (piece_index_t piece, std::vector<char> data, add_piece_flags_t flags = {}) const;\n+void add_piece (piece_index_t piece, char const* data, add_piece_flags_t flags = {}) const;\n 
    \n

    This function will write data to the storage as piece piece,\n as if it had been downloaded from a peer.

    \n

    By default, data that's already been downloaded is not overwritten by\n this buffer. If you trust this data to be correct (and pass the piece\n hash check) you may pass the overwrite_existing flag. This will\n instruct libtorrent to overwrite any data that may already have been\n@@ -7439,39 +7439,39 @@\n

    \n

    have_piece()

    \n
    \n bool have_piece (piece_index_t piece) const;\n 
    \n

    Returns true if this piece has been completely downloaded and written\n to disk, and false otherwise.

    \n-\n-[report issue]
    \n-
    \n-

    post_peer_info() get_peer_info()

    \n+\n+[report issue]
    \n+
    \n+

    get_peer_info() post_peer_info()

    \n
    \n-void post_peer_info () const;\n void get_peer_info (std::vector<peer_info>& v) const;\n+void post_peer_info () const;\n 
    \n

    Query information about connected peers for this torrent. If the\n torrent_handle is invalid, it will throw a system_error exception.

    \n

    post_peer_info() is asynchronous and will trigger the posting of\n a peer_info_alert. The alert contain a list of peer_info objects, one\n for each connected peer.

    \n

    get_peer_info() is synchronous and takes a reference to a vector\n that will be cleared and filled with one entry for each peer\n connected to this torrent, given the handle is valid. Each entry in\n the vector contains information about that particular peer. See\n peer_info.

    \n-\n-[report issue]
    \n-
    \n-

    post_status() status()

    \n+\n+[report issue]
    \n+
    \n+

    status() post_status()

    \n
    \n-torrent_status status (status_flags_t flags = status_flags_t::all()) const;\n void post_status (status_flags_t flags = status_flags_t::all()) const;\n+torrent_status status (status_flags_t flags = status_flags_t::all()) const;\n 
    \n

    status() will return a structure with information about the status\n of this torrent. If the torrent_handle is invalid, it will throw\n system_error exception. See torrent_status. The flags\n argument filters what information is returned in the torrent_status.\n Some information in there is relatively expensive to calculate, and if\n you're not interested in it (and see performance issues), you can\n@@ -7481,38 +7481,38 @@\n instead call post_status(). It will trigger posting of a\n state_update_alert with a single torrent_status object for this\n torrent.

    \n

    In order to get regular updates for torrents whose status changes,\n consider calling session::post_torrent_updates()`` instead.

    \n

    By default everything is included. The flags you can use to decide\n what to include are defined in this class.

    \n-\n-[report issue]
    \n-
    \n-

    get_download_queue() post_download_queue()

    \n+\n+[report issue]
    \n+
    \n+

    post_download_queue() get_download_queue()

    \n
    \n-std::vector<partial_piece_info> get_download_queue () const;\n-void post_download_queue () const;\n void get_download_queue (std::vector<partial_piece_info>& queue) const;\n+void post_download_queue () const;\n+std::vector<partial_piece_info> get_download_queue () const;\n 
    \n

    post_download_queue() triggers a download_queue_alert to be\n posted.\n get_download_queue() is a synchronous call and returns a vector\n with information about pieces that are partially downloaded or not\n downloaded but partially requested. See partial_piece_info for the\n fields in the returned vector.

    \n-\n+\n \n-[report issue]
    \n-
    \n-

    set_piece_deadline() clear_piece_deadlines() reset_piece_deadline()

    \n+[report issue]
    \n+
    \n+

    reset_piece_deadline() clear_piece_deadlines() set_piece_deadline()

    \n
    \n-void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t flags = {}) const;\n void reset_piece_deadline (piece_index_t index) const;\n void clear_piece_deadlines () const;\n+void set_piece_deadline (piece_index_t index, int deadline, deadline_flags_t flags = {}) const;\n 
    \n

    This function sets or resets the deadline associated with a specific\n piece index (index). libtorrent will attempt to download this\n entire piece before the deadline expires. This is not necessarily\n possible, but pieces with a more recent deadline will always be\n prioritized over pieces with a deadline further ahead in time. The\n deadline (and flags) of a piece can be changed by calling this\n@@ -7523,22 +7523,22 @@\n

    deadline is the number of milliseconds until this piece should be\n completed.

    \n

    reset_piece_deadline removes the deadline from the piece. If it\n hasn't already been downloaded, it will no longer be considered a\n priority.

    \n

    clear_piece_deadlines() removes deadlines on all pieces in\n the torrent. As if reset_piece_deadline() was called on all pieces.

    \n-\n-[report issue]
    \n-
    \n-

    file_progress() post_file_progress()

    \n+\n+[report issue]
    \n+
    \n+

    post_file_progress() file_progress()

    \n
    \n void file_progress (std::vector<std::int64_t>& progress, file_progress_flags_t flags = {}) const;\n-void post_file_progress (file_progress_flags_t flags) const;\n std::vector<std::int64_t> file_progress (file_progress_flags_t flags = {}) const;\n+void post_file_progress (file_progress_flags_t flags) const;\n 
    \n

    This function fills in the supplied vector, or returns a vector, with\n the number of bytes downloaded of each file in this torrent. The\n progress values are ordered the same as the files in the\n torrent_info.

    \n

    This operation is not very cheap. Its complexity is O(n + mj).\n Where n is the number of files, m is the number of currently\n@@ -7567,25 +7567,25 @@\n

    \n

    clear_error()

    \n
    \n void clear_error () const;\n 
    \n

    If the torrent is in an error state (i.e. torrent_status::error is\n non-empty), this will clear the error and start the torrent again.

    \n+\n \n \n-\n-[report issue]
    \n-
    \n-

    replace_trackers() post_trackers() trackers() add_tracker()

    \n+[report issue]
    \n+
    \n+

    trackers() replace_trackers() post_trackers() add_tracker()

    \n
    \n+std::vector<announce_entry> trackers () const;\n void replace_trackers (std::vector<announce_entry> const&) const;\n void post_trackers () const;\n void add_tracker (announce_entry const&) const;\n-std::vector<announce_entry> trackers () const;\n 
    \n

    trackers() returns the list of trackers for this torrent. The\n announce entry contains both a string url which specify the\n announce url for the tracker as well as an int tier, which is\n specifies the order in which this tracker is tried. If you want\n libtorrent to use another list of trackers for this torrent, you can\n use replace_trackers() which takes a list of the same form as the\n@@ -7597,42 +7597,42 @@\n

    add_tracker() will look if the specified tracker is already in the\n set. If it is, it doesn't do anything. If it's not in the current set\n of trackers, it will insert it in the tier specified in the\n announce_entry.

    \n

    The updated set of trackers will be saved in the resume data, and when\n a torrent is started with resume data, the trackers from the resume\n data will replace the original ones.

    \n+\n \n-\n-[report issue]
    \n-
    \n-

    remove_url_seed() add_url_seed() url_seeds()

    \n+[report issue]
    \n+
    \n+

    url_seeds() remove_url_seed() add_url_seed()

    \n
    \n+void remove_url_seed (std::string const& url) const;\n void add_url_seed (std::string const& url) const;\n std::set<std::string> url_seeds () const;\n-void remove_url_seed (std::string const& url) const;\n 
    \n

    add_url_seed() adds another url to the torrent's list of url\n seeds. If the given url already exists in that list, the call has no\n effect. The torrent will connect to the server and try to download\n pieces from it, unless it's paused, queued, checking or seeding.\n remove_url_seed() removes the given url if it exists already.\n url_seeds() return a set of the url seeds currently in this\n torrent. Note that URLs that fails may be removed automatically from\n the list.

    \n

    See http seeding for more information.

    \n+\n \n-\n-[report issue]
    \n-
    \n-

    remove_http_seed() http_seeds() add_http_seed()

    \n+[report issue]
    \n+
    \n+

    add_http_seed() remove_http_seed() http_seeds()

    \n
    \n-std::set<std::string> http_seeds () const;\n void remove_http_seed (std::string const& url) const;\n void add_http_seed (std::string const& url) const;\n+std::set<std::string> http_seeds () const;\n 
    \n

    These functions are identical as the *_url_seed() variants, but\n they operate on BEP 17 web seeds instead of BEP 19.

    \n

    See http seeding for more information.

    \n [report issue]
    \n
    \n

    add_extension()

    \n@@ -7679,16 +7679,16 @@\n network thread. Also unlike other functions, it never throws\n the system_error exception.

    \n \n [report issue]
    \n
    \n

    resume() pause()

    \n
    \n-void pause (pause_flags_t flags = {}) const;\n void resume () const;\n+void pause (pause_flags_t flags = {}) const;\n 
    \n

    pause(), and resume() will disconnect all peers and reconnect\n all peers respectively. When a torrent is paused, it will however\n remember all share ratios to all peers and remember all potential (not\n connected) peers. Torrents may be paused automatically if there is a\n file error (e.g. disk full) or something similar. See\n file_error_alert.

    \n@@ -7706,16 +7706,16 @@\n \n \n [report issue]
    \n
    \n

    flags() set_flags() unset_flags()

    \n
    \n torrent_flags_t flags () const;\n-void unset_flags (torrent_flags_t flags) const;\n void set_flags (torrent_flags_t flags) const;\n+void unset_flags (torrent_flags_t flags) const;\n void set_flags (torrent_flags_t flags, torrent_flags_t mask) const;\n 
    \n

    sets and gets the torrent state flags. See torrent_flags_t.\n The set_flags overload that take a mask will affect all\n flags part of the mask, and set their values to what the\n flags argument is set to. This allows clearing and\n setting flags in a single function call.\n@@ -7853,16 +7853,16 @@\n report that they don't need to save resume data again, and skipped by\n the initial loop, and thwart the counter otherwise.

    \n
    \n [report issue]
    \n
    \n

    need_save_resume_data()

    \n
    \n-bool need_save_resume_data () const;\n bool need_save_resume_data (resume_data_flags_t flags) const;\n+bool need_save_resume_data () const;\n 
    \n

    This function returns true if anything that is stored in the resume\n data has changed since the last time resume data was saved.\n The overload that takes flags let you ask if specific categories\n of properties have changed. These flags have the same behavior as in\n the save_resume_data() call.

    \n

    This is a blocking call. It will wait for a response from\n@@ -7872,26 +7872,26 @@\n

    \n

    Note

    \n

    A torrent's resume data is considered saved as soon as the\n save_resume_data_alert is posted. It is important to make sure this\n alert is received and handled in order for this function to be\n meaningful.

    \n
    \n-\n \n \n \n-[report issue]
    \n-
    \n-

    queue_position_down() queue_position_top() queue_position_up() queue_position_bottom() queue_position()

    \n+\n+[report issue]
    \n+
    \n+

    queue_position_top() queue_position_up() queue_position_bottom() queue_position() queue_position_down()

    \n
    \n+void queue_position_top () const;\n+queue_position_t queue_position () const;\n void queue_position_bottom () const;\n void queue_position_down () const;\n-queue_position_t queue_position () const;\n-void queue_position_top () const;\n void queue_position_up () const;\n 
    \n

    Every torrent that is added is assigned a queue position exactly one\n greater than the greatest queue position of all existing torrents.\n Torrents that are being seeded have -1 as their queue position, since\n they're no longer in line to be downloaded.

    \n

    When a torrent is removed or turns into a seed, all torrents with\n@@ -7992,42 +7992,42 @@\n

    \n std::vector<std::vector<sha256_hash>> piece_layers () const;\n 
    \n

    returns the piece layers for all files in the torrent. If this is a\n v1 torrent (and doesn't have any piece layers) it returns an empty\n vector. This is a blocking call that will synchronize with the\n libtorrent network thread.

    \n-\n-[report issue]
    \n-
    \n-

    post_piece_availability() piece_availability()

    \n+\n+[report issue]
    \n+
    \n+

    piece_availability() post_piece_availability()

    \n
    \n-void post_piece_availability () const;\n void piece_availability (std::vector<int>& avail) const;\n+void post_piece_availability () const;\n 
    \n

    The piece availability is the number of peers that we are connected\n that has advertised having a particular piece. This is the information\n that libtorrent uses in order to prefer picking rare pieces.

    \n

    post_piece_availability() will trigger a piece_availability_alert\n to be posted.

    \n

    piece_availability() fills the specified std::vector<int>\n with the availability for each piece in this torrent. libtorrent does\n not keep track of availability for seeds, so if the torrent is\n seeding the availability for all pieces is reported as 0.

    \n-\n \n-[report issue]
    \n-
    \n-

    piece_priority() get_piece_priorities() prioritize_pieces()

    \n+\n+[report issue]
    \n+
    \n+

    get_piece_priorities() prioritize_pieces() piece_priority()

    \n
    \n void prioritize_pieces (std::vector<download_priority_t> const& pieces) const;\n-std::vector<download_priority_t> get_piece_priorities () const;\n-download_priority_t piece_priority (piece_index_t index) const;\n void piece_priority (piece_index_t index, download_priority_t priority) const;\n void prioritize_pieces (std::vector<std::pair<piece_index_t, download_priority_t>> const& pieces) const;\n+download_priority_t piece_priority (piece_index_t index) const;\n+std::vector<download_priority_t> get_piece_priorities () const;\n 
    \n

    These functions are used to set and get the priority of individual\n pieces. By default all pieces have priority 4. That means that the\n random rarest first algorithm is effectively active for all pieces.\n You may however change the priority of individual pieces. There are 8\n priority levels. 0 means not to download the piece at all. Otherwise,\n lower priority values means less likely to be picked. Piece priority\n@@ -8049,23 +8049,23 @@\n Invalid entries, where the piece index or priority is out of range, are\n not allowed.

    \n

    get_piece_priorities returns a vector with one element for each piece\n in the torrent. Each element is the current priority of that piece.

    \n

    It's possible to cancel the effect of file priorities by setting the\n priorities for the affected pieces. Care has to be taken when mixing\n usage of file- and piece priorities.

    \n+\n \n-\n-[report issue]
    \n-
    \n-

    prioritize_files() get_file_priorities() file_priority()

    \n+[report issue]
    \n+
    \n+

    file_priority() prioritize_files() get_file_priorities()

    \n
    \n-download_priority_t file_priority (file_index_t index) const;\n-std::vector<download_priority_t> get_file_priorities () const;\n void prioritize_files (std::vector<download_priority_t> const& files) const;\n+std::vector<download_priority_t> get_file_priorities () const;\n+download_priority_t file_priority (file_index_t index) const;\n void file_priority (file_index_t index, download_priority_t priority) const;\n 
    \n

    index must be in the range [0, number_of_files).

    \n

    file_priority() queries or sets the priority of file index.

    \n

    prioritize_files() takes a vector that has at as many elements as\n there are files in the torrent. Each entry is the priority of that\n file. The function sets the priorities of all the pieces in the\n@@ -8129,25 +8129,25 @@\n idx is >= 0, the tracker with the specified index will scraped.

    \n

    A scrape request queries the tracker for statistics such as total\n number of incomplete peers, complete peers, number of downloads etc.

    \n

    This request will specifically update the num_complete and\n num_incomplete fields in the torrent_status struct once it\n completes. When it completes, it will generate a scrape_reply_alert.\n If it fails, it will generate a scrape_failed_alert.

    \n+\n \n \n-\n-[report issue]
    \n-
    \n-

    upload_limit() set_upload_limit() download_limit() set_download_limit()

    \n+[report issue]
    \n+
    \n+

    download_limit() upload_limit() set_upload_limit() set_download_limit()

    \n
    \n-void set_download_limit (int limit) const;\n-int download_limit () const;\n void set_upload_limit (int limit) const;\n int upload_limit () const;\n+int download_limit () const;\n+void set_download_limit (int limit) const;\n 
    \n

    set_upload_limit will limit the upload bandwidth used by this\n particular torrent to the limit you set. It is given as the number of\n bytes per second the torrent is allowed to upload.\n set_download_limit works the same way but for download bandwidth\n instead of upload bandwidth. Note that setting a higher limit on a\n torrent then the global limit\n@@ -8179,18 +8179,18 @@\n

    clear_peers()

    \n
    \n void clear_peers ();\n 
    \n

    This will disconnect all peers and clear the peer list for this\n torrent. New peers will have to be acquired before resuming, from\n trackers, DHT or local service discovery, for example.

    \n-\n-[report issue]
    \n-
    \n-

    set_max_uploads() max_uploads()

    \n+\n+[report issue]
    \n+
    \n+

    max_uploads() set_max_uploads()

    \n
    \n void set_max_uploads (int max_uploads) const;\n int max_uploads () const;\n 
    \n

    set_max_uploads() sets the maximum number of peers that's unchoked\n at the same time on this torrent. If you set this to -1, there will be\n no limit. This defaults to infinite. The primary setting controlling\n@@ -8198,16 +8198,16 @@\n settings_pack.

    \n

    max_uploads() returns the current settings.

    \n \n [report issue]
    \n
    \n

    max_connections() set_max_connections()

    \n
    \n-void set_max_connections (int max_connections) const;\n int max_connections () const;\n+void set_max_connections (int max_connections) const;\n 
    \n

    set_max_connections() sets the maximum number of connection this\n torrent will open. If all connections are used up, incoming\n connections may be refused or poor connections may be closed. This\n must be at least 2. The default is unlimited number of connections. If\n -1 is given to the function, it means unlimited. There is also a\n global limit of the number of connections, set by\n@@ -8275,31 +8275,31 @@\n operation is complete when either a file_renamed_alert or\n file_rename_failed_alert is posted.

    \n \n [report issue]
    \n
    \n

    info_hashes() info_hash()

    \n
    \n-info_hash_t info_hashes () const;\n sha1_hash info_hash () const;\n+info_hash_t info_hashes () const;\n 
    \n

    returns the info-hash(es) of the torrent. If this handle is to a\n torrent that hasn't loaded yet (for instance by being added) by a\n URL, the returned value is undefined.\n The info_hash() returns the SHA-1 info-hash for v1 torrents and a\n truncated hash for v2 torrents. For the full v2 info-hash, use\n info_hashes() instead.

    \n+\n \n-\n-[report issue]
    \n+[report issue]
    \n
    \n-

    operator==() operator!=() operator<()

    \n+

    operator<() operator==() operator!=()

    \n
    \n-bool operator== (const torrent_handle& h) const;\n bool operator< (const torrent_handle& h) const;\n+bool operator== (const torrent_handle& h) const;\n bool operator!= (const torrent_handle& h) const;\n 
    \n

    comparison operators. The order of the torrents is unspecified\n but stable.

    \n [report issue]
    \n
    \n

    id()

    \n@@ -8888,16 +8888,16 @@\n internal libtorrent torrent object to tie the storage object allocated\n for a torrent to the lifetime of the internal torrent object. When a\n torrent is removed from the session, this holder is destructed and will\n inform the disk object.

    \n
    \n struct storage_holder\n {\n-   storage_holder (storage_index_t idx, disk_interface& disk_io);\n    ~storage_holder ();\n+   storage_holder (storage_index_t idx, disk_interface& disk_io);\n    storage_holder () = default;\n    explicit operator bool () const;\n    operator storage_index_t () const;\n    void reset ();\n    storage_holder& operator= (storage_holder const&) = delete;\n    storage_holder (storage_holder const&) = delete;\n    storage_holder (storage_holder&& rhs) noexcept;\n@@ -8945,16 +8945,16 @@\n 

    If this buffer holder is moved-from, default constructed or reset,\n data() will return nullptr.

    \n
    \n struct disk_buffer_holder\n {\n    disk_buffer_holder (disk_buffer_holder&&) noexcept;\n    disk_buffer_holder& operator= (disk_buffer_holder&&) & noexcept;\n-   disk_buffer_holder& operator= (disk_buffer_holder const&) = delete;\n    disk_buffer_holder (disk_buffer_holder const&) = delete;\n+   disk_buffer_holder& operator= (disk_buffer_holder const&) = delete;\n    disk_buffer_holder (buffer_allocator_interface& alloc\n       , char* buf, int sz) noexcept;\n    disk_buffer_holder () noexcept = default;\n    ~disk_buffer_holder ();\n    char* data () const noexcept;\n    void reset ();\n    void swap (disk_buffer_holder& h) noexcept;\n@@ -9033,16 +9033,16 @@\n 
    \n struct settings_interface\n {\n    virtual bool has_val (int name) const = 0;\n    virtual void set_bool (int name, bool val) = 0;\n    virtual void set_str (int name, std::string val) = 0;\n    virtual void set_int (int name, int val) = 0;\n-   virtual std::string const& get_str (int name) const = 0;\n    virtual bool get_bool (int name) const = 0;\n+   virtual std::string const& get_str (int name) const = 0;\n    virtual int get_int (int name) const = 0;\n };\n 
    \n [report issue]
    \n
    \n

    file_open_mode_t

    \n

    Declared in "libtorrent/disk_interface.hpp"

    \n@@ -10139,26 +10139,26 @@\n torrent_handle::move_storage. This is useful to synchronize with the\n actual disk. The storage_path() member return the new path of the\n storage.

    \n
    \n struct storage_moved_alert final : torrent_alert\n {\n    std::string message () const override;\n-   char const* old_path () const;\n    char const* storage_path () const;\n+   char const* old_path () const;\n \n    static constexpr alert_category_t static_category  = alert_category::storage;\n };\n 
    \n-\n-[report issue]
    \n-

    old_path() storage_path()

    \n+\n+[report issue]
    \n+

    storage_path() old_path()

    \n
    \n-char const* old_path () const;\n char const* storage_path () const;\n+char const* old_path () const;\n 
    \n

    the path the torrent was moved to and from, respectively.

    \n [report issue]
    \n
    \n
    \n

    storage_moved_failed_alert

    \n

    Declared in "libtorrent/alert_types.hpp"

    \n@@ -11796,27 +11796,27 @@\n

    posted in response to a call to session::dht_live_nodes(). It contains the\n live nodes from the DHT routing table of one of the DHT nodes running\n locally.

    \n
    \n struct dht_live_nodes_alert final : alert\n {\n    std::string message () const override;\n-   std::vector<std::pair<sha1_hash, udp::endpoint>> nodes () const;\n    int num_nodes () const;\n+   std::vector<std::pair<sha1_hash, udp::endpoint>> nodes () const;\n \n    static constexpr alert_category_t static_category  = alert_category::dht;\n    sha1_hash node_id;\n };\n 
    \n \n [report issue]
    \n

    num_nodes() nodes()

    \n
    \n-std::vector<std::pair<sha1_hash, udp::endpoint>> nodes () const;\n int num_nodes () const;\n+std::vector<std::pair<sha1_hash, udp::endpoint>> nodes () const;\n 
    \n

    the number of nodes in the routing table and the actual nodes.

    \n [report issue]
    \n
    node_id
    \n
    the local DHT node's node-ID this routing table belongs to
    \n
    \n [report issue]
    \n@@ -11845,32 +11845,32 @@\n

    Declared in "libtorrent/alert_types.hpp"

    \n

    posted as a response to a call to session::dht_sample_infohashes() with\n the information from the DHT response message.

    \n
    \n struct dht_sample_infohashes_alert final : alert\n {\n    std::string message () const override;\n-   std::vector<sha1_hash> samples () const;\n    int num_samples () const;\n+   std::vector<sha1_hash> samples () const;\n    int num_nodes () const;\n    std::vector<std::pair<sha1_hash, udp::endpoint>> nodes () const;\n \n    static constexpr alert_category_t static_category  = alert_category::dht_operation;\n    sha1_hash node_id;\n    aux::noexcept_movable<udp::endpoint> endpoint;\n    time_duration const interval;\n    int const num_infohashes;\n };\n 
    \n \n [report issue]
    \n

    num_samples() samples()

    \n
    \n-std::vector<sha1_hash> samples () const;\n int num_samples () const;\n+std::vector<sha1_hash> samples () const;\n 
    \n

    returns the number of info-hashes returned by the node, as well as the\n actual info-hashes. num_samples() is more efficient than\n samples().size().

    \n [report issue]
    \n
    \n

    num_nodes()

    \n@@ -11931,16 +11931,16 @@\n

    this alert is posted to indicate to the client that some alerts were\n dropped. Dropped meaning that the alert failed to be delivered to the\n client. The most common cause of such failure is that the internal alert\n queue grew too big (controlled by alert_queue_size).

    \n
    \n struct alerts_dropped_alert final : alert\n {\n-   static_assert (num_alert_types <= abi_alert_count, "need to increase bitset. This is an ABI break");\n    std::string message () const override;\n+   static_assert (num_alert_types <= abi_alert_count, "need to increase bitset. This is an ABI break");\n \n    static constexpr alert_category_t static_category  = alert_category::error;\n    std::bitset<abi_alert_count> dropped_alerts;\n };\n 
    \n [report issue]
    \n
    dropped_alerts
    \n@@ -12151,16 +12151,16 @@\n
    list of trackers and their status for the torrent
    \n
    \n [report issue]
    \n
    \n

    alert_cast()

    \n

    Declared in "libtorrent/alert.hpp"

    \n
    \n-template <typename T> T const* alert_cast (alert const* a);\n template <typename T> T* alert_cast (alert* a);\n+template <typename T> T const* alert_cast (alert const* a);\n 
    \n

    When you get an alert, you can use alert_cast<> to attempt to cast the\n pointer to a specific alert type, in order to query it for more\n information.

    \n
    \n

    Note

    \n

    alert_cast<> can only cast to an exact alert type, not a base class

    \n@@ -12537,25 +12537,25 @@\n
    \n

    counters

    \n

    Declared in "libtorrent/performance_counters.hpp"

    \n
    \n struct counters\n {\n    counters () ;\n-   counters& operator= (counters const&) & ;\n    counters (counters const&) ;\n+   counters& operator= (counters const&) & ;\n    std::int64_t operator[] (int i) const ;\n    std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n-   void blend_stats_counter (int c, std::int64_t value, int ratio) ;\n    void set_value (int c, std::int64_t value) ;\n+   void blend_stats_counter (int c, std::int64_t value, int ratio) ;\n };\n 
    \n-\n-[report issue]
    \n-

    operator[]() inc_stats_counter()

    \n+\n+[report issue]
    \n+

    inc_stats_counter() operator[]()

    \n
    \n std::int64_t operator[] (int i) const ;\n std::int64_t inc_stats_counter (int c, std::int64_t value = 1) ;\n 
    \n

    returns the new value

    \n [report issue]
    \n
    \n@@ -12641,20 +12641,20 @@\n a single rule that allows all addresses (0.0.0.0 - 255.255.255.255 for\n the IPv4 range, and the equivalent range covering all addresses for the\n IPv6 range).

    \n

    A default constructed ip_filter does not filter any address.

    \n
    \n struct ip_filter\n {\n+   ip_filter (ip_filter const&);\n+   ip_filter ();\n+   ip_filter& operator= (ip_filter&&);\n    ~ip_filter ();\n    ip_filter& operator= (ip_filter const&);\n    ip_filter (ip_filter&&);\n-   ip_filter& operator= (ip_filter&&);\n-   ip_filter ();\n-   ip_filter (ip_filter const&);\n    bool empty () const;\n    void add_rule (address const& first, address const& last, std::uint32_t flags);\n    std::uint32_t access (address const& addr) const;\n    filter_tuple_t export_filter () const;\n \n    enum access_flags\n    {\n@@ -12738,20 +12738,20 @@\n 

    the port filter maps non-overlapping port ranges to flags. This\n is primarily used to indicate whether a range of ports should\n be connected to or not. The default is to have the full port\n range (0-65535) set to flag 0.

    \n
    \n class port_filter\n {\n-   port_filter& operator= (port_filter&&);\n    port_filter ();\n-   ~port_filter ();\n    port_filter& operator= (port_filter const&);\n-   port_filter (port_filter&&);\n+   port_filter& operator= (port_filter&&);\n+   ~port_filter ();\n    port_filter (port_filter const&);\n+   port_filter (port_filter&&);\n    void add_rule (std::uint16_t first, std::uint16_t last, std::uint32_t flags);\n    std::uint32_t access (std::uint16_t port) const;\n \n    enum access_flags\n    {\n       blocked,\n    };\n@@ -12820,45 +12820,45 @@\n variant type, it can be either a list, a dictionary (std::map), an integer\n or a string.

    \n
    \n class entry\n {\n    data_type type () const;\n    entry (dictionary_type);\n-   entry (integer_type);\n-   entry (span<char const>);\n    entry (list_type);\n    entry (preformatted_type);\n+   entry (integer_type);\n+   entry (span<char const>);\n    entry (U v);\n    entry (data_type t);\n    entry (bdecode_node const& n);\n-   entry& operator= (entry&&) & noexcept;\n-   entry& operator= (entry const&) &;\n-   entry& operator= (list_type) &;\n+   entry& operator= (dictionary_type) &;\n+   entry& operator= (bdecode_node const&) &;\n    entry& operator= (span<char const>) &;\n+   entry& operator= (list_type) &;\n    entry& operator= (integer_type) &;\n-   entry& operator= (bdecode_node const&) &;\n-   entry& operator= (dictionary_type) &;\n    entry& operator= (preformatted_type) &;\n+   entry& operator= (entry&&) & noexcept;\n+   entry& operator= (entry const&) &;\n    entry& operator= (U v) &;\n-   dictionary_type const& dict () const;\n-   preformatted_type const& preformatted () const;\n-   dictionary_type& dict ();\n+   list_type const& list () const;\n    list_type& list ();\n    string_type& string ();\n-   string_type const& string () const;\n-   integer_type& integer ();\n    integer_type const& integer () const;\n+   integer_type& integer ();\n+   dictionary_type& dict ();\n+   string_type const& string () const;\n+   preformatted_type const& preformatted () const;\n    preformatted_type& preformatted ();\n-   list_type const& list () const;\n+   dictionary_type const& dict () const;\n    void swap (entry& e);\n-   entry const& operator[] (string_view key) const;\n    entry& operator[] (string_view key);\n-   entry* find_key (string_view key);\n+   entry const& operator[] (string_view key) const;\n    entry const* find_key (string_view key) const;\n+   entry* find_key (string_view key);\n    std::string to_string (bool single_line = false) const;\n \n    enum data_type\n    {\n       int_t,\n       string_t,\n       list_t,\n@@ -12875,18 +12875,18 @@\n 
    \n

    returns the concrete type of the entry

    \n [report issue]
    \n
    \n

    entry()

    \n
    \n entry (dictionary_type);\n-entry (integer_type);\n-entry (span<char const>);\n entry (list_type);\n entry (preformatted_type);\n+entry (integer_type);\n+entry (span<char const>);\n 
    \n

    constructors directly from a specific type.\n The content of the argument is copied into the\n newly constructed entry

    \n [report issue]
    \n
    \n

    entry()

    \n@@ -12902,43 +12902,43 @@\n entry (bdecode_node const& n);\n
    \n

    construct from bdecode_node parsed form (see bdecode())

    \n [report issue]
    \n
    \n

    operator=()

    \n
    \n-entry& operator= (entry&&) & noexcept;\n-entry& operator= (entry const&) &;\n-entry& operator= (list_type) &;\n+entry& operator= (dictionary_type) &;\n+entry& operator= (bdecode_node const&) &;\n entry& operator= (span<char const>) &;\n+entry& operator= (list_type) &;\n entry& operator= (integer_type) &;\n-entry& operator= (bdecode_node const&) &;\n-entry& operator= (dictionary_type) &;\n entry& operator= (preformatted_type) &;\n+entry& operator= (entry&&) & noexcept;\n+entry& operator= (entry const&) &;\n 
    \n

    copies the structure of the right hand side into this\n entry.

    \n+\n \n-\n-\n \n-[report issue]
    \n-
    \n-

    list() string() preformatted() integer() dict()

    \n+\n+[report issue]
    \n+
    \n+

    dict() list() integer() preformatted() string()

    \n
    \n-dictionary_type const& dict () const;\n-preformatted_type const& preformatted () const;\n-dictionary_type& dict ();\n+list_type const& list () const;\n list_type& list ();\n string_type& string ();\n-string_type const& string () const;\n-integer_type& integer ();\n integer_type const& integer () const;\n+integer_type& integer ();\n+dictionary_type& dict ();\n+string_type const& string () const;\n+preformatted_type const& preformatted () const;\n preformatted_type& preformatted ();\n-list_type const& list () const;\n+dictionary_type const& dict () const;\n 
    \n

    The integer(), string(), list() and dict() functions\n are accessors that return the respective type. If the entry object\n isn't of the type you request, the accessor will throw\n system_error. You can ask an entry for its type through the\n type() function.

    \n

    If you want to create an entry you give it the type you want it to\n@@ -12982,32 +12982,32 @@\n void swap (entry& e);\n \n

    swaps the content of this with e.

    \n [report issue]
    \n
    \n

    operator[]()

    \n
    \n-entry const& operator[] (string_view key) const;\n entry& operator[] (string_view key);\n+entry const& operator[] (string_view key) const;\n 
    \n

    All of these functions requires the entry to be a dictionary, if it\n isn't they will throw system_error.

    \n

    The non-const versions of the operator[] will return a reference\n to either the existing element at the given key or, if there is no\n element with the given key, a reference to a newly inserted element at\n that key.

    \n

    The const version of operator[] will only return a reference to an\n existing element at the given key. If the key is not found, it will\n throw system_error.

    \n [report issue]
    \n
    \n

    find_key()

    \n
    \n-entry* find_key (string_view key);\n entry const* find_key (string_view key) const;\n+entry* find_key (string_view key);\n 
    \n

    These functions requires the entry to be a dictionary, if it isn't\n they will throw system_error.

    \n

    They will look for an element at the given key in the dictionary, if\n the element cannot be found, they will return nullptr. If an element\n with the given key is found, the return a pointer to it.

    \n [report issue]
    \n@@ -13140,16 +13140,16 @@\n .torrent file using bencode().

    \n
    \n struct create_torrent\n {\n    explicit create_torrent (torrent_info const& ti);\n    explicit create_torrent (file_storage& fs, int piece_size = 0\n       , create_flags_t flags = {});\n-   std::vector<char> generate_buf () const;\n    entry generate () const;\n+   std::vector<char> generate_buf () const;\n    file_storage const& files () const;\n    void set_comment (char const* str);\n    void set_creator (char const* str);\n    void set_creation_date (std::time_t timestamp);\n    void set_hash (piece_index_t index, sha1_hash const& h);\n    void set_hash2 (file_index_t file, piece_index_t::diff_type piece, sha256_hash const& h);\n    void add_http_seed (string_view url);\n@@ -13212,16 +13212,16 @@\n entire duration of the create_torrent object.

    \n \n \n [report issue]\n
    \n

    generate_buf() generate()

    \n
    \n-std::vector<char> generate_buf () const;\n entry generate () const;\n+std::vector<char> generate_buf () const;\n 
    \n

    This function will generate the .torrent file as a bencode tree, or a\n bencoded into a buffer.\n In order to encode the entry into a flat file, use the bencode() function.

    \n

    The function returning an entry may be useful to add custom entries\n to the torrent file before bencoding it and saving it to disk.

    \n

    Whether the resulting torrent object is v1, v2 or hybrid depends on\n@@ -13304,18 +13304,18 @@\n 16 kiB blocks. Note that piece sizes must be powers-of-2, so all\n per-piece merkle trees are complete.\n A SHA-256 hash of all zeros is internally used to indicate a hash\n that has not been set. Setting such hash will not be considered set\n when calling generate().\n This function will throw std::system_error if it is called on an\n object constructed with the v1_only flag.

    \n-\n-[report issue]
    \n-
    \n-

    add_url_seed() add_http_seed()

    \n+\n+[report issue]
    \n+
    \n+

    add_http_seed() add_url_seed()

    \n
    \n void add_http_seed (string_view url);\n void add_url_seed (string_view url);\n 
    \n

    This adds a url seed to the torrent. You can have any number of url seeds. For a\n single file torrent, this should be an HTTP url, pointing to a file with identical\n content as the file of the torrent. For a multi-file torrent, it should point to\n@@ -13352,18 +13352,18 @@\n

    \n

    This function sets an X.509 certificate in PEM format to the torrent. This makes the\n torrent an SSL torrent. An SSL torrent requires that each peer has a valid certificate\n signed by this root certificate. For SSL torrents, all peers are connecting over SSL\n connections. For more information, see the section on ssl torrents.

    \n

    The string is not the path to the cert, it's the actual content of the\n certificate.

    \n-\n-[report issue]\n-
    \n-

    priv() set_priv()

    \n+\n+[report issue]
    \n+
    \n+

    set_priv() priv()

    \n
    \n bool priv () const;\n void set_priv (bool p);\n 
    \n

    Sets and queries the private flag of the torrent.\n Torrents with the private flag set ask the client to not use any other\n sources than the tracker for peers, and to not use DHT to advertise itself publicly,\n@@ -13412,18 +13412,18 @@\n

    \n int piece_size (piece_index_t i) const;\n int piece_length () const;\n 
    \n

    piece_length() returns the piece size of all pieces but the\n last one. piece_size() returns the size of the specified piece.\n these functions are just forwarding to the associated file_storage.

    \n-\n-[report issue]
    \n-
    \n-

    add_collection() add_similar_torrent()

    \n+\n+[report issue]
    \n+
    \n+

    add_similar_torrent() add_collection()

    \n
    \n void add_collection (string_view c);\n void add_similar_torrent (sha1_hash ih);\n 
    \n

    Add similar torrents (by info-hash) or collections of similar torrents.\n Similar torrents are expected to share some files with this torrent.\n Torrents sharing a collection name with this torrent are also expected\n@@ -13514,29 +13514,29 @@\n

    The flags argument should be the same as the flags passed to the create_torrent\n constructor.

    \n [report issue]
    \n
    \n

    set_piece_hashes()

    \n

    Declared in "libtorrent/create_torrent.hpp"

    \n
    \n-inline void set_piece_hashes (create_torrent& t, std::string const& p\n-   , std::function<void(piece_index_t)> const& f);\n void set_piece_hashes (create_torrent& t, std::string const& p\n+   , settings_interface const& settings\n    , std::function<void(piece_index_t)> const& f, error_code& ec);\n inline void set_piece_hashes (create_torrent& t, std::string const& p);\n inline void set_piece_hashes (create_torrent& t, std::string const& p\n    , settings_interface const& settings\n    , std::function<void(piece_index_t)> const& f);\n+inline void set_piece_hashes (create_torrent& t, std::string const& p\n+   , std::function<void(piece_index_t)> const& f);\n void set_piece_hashes (create_torrent& t, std::string const& p\n-   , settings_interface const& settings\n+   , settings_interface const& settings, disk_io_constructor_type disk_io\n    , std::function<void(piece_index_t)> const& f, error_code& ec);\n-inline void set_piece_hashes (create_torrent& t, std::string const& p, error_code& ec);\n void set_piece_hashes (create_torrent& t, std::string const& p\n-   , settings_interface const& settings, disk_io_constructor_type disk_io\n    , std::function<void(piece_index_t)> const& f, error_code& ec);\n+inline void set_piece_hashes (create_torrent& t, std::string const& p, error_code& ec);\n 
    \n

    This function will assume that the files added to the torrent file exists at path\n p, read those files and hash the content and set the hashes in the create_torrent\n object. The optional function f is called in between every hash that is set. f\n must have the following signature:

    \n
    \n void Fun(piece_index_t);\n@@ -13550,25 +13550,25 @@\n 

    bitfield

    \n

    Declared in "libtorrent/bitfield.hpp"

    \n

    The bitfield type stores any number of bits as a bitfield\n in a heap allocated array.

    \n
    \n struct bitfield\n {\n+   explicit bitfield (int bits);\n    bitfield (bitfield const& rhs);\n    bitfield (bitfield&& rhs) noexcept = default;\n+   bitfield (char const* b, int bits);\n    bitfield (int bits, bool val);\n    bitfield () noexcept = default;\n-   explicit bitfield (int bits);\n-   bitfield (char const* b, int bits);\n    void assign (char const* b, int const bits);\n-   bool get_bit (int index) const noexcept;\n    bool operator[] (int index) const noexcept;\n-   void set_bit (int index) noexcept;\n+   bool get_bit (int index) const noexcept;\n    void clear_bit (int index) noexcept;\n+   void set_bit (int index) noexcept;\n    bool all_set () const noexcept;\n    bool none_set () const noexcept;\n    int size () const noexcept;\n    int num_words () const noexcept;\n    int num_bytes () const noexcept;\n    bool empty () const noexcept;\n    char const* data () const noexcept;\n@@ -13579,20 +13579,20 @@\n    int find_last_clear () const noexcept;\n    bool operator== (lt::bitfield const& rhs) const;\n };\n 
    \n [report issue]
    \n

    bitfield()

    \n
    \n+explicit bitfield (int bits);\n bitfield (bitfield const& rhs);\n bitfield (bitfield&& rhs) noexcept = default;\n+bitfield (char const* b, int bits);\n bitfield (int bits, bool val);\n bitfield () noexcept = default;\n-explicit bitfield (int bits);\n-bitfield (char const* b, int bits);\n 
    \n

    constructs a new bitfield. The default constructor creates an empty\n bitfield. bits is the size of the bitfield (specified in bits).\n val is the value to initialize the bits to. If not specified\n all bits are initialized to 0.

    \n

    The constructor taking a pointer b and bits copies a bitfield\n from the specified buffer, and bits number of bits (rounded up to\n@@ -13601,30 +13601,30 @@\n

    \n

    assign()

    \n
    \n void assign (char const* b, int const bits);\n 
    \n

    copy bitfield from buffer b of bits number of bits, rounded up to\n the nearest byte boundary.

    \n-\n-[report issue]
    \n-
    \n-

    get_bit() operator[]()

    \n+\n+[report issue]
    \n+
    \n+

    operator[]() get_bit()

    \n
    \n-bool get_bit (int index) const noexcept;\n bool operator[] (int index) const noexcept;\n+bool get_bit (int index) const noexcept;\n 
    \n

    query bit at index. Returns true if bit is 1, otherwise false.

    \n-\n-[report issue]
    \n-
    \n-

    clear_bit() set_bit()

    \n+\n+[report issue]
    \n+
    \n+

    set_bit() clear_bit()

    \n
    \n-void set_bit (int index) noexcept;\n void clear_bit (int index) noexcept;\n+void set_bit (int index) noexcept;\n 
    \n

    set bit at index to 0 (clear_bit) or 1 (set_bit).

    \n [report issue]
    \n
    \n

    all_set()

    \n
    \n bool all_set () const noexcept;\n@@ -13722,41 +13722,41 @@\n 

    The built-in software version of sha1-algorithm was implemented\n by Steve Reid and released as public domain.\n For more info, see src/sha1.cpp.

    \n
    \n class hasher\n {\n    hasher ();\n-   hasher (char const* data, int len);\n-   explicit hasher (span<char const> data);\n-   hasher (hasher const&);\n    hasher& operator= (hasher const&) &;\n-   hasher& update (span<char const> data);\n+   hasher (hasher const&);\n+   explicit hasher (span<char const> data);\n+   hasher (char const* data, int len);\n    hasher& update (char const* data, int len);\n+   hasher& update (span<char const> data);\n    sha1_hash final ();\n    void reset ();\n };\n 
    \n \n [report issue]
    \n

    hasher() operator=()

    \n
    \n-hasher (char const* data, int len);\n-explicit hasher (span<char const> data);\n-hasher (hasher const&);\n hasher& operator= (hasher const&) &;\n+hasher (hasher const&);\n+explicit hasher (span<char const> data);\n+hasher (char const* data, int len);\n 
    \n

    this is the same as default constructing followed by a call to\n update(data, len).

    \n [report issue]
    \n
    \n

    update()

    \n
    \n-hasher& update (span<char const> data);\n hasher& update (char const* data, int len);\n+hasher& update (span<char const> data);\n 
    \n

    append the following bytes to what is being hashed

    \n [report issue]
    \n
    \n

    final()

    \n
    \n sha1_hash final ();\n@@ -13776,42 +13776,42 @@\n 
    \n

    hasher256

    \n

    Declared in "libtorrent/hasher.hpp"

    \n
    \n class hasher256\n {\n    hasher256 ();\n-   hasher256& operator= (hasher256 const&) &;\n+   hasher256 (char const* data, int len);\n    explicit hasher256 (span<char const> data);\n    hasher256 (hasher256 const&);\n-   hasher256 (char const* data, int len);\n-   hasher256& update (span<char const> data);\n+   hasher256& operator= (hasher256 const&) &;\n    hasher256& update (char const* data, int len);\n+   hasher256& update (span<char const> data);\n    sha256_hash final ();\n    void reset ();\n    ~hasher256 ();\n };\n 
    \n-\n-[report issue]
    \n-

    hasher256() operator=()

    \n+\n+[report issue]
    \n+

    operator=() hasher256()

    \n
    \n-hasher256& operator= (hasher256 const&) &;\n+hasher256 (char const* data, int len);\n explicit hasher256 (span<char const> data);\n hasher256 (hasher256 const&);\n-hasher256 (char const* data, int len);\n+hasher256& operator= (hasher256 const&) &;\n 
    \n

    this is the same as default constructing followed by a call to\n update(data, len).

    \n [report issue]
    \n
    \n

    update()

    \n
    \n-hasher256& update (span<char const> data);\n hasher256& update (char const* data, int len);\n+hasher256& update (span<char const> data);\n 
    \n

    append the following bytes to what is being hashed

    \n [report issue]
    \n
    \n

    final()

    \n
    \n sha256_hash final ();\n@@ -14498,18 +14498,18 @@\n 

    Declared in "libtorrent/announce_entry.hpp"

    \n

    this class holds information about one bittorrent tracker, as it\n relates to a specific torrent.

    \n
    \n struct announce_entry\n {\n    ~announce_entry ();\n-   announce_entry (announce_entry const&);\n    announce_entry& operator= (announce_entry const&) &;\n-   explicit announce_entry (string_view u);\n    announce_entry ();\n+   announce_entry (announce_entry const&);\n+   explicit announce_entry (string_view u);\n \n    enum tracker_source\n    {\n       source_torrent,\n       source_client,\n       source_magnet_link,\n       source_tex,\n@@ -14521,23 +14521,23 @@\n    std::uint8_t tier  = 0;\n    std::uint8_t fail_limit  = 0;\n    std::uint8_t source:4;\n    bool verified:1;\n };\n 
    \n \n-\n-[report issue]
    \n-

    announce_entry() ~announce_entry() operator=()

    \n+\n+[report issue]
    \n+

    announce_entry() operator=() ~announce_entry()

    \n
    \n ~announce_entry ();\n-announce_entry (announce_entry const&);\n announce_entry& operator= (announce_entry const&) &;\n-explicit announce_entry (string_view u);\n announce_entry ();\n+announce_entry (announce_entry const&);\n+explicit announce_entry (string_view u);\n 
    \n

    constructs a tracker announce entry with u as the URL.

    \n [report issue]
    \n
    \n

    enum tracker_source

    \n

    Declared in "libtorrent/announce_entry.hpp"

    \n
    \n@@ -19148,24 +19148,24 @@\n \n
    \n struct settings_pack final : settings_interface\n {\n    friend  void apply_pack_impl (settings_pack const*\n       , aux::session_settings_single_thread&\n       , std::vector<void(aux::session_impl::*)()>*);\n-   void set_str (int name, std::string val) override;\n    void set_bool (int name, bool val) override;\n-   void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n    void set_int (int name, int val) override;\n+   void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n+   void set_str (int name, std::string val) override;\n    bool has_val (int name) const override;\n    void clear ();\n    void clear (int name);\n-   bool get_bool (int name) const override;\n-   int get_int (int name) const override;\n    std::string const& get_str (int name) const override;\n+   int get_int (int name) const override;\n+   bool get_bool (int name) const override;\n    void for_each (Fun&& f) const;\n \n    enum type_bases\n    {\n       string_type_base,\n       int_type_base,\n       bool_type_base,\n@@ -19235,23 +19235,23 @@\n       socks5,\n       socks5_pw,\n       http,\n       http_pw,\n    };\n };\n 
    \n-\n \n-[report issue]
    \n-

    set_bool() set_str() set_int()

    \n+\n+[report issue]
    \n+

    set_str() set_int() set_bool()

    \n
    \n-void set_str (int name, std::string val) override;\n void set_bool (int name, bool val) override;\n-void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n void set_int (int name, int val) override;\n+void set_int (int name, flags::bitfield_flag<Type, Tag> const val);\n+void set_str (int name, std::string val) override;\n 
    \n

    set a configuration option in the settings_pack. name is one of\n the enum values from string_types, int_types or bool_types. They must\n match the respective type of the set_* function.

    \n [report issue]
    \n
    \n

    has_val()

    \n@@ -19271,23 +19271,23 @@\n [report issue]
    \n
    \n

    clear()

    \n
    \n void clear (int name);\n 
    \n

    clear a specific setting from the pack

    \n+\n \n-\n-[report issue]
    \n-
    \n-

    get_bool() get_int() get_str()

    \n+[report issue]
    \n+
    \n+

    get_str() get_bool() get_int()

    \n
    \n-bool get_bool (int name) const override;\n-int get_int (int name) const override;\n std::string const& get_str (int name) const override;\n+int get_int (int name) const override;\n+bool get_bool (int name) const override;\n 
    \n

    queries the current configuration option from the settings_pack.\n name is one of the enumeration values from string_types, int_types\n or bool_types. The enum value must match the type of the get_*\n function. If the specified setting field has not been set, the default\n value is returned.

    \n [report issue]
    \n@@ -19764,46 +19764,46 @@\n to be able to copy it as a reference for instance). For that, use the\n non_owning() member function.

    \n

    There are 5 different types of nodes, see type_t.

    \n
    \n struct bdecode_node\n {\n    bdecode_node () = default;\n-   bdecode_node (bdecode_node&&) noexcept;\n    bdecode_node& operator= (bdecode_node&&) & = default;\n+   bdecode_node (bdecode_node&&) noexcept;\n    bdecode_node& operator= (bdecode_node const&) &;\n    bdecode_node (bdecode_node const&);\n    type_t type () const noexcept;\n    explicit operator bool () const noexcept;\n    bdecode_node non_owning () const;\n    std::ptrdiff_t data_offset () const noexcept;\n    span<char const> data_section () const noexcept;\n-   std::int64_t list_int_value_at (int i\n-      , std::int64_t default_val = 0) const;\n-   bdecode_node list_at (int i) const;\n    string_view list_string_value_at (int i\n       , string_view default_val = string_view()) const;\n+   bdecode_node list_at (int i) const;\n    int list_size () const;\n+   std::int64_t list_int_value_at (int i\n+      , std::int64_t default_val = 0) const;\n+   bdecode_node dict_find_string (string_view key) const;\n+   bdecode_node dict_find_int (string_view key) const;\n+   bdecode_node dict_find (string_view key) const;\n    string_view dict_find_string_value (string_view key\n       , string_view default_value = string_view()) const;\n+   bdecode_node dict_find_list (string_view key) const;\n+   bdecode_node dict_find_dict (string_view key) const;\n+   int dict_size () const;\n    std::int64_t dict_find_int_value (string_view key\n       , std::int64_t default_val = 0) const;\n-   std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n-   bdecode_node dict_find_string (string_view key) const;\n-   bdecode_node dict_find_dict (string_view key) const;\n-   bdecode_node dict_find_list (string_view key) const;\n    std::pair<string_view, bdecode_node> dict_at (int i) const;\n-   bdecode_node dict_find_int (string_view key) const;\n-   int dict_size () const;\n-   bdecode_node dict_find (string_view key) const;\n+   std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n    std::int64_t int_value () const;\n-   int string_length () const;\n    char const* string_ptr () const;\n-   string_view string_value () const;\n    std::ptrdiff_t string_offset () const;\n+   int string_length () const;\n+   string_view string_value () const;\n    void clear ();\n    void swap (bdecode_node& n);\n    void reserve (int tokens);\n    void switch_underlying_buffer (char const* buf) noexcept;\n    bool has_soft_error (span<char> error) const;\n \n    enum type_t\n@@ -19818,21 +19818,21 @@\n 
    \n [report issue]
    \n

    bdecode_node()

    \n
    \n bdecode_node () = default;\n 
    \n

    creates a default constructed node, it will have the type none_t.

    \n-\n-[report issue]
    \n-
    \n-

    bdecode_node() operator=()

    \n+\n+[report issue]
    \n+
    \n+

    operator=() bdecode_node()

    \n
    \n-bdecode_node (bdecode_node&&) noexcept;\n bdecode_node& operator= (bdecode_node&&) & = default;\n+bdecode_node (bdecode_node&&) noexcept;\n bdecode_node& operator= (bdecode_node const&) &;\n bdecode_node (bdecode_node const&);\n 
    \n

    For owning nodes, the copy will create a copy of the tree, but the\n underlying buffer remains the same.

    \n [report issue]
    \n
    \n@@ -19866,57 +19866,57 @@\n \n

    returns the buffer and length of the section in the original bencoded\n buffer where this node is defined. For a dictionary for instance, this\n starts with d and ends with e, and has all the content of the\n dictionary in between.\n the data_offset() function returns the byte-offset to this node in,\n starting from the beginning of the buffer that was parsed.

    \n+\n \n \n-\n-[report issue]
    \n-
    \n-

    list_string_value_at() list_size() list_at() list_int_value_at()

    \n+[report issue]
    \n+
    \n+

    list_at() list_string_value_at() list_size() list_int_value_at()

    \n
    \n-std::int64_t list_int_value_at (int i\n-      , std::int64_t default_val = 0) const;\n-bdecode_node list_at (int i) const;\n string_view list_string_value_at (int i\n       , string_view default_val = string_view()) const;\n+bdecode_node list_at (int i) const;\n int list_size () const;\n+std::int64_t list_int_value_at (int i\n+      , std::int64_t default_val = 0) const;\n 
    \n

    functions with the list_ prefix operate on lists. These functions are\n only valid if type() == list_t. list_at() returns the item\n in the list at index i. i may not be greater than or equal to the\n size of the list. size() returns the size of the list.

    \n \n+\n+\n \n-\n-\n+\n \n-\n-\n-\n+\n \n-[report issue]
    \n-
    \n-

    dict_find_int_value() dict_find_string() dict_at() dict_find_string_value() dict_find_list() dict_find_dict() dict_find() dict_at_node() dict_find_int() dict_size()

    \n+\n+[report issue]
    \n+
    \n+

    dict_find_int_value() dict_find() dict_find_dict() dict_find_string() dict_size() dict_find_list() dict_at() dict_find_int() dict_find_string_value() dict_at_node()

    \n
    \n+bdecode_node dict_find_string (string_view key) const;\n+bdecode_node dict_find_int (string_view key) const;\n+bdecode_node dict_find (string_view key) const;\n string_view dict_find_string_value (string_view key\n       , string_view default_value = string_view()) const;\n+bdecode_node dict_find_list (string_view key) const;\n+bdecode_node dict_find_dict (string_view key) const;\n+int dict_size () const;\n std::int64_t dict_find_int_value (string_view key\n       , std::int64_t default_val = 0) const;\n-std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n-bdecode_node dict_find_string (string_view key) const;\n-bdecode_node dict_find_dict (string_view key) const;\n-bdecode_node dict_find_list (string_view key) const;\n std::pair<string_view, bdecode_node> dict_at (int i) const;\n-bdecode_node dict_find_int (string_view key) const;\n-int dict_size () const;\n-bdecode_node dict_find (string_view key) const;\n+std::pair<bdecode_node, bdecode_node> dict_at_node (int i) const;\n 
    \n

    Functions with the dict_ prefix operates on dictionaries. They are\n only valid if type() == dict_t. In case a key you're looking up\n contains a 0 byte, you cannot use the 0-terminated string overloads,\n but have to use string_view instead. dict_find_list will return a\n valid bdecode_node if the key is found _and_ it is a list. Otherwise\n it will return a default-constructed bdecode_node.

    \n@@ -19931,25 +19931,25 @@\n
    \n

    int_value()

    \n
    \n std::int64_t int_value () const;\n 
    \n

    this function is only valid if type() == int_t. It returns the\n value of the integer.

    \n-\n-\n+\n \n-[report issue]
    \n-
    \n-

    string_ptr() string_length() string_value() string_offset()

    \n+\n+[report issue]
    \n+
    \n+

    string_offset() string_value() string_length() string_ptr()

    \n
    \n-int string_length () const;\n char const* string_ptr () const;\n-string_view string_value () const;\n std::ptrdiff_t string_offset () const;\n+int string_length () const;\n+string_view string_value () const;\n 
    \n

    these functions are only valid if type() == string_t. They return\n the string values. Note that string_ptr() is not 0-terminated.\n string_length() returns the number of bytes in the string.\n string_offset() returns the byte offset from the start of the parsed\n bencoded buffer this string can be found.

    \n [report issue]
    \n@@ -20388,21 +20388,21 @@\n \n [report issue]
    \n
    \n

    read_resume_data()

    \n

    Declared in "libtorrent/read_resume_data.hpp"

    \n
    \n add_torrent_params read_resume_data (bdecode_node const& rd\n-   , int piece_limit = 0x200000);\n-add_torrent_params read_resume_data (span<char const> buffer\n-   , load_torrent_limits const& cfg = {});\n-add_torrent_params read_resume_data (bdecode_node const& rd\n    , error_code& ec, int piece_limit = 0x200000);\n add_torrent_params read_resume_data (span<char const> buffer\n    , error_code& ec, load_torrent_limits const& cfg = {});\n+add_torrent_params read_resume_data (bdecode_node const& rd\n+   , int piece_limit = 0x200000);\n+add_torrent_params read_resume_data (span<char const> buffer\n+   , load_torrent_limits const& cfg = {});\n 
    \n

    these functions are used to parse resume data and populate the appropriate\n fields in an add_torrent_params object. This object can then be used to add\n the actual torrent_info object to and pass to session::add_torrent() or\n session::async_add_torrent().

    \n

    If the client wants to override any field that was loaded from the resume\n data, e.g. save_path, those fields must be changed after loading resume\n@@ -20410,35 +20410,35 @@\n

    The piece_limit parameter determines the largest number of pieces\n allowed in the torrent that may be loaded as part of the resume data, if\n it contains an info field. The overloads that take a flat buffer are\n instead configured with limits on torrent sizes via load_torrent limits.

    \n

    In order to support large torrents, it may also be necessary to raise the\n settings_pack::max_piece_count setting and pass a higher limit to calls\n to torrent_info::parse_info_section().

    \n-\n-[report issue]
    \n-
    \n-

    write_resume_data_buf() write_resume_data()

    \n+\n+[report issue]
    \n+
    \n+

    write_resume_data() write_resume_data_buf()

    \n

    Declared in "libtorrent/write_resume_data.hpp"

    \n
    \n-entry write_resume_data (add_torrent_params const& atp);\n std::vector<char> write_resume_data_buf (add_torrent_params const& atp);\n+entry write_resume_data (add_torrent_params const& atp);\n 
    \n

    this function turns the resume data in an add_torrent_params object\n into a bencoded structure

    \n \n [report issue]
    \n
    \n

    write_torrent_file() write_torrent_file_buf()

    \n

    Declared in "libtorrent/write_resume_data.hpp"

    \n
    \n-entry write_torrent_file (add_torrent_params const& atp);\n std::vector<char> write_torrent_file_buf (add_torrent_params const& atp\n    , write_torrent_flags_t flags);\n entry write_torrent_file (add_torrent_params const& atp, write_torrent_flags_t flags);\n+entry write_torrent_file (add_torrent_params const& atp);\n 
    \n

    writes only the fields to create a .torrent file. This function may fail\n with a std::system_error exception if:

    \n
      \n
    • The add_torrent_params object passed to this function does not contain the\n info dictionary (the ti field)
    • \n
    • The piece layers are not complete for all files that need them
    • \n@@ -20510,18 +20510,18 @@\n \n

      Verifies the signature on the given message using pk

      \n [report issue]
    \n
    \n

    ed25519_add_scalar()

    \n

    Declared in "libtorrent/kademlia/ed25519.hpp"

    \n
    \n-secret_key ed25519_add_scalar (secret_key const& sk\n-   , std::array<char, 32> const& scalar);\n public_key ed25519_add_scalar (public_key const& pk\n    , std::array<char, 32> const& scalar);\n+secret_key ed25519_add_scalar (secret_key const& sk\n+   , std::array<char, 32> const& scalar);\n 
    \n

    Adds a scalar to the given key pair where scalar is a 32 byte buffer\n (possibly generated with ed25519_create_seed), generating a new key pair.

    \n

    You can calculate the public key sum without knowing the private key and\n vice versa by passing in null for the key you don't know. This is useful\n when a third party (an authoritative server for example) needs to enforce\n randomness on a key pair while only knowing the public key of the other\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -22,87 +22,87 @@\n * _\be_\bn_\bu_\bm_\b _\bs_\bo_\bc_\bk_\bs_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be\n * _\be_\bn_\bu_\bm_\b _\bp_\bc_\bp_\b__\be_\br_\br_\bo_\br_\bs\n * _\be_\bn_\bu_\bm_\b _\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be_\b__\be_\bn_\bu_\bm\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs\n o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)\n o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by\n- o _\b~_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by_\b(_\b)_\b _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n+ o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\b~_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by_\b(_\b)_\b _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by_\b(_\b)\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn\n o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b(_\b)\n o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b(_\b)\n o _\b~_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b(_\b)\n o _\ba_\bb_\bo_\br_\bt_\b(_\b)\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bh_\ba_\bn_\bd_\bl_\be\n o _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b)\n o _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bs_\bt_\ba_\bt_\be_\b(_\b)\n- o _\bg_\be_\bt_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)_\b _\br_\be_\bf_\br_\be_\bs_\bh_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)\n+ o _\br_\be_\bf_\br_\be_\bs_\bh_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)_\b _\bg_\be_\bt_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)\n o _\bp_\bo_\bs_\bt_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bu_\bp_\bd_\ba_\bt_\be_\bs_\b(_\b)\n o _\bp_\bo_\bs_\bt_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bs_\bt_\ba_\bt_\bs_\b(_\b)\n o _\bp_\bo_\bs_\bt_\b__\bd_\bh_\bt_\b__\bs_\bt_\ba_\bt_\bs_\b(_\b)\n o _\bs_\be_\bt_\b__\bd_\bh_\bt_\b__\bs_\bt_\ba_\bt_\be_\b(_\b)\n o _\bf_\bi_\bn_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)_\b _\bg_\be_\bt_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\bs_\b(_\b)\n o _\ba_\bs_\by_\bn_\bc_\b__\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)_\b _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n- o _\bi_\bs_\b__\bp_\ba_\bu_\bs_\be_\bd_\b(_\b)_\b _\br_\be_\bs_\bu_\bm_\be_\b(_\b)_\b _\bp_\ba_\bu_\bs_\be_\b(_\b)\n+ o _\br_\be_\bs_\bu_\bm_\be_\b(_\b)_\b _\bp_\ba_\bu_\bs_\be_\b(_\b)_\b _\bi_\bs_\b__\bp_\ba_\bu_\bs_\be_\bd_\b(_\b)\n o _\bi_\bs_\b__\bd_\bh_\bt_\b__\br_\bu_\bn_\bn_\bi_\bn_\bg_\b(_\b)\n o _\bs_\be_\bt_\b__\bd_\bh_\bt_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b(_\b)\n o _\ba_\bd_\bd_\b__\bd_\bh_\bt_\b__\bn_\bo_\bd_\be_\b(_\b)\n o _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bi_\bt_\be_\bm_\b(_\b)\n o _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bi_\bt_\be_\bm_\b(_\b)\n o _\bd_\bh_\bt_\b__\bp_\bu_\bt_\b__\bi_\bt_\be_\bm_\b(_\b)\n o _\bd_\bh_\bt_\b__\bp_\bu_\bt_\b__\bi_\bt_\be_\bm_\b(_\b)\n- o _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bp_\be_\be_\br_\bs_\b(_\b)_\b _\bd_\bh_\bt_\b__\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b)\n+ o _\bd_\bh_\bt_\b__\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b)_\b _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bp_\be_\be_\br_\bs_\b(_\b)\n o _\bd_\bh_\bt_\b__\bl_\bi_\bv_\be_\b__\bn_\bo_\bd_\be_\bs_\b(_\b)\n o _\bd_\bh_\bt_\b__\bs_\ba_\bm_\bp_\bl_\be_\b__\bi_\bn_\bf_\bo_\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)\n o _\bd_\bh_\bt_\b__\bd_\bi_\br_\be_\bc_\bt_\b__\br_\be_\bq_\bu_\be_\bs_\bt_\b(_\b)\n o _\ba_\bd_\bd_\b__\be_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn_\b(_\b)\n- o _\bs_\be_\bt_\b__\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)_\b _\bg_\be_\bt_\b__\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)\n+ o _\bg_\be_\bt_\b__\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)\n o _\bs_\be_\bt_\b__\bp_\bo_\br_\bt_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)\n- o _\bs_\bs_\bl_\b__\bl_\bi_\bs_\bt_\be_\bn_\b__\bp_\bo_\br_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\be_\bn_\b__\bp_\bo_\br_\bt_\b(_\b)_\b _\bi_\bs_\b__\bl_\bi_\bs_\bt_\be_\bn_\bi_\bn_\bg_\b(_\b)\n+ o _\bi_\bs_\b__\bl_\bi_\bs_\bt_\be_\bn_\bi_\bn_\bg_\b(_\b)_\b _\bs_\bs_\bl_\b__\bl_\bi_\bs_\bt_\be_\bn_\b__\bp_\bo_\br_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\be_\bn_\b__\bp_\bo_\br_\bt_\b(_\b)\n o _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)\n o _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bt_\by_\bp_\be_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)_\b _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bt_\by_\bp_\be_\b__\bf_\bi_\bl_\bt_\be_\br_\b(_\b)\n o _\bc_\br_\be_\ba_\bt_\be_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)\n o _\bd_\be_\bl_\be_\bt_\be_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)\n o _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b(_\b)\n o _\br_\be_\bm_\bo_\bv_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n- o _\bg_\be_\bt_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b)_\b _\ba_\bp_\bp_\bl_\by_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b)\n- o _\bs_\be_\bt_\b__\ba_\bl_\be_\br_\bt_\b__\bn_\bo_\bt_\bi_\bf_\by_\b(_\b)_\b _\bw_\ba_\bi_\bt_\b__\bf_\bo_\br_\b__\ba_\bl_\be_\br_\bt_\b(_\b)_\b _\bp_\bo_\bp_\b__\ba_\bl_\be_\br_\bt_\bs_\b(_\b)\n- o _\bd_\be_\bl_\be_\bt_\be_\b__\bp_\bo_\br_\bt_\b__\bm_\ba_\bp_\bp_\bi_\bn_\bg_\b(_\b)_\b _\ba_\bd_\bd_\b__\bp_\bo_\br_\bt_\b__\bm_\ba_\bp_\bp_\bi_\bn_\bg_\b(_\b)\n+ o _\ba_\bp_\bp_\bl_\by_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b)_\b _\bg_\be_\bt_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b)\n+ o _\bw_\ba_\bi_\bt_\b__\bf_\bo_\br_\b__\ba_\bl_\be_\br_\bt_\b(_\b)_\b _\bp_\bo_\bp_\b__\ba_\bl_\be_\br_\bt_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\ba_\bl_\be_\br_\bt_\b__\bn_\bo_\bt_\bi_\bf_\by_\b(_\b)\n+ o _\ba_\bd_\bd_\b__\bp_\bo_\br_\bt_\b__\bm_\ba_\bp_\bp_\bi_\bn_\bg_\b(_\b)_\b _\bd_\be_\bl_\be_\bt_\be_\b__\bp_\bo_\br_\bt_\b__\bm_\ba_\bp_\bp_\bi_\bn_\bg_\b(_\b)\n o _\br_\be_\bo_\bp_\be_\bn_\b__\bn_\be_\bt_\bw_\bo_\br_\bk_\b__\bs_\bo_\bc_\bk_\be_\bt_\bs_\b(_\b)\n o _\bn_\ba_\bt_\bi_\bv_\be_\b__\bh_\ba_\bn_\bd_\bl_\be_\b(_\b)\n * _\br_\be_\ba_\bd_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b__\bb_\bu_\bf_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)\n * _\bw_\be_\bb_\b__\bs_\be_\be_\bd_\b__\be_\bn_\bt_\br_\by\n o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b(_\b)\n o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bt_\by_\bp_\be_\b__\bt\n * _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bl_\bi_\bm_\bi_\bt_\bs\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo\n o _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo_\b(_\b)\n o _\b~_\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo_\b(_\b)\n- o _\bf_\bi_\bl_\be_\bs_\b(_\b)_\b _\bo_\br_\bi_\bg_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n+ o _\bo_\br_\bi_\bg_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)_\b _\bf_\bi_\bl_\be_\bs_\b(_\b)\n o _\br_\be_\bn_\ba_\bm_\be_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\br_\be_\bm_\ba_\bp_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n- o _\bc_\bl_\be_\ba_\br_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)\n+ o _\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)_\b _\bc_\bl_\be_\ba_\br_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)\n o _\bc_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn_\bs_\b(_\b)_\b _\bs_\bi_\bm_\bi_\bl_\ba_\br_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\bs_\b(_\b)\n- o _\bs_\be_\bt_\b__\bw_\be_\bb_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bw_\be_\bb_\b__\bs_\be_\be_\bd_\bs_\b(_\b)\n+ o _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bs_\be_\bt_\b__\bw_\be_\bb_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\bw_\be_\bb_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)\n o _\bt_\bo_\bt_\ba_\bl_\b__\bs_\bi_\bz_\be_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)\n o _\bb_\bl_\bo_\bc_\bk_\bs_\b__\bp_\be_\br_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n- o _\be_\bn_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bl_\ba_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n+ o _\be_\bn_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)_\b _\bl_\ba_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n o _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)_\b _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\b(_\b)\n o _\bv_\b1_\b(_\b)_\b _\bv_\b2_\b(_\b)\n o _\bn_\bu_\bm_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n o _\bm_\ba_\bp_\b__\bb_\bl_\bo_\bc_\bk_\b(_\b)\n o _\bm_\ba_\bp_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bs_\bs_\bl_\b__\bc_\be_\br_\bt_\b(_\b)\n o _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b)\n o _\bp_\br_\bi_\bv_\b(_\b)\n o _\bi_\bs_\b__\bi_\b2_\bp_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bs_\bi_\bz_\be_\b(_\b)\n- o _\bh_\ba_\bs_\bh_\b__\bf_\bo_\br_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bh_\ba_\bs_\bh_\b__\bf_\bo_\br_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\bt_\br_\b(_\b)\n+ o _\bh_\ba_\bs_\bh_\b__\bf_\bo_\br_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\bt_\br_\b(_\b)_\b _\bh_\ba_\bs_\bh_\b__\bf_\bo_\br_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n o _\bn_\ba_\bm_\be_\b(_\b)\n o _\bc_\br_\be_\ba_\bt_\bi_\bo_\bn_\b__\bd_\ba_\bt_\be_\b(_\b)\n o _\bc_\br_\be_\ba_\bt_\bo_\br_\b(_\b)\n o _\bc_\bo_\bm_\bm_\be_\bn_\bt_\b(_\b)\n o _\bn_\bo_\bd_\be_\bs_\b(_\b)\n o _\ba_\bd_\bd_\b__\bn_\bo_\bd_\be_\b(_\b)\n o _\bp_\ba_\br_\bs_\be_\b__\bi_\bn_\bf_\bo_\b__\bs_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b)\n@@ -110,22 +110,22 @@\n o _\bi_\bn_\bf_\bo_\b__\bs_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bl_\ba_\by_\be_\br_\b(_\b)\n o _\bf_\br_\be_\be_\b__\bp_\bi_\be_\bc_\be_\b__\bl_\ba_\by_\be_\br_\bs_\b(_\b)\n * _\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo\n o _\bi_\b2_\bp_\b__\bd_\be_\bs_\bt_\bi_\bn_\ba_\bt_\bi_\bo_\bn_\b(_\b)\n * _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\b__\bt\n o _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\b__\bt_\b(_\b)\n- o _\bh_\ba_\bs_\b__\bv_\b2_\b(_\b)_\b _\bh_\ba_\bs_\b__\bv_\b1_\b(_\b)_\b _\bh_\ba_\bs_\b(_\b)\n+ o _\bh_\ba_\bs_\b__\bv_\b2_\b(_\b)_\b _\bh_\ba_\bs_\b(_\b)_\b _\bh_\ba_\bs_\b__\bv_\b1_\b(_\b)\n o _\bg_\be_\bt_\b(_\b)\n o _\bg_\be_\bt_\b__\bb_\be_\bs_\bt_\b(_\b)\n o _\bf_\bo_\br_\b__\be_\ba_\bc_\bh_\b(_\b)\n * _\bp_\bi_\be_\bc_\be_\b__\bb_\bl_\bo_\bc_\bk\n * _\bp_\be_\be_\br_\b__\br_\be_\bq_\bu_\be_\bs_\bt\n o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b(_\b)\n- * _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)_\b _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\bs_\be_\bd_\b(_\b)_\b _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b)\n+ * _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b)_\b _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)_\b _\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\bs_\be_\bd_\b(_\b)\n * _\bm_\ba_\bk_\be_\b__\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b(_\b)\n * _\bp_\ba_\br_\bs_\be_\b__\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b(_\b)\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\be_\be_\br_\b__\be_\bq_\bu_\ba_\bl_\b(_\b)\n * _\bt_\br_\bu_\bn_\bc_\ba_\bt_\be_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n * _\bv_\be_\br_\bs_\bi_\bo_\bn_\b(_\b)\n * _\be_\bn_\bu_\bm_\b _\bs_\bo_\bc_\bk_\be_\bt_\b__\bt_\by_\bp_\be_\b__\bt\n * _\be_\bn_\bu_\bm_\b _\bp_\br_\bo_\bt_\bo_\bc_\bo_\bl_\b__\bv_\be_\br_\bs_\bi_\bo_\bn\n@@ -153,31 +153,31 @@\n o _\bo_\bn_\b__\bt_\bi_\bc_\bk_\b(_\b)\n o _\bg_\be_\bt_\b__\bu_\bn_\bc_\bh_\bo_\bk_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b)\n o _\bl_\bo_\ba_\bd_\b__\bs_\bt_\ba_\bt_\be_\b(_\b)\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\bl_\bu_\bg_\bi_\bn\n o _\bn_\be_\bw_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b)\n o _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\ba_\bs_\bs_\b(_\b)\n o _\bt_\bi_\bc_\bk_\b(_\b)\n- o _\bo_\bn_\b__\bp_\ba_\bu_\bs_\be_\b(_\b)_\b _\bo_\bn_\b__\br_\be_\bs_\bu_\bm_\be_\b(_\b)\n+ o _\bo_\bn_\b__\br_\be_\bs_\bu_\bm_\be_\b(_\b)_\b _\bo_\bn_\b__\bp_\ba_\bu_\bs_\be_\b(_\b)\n o _\bo_\bn_\b__\bf_\bi_\bl_\be_\bs_\b__\bc_\bh_\be_\bc_\bk_\be_\bd_\b(_\b)\n o _\bo_\bn_\b__\bs_\bt_\ba_\bt_\be_\b(_\b)\n o _\bo_\bn_\b__\ba_\bd_\bd_\b__\bp_\be_\be_\br_\b(_\b)\n * _\bp_\be_\be_\br_\b__\bp_\bl_\bu_\bg_\bi_\bn\n o _\bt_\by_\bp_\be_\b(_\b)\n o _\ba_\bd_\bd_\b__\bh_\ba_\bn_\bd_\bs_\bh_\ba_\bk_\be_\b(_\b)\n o _\bo_\bn_\b__\bd_\bi_\bs_\bc_\bo_\bn_\bn_\be_\bc_\bt_\b(_\b)\n o _\bo_\bn_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\be_\bd_\b(_\b)\n o _\bo_\bn_\b__\bh_\ba_\bn_\bd_\bs_\bh_\ba_\bk_\be_\b(_\b)\n o _\bo_\bn_\b__\be_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn_\b__\bh_\ba_\bn_\bd_\bs_\bh_\ba_\bk_\be_\b(_\b)\n- o _\bo_\bn_\b__\bh_\ba_\bv_\be_\b__\ba_\bl_\bl_\b(_\b)_\b _\bo_\bn_\b__\bn_\bo_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bc_\bh_\bo_\bk_\be_\b(_\b)\n- _\bo_\bn_\b__\bd_\bo_\bn_\bt_\b__\bh_\ba_\bv_\be_\b(_\b)_\b _\bo_\bn_\b__\ba_\bl_\bl_\bo_\bw_\be_\bd_\b__\bf_\ba_\bs_\bt_\b(_\b)_\b _\bo_\bn_\b__\bu_\bn_\bc_\bh_\bo_\bk_\be_\b(_\b)_\b _\bo_\bn_\b__\bh_\ba_\bv_\be_\b__\bn_\bo_\bn_\be_\b(_\b)\n- _\bo_\bn_\b__\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd_\b(_\b)_\b _\bo_\bn_\b__\br_\be_\bq_\bu_\be_\bs_\bt_\b(_\b)_\b _\bo_\bn_\b__\bh_\ba_\bv_\be_\b(_\b)\n+ o _\bo_\bn_\b__\bh_\ba_\bv_\be_\b__\ba_\bl_\bl_\b(_\b)_\b _\bo_\bn_\b__\bc_\bh_\bo_\bk_\be_\b(_\b)_\b _\bo_\bn_\b__\bn_\bo_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bh_\ba_\bv_\be_\b__\bn_\bo_\bn_\be_\b(_\b)\n+ _\bo_\bn_\b__\bd_\bo_\bn_\bt_\b__\bh_\ba_\bv_\be_\b(_\b)_\b _\bo_\bn_\b__\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd_\b(_\b)_\b _\bo_\bn_\b__\br_\be_\bq_\bu_\be_\bs_\bt_\b(_\b)_\b _\bo_\bn_\b__\bh_\ba_\bv_\be_\b(_\b)_\b _\bo_\bn_\b__\ba_\bl_\bl_\bo_\bw_\be_\bd_\b__\bf_\ba_\bs_\bt\n+ _\b(_\b)_\b _\bo_\bn_\b__\bu_\bn_\bc_\bh_\bo_\bk_\be_\b(_\b)_\b _\bo_\bn_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)\n o _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n- o _\bs_\be_\bn_\bt_\b__\bh_\ba_\bv_\be_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bn_\bo_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)\n- _\bs_\be_\bn_\bt_\b__\bu_\bn_\bc_\bh_\bo_\bk_\be_\b(_\b)\n+ o _\bs_\be_\bn_\bt_\b__\bh_\ba_\bv_\be_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bn_\bo_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bs_\be_\bn_\bt_\b__\bu_\bn_\bc_\bh_\bo_\bk_\be_\b(_\b)\n+ _\bs_\be_\bn_\bt_\b__\bi_\bn_\bt_\be_\br_\be_\bs_\bt_\be_\bd_\b(_\b)\n o _\bs_\be_\bn_\bt_\b__\bp_\ba_\by_\bl_\bo_\ba_\bd_\b(_\b)\n o _\bc_\ba_\bn_\b__\bd_\bi_\bs_\bc_\bo_\bn_\bn_\be_\bc_\bt_\b(_\b)\n o _\bo_\bn_\b__\be_\bx_\bt_\be_\bn_\bd_\be_\bd_\b(_\b)\n o _\bo_\bn_\b__\bu_\bn_\bk_\bn_\bo_\bw_\bn_\b__\bm_\be_\bs_\bs_\ba_\bg_\be_\b(_\b)\n o _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b(_\b)_\b _\bo_\bn_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\ba_\bs_\bs_\b(_\b)\n o _\bt_\bi_\bc_\bk_\b(_\b)\n o _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bq_\bu_\be_\bs_\bt_\b(_\b)\n@@ -196,106 +196,106 @@\n o _\br_\be_\bn_\ba_\bm_\be_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bm_\ba_\bp_\b__\bb_\bl_\bo_\bc_\bk_\b(_\b)\n o _\bm_\ba_\bp_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bn_\bu_\bm_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n o _\be_\bn_\bd_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n o _\bt_\bo_\bt_\ba_\bl_\b__\bs_\bi_\bz_\be_\b(_\b)\n- o _\bs_\be_\bt_\b__\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)_\b _\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)\n+ o _\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)\n o _\be_\bn_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n o _\bl_\ba_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bs_\bi_\bz_\be_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bs_\bi_\bz_\be_\b2_\b(_\b)\n o _\bb_\bl_\bo_\bc_\bk_\bs_\b__\bi_\bn_\b__\bp_\bi_\be_\bc_\be_\b2_\b(_\b)\n o _\bb_\bl_\bo_\bc_\bk_\bs_\b__\bp_\be_\br_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n- o _\bn_\ba_\bm_\be_\b(_\b)_\b _\bs_\be_\bt_\b__\bn_\ba_\bm_\be_\b(_\b)\n+ o _\bs_\be_\bt_\b__\bn_\ba_\bm_\be_\b(_\b)_\b _\bn_\ba_\bm_\be_\b(_\b)\n o _\bs_\bw_\ba_\bp_\b(_\b)\n o _\bc_\ba_\bn_\bo_\bn_\bi_\bc_\ba_\bl_\bi_\bz_\be_\b(_\b)\n- o _\bm_\bt_\bi_\bm_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)_\b _\bh_\ba_\bs_\bh_\b(_\b)_\b _\bp_\ba_\bd_\b__\bf_\bi_\bl_\be_\b__\ba_\bt_\b(_\b)_\b _\br_\bo_\bo_\bt_\b__\bp_\bt_\br_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bs_\bi_\bz_\be_\b(_\b)\n- _\bs_\by_\bm_\bl_\bi_\bn_\bk_\b(_\b)_\b _\br_\bo_\bo_\bt_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bn_\ba_\bm_\be_\b(_\b)\n+ o _\bf_\bi_\bl_\be_\b__\bs_\bi_\bz_\be_\b(_\b)_\b _\bm_\bt_\bi_\bm_\be_\b(_\b)_\b _\br_\bo_\bo_\bt_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)_\b _\bs_\by_\bm_\bl_\bi_\bn_\bk_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bn_\ba_\bm_\be_\b(_\b)\n+ _\br_\bo_\bo_\bt_\b__\bp_\bt_\br_\b(_\b)_\b _\bp_\ba_\bd_\b__\bf_\bi_\bl_\be_\b__\ba_\bt_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)_\b _\bh_\ba_\bs_\bh_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bn_\bu_\bm_\b__\bb_\bl_\bo_\bc_\bk_\bs_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)\n- o _\bf_\bi_\bl_\be_\b__\bf_\bi_\br_\bs_\bt_\b__\bb_\bl_\bo_\bc_\bk_\b__\bn_\bo_\bd_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bf_\bi_\br_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bn_\bo_\bd_\be_\b(_\b)\n+ o _\bf_\bi_\bl_\be_\b__\bf_\bi_\br_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bn_\bo_\bd_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bf_\bi_\br_\bs_\bt_\b__\bb_\bl_\bo_\bc_\bk_\b__\bn_\bo_\bd_\be_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bp_\ba_\bt_\bh_\b__\bh_\ba_\bs_\bh_\b(_\b)\n o _\ba_\bl_\bl_\b__\bp_\ba_\bt_\bh_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bf_\bl_\ba_\bg_\bs_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\ba_\bb_\bs_\bo_\bl_\bu_\bt_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)\n- o _\bf_\bi_\bl_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\ba_\bt_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\ba_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n+ o _\bf_\bi_\bl_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\ba_\bt_\b__\bp_\bi_\be_\bc_\be_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\ba_\bt_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\bf_\bo_\br_\b__\br_\bo_\bo_\bt_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bi_\bn_\bd_\be_\bx_\b__\ba_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bs_\ba_\bn_\bi_\bt_\bi_\bz_\be_\b__\bs_\by_\bm_\bl_\bi_\bn_\bk_\bs_\b(_\b)\n o _\bv_\b2_\b(_\b)\n * _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bp_\ba_\br_\ba_\bm_\bs\n * _\bd_\bi_\bs_\ba_\bb_\bl_\be_\bd_\b__\bd_\bi_\bs_\bk_\b__\bi_\bo_\b__\bc_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bo_\br_\b(_\b)\n * _\bm_\bm_\ba_\bp_\b__\bd_\bi_\bs_\bk_\b__\bi_\bo_\b__\bc_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bo_\br_\b(_\b)\n * _\bp_\bo_\bs_\bi_\bx_\b__\bd_\bi_\bs_\bk_\b__\bi_\bo_\b__\bc_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bo_\br_\b(_\b)\n * _\bd_\be_\bf_\ba_\bu_\bl_\bt_\b__\bd_\bi_\bs_\bk_\b__\bi_\bo_\b__\bc_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bo_\br_\b(_\b)\n * _\be_\bn_\bu_\bm_\b _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bm_\bo_\bd_\be_\b__\bt\n * _\be_\bn_\bu_\bm_\b _\bs_\bt_\ba_\bt_\bu_\bs_\b__\bt\n * _\be_\bn_\bu_\bm_\b _\bm_\bo_\bv_\be_\b__\bf_\bl_\ba_\bg_\bs_\b__\bt\n * _\bc_\bl_\bi_\be_\bn_\bt_\b__\bd_\ba_\bt_\ba_\b__\bt\n o _\bc_\bl_\bi_\be_\bn_\bt_\b__\bd_\ba_\bt_\ba_\b__\bt_\b(_\b)\n- o _\bv_\bo_\bi_\bd_\b*_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\bc_\bo_\bn_\bs_\bt_\b*_\b(_\b)\n+ o _\bc_\bo_\bn_\bs_\bt_\b*_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\bv_\bo_\bi_\bd_\b*_\b(_\b)\n * _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs\n * _\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bi_\bn_\bf_\bo\n * _\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bt_\by_\bp_\be_\b__\bf_\bi_\bl_\bt_\be_\br\n o _\ba_\bd_\bd_\b(_\b)_\b _\br_\be_\bm_\bo_\bv_\be_\b(_\b)\n- o _\bd_\bi_\bs_\ba_\bl_\bl_\bo_\bw_\b(_\b)_\b _\ba_\bl_\bl_\bo_\bw_\b(_\b)\n+ o _\ba_\bl_\bl_\bo_\bw_\b(_\b)_\b _\bd_\bi_\bs_\ba_\bl_\bl_\bo_\bw_\b(_\b)\n o _\ba_\bp_\bp_\bl_\by_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bs_\bo_\bc_\bk_\be_\bt_\b__\bt_\by_\bp_\be_\b__\bt\n * _\bb_\bl_\bo_\bc_\bk_\b__\bi_\bn_\bf_\bo\n- o _\bp_\be_\be_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b(_\b)\n+ o _\bs_\be_\bt_\b__\bp_\be_\be_\br_\b(_\b)_\b _\bp_\be_\be_\br_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bb_\bl_\bo_\bc_\bk_\b__\bs_\bt_\ba_\bt_\be_\b__\bt\n * _\bp_\ba_\br_\bt_\bi_\ba_\bl_\b__\bp_\bi_\be_\bc_\be_\b__\bi_\bn_\bf_\bo\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be\n o _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be_\b(_\b)\n o _\ba_\bd_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n o _\br_\be_\ba_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n o _\bh_\ba_\bv_\be_\b__\bp_\bi_\be_\bc_\be_\b(_\b)\n- o _\bp_\bo_\bs_\bt_\b__\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo_\b(_\b)_\b _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo_\b(_\b)\n- o _\bp_\bo_\bs_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)_\b _\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)\n- o _\bg_\be_\bt_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bq_\bu_\be_\bu_\be_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bq_\bu_\be_\bu_\be_\b(_\b)\n- o _\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\b(_\b)_\b _\bc_\bl_\be_\ba_\br_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\bs_\b(_\b)_\b _\br_\be_\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\b(_\b)\n- o _\bf_\bi_\bl_\be_\b__\bp_\br_\bo_\bg_\br_\be_\bs_\bs_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bf_\bi_\bl_\be_\b__\bp_\br_\bo_\bg_\br_\be_\bs_\bs_\b(_\b)\n+ o _\bg_\be_\bt_\b__\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo_\b(_\b)\n+ o _\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)\n+ o _\bp_\bo_\bs_\bt_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bq_\bu_\be_\bu_\be_\b(_\b)_\b _\bg_\be_\bt_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bq_\bu_\be_\bu_\be_\b(_\b)\n+ o _\br_\be_\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\b(_\b)_\b _\bc_\bl_\be_\ba_\br_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\b(_\b)\n+ o _\bp_\bo_\bs_\bt_\b__\bf_\bi_\bl_\be_\b__\bp_\br_\bo_\bg_\br_\be_\bs_\bs_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bp_\br_\bo_\bg_\br_\be_\bs_\bs_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bs_\bt_\ba_\bt_\bu_\bs_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b__\be_\br_\br_\bo_\br_\b(_\b)\n- o _\br_\be_\bp_\bl_\ba_\bc_\be_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)\n- o _\br_\be_\bm_\bo_\bv_\be_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bu_\br_\bl_\b__\bs_\be_\be_\bd_\bs_\b(_\b)\n- o _\br_\be_\bm_\bo_\bv_\be_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)\n+ o _\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\br_\be_\bp_\bl_\ba_\bc_\be_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\bs_\b(_\b)_\b _\ba_\bd_\bd_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)\n+ o _\bu_\br_\bl_\b__\bs_\be_\be_\bd_\bs_\b(_\b)_\b _\br_\be_\bm_\bo_\bv_\be_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)\n+ o _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\br_\be_\bm_\bo_\bv_\be_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\bs_\b(_\b)\n o _\ba_\bd_\bd_\b__\be_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn_\b(_\b)\n o _\bs_\be_\bt_\b__\bm_\be_\bt_\ba_\bd_\ba_\bt_\ba_\b(_\b)\n o _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b)\n o _\br_\be_\bs_\bu_\bm_\be_\b(_\b)_\b _\bp_\ba_\bu_\bs_\be_\b(_\b)\n o _\bf_\bl_\ba_\bg_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b(_\b)_\b _\bu_\bn_\bs_\be_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b(_\b)\n o _\bf_\bl_\bu_\bs_\bh_\b__\bc_\ba_\bc_\bh_\be_\b(_\b)\n o _\bf_\bo_\br_\bc_\be_\b__\br_\be_\bc_\bh_\be_\bc_\bk_\b(_\b)\n o _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)\n o _\bn_\be_\be_\bd_\b__\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)\n- o _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bd_\bo_\bw_\bn_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bt_\bo_\bp_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bu_\bp_\b(_\b)\n- _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bb_\bo_\bt_\bt_\bo_\bm_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b(_\b)\n+ o _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bt_\bo_\bp_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bu_\bp_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bb_\bo_\bt_\bt_\bo_\bm_\b(_\b)\n+ _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b(_\b)_\b _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bd_\bo_\bw_\bn_\b(_\b)\n o _\bq_\bu_\be_\bu_\be_\b__\bp_\bo_\bs_\bi_\bt_\bi_\bo_\bn_\b__\bs_\be_\bt_\b(_\b)\n o _\bs_\be_\bt_\b__\bs_\bs_\bl_\b__\bc_\be_\br_\bt_\bi_\bf_\bi_\bc_\ba_\bt_\be_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bs_\bs_\bl_\b__\bc_\be_\br_\bt_\bi_\bf_\bi_\bc_\ba_\bt_\be_\b(_\b)\n o _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)_\b _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b__\bw_\bi_\bt_\bh_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bl_\ba_\by_\be_\br_\bs_\b(_\b)\n- o _\bp_\bo_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\ba_\bv_\ba_\bi_\bl_\ba_\bb_\bi_\bl_\bi_\bt_\by_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\ba_\bv_\ba_\bi_\bl_\ba_\bb_\bi_\bl_\bi_\bt_\by_\b(_\b)\n- o _\bp_\bi_\be_\bc_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b)_\b _\bg_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\be_\bs_\b(_\b)_\b _\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\bz_\be_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)\n- o _\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\bz_\be_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)_\b _\bg_\be_\bt_\b__\bf_\bi_\bl_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\be_\bs_\b(_\b)_\b _\bf_\bi_\bl_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b)\n+ o _\bp_\bi_\be_\bc_\be_\b__\ba_\bv_\ba_\bi_\bl_\ba_\bb_\bi_\bl_\bi_\bt_\by_\b(_\b)_\b _\bp_\bo_\bs_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\ba_\bv_\ba_\bi_\bl_\ba_\bb_\bi_\bl_\bi_\bt_\by_\b(_\b)\n+ o _\bg_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\be_\bs_\b(_\b)_\b _\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\bz_\be_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b)\n+ o _\bf_\bi_\bl_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\by_\b(_\b)_\b _\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\bz_\be_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)_\b _\bg_\be_\bt_\b__\bf_\bi_\bl_\be_\b__\bp_\br_\bi_\bo_\br_\bi_\bt_\bi_\be_\bs_\b(_\b)\n o _\bf_\bo_\br_\bc_\be_\b__\bl_\bs_\bd_\b__\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b)_\b _\bf_\bo_\br_\bc_\be_\b__\bd_\bh_\bt_\b__\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b)_\b _\bf_\bo_\br_\bc_\be_\b__\br_\be_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b)\n o _\bs_\bc_\br_\ba_\bp_\be_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)\n- o _\bu_\bp_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)_\b _\bs_\be_\bt_\b__\bu_\bp_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)_\b _\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)\n+ o _\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)_\b _\bu_\bp_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)_\b _\bs_\be_\bt_\b__\bu_\bp_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)\n _\bs_\be_\bt_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\b__\bl_\bi_\bm_\bi_\bt_\b(_\b)\n o _\bc_\bo_\bn_\bn_\be_\bc_\bt_\b__\bp_\be_\be_\br_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b__\bp_\be_\be_\br_\bs_\b(_\b)\n- o _\bs_\be_\bt_\b__\bm_\ba_\bx_\b__\bu_\bp_\bl_\bo_\ba_\bd_\bs_\b(_\b)_\b _\bm_\ba_\bx_\b__\bu_\bp_\bl_\bo_\ba_\bd_\bs_\b(_\b)\n+ o _\bm_\ba_\bx_\b__\bu_\bp_\bl_\bo_\ba_\bd_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bm_\ba_\bx_\b__\bu_\bp_\bl_\bo_\ba_\bd_\bs_\b(_\b)\n o _\bm_\ba_\bx_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\bs_\b(_\b)_\b _\bs_\be_\bt_\b__\bm_\ba_\bx_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\bs_\b(_\b)\n o _\bm_\bo_\bv_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b(_\b)\n o _\br_\be_\bn_\ba_\bm_\be_\b__\bf_\bi_\bl_\be_\b(_\b)\n o _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)_\b _\bi_\bn_\bf_\bo_\b__\bh_\ba_\bs_\bh_\b(_\b)\n- o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b(_\b)\n+ o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=_\b(_\b)\n o _\bi_\bd_\b(_\b)\n o _\bn_\ba_\bt_\bi_\bv_\be_\b__\bh_\ba_\bn_\bd_\bl_\be_\b(_\b)\n o _\bu_\bs_\be_\br_\bd_\ba_\bt_\ba_\b(_\b)\n o _\bi_\bn_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b(_\b)\n * _\bh_\ba_\bs_\bh_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)\n * _\bo_\bp_\be_\bn_\b__\bf_\bi_\bl_\be_\b__\bs_\bt_\ba_\bt_\be\n * _\bd_\bi_\bs_\bk_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n@@ -376,15 +376,15 @@\n * _\bp_\bi_\be_\bc_\be_\b__\bf_\bi_\bn_\bi_\bs_\bh_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\br_\be_\bq_\bu_\be_\bs_\bt_\b__\bd_\br_\bo_\bp_\bp_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bb_\bl_\bo_\bc_\bk_\b__\bt_\bi_\bm_\be_\bo_\bu_\bt_\b__\ba_\bl_\be_\br_\bt\n * _\bb_\bl_\bo_\bc_\bk_\b__\bf_\bi_\bn_\bi_\bs_\bh_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bb_\bl_\bo_\bc_\bk_\b__\bd_\bo_\bw_\bn_\bl_\bo_\ba_\bd_\bi_\bn_\bg_\b__\ba_\bl_\be_\br_\bt\n * _\bu_\bn_\bw_\ba_\bn_\bt_\be_\bd_\b__\bb_\bl_\bo_\bc_\bk_\b__\ba_\bl_\be_\br_\bt\n * _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bm_\bo_\bv_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n- o _\bo_\bl_\bd_\b__\bp_\ba_\bt_\bh_\b(_\b)_\b _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)\n+ o _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)_\b _\bo_\bl_\bd_\b__\bp_\ba_\bt_\bh_\b(_\b)\n * _\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bm_\bo_\bv_\be_\bd_\b__\bf_\ba_\bi_\bl_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n o _\bf_\bi_\bl_\be_\b__\bp_\ba_\bt_\bh_\b(_\b)\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bd_\be_\bl_\be_\bt_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bd_\be_\bl_\be_\bt_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\ba_\bl_\be_\br_\bt\n * _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\bf_\ba_\bi_\bl_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\bu_\bs_\be_\bd_\b__\ba_\bl_\be_\br_\bt\n@@ -472,15 +472,15 @@\n * _\bt_\br_\ba_\bc_\bk_\be_\br_\b__\bl_\bi_\bs_\bt_\b__\ba_\bl_\be_\br_\bt\n * _\ba_\bl_\be_\br_\bt_\b__\bc_\ba_\bs_\bt_\b(_\b)\n * _\bo_\bp_\be_\br_\ba_\bt_\bi_\bo_\bn_\b__\bn_\ba_\bm_\be_\b(_\b)\n * _\be_\bn_\bu_\bm_\b _\bo_\bp_\be_\br_\ba_\bt_\bi_\bo_\bn_\b__\bt\n * _\ba_\bl_\be_\br_\bt_\b__\bc_\ba_\bt_\be_\bg_\bo_\br_\by_\b__\bt\n * _\bi_\bn_\bt\n * _\bc_\bo_\bu_\bn_\bt_\be_\br_\bs\n- o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b(_\b)_\b _\bi_\bn_\bc_\b__\bs_\bt_\ba_\bt_\bs_\b__\bc_\bo_\bu_\bn_\bt_\be_\br_\b(_\b)\n+ o _\bi_\bn_\bc_\b__\bs_\bt_\ba_\bt_\bs_\b__\bc_\bo_\bu_\bn_\bt_\be_\br_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b(_\b)\n * _\bs_\bt_\ba_\bt_\bs_\b__\bm_\be_\bt_\br_\bi_\bc\n * _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bs_\bt_\ba_\bt_\bs_\b__\bm_\be_\bt_\br_\bi_\bc_\bs_\b(_\b)\n * _\bf_\bi_\bn_\bd_\b__\bm_\be_\bt_\br_\bi_\bc_\b__\bi_\bd_\bx_\b(_\b)\n * _\be_\bn_\bu_\bm_\b _\bm_\be_\bt_\br_\bi_\bc_\b__\bt_\by_\bp_\be_\b__\bt\n * _\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br\n o _\be_\bm_\bp_\bt_\by_\b(_\b)\n o _\ba_\bd_\bd_\b__\br_\bu_\bl_\be_\b(_\b)\n@@ -493,15 +493,15 @@\n o _\be_\bn_\bu_\bm_\b _\ba_\bc_\bc_\be_\bs_\bs_\b__\bf_\bl_\ba_\bg_\bs\n * _\be_\bn_\bt_\br_\by\n o _\bt_\by_\bp_\be_\b(_\b)\n o _\be_\bn_\bt_\br_\by_\b(_\b)\n o _\be_\bn_\bt_\br_\by_\b(_\b)\n o _\be_\bn_\bt_\br_\by_\b(_\b)\n o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n- o _\bl_\bi_\bs_\bt_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b(_\b)_\b _\bp_\br_\be_\bf_\bo_\br_\bm_\ba_\bt_\bt_\be_\bd_\b(_\b)_\b _\bi_\bn_\bt_\be_\bg_\be_\br_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b(_\b)\n+ o _\bd_\bi_\bc_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b(_\b)_\b _\bi_\bn_\bt_\be_\bg_\be_\br_\b(_\b)_\b _\bp_\br_\be_\bf_\bo_\br_\bm_\ba_\bt_\bt_\be_\bd_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b(_\b)\n o _\bs_\bw_\ba_\bp_\b(_\b)\n o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b(_\b)\n o _\bf_\bi_\bn_\bd_\b__\bk_\be_\by_\b(_\b)\n o _\bt_\bo_\b__\bs_\bt_\br_\bi_\bn_\bg_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bd_\ba_\bt_\ba_\b__\bt_\by_\bp_\be\n * _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b(_\b)\n * _\bb_\be_\bn_\bc_\bo_\bd_\be_\b(_\b)\n@@ -510,33 +510,33 @@\n o _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b__\bb_\bu_\bf_\b(_\b)_\b _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b(_\b)\n o _\bf_\bi_\bl_\be_\bs_\b(_\b)\n o _\bs_\be_\bt_\b__\bc_\bo_\bm_\bm_\be_\bn_\bt_\b(_\b)\n o _\bs_\be_\bt_\b__\bc_\br_\be_\ba_\bt_\bo_\br_\b(_\b)\n o _\bs_\be_\bt_\b__\bc_\br_\be_\ba_\bt_\bi_\bo_\bn_\b__\bd_\ba_\bt_\be_\b(_\b)\n o _\bs_\be_\bt_\b__\bh_\ba_\bs_\bh_\b(_\b)\n o _\bs_\be_\bt_\b__\bh_\ba_\bs_\bh_\b2_\b(_\b)\n- o _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)\n+ o _\ba_\bd_\bd_\b__\bh_\bt_\bt_\bp_\b__\bs_\be_\be_\bd_\b(_\b)_\b _\ba_\bd_\bd_\b__\bu_\br_\bl_\b__\bs_\be_\be_\bd_\b(_\b)\n o _\ba_\bd_\bd_\b__\bn_\bo_\bd_\be_\b(_\b)\n o _\ba_\bd_\bd_\b__\bt_\br_\ba_\bc_\bk_\be_\br_\b(_\b)\n o _\bs_\be_\bt_\b__\br_\bo_\bo_\bt_\b__\bc_\be_\br_\bt_\b(_\b)\n- o _\bp_\br_\bi_\bv_\b(_\b)_\b _\bs_\be_\bt_\b__\bp_\br_\bi_\bv_\b(_\b)\n+ o _\bs_\be_\bt_\b__\bp_\br_\bi_\bv_\b(_\b)_\b _\bp_\br_\bi_\bv_\b(_\b)\n o _\bn_\bu_\bm_\b__\bp_\bi_\be_\bc_\be_\bs_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n o _\bf_\bi_\bl_\be_\b__\bp_\bi_\be_\bc_\be_\b__\br_\ba_\bn_\bg_\be_\b(_\b)\n o _\bt_\bo_\bt_\ba_\bl_\b__\bs_\bi_\bz_\be_\b(_\b)\n o _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bp_\bi_\be_\bc_\be_\b__\bs_\bi_\bz_\be_\b(_\b)\n- o _\ba_\bd_\bd_\b__\bc_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b)_\b _\ba_\bd_\bd_\b__\bs_\bi_\bm_\bi_\bl_\ba_\br_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n+ o _\ba_\bd_\bd_\b__\bs_\bi_\bm_\bi_\bl_\ba_\br_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)_\b _\ba_\bd_\bd_\b__\bc_\bo_\bl_\bl_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b)\n * _\ba_\bd_\bd_\b__\bf_\bi_\bl_\be_\bs_\b(_\b)\n * _\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bh_\ba_\bs_\bh_\be_\bs_\b(_\b)\n * _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd\n o _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd_\b(_\b)\n o _\ba_\bs_\bs_\bi_\bg_\bn_\b(_\b)\n- o _\bg_\be_\bt_\b__\bb_\bi_\bt_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b(_\b)\n- o _\bc_\bl_\be_\ba_\br_\b__\bb_\bi_\bt_\b(_\b)_\b _\bs_\be_\bt_\b__\bb_\bi_\bt_\b(_\b)\n+ o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b(_\b)_\b _\bg_\be_\bt_\b__\bb_\bi_\bt_\b(_\b)\n+ o _\bs_\be_\bt_\b__\bb_\bi_\bt_\b(_\b)_\b _\bc_\bl_\be_\ba_\br_\b__\bb_\bi_\bt_\b(_\b)\n o _\ba_\bl_\bl_\b__\bs_\be_\bt_\b(_\b)\n o _\bn_\bo_\bn_\be_\b__\bs_\be_\bt_\b(_\b)\n o _\bs_\bi_\bz_\be_\b(_\b)\n o _\bn_\bu_\bm_\b__\bw_\bo_\br_\bd_\bs_\b(_\b)\n o _\bn_\bu_\bm_\b__\bb_\by_\bt_\be_\bs_\b(_\b)\n o _\be_\bm_\bp_\bt_\by_\b(_\b)\n o _\bd_\ba_\bt_\ba_\b(_\b)\n@@ -546,32 +546,32 @@\n o _\bf_\bi_\bn_\bd_\b__\bl_\ba_\bs_\bt_\b__\bc_\bl_\be_\ba_\br_\b(_\b)\n * _\bh_\ba_\bs_\bh_\be_\br\n o _\bh_\ba_\bs_\bh_\be_\br_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n o _\bu_\bp_\bd_\ba_\bt_\be_\b(_\b)\n o _\bf_\bi_\bn_\ba_\bl_\b(_\b)\n o _\br_\be_\bs_\be_\bt_\b(_\b)\n * _\bh_\ba_\bs_\bh_\be_\br_\b2_\b5_\b6\n- o _\bh_\ba_\bs_\bh_\be_\br_\b2_\b5_\b6_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n+ o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\bh_\ba_\bs_\bh_\be_\br_\b2_\b5_\b6_\b(_\b)\n o _\bu_\bp_\bd_\ba_\bt_\be_\b(_\b)\n o _\bf_\bi_\bn_\ba_\bl_\b(_\b)\n o _\br_\be_\bs_\be_\bt_\b(_\b)\n * _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs\n o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bs_\bt_\ba_\bt_\be_\b__\bt\n * _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\bi_\bn_\bf_\bo_\bh_\ba_\bs_\bh\n * _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt\n * _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by\n- o _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b(_\b)_\b _\b~_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n+ o _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\b~_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bt_\br_\ba_\bc_\bk_\be_\br_\b__\bs_\bo_\bu_\br_\bc_\be\n * _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk\n- o _\bs_\be_\bt_\b__\bb_\bo_\bo_\bl_\b(_\b)_\b _\bs_\be_\bt_\b__\bs_\bt_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bi_\bn_\bt_\b(_\b)\n+ o _\bs_\be_\bt_\b__\bs_\bt_\br_\b(_\b)_\b _\bs_\be_\bt_\b__\bi_\bn_\bt_\b(_\b)_\b _\bs_\be_\bt_\b__\bb_\bo_\bo_\bl_\b(_\b)\n o _\bh_\ba_\bs_\b__\bv_\ba_\bl_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b(_\b)\n- o _\bg_\be_\bt_\b__\bb_\bo_\bo_\bl_\b(_\b)_\b _\bg_\be_\bt_\b__\bi_\bn_\bt_\b(_\b)_\b _\bg_\be_\bt_\b__\bs_\bt_\br_\b(_\b)\n+ o _\bg_\be_\bt_\b__\bs_\bt_\br_\b(_\b)_\b _\bg_\be_\bt_\b__\bb_\bo_\bo_\bl_\b(_\b)_\b _\bg_\be_\bt_\b__\bi_\bn_\bt_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bt_\by_\bp_\be_\b__\bb_\ba_\bs_\be_\bs\n o _\be_\bn_\bu_\bm_\b _\bm_\bm_\ba_\bp_\b__\bw_\br_\bi_\bt_\be_\b__\bm_\bo_\bd_\be_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\bs_\bu_\bg_\bg_\be_\bs_\bt_\b__\bm_\bo_\bd_\be_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\bc_\bh_\bo_\bk_\bi_\bn_\bg_\b__\ba_\bl_\bg_\bo_\br_\bi_\bt_\bh_\bm_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\bs_\be_\be_\bd_\b__\bc_\bh_\bo_\bk_\bi_\bn_\bg_\b__\ba_\bl_\bg_\bo_\br_\bi_\bt_\bh_\bm_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\bi_\bo_\b__\bb_\bu_\bf_\bf_\be_\br_\b__\bm_\bo_\bd_\be_\b__\bt\n o _\be_\bn_\bu_\bm_\b _\bb_\ba_\bn_\bd_\bw_\bi_\bd_\bt_\bh_\b__\bm_\bi_\bx_\be_\bd_\b__\ba_\bl_\bg_\bo_\b__\bt\n@@ -580,25 +580,25 @@\n o _\be_\bn_\bu_\bm_\b _\bp_\br_\bo_\bx_\by_\b__\bt_\by_\bp_\be_\b__\bt\n * _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b__\bf_\bi_\bn_\bg_\be_\br_\bp_\br_\bi_\bn_\bt_\b(_\b)\n * _\bm_\bi_\bn_\b__\bm_\be_\bm_\bo_\br_\by_\b__\bu_\bs_\ba_\bg_\be_\b(_\b)_\b _\bh_\bi_\bg_\bh_\b__\bp_\be_\br_\bf_\bo_\br_\bm_\ba_\bn_\bc_\be_\b__\bs_\be_\be_\bd_\b(_\b)\n * _\bs_\be_\bt_\bt_\bi_\bn_\bg_\b__\bb_\by_\b__\bn_\ba_\bm_\be_\b(_\b)_\b _\bn_\ba_\bm_\be_\b__\bf_\bo_\br_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\b(_\b)\n * _\bd_\be_\bf_\ba_\bu_\bl_\bt_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b)\n * _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be\n o _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be_\b(_\b)\n- o _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be_\b(_\b)_\b _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)\n+ o _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b(_\b)_\b _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be_\b(_\b)\n o _\bt_\by_\bp_\be_\b(_\b)\n o _\bb_\bo_\bo_\bl_\b(_\b)\n o _\bn_\bo_\bn_\b__\bo_\bw_\bn_\bi_\bn_\bg_\b(_\b)\n o _\bd_\ba_\bt_\ba_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)_\b _\bd_\ba_\bt_\ba_\b__\bs_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b)\n- o _\bl_\bi_\bs_\bt_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b__\ba_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\bs_\bi_\bz_\be_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\ba_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\bi_\bn_\bt_\b__\bv_\ba_\bl_\bu_\be_\b__\ba_\bt_\b(_\b)\n- o _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bi_\bn_\bt_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\ba_\bt_\b(_\b)\n- _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bl_\bi_\bs_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bd_\bi_\bc_\bt_\b(_\b)\n- _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\ba_\bt_\b__\bn_\bo_\bd_\be_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bi_\bn_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bs_\bi_\bz_\be_\b(_\b)\n+ o _\bl_\bi_\bs_\bt_\b__\ba_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b__\ba_\bt_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\bs_\bi_\bz_\be_\b(_\b)_\b _\bl_\bi_\bs_\bt_\b__\bi_\bn_\bt_\b__\bv_\ba_\bl_\bu_\be_\b__\ba_\bt_\b(_\b)\n+ o _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bi_\bn_\bt_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bd_\bi_\bc_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg\n+ _\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bs_\bi_\bz_\be_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bl_\bi_\bs_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\ba_\bt_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bi_\bn_\bt_\b(_\b)\n+ _\bd_\bi_\bc_\bt_\b__\bf_\bi_\bn_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)_\b _\bd_\bi_\bc_\bt_\b__\ba_\bt_\b__\bn_\bo_\bd_\be_\b(_\b)\n o _\bi_\bn_\bt_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)\n- o _\bs_\bt_\br_\bi_\bn_\bg_\b__\bp_\bt_\br_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)\n+ o _\bs_\bt_\br_\bi_\bn_\bg_\b__\bo_\bf_\bf_\bs_\be_\bt_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bv_\ba_\bl_\bu_\be_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b)_\b _\bs_\bt_\br_\bi_\bn_\bg_\b__\bp_\bt_\br_\b(_\b)\n o _\bc_\bl_\be_\ba_\br_\b(_\b)\n o _\bs_\bw_\ba_\bp_\b(_\b)\n o _\br_\be_\bs_\be_\br_\bv_\be_\b(_\b)\n o _\bs_\bw_\bi_\bt_\bc_\bh_\b__\bu_\bn_\bd_\be_\br_\bl_\by_\bi_\bn_\bg_\b__\bb_\bu_\bf_\bf_\be_\br_\b(_\b)\n o _\bh_\ba_\bs_\b__\bs_\bo_\bf_\bt_\b__\be_\br_\br_\bo_\br_\b(_\b)\n o _\be_\bn_\bu_\bm_\b _\bt_\by_\bp_\be_\b__\bt\n * _\bp_\br_\bi_\bn_\bt_\b__\be_\bn_\bt_\br_\by_\b(_\b)\n@@ -618,15 +618,15 @@\n o _\bg_\be_\bt_\b__\bi_\bn_\bf_\bo_\bh_\ba_\bs_\bh_\be_\bs_\b__\bs_\ba_\bm_\bp_\bl_\be_\b(_\b)\n o _\bt_\bi_\bc_\bk_\b(_\b)\n o _\bc_\bo_\bu_\bn_\bt_\be_\br_\bs_\b(_\b)\n * _\bs_\bi_\bg_\bn_\b__\bm_\bu_\bt_\ba_\bb_\bl_\be_\b__\bi_\bt_\be_\bm_\b(_\b)\n * _\bd_\bh_\bt_\b__\bd_\be_\bf_\ba_\bu_\bl_\bt_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b__\bc_\bo_\bn_\bs_\bt_\br_\bu_\bc_\bt_\bo_\br_\b(_\b)\n * _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\bf_\bl_\ba_\bg_\bs_\b__\bt\n * _\br_\be_\ba_\bd_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)\n- * _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\bb_\bu_\bf_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)\n+ * _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\bb_\bu_\bf_\b(_\b)\n * _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)_\b _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b__\bb_\bu_\bf_\b(_\b)\n * _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b__\bt\n * _\be_\bd_\b2_\b5_\b5_\b1_\b9_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bs_\be_\be_\bd_\b(_\b)\n * _\be_\bd_\b2_\b5_\b5_\b1_\b9_\b__\bc_\br_\be_\ba_\bt_\be_\b__\bk_\be_\by_\bp_\ba_\bi_\br_\b(_\b)\n * _\be_\bd_\b2_\b5_\b5_\b1_\b9_\b__\bs_\bi_\bg_\bn_\b(_\b)\n * _\be_\bd_\b2_\b5_\b5_\b1_\b9_\b__\bv_\be_\br_\bi_\bf_\by_\b(_\b)\n * _\be_\bd_\b2_\b5_\b5_\b1_\b9_\b__\ba_\bd_\bd_\b__\bs_\bc_\ba_\bl_\ba_\br_\b(_\b)\n@@ -1238,17 +1238,17 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b._\bh_\bp_\bp\"\n The _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs is a parameters pack for configuring the _\bs_\be_\bs_\bs_\bi_\bo_\bn before it's\n started.\n struct session_params\n {\n- s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp);\n- s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack&& sp);\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs ();\n+ s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack&& sp);\n+ s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp);\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp\n , std::vector> exts);\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack&& sp\n , std::vector> exts);\n \n settings_pack settings;\n std::vector> extensions;\n@@ -1256,17 +1256,17 @@\n dht::dht_storage_constructor_type dht_storage_constructor;\n disk_io_constructor_type disk_io_constructor;\n std::map ext_state;\n libtorrent::ip_filter ip_filter;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) *\b**\b**\b**\b**\b*\n-s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp);\n-s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack&& sp);\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs ();\n+s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack&& sp);\n+s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp);\n This constructor can be used to start with the default plugins (ut_metadata,\n ut_pex and smart_ban). Pass a _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk to set the initial settings when\n the _\bs_\be_\bs_\bs_\bi_\bo_\bn starts.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) *\b**\b**\b**\b**\b*\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (settings_pack const& sp\n , std::vector> exts);\n@@ -1306,29 +1306,29 @@\n _\bs_\be_\bs_\bs_\bi_\bo_\bn destruction is explicitly initiated, this holder is used to synchronize\n the completion of the shutdown. The lifetime of this object may outlive\n _\bs_\be_\bs_\bs_\bi_\bo_\bn, causing the _\bs_\be_\bs_\bs_\bi_\bo_\bn destructor to not block. The _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\br_\bo_\bx_\by\n destructor will block however, until the underlying _\bs_\be_\bs_\bs_\bi_\bo_\bn is done shutting\n down.\n struct session_proxy\n {\n- ~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy&&) noexcept;\n- s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy const&);\n- s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n session_proxy& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (session_proxy const&) &;\n+ ~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n session_proxy& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (session_proxy&&) & noexcept;\n+ s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n+ s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy const&);\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* ~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by(\b()\b) s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n-~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) ~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by(\b()\b) s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by(\b()\b) *\b**\b**\b**\b**\b*\n s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy&&) noexcept;\n-s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy const&);\n-s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n session_proxy& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (session_proxy const&) &;\n+~\b~s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n session_proxy& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (session_proxy&&) & noexcept;\n+s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by ();\n+s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpr\bro\box\bxy\by (session_proxy const&);\n default constructor, does not refer to any _\bs_\be_\bs_\bs_\bi_\bo_\bn implementation object.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b._\bh_\bp_\bp\"\n The _\bs_\be_\bs_\bs_\bi_\bo_\bn holds all state that spans multiple torrents. Among other things it\n runs the network loop and manages all torrents. Once it's created, the _\bs_\be_\bs_\bs_\bi_\bo_\bn\n object will spawn the main thread that will do all the work. The main thread\n@@ -1336,47 +1336,47 @@\n You have some control over _\bs_\be_\bs_\bs_\bi_\bo_\bn configuration through the session_handle::\n apply_settings() member function. To change one or more configuration options,\n create a _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk. object and fill it with the settings to be set and pass\n it in to session::apply_settings().\n see _\ba_\bp_\bp_\bl_\by_\b__\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b(_\b).\n struct session : session_handle\n {\n- s\bse\bes\bss\bsi\bio\bon\bn ();\n+ s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, session_flags_t flags);\n explicit s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params);\n+ s\bse\bes\bss\bsi\bio\bon\bn ();\n explicit s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params);\n- s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, session_flags_t flags);\n s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, session_flags_t flags);\n- s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios, session_flags_t);\n s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, io_context& ios);\n- s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios);\n s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, io_context& ios, session_flags_t);\n+ s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios);\n+ s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios, session_flags_t);\n ~\b~s\bse\bes\bss\bsi\bio\bon\bn ();\n session_proxy a\bab\bbo\bor\brt\bt ();\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn(\b()\b) *\b**\b**\b**\b**\b*\n-s\bse\bes\bss\bsi\bio\bon\bn ();\n+s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, session_flags_t flags);\n explicit s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params);\n+s\bse\bes\bss\bsi\bio\bon\bn ();\n explicit s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params);\n-s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, session_flags_t flags);\n s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, session_flags_t flags);\n Constructs the _\bs_\be_\bs_\bs_\bi_\bo_\bn objects which acts as the container of torrents. In\n order to avoid a race condition between starting the _\bs_\be_\bs_\bs_\bi_\bo_\bn and configuring\n it, you can pass in a _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs object. Its settings will take effect\n before the _\bs_\be_\bs_\bs_\bi_\bo_\bn starts up.\n The overloads taking flags can be used to start a _\bs_\be_\bs_\bs_\bi_\bo_\bn in paused mode (by\n passing in session::paused). Note that add_default_plugins do not have an\n affect on constructors that take a _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs object. It already contains\n the plugins to use.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn(\b()\b) *\b**\b**\b**\b**\b*\n-s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios, session_flags_t);\n s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, io_context& ios);\n-s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios);\n s\bse\bes\bss\bsi\bio\bon\bn (session_params&& params, io_context& ios, session_flags_t);\n+s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios);\n+s\bse\bes\bss\bsi\bio\bon\bn (session_params const& params, io_context& ios, session_flags_t);\n Overload of the constructor that takes an external io_context to run the\n _\bs_\be_\bs_\bs_\bi_\bo_\bn object on. This is primarily useful for tests that may want to run\n multiple sessions on a single io_context, or low resource systems where\n additional threads are expensive and sharing an io_context with other events is\n fine.\n Warning\n The _\bs_\be_\bs_\bs_\bi_\bo_\bn object does not cleanly terminate with an external io_context. The\n@@ -1416,82 +1416,82 @@\n operation on it will throw a system_error exception, with error code\n invalid_session_handle.\n struct session_handle\n {\n bool i\bis\bs_\b_v\bva\bal\bli\bid\bd () const;\n session_params s\bse\bes\bss\bsi\bio\bon\bn_\b_s\bst\bta\bat\bte\be (save_state_flags_t flags =\n save_state_flags_t::all()) const;\n- void r\bre\bef\bfr\bre\bes\bsh\bh_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs (std::vector* ret\n- , status_flags_t flags = {}) const;\n std::vector g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs (\n std::function const& pred\n , status_flags_t flags = {}) const;\n+ void r\bre\bef\bfr\bre\bes\bsh\bh_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs (std::vector* ret\n+ , status_flags_t flags = {}) const;\n void p\bpo\bos\bst\bt_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_u\bup\bpd\bda\bat\bte\bes\bs (status_flags_t flags = status_flags_t::all());\n void p\bpo\bos\bst\bt_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_s\bst\bta\bat\bts\bs ();\n void p\bpo\bos\bst\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bts\bs ();\n void s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bte\be (dht::dht_state const& st);\n void s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bte\be (dht::dht_state&& st);\n- std::vector g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs () const;\n torrent_handle f\bfi\bin\bnd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (sha1_hash const& info_hash) const;\n+ std::vector g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs () const;\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n- torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n- torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params, error_code& ec);\n void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n- void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n+ torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params, error_code&\n ec);\n+ torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params, error_code& ec);\n+ void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n void r\bre\bes\bsu\bum\bme\be ();\n bool i\bis\bs_\b_p\bpa\bau\bus\bse\bed\bd () const;\n void p\bpa\bau\bus\bse\be ();\n bool i\bis\bs_\b_d\bdh\bht\bt_\b_r\bru\bun\bnn\bni\bin\bng\bg () const;\n void s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bto\bor\bra\bag\bge\be (dht::dht_storage_constructor_type sc);\n void a\bad\bdd\bd_\b_d\bdh\bht\bt_\b_n\bno\bod\bde\be (std::pair const& node);\n void d\bdh\bht\bt_\b_g\bge\bet\bt_\b_i\bit\bte\bem\bm (sha1_hash const& target);\n void d\bdh\bht\bt_\b_g\bge\bet\bt_\b_i\bit\bte\bem\bm (std::array key\n , std::string salt = std::string());\n sha1_hash d\bdh\bht\bt_\b_p\bpu\but\bt_\b_i\bit\bte\bem\bm (entry data);\n void d\bdh\bht\bt_\b_p\bpu\but\bt_\b_i\bit\bte\bem\bm (std::array key\n , std::function&\n , std::int64_t&, std::string const&)> cb\n , std::string salt = std::string());\n- void d\bdh\bht\bt_\b_g\bge\bet\bt_\b_p\bpe\bee\ber\brs\bs (sha1_hash const& info_hash);\n void d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be (sha1_hash const& info_hash, int port = 0, dht::\n announce_flags_t flags = {});\n+ void d\bdh\bht\bt_\b_g\bge\bet\bt_\b_p\bpe\bee\ber\brs\bs (sha1_hash const& info_hash);\n void d\bdh\bht\bt_\b_l\bli\biv\bve\be_\b_n\bno\bod\bde\bes\bs (sha1_hash const& nid);\n void d\bdh\bht\bt_\b_s\bsa\bam\bmp\bpl\ble\be_\b_i\bin\bnf\bfo\boh\bha\bas\bsh\bhe\bes\bs (udp::endpoint const& ep, sha1_hash const&\n target);\n void d\bdh\bht\bt_\b_d\bdi\bir\bre\bec\bct\bt_\b_r\bre\beq\bqu\bue\bes\bst\bt (udp::endpoint const& ep, entry const& e,\n client_data_t userdata = {});\n void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (std::shared_ptr ext);\n void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (std::function(\n torrent_handle const&, client_data_t)> ext);\n ip_filter g\bge\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br () const;\n void s\bse\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br (ip_filter f);\n void s\bse\bet\bt_\b_p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br (port_filter const& f);\n+ bool i\bis\bs_\b_l\bli\bis\bst\bte\ben\bni\bin\bng\bg () const;\n unsigned short l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt () const;\n unsigned short s\bss\bsl\bl_\b_l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt () const;\n- bool i\bis\bs_\b_l\bli\bis\bst\bte\ben\bni\bin\bng\bg () const;\n- void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br (ip_filter const& f);\n ip_filter g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br () const;\n+ void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br (ip_filter const& f);\n void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br (peer_class_type_filter const& f);\n peer_class_type_filter g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_t\bty\byp\bpe\be_\b_f\bfi\bil\blt\bte\ber\br () const;\n peer_class_t c\bcr\bre\bea\bat\bte\be_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (char const* name);\n void d\bde\bel\ble\bet\bte\be_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid);\n- void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid, peer_class_info const& pci);\n peer_class_info g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid) const;\n+ void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid, peer_class_info const& pci);\n void r\bre\bem\bmo\bov\bve\be_\b_t\bto\bor\brr\bre\ben\bnt\bt (const torrent_handle&, remove_flags_t = {});\n- void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack&&);\n settings_pack g\bge\bet\bt_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs () const;\n+ void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack&&);\n void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack const&);\n+ void p\bpo\bop\bp_\b_a\bal\ble\ber\brt\bts\bs (std::vector* alerts);\n alert* w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_a\bal\ble\ber\brt\bt (time_duration max_wait);\n void s\bse\bet\bt_\b_a\bal\ble\ber\brt\bt_\b_n\bno\bot\bti\bif\bfy\by (std::function const& fun);\n- void p\bpo\bop\bp_\b_a\bal\ble\ber\brt\bts\bs (std::vector* alerts);\n- void d\bde\bel\ble\bet\bte\be_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg (port_mapping_t handle);\n std::vector a\bad\bdd\bd_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg (portmap_protocol t, int\n external_port, int local_port);\n+ void d\bde\bel\ble\bet\bte\be_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg (port_mapping_t handle);\n void r\bre\beo\bop\bpe\ben\bn_\b_n\bne\bet\btw\bwo\bor\brk\bk_\b_s\bso\boc\bck\bke\bet\bts\bs (reopen_network_flags_t options =\n reopen_map_ports);\n std::shared_ptr n\bna\bat\bti\biv\bve\be_\b_h\bha\ban\bnd\bdl\ble\be () const;\n \n static constexpr save_state_flags_t s\bsa\bav\bve\be_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs = 0_bit;\n static constexpr save_state_flags_t s\bsa\bav\bve\be_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bte\be = 2_bit;\n static constexpr save_state_flags_t s\bsa\bav\bve\be_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn_\b_s\bst\bta\bat\bte\be = 11_bit;\n@@ -1517,20 +1517,20 @@\n all()) const;\n returns the current _\bs_\be_\bs_\bs_\bi_\bo_\bn state. This can be passed to _\bw_\br_\bi_\bt_\be_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b)\n to save the state to disk and restored using _\br_\be_\ba_\bd_\b__\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b(_\b) when\n constructing a new _\bs_\be_\bs_\bs_\bi_\bo_\bn. The kind of state that's included is all settings,\n the DHT routing table, possibly plugin-specific state. the flags parameter can\n be used to only save certain parts of the _\bs_\be_\bs_\bs_\bi_\bo_\bn state\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) r\bre\bef\bfr\bre\bes\bsh\bh_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) *\b**\b**\b**\b**\b*\n-void r\bre\bef\bfr\bre\bes\bsh\bh_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs (std::vector* ret\n- , status_flags_t flags = {}) const;\n+*\b**\b**\b**\b**\b* r\bre\bef\bfr\bre\bes\bsh\bh_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) *\b**\b**\b**\b**\b*\n std::vector g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs (\n std::function const& pred\n , status_flags_t flags = {}) const;\n+void r\bre\bef\bfr\bre\bes\bsh\bh_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_s\bst\bta\bat\btu\bus\bs (std::vector* ret\n+ , status_flags_t flags = {}) const;\n Note\n these calls are potentially expensive and won't scale well with lots of\n torrents. If you're concerned about performance, consider using\n post_torrent_updates() instead.\n get_torrent_status returns a vector of the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs for every torrent\n which satisfies pred, which is a predicate function which determines if a\n torrent should be included in the returned set or not. Returning true means it\n@@ -1582,30 +1582,30 @@\n void s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bte\be (dht::dht_state const& st);\n void s\bse\bet\bt_\b_d\bdh\bht\bt_\b_s\bst\bta\bat\bte\be (dht::dht_state&& st);\n set the DHT state for the _\bs_\be_\bs_\bs_\bi_\bo_\bn. This will be taken into account the next\n time the DHT is started, as if it had been passed in via the _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs on\n startup.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bin\bnd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs(\b()\b) *\b**\b**\b**\b**\b*\n-std::vector g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs () const;\n torrent_handle f\bfi\bin\bnd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (sha1_hash const& info_hash) const;\n+std::vector g\bge\bet\bt_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs () const;\n find_torrent() looks for a torrent with the given info-hash. In case there is\n such a torrent in the _\bs_\be_\bs_\bs_\bi_\bo_\bn, a _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be to that torrent is returned. In\n case the torrent cannot be found, an invalid _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be is returned.\n See torrent_handle::is_valid() to know if the torrent was found or not.\n get_torrents() returns a vector of torrent_handles to all the torrents\n currently in the _\bs_\be_\bs_\bs_\bi_\bo_\bn.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) *\b**\b**\b**\b**\b*\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n+void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n+torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params, error_code& ec);\n torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params, error_code& ec);\n-void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params&& params);\n void a\bas\bsy\byn\bnc\bc_\b_a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params);\n-torrent_handle a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt (add_torrent_params const& params, error_code& ec);\n You add torrents through the _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b) function where you give an object\n with all the parameters. The _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b) overloads will block until the\n torrent has been added (or failed to be added) and returns an error code and a\n _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be. In order to add torrents more efficiently, consider using\n _\ba_\bs_\by_\bn_\bc_\b__\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b) which returns immediately, without waiting for the torrent\n to add. Notification of the torrent being added is sent as _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\ba_\bl_\be_\br_\bt.\n The save_path field in _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs must be set to a valid path where the\n@@ -1626,15 +1626,15 @@\n torrent_flags::paused and torrent_flags::auto_managed. In order to add a magnet\n link that will just download the metadata, but no payload, set the\n torrent_flags::upload_mode flag.\n Special consideration has to be taken when adding hybrid torrents (i.e.\n torrents that are BitTorrent v2 torrents that are backwards compatible with\n v1). For more details, see _\bB_\bi_\bt_\bT_\bo_\br_\br_\be_\bn_\bt_\b _\bv_\b2_\b _\bt_\bo_\br_\br_\be_\bn_\bt_\bs.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* i\bis\bs_\b_p\bpa\bau\bus\bse\bed\bd(\b()\b) r\bre\bes\bsu\bum\bme\be(\b()\b) p\bpa\bau\bus\bse\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* r\bre\bes\bsu\bum\bme\be(\b()\b) p\bpa\bau\bus\bse\be(\b()\b) i\bis\bs_\b_p\bpa\bau\bus\bse\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\bes\bsu\bum\bme\be ();\n bool i\bis\bs_\b_p\bpa\bau\bus\bse\bed\bd () const;\n void p\bpa\bau\bus\bse\be ();\n Pausing the _\bs_\be_\bs_\bs_\bi_\bo_\bn has the same effect as pausing every torrent in it, except\n that torrents will not be resumed by the auto-manage mechanism. Resuming will\n restore the torrents to their previous paused state. i.e. the _\bs_\be_\bs_\bs_\bi_\bo_\bn pause\n state is separate from the torrent pause state. A torrent is inactive if it is\n@@ -1713,18 +1713,18 @@\n and make the function entirely self-contained. The only reason data blob's\n value is computed via a function instead of just passing in the new value is to\n avoid race conditions. If you want to u\bup\bpd\bda\bat\bte\be the value in the DHT, you must\n first retrieve it, then modify it, then write it back. The way the DHT works,\n it is natural to always do a lookup before storing and calling the callback in\n between is convenient.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* d\bdh\bht\bt_\b_g\bge\bet\bt_\b_p\bpe\bee\ber\brs\bs(\b()\b) d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n-void d\bdh\bht\bt_\b_g\bge\bet\bt_\b_p\bpe\bee\ber\brs\bs (sha1_hash const& info_hash);\n+*\b**\b**\b**\b**\b* d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be(\b()\b) d\bdh\bht\bt_\b_g\bge\bet\bt_\b_p\bpe\bee\ber\brs\bs(\b()\b) *\b**\b**\b**\b**\b*\n void d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be (sha1_hash const& info_hash, int port = 0, dht::\n announce_flags_t flags = {});\n+void d\bdh\bht\bt_\b_g\bge\bet\bt_\b_p\bpe\bee\ber\brs\bs (sha1_hash const& info_hash);\n dht_get_peers() will issue a DHT get_peer request to the DHT for the specified\n info-hash. The response (the peers) will be posted back in a\n _\bd_\bh_\bt_\b__\bg_\be_\bt_\b__\bp_\be_\be_\br_\bs_\b__\br_\be_\bp_\bl_\by_\b__\ba_\bl_\be_\br_\bt.\n dht_announce() will issue a DHT announce request to the DHT to the specified\n info-hash, advertising the specified port. If the port is left at its default,\n 0, the port will be implied by the DHT message's source port (which may improve\n connectivity through a NAT). dht_announce() is not affected by the\n@@ -1781,15 +1781,15 @@\n smart ban _\bp_\bl_\bu_\bg_\bi_\bn\n A _\bp_\bl_\bu_\bg_\bi_\bn that, with a small overhead, can ban peers that sends bad data\n with very high accuracy. Should eliminate most problems on poisoned\n torrents.\n #include \n ses.add_extension(<::create_smart_ban_plugin);\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) g\bge\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) s\bse\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n ip_filter g\bge\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br () const;\n void s\bse\bet\bt_\b_i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br (ip_filter f);\n Sets a filter that will be used to reject and accept incoming as well as\n outgoing connections based on their originating ip address. The default filter\n will allow connections to any ip address. To build a set of rules for which\n addresses are accepted and not, see _\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br.\n Each time a peer is blocked because of the IP filter, a _\bp_\be_\be_\br_\b__\bb_\bl_\bo_\bc_\bk_\be_\bd_\b__\ba_\bl_\be_\br_\bt is\n@@ -1799,27 +1799,27 @@\n *\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br (port_filter const& f);\n apply _\bp_\bo_\br_\bt_\b__\bf_\bi_\bl_\bt_\be_\br f to incoming and outgoing peers. a port filter will reject\n making outgoing peer connections to certain remote ports. The main intention is\n to be able to avoid triggering certain anti-virus software by connecting to\n SMTP, FTP ports.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bss\bsl\bl_\b_l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt(\b()\b) l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt(\b()\b) i\bis\bs_\b_l\bli\bis\bst\bte\ben\bni\bin\bng\bg(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* i\bis\bs_\b_l\bli\bis\bst\bte\ben\bni\bin\bng\bg(\b()\b) s\bss\bsl\bl_\b_l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt(\b()\b) l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt(\b()\b) *\b**\b**\b**\b**\b*\n+bool i\bis\bs_\b_l\bli\bis\bst\bte\ben\bni\bin\bng\bg () const;\n unsigned short l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt () const;\n unsigned short s\bss\bsl\bl_\b_l\bli\bis\bst\bte\ben\bn_\b_p\bpo\bor\brt\bt () const;\n-bool i\bis\bs_\b_l\bli\bis\bst\bte\ben\bni\bin\bng\bg () const;\n is_listening() will tell you whether or not the _\bs_\be_\bs_\bs_\bi_\bo_\bn has successfully opened\n a listening port. If it hasn't, this function will return false, and then you\n can set a new _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk_\b:_\b:_\bl_\bi_\bs_\bt_\be_\bn_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bs to try another interface and\n port to bind to.\n listen_port() returns the port we ended up listening on.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br (ip_filter const& f);\n ip_filter g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br () const;\n+void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs_\b_f\bfi\bil\blt\bte\ber\br (ip_filter const& f);\n Sets the peer class filter for this _\bs_\be_\bs_\bs_\bi_\bo_\bn. All new peer connections will take\n this into account and be added to the peer classes specified by this filter,\n based on the peer's IP address.\n The ip-filter essentially maps an IP -> uint32. Each bit in that 32 bit integer\n represents a peer class. The least significant bit represents class 0, the next\n bit class 1 and so on.\n For more info, see _\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br.\n@@ -1875,16 +1875,16 @@\n peer class if it's still assigned to torrents or peers. It will however remove\n it once the last peer and torrent drops their references to it.\n There is no need to call this function for custom peer classes. All peer\n classes will be properly destructed when the _\bs_\be_\bs_\bs_\bi_\bo_\bn object destructs.\n For more information on peer classes, see _\bp_\be_\be_\br_\b _\bc_\bl_\ba_\bs_\bs_\be_\bs.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs(\b()\b) s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid, peer_class_info const& pci);\n peer_class_info g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid) const;\n+void s\bse\bet\bt_\b_p\bpe\bee\ber\br_\b_c\bcl\bla\bas\bss\bs (peer_class_t cid, peer_class_info const& pci);\n These functions queries information from a peer class and updates the\n configuration of a peer class, respectively.\n cid must refer to an existing peer class. If it does not, the return value of\n get_peer_class() is undefined.\n set_peer_class() sets all the information in the _\bp_\be_\be_\br_\b__\bc_\bl_\ba_\bs_\bs_\b__\bi_\bn_\bf_\bo object in the\n specified peer class. There is no option to only update a single property.\n A peer or torrent belonging to more than one class, the highest priority among\n@@ -1914,26 +1914,26 @@\n session.remove_handle(handle); handle.save_resume_data();\n Note that when a queued or downloading torrent is removed, its position in the\n download queue is vacated and every subsequent torrent in the queue has their\n queue positions updated. This can potentially cause a large state_update to be\n posted. When removing all torrents, it is advised to remove them from the back\n of the queue, to minimize the shifting.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs(\b()\b) a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs(\b()\b) *\b**\b**\b**\b**\b*\n-void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack&&);\n+*\b**\b**\b**\b**\b* a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs(\b()\b) g\bge\bet\bt_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs(\b()\b) *\b**\b**\b**\b**\b*\n settings_pack g\bge\bet\bt_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs () const;\n+void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack&&);\n void a\bap\bpp\bpl\bly\by_\b_s\bse\bet\btt\bti\bin\bng\bgs\bs (settings_pack const&);\n Applies the settings specified by the _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk s. This is an asynchronous\n operation that will return immediately and actually apply the settings to the\n main thread of libtorrent some time later.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_a\bal\ble\ber\brt\bt_\b_n\bno\bot\bti\bif\bfy\by(\b()\b) w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_a\bal\ble\ber\brt\bt(\b()\b) p\bpo\bop\bp_\b_a\bal\ble\ber\brt\bts\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_a\bal\ble\ber\brt\bt(\b()\b) p\bpo\bop\bp_\b_a\bal\ble\ber\brt\bts\bs(\b()\b) s\bse\bet\bt_\b_a\bal\ble\ber\brt\bt_\b_n\bno\bot\bti\bif\bfy\by(\b()\b) *\b**\b**\b**\b**\b*\n+void p\bpo\bop\bp_\b_a\bal\ble\ber\brt\bts\bs (std::vector* alerts);\n alert* w\bwa\bai\bit\bt_\b_f\bfo\bor\br_\b_a\bal\ble\ber\brt\bt (time_duration max_wait);\n void s\bse\bet\bt_\b_a\bal\ble\ber\brt\bt_\b_n\bno\bot\bti\bif\bfy\by (std::function const& fun);\n-void p\bpo\bop\bp_\b_a\bal\ble\ber\brt\bts\bs (std::vector* alerts);\n Alerts is the main mechanism for libtorrent to report errors and events.\n pop_alerts fills in the vector passed to it with pointers to new alerts. The\n _\bs_\be_\bs_\bs_\bi_\bo_\bn still owns these alerts and they will stay valid until the next time\n pop_alerts is called. You may not delete the _\ba_\bl_\be_\br_\bt objects.\n It is safe to call pop_alerts from multiple different threads, as long as the\n alerts themselves are not accessed once another thread calls pop_alerts. Doing\n this requires manual synchronization between the popping threads.\n@@ -1972,18 +1972,18 @@\n alerts should not be done in the callback. In fact, the callback should not\n block. It should not perform any expensive work. It really should just notify\n the main application thread.\n The type of an _\ba_\bl_\be_\br_\bt is returned by the polymorphic function alert::type() but\n can also be queries from a concrete type via T::alert_type, as a static\n constant.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* d\bde\bel\ble\bet\bte\be_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg(\b()\b) a\bad\bdd\bd_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg(\b()\b) *\b**\b**\b**\b**\b*\n-void d\bde\bel\ble\bet\bte\be_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg (port_mapping_t handle);\n+*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg(\b()\b) d\bde\bel\ble\bet\bte\be_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg(\b()\b) *\b**\b**\b**\b**\b*\n std::vector a\bad\bdd\bd_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg (portmap_protocol t, int\n external_port, int local_port);\n+void d\bde\bel\ble\bet\bte\be_\b_p\bpo\bor\brt\bt_\b_m\bma\bap\bpp\bpi\bin\bng\bg (port_mapping_t handle);\n add_port_mapping adds one or more port forwards on UPnP and/or NAT-PMP,\n whichever is enabled. A mapping is created for each listen socket in the\n _\bs_\be_\bs_\bs_\bi_\bo_\bn. The return values are all handles referring to the port mappings that\n were just created. Pass them to _\bd_\be_\bl_\be_\bt_\be_\b__\bp_\bo_\br_\bt_\b__\bm_\ba_\bp_\bp_\bi_\bn_\bg_\b(_\b) to remove them.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* r\bre\beo\bop\bpe\ben\bn_\b_n\bne\bet\btw\bwo\bor\brk\bk_\b_s\bso\boc\bck\bke\bet\bts\bs(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\beo\bop\bpe\ben\bn_\b_n\bne\bet\btw\bwo\bor\brk\bk_\b_s\bso\boc\bck\bke\bet\bts\bs (reopen_network_flags_t options =\n@@ -2032,19 +2032,19 @@\n This option indicates if the ports are mapped using natpmp and upnp. If\n mapping was already made, they are deleted and added again. This only\n works if natpmp and/or upnp are configured to be enable.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* r\bre\bea\bad\bd_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b) w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs_\b_b\bbu\buf\bf(\b()\b) w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs(\b()\b)\n *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs_\b._\bh_\bp_\bp\"\n-session_params r\bre\bea\bad\bd_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (span buf\n+entry w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (session_params const& sp\n , save_state_flags_t flags = save_state_flags_t::all());\n std::vector w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs_\b_b\bbu\buf\bf (session_params const& sp\n , save_state_flags_t flags = save_state_flags_t::all());\n-entry w\bwr\bri\bit\bte\be_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (session_params const& sp\n+session_params r\bre\bea\bad\bd_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (span buf\n , save_state_flags_t flags = save_state_flags_t::all());\n session_params r\bre\bea\bad\bd_\b_s\bse\bes\bss\bsi\bio\bon\bn_\b_p\bpa\bar\bra\bam\bms\bs (bdecode_node const& e\n , save_state_flags_t flags = save_state_flags_t::all());\n These functions serialize and de-serialize a session_params object to and from\n bencoded form. The _\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bp_\ba_\br_\ba_\bm_\bs object is used to initialize a new _\bs_\be_\bs_\bs_\bi_\bo_\bn\n using the state from a previous one (or by programmatically configure the\n _\bs_\be_\bs_\bs_\bi_\bo_\bn up-front). The flags parameter can be used to only save and load\n@@ -2129,62 +2129,62 @@\n the max number of bdecode tokens\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo_\b._\bh_\bp_\bp\"\n the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo class holds the information found in a .torrent file.\n class torrent_info\n {\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, load_torrent_limits const& cfg,\n-from_span_t);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size);\n- explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (info_hash_t const& info_hash);\n- explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, load_torrent_limits const& cfg);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, error_code& ec);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, error_code& ec);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, error_code& ec, from_span_t);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, load_torrent_limits const&\n cfg);\n- explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, from_span_t);\n- t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size, error_code& ec);\n explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (torrent_info const& t);\n+ explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, error_code& ec);\n+ explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (info_hash_t const& info_hash);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size, error_code& ec);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, error_code& ec);\n+ explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, from_span_t);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, load_torrent_limits const& cfg,\n+from_span_t);\n+ t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, load_torrent_limits const& cfg);\n ~\b~t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo ();\n file_storage const& o\bor\bri\big\bg_\b_f\bfi\bil\ble\bes\bs () const;\n file_storage const& f\bfi\bil\ble\bes\bs () const;\n void r\bre\ben\bna\bam\bme\be_\b_f\bfi\bil\ble\be (file_index_t index, std::string const& new_filename);\n void r\bre\bem\bma\bap\bp_\b_f\bfi\bil\ble\bes\bs (file_storage const& f);\n+ std::vector const& t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (std::string const& url, int tier = 0);\n- void c\bcl\ble\bea\bar\br_\b_t\btr\bra\bac\bck\bke\ber\brs\bs ();\n void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (std::string const& url, int tier\n , announce_entry::tracker_source source);\n- std::vector const& t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n- std::vector c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs () const;\n+ void c\bcl\ble\bea\bar\br_\b_t\btr\bra\bac\bck\bke\ber\brs\bs ();\n std::vector s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs () const;\n- void s\bse\bet\bt_\b_w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs (std::vector seeds);\n+ std::vector c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs () const;\n std::vector const& w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs () const;\n void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url\n , std::string const& extern_auth = std::string()\n , web_seed_entry::headers_t const& extra_headers = web_seed_entry::\n headers_t());\n void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url\n , std::string const& ext_auth = std::string()\n , web_seed_entry::headers_t const& ext_headers = web_seed_entry::\n headers_t());\n+ void s\bse\bet\bt_\b_w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs (std::vector seeds);\n std::int64_t t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be () const;\n int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n int b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be () const;\n+ index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const;\n piece_index_t l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be () const;\n piece_index_t e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be () const;\n- index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const;\n sha1_hash i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh () const noexcept;\n info_hash_t const& i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n- bool v\bv2\b2 () const;\n bool v\bv1\b1 () const;\n+ bool v\bv2\b2 () const;\n int n\bnu\bum\bm_\b_f\bfi\bil\ble\bes\bs () const;\n std::vector m\bma\bap\bp_\b_b\bbl\blo\boc\bck\bk (piece_index_t const piece\n , std::int64_t offset, int size) const;\n peer_request m\bma\bap\bp_\b_f\bfi\bil\ble\be (file_index_t const file, std::int64_t offset, int\n size) const;\n string_view s\bss\bsl\bl_\b_c\bce\ber\brt\bt () const;\n bool i\bis\bs_\b_v\bva\bal\bli\bid\bd () const;\n@@ -2205,29 +2205,29 @@\n bdecode_node i\bin\bnf\bfo\bo (char const* key) const;\n span i\bin\bnf\bfo\bo_\b_s\bse\bec\bct\bti\bio\bon\bn () const;\n span p\bpi\bie\bec\bce\be_\b_l\bla\bay\bye\ber\br (file_index_t) const;\n void f\bfr\bre\bee\be_\b_p\bpi\bie\bec\bce\be_\b_l\bla\bay\bye\ber\brs\bs ();\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo(\b()\b) *\b**\b**\b**\b**\b*\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, load_torrent_limits const& cfg,\n-from_span_t);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size);\n-explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (info_hash_t const& info_hash);\n-explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, load_torrent_limits const& cfg);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, error_code& ec);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, error_code& ec);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, error_code& ec, from_span_t);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, load_torrent_limits const&\n cfg);\n-explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, from_span_t);\n-t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size, error_code& ec);\n explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (torrent_info const& t);\n+explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (bdecode_node const& torrent_file, error_code& ec);\n+explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (info_hash_t const& info_hash);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (char const* buffer, int size, error_code& ec);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, error_code& ec);\n+explicit t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, from_span_t);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (span buffer, load_torrent_limits const& cfg,\n+from_span_t);\n+t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo (std::string const& filename, load_torrent_limits const& cfg);\n The constructor that takes an info-hash will initialize the info-hash to the\n given value, but leave all other fields empty. This is used internally when\n downloading torrents without the metadata. The metadata will be created by\n libtorrent as soon as it has been downloaded from the swarm.\n The constructor that takes a _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be will create a _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object\n from the information found in the given torrent_file. The _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be\n represents a tree node in an bencoded file. To load an ordinary .torrent file\n@@ -2250,15 +2250,15 @@\n from_span_t to disambiguate the std::string overload for string literals. There\n is an object in the libtorrent namespace of this type called from_span.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* ~\b~t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo(\b()\b) *\b**\b**\b**\b**\b*\n ~\b~t\bto\bor\brr\bre\ben\bnt\bt_\b_i\bin\bnf\bfo\bo ();\n frees all storage associated with this _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* f\bfi\bil\ble\bes\bs(\b()\b) o\bor\bri\big\bg_\b_f\bfi\bil\ble\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* o\bor\bri\big\bg_\b_f\bfi\bil\ble\bes\bs(\b()\b) f\bfi\bil\ble\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n file_storage const& o\bor\bri\big\bg_\b_f\bfi\bil\ble\bes\bs () const;\n file_storage const& f\bfi\bil\ble\bes\bs () const;\n The _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be object contains the information on how to map the pieces to\n files. It is separated from the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object because when creating\n torrents a storage object needs to be created without having a torrent file.\n When renaming files in a storage, the storage needs to make its own copy of the\n _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be in order to make its mapping differ from the one in the torrent\n@@ -2293,49 +2293,49 @@\n Remaps the file storage to a new file layout. This can be used to, for\n instance, download all data in a torrent to a single file, or to a number of\n fixed size sector aligned files, regardless of the number and sizes of the\n files in the torrent.\n The new specified file_storage must have the exact same size as the current\n one.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br(\b()\b) c\bcl\ble\bea\bar\br_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) *\b**\b**\b**\b**\b*\n+std::vector const& t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (std::string const& url, int tier = 0);\n-void c\bcl\ble\bea\bar\br_\b_t\btr\bra\bac\bck\bke\ber\brs\bs ();\n void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (std::string const& url, int tier\n , announce_entry::tracker_source source);\n-std::vector const& t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n+void c\bcl\ble\bea\bar\br_\b_t\btr\bra\bac\bck\bke\ber\brs\bs ();\n add_tracker() adds a tracker to the announce-list. The tier determines the\n order in which the trackers are to be tried. The trackers() function will\n return a sorted vector of _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by. Each announce _\be_\bn_\bt_\br_\by contains a\n string, which is the tracker url, and a tier index. The tier index is the high-\n level priority. No matter which trackers that works or not, the ones with lower\n tier will always be tried before the one with higher tier number. For more\n information, see _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by.\n trackers() returns all entries from announce-list.\n clear_trackers() removes all trackers from announce-list.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs(\b()\b) s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs(\b()\b) *\b**\b**\b**\b**\b*\n-std::vector c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs () const;\n std::vector s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bts\bs () const;\n+std::vector c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bns\bs () const;\n These two functions are related to _\bB_\bE_\bP_\b _\b3_\b8 (mutable torrents). The vectors\n returned from these correspond to the \"similar\" and \"collections\" keys in the\n .torrent file. Both info-hashes and collections from within the info-dict and\n from outside of it are included.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs(\b()\b) a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs (std::vector seeds);\n+*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) s\bse\bet\bt_\b_w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs(\b()\b) w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs(\b()\b) a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n std::vector const& w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs () const;\n void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url\n , std::string const& extern_auth = std::string()\n , web_seed_entry::headers_t const& extra_headers = web_seed_entry::\n headers_t());\n void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url\n , std::string const& ext_auth = std::string()\n , web_seed_entry::headers_t const& ext_headers = web_seed_entry::\n headers_t());\n+void s\bse\bet\bt_\b_w\bwe\beb\bb_\b_s\bse\bee\bed\bds\bs (std::vector seeds);\n web_seeds() returns all url seeds and http seeds in the torrent. Each _\be_\bn_\bt_\br_\by is\n a web_seed_entry and may refer to either a url seed or http seed.\n add_url_seed() and add_http_seed() adds one url to the list of url/http seeds.\n set_web_seeds() replaces all web seeds with the ones specified in the seeds\n vector.\n The extern_auth argument can be used for other authorization schemes than basic\n HTTP authorization. If set, it will override any username and password found in\n@@ -2362,33 +2362,33 @@\n piece_length() except in the case of the last piece, which may be smaller.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n int b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be () const;\n returns the number of blocks there are in the typical piece. There may be fewer\n in the last piece)\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be(\b()\b) l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be(\b()\b) p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be(\b()\b) l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n+index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const;\n piece_index_t l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be () const;\n piece_index_t e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be () const;\n-index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const;\n last_piece() returns the index to the last piece in the torrent and end_piece()\n returns the index to the one-past-end piece in the torrent piece_range()\n returns an implementation-defined type that can be used as the container in a\n range-for loop. Where the values are the indices of all pieces in the\n _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs(\b()\b) i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh(\b()\b) *\b**\b**\b**\b**\b*\n sha1_hash i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh () const noexcept;\n info_hash_t const& i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n returns the info-hash of the torrent. For BitTorrent v2 support, use\n info_hashes() to get an object that may hold both a v1 and v2 info-hash\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* v\bv1\b1(\b()\b) v\bv2\b2(\b()\b) *\b**\b**\b**\b**\b*\n-bool v\bv2\b2 () const;\n bool v\bv1\b1 () const;\n+bool v\bv2\b2 () const;\n returns whether this torrent has v1 and/or v2 metadata, respectively. Hybrid\n torrents have both. These are shortcuts for info_hashes().has_v1() and\n info_hashes().has_v2() calls.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_f\bfi\bil\ble\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n int n\bnu\bum\bm_\b_f\bfi\bil\ble\bes\bs () const;\n If you need index-access to files you can use the num_files() along with the\n@@ -2436,15 +2436,15 @@\n than the i2p network.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n int p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be (piece_index_t index) const;\n returns the piece size of file with index. This will be the same as\n _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b), except for the last piece, which may be shorter.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* h\bha\bas\bsh\bh_\b_f\bfo\bor\br_\b_p\bpi\bie\bec\bce\be(\b()\b) h\bha\bas\bsh\bh_\b_f\bfo\bor\br_\b_p\bpi\bie\bec\bce\be_\b_p\bpt\btr\br(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* h\bha\bas\bsh\bh_\b_f\bfo\bor\br_\b_p\bpi\bie\bec\bce\be_\b_p\bpt\btr\br(\b()\b) h\bha\bas\bsh\bh_\b_f\bfo\bor\br_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n char const* h\bha\bas\bsh\bh_\b_f\bfo\bor\br_\b_p\bpi\bie\bec\bce\be_\b_p\bpt\btr\br (piece_index_t const index) const;\n sha1_hash h\bha\bas\bsh\bh_\b_f\bfo\bor\br_\b_p\bpi\bie\bec\bce\be (piece_index_t index) const;\n hash_for_piece() takes a piece-index and returns the 20-bytes sha1-hash for\n that piece and info_hash() returns the 20-bytes sha1-hash for the info-section\n of the torrent file. hash_for_piece_ptr() returns a pointer to the 20 byte sha1\n digest for the piece. Note that the string is not 0-terminated.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -2897,17 +2897,17 @@\n class holding the info-hash of a torrent. It can hold a v1 info-hash (SHA-1) or\n a v2 info-hash (SHA-256) or both.\n Note\n If has_v2() is false then the v1 hash might actually be a truncated v2 hash\n struct info_hash_t\n {\n explicit i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha256_hash h2) noexcept;\n- explicit i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1) noexcept;\n- i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt () noexcept = default;\n i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1, sha256_hash h2) noexcept;\n+ i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt () noexcept = default;\n+ explicit i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1) noexcept;\n bool h\bha\bas\bs_\b_v\bv1\b1 () const;\n bool h\bha\bas\bs_\b_v\bv2\b2 () const;\n bool h\bha\bas\bs (protocol_version v) const;\n sha1_hash g\bge\bet\bt (protocol_version v) const;\n sha1_hash g\bge\bet\bt_\b_b\bbe\bes\bst\bt () const;\n friend bool o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (info_hash_t const& lhs, info_hash_t const& rhs);\n friend bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (info_hash_t const& lhs, info_hash_t const& rhs)\n@@ -2918,23 +2918,23 @@\n \n sha1_hash v1;\n sha256_hash v2;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt(\b()\b) *\b**\b**\b**\b**\b*\n explicit i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha256_hash h2) noexcept;\n-explicit i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1) noexcept;\n-i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt () noexcept = default;\n i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1, sha256_hash h2) noexcept;\n+i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt () noexcept = default;\n+explicit i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh_\b_t\bt (sha1_hash h1) noexcept;\n The default constructor creates an object that has neither a v1 or v2 hash.\n For backwards compatibility, make it possible to construct directly from a v1\n hash. This constructor allows i\bim\bmp\bpl\bli\bic\bci\bit\bt conversion from a v1 hash, but the\n implicitness is deprecated.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* h\bha\bas\bs_\b_v\bv2\b2(\b()\b) h\bha\bas\bs_\b_v\bv1\b1(\b()\b) h\bha\bas\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* h\bha\bas\bs_\b_v\bv2\b2(\b()\b) h\bha\bas\bs(\b()\b) h\bha\bas\bs_\b_v\bv1\b1(\b()\b) *\b**\b**\b**\b**\b*\n bool h\bha\bas\bs_\b_v\bv1\b1 () const;\n bool h\bha\bas\bs_\b_v\bv2\b2 () const;\n bool h\bha\bas\bs (protocol_version v) const;\n returns true if the corresponding info hash is present in this object.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* g\bge\bet\bt(\b()\b) *\b**\b**\b**\b**\b*\n sha1_hash g\bge\bet\bt (protocol_version v) const;\n@@ -2989,41 +2989,41 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n start\n The byte offset within that piece where the range starts.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n length\n The size of the range, in bytes.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b**\b* l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be(\b()\b) l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd(\b()\b) l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_b\bbu\buf\bff\bfe\ber\br(\b()\b) *\b**\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b**\b* l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_b\bbu\buf\bff\bfe\ber\br(\b()\b) l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be(\b()\b) l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bl_\bo_\ba_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b._\bh_\bp_\bp\"\n-add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (\n- std::string const& filename);\n add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_b\bbu\buf\bff\bfe\ber\br (\n span buffer);\n+add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (\n+ std::string const& filename);\n+add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd (\n+ bdecode_node const& torrent_file);\n add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_b\bbu\buf\bff\bfe\ber\br (\n span buffer, load_torrent_limits const& cfg);\n add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (\n std::string const& filename, load_torrent_limits const& cfg);\n add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd (\n- bdecode_node const& torrent_file);\n-add_torrent_params l\blo\boa\bad\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\brs\bse\bed\bd (\n bdecode_node const& torrent_file, load_torrent_limits const& cfg);\n These functions load the content of a .torrent file into an _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs\n object. The immutable part of a torrent file (the info-dictionary) is stored in\n the ti field in the _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs object (as a _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object). The\n returned object is suitable to be:\n * added to a _\bs_\be_\bs_\bs_\bi_\bo_\bn via _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b) or _\ba_\bs_\by_\bn_\bc_\b__\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b(_\b)\n * saved as a .torrent_file via _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b)\n * turned into a magnet link via _\bm_\ba_\bk_\be_\b__\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b(_\b)\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b._\bh_\bp_\bp\"\n-std::string m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (add_torrent_params const& atp);\n-std::string m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (torrent_handle const& handle);\n std::string m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (torrent_info const& info);\n+std::string m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (torrent_handle const& handle);\n+std::string m\bma\bak\bke\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (add_torrent_params const& atp);\n Generates a magnet URI from the specified torrent.\n Several fields from the _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs objects are recorded in the magnet\n link. In order to not include them, they have to be cleared before calling\n _\bm_\ba_\bk_\be_\b__\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b(_\b). These fields are used:\n ti, info_hashes, url_seeds, dht_nodes, file_priorities, trackers,\n name, peers.\n Depending on what the use case for the resulting magnet link is, clearing peers\n@@ -3038,16 +3038,16 @@\n The overload that takes a _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be will make blocking calls to query\n information about the torrent. If the torrent handle is invalid, an empty\n string is returned.\n For more information about magnet links, see _\bm_\ba_\bg_\bn_\be_\bt_\b _\bl_\bi_\bn_\bk_\bs.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* p\bpa\bar\brs\bse\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bm_\ba_\bg_\bn_\be_\bt_\b__\bu_\br_\bi_\b._\bh_\bp_\bp\"\n-add_torrent_params p\bpa\bar\brs\bse\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (string_view uri);\n void p\bpa\bar\brs\bse\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (string_view uri, add_torrent_params& p, error_code& ec);\n+add_torrent_params p\bpa\bar\brs\bse\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (string_view uri);\n add_torrent_params p\bpa\bar\brs\bse\be_\b_m\bma\bag\bgn\bne\bet\bt_\b_u\bur\bri\bi (string_view uri, error_code& ec);\n This function parses out information from the magnet link and populates the\n _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs object. The overload that does not take an error_code\n reference will throw a system_error on error The overload taking an\n add_torrent_params reference will fill in the fields specified in the magnet\n URI.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -3591,15 +3591,15 @@\n through the torrent and the piece_picker.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bti\bic\bck\bk(\b()\b) *\b**\b**\b**\b**\b*\n virtual void t\bti\bic\bck\bk ();\n This hook is called approximately once per second. It is a way of making it\n easy for plugins to do timed events, for sending messages or whatever.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bon\bn_\b_p\bpa\bau\bus\bse\be(\b()\b) o\bon\bn_\b_r\bre\bes\bsu\bum\bme\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* o\bon\bn_\b_r\bre\bes\bsu\bum\bme\be(\b()\b) o\bon\bn_\b_p\bpa\bau\bus\bse\be(\b()\b) *\b**\b**\b**\b**\b*\n virtual bool o\bon\bn_\b_p\bpa\bau\bus\bse\be ();\n virtual bool o\bon\bn_\b_r\bre\bes\bsu\bum\bme\be ();\n These hooks are called when the torrent is paused and resumed respectively. The\n return value indicates if the event was handled. A return value of true\n indicates that it was handled, and no other _\bp_\bl_\bu_\bg_\bi_\bn after this one will have\n this hook function called, and the standard handler will also not be invoked.\n So, returning true effectively overrides the standard behavior of pause or\n@@ -3647,43 +3647,43 @@\n {\n virtual string_view t\bty\byp\bpe\be () const;\n virtual void a\bad\bdd\bd_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be (entry&);\n virtual void o\bon\bn_\b_d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bt (error_code const&);\n virtual void o\bon\bn_\b_c\bco\bon\bnn\bne\bec\bct\bte\bed\bd ();\n virtual bool o\bon\bn_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be (span);\n virtual bool o\bon\bn_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be (bdecode_node const&);\n- virtual bool o\bon\bn_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n- virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n- virtual bool o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& /\b/*\b*b\bbi\bit\btf\bfi\bie\bel\bld\bd*\b*/\b/);\n- virtual bool o\bon\bn_\b_h\bha\bav\bve\be (piece_index_t);\n- virtual bool o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt (piece_index_t);\n virtual bool o\bon\bn_\b_u\bun\bnc\bch\bho\bok\bke\be ();\n+ virtual bool o\bon\bn_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n+ virtual bool o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_n\bno\bon\bne\be ();\n+ virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n+ virtual bool o\bon\bn_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n+ virtual bool o\bon\bn_\b_h\bha\bav\bve\be (piece_index_t);\n virtual bool o\bon\bn_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n+ virtual bool o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt (piece_index_t);\n+ virtual bool o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& /\b/*\b*b\bbi\bit\btf\bfi\bie\bel\bld\bd*\b*/\b/);\n virtual bool o\bon\bn_\b_c\bch\bho\bok\bke\be ();\n- virtual bool o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n- virtual bool o\bon\bn_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n virtual bool o\bon\bn_\b_p\bpi\bie\bec\bce\be (peer_request const& /\b/*\b*p\bpi\bie\bec\bce\be*\b*/\b/\n , span /\b/*\b*b\bbu\buf\bf*\b*/\b/);\n- virtual bool o\bon\bn_\b_s\bsu\bug\bgg\bge\bes\bst\bt (piece_index_t);\n virtual bool o\bon\bn_\b_c\bca\ban\bnc\bce\bel\bl (peer_request const&);\n virtual bool o\bon\bn_\b_r\bre\bej\bje\bec\bct\bt (peer_request const&);\n- virtual void s\bse\ben\bnt\bt_\b_c\bca\ban\bnc\bce\bel\bl (peer_request const&);\n- virtual void s\bse\ben\bnt\bt_\b_a\bal\bll\blo\bow\bw_\b_f\bfa\bas\bst\bt (piece_index_t);\n- virtual void s\bse\ben\bnt\bt_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n+ virtual bool o\bon\bn_\b_s\bsu\bug\bgg\bge\bes\bst\bt (piece_index_t);\n+ virtual void s\bse\ben\bnt\bt_\b_r\bre\bej\bje\bec\bct\bt_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n virtual void s\bse\ben\bnt\bt_\b_s\bsu\bug\bgg\bge\bes\bst\bt (piece_index_t);\n virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be_\b_n\bno\bon\bne\be ();\n+ virtual void s\bse\ben\bnt\bt_\b_a\bal\bll\blo\bow\bw_\b_f\bfa\bas\bst\bt (piece_index_t);\n+ virtual void s\bse\ben\bnt\bt_\b_c\bca\ban\bnc\bce\bel\bl (peer_request const&);\n+ virtual void s\bse\ben\bnt\bt_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n virtual void s\bse\ben\bnt\bt_\b_c\bch\bho\bok\bke\be ();\n- virtual void s\bse\ben\bnt\bt_\b_r\bre\bej\bje\bec\bct\bt_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n+ virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n+ virtual void s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be (peer_request const&);\n virtual void s\bse\ben\bnt\bt_\b_u\bun\bnc\bch\bho\bok\bke\be ();\n virtual void s\bse\ben\bnt\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n virtual void s\bse\ben\bnt\bt_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n- virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n- virtual void s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be (peer_request const&);\n virtual void s\bse\ben\bnt\bt_\b_p\bpa\bay\byl\blo\boa\bad\bd (int /\b/*\b* b\bby\byt\bte\bes\bs *\b*/\b/);\n virtual bool c\bca\ban\bn_\b_d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bt (error_code const& /\b/*\b*e\bec\bc*\b*/\b/);\n virtual bool o\bon\bn_\b_e\bex\bxt\bte\ben\bnd\bde\bed\bd (int /\b/*\b*l\ble\ben\bng\bgt\bth\bh*\b*/\b/, int /\b/*\b*m\bms\bsg\bg*\b*/\b/,\n span /\b/*\b*b\bbo\bod\bdy\by*\b*/\b/);\n virtual bool o\bon\bn_\b_u\bun\bnk\bkn\bno\bow\bwn\bn_\b_m\bme\bes\bss\bsa\bag\bge\be (int /\b/*\b*l\ble\ben\bng\bgt\bth\bh*\b*/\b/, int /\b/*\b*m\bms\bsg\bg*\b*/\b/,\n span /\b/*\b*b\bbo\bod\bdy\by*\b*/\b/);\n virtual void o\bon\bn_\b_p\bpi\bie\bec\bce\be_\b_p\bpa\bas\bss\bs (piece_index_t);\n@@ -3719,48 +3719,48 @@\n *\b**\b**\b**\b**\b* o\bon\bn_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be(\b()\b) *\b**\b**\b**\b**\b*\n virtual bool o\bon\bn_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be (bdecode_node const&);\n called when the extension handshake from the other end is received if this\n returns false, it means that this extension isn't supported by this peer. It\n will result in this _\bp_\be_\be_\br_\b__\bp_\bl_\bu_\bg_\bi_\bn being removed from the peer_connection and\n destructed. this is not called for web seeds\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl(\b()\b) o\bon\bn_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) o\bon\bn_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) o\bon\bn_\b_c\bch\bho\bok\bke\be(\b()\b) o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be\n-(\b()\b) o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt(\b()\b) o\bon\bn_\b_u\bun\bnc\bch\bho\bok\bke\be(\b()\b) o\bon\bn_\b_h\bha\bav\bve\be_\b_n\bno\bon\bne\be(\b()\b) o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd(\b()\b) o\bon\bn_\b_r\bre\beq\bqu\bue\bes\bst\bt(\b()\b)\n-o\bon\bn_\b_h\bha\bav\bve\be(\b()\b) *\b**\b**\b**\b**\b*\n-virtual bool o\bon\bn_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n-virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n-virtual bool o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& /\b/*\b*b\bbi\bit\btf\bfi\bie\bel\bld\bd*\b*/\b/);\n-virtual bool o\bon\bn_\b_h\bha\bav\bve\be (piece_index_t);\n-virtual bool o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt (piece_index_t);\n+*\b**\b**\b**\b**\b* o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl(\b()\b) o\bon\bn_\b_c\bch\bho\bok\bke\be(\b()\b) o\bon\bn_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) o\bon\bn_\b_h\bha\bav\bve\be_\b_n\bno\bon\bne\be(\b()\b) o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be\n+(\b()\b) o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd(\b()\b) o\bon\bn_\b_r\bre\beq\bqu\bue\bes\bst\bt(\b()\b) o\bon\bn_\b_h\bha\bav\bve\be(\b()\b) o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt(\b()\b) o\bon\bn_\b_u\bun\bnc\bch\bho\bok\bke\be(\b()\b)\n+o\bon\bn_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n virtual bool o\bon\bn_\b_u\bun\bnc\bch\bho\bok\bke\be ();\n+virtual bool o\bon\bn_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n+virtual bool o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_n\bno\bon\bne\be ();\n+virtual bool o\bon\bn_\b_h\bha\bav\bve\be_\b_a\bal\bll\bl ();\n+virtual bool o\bon\bn_\b_r\bre\beq\bqu\bue\bes\bst\bt (peer_request const&);\n+virtual bool o\bon\bn_\b_h\bha\bav\bve\be (piece_index_t);\n virtual bool o\bon\bn_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n+virtual bool o\bon\bn_\b_a\bal\bll\blo\bow\bwe\bed\bd_\b_f\bfa\bas\bst\bt (piece_index_t);\n+virtual bool o\bon\bn_\b_b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& /\b/*\b*b\bbi\bit\btf\bfi\bie\bel\bld\bd*\b*/\b/);\n virtual bool o\bon\bn_\b_c\bch\bho\bok\bke\be ();\n-virtual bool o\bon\bn_\b_d\bdo\bon\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n-virtual bool o\bon\bn_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n returning true from any of the message handlers indicates that the _\bp_\bl_\bu_\bg_\bi_\bn has\n handled the message. it will break the _\bp_\bl_\bu_\bg_\bi_\bn chain traversing and not let\n anyone else handle the message, including the default handler.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* o\bon\bn_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n virtual bool o\bon\bn_\b_p\bpi\bie\bec\bce\be (peer_request const& /\b/*\b*p\bpi\bie\bec\bce\be*\b*/\b/\n , span /\b/*\b*b\bbu\buf\bf*\b*/\b/);\n This function is called when the peer connection is receiving a piece. buf\n points (non-owning pointer) to the data in an internal immutable disk buffer.\n The length of the data is specified in the length member of the piece\n parameter. returns true to indicate that the piece is handled and the rest of\n the logic should be ignored.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be(\b()\b) s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) s\bse\ben\bnt\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) s\bse\ben\bnt\bt_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b)\n-s\bse\ben\bnt\bt_\b_u\bun\bnc\bch\bho\bok\bke\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be(\b()\b) s\bse\ben\bnt\bt_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) s\bse\ben\bnt\bt_\b_u\bun\bnc\bch\bho\bok\bke\be(\b()\b)\n+s\bse\ben\bnt\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n+virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n+virtual void s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be (peer_request const&);\n virtual void s\bse\ben\bnt\bt_\b_u\bun\bnc\bch\bho\bok\bke\be ();\n virtual void s\bse\ben\bnt\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n virtual void s\bse\ben\bnt\bt_\b_n\bno\bot\bt_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd ();\n-virtual void s\bse\ben\bnt\bt_\b_h\bha\bav\bve\be (piece_index_t);\n-virtual void s\bse\ben\bnt\bt_\b_p\bpi\bie\bec\bce\be (peer_request const&);\n called after a choke message has been sent to the peer\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bse\ben\bnt\bt_\b_p\bpa\bay\byl\blo\boa\bad\bd(\b()\b) *\b**\b**\b**\b**\b*\n virtual void s\bse\ben\bnt\bt_\b_p\bpa\bay\byl\blo\boa\bad\bd (int /\b/*\b* b\bby\byt\bte\bes\bs *\b*/\b/);\n called after piece data has been sent to the peer this can be used for stats\n book keeping\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -3831,48 +3831,48 @@\n the _\bp_\be_\be_\br_\b__\bc_\bo_\bn_\bn_\be_\bc_\bt_\bi_\bo_\bn_\b__\bh_\ba_\bn_\bd_\bl_\be class provides a handle to the internal peer\n connection object, to be used by plugins. This is a low level interface that\n may not be stable across libtorrent versions\n struct peer_connection_handle\n {\n explicit p\bpe\bee\ber\br_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn_\b_h\bha\ban\bnd\bdl\ble\be (std::weak_ptr impl);\n connection_type t\bty\byp\bpe\be () const;\n- void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (std::shared_ptr);\n peer_plugin const* f\bfi\bin\bnd\bd_\b_p\bpl\blu\bug\bgi\bin\bn (string_view type) const;\n+ void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (std::shared_ptr);\n bool i\bis\bs_\b_s\bse\bee\bed\bd () const;\n bool u\bup\bpl\blo\boa\bad\bd_\b_o\bon\bnl\bly\by () const;\n peer_id const& p\bpi\bid\bd () const;\n bool h\bha\bas\bs_\b_p\bpi\bie\bec\bce\be (piece_index_t i) const;\n bool i\bis\bs_\b_c\bch\bho\bok\bke\bed\bd () const;\n bool i\bis\bs_\b_i\bin\bnt\bte\ber\bre\bes\bst\bti\bin\bng\bg () const;\n- bool i\bis\bs_\b_p\bpe\bee\ber\br_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd () const;\n bool h\bha\bas\bs_\b_p\bpe\bee\ber\br_\b_c\bch\bho\bok\bke\bed\bd () const;\n+ bool i\bis\bs_\b_p\bpe\bee\ber\br_\b_i\bin\bnt\bte\ber\bre\bes\bst\bte\bed\bd () const;\n void m\bma\bay\byb\bbe\be_\b_u\bun\bnc\bch\bho\bok\bke\be_\b_t\bth\bhi\bis\bs_\b_p\bpe\bee\ber\br ();\n void c\bch\bho\bok\bke\be_\b_t\bth\bhi\bis\bs_\b_p\bpe\bee\ber\br ();\n void g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo (peer_info& p) const;\n torrent_handle a\bas\bss\bso\boc\bci\bia\bat\bte\bed\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt () const;\n _\bt_\bc_\bp_\b:_\b:_\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt const& r\bre\bem\bmo\bot\bte\be () const;\n _\bt_\bc_\bp_\b:_\b:_\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt l\blo\boc\bca\bal\bl_\b_e\ben\bnd\bdp\bpo\boi\bin\bnt\bt () const;\n- bool i\bis\bs_\b_d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bti\bin\bng\bg () const;\n+ bool i\bis\bs_\b_o\bou\but\btg\bgo\boi\bin\bng\bg () const;\n void d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bt (error_code const& ec, operation_t op\n , disconnect_severity_t = peer_connection_interface::normal);\n- bool i\bis\bs_\b_o\bou\but\btg\bgo\boi\bin\bng\bg () const;\n+ bool i\bis\bs_\b_d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bti\bin\bng\bg () const;\n bool i\bis\bs_\b_c\bco\bon\bnn\bne\bec\bct\bti\bin\bng\bg () const;\n- bool i\big\bgn\bno\bor\bre\be_\b_u\bun\bnc\bch\bho\bok\bke\be_\b_s\bsl\blo\bot\bts\bs () const;\n bool o\bon\bn_\b_l\blo\boc\bca\bal\bl_\b_n\bne\bet\btw\bwo\bor\brk\bk () const;\n+ bool i\big\bgn\bno\bor\bre\be_\b_u\bun\bnc\bch\bho\bok\bke\be_\b_s\bsl\blo\bot\bts\bs () const;\n bool f\bfa\bai\bil\ble\bed\bd () const;\n+ bool s\bsh\bho\bou\bul\bld\bd_\b_l\blo\bog\bg (peer_log_alert::direction_t direction) const;\n void p\bpe\bee\ber\br_\b_l\blo\bog\bg (peer_log_alert::direction_t direction\n , char const* event, char const* fmt = \"\", ...) const TORRENT_FORMAT\n (4,5);\n- bool s\bsh\bho\bou\bul\bld\bd_\b_l\blo\bog\bg (peer_log_alert::direction_t direction) const;\n bool c\bca\ban\bn_\b_d\bdi\bis\bsc\bco\bon\bnn\bne\bec\bct\bt (error_code const& ec) const;\n bool h\bha\bas\bs_\b_m\bme\bet\bta\bad\bda\bat\bta\ba () const;\n bool i\bin\bn_\b_h\bha\ban\bnd\bds\bsh\bha\bak\bke\be () const;\n void s\bse\ben\bnd\bd_\b_b\bbu\buf\bff\bfe\ber\br (char const* begin, int size);\n- std::time_t l\bla\bas\bst\bt_\b_s\bse\bee\ben\bn_\b_c\bco\bom\bmp\bpl\ble\bet\bte\be () const;\n time_point t\bti\bim\bme\be_\b_o\bof\bf_\b_l\bla\bas\bst\bt_\b_u\bun\bnc\bch\bho\bok\bke\be () const;\n+ std::time_t l\bla\bas\bst\bt_\b_s\bse\bee\ben\bn_\b_c\bco\bom\bmp\bpl\ble\bet\bte\be () const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (peer_connection_handle const& o) const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (peer_connection_handle const& o) const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br<\b< (peer_connection_handle const& o) const;\n std::shared_ptr n\bna\bat\bti\biv\bve\be_\b_h\bha\ban\bnd\bdl\ble\be () const;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* b\bbt\bt_\b_p\bpe\bee\ber\br_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn_\b_h\bha\ban\bnd\bdl\ble\be *\b**\b**\b**\b**\b**\b*\n@@ -3882,16 +3882,16 @@\n libtorrent versions.\n struct bt_peer_connection_handle : peer_connection_handle\n {\n explicit b\bbt\bt_\b_p\bpe\bee\ber\br_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn_\b_h\bha\ban\bnd\bdl\ble\be (peer_connection_handle pc);\n bool p\bpa\bac\bck\bke\bet\bt_\b_f\bfi\bin\bni\bis\bsh\bhe\bed\bd () const;\n bool s\bsu\bup\bpp\bpo\bor\brt\bt_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bns\bs () const;\n bool s\bsu\bup\bpp\bpo\bor\brt\bts\bs_\b_e\ben\bnc\bcr\bry\byp\bpt\bti\bio\bon\bn () const;\n- void s\bsw\bwi\bit\btc\bch\bh_\b_r\bre\bec\bcv\bv_\b_c\bcr\bry\byp\bpt\bto\bo (std::shared_ptr crypto);\n void s\bsw\bwi\bit\btc\bch\bh_\b_s\bse\ben\bnd\bd_\b_c\bcr\bry\byp\bpt\bto\bo (std::shared_ptr crypto);\n+ void s\bsw\bwi\bit\btc\bch\bh_\b_r\bre\bec\bcv\bv_\b_c\bcr\bry\byp\bpt\bto\bo (std::shared_ptr crypto);\n std::shared_ptr n\bna\bat\bti\biv\bve\be_\b_h\bha\ban\bnd\bdl\ble\be () const;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* c\bcr\bre\bea\bat\bte\be_\b_u\but\bt_\b_p\bpe\bex\bx_\b_p\bpl\blu\bug\bgi\bin\bn(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\be_\bx_\bt_\be_\bn_\bs_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\b__\bp_\be_\bx_\b._\bh_\bp_\bp\"\n std::shared_ptr c\bcr\bre\bea\bat\bte\be_\b_u\but\bt_\b_p\bpe\bex\bx_\b_p\bpl\blu\bug\bgi\bin\bn (torrent_handle const&,\n client_data_t);\n@@ -3952,80 +3952,80 @@\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b._\bh_\bp_\bp\"\n The file_storage class represents a file list and the piece size. Everything\n necessary to interpret a regular bittorrent storage file structure.\n class file_storage\n {\n bool i\bis\bs_\b_v\bva\bal\bli\bid\bd () const;\n void r\bre\bes\bse\ber\brv\bve\be (int num_files);\n- void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (std::string const& path, std::int64_t file_size\n- , file_flags_t file_flags = {}\n- , std::time_t mtime = 0, string_view symlink_path = string_view()\n- , char const* root_hash = nullptr);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be_\b_b\bbo\bor\brr\bro\bow\bw (error_code& ec, string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be_\b_b\bbo\bor\brr\bro\bow\bw (string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n+ void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (std::string const& path, std::int64_t file_size\n+ , file_flags_t file_flags = {}\n+ , std::time_t mtime = 0, string_view symlink_path = string_view()\n+ , char const* root_hash = nullptr);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (error_code& ec, std::string const& path, std::int64_t\n file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n void r\bre\ben\bna\bam\bme\be_\b_f\bfi\bil\ble\be (file_index_t index, std::string const& new_filename);\n std::vector m\bma\bap\bp_\b_b\bbl\blo\boc\bck\bk (piece_index_t piece, std::int64_t offset\n , std::int64_t size) const;\n peer_request m\bma\bap\bp_\b_f\bfi\bil\ble\be (file_index_t file, std::int64_t offset, int size)\n const;\n int n\bnu\bum\bm_\b_f\bfi\bil\ble\bes\bs () const noexcept;\n file_index_t e\ben\bnd\bd_\b_f\bfi\bil\ble\be () const noexcept;\n index_range f\bfi\bil\ble\be_\b_r\bra\ban\bng\bge\be () const noexcept;\n std::int64_t t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be () const;\n- int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n void s\bse\bet\bt_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs (int n);\n+ int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n piece_index_t e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be () const;\n piece_index_t l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be () const;\n index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const noexcept;\n- int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh (int l);\n+ int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n int p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be (piece_index_t index) const;\n int p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be2\b2 (piece_index_t index) const;\n int b\bbl\blo\boc\bck\bks\bs_\b_i\bin\bn_\b_p\bpi\bie\bec\bce\be2\b2 (piece_index_t index) const;\n int b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be () const;\n- std::string const& n\bna\bam\bme\be () const;\n void s\bse\bet\bt_\b_n\bna\bam\bme\be (std::string const& n);\n+ std::string const& n\bna\bam\bme\be () const;\n void s\bsw\bwa\bap\bp (file_storage& ti) noexcept;\n void c\bca\ban\bno\bon\bni\bic\bca\bal\bli\biz\bze\be ();\n- std::time_t m\bmt\bti\bim\bme\be (file_index_t index) const;\n- std::string f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh (file_index_t index, std::string const& save_path =\n-\"\") const;\n+ std::int64_t f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt (file_index_t index) const;\n+ std::int64_t f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be (file_index_t index) const;\n std::string s\bsy\bym\bml\bli\bin\bnk\bk (file_index_t index) const;\n sha1_hash h\bha\bas\bsh\bh (file_index_t index) const;\n- sha256_hash r\bro\boo\bot\bt (file_index_t index) const;\n- std::int64_t f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt (file_index_t index) const;\n- char const* r\bro\boo\bot\bt_\b_p\bpt\btr\br (file_index_t const index) const;\n string_view f\bfi\bil\ble\be_\b_n\bna\bam\bme\be (file_index_t index) const;\n bool p\bpa\bad\bd_\b_f\bfi\bil\ble\be_\b_a\bat\bt (file_index_t index) const;\n- std::int64_t f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be (file_index_t index) const;\n- int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs (file_index_t index) const;\n+ std::string f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh (file_index_t index, std::string const& save_path =\n+\"\") const;\n+ sha256_hash r\bro\boo\bot\bt (file_index_t index) const;\n+ char const* r\bro\boo\bot\bt_\b_p\bpt\btr\br (file_index_t const index) const;\n+ std::time_t m\bmt\bti\bim\bme\be (file_index_t index) const;\n int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_b\bbl\blo\boc\bck\bks\bs (file_index_t index) const;\n index_range f\bfi\bil\ble\be_\b_p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be (file_index_t) const;\n+ int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs (file_index_t index) const;\n int f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_b\bbl\blo\boc\bck\bk_\b_n\bno\bod\bde\be (file_index_t index) const;\n int f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_n\bno\bod\bde\be (file_index_t index) const;\n std::uint32_t f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh_\b_h\bha\bas\bsh\bh (file_index_t index, std::string const&\n save_path) const;\n void a\bal\bll\bl_\b_p\bpa\bat\bth\bh_\b_h\bha\bas\bsh\bhe\bes\bs (std::unordered_set& table) const;\n file_flags_t f\bfi\bil\ble\be_\b_f\bfl\bla\bag\bgs\bs (file_index_t index) const;\n bool f\bfi\bil\ble\be_\b_a\bab\bbs\bso\bol\blu\but\bte\be_\b_p\bpa\bat\bth\bh (file_index_t index) const;\n- file_index_t f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_o\bof\bff\bfs\bse\bet\bt (std::int64_t offset) const;\n file_index_t f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_p\bpi\bie\bec\bce\be (piece_index_t piece) const;\n+ file_index_t f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_o\bof\bff\bfs\bse\bet\bt (std::int64_t offset) const;\n file_index_t f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_f\bfo\bor\br_\b_r\bro\boo\bot\bt (sha256_hash const& root_hash) const;\n piece_index_t p\bpi\bie\bec\bce\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_f\bfi\bil\ble\be (file_index_t f) const;\n void s\bsa\ban\bni\bit\bti\biz\bze\be_\b_s\bsy\bym\bml\bli\bin\bnk\bks\bs ();\n bool v\bv2\b2 () const;\n \n static constexpr file_flags_t f\bfl\bla\bag\bg_\b_p\bpa\bad\bd_\b_f\bfi\bil\ble\be = 0_bit;\n static constexpr file_flags_t f\bfl\bla\bag\bg_\b_h\bhi\bid\bdd\bde\ben\bn = 1_bit;\n@@ -4042,28 +4042,28 @@\n *\b**\b**\b**\b**\b* r\bre\bes\bse\ber\brv\bve\be(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\bes\bse\ber\brv\bve\be (int num_files);\n allocates space for num_files in the internal file list. This can be used to\n avoid reallocating the internal file list when the number of files to be added\n is known up-front.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_f\bfi\bil\ble\be_\b_b\bbo\bor\brr\bro\bow\bw(\b()\b) a\bad\bdd\bd_\b_f\bfi\bil\ble\be(\b()\b) *\b**\b**\b**\b**\b*\n-void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (std::string const& path, std::int64_t file_size\n- , file_flags_t file_flags = {}\n- , std::time_t mtime = 0, string_view symlink_path = string_view()\n- , char const* root_hash = nullptr);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be_\b_b\bbo\bor\brr\bro\bow\bw (error_code& ec, string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be_\b_b\bbo\bor\brr\bro\bow\bw (string_view filename\n , std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}, char const* filehash = nullptr\n , std::int64_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n+void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (std::string const& path, std::int64_t file_size\n+ , file_flags_t file_flags = {}\n+ , std::time_t mtime = 0, string_view symlink_path = string_view()\n+ , char const* root_hash = nullptr);\n void a\bad\bdd\bd_\b_f\bfi\bil\ble\be (error_code& ec, std::string const& path, std::int64_t file_size\n , file_flags_t file_flags = {}\n , std::time_t mtime = 0, string_view symlink_path = string_view()\n , char const* root_hash = nullptr);\n Adds a file to the file storage. The add_file_borrow version expects that\n filename is the file name (without a path) of the file that's being added. This\n memory is b\bbo\bor\brr\bro\bow\bwe\bed\bd, i.e. it is the caller's responsibility to make sure it\n@@ -4136,17 +4136,17 @@\n range-for loop. Where the values are the indices of all files in the\n _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n std::int64_t t\bto\bot\bta\bal\bl_\b_s\bsi\biz\bze\be () const;\n returns the total number of bytes all the files in this torrent spans\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n-int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n+*\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) s\bse\bet\bt_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs (int n);\n+int n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs () const;\n set and get the number of pieces in the torrent\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n piece_index_t e\ben\bnd\bd_\b_p\bpi\bie\bec\bce\be () const;\n returns the index of the one-past-end piece in the file storage\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* l\bla\bas\bst\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n@@ -4158,16 +4158,16 @@\n *\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be(\b()\b) *\b**\b**\b**\b**\b*\n index_range p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be () const noexcept;\n returns an implementation-defined type that can be used as the container in a\n range-for loop. Where the values are the indices of all pieces in the\n _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) *\b**\b**\b**\b**\b*\n-int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh (int l);\n+int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n set and get the size of each piece in this torrent. It must be a power of two\n and at least 16 kiB.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n int p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be (piece_index_t index) const;\n returns the piece size of index. This will be the same as _\bp_\bi_\be_\bc_\be_\b__\bl_\be_\bn_\bg_\bt_\bh_\b(_\b),\n except for the last piece, which may be shorter.\n@@ -4184,41 +4184,41 @@\n returns the number of blocks in the specified piece, for v2 torrents.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n int b\bbl\blo\boc\bck\bks\bs_\b_p\bpe\ber\br_\b_p\bpi\bie\bec\bce\be () const;\n returns the number of blocks there are in the typical piece. There may be fewer\n in the last piece)\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* n\bna\bam\bme\be(\b()\b) s\bse\bet\bt_\b_n\bna\bam\bme\be(\b()\b) *\b**\b**\b**\b**\b*\n-std::string const& n\bna\bam\bme\be () const;\n+*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_n\bna\bam\bme\be(\b()\b) n\bna\bam\bme\be(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_n\bna\bam\bme\be (std::string const& n);\n+std::string const& n\bna\bam\bme\be () const;\n set and get the name of this torrent. For multi-file torrents, this is also the\n name of the root directory all the files are stored in.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bsw\bwa\bap\bp(\b()\b) *\b**\b**\b**\b**\b*\n void s\bsw\bwa\bap\bp (file_storage& ti) noexcept;\n swap all content of t\bth\bhi\bis\bs with t\bti\bi.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bca\ban\bno\bon\bni\bic\bca\bal\bli\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n void c\bca\ban\bno\bon\bni\bic\bca\bal\bli\biz\bze\be ();\n arrange files and padding to match the canonical form required by BEP 52\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* m\bmt\bti\bim\bme\be(\b()\b) f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt(\b()\b) h\bha\bas\bsh\bh(\b()\b) p\bpa\bad\bd_\b_f\bfi\bil\ble\be_\b_a\bat\bt(\b()\b) r\bro\boo\bot\bt_\b_p\bpt\btr\br(\b()\b) f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be(\b()\b) s\bsy\bym\bml\bli\bin\bnk\bk\n-(\b()\b) r\bro\boo\bot\bt(\b()\b) f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh(\b()\b) f\bfi\bil\ble\be_\b_n\bna\bam\bme\be(\b()\b) *\b**\b**\b**\b**\b*\n-std::time_t m\bmt\bti\bim\bme\be (file_index_t index) const;\n-std::string f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh (file_index_t index, std::string const& save_path = \"\")\n-const;\n+*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be(\b()\b) m\bmt\bti\bim\bme\be(\b()\b) r\bro\boo\bot\bt(\b()\b) f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt(\b()\b) s\bsy\bym\bml\bli\bin\bnk\bk(\b()\b) f\bfi\bil\ble\be_\b_n\bna\bam\bme\be(\b()\b) r\bro\boo\bot\bt_\b_p\bpt\btr\br(\b()\b)\n+p\bpa\bad\bd_\b_f\bfi\bil\ble\be_\b_a\bat\bt(\b()\b) f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh(\b()\b) h\bha\bas\bsh\bh(\b()\b) *\b**\b**\b**\b**\b*\n+std::int64_t f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt (file_index_t index) const;\n+std::int64_t f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be (file_index_t index) const;\n std::string s\bsy\bym\bml\bli\bin\bnk\bk (file_index_t index) const;\n sha1_hash h\bha\bas\bsh\bh (file_index_t index) const;\n-sha256_hash r\bro\boo\bot\bt (file_index_t index) const;\n-std::int64_t f\bfi\bil\ble\be_\b_o\bof\bff\bfs\bse\bet\bt (file_index_t index) const;\n-char const* r\bro\boo\bot\bt_\b_p\bpt\btr\br (file_index_t const index) const;\n string_view f\bfi\bil\ble\be_\b_n\bna\bam\bme\be (file_index_t index) const;\n bool p\bpa\bad\bd_\b_f\bfi\bil\ble\be_\b_a\bat\bt (file_index_t index) const;\n-std::int64_t f\bfi\bil\ble\be_\b_s\bsi\biz\bze\be (file_index_t index) const;\n+std::string f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh (file_index_t index, std::string const& save_path = \"\")\n+const;\n+sha256_hash r\bro\boo\bot\bt (file_index_t index) const;\n+char const* r\bro\boo\bot\bt_\b_p\bpt\btr\br (file_index_t const index) const;\n+std::time_t m\bmt\bti\bim\bme\be (file_index_t index) const;\n These functions are used to query attributes of files at a given index.\n The hash() is a SHA-1 hash of the file, or 0 if none was provided in the\n torrent file. This can potentially be used to join a bittorrent network with\n other file sharing networks.\n root() returns the SHA-256 merkle tree root of the specified file, in case this\n is a v2 torrent. Otherwise returns zeros. root_ptr() returns a pointer to the\n SHA-256 merkle tree root hash for the specified file. The pointer points into\n@@ -4232,23 +4232,23 @@\n pad_file_at() returns true if the file at the given index is a pad-file.\n file_name() returns j\bju\bus\bst\bt the name of the file, whereas file_path() returns the\n path (inside the torrent file) with the filename appended.\n file_offset() returns the byte offset within the torrent file where this file\n starts. It can be used to map the file to a piece index (given the piece size).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be(\b()\b) f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_b\bbl\blo\boc\bck\bks\bs(\b()\b) f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n-int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs (file_index_t index) const;\n int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_b\bbl\blo\boc\bck\bks\bs (file_index_t index) const;\n index_range f\bfi\bil\ble\be_\b_p\bpi\bie\bec\bce\be_\b_r\bra\ban\bng\bge\be (file_index_t) const;\n+int f\bfi\bil\ble\be_\b_n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs (file_index_t index) const;\n Returns the number of pieces or blocks the file atindexspans, under the\n assumption that the file is aligned to the start of a piece. This is only\n meaningful for v2 torrents, where files are guaranteed such alignment. These\n numbers are used to size and navigate the merkle hash tree for each file.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_b\bbl\blo\boc\bck\bk_\b_n\bno\bod\bde\be(\b()\b) f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_n\bno\bod\bde\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_n\bno\bod\bde\be(\b()\b) f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_b\bbl\blo\boc\bck\bk_\b_n\bno\bod\bde\be(\b()\b) *\b**\b**\b**\b**\b*\n int f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_b\bbl\blo\boc\bck\bk_\b_n\bno\bod\bde\be (file_index_t index) const;\n int f\bfi\bil\ble\be_\b_f\bfi\bir\brs\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_n\bno\bod\bde\be (file_index_t index) const;\n index of first piece node in the merkle tree\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh_\b_h\bha\bas\bsh\bh(\b()\b) *\b**\b**\b**\b**\b*\n std::uint32_t f\bfi\bil\ble\be_\b_p\bpa\bat\bth\bh_\b_h\bha\bas\bsh\bh (file_index_t index, std::string const& save_path)\n const;\n@@ -4267,17 +4267,17 @@\n returns a bitmask of flags from file_flags_t that apply to file at index.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_a\bab\bbs\bso\bol\blu\but\bte\be_\b_p\bpa\bat\bth\bh(\b()\b) *\b**\b**\b**\b**\b*\n bool f\bfi\bil\ble\be_\b_a\bab\bbs\bso\bol\blu\but\bte\be_\b_p\bpa\bat\bth\bh (file_index_t index) const;\n returns true if the file at the specified index has been renamed to have an\n absolute path, i.e. is not anchored in the save path of the torrent.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_o\bof\bff\bfs\bse\bet\bt(\b()\b) f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n-file_index_t f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_o\bof\bff\bfs\bse\bet\bt (std::int64_t offset) const;\n+*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_p\bpi\bie\bec\bce\be(\b()\b) f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_o\bof\bff\bfs\bse\bet\bt(\b()\b) *\b**\b**\b**\b**\b*\n file_index_t f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_p\bpi\bie\bec\bce\be (piece_index_t piece) const;\n+file_index_t f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_a\bat\bt_\b_o\bof\bff\bfs\bse\bet\bt (std::int64_t offset) const;\n returns the index of the file at the given offset in the torrent\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_f\bfo\bor\br_\b_r\bro\boo\bot\bt(\b()\b) *\b**\b**\b**\b**\b*\n file_index_t f\bfi\bil\ble\be_\b_i\bin\bnd\bde\bex\bx_\b_f\bfo\bor\br_\b_r\bro\boo\bot\bt (sha256_hash const& root_hash) const;\n finds the file with the given root hash and returns its index if there is no\n file with the root hash, file_index_t{-1} is returned\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -4415,34 +4415,34 @@\n passed in to libtorrent and returned on demand. It adds type-safety by\n requiring the same type be requested out of it as was assigned to it.\n struct client_data_t\n {\n c\bcl\bli\bie\ben\bnt\bt_\b_d\bda\bat\bta\ba_\b_t\bt () = default;\n explicit c\bcl\bli\bie\ben\bnt\bt_\b_d\bda\bat\bta\ba_\b_t\bt (T* v);\n client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (T* v);\n- T* g\bge\bet\bt () const;\n explicit operator T\bT () const;\n- client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void const*) = delete;\n+ T* g\bge\bet\bt () const;\n operator v\bvo\boi\bid\bd*\b* () const = delete;\n- client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void*) = delete;\n operator void c\bco\bon\bns\bst\bt*\b* () const = delete;\n+ client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void const*) = delete;\n+ client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void*) = delete;\n \n template ::value>::type>\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\bli\bie\ben\bnt\bt_\b_d\bda\bat\bta\ba_\b_t\bt(\b()\b) *\b**\b**\b**\b**\b*\n c\bcl\bli\bie\ben\bnt\bt_\b_d\bda\bat\bta\ba_\b_t\bt () = default;\n construct a nullptr client data\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* v\bvo\boi\bid\bd*\b*(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) c\bco\bon\bns\bst\bt*\b*(\b()\b) *\b**\b**\b**\b**\b*\n-client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void const*) = delete;\n+*\b**\b**\b**\b**\b* c\bco\bon\bns\bst\bt*\b*(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) v\bvo\boi\bid\bd*\b*(\b()\b) *\b**\b**\b**\b**\b*\n operator v\bvo\boi\bid\bd*\b* () const = delete;\n-client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void*) = delete;\n operator void c\bco\bon\bns\bst\bt*\b* () const = delete;\n+client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void const*) = delete;\n+client_data_t& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (void*) = delete;\n we don't allow type-unsafe operations\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_p\bpa\bar\bra\bam\bms\bs *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs_\b._\bh_\bp_\bp\"\n The _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs contains all the information in a .torrent file along\n with all information necessary to add that torrent to a _\bs_\be_\bs_\bs_\bi_\bo_\bn. The key fields\n when adding a torrent are:\n@@ -4748,16 +4748,16 @@\n peer_class_type_filter is a simple container for rules for adding and\n subtracting peer-classes from peers. It is applied a\baf\bft\bte\ber\br the peer class filter\n is applied (which is based on the peer's IP address).\n struct peer_class_type_filter\n {\n void a\bad\bdd\bd (socket_type_t const st, peer_class_t const peer_class);\n void r\bre\bem\bmo\bov\bve\be (socket_type_t const st, peer_class_t const peer_class);\n- void d\bdi\bis\bsa\bal\bll\blo\bow\bw (socket_type_t const st, peer_class_t const peer_class);\n void a\bal\bll\blo\bow\bw (socket_type_t const st, peer_class_t const peer_class);\n+ void d\bdi\bis\bsa\bal\bll\blo\bow\bw (socket_type_t const st, peer_class_t const peer_class);\n std::uint32_t a\bap\bpp\bpl\bly\by (socket_type_t const st, std::uint32_t peer_class_mask);\n friend bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (peer_class_type_filter const& lhs\n , peer_class_type_filter const& rhs);\n \n enum socket_type_t\n {\n tcp_socket,\n@@ -4771,17 +4771,17 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bad\bdd\bd(\b()\b) r\bre\bem\bmo\bov\bve\be(\b()\b) *\b**\b**\b**\b**\b*\n void a\bad\bdd\bd (socket_type_t const st, peer_class_t const peer_class);\n void r\bre\bem\bmo\bov\bve\be (socket_type_t const st, peer_class_t const peer_class);\n add() and remove() adds and removes a peer class to be added to new peers based\n on socket type.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* d\bdi\bis\bsa\bal\bll\blo\bow\bw(\b()\b) a\bal\bll\blo\bow\bw(\b()\b) *\b**\b**\b**\b**\b*\n-void d\bdi\bis\bsa\bal\bll\blo\bow\bw (socket_type_t const st, peer_class_t const peer_class);\n+*\b**\b**\b**\b**\b* a\bal\bll\blo\bow\bw(\b()\b) d\bdi\bis\bsa\bal\bll\blo\bow\bw(\b()\b) *\b**\b**\b**\b**\b*\n void a\bal\bll\blo\bow\bw (socket_type_t const st, peer_class_t const peer_class);\n+void d\bdi\bis\bsa\bal\bll\blo\bow\bw (socket_type_t const st, peer_class_t const peer_class);\n disallow() and allow() adds and removes a peer class to be removed from new\n peers based on socket type.\n The peer_class argument cannot be greater than 31. The bitmasks representing\n peer classes in the peer_class_type_filter are 32 bits.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bap\bpp\bpl\bly\by(\b()\b) *\b**\b**\b**\b**\b*\n std::uint32_t a\bap\bpp\bpl\bly\by (socket_type_t const st, std::uint32_t peer_class_mask);\n@@ -4819,15 +4819,15 @@\n \n unsigned bytes_progress:15;\n unsigned block_size:15;\n unsigned state:2;\n unsigned num_peers:14;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpe\bee\ber\br(\b()\b) s\bse\bet\bt_\b_p\bpe\bee\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpe\bee\ber\br(\b()\b) p\bpe\bee\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_p\bpe\bee\ber\br (tcp::endpoint const& ep);\n _\bt_\bc_\bp_\b:_\b:_\be_\bn_\bd_\bp_\bo_\bi_\bn_\bt p\bpe\bee\ber\br () const;\n The peer is the ip address of the peer this block was downloaded from.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnu\bum\bm b\bbl\blo\boc\bck\bk_\b_s\bst\bta\bat\bte\be_\b_t\bt *\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be_\b._\bh_\bp_\bp\"\n _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b \n@@ -4917,119 +4917,119 @@\n the handle is no longer referring to a torrent. There is one exception _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd\n _\b(_\b) will never throw. Since the torrents are processed by a background thread,\n there is no guarantee that a handle will remain valid between two calls.\n struct torrent_handle\n {\n friend std::size_t h\bha\bas\bsh\bh_\b_v\bva\bal\blu\bue\be (torrent_handle const& th);\n t\bto\bor\brr\bre\ben\bnt\bt_\b_h\bha\ban\bnd\bdl\ble\be () noexcept = default;\n- void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, char const* data, add_piece_flags_t\n-flags = {}) const;\n void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, std::vector data,\n add_piece_flags_t flags = {}) const;\n+ void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, char const* data, add_piece_flags_t\n+flags = {}) const;\n void r\bre\bea\bad\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece) const;\n bool h\bha\bav\bve\be_\b_p\bpi\bie\bec\bce\be (piece_index_t piece) const;\n- void p\bpo\bos\bst\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo () const;\n void g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo (std::vector& v) const;\n- torrent_status s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n+ void p\bpo\bos\bst\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo () const;\n void p\bpo\bos\bst\bt_\b_s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n- std::vector g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n- void p\bpo\bos\bst\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n+ torrent_status s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n void g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be (std::vector& queue) const;\n- void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be (piece_index_t index, int deadline, deadline_flags_t\n-flags = {}) const;\n+ void p\bpo\bos\bst\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n+ std::vector g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n void r\bre\bes\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be (piece_index_t index) const;\n void c\bcl\ble\bea\bar\br_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\bes\bs () const;\n+ void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be (piece_index_t index, int deadline, deadline_flags_t\n+flags = {}) const;\n void f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (std::vector& progress,\n file_progress_flags_t flags = {}) const;\n- void p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags) const;\n std::vector f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags = {})\n const;\n+ void p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags) const;\n std::vector f\bfi\bil\ble\be_\b_s\bst\bta\bat\btu\bus\bs () const;\n void c\bcl\ble\bea\bar\br_\b_e\ber\brr\bro\bor\br () const;\n+ std::vector t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n void r\bre\bep\bpl\bla\bac\bce\be_\b_t\btr\bra\bac\bck\bke\ber\brs\bs (std::vector const&) const;\n void p\bpo\bos\bst\bt_\b_t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (announce_entry const&) const;\n- std::vector t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n+ void r\bre\bem\bmo\bov\bve\be_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url) const;\n void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url) const;\n std::set u\bur\brl\bl_\b_s\bse\bee\bed\bds\bs () const;\n- void r\bre\bem\bmo\bov\bve\be_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url) const;\n- std::set h\bht\btt\btp\bp_\b_s\bse\bee\bed\bds\bs () const;\n void r\bre\bem\bmo\bov\bve\be_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url) const;\n void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url) const;\n+ std::set h\bht\btt\btp\bp_\b_s\bse\bee\bed\bds\bs () const;\n void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (\n std::function(torrent_handle const&,\n client_data_t)> const& ext\n , client_data_t userdata = client_data_t{});\n bool s\bse\bet\bt_\b_m\bme\bet\bta\bad\bda\bat\bta\ba (span metadata) const;\n bool i\bis\bs_\b_v\bva\bal\bli\bid\bd () const;\n- void p\bpa\bau\bus\bse\be (pause_flags_t flags = {}) const;\n void r\bre\bes\bsu\bum\bme\be () const;\n+ void p\bpa\bau\bus\bse\be (pause_flags_t flags = {}) const;\n torrent_flags_t f\bfl\bla\bag\bgs\bs () const;\n- void u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n void s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n+ void u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n void s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags, torrent_flags_t mask) const;\n void f\bfl\blu\bus\bsh\bh_\b_c\bca\bac\bch\bhe\be () const;\n void f\bfo\bor\brc\bce\be_\b_r\bre\bec\bch\bhe\bec\bck\bk () const;\n void s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (resume_data_flags_t flags = {}) const;\n- bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba () const;\n bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (resume_data_flags_t flags) const;\n+ bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba () const;\n+ void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_t\bto\bop\bp () const;\n+ queue_position_t q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_b\bbo\bot\btt\bto\bom\bm () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_d\bdo\bow\bwn\bn () const;\n- queue_position_t q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn () const;\n- void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_t\bto\bop\bp () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_u\bup\bp () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_s\bse\bet\bt (queue_position_t p) const;\n void s\bse\bet\bt_\b_s\bss\bsl\bl_\b_c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be_\b_b\bbu\buf\bff\bfe\ber\br (std::string const& certificate\n , std::string const& private_key\n , std::string const& dh_params);\n void s\bse\bet\bt_\b_s\bss\bsl\bl_\b_c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be (std::string const& certificate\n , std::string const& private_key\n , std::string const& dh_params\n , std::string const& passphrase = \"\");\n std::shared_ptr t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be () const;\n std::shared_ptr t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be_\b_w\bwi\bit\bth\bh_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n std::vector> p\bpi\bie\bec\bce\be_\b_l\bla\bay\bye\ber\brs\bs () const;\n- void p\bpo\bos\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by () const;\n void p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by (std::vector& avail) const;\n+ void p\bpo\bos\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by () const;\n void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs (std::vector const& pieces)\n const;\n- std::vector g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n- download_priority_t p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index) const;\n void p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index, download_priority_t priority)\n const;\n void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs (std::vector> const& pieces) const;\n- download_priority_t f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index) const;\n- std::vector g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n+ download_priority_t p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index) const;\n+ std::vector g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_f\bfi\bil\ble\bes\bs (std::vector const& files) const;\n+ std::vector g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n+ download_priority_t f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index) const;\n void f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index, download_priority_t priority) const;\n void f\bfo\bor\brc\bce\be_\b_r\bre\bea\ban\bnn\bno\bou\bun\bnc\bce\be (int seconds = 0, int idx = -1, reannounce_flags_t =\n {}) const;\n void f\bfo\bor\brc\bce\be_\b_d\bdh\bht\bt_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be () const;\n void f\bfo\bor\brc\bce\be_\b_l\bls\bsd\bd_\b_a\ban\bnn\bno\bou\bun\bnc\bce\be () const;\n void s\bsc\bcr\bra\bap\bpe\be_\b_t\btr\bra\bac\bck\bke\ber\br (int idx = -1) const;\n- void s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n- int d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n void s\bse\bet\bt_\b_u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n int u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n+ int d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n+ void s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n void c\bco\bon\bnn\bne\bec\bct\bt_\b_p\bpe\bee\ber\br (tcp::endpoint const& adr, peer_source_flags_t source = {}\n , pex_flags_t flags = pex_encryption | pex_utp | pex_holepunch) const;\n void c\bcl\ble\bea\bar\br_\b_p\bpe\bee\ber\brs\bs ();\n void s\bse\bet\bt_\b_m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs (int max_uploads) const;\n int m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs () const;\n- void s\bse\bet\bt_\b_m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs (int max_connections) const;\n int m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs () const;\n+ void s\bse\bet\bt_\b_m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs (int max_connections) const;\n void m\bmo\bov\bve\be_\b_s\bst\bto\bor\bra\bag\bge\be (std::string const& save_path\n , move_flags_t flags = move_flags_t::always_replace_files\n ) const;\n void r\bre\ben\bna\bam\bme\be_\b_f\bfi\bil\ble\be (file_index_t index, std::string const& new_name) const;\n- info_hash_t i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n sha1_hash i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh () const;\n- bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (const torrent_handle& h) const;\n+ info_hash_t i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br<\b< (const torrent_handle& h) const;\n+ bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (const torrent_handle& h) const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (const torrent_handle& h) const;\n std::uint32_t i\bid\bd () const;\n std::shared_ptr n\bna\bat\bti\biv\bve\be_\b_h\bha\ban\bnd\bdl\ble\be () const;\n client_data_t u\bus\bse\ber\brd\bda\bat\bta\ba () const;\n bool i\bin\bn_\b_s\bse\bes\bss\bsi\bio\bon\bn () const;\n \n static constexpr add_piece_flags_t o\bov\bve\ber\brw\bwr\bri\bit\bte\be_\b_e\bex\bxi\bis\bst\bti\bin\bng\bg = 0_bit;\n@@ -5057,18 +5057,18 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bto\bor\brr\bre\ben\bnt\bt_\b_h\bha\ban\bnd\bdl\ble\be(\b()\b) *\b**\b**\b**\b**\b*\n t\bto\bor\brr\bre\ben\bnt\bt_\b_h\bha\ban\bnd\bdl\ble\be () noexcept = default;\n constructs a torrent handle that does not refer to a torrent. i.e. _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b)\n will return false.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n-void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, char const* data, add_piece_flags_t flags\n-= {}) const;\n void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, std::vector data, add_piece_flags_t\n flags = {}) const;\n+void a\bad\bdd\bd_\b_p\bpi\bie\bec\bce\be (piece_index_t piece, char const* data, add_piece_flags_t flags\n+= {}) const;\n This function will write data to the storage as piece piece, as if it had been\n downloaded from a peer.\n By default, data that's already been downloaded is not overwritten by this\n buffer. If you trust this data to be correct (and pass the piece hash check)\n you may pass the overwrite_existing flag. This will instruct libtorrent to\n overwrite any data that may already have been downloaded with this data.\n Since the data is written asynchronously, you may know that is passed or failed\n@@ -5096,30 +5096,30 @@\n to finish in the same order as you initiated them.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* h\bha\bav\bve\be_\b_p\bpi\bie\bec\bce\be(\b()\b) *\b**\b**\b**\b**\b*\n bool h\bha\bav\bve\be_\b_p\bpi\bie\bec\bce\be (piece_index_t piece) const;\n Returns true if this piece has been completely downloaded and written to disk,\n and false otherwise.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpo\bos\bst\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo(\b()\b) g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo(\b()\b) *\b**\b**\b**\b**\b*\n-void p\bpo\bos\bst\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo () const;\n+*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo(\b()\b) p\bpo\bos\bst\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo(\b()\b) *\b**\b**\b**\b**\b*\n void g\bge\bet\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo (std::vector& v) const;\n+void p\bpo\bos\bst\bt_\b_p\bpe\bee\ber\br_\b_i\bin\bnf\bfo\bo () const;\n Query information about connected peers for this torrent. If the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be\n is invalid, it will throw a system_error exception.\n post_peer_info() is asynchronous and will trigger the posting of a\n _\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo_\b__\ba_\bl_\be_\br_\bt. The _\ba_\bl_\be_\br_\bt contain a list of _\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo objects, one for each\n connected peer.\n get_peer_info() is synchronous and takes a reference to a vector that will be\n cleared and filled with one _\be_\bn_\bt_\br_\by for each peer connected to this torrent,\n given the handle is valid. Each _\be_\bn_\bt_\br_\by in the vector contains information about\n that particular peer. See _\bp_\be_\be_\br_\b__\bi_\bn_\bf_\bo.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpo\bos\bst\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) s\bst\bta\bat\btu\bus\bs(\b()\b) *\b**\b**\b**\b**\b*\n-torrent_status s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n+*\b**\b**\b**\b**\b* s\bst\bta\bat\btu\bus\bs(\b()\b) p\bpo\bos\bst\bt_\b_s\bst\bta\bat\btu\bus\bs(\b()\b) *\b**\b**\b**\b**\b*\n void p\bpo\bos\bst\bt_\b_s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n+torrent_status s\bst\bta\bat\btu\bus\bs (status_flags_t flags = status_flags_t::all()) const;\n status() will return a structure with information about the status of this\n torrent. If the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be is invalid, it will throw system_error\n exception. See _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs. The flags argument filters what information is\n returned in the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs. Some information in there is relatively\n expensive to calculate, and if you're not interested in it (and see performance\n issues), you can filter them out.\n The status() function will block until the internal libtorrent thread responds\n@@ -5127,29 +5127,29 @@\n It will trigger posting of a _\bs_\bt_\ba_\bt_\be_\b__\bu_\bp_\bd_\ba_\bt_\be_\b__\ba_\bl_\be_\br_\bt with a single _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs\n object for this torrent.\n In order to get regular updates for torrents whose status changes, consider\n calling session::post_torrent_updates()`` instead.\n By default everything is included. The flags you can use to decide what to\n i\bin\bnc\bcl\blu\bud\bde\be are defined in this class.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be(\b()\b) p\bpo\bos\bst\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be(\b()\b) *\b**\b**\b**\b**\b*\n-std::vector g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n-void p\bpo\bos\bst\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n+*\b**\b**\b**\b**\b* p\bpo\bos\bst\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be(\b()\b) g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be(\b()\b) *\b**\b**\b**\b**\b*\n void g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be (std::vector& queue) const;\n+void p\bpo\bos\bst\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n+std::vector g\bge\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_q\bqu\bue\beu\bue\be () const;\n post_download_queue() triggers a download_queue_alert to be posted.\n get_download_queue() is a synchronous call and returns a vector with\n information about pieces that are partially downloaded or not downloaded but\n partially requested. See _\bp_\ba_\br_\bt_\bi_\ba_\bl_\b__\bp_\bi_\be_\bc_\be_\b__\bi_\bn_\bf_\bo for the fields in the returned\n vector.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be(\b()\b) c\bcl\ble\bea\bar\br_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\bes\bs(\b()\b) r\bre\bes\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be (piece_index_t index, int deadline, deadline_flags_t\n-flags = {}) const;\n+*\b**\b**\b**\b**\b* r\bre\bes\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be(\b()\b) c\bcl\ble\bea\bar\br_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\bes\bs(\b()\b) s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\bes\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be (piece_index_t index) const;\n void c\bcl\ble\bea\bar\br_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\bes\bs () const;\n+void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_d\bde\bea\bad\bdl\bli\bin\bne\be (piece_index_t index, int deadline, deadline_flags_t\n+flags = {}) const;\n This function sets or resets the deadline associated with a specific piece\n index (index). libtorrent will attempt to download this entire piece before the\n deadline expires. This is not necessarily possible, but pieces with a more\n recent deadline will always be prioritized over pieces with a deadline further\n ahead in time. The deadline (and flags) of a piece can be changed by calling\n this function again.\n If the piece is already downloaded when this call is made, nothing happens,\n@@ -5157,20 +5157,20 @@\n same effect as calling _\br_\be_\ba_\bd_\b__\bp_\bi_\be_\bc_\be_\b(_\b) for index.\n deadline is the number of milliseconds until this piece should be completed.\n reset_piece_deadline removes the deadline from the piece. If it hasn't already\n been downloaded, it will no longer be considered a priority.\n clear_piece_deadlines() removes deadlines on all pieces in the torrent. As if\n _\br_\be_\bs_\be_\bt_\b__\bp_\bi_\be_\bc_\be_\b__\bd_\be_\ba_\bd_\bl_\bi_\bn_\be_\b(_\b) was called on all pieces.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs(\b()\b) p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs(\b()\b) f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs(\b()\b) *\b**\b**\b**\b**\b*\n void f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (std::vector& progress, file_progress_flags_t\n flags = {}) const;\n-void p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags) const;\n std::vector f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags = {})\n const;\n+void p\bpo\bos\bst\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bro\bog\bgr\bre\bes\bss\bs (file_progress_flags_t flags) const;\n This function fills in the supplied vector, or returns a vector, with the\n number of bytes downloaded of each file in this torrent. The progress values\n are ordered the same as the files in the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo.\n This operation is not very cheap. Its complexity is O\bO(\b(n\bn +\b+ m\bmj\bj)\b). Where n\bn is the\n number of files, m\bm is the number of currently downloading pieces and j\bj is the\n number of blocks in a piece.\n The flags parameter can be used to specify the granularity of the file\n@@ -5191,19 +5191,19 @@\n See _\bo_\bp_\be_\bn_\b__\bf_\bi_\bl_\be_\b__\bs_\bt_\ba_\bt_\be\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br_\b_e\ber\brr\bro\bor\br(\b()\b) *\b**\b**\b**\b**\b*\n void c\bcl\ble\bea\bar\br_\b_e\ber\brr\bro\bor\br () const;\n If the torrent is in an error state (i.e. torrent_status::error is non-empty),\n this will clear the error and start the torrent again.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* r\bre\bep\bpl\bla\bac\bce\be_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) p\bpo\bos\bst\bt_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) r\bre\bep\bpl\bla\bac\bce\be_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) p\bpo\bos\bst\bt_\b_t\btr\bra\bac\bck\bke\ber\brs\bs(\b()\b) a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n+std::vector t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n void r\bre\bep\bpl\bla\bac\bce\be_\b_t\btr\bra\bac\bck\bke\ber\brs\bs (std::vector const&) const;\n void p\bpo\bos\bst\bt_\b_t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n void a\bad\bdd\bd_\b_t\btr\bra\bac\bck\bke\ber\br (announce_entry const&) const;\n-std::vector t\btr\bra\bac\bck\bke\ber\brs\bs () const;\n trackers() returns the list of trackers for this torrent. The announce _\be_\bn_\bt_\br_\by\n contains both a string url which specify the announce url for the tracker as\n well as an _\bi_\bn_\bt tier, which is specifies the order in which this tracker is\n tried. If you want libtorrent to use another list of trackers for this torrent,\n you can use replace_trackers() which takes a list of the same form as the one\n returned from trackers() and will replace it. If you want an immediate effect,\n you have to call _\bf_\bo_\br_\bc_\be_\b__\br_\be_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b(_\b). See _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by.\n@@ -5212,30 +5212,30 @@\n add_tracker() will look if the specified tracker is already in the set. If it\n is, it doesn't do anything. If it's not in the current set of trackers, it will\n insert it in the tier specified in the _\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by.\n The updated set of trackers will be saved in the resume data, and when a\n torrent is started with resume data, the trackers from the resume data will\n replace the original ones.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* r\bre\bem\bmo\bov\bve\be_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) u\bur\brl\bl_\b_s\bse\bee\bed\bds\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* u\bur\brl\bl_\b_s\bse\bee\bed\bds\bs(\b()\b) r\bre\bem\bmo\bov\bve\be_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n+void r\bre\bem\bmo\bov\bve\be_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url) const;\n void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url) const;\n std::set u\bur\brl\bl_\b_s\bse\bee\bed\bds\bs () const;\n-void r\bre\bem\bmo\bov\bve\be_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (std::string const& url) const;\n add_url_seed() adds another url to the torrent's list of url seeds. If the\n given url already exists in that list, the call has no effect. The torrent will\n connect to the server and try to download pieces from it, unless it's paused,\n queued, checking or seeding. remove_url_seed() removes the given url if it\n exists already. url_seeds() return a set of the url seeds currently in this\n torrent. Note that URLs that fails may be removed automatically from the list.\n See _\bh_\bt_\bt_\bp_\b _\bs_\be_\be_\bd_\bi_\bn_\bg for more information.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* r\bre\bem\bmo\bov\bve\be_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) h\bht\btt\btp\bp_\b_s\bse\bee\bed\bds\bs(\b()\b) a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n-std::set h\bht\btt\btp\bp_\b_s\bse\bee\bed\bds\bs () const;\n+*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) r\bre\bem\bmo\bov\bve\be_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) h\bht\btt\btp\bp_\b_s\bse\bee\bed\bds\bs(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\bem\bmo\bov\bve\be_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url) const;\n void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (std::string const& url) const;\n+std::set h\bht\btt\btp\bp_\b_s\bse\bee\bed\bds\bs () const;\n These functions are identical as the *_url_seed() variants, but they operate on\n _\bB_\bE_\bP_\b _\b1_\b7 web seeds instead of _\bB_\bE_\bP_\b _\b1_\b9.\n See _\bh_\bt_\bt_\bp_\b _\bs_\be_\be_\bd_\bi_\bn_\bg for more information.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn(\b()\b) *\b**\b**\b**\b**\b*\n void a\bad\bdd\bd_\b_e\bex\bxt\bte\ben\bns\bsi\bio\bon\bn (\n std::function(torrent_handle const&,\n@@ -5267,16 +5267,16 @@\n Clients should only use _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b) to determine if the result of session::\n find_torrent() was successful.\n Unlike other member functions which return a value, _\bi_\bs_\b__\bv_\ba_\bl_\bi_\bd_\b(_\b) completes\n immediately, without blocking on a result from the network thread. Also unlike\n other functions, it never throws the system_error exception.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* r\bre\bes\bsu\bum\bme\be(\b()\b) p\bpa\bau\bus\bse\be(\b()\b) *\b**\b**\b**\b**\b*\n-void p\bpa\bau\bus\bse\be (pause_flags_t flags = {}) const;\n void r\bre\bes\bsu\bum\bme\be () const;\n+void p\bpa\bau\bus\bse\be (pause_flags_t flags = {}) const;\n pause(), and resume() will disconnect all peers and reconnect all peers\n respectively. When a torrent is paused, it will however remember all share\n ratios to all peers and remember all potential (not connected) peers. Torrents\n may be paused automatically if there is a file error (e.g. disk full) or\n something similar. See _\bf_\bi_\bl_\be_\b__\be_\br_\br_\bo_\br_\b__\ba_\bl_\be_\br_\bt.\n For possible values of the flags parameter, see pause_flags_t.\n To know if a torrent is paused or not, call torrent_handle::flags() and check\n@@ -5285,16 +5285,16 @@\n Torrents that are auto-managed may be automatically resumed again. It does not\n make sense to pause an auto-managed torrent without making it not auto-managed\n first. Torrents are auto-managed by default when added to the _\bs_\be_\bs_\bs_\bi_\bo_\bn. For more\n information, see _\bq_\bu_\be_\bu_\bi_\bn_\bg.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfl\bla\bag\bgs\bs(\b()\b) s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs(\b()\b) u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs(\b()\b) *\b**\b**\b**\b**\b*\n torrent_flags_t f\bfl\bla\bag\bgs\bs () const;\n-void u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n void s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n+void u\bun\bns\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags) const;\n void s\bse\bet\bt_\b_f\bfl\bla\bag\bgs\bs (torrent_flags_t flags, torrent_flags_t mask) const;\n sets and gets the torrent state flags. See _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bl_\ba_\bg_\bs_\b__\bt. The set_flags\n overload that take a mask will affect all flags part of the mask, and set their\n values to what the flags argument is set to. This allows clearing and setting\n flags in a single function call. The set_flags overload that just takes flags,\n sets all the specified flags and leave any other flags unchanged. unset_flags\n clears the specified flags, while leaving any other flags unchanged.\n@@ -5405,34 +5405,34 @@\n Note how outstanding_resume_data is a global counter in this example. This is\n deliberate, otherwise there is a race condition for torrents that was just\n asked to save their resume data, they posted the _\ba_\bl_\be_\br_\bt, but it has not been\n received yet. Those torrents would report that they don't need to save resume\n data again, and skipped by the initial loop, and thwart the counter otherwise.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba(\b()\b) *\b**\b**\b**\b**\b*\n-bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba () const;\n bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (resume_data_flags_t flags) const;\n+bool n\bne\bee\bed\bd_\b_s\bsa\bav\bve\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba () const;\n This function returns true if anything that is stored in the resume data has\n changed since the last time resume data was saved. The overload that takes\n flags let you ask if specific categories of properties have changed. These\n flags have the same behavior as in the _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b) call.\n This is a b\bbl\blo\boc\bck\bki\bin\bng\bg call. It will wait for a response from libtorrent's main\n thread. A way to avoid blocking is to instead call _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b(_\b) directly,\n specifying the conditions under which resume data should be saved.\n Note\n A torrent's resume data is considered saved as soon as the\n _\bs_\ba_\bv_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b__\ba_\bl_\be_\br_\bt is posted. It is important to make sure this _\ba_\bl_\be_\br_\bt is\n received and handled in order for this function to be meaningful.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_d\bdo\bow\bwn\bn(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_t\bto\bop\bp(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_u\bup\bp(\b()\b)\n-q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_b\bbo\bot\btt\bto\bom\bm(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_t\bto\bop\bp(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_u\bup\bp(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_b\bbo\bot\btt\bto\bom\bm(\b()\b)\n+q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn(\b()\b) q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_d\bdo\bow\bwn\bn(\b()\b) *\b**\b**\b**\b**\b*\n+void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_t\bto\bop\bp () const;\n+queue_position_t q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_b\bbo\bot\btt\bto\bom\bm () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_d\bdo\bow\bwn\bn () const;\n-queue_position_t q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn () const;\n-void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_t\bto\bop\bp () const;\n void q\bqu\bue\beu\bue\be_\b_p\bpo\bos\bsi\bit\bti\bio\bon\bn_\b_u\bup\bp () const;\n Every torrent that is added is assigned a queue position exactly one greater\n than the greatest queue position of all existing torrents. Torrents that are\n being seeded have -1 as their queue position, since they're no longer in line\n to be downloaded.\n When a torrent is removed or turns into a seed, all torrents with greater queue\n positions have their positions decreased to fill in the space in the sequence.\n@@ -5512,33 +5512,33 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_l\bla\bay\bye\ber\brs\bs(\b()\b) *\b**\b**\b**\b**\b*\n std::vector> p\bpi\bie\bec\bce\be_\b_l\bla\bay\bye\ber\brs\bs () const;\n returns the piece layers for all files in the torrent. If this is a v1 torrent\n (and doesn't have any piece layers) it returns an empty vector. This is a\n blocking call that will synchronize with the libtorrent network thread.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpo\bos\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by(\b()\b) p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by(\b()\b) *\b**\b**\b**\b**\b*\n-void p\bpo\bos\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by () const;\n+*\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by(\b()\b) p\bpo\bos\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by(\b()\b) *\b**\b**\b**\b**\b*\n void p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by (std::vector& avail) const;\n+void p\bpo\bos\bst\bt_\b_p\bpi\bie\bec\bce\be_\b_a\bav\bva\bai\bil\bla\bab\bbi\bil\bli\bit\bty\by () const;\n The piece availability is the number of peers that we are connected that has\n advertised having a particular piece. This is the information that libtorrent\n uses in order to prefer picking rare pieces.\n post_piece_availability() will trigger a _\bp_\bi_\be_\bc_\be_\b__\ba_\bv_\ba_\bi_\bl_\ba_\bb_\bi_\bl_\bi_\bt_\by_\b__\ba_\bl_\be_\br_\bt to be posted.\n piece_availability() fills the specified std::vector with the availability\n for each piece in this torrent. libtorrent does not keep track of availability\n for seeds, so if the torrent is seeding the availability for all pieces is\n reported as 0.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by(\b()\b) g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs(\b()\b) p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs(\b()\b) p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by(\b()\b) *\b**\b**\b**\b**\b*\n void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs (std::vector const& pieces) const;\n-std::vector g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n-download_priority_t p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index) const;\n void p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index, download_priority_t priority) const;\n void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_p\bpi\bie\bec\bce\bes\bs (std::vector> const& pieces) const;\n+download_priority_t p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (piece_index_t index) const;\n+std::vector g\bge\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n These functions are used to set and get the priority of individual pieces. By\n default all pieces have priority 4. That means that the random rarest first\n algorithm is effectively active for all pieces. You may however change the\n priority of individual pieces. There are 8 priority levels. 0 means not to\n download the piece at all. Otherwise, lower priority values means less likely\n to be picked. Piece priority takes precedence over piece availability. Every\n piece with priority 7 will be attempted to be picked before a priority 6 piece\n@@ -5558,18 +5558,18 @@\n where the piece index or priority is out of range, are not allowed.\n get_piece_priorities returns a vector with one element for each piece in the\n torrent. Each element is the current priority of that piece.\n It's possible to cancel the effect of f\bfi\bil\ble\be priorities by setting the priorities\n for the affected pieces. Care has to be taken when mixing usage of file- and\n piece priorities.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_f\bfi\bil\ble\bes\bs(\b()\b) g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs(\b()\b) f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by(\b()\b) *\b**\b**\b**\b**\b*\n-download_priority_t f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index) const;\n-std::vector g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n+*\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by(\b()\b) p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_f\bfi\bil\ble\bes\bs(\b()\b) g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n void p\bpr\bri\bio\bor\bri\bit\bti\biz\bze\be_\b_f\bfi\bil\ble\bes\bs (std::vector const& files) const;\n+std::vector g\bge\bet\bt_\b_f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bti\bie\bes\bs () const;\n+download_priority_t f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index) const;\n void f\bfi\bil\ble\be_\b_p\bpr\bri\bio\bor\bri\bit\bty\by (file_index_t index, download_priority_t priority) const;\n index must be in the range [0, number_of_files).\n file_priority() queries or sets the priority of file index.\n prioritize_files() takes a vector that has at as many elements as there are\n files in the torrent. Each _\be_\bn_\bt_\br_\by is the priority of that file. The function\n sets the priorities of all the pieces in the torrent based on the vector.\n get_file_priorities() returns a vector with the priorities of all files.\n@@ -5619,20 +5619,20 @@\n A scrape request queries the tracker for statistics such as total number of\n incomplete peers, complete peers, number of downloads etc.\n This request will specifically update the num_complete and num_incomplete\n fields in the _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs struct once it completes. When it completes, it\n will generate a _\bs_\bc_\br_\ba_\bp_\be_\b__\br_\be_\bp_\bl_\by_\b__\ba_\bl_\be_\br_\bt. If it fails, it will generate a\n _\bs_\bc_\br_\ba_\bp_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b__\ba_\bl_\be_\br_\bt.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) s\bse\bet\bt_\b_u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b)\n+*\b**\b**\b**\b**\b* d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) s\bse\bet\bt_\b_u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b) s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt(\b()\b)\n *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n-int d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n void s\bse\bet\bt_\b_u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n int u\bup\bpl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n+int d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt () const;\n+void s\bse\bet\bt_\b_d\bdo\bow\bwn\bnl\blo\boa\bad\bd_\b_l\bli\bim\bmi\bit\bt (int limit) const;\n set_upload_limit will limit the upload bandwidth used by this particular\n torrent to the limit you set. It is given as the number of bytes per second the\n torrent is allowed to upload. set_download_limit works the same way but for\n download bandwidth instead of upload bandwidth. Note that setting a higher\n limit on a torrent then the global limit (settings_pack::upload_rate_limit)\n will not override the global rate limit. The torrent can never upload more than\n the global rate limit.\n@@ -5655,26 +5655,26 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br_\b_p\bpe\bee\ber\brs\bs(\b()\b) *\b**\b**\b**\b**\b*\n void c\bcl\ble\bea\bar\br_\b_p\bpe\bee\ber\brs\bs ();\n This will disconnect all peers and clear the peer list for this torrent. New\n peers will have to be acquired before resuming, from trackers, DHT or local\n service discovery, for example.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs(\b()\b) m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs(\b()\b) s\bse\bet\bt_\b_m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs (int max_uploads) const;\n int m\bma\bax\bx_\b_u\bup\bpl\blo\boa\bad\bds\bs () const;\n set_max_uploads() sets the maximum number of peers that's unchoked at the same\n time on this torrent. If you set this to -1, there will be no limit. This\n defaults to infinite. The primary setting controlling this is the global\n unchoke slots limit, set by unchoke_slots_limit in _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk.\n max_uploads() returns the current settings.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs(\b()\b) s\bse\bet\bt_\b_m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs (int max_connections) const;\n int m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs () const;\n+void s\bse\bet\bt_\b_m\bma\bax\bx_\b_c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bns\bs (int max_connections) const;\n set_max_connections() sets the maximum number of connection this torrent will\n open. If all connections are used up, incoming connections may be refused or\n poor connections may be closed. This must be at least 2. The default is\n unlimited number of connections. If -1 is given to the function, it means\n unlimited. There is also a global limit of the number of connections, set by\n connections_limit in _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk.\n max_connections() returns the current settings.\n@@ -5725,25 +5725,25 @@\n *\b**\b**\b**\b**\b* r\bre\ben\bna\bam\bme\be_\b_f\bfi\bil\ble\be(\b()\b) *\b**\b**\b**\b**\b*\n void r\bre\ben\bna\bam\bme\be_\b_f\bfi\bil\ble\be (file_index_t index, std::string const& new_name) const;\n Renames the file with the given index asynchronously. The rename operation is\n complete when either a _\bf_\bi_\bl_\be_\b__\br_\be_\bn_\ba_\bm_\be_\bd_\b__\ba_\bl_\be_\br_\bt or _\bf_\bi_\bl_\be_\b__\br_\be_\bn_\ba_\bm_\be_\b__\bf_\ba_\bi_\bl_\be_\bd_\b__\ba_\bl_\be_\br_\bt is\n posted.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs(\b()\b) i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh(\b()\b) *\b**\b**\b**\b**\b*\n-info_hash_t i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n sha1_hash i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bh () const;\n+info_hash_t i\bin\bnf\bfo\bo_\b_h\bha\bas\bsh\bhe\bes\bs () const;\n returns the info-hash(es) of the torrent. If this handle is to a torrent that\n hasn't loaded yet (for instance by being added) by a URL, the returned value is\n undefined. The info_hash() returns the SHA-1 info-hash for v1 torrents and a\n truncated hash for v2 torrents. For the full v2 info-hash, use info_hashes()\n instead.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b=(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b=(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br<\b<(\b()\b) *\b**\b**\b**\b**\b*\n-bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (const torrent_handle& h) const;\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br<\b<(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b=(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b=(\b()\b) *\b**\b**\b**\b**\b*\n bool o\bop\bpe\ber\bra\bat\bto\bor\br<\b< (const torrent_handle& h) const;\n+bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (const torrent_handle& h) const;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br!\b!=\b= (const torrent_handle& h) const;\n comparison operators. The order of the torrents is unspecified but stable.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* i\bid\bd(\b()\b) *\b**\b**\b**\b**\b*\n std::uint32_t i\bid\bd () const;\n returns a unique identifier for this torrent. It's not a dense index. It's not\n preserved across sessions.\n@@ -6204,16 +6204,16 @@\n a unique, owning, reference to the storage of a torrent in a disk io subsystem\n (class that implements _\bd_\bi_\bs_\bk_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be). This is held by the internal libtorrent\n torrent object to tie the storage object allocated for a torrent to the\n lifetime of the internal torrent object. When a torrent is removed from the\n _\bs_\be_\bs_\bs_\bi_\bo_\bn, this holder is destructed and will inform the disk object.\n struct storage_holder\n {\n- s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br (storage_index_t idx, disk_interface& disk_io);\n ~\b~s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br ();\n+ s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br (storage_index_t idx, disk_interface& disk_io);\n s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br () = default;\n explicit operator b\bbo\boo\bol\bl () const;\n operator s\bst\bto\bor\bra\bag\bge\be_\b_i\bin\bnd\bde\bex\bx_\b_t\bt () const;\n void r\bre\bes\bse\bet\bt ();\n storage_holder& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (storage_holder const&) = delete;\n s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br (storage_holder const&) = delete;\n s\bst\bto\bor\bra\bag\bge\be_\b_h\bho\bol\bld\bde\ber\br (storage_holder&& rhs) noexcept;\n@@ -6248,16 +6248,16 @@\n it's destructed\n If this buffer holder is moved-from, default constructed or reset, data() will\n return nullptr.\n struct disk_buffer_holder\n {\n d\bdi\bis\bsk\bk_\b_b\bbu\buf\bff\bfe\ber\br_\b_h\bho\bol\bld\bde\ber\br (disk_buffer_holder&&) noexcept;\n disk_buffer_holder& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (disk_buffer_holder&&) & noexcept;\n- disk_buffer_holder& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (disk_buffer_holder const&) = delete;\n d\bdi\bis\bsk\bk_\b_b\bbu\buf\bff\bfe\ber\br_\b_h\bho\bol\bld\bde\ber\br (disk_buffer_holder const&) = delete;\n+ disk_buffer_holder& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (disk_buffer_holder const&) = delete;\n d\bdi\bis\bsk\bk_\b_b\bbu\buf\bff\bfe\ber\br_\b_h\bho\bol\bld\bde\ber\br (buffer_allocator_interface& alloc\n , char* buf, int sz) noexcept;\n d\bdi\bis\bsk\bk_\b_b\bbu\buf\bff\bfe\ber\br_\b_h\bho\bol\bld\bde\ber\br () noexcept = default;\n ~\b~d\bdi\bis\bsk\bk_\b_b\bbu\buf\bff\bfe\ber\br_\b_h\bho\bol\bld\bde\ber\br ();\n char* d\bda\bat\bta\ba () const noexcept;\n void r\bre\bes\bse\bet\bt ();\n void s\bsw\bwa\bap\bp (disk_buffer_holder& h) noexcept;\n@@ -6307,16 +6307,16 @@\n settings.\n struct settings_interface\n {\n virtual bool h\bha\bas\bs_\b_v\bva\bal\bl (int name) const = 0;\n virtual void s\bse\bet\bt_\b_b\bbo\boo\bol\bl (int name, bool val) = 0;\n virtual void s\bse\bet\bt_\b_s\bst\btr\br (int name, std::string val) = 0;\n virtual void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, int val) = 0;\n- virtual std::string const& g\bge\bet\bt_\b_s\bst\btr\br (int name) const = 0;\n virtual bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const = 0;\n+ virtual std::string const& g\bge\bet\bt_\b_s\bst\btr\br (int name) const = 0;\n virtual int g\bge\bet\bt_\b_i\bin\bnt\bt (int name) const = 0;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* f\bfi\bil\ble\be_\b_o\bop\bpe\ben\bn_\b_m\bmo\bod\bde\be_\b_t\bt *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bd_\bi_\bs_\bk_\b__\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bp_\bp\"\n read_only\n open the file for reading only\n@@ -7226,24 +7226,24 @@\n The storage_moved_alert is generated when all the disk IO has completed and the\n files have been moved, as an effect of a call to torrent_handle::move_storage.\n This is useful to synchronize with the actual disk. The storage_path() member\n return the new path of the storage.\n struct storage_moved_alert final : torrent_alert\n {\n std::string m\bme\bes\bss\bsa\bag\bge\be () const override;\n- char const* o\bol\bld\bd_\b_p\bpa\bat\bth\bh () const;\n char const* s\bst\bto\bor\bra\bag\bge\be_\b_p\bpa\bat\bth\bh () const;\n+ char const* o\bol\bld\bd_\b_p\bpa\bat\bth\bh () const;\n \n static constexpr alert_category_t s\bst\bta\bat\bti\bic\bc_\b_c\bca\bat\bte\beg\bgo\bor\bry\by = alert_category::\n storage;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bol\bld\bd_\b_p\bpa\bat\bth\bh(\b()\b) s\bst\bto\bor\bra\bag\bge\be_\b_p\bpa\bat\bth\bh(\b()\b) *\b**\b**\b**\b**\b*\n-char const* o\bol\bld\bd_\b_p\bpa\bat\bth\bh () const;\n+*\b**\b**\b**\b**\b* s\bst\bto\bor\bra\bag\bge\be_\b_p\bpa\bat\bth\bh(\b()\b) o\bol\bld\bd_\b_p\bpa\bat\bth\bh(\b()\b) *\b**\b**\b**\b**\b*\n char const* s\bst\bto\bor\bra\bag\bge\be_\b_p\bpa\bat\bth\bh () const;\n+char const* o\bol\bld\bd_\b_p\bpa\bat\bth\bh () const;\n the path the torrent was moved to and from, respectively.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bst\bto\bor\bra\bag\bge\be_\b_m\bmo\bov\bve\bed\bd_\b_f\bfa\bai\bil\ble\bed\bd_\b_a\bal\ble\ber\brt\bt *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bl_\be_\br_\bt_\b__\bt_\by_\bp_\be_\bs_\b._\bh_\bp_\bp\"\n The storage_moved_failed_alert is generated when an attempt to move the\n storage, via _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bh_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bm_\bo_\bv_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be_\b(_\b), fails.\n struct storage_moved_failed_alert final : torrent_alert\n@@ -8479,24 +8479,24 @@\n *\b**\b**\b**\b**\b**\b* d\bdh\bht\bt_\b_l\bli\biv\bve\be_\b_n\bno\bod\bde\bes\bs_\b_a\bal\ble\ber\brt\bt *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bl_\be_\br_\bt_\b__\bt_\by_\bp_\be_\bs_\b._\bh_\bp_\bp\"\n posted in response to a call to session::dht_live_nodes(). It contains the live\n nodes from the DHT routing table of one of the DHT nodes running locally.\n struct dht_live_nodes_alert final : alert\n {\n std::string m\bme\bes\bss\bsa\bag\bge\be () const override;\n- std::vector> n\bno\bod\bde\bes\bs () const;\n int n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs () const;\n+ std::vector> n\bno\bod\bde\bes\bs () const;\n \n static constexpr alert_category_t s\bst\bta\bat\bti\bic\bc_\b_c\bca\bat\bte\beg\bgo\bor\bry\by = alert_category::dht;\n sha1_hash node_id;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs(\b()\b) n\bno\bod\bde\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n-std::vector> n\bno\bod\bde\bes\bs () const;\n int n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs () const;\n+std::vector> n\bno\bod\bde\bes\bs () const;\n the number of nodes in the routing table and the actual nodes.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n node_id\n the local DHT node's node-ID this routing table belongs to\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bse\bes\bss\bsi\bio\bon\bn_\b_s\bst\bta\bat\bts\bs_\b_h\bhe\bea\bad\bde\ber\br_\b_a\bal\ble\ber\brt\bt *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bl_\be_\br_\bt_\b__\bt_\by_\bp_\be_\bs_\b._\bh_\bp_\bp\"\n@@ -8517,30 +8517,30 @@\n *\b**\b**\b**\b**\b**\b* d\bdh\bht\bt_\b_s\bsa\bam\bmp\bpl\ble\be_\b_i\bin\bnf\bfo\boh\bha\bas\bsh\bhe\bes\bs_\b_a\bal\ble\ber\brt\bt *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bl_\be_\br_\bt_\b__\bt_\by_\bp_\be_\bs_\b._\bh_\bp_\bp\"\n posted as a response to a call to session::dht_sample_infohashes() with the\n information from the DHT response message.\n struct dht_sample_infohashes_alert final : alert\n {\n std::string m\bme\bes\bss\bsa\bag\bge\be () const override;\n- std::vector s\bsa\bam\bmp\bpl\ble\bes\bs () const;\n int n\bnu\bum\bm_\b_s\bsa\bam\bmp\bpl\ble\bes\bs () const;\n+ std::vector s\bsa\bam\bmp\bpl\ble\bes\bs () const;\n int n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs () const;\n std::vector> n\bno\bod\bde\bes\bs () const;\n \n static constexpr alert_category_t s\bst\bta\bat\bti\bic\bc_\b_c\bca\bat\bte\beg\bgo\bor\bry\by = alert_category::\n dht_operation;\n sha1_hash node_id;\n aux::noexcept_movable endpoint;\n time_duration const interval;\n int const num_infohashes;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_s\bsa\bam\bmp\bpl\ble\bes\bs(\b()\b) s\bsa\bam\bmp\bpl\ble\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n-std::vector s\bsa\bam\bmp\bpl\ble\bes\bs () const;\n int n\bnu\bum\bm_\b_s\bsa\bam\bmp\bpl\ble\bes\bs () const;\n+std::vector s\bsa\bam\bmp\bpl\ble\bes\bs () const;\n returns the number of info-hashes returned by the node, as well as the actual\n info-hashes. num_samples() is more efficient than samples().size().\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n int n\bnu\bum\bm_\b_n\bno\bod\bde\bes\bs () const;\n The total number of nodes returned by nodes().\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -8585,17 +8585,17 @@\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bl_\be_\br_\bt_\b__\bt_\by_\bp_\be_\bs_\b._\bh_\bp_\bp\"\n this _\ba_\bl_\be_\br_\bt is posted to indicate to the client that some alerts were dropped.\n Dropped meaning that the _\ba_\bl_\be_\br_\bt failed to be delivered to the client. The most\n common cause of such failure is that the internal _\ba_\bl_\be_\br_\bt queue grew too big\n (controlled by alert_queue_size).\n struct alerts_dropped_alert final : alert\n {\n+ std::string m\bme\bes\bss\bsa\bag\bge\be () const override;\n s\bst\bta\bat\bti\bic\bc_\b_a\bas\bss\bse\ber\brt\bt (num_alert_types <= abi_alert_count, \"need to increase bitset.\n This is an ABI break\");\n- std::string m\bme\bes\bss\bsa\bag\bge\be () const override;\n \n static constexpr alert_category_t s\bst\bta\bat\bti\bic\bc_\b_c\bca\bat\bte\beg\bgo\bor\bry\by = alert_category::error;\n std::bitset dropped_alerts;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n dropped_alerts\n a bitmask indicating which alerts were dropped. Each bit represents the\n@@ -8765,16 +8765,16 @@\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n trackers\n list of trackers and their status for the torrent\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* a\bal\ble\ber\brt\bt_\b_c\bca\bas\bst\bt(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bl_\be_\br_\bt_\b._\bh_\bp_\bp\"\n-template T const* a\bal\ble\ber\brt\bt_\b_c\bca\bas\bst\bt (alert const* a);\n template T* a\bal\ble\ber\brt\bt_\b_c\bca\bas\bst\bt (alert* a);\n+template T const* a\bal\ble\ber\brt\bt_\b_c\bca\bas\bst\bt (alert const* a);\n When you get an _\ba_\bl_\be_\br_\bt, you can use alert_cast<> to attempt to cast the pointer\n to a specific _\ba_\bl_\be_\br_\bt type, in order to query it for more information.\n Note\n alert_cast<> can only cast to an exact _\ba_\bl_\be_\br_\bt type, not a base class\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bti\bio\bon\bn_\b_n\bna\bam\bme\be(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bo_\bp_\be_\br_\ba_\bt_\bi_\bo_\bn_\bs_\b._\bh_\bp_\bp\"\n@@ -8930,23 +8930,23 @@\n this constant represents \"max_alert_index\" + 1\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* c\bco\bou\bun\bnt\bte\ber\brs\bs *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bp_\be_\br_\bf_\bo_\br_\bm_\ba_\bn_\bc_\be_\b__\bc_\bo_\bu_\bn_\bt_\be_\br_\bs_\b._\bh_\bp_\bp\"\n struct counters\n {\n c\bco\bou\bun\bnt\bte\ber\brs\bs () ;\n- counters& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (counters const&) & ;\n c\bco\bou\bun\bnt\bte\ber\brs\bs (counters const&) ;\n+ counters& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (counters const&) & ;\n std::int64_t o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (int i) const ;\n std::int64_t i\bin\bnc\bc_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br (int c, std::int64_t value = 1) ;\n- void b\bbl\ble\ben\bnd\bd_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br (int c, std::int64_t value, int ratio) ;\n void s\bse\bet\bt_\b_v\bva\bal\blu\bue\be (int c, std::int64_t value) ;\n+ void b\bbl\ble\ben\bnd\bd_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br (int c, std::int64_t value, int ratio) ;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b](\b()\b) i\bin\bnc\bc_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* i\bin\bnc\bc_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b](\b()\b) *\b**\b**\b**\b**\b*\n std::int64_t o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (int i) const ;\n std::int64_t i\bin\bnc\bc_\b_s\bst\bta\bat\bts\bs_\b_c\bco\bou\bun\bnt\bte\ber\br (int c, std::int64_t value = 1) ;\n returns the new value\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bst\bta\bat\bts\bs_\b_m\bme\bet\btr\bri\bic\bc *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bs_\bs_\bi_\bo_\bn_\b__\bs_\bt_\ba_\bt_\bs_\b._\bh_\bp_\bp\"\n describes one statistics metric from the _\bs_\be_\bs_\bs_\bi_\bo_\bn. For more information, see the\n@@ -8994,20 +8994,20 @@\n The ip_filter class is a set of rules that uniquely categorizes all ip\n addresses as allowed or disallowed. The default constructor creates a single\n rule that allows all addresses (0.0.0.0 - 255.255.255.255 for the IPv4 range,\n and the equivalent range covering all addresses for the IPv6 range).\n A default constructed _\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br does not filter any address.\n struct ip_filter\n {\n+ i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br (ip_filter const&);\n+ i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br ();\n+ ip_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (ip_filter&&);\n ~\b~i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br ();\n ip_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (ip_filter const&);\n i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br (ip_filter&&);\n- ip_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (ip_filter&&);\n- i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br ();\n- i\bip\bp_\b_f\bfi\bil\blt\bte\ber\br (ip_filter const&);\n bool e\bem\bmp\bpt\bty\by () const;\n void a\bad\bdd\bd_\b_r\bru\bul\ble\be (address const& first, address const& last, std::uint32_t\n flags);\n std::uint32_t a\bac\bcc\bce\bes\bss\bs (address const& addr) const;\n filter_tuple_t e\bex\bxp\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br () const;\n \n enum access_flags\n@@ -9056,20 +9056,20 @@\n *\b**\b**\b**\b**\b**\b* p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bi_\bp_\b__\bf_\bi_\bl_\bt_\be_\br_\b._\bh_\bp_\bp\"\n the port filter maps non-overlapping port ranges to flags. This is primarily\n used to indicate whether a range of ports should be connected to or not. The\n default is to have the full port range (0-65535) set to flag 0.\n class port_filter\n {\n- port_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (port_filter&&);\n p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br ();\n- ~\b~p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br ();\n port_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (port_filter const&);\n- p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br (port_filter&&);\n+ port_filter& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (port_filter&&);\n+ ~\b~p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br ();\n p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br (port_filter const&);\n+ p\bpo\bor\brt\bt_\b_f\bfi\bil\blt\bte\ber\br (port_filter&&);\n void a\bad\bdd\bd_\b_r\bru\bul\ble\be (std::uint16_t first, std::uint16_t last, std::uint32_t\n flags);\n std::uint32_t a\bac\bcc\bce\bes\bss\bs (std::uint16_t port) const;\n \n enum access_flags\n {\n blocked,\n@@ -9112,45 +9112,45 @@\n The entry class represents one node in a bencoded hierarchy. It works as a\n variant type, it can be either a list, a dictionary (std::map), an integer or a\n string.\n class entry\n {\n data_type t\bty\byp\bpe\be () const;\n e\ben\bnt\btr\bry\by (dictionary_type);\n- e\ben\bnt\btr\bry\by (integer_type);\n- e\ben\bnt\btr\bry\by (span);\n e\ben\bnt\btr\bry\by (list_type);\n e\ben\bnt\btr\bry\by (preformatted_type);\n+ e\ben\bnt\btr\bry\by (integer_type);\n+ e\ben\bnt\btr\bry\by (span);\n e\ben\bnt\btr\bry\by (U v);\n e\ben\bnt\btr\bry\by (data_type t);\n e\ben\bnt\btr\bry\by (bdecode_node const& n);\n- entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry&&) & noexcept;\n- entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry const&) &;\n- entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (list_type) &;\n+ entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (dictionary_type) &;\n+ entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (span) &;\n+ entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (list_type) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (integer_type) &;\n- entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n- entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (dictionary_type) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (preformatted_type) &;\n+ entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry&&) & noexcept;\n+ entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry const&) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (U v) &;\n- dictionary_type const& d\bdi\bic\bct\bt () const;\n- preformatted_type const& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd () const;\n- dictionary_type& d\bdi\bic\bct\bt ();\n+ list_type const& l\bli\bis\bst\bt () const;\n list_type& l\bli\bis\bst\bt ();\n string_type& s\bst\btr\bri\bin\bng\bg ();\n- string_type const& s\bst\btr\bri\bin\bng\bg () const;\n- integer_type& i\bin\bnt\bte\beg\bge\ber\br ();\n integer_type const& i\bin\bnt\bte\beg\bge\ber\br () const;\n+ integer_type& i\bin\bnt\bte\beg\bge\ber\br ();\n+ dictionary_type& d\bdi\bic\bct\bt ();\n+ string_type const& s\bst\btr\bri\bin\bng\bg () const;\n+ preformatted_type const& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd () const;\n preformatted_type& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd ();\n- list_type const& l\bli\bis\bst\bt () const;\n+ dictionary_type const& d\bdi\bic\bct\bt () const;\n void s\bsw\bwa\bap\bp (entry& e);\n- entry const& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key) const;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key);\n- entry* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key);\n+ entry const& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key) const;\n entry const* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key) const;\n+ entry* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key);\n std::string t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg (bool single_line = false) const;\n \n enum data_type\n {\n int_t,\n string_t,\n list_t,\n@@ -9162,51 +9162,51 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bty\byp\bpe\be(\b()\b) *\b**\b**\b**\b**\b*\n data_type t\bty\byp\bpe\be () const;\n returns the concrete type of the _\be_\bn_\bt_\br_\by\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnt\btr\bry\by(\b()\b) *\b**\b**\b**\b**\b*\n e\ben\bnt\btr\bry\by (dictionary_type);\n-e\ben\bnt\btr\bry\by (integer_type);\n-e\ben\bnt\btr\bry\by (span);\n e\ben\bnt\btr\bry\by (list_type);\n e\ben\bnt\btr\bry\by (preformatted_type);\n+e\ben\bnt\btr\bry\by (integer_type);\n+e\ben\bnt\btr\bry\by (span);\n constructors directly from a specific type. The content of the argument is\n copied into the newly constructed _\be_\bn_\bt_\br_\by\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnt\btr\bry\by(\b()\b) *\b**\b**\b**\b**\b*\n e\ben\bnt\btr\bry\by (data_type t);\n construct an empty _\be_\bn_\bt_\br_\by of the specified type. see _\bd_\ba_\bt_\ba_\b__\bt_\by_\bp_\be enum.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnt\btr\bry\by(\b()\b) *\b**\b**\b**\b**\b*\n e\ben\bnt\btr\bry\by (bdecode_node const& n);\n construct from _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be parsed form (see _\bb_\bd_\be_\bc_\bo_\bd_\be_\b(_\b))\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n-entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry&&) & noexcept;\n-entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry const&) &;\n-entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (list_type) &;\n+entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (dictionary_type) &;\n+entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (span) &;\n+entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (list_type) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (integer_type) &;\n-entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n-entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (dictionary_type) &;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (preformatted_type) &;\n+entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry&&) & noexcept;\n+entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (entry const&) &;\n copies the structure of the right hand side into this _\be_\bn_\bt_\br_\by.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* l\bli\bis\bst\bt(\b()\b) s\bst\btr\bri\bin\bng\bg(\b()\b) p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd(\b()\b) i\bin\bnt\bte\beg\bge\ber\br(\b()\b) d\bdi\bic\bct\bt(\b()\b) *\b**\b**\b**\b**\b*\n-dictionary_type const& d\bdi\bic\bct\bt () const;\n-preformatted_type const& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd () const;\n-dictionary_type& d\bdi\bic\bct\bt ();\n+*\b**\b**\b**\b**\b* d\bdi\bic\bct\bt(\b()\b) l\bli\bis\bst\bt(\b()\b) i\bin\bnt\bte\beg\bge\ber\br(\b()\b) p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd(\b()\b) s\bst\btr\bri\bin\bng\bg(\b()\b) *\b**\b**\b**\b**\b*\n+list_type const& l\bli\bis\bst\bt () const;\n list_type& l\bli\bis\bst\bt ();\n string_type& s\bst\btr\bri\bin\bng\bg ();\n-string_type const& s\bst\btr\bri\bin\bng\bg () const;\n-integer_type& i\bin\bnt\bte\beg\bge\ber\br ();\n integer_type const& i\bin\bnt\bte\beg\bge\ber\br () const;\n+integer_type& i\bin\bnt\bte\beg\bge\ber\br ();\n+dictionary_type& d\bdi\bic\bct\bt ();\n+string_type const& s\bst\btr\bri\bin\bng\bg () const;\n+preformatted_type const& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd () const;\n preformatted_type& p\bpr\bre\bef\bfo\bor\brm\bma\bat\btt\bte\bed\bd ();\n-list_type const& l\bli\bis\bst\bt () const;\n+dictionary_type const& d\bdi\bic\bct\bt () const;\n The integer(), string(), list() and dict() functions are accessors that return\n the respective type. If the entry object isn't of the type you request, the\n accessor will throw system_error. You can ask an entry for its type through the\n type() function.\n If you want to create an entry you give it the type you want it to have in its\n constructor, and then use one of the non-const accessors to get a reference\n which you then can assign the value you want it to have.\n@@ -9237,27 +9237,27 @@\n _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo exists.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* s\bsw\bwa\bap\bp(\b()\b) *\b**\b**\b**\b**\b*\n void s\bsw\bwa\bap\bp (entry& e);\n swaps the content of t\bth\bhi\bis\bs with e.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b](\b()\b) *\b**\b**\b**\b**\b*\n-entry const& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key) const;\n entry& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key);\n+entry const& o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (string_view key) const;\n All of these functions requires the _\be_\bn_\bt_\br_\by to be a dictionary, if it isn't they\n will throw system_error.\n The non-const versions of the operator[] will return a reference to either the\n existing element at the given key or, if there is no element with the given\n key, a reference to a newly inserted element at that key.\n The const version of operator[] will only return a reference to an existing\n element at the given key. If the key is not found, it will throw system_error.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bin\bnd\bd_\b_k\bke\bey\by(\b()\b) *\b**\b**\b**\b**\b*\n-entry* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key);\n entry const* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key) const;\n+entry* f\bfi\bin\bnd\bd_\b_k\bke\bey\by (string_view key);\n These functions requires the _\be_\bn_\bt_\br_\by to be a dictionary, if it isn't they will\n throw system_error.\n They will look for an element at the given key in the dictionary, if the\n element cannot be found, they will return nullptr. If an element with the given\n key is found, the return a pointer to it.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bto\bo_\b_s\bst\btr\bri\bin\bng\bg(\b()\b) *\b**\b**\b**\b**\b*\n@@ -9336,16 +9336,16 @@\n _\be_\bn_\bt_\br_\by that's returned can then be bencoded into a .torrent file using _\bb_\be_\bn_\bc_\bo_\bd_\be\n _\b(_\b).\n struct create_torrent\n {\n explicit c\bcr\bre\bea\bat\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt (torrent_info const& ti);\n explicit c\bcr\bre\bea\bat\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt (file_storage& fs, int piece_size = 0\n , create_flags_t flags = {});\n- std::vector g\bge\ben\bne\ber\bra\bat\bte\be_\b_b\bbu\buf\bf () const;\n entry g\bge\ben\bne\ber\bra\bat\bte\be () const;\n+ std::vector g\bge\ben\bne\ber\bra\bat\bte\be_\b_b\bbu\buf\bf () const;\n file_storage const& f\bfi\bil\ble\bes\bs () const;\n void s\bse\bet\bt_\b_c\bco\bom\bmm\bme\ben\bnt\bt (char const* str);\n void s\bse\bet\bt_\b_c\bcr\bre\bea\bat\bto\bor\br (char const* str);\n void s\bse\bet\bt_\b_c\bcr\bre\bea\bat\bti\bio\bon\bn_\b_d\bda\bat\bte\be (std::time_t timestamp);\n void s\bse\bet\bt_\b_h\bha\bas\bsh\bh (piece_index_t index, sha1_hash const& h);\n void s\bse\bet\bt_\b_h\bha\bas\bsh\bh2\b2 (file_index_t file, piece_index_t::diff_type piece,\n sha256_hash const& h);\n@@ -9399,16 +9399,16 @@\n (such as _\bs_\be_\bt_\b__\bh_\ba_\bs_\bh_\b(_\b)), will have any affect. Instead of using this overload,\n consider using _\bw_\br_\bi_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bf_\bi_\bl_\be_\b(_\b) instead.\n Warning\n The _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be and _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo objects must stay alive for the entire\n duration of the _\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt object.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* g\bge\ben\bne\ber\bra\bat\bte\be_\b_b\bbu\buf\bf(\b()\b) g\bge\ben\bne\ber\bra\bat\bte\be(\b()\b) *\b**\b**\b**\b**\b*\n-std::vector g\bge\ben\bne\ber\bra\bat\bte\be_\b_b\bbu\buf\bf () const;\n entry g\bge\ben\bne\ber\bra\bat\bte\be () const;\n+std::vector g\bge\ben\bne\ber\bra\bat\bte\be_\b_b\bbu\buf\bf () const;\n This function will generate the .torrent file as a bencode tree, or a bencoded\n into a buffer. In order to encode the _\be_\bn_\bt_\br_\by into a flat file, use the _\bb_\be_\bn_\bc_\bo_\bd_\be_\b(_\b)\n function.\n The function returning an _\be_\bn_\bt_\br_\by may be useful to add custom entries to the\n torrent file before bencoding it and saving it to disk.\n Whether the resulting torrent object is v1, v2 or hybrid depends on whether any\n of the v1_only or v2_only flags were set on the constructor. If neither were\n@@ -9465,15 +9465,15 @@\n the merkle tree formed by the piece's 16 kiB blocks. Note that piece sizes must\n be powers-of-2, so all per-piece merkle trees are complete. A SHA-256 hash of\n all zeros is internally used to indicate a hash that has not been set. Setting\n such hash will not be considered set when calling _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b(_\b). This function\n will throw std::system_error if it is called on an object constructed with the\n v1_only flag.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd(\b()\b) a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd(\b()\b) *\b**\b**\b**\b**\b*\n void a\bad\bdd\bd_\b_h\bht\btt\btp\bp_\b_s\bse\bee\bed\bd (string_view url);\n void a\bad\bdd\bd_\b_u\bur\brl\bl_\b_s\bse\bee\bed\bd (string_view url);\n This adds a url seed to the torrent. You can have any number of url seeds. For\n a single file torrent, this should be an HTTP url, pointing to a file with\n identical content as the file of the torrent. For a multi-file torrent, it\n should point to a directory containing a directory with the same name as this\n torrent, and all the files of the torrent in it.\n@@ -9502,15 +9502,15 @@\n makes the torrent an S\bSS\bSL\bL t\bto\bor\brr\bre\ben\bnt\bt. An SSL torrent requires that each peer has a\n valid certificate signed by this root certificate. For SSL torrents, all peers\n are connecting over SSL connections. For more information, see the section on\n _\bs_\bs_\bl_\b _\bt_\bo_\br_\br_\be_\bn_\bt_\bs.\n The string is not the path to the cert, it's the actual content of the\n certificate.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* p\bpr\bri\biv\bv(\b()\b) s\bse\bet\bt_\b_p\bpr\bri\biv\bv(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpr\bri\biv\bv(\b()\b) p\bpr\bri\biv\bv(\b()\b) *\b**\b**\b**\b**\b*\n bool p\bpr\bri\biv\bv () const;\n void s\bse\bet\bt_\b_p\bpr\bri\biv\bv (bool p);\n Sets and queries the private flag of the torrent. Torrents with the private\n flag set ask the client to not use any other sources than the tracker for\n peers, and to not use DHT to advertise itself publicly, only the tracker.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bnu\bum\bm_\b_p\bpi\bie\bec\bce\bes\bs(\b()\b) *\b**\b**\b**\b**\b*\n@@ -9537,15 +9537,15 @@\n *\b**\b**\b**\b**\b* p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n int p\bpi\bie\bec\bce\be_\b_s\bsi\biz\bze\be (piece_index_t i) const;\n int p\bpi\bie\bec\bce\be_\b_l\ble\ben\bng\bgt\bth\bh () const;\n piece_length() returns the piece size of all pieces but the last one.\n piece_size() returns the size of the specified piece. these functions are just\n forwarding to the associated _\bf_\bi_\bl_\be_\b__\bs_\bt_\bo_\br_\ba_\bg_\be.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bn(\b()\b) a\bad\bdd\bd_\b_s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* a\bad\bdd\bd_\b_s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bt(\b()\b) a\bad\bdd\bd_\b_c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bn(\b()\b) *\b**\b**\b**\b**\b*\n void a\bad\bdd\bd_\b_c\bco\bol\bll\ble\bec\bct\bti\bio\bon\bn (string_view c);\n void a\bad\bdd\bd_\b_s\bsi\bim\bmi\bil\bla\bar\br_\b_t\bto\bor\brr\bre\ben\bnt\bt (sha1_hash ih);\n Add similar torrents (by info-hash) or collections of similar torrents. Similar\n torrents are expected to share some files with this torrent. Torrents sharing a\n collection name with this torrent are also expected to share files with this\n torrent. A torrent may have more than one collection and more than one similar\n torrents. For more information, see _\bB_\bE_\bP_\b _\b3_\b8.\n@@ -9615,30 +9615,30 @@\n directories are traversed.\n The \"..\" directory is never traversed.\n The flags argument should be the same as the flags passed to the _\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt\n constructor.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bc_\br_\be_\ba_\bt_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b._\bh_\bp_\bp\"\n-inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n- , std::function const& f);\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n+ , settings_interface const& settings\n , std::function const& f, error_code& ec);\n inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p);\n inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n , settings_interface const& settings\n , std::function const& f);\n+inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n+ , std::function const& f);\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n- , settings_interface const& settings\n+ , settings_interface const& settings, disk_io_constructor_type disk_io\n , std::function const& f, error_code& ec);\n-inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p,\n-error_code& ec);\n void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p\n- , settings_interface const& settings, disk_io_constructor_type disk_io\n , std::function const& f, error_code& ec);\n+inline void s\bse\bet\bt_\b_p\bpi\bie\bec\bce\be_\b_h\bha\bas\bsh\bhe\bes\bs (create_torrent& t, std::string const& p,\n+error_code& ec);\n This function will assume that the files added to the torrent file exists at\n path p, read those files and hash the content and set the hashes in the\n create_torrent object. The optional function f is called in between every hash\n that is set. f must have the following signature:\n void Fun(piece_index_t);\n The overloads taking a _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk may be used to configure the underlying\n disk access. Such as settings_pack::aio_threads.\n@@ -9648,25 +9648,25 @@\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* b\bbi\bit\btf\bfi\bie\bel\bld\bd *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd_\b._\bh_\bp_\bp\"\n The _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd type stores any number of bits as a _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd in a heap allocated\n array.\n struct bitfield\n {\n+ explicit b\bbi\bit\btf\bfi\bie\bel\bld\bd (int bits);\n b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& rhs);\n b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield&& rhs) noexcept = default;\n+ b\bbi\bit\btf\bfi\bie\bel\bld\bd (char const* b, int bits);\n b\bbi\bit\btf\bfi\bie\bel\bld\bd (int bits, bool val);\n b\bbi\bit\btf\bfi\bie\bel\bld\bd () noexcept = default;\n- explicit b\bbi\bit\btf\bfi\bie\bel\bld\bd (int bits);\n- b\bbi\bit\btf\bfi\bie\bel\bld\bd (char const* b, int bits);\n void a\bas\bss\bsi\big\bgn\bn (char const* b, int const bits);\n- bool g\bge\bet\bt_\b_b\bbi\bit\bt (int index) const noexcept;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (int index) const noexcept;\n- void s\bse\bet\bt_\b_b\bbi\bit\bt (int index) noexcept;\n+ bool g\bge\bet\bt_\b_b\bbi\bit\bt (int index) const noexcept;\n void c\bcl\ble\bea\bar\br_\b_b\bbi\bit\bt (int index) noexcept;\n+ void s\bse\bet\bt_\b_b\bbi\bit\bt (int index) noexcept;\n bool a\bal\bll\bl_\b_s\bse\bet\bt () const noexcept;\n bool n\bno\bon\bne\be_\b_s\bse\bet\bt () const noexcept;\n int s\bsi\biz\bze\be () const noexcept;\n int n\bnu\bum\bm_\b_w\bwo\bor\brd\bds\bs () const noexcept;\n int n\bnu\bum\bm_\b_b\bby\byt\bte\bes\bs () const noexcept;\n bool e\bem\bmp\bpt\bty\by () const noexcept;\n char const* d\bda\bat\bta\ba () const noexcept;\n@@ -9675,40 +9675,40 @@\n int c\bco\bou\bun\bnt\bt () const noexcept;\n int f\bfi\bin\bnd\bd_\b_f\bfi\bir\brs\bst\bt_\b_s\bse\bet\bt () const noexcept;\n int f\bfi\bin\bnd\bd_\b_l\bla\bas\bst\bt_\b_c\bcl\ble\bea\bar\br () const noexcept;\n bool o\bop\bpe\ber\bra\bat\bto\bor\br=\b==\b= (lt::bitfield const& rhs) const;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* b\bbi\bit\btf\bfi\bie\bel\bld\bd(\b()\b) *\b**\b**\b**\b**\b*\n+explicit b\bbi\bit\btf\bfi\bie\bel\bld\bd (int bits);\n b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield const& rhs);\n b\bbi\bit\btf\bfi\bie\bel\bld\bd (bitfield&& rhs) noexcept = default;\n+b\bbi\bit\btf\bfi\bie\bel\bld\bd (char const* b, int bits);\n b\bbi\bit\btf\bfi\bie\bel\bld\bd (int bits, bool val);\n b\bbi\bit\btf\bfi\bie\bel\bld\bd () noexcept = default;\n-explicit b\bbi\bit\btf\bfi\bie\bel\bld\bd (int bits);\n-b\bbi\bit\btf\bfi\bie\bel\bld\bd (char const* b, int bits);\n constructs a new _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd. The default constructor creates an empty _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd.\n bits is the size of the _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd (specified in bits). val is the value to\n initialize the bits to. If not specified all bits are initialized to 0.\n The constructor taking a pointer b and bits copies a _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd from the\n specified buffer, and bits number of bits (rounded up to the nearest byte\n boundary).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bas\bss\bsi\big\bgn\bn(\b()\b) *\b**\b**\b**\b**\b*\n void a\bas\bss\bsi\big\bgn\bn (char const* b, int const bits);\n copy _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd from buffer b of bits number of bits, rounded up to the nearest\n byte boundary.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_b\bbi\bit\bt(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b](\b()\b) *\b**\b**\b**\b**\b*\n-bool g\bge\bet\bt_\b_b\bbi\bit\bt (int index) const noexcept;\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b](\b()\b) g\bge\bet\bt_\b_b\bbi\bit\bt(\b()\b) *\b**\b**\b**\b**\b*\n bool o\bop\bpe\ber\bra\bat\bto\bor\br[\b[]\b] (int index) const noexcept;\n+bool g\bge\bet\bt_\b_b\bbi\bit\bt (int index) const noexcept;\n query bit at index. Returns true if bit is 1, otherwise false.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br_\b_b\bbi\bit\bt(\b()\b) s\bse\bet\bt_\b_b\bbi\bit\bt(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_b\bbi\bit\bt (int index) noexcept;\n+*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_b\bbi\bit\bt(\b()\b) c\bcl\ble\bea\bar\br_\b_b\bbi\bit\bt(\b()\b) *\b**\b**\b**\b**\b*\n void c\bcl\ble\bea\bar\br_\b_b\bbi\bit\bt (int index) noexcept;\n+void s\bse\bet\bt_\b_b\bbi\bit\bt (int index) noexcept;\n set bit at index to 0 (clear_bit) or 1 (set_bit).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* a\bal\bll\bl_\b_s\bse\bet\bt(\b()\b) *\b**\b**\b**\b**\b*\n bool a\bal\bll\bl_\b_s\bse\bet\bt () const noexcept;\n returns true if all bits in the _\bb_\bi_\bt_\bf_\bi_\be_\bl_\bd are set\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* n\bno\bon\bne\be_\b_s\bse\bet\bt(\b()\b) *\b**\b**\b**\b**\b*\n@@ -9767,35 +9767,35 @@\n If you want to reuse the _\bh_\ba_\bs_\bh_\be_\br object once you have created a hash, you have\n to call reset() to reinitialize it.\n The built-in software version of sha1-algorithm was implemented by Steve Reid\n and released as public domain. For more info, see src/sha1.cpp.\n class hasher\n {\n h\bha\bas\bsh\bhe\ber\br ();\n- h\bha\bas\bsh\bhe\ber\br (char const* data, int len);\n- explicit h\bha\bas\bsh\bhe\ber\br (span data);\n- h\bha\bas\bsh\bhe\ber\br (hasher const&);\n hasher& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (hasher const&) &;\n- hasher& u\bup\bpd\bda\bat\bte\be (span data);\n+ h\bha\bas\bsh\bhe\ber\br (hasher const&);\n+ explicit h\bha\bas\bsh\bhe\ber\br (span data);\n+ h\bha\bas\bsh\bhe\ber\br (char const* data, int len);\n hasher& u\bup\bpd\bda\bat\bte\be (char const* data, int len);\n+ hasher& u\bup\bpd\bda\bat\bte\be (span data);\n sha1_hash f\bfi\bin\bna\bal\bl ();\n void r\bre\bes\bse\bet\bt ();\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* h\bha\bas\bsh\bhe\ber\br(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n-h\bha\bas\bsh\bhe\ber\br (char const* data, int len);\n-explicit h\bha\bas\bsh\bhe\ber\br (span data);\n-h\bha\bas\bsh\bhe\ber\br (hasher const&);\n hasher& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (hasher const&) &;\n+h\bha\bas\bsh\bhe\ber\br (hasher const&);\n+explicit h\bha\bas\bsh\bhe\ber\br (span data);\n+h\bha\bas\bsh\bhe\ber\br (char const* data, int len);\n this is the same as default constructing followed by a call to update(data,\n len).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* u\bup\bpd\bda\bat\bte\be(\b()\b) *\b**\b**\b**\b**\b*\n-hasher& u\bup\bpd\bda\bat\bte\be (span data);\n hasher& u\bup\bpd\bda\bat\bte\be (char const* data, int len);\n+hasher& u\bup\bpd\bda\bat\bte\be (span data);\n append the following bytes to what is being hashed\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bin\bna\bal\bl(\b()\b) *\b**\b**\b**\b**\b*\n sha1_hash f\bfi\bin\bna\bal\bl ();\n returns the SHA-1 digest of the buffers previously passed to _\bu_\bp_\bd_\ba_\bt_\be_\b(_\b) and the\n _\bh_\ba_\bs_\bh_\be_\br constructor.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -9805,36 +9805,36 @@\n constructed.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bh_\ba_\bs_\bh_\be_\br_\b._\bh_\bp_\bp\"\n class hasher256\n {\n h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 ();\n- hasher256& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (hasher256 const&) &;\n+ h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (char const* data, int len);\n explicit h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (span data);\n h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (hasher256 const&);\n- h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (char const* data, int len);\n- hasher256& u\bup\bpd\bda\bat\bte\be (span data);\n+ hasher256& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (hasher256 const&) &;\n hasher256& u\bup\bpd\bda\bat\bte\be (char const* data, int len);\n+ hasher256& u\bup\bpd\bda\bat\bte\be (span data);\n sha256_hash f\bfi\bin\bna\bal\bl ();\n void r\bre\bes\bse\bet\bt ();\n ~\b~h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 ();\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n-hasher256& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (hasher256 const&) &;\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6(\b()\b) *\b**\b**\b**\b**\b*\n+h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (char const* data, int len);\n explicit h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (span data);\n h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (hasher256 const&);\n-h\bha\bas\bsh\bhe\ber\br2\b25\b56\b6 (char const* data, int len);\n+hasher256& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (hasher256 const&) &;\n this is the same as default constructing followed by a call to update(data,\n len).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* u\bup\bpd\bda\bat\bte\be(\b()\b) *\b**\b**\b**\b**\b*\n-hasher256& u\bup\bpd\bda\bat\bte\be (span data);\n hasher256& u\bup\bpd\bda\bat\bte\be (char const* data, int len);\n+hasher256& u\bup\bpd\bda\bat\bte\be (span data);\n append the following bytes to what is being hashed\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* f\bfi\bin\bna\bal\bl(\b()\b) *\b**\b**\b**\b**\b*\n sha256_hash f\bfi\bin\bna\bal\bl ();\n returns the SHA-1 digest of the buffers previously passed to _\bu_\bp_\bd_\ba_\bt_\be_\b(_\b) and the\n _\bh_\ba_\bs_\bh_\be_\br constructor.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n@@ -10392,18 +10392,18 @@\n *\b**\b**\b**\b**\b**\b* a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b._\bh_\bp_\bp\"\n this class holds information about one bittorrent tracker, as it relates to a\n specific torrent.\n struct announce_entry\n {\n ~\b~a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by ();\n- a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (announce_entry const&);\n announce_entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (announce_entry const&) &;\n- explicit a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (string_view u);\n a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by ();\n+ a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (announce_entry const&);\n+ explicit a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (string_view u);\n \n enum tracker_source\n {\n source_torrent,\n source_client,\n source_magnet_link,\n source_tex,\n@@ -10414,20 +10414,20 @@\n std::vector endpoints;\n std::uint8_t t\bti\bie\ber\br = 0;\n std::uint8_t f\bfa\bai\bil\bl_\b_l\bli\bim\bmi\bit\bt = 0;\n std::uint8_t source:4;\n bool verified:1;\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by(\b()\b) ~\b~a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) ~\b~a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by(\b()\b) *\b**\b**\b**\b**\b*\n ~\b~a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by ();\n-a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (announce_entry const&);\n announce_entry& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (announce_entry const&) &;\n-explicit a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (string_view u);\n a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by ();\n+a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (announce_entry const&);\n+explicit a\ban\bnn\bno\bou\bun\bnc\bce\be_\b_e\ben\bnt\btr\bry\by (string_view u);\n constructs a tracker announce _\be_\bn_\bt_\br_\by with u as the URL.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnu\bum\bm t\btr\bra\bac\bck\bke\ber\br_\b_s\bso\bou\bur\brc\bce\be *\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\ba_\bn_\bn_\bo_\bu_\bn_\bc_\be_\b__\be_\bn_\bt_\br_\by_\b._\bh_\bp_\bp\"\n _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b \n |_\bn\bn_\ba\ba_\bm\bm_\be\be_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b|_\bv\bv_\ba\ba_\bl\bl_\bu\bu_\be\be_\b|_\bd\bd_\be\be_\bs\bs_\bc\bc_\br\br_\bi\bi_\bp\bp_\bt\bt_\bi\bi_\bo\bo_\bn\bn_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |\n |_\bs_\bo_\bu_\br_\bc_\be_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b _\b _\b _\b _\b|_\b1_\b _\b _\b _\b _\b|_\bt_\bh_\be_\b _\bt_\br_\ba_\bc_\bk_\be_\br_\b _\bw_\ba_\bs_\b _\bp_\ba_\br_\bt_\b _\bo_\bf_\b _\bt_\bh_\be_\b _\b._\bt_\bo_\br_\br_\be_\bn_\bt_\b _\bf_\bi_\bl_\be_\b _\b _\b _\b _\b _\b _\b _\b _\b _\b |\n@@ -11872,24 +11872,24 @@\n connect to the external NAT-PMP port (configured using announce_port) instead\n of the actual local listening port.\n struct settings_pack final : settings_interface\n {\n friend void a\bap\bpp\bpl\bly\by_\b_p\bpa\bac\bck\bk_\b_i\bim\bmp\bpl\bl (settings_pack const*\n , aux::session_settings_single_thread&\n , std::vector*);\n- void s\bse\bet\bt_\b_s\bst\btr\br (int name, std::string val) override;\n void s\bse\bet\bt_\b_b\bbo\boo\bol\bl (int name, bool val) override;\n- void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, flags::bitfield_flag const val);\n void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, int val) override;\n+ void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, flags::bitfield_flag const val);\n+ void s\bse\bet\bt_\b_s\bst\btr\br (int name, std::string val) override;\n bool h\bha\bas\bs_\b_v\bva\bal\bl (int name) const override;\n void c\bcl\ble\bea\bar\br ();\n void c\bcl\ble\bea\bar\br (int name);\n- bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const override;\n- int g\bge\bet\bt_\b_i\bin\bnt\bt (int name) const override;\n std::string const& g\bge\bet\bt_\b_s\bst\btr\br (int name) const override;\n+ int g\bge\bet\bt_\b_i\bin\bnt\bt (int name) const override;\n+ bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const override;\n void f\bfo\bor\br_\b_e\bea\bac\bch\bh (Fun&& f) const;\n \n enum type_bases\n {\n string_type_base,\n int_type_base,\n bool_type_base,\n@@ -11959,19 +11959,19 @@\n socks5,\n socks5_pw,\n http,\n http_pw,\n };\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_b\bbo\boo\bol\bl(\b()\b) s\bse\bet\bt_\b_s\bst\btr\br(\b()\b) s\bse\bet\bt_\b_i\bin\bnt\bt(\b()\b) *\b**\b**\b**\b**\b*\n-void s\bse\bet\bt_\b_s\bst\btr\br (int name, std::string val) override;\n+*\b**\b**\b**\b**\b* s\bse\bet\bt_\b_s\bst\btr\br(\b()\b) s\bse\bet\bt_\b_i\bin\bnt\bt(\b()\b) s\bse\bet\bt_\b_b\bbo\boo\bol\bl(\b()\b) *\b**\b**\b**\b**\b*\n void s\bse\bet\bt_\b_b\bbo\boo\bol\bl (int name, bool val) override;\n-void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, flags::bitfield_flag const val);\n void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, int val) override;\n+void s\bse\bet\bt_\b_i\bin\bnt\bt (int name, flags::bitfield_flag const val);\n+void s\bse\bet\bt_\b_s\bst\btr\br (int name, std::string val) override;\n set a configuration option in the _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk. name is one of the enum values\n from string_types, int_types or bool_types. They must match the respective type\n of the set_* function.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* h\bha\bas\bs_\b_v\bva\bal\bl(\b()\b) *\b**\b**\b**\b**\b*\n bool h\bha\bas\bs_\b_v\bva\bal\bl (int name) const override;\n queries whether the specified configuration option has a value set in this\n@@ -11982,18 +11982,18 @@\n void c\bcl\ble\bea\bar\br ();\n clear the settings pack from all settings\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br(\b()\b) *\b**\b**\b**\b**\b*\n void c\bcl\ble\bea\bar\br (int name);\n clear a specific setting from the pack\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_b\bbo\boo\bol\bl(\b()\b) g\bge\bet\bt_\b_i\bin\bnt\bt(\b()\b) g\bge\bet\bt_\b_s\bst\btr\br(\b()\b) *\b**\b**\b**\b**\b*\n-bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const override;\n-int g\bge\bet\bt_\b_i\bin\bnt\bt (int name) const override;\n+*\b**\b**\b**\b**\b* g\bge\bet\bt_\b_s\bst\btr\br(\b()\b) g\bge\bet\bt_\b_b\bbo\boo\bol\bl(\b()\b) g\bge\bet\bt_\b_i\bin\bnt\bt(\b()\b) *\b**\b**\b**\b**\b*\n std::string const& g\bge\bet\bt_\b_s\bst\btr\br (int name) const override;\n+int g\bge\bet\bt_\b_i\bin\bnt\bt (int name) const override;\n+bool g\bge\bet\bt_\b_b\bbo\boo\bol\bl (int name) const override;\n queries the current configuration option from the _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk. name is one of\n the enumeration values from string_types, int_types or bool_types. The enum\n value must match the type of the get_* function. If the specified setting field\n has not been set, the default value is returned.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* e\ben\bnu\bum\bm t\bty\byp\bpe\be_\b_b\bba\bas\bse\bes\bs *\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk_\b._\bh_\bp_\bp\"\n@@ -12190,46 +12190,46 @@\n Sometimes it's important to get a non-owning reference to the root node ( to be\n able to copy it as a reference for instance). For that, use the _\bn_\bo_\bn_\b__\bo_\bw_\bn_\bi_\bn_\bg_\b(_\b)\n member function.\n There are 5 different types of nodes, see _\bt_\by_\bp_\be_\b__\bt.\n struct bdecode_node\n {\n b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be () = default;\n- b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be (bdecode_node&&) noexcept;\n bdecode_node& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node&&) & = default;\n+ b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be (bdecode_node&&) noexcept;\n bdecode_node& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be (bdecode_node const&);\n type_t t\bty\byp\bpe\be () const noexcept;\n explicit operator b\bbo\boo\bol\bl () const noexcept;\n bdecode_node n\bno\bon\bn_\b_o\bow\bwn\bni\bin\bng\bg () const;\n std::ptrdiff_t d\bda\bat\bta\ba_\b_o\bof\bff\bfs\bse\bet\bt () const noexcept;\n span d\bda\bat\bta\ba_\b_s\bse\bec\bct\bti\bio\bon\bn () const noexcept;\n- std::int64_t l\bli\bis\bst\bt_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt (int i\n- , std::int64_t default_val = 0) const;\n- bdecode_node l\bli\bis\bst\bt_\b_a\bat\bt (int i) const;\n string_view l\bli\bis\bst\bt_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt (int i\n , string_view default_val = string_view()) const;\n+ bdecode_node l\bli\bis\bst\bt_\b_a\bat\bt (int i) const;\n int l\bli\bis\bst\bt_\b_s\bsi\biz\bze\be () const;\n+ std::int64_t l\bli\bis\bst\bt_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt (int i\n+ , std::int64_t default_val = 0) const;\n+ bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg (string_view key) const;\n+ bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt (string_view key) const;\n+ bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd (string_view key) const;\n string_view d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be (string_view key\n , string_view default_value = string_view()) const;\n+ bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_l\bli\bis\bst\bt (string_view key) const;\n+ bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt (string_view key) const;\n+ int d\bdi\bic\bct\bt_\b_s\bsi\biz\bze\be () const;\n std::int64_t d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be (string_view key\n , std::int64_t default_val = 0) const;\n- std::pair d\bdi\bic\bct\bt_\b_a\bat\bt_\b_n\bno\bod\bde\be (int i) const;\n- bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg (string_view key) const;\n- bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt (string_view key) const;\n- bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_l\bli\bis\bst\bt (string_view key) const;\n std::pair d\bdi\bic\bct\bt_\b_a\bat\bt (int i) const;\n- bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt (string_view key) const;\n- int d\bdi\bic\bct\bt_\b_s\bsi\biz\bze\be () const;\n- bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd (string_view key) const;\n+ std::pair d\bdi\bic\bct\bt_\b_a\bat\bt_\b_n\bno\bod\bde\be (int i) const;\n std::int64_t i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be () const;\n- int s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh () const;\n char const* s\bst\btr\bri\bin\bng\bg_\b_p\bpt\btr\br () const;\n- string_view s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be () const;\n std::ptrdiff_t s\bst\btr\bri\bin\bng\bg_\b_o\bof\bff\bfs\bse\bet\bt () const;\n+ int s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh () const;\n+ string_view s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be () const;\n void c\bcl\ble\bea\bar\br ();\n void s\bsw\bwa\bap\bp (bdecode_node& n);\n void r\bre\bes\bse\ber\brv\bve\be (int tokens);\n void s\bsw\bwi\bit\btc\bch\bh_\b_u\bun\bnd\bde\ber\brl\bly\byi\bin\bng\bg_\b_b\bbu\buf\bff\bfe\ber\br (char const* buf) noexcept;\n bool h\bha\bas\bs_\b_s\bso\bof\bft\bt_\b_e\ber\brr\bro\bor\br (span error) const;\n \n enum type_t\n@@ -12242,17 +12242,17 @@\n };\n };\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be(\b()\b) *\b**\b**\b**\b**\b*\n b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be () = default;\n creates a default constructed node, it will have the type none_t.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be(\b()\b) o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) *\b**\b**\b**\b**\b*\n-b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be (bdecode_node&&) noexcept;\n+*\b**\b**\b**\b**\b* o\bop\bpe\ber\bra\bat\bto\bor\br=\b=(\b()\b) b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be(\b()\b) *\b**\b**\b**\b**\b*\n bdecode_node& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node&&) & = default;\n+b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be (bdecode_node&&) noexcept;\n bdecode_node& o\bop\bpe\ber\bra\bat\bto\bor\br=\b= (bdecode_node const&) &;\n b\bbd\bde\bec\bco\bod\bde\be_\b_n\bno\bod\bde\be (bdecode_node const&);\n For owning nodes, the copy will create a copy of the tree, but the underlying\n buffer remains the same.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* t\bty\byp\bpe\be(\b()\b) *\b**\b**\b**\b**\b*\n type_t t\bty\byp\bpe\be () const noexcept;\n@@ -12272,41 +12272,41 @@\n span d\bda\bat\bta\ba_\b_s\bse\bec\bct\bti\bio\bon\bn () const noexcept;\n returns the buffer and length of the section in the original bencoded buffer\n where this node is defined. For a dictionary for instance, this starts with d\n and ends with e, and has all the content of the dictionary in between. the\n data_offset() function returns the byte-offset to this node in, starting from\n the beginning of the buffer that was parsed.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* l\bli\bis\bst\bt_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt(\b()\b) l\bli\bis\bst\bt_\b_s\bsi\biz\bze\be(\b()\b) l\bli\bis\bst\bt_\b_a\bat\bt(\b()\b) l\bli\bis\bst\bt_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt(\b()\b) *\b**\b**\b**\b**\b*\n-std::int64_t l\bli\bis\bst\bt_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt (int i\n- , std::int64_t default_val = 0) const;\n-bdecode_node l\bli\bis\bst\bt_\b_a\bat\bt (int i) const;\n+*\b**\b**\b**\b**\b* l\bli\bis\bst\bt_\b_a\bat\bt(\b()\b) l\bli\bis\bst\bt_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt(\b()\b) l\bli\bis\bst\bt_\b_s\bsi\biz\bze\be(\b()\b) l\bli\bis\bst\bt_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt(\b()\b) *\b**\b**\b**\b**\b*\n string_view l\bli\bis\bst\bt_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt (int i\n , string_view default_val = string_view()) const;\n+bdecode_node l\bli\bis\bst\bt_\b_a\bat\bt (int i) const;\n int l\bli\bis\bst\bt_\b_s\bsi\biz\bze\be () const;\n+std::int64_t l\bli\bis\bst\bt_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be_\b_a\bat\bt (int i\n+ , std::int64_t default_val = 0) const;\n functions with the list_ prefix operate on lists. These functions are only\n valid if type() == list_t. list_at() returns the item in the list at index i. i\n may not be greater than or equal to the size of the list. size() returns the\n size of the list.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg(\b()\b) d\bdi\bic\bct\bt_\b_a\bat\bt(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be\n-(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_l\bli\bis\bst\bt(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd(\b()\b) d\bdi\bic\bct\bt_\b_a\bat\bt_\b_n\bno\bod\bde\be(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt(\b()\b)\n-d\bdi\bic\bct\bt_\b_s\bsi\biz\bze\be(\b()\b) *\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b* d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg(\b()\b)\n+d\bdi\bic\bct\bt_\b_s\bsi\biz\bze\be(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_l\bli\bis\bst\bt(\b()\b) d\bdi\bic\bct\bt_\b_a\bat\bt(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt(\b()\b) d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be(\b()\b)\n+d\bdi\bic\bct\bt_\b_a\bat\bt_\b_n\bno\bod\bde\be(\b()\b) *\b**\b**\b**\b**\b*\n+bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg (string_view key) const;\n+bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt (string_view key) const;\n+bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd (string_view key) const;\n string_view d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be (string_view key\n , string_view default_value = string_view()) const;\n+bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_l\bli\bis\bst\bt (string_view key) const;\n+bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt (string_view key) const;\n+int d\bdi\bic\bct\bt_\b_s\bsi\biz\bze\be () const;\n std::int64_t d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be (string_view key\n , std::int64_t default_val = 0) const;\n-std::pair d\bdi\bic\bct\bt_\b_a\bat\bt_\b_n\bno\bod\bde\be (int i) const;\n-bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_s\bst\btr\bri\bin\bng\bg (string_view key) const;\n-bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_d\bdi\bic\bct\bt (string_view key) const;\n-bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_l\bli\bis\bst\bt (string_view key) const;\n std::pair d\bdi\bic\bct\bt_\b_a\bat\bt (int i) const;\n-bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd_\b_i\bin\bnt\bt (string_view key) const;\n-int d\bdi\bic\bct\bt_\b_s\bsi\biz\bze\be () const;\n-bdecode_node d\bdi\bic\bct\bt_\b_f\bfi\bin\bnd\bd (string_view key) const;\n+std::pair d\bdi\bic\bct\bt_\b_a\bat\bt_\b_n\bno\bod\bde\be (int i) const;\n Functions with the dict_ prefix operates on dictionaries. They are only valid\n if type() == dict_t. In case a key you're looking up contains a 0 byte, you\n cannot use the 0-terminated string overloads, but have to use string_view\n instead. dict_find_list will return a valid bdecode_node if the key is found\n _and_ it is a list. Otherwise it will return a default-constructed\n _\bb_\bd_\be_\bc_\bo_\bd_\be_\b__\bn_\bo_\bd_\be.\n Functions with the _value suffix return the value of the node directly, rather\n@@ -12318,19 +12318,19 @@\n string).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be(\b()\b) *\b**\b**\b**\b**\b*\n std::int64_t i\bin\bnt\bt_\b_v\bva\bal\blu\bue\be () const;\n this function is only valid if type() == int_t. It returns the value of the\n integer.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b* s\bst\btr\bri\bin\bng\bg_\b_p\bpt\btr\br(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_o\bof\bff\bfs\bse\bet\bt(\b()\b) *\b**\b**\b**\b**\b*\n-int s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh () const;\n+*\b**\b**\b**\b**\b* s\bst\btr\bri\bin\bng\bg_\b_o\bof\bff\bfs\bse\bet\bt(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh(\b()\b) s\bst\btr\bri\bin\bng\bg_\b_p\bpt\btr\br(\b()\b) *\b**\b**\b**\b**\b*\n char const* s\bst\btr\bri\bin\bng\bg_\b_p\bpt\btr\br () const;\n-string_view s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be () const;\n std::ptrdiff_t s\bst\btr\bri\bin\bng\bg_\b_o\bof\bff\bfs\bse\bet\bt () const;\n+int s\bst\btr\bri\bin\bng\bg_\b_l\ble\ben\bng\bgt\bth\bh () const;\n+string_view s\bst\btr\bri\bin\bng\bg_\b_v\bva\bal\blu\bue\be () const;\n these functions are only valid if type() == string_t. They return the string\n values. Note that string_ptr() is n\bno\bot\bt 0-terminated. string_length() returns the\n number of bytes in the string. string_offset() returns the byte offset from the\n start of the parsed bencoded buffer this string can be found.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b* c\bcl\ble\bea\bar\br(\b()\b) *\b**\b**\b**\b**\b*\n void c\bcl\ble\bea\bar\br ();\n@@ -12633,21 +12633,21 @@\n when using uTP.\n ssl_torrent\n Specify the port number for the SSL listen socket in the DHT announce.\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\br_\be_\ba_\bd_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b._\bh_\bp_\bp\"\n add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (bdecode_node const& rd\n- , int piece_limit = 0x200000);\n-add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (span buffer\n- , load_torrent_limits const& cfg = {});\n-add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (bdecode_node const& rd\n , error_code& ec, int piece_limit = 0x200000);\n add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (span buffer\n , error_code& ec, load_torrent_limits const& cfg = {});\n+add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (bdecode_node const& rd\n+ , int piece_limit = 0x200000);\n+add_torrent_params r\bre\bea\bad\bd_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (span buffer\n+ , load_torrent_limits const& cfg = {});\n these functions are used to parse resume data and populate the appropriate\n fields in an _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs object. This object can then be used to add the\n actual _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo object to and pass to session::add_torrent() or session::\n async_add_torrent().\n If the client wants to override any field that was loaded from the resume data,\n e.g. save_path, those fields must be changed after loading resume data but\n before adding the torrent.\n@@ -12655,28 +12655,28 @@\n the torrent that may be loaded as part of the resume data, if it contains an\n info field. The overloads that take a flat buffer are instead configured with\n limits on torrent sizes via load_torrent limits.\n In order to support large torrents, it may also be necessary to raise the\n _\bs_\be_\bt_\bt_\bi_\bn_\bg_\bs_\b__\bp_\ba_\bc_\bk_\b:_\b:_\bm_\ba_\bx_\b__\bp_\bi_\be_\bc_\be_\b__\bc_\bo_\bu_\bn_\bt setting and pass a higher limit to calls to\n _\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bi_\bn_\bf_\bo_\b:_\b:_\bp_\ba_\br_\bs_\be_\b__\bi_\bn_\bf_\bo_\b__\bs_\be_\bc_\bt_\bi_\bo_\bn_\b(_\b).\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n-*\b**\b**\b**\b**\b**\b* w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba_\b_b\bbu\buf\bf(\b()\b) w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba(\b()\b) *\b**\b**\b**\b**\b**\b*\n+*\b**\b**\b**\b**\b**\b* w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba(\b()\b) w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba_\b_b\bbu\buf\bf(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b._\bh_\bp_\bp\"\n-entry w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (add_torrent_params const& atp);\n std::vector w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba_\b_b\bbu\buf\bf (add_torrent_params const& atp);\n+entry w\bwr\bri\bit\bte\be_\b_r\bre\bes\bsu\bum\bme\be_\b_d\bda\bat\bta\ba (add_torrent_params const& atp);\n this function turns the resume data in an add_torrent_params object into a\n bencoded structure\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be(\b()\b) w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be_\b_b\bbu\buf\bf(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bw_\br_\bi_\bt_\be_\b__\br_\be_\bs_\bu_\bm_\be_\b__\bd_\ba_\bt_\ba_\b._\bh_\bp_\bp\"\n-entry w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (add_torrent_params const& atp);\n std::vector w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be_\b_b\bbu\buf\bf (add_torrent_params const& atp\n , write_torrent_flags_t flags);\n entry w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (add_torrent_params const& atp, write_torrent_flags_t\n flags);\n+entry w\bwr\bri\bit\bte\be_\b_t\bto\bor\brr\bre\ben\bnt\bt_\b_f\bfi\bil\ble\be (add_torrent_params const& atp);\n writes only the fields to create a .torrent file. This function may fail with a\n std::system_error exception if:\n * The _\ba_\bd_\bd_\b__\bt_\bo_\br_\br_\be_\bn_\bt_\b__\bp_\ba_\br_\ba_\bm_\bs object passed to this function does not contain\n the info dictionary (the ti field)\n * The piece layers are not complete for all files that need them\n The write_torrent_file_buf() overload returns the torrent file in bencoded\n buffer form. This overload may be faster at the expense of lost flexibility to\n@@ -12723,18 +12723,18 @@\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bk_\ba_\bd_\be_\bm_\bl_\bi_\ba_\b/_\be_\bd_\b2_\b5_\b5_\b1_\b9_\b._\bh_\bp_\bp\"\n bool e\bed\bd2\b25\b55\b51\b19\b9_\b_v\bve\ber\bri\bif\bfy\by (signature const& sig\n , span msg, public_key const& pk);\n Verifies the signature on the given message using pk\n [_\br_\be_\bp_\bo_\br_\bt_\b _\bi_\bs_\bs_\bu_\be]\n *\b**\b**\b**\b**\b**\b* e\bed\bd2\b25\b55\b51\b19\b9_\b_a\bad\bdd\bd_\b_s\bsc\bca\bal\bla\bar\br(\b()\b) *\b**\b**\b**\b**\b**\b*\n Declared in \"_\bl_\bi_\bb_\bt_\bo_\br_\br_\be_\bn_\bt_\b/_\bk_\ba_\bd_\be_\bm_\bl_\bi_\ba_\b/_\be_\bd_\b2_\b5_\b5_\b1_\b9_\b._\bh_\bp_\bp\"\n-secret_key e\bed\bd2\b25\b55\b51\b19\b9_\b_a\bad\bdd\bd_\b_s\bsc\bca\bal\bla\bar\br (secret_key const& sk\n- , std::array const& scalar);\n public_key e\bed\bd2\b25\b55\b51\b19\b9_\b_a\bad\bdd\bd_\b_s\bsc\bca\bal\bla\bar\br (public_key const& pk\n , std::array const& scalar);\n+secret_key e\bed\bd2\b25\b55\b51\b19\b9_\b_a\bad\bdd\bd_\b_s\bsc\bca\bal\bla\bar\br (secret_key const& sk\n+ , std::array const& scalar);\n Adds a scalar to the given key pair where scalar is a 32 byte buffer (possibly\n generated withed25519_create_seed), generating a new key pair.\n You can calculate the public key sum without knowing the private key and vice\n versa by passing in null for the key you don't know. This is useful when a\n third party (an authoritative server for example) needs to enforce randomness\n on a key pair while only knowing the public key of the other side.\n Warning: the last bit of the scalar is ignored - if comparing scalars make sure\n"}]}]}]}]}]}