tor-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
October 2019
- 22 participants
- 4141 discussions

[translation/policies-code_of_conducttxtpot] https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot
by translation@torproject.org 16 Oct '19
by translation@torproject.org 16 Oct '19
16 Oct '19
commit 2fc238e307d7e095ab2a9162e8df9cd2a040b0dc
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Oct 16 15:47:11 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_co…
---
code_of_conduct+fr.po | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/code_of_conduct+fr.po b/code_of_conduct+fr.po
index 357bc8872..4ac37cc2f 100644
--- a/code_of_conduct+fr.po
+++ b/code_of_conduct+fr.po
@@ -355,10 +355,10 @@ msgid ""
"on a protected characteristic. (Display of weapons may constitute "
"intimidation or a threat of violence.)"
msgstr ""
-"Violence, agression sexuelle, menaces de violence ou langage violent dirigé "
-"contre une autre personne, en particulier la violence à l’encontre d’une "
-"personne ou d’un groupe sur la base d’une caractéristique protégée. (Le port"
-" d’armes peut constituer une intimidation ou une menace de violence.)"
+"Violence, agression sexuelle, menaces de violence ou langage violent visant "
+"une autre personne, en particulier la violence visant une personne ou un "
+"groupe et fondée sur un caractère qualitatif protégé. (L’exposition d’armes "
+"peut constituer une intimidation ou une menace de violence.)"
#. type: Bullet: ' * '
#: ../code_of_conduct.txt:117
@@ -366,8 +366,8 @@ msgid ""
"Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory"
" jokes and language."
msgstr ""
-"Blagues et langage sexistes, racistes, homophobes, transphobes, capables ou "
-"autrement discriminatoires."
+"Blagues et langage sexistes, racistes, homophobes, transphobes, fondés sur "
+"la capacité physique ou discriminatoires."
#. type: Bullet: ' * '
#: ../code_of_conduct.txt:122
1
0

[tor/master] hs_common.[ch]: repair doxygen comments by replacing /* with /**
by nickm@torproject.org 16 Oct '19
by nickm@torproject.org 16 Oct '19
16 Oct '19
commit 123fe6bdc51e33d7640589c5542d3dbf218e4400
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Wed Oct 16 11:39:10 2019 -0400
hs_common.[ch]: repair doxygen comments by replacing /* with /**
---
src/feature/hs/hs_common.c | 97 +++++++++++++++++++++++-----------------------
src/feature/hs/hs_common.h | 70 +++++++++++++++++----------------
2 files changed, 85 insertions(+), 82 deletions(-)
diff --git a/src/feature/hs/hs_common.c b/src/feature/hs/hs_common.c
index 036d23a6b..cf98bea32 100644
--- a/src/feature/hs/hs_common.c
+++ b/src/feature/hs/hs_common.c
@@ -44,7 +44,7 @@
/* Trunnel */
#include "trunnel/ed25519_cert.h"
-/* Ed25519 Basepoint value. Taken from section 5 of
+/** Ed25519 Basepoint value. Taken from section 5 of
* https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03 */
static const char *str_ed25519_basepoint =
"(15112221349535400772501151409588531511"
@@ -106,7 +106,7 @@ add_unix_port(smartlist_t *ports, rend_service_port_config_t *p)
#endif /* defined(HAVE_SYS_UN_H) */
-/* Helper function: The key is a digest that we compare to a node_t object
+/** Helper function: The key is a digest that we compare to a node_t object
* current hsdir_index. */
static int
compare_digest_to_fetch_hsdir_index(const void *_key, const void **_member)
@@ -116,7 +116,7 @@ compare_digest_to_fetch_hsdir_index(const void *_key, const void **_member)
return tor_memcmp(key, node->hsdir_index.fetch, DIGEST256_LEN);
}
-/* Helper function: The key is a digest that we compare to a node_t object
+/** Helper function: The key is a digest that we compare to a node_t object
* next hsdir_index. */
static int
compare_digest_to_store_first_hsdir_index(const void *_key,
@@ -127,7 +127,7 @@ compare_digest_to_store_first_hsdir_index(const void *_key,
return tor_memcmp(key, node->hsdir_index.store_first, DIGEST256_LEN);
}
-/* Helper function: The key is a digest that we compare to a node_t object
+/** Helper function: The key is a digest that we compare to a node_t object
* next hsdir_index. */
static int
compare_digest_to_store_second_hsdir_index(const void *_key,
@@ -138,7 +138,7 @@ compare_digest_to_store_second_hsdir_index(const void *_key,
return tor_memcmp(key, node->hsdir_index.store_second, DIGEST256_LEN);
}
-/* Helper function: Compare two node_t objects current hsdir_index. */
+/** Helper function: Compare two node_t objects current hsdir_index. */
static int
compare_node_fetch_hsdir_index(const void **a, const void **b)
{
@@ -149,7 +149,7 @@ compare_node_fetch_hsdir_index(const void **a, const void **b)
DIGEST256_LEN);
}
-/* Helper function: Compare two node_t objects next hsdir_index. */
+/** Helper function: Compare two node_t objects next hsdir_index. */
static int
compare_node_store_first_hsdir_index(const void **a, const void **b)
{
@@ -160,7 +160,7 @@ compare_node_store_first_hsdir_index(const void **a, const void **b)
DIGEST256_LEN);
}
-/* Helper function: Compare two node_t objects next hsdir_index. */
+/** Helper function: Compare two node_t objects next hsdir_index. */
static int
compare_node_store_second_hsdir_index(const void **a, const void **b)
{
@@ -171,7 +171,7 @@ compare_node_store_second_hsdir_index(const void **a, const void **b)
DIGEST256_LEN);
}
-/* Allocate and return a string containing the path to filename in directory.
+/** Allocate and return a string containing the path to filename in directory.
* This function will never return NULL. The caller must free this path. */
char *
hs_path_from_filename(const char *directory, const char *filename)
@@ -185,8 +185,9 @@ hs_path_from_filename(const char *directory, const char *filename)
return file_path;
}
-/* Make sure that the directory for <b>service</b> is private, using the config
- * <b>username</b>.
+/** Make sure that the directory for <b>service</b> is private, using the
+ * config <b>username</b>.
+ *
* If <b>create</b> is true:
* - if the directory exists, change permissions if needed,
* - if the directory does not exist, create it with the correct permissions.
@@ -313,9 +314,9 @@ hs_get_previous_time_period_num(time_t now)
return hs_get_time_period_num(now) - 1;
}
-/* Return the start time of the upcoming time period based on <b>now</b>. If
- <b>now</b> is not set, we try to get the time ourselves from a live
- consensus. */
+/** Return the start time of the upcoming time period based on <b>now</b>. If
+ * <b>now</b> is not set, we try to get the time ourselves from a live
+ * consensus. */
time_t
hs_get_start_time_of_next_time_period(time_t now)
{
@@ -330,7 +331,7 @@ hs_get_start_time_of_next_time_period(time_t now)
return (time_t)(start_of_next_tp_in_mins * 60 + time_period_rotation_offset);
}
-/* Create a new rend_data_t for a specific given <b>version</b>.
+/** Create a new rend_data_t for a specific given <b>version</b>.
* Return a pointer to the newly allocated data structure. */
static rend_data_t *
rend_data_alloc(uint32_t version)
@@ -379,7 +380,7 @@ rend_data_free_(rend_data_t *data)
}
}
-/* Allocate and return a deep copy of <b>data</b>. */
+/** Allocate and return a deep copy of <b>data</b>. */
rend_data_t *
rend_data_dup(const rend_data_t *data)
{
@@ -409,7 +410,7 @@ rend_data_dup(const rend_data_t *data)
return data_dup;
}
-/* Compute the descriptor ID for each HS descriptor replica and save them. A
+/** Compute the descriptor ID for each HS descriptor replica and save them. A
* valid onion address must be present in the <b>rend_data</b>.
*
* Return 0 on success else -1. */
@@ -447,7 +448,7 @@ compute_desc_id(rend_data_t *rend_data)
return ret;
}
-/* Allocate and initialize a rend_data_t object for a service using the
+/** Allocate and initialize a rend_data_t object for a service using the
* provided arguments. All arguments are optional (can be NULL), except from
* <b>onion_address</b> which MUST be set. The <b>pk_digest</b> is the hash of
* the service private key. The <b>cookie</b> is the rendezvous cookie and
@@ -479,7 +480,7 @@ rend_data_service_create(const char *onion_address, const char *pk_digest,
return rend_data;
}
-/* Allocate and initialize a rend_data_t object for a client request using the
+/** Allocate and initialize a rend_data_t object for a client request using the
* given arguments. Either an onion address or a descriptor ID is needed. Both
* can be given but in this case only the onion address will be used to make
* the descriptor fetch. The <b>cookie</b> is the rendezvous cookie and
@@ -520,7 +521,7 @@ rend_data_client_create(const char *onion_address, const char *desc_id,
return NULL;
}
-/* Return the onion address from the rend data. Depending on the version,
+/** Return the onion address from the rend data. Depending on the version,
* the size of the address can vary but it's always NUL terminated. */
const char *
rend_data_get_address(const rend_data_t *rend_data)
@@ -536,7 +537,7 @@ rend_data_get_address(const rend_data_t *rend_data)
}
}
-/* Return the descriptor ID for a specific replica number from the rend
+/** Return the descriptor ID for a specific replica number from the rend
* data. The returned data is a binary digest and depending on the version its
* size can vary. The size of the descriptor ID is put in <b>len_out</b> if
* non NULL. */
@@ -559,7 +560,7 @@ rend_data_get_desc_id(const rend_data_t *rend_data, uint8_t replica,
}
}
-/* Return the public key digest using the given <b>rend_data</b>. The size of
+/** Return the public key digest using the given <b>rend_data</b>. The size of
* the digest is put in <b>len_out</b> (if set) which can differ depending on
* the version. */
const uint8_t *
@@ -582,7 +583,7 @@ rend_data_get_pk_digest(const rend_data_t *rend_data, size_t *len_out)
}
}
-/* Using the given time period number, compute the disaster shared random
+/** Using the given time period number, compute the disaster shared random
* value and put it in srv_out. It MUST be at least DIGEST256_LEN bytes. */
static void
compute_disaster_srv(uint64_t time_period_num, uint8_t *srv_out)
@@ -670,7 +671,7 @@ get_second_cached_disaster_srv(void)
#endif /* defined(TOR_UNIT_TESTS) */
-/* When creating a blinded key, we need a parameter which construction is as
+/** When creating a blinded key, we need a parameter which construction is as
* follow: H(pubkey | [secret] | ed25519-basepoint | nonce).
*
* The nonce has a pre-defined format which uses the time period number
@@ -751,7 +752,7 @@ build_hs_checksum(const ed25519_public_key_t *key, uint8_t version,
DIGEST_SHA3_256);
}
-/* Using an ed25519 public key, checksum and version to build the binary
+/** Using an ed25519 public key, checksum and version to build the binary
* representation of a service address. Put in addr_out. Format is:
* addr_out = PUBKEY || CHECKSUM || VERSION
*
@@ -774,7 +775,7 @@ build_hs_address(const ed25519_public_key_t *key, const uint8_t *checksum,
tor_assert(offset == HS_SERVICE_ADDR_LEN);
}
-/* Helper for hs_parse_address(): Using a binary representation of a service
+/** Helper for hs_parse_address(): Using a binary representation of a service
* address, parse its content into the key_out, checksum_out and version_out.
* Any out variable can be NULL in case the caller would want only one field.
* checksum_out MUST at least be 2 bytes long. address must be at least
@@ -806,7 +807,7 @@ hs_parse_address_impl(const char *address, ed25519_public_key_t *key_out,
tor_assert(offset == HS_SERVICE_ADDR_LEN);
}
-/* Using the given identity public key and a blinded public key, compute the
+/** Using the given identity public key and a blinded public key, compute the
* subcredential and put it in subcred_out (must be of size DIGEST256_LEN).
* This can't fail. */
void
@@ -846,7 +847,7 @@ hs_get_subcredential(const ed25519_public_key_t *identity_pk,
memwipe(credential, 0, sizeof(credential));
}
-/* From the given list of hidden service ports, find the ones that match the
+/** From the given list of hidden service ports, find the ones that match the
* given edge connection conn, pick one at random and use it to set the
* connection address. Return 0 on success or -1 if none. */
int
@@ -903,7 +904,7 @@ hs_set_conn_addr_port(const smartlist_t *ports, edge_connection_t *conn)
return (chosen_port) ? 0 : -1;
}
-/* Using a base32 representation of a service address, parse its content into
+/** Using a base32 representation of a service address, parse its content into
* the key_out, checksum_out and version_out. Any out variable can be NULL in
* case the caller would want only one field. checksum_out MUST at least be 2
* bytes long.
@@ -943,7 +944,7 @@ hs_parse_address(const char *address, ed25519_public_key_t *key_out,
return -1;
}
-/* Validate a given onion address. The length, the base32 decoding, and
+/** Validate a given onion address. The length, the base32 decoding, and
* checksum are validated. Return 1 if valid else 0. */
int
hs_address_is_valid(const char *address)
@@ -982,7 +983,7 @@ hs_address_is_valid(const char *address)
return 0;
}
-/* Build a service address using an ed25519 public key and a given version.
+/** Build a service address using an ed25519 public key and a given version.
* The returned address is base32 encoded and put in addr_out. The caller MUST
* make sure the addr_out is at least HS_SERVICE_ADDR_LEN_BASE32 + 1 long.
*
@@ -1012,7 +1013,7 @@ hs_build_address(const ed25519_public_key_t *key, uint8_t version,
tor_assert(hs_address_is_valid(addr_out));
}
-/* From a given ed25519 public key pk and an optional secret, compute a
+/** From a given ed25519 public key pk and an optional secret, compute a
* blinded public key and put it in blinded_pk_out. This is only useful to
* the client side because the client only has access to the identity public
* key of the service. */
@@ -1036,7 +1037,7 @@ hs_build_blinded_pubkey(const ed25519_public_key_t *pk,
memwipe(param, 0, sizeof(param));
}
-/* From a given ed25519 keypair kp and an optional secret, compute a blinded
+/** From a given ed25519 keypair kp and an optional secret, compute a blinded
* keypair for the current time period and put it in blinded_kp_out. This is
* only useful by the service side because the client doesn't have access to
* the identity secret key. */
@@ -1062,7 +1063,7 @@ hs_build_blinded_keypair(const ed25519_keypair_t *kp,
memwipe(param, 0, sizeof(param));
}
-/* Return true if we are currently in the time segment between a new time
+/** Return true if we are currently in the time segment between a new time
* period and a new SRV (in the real network that happens between 12:00 and
* 00:00 UTC). Here is a diagram showing exactly when this returns true:
*
@@ -1102,7 +1103,7 @@ hs_in_period_between_tp_and_srv,(const networkstatus_t *consensus, time_t now))
return 1;
}
-/* Return 1 if any virtual port in ports needs a circuit with good uptime.
+/** Return 1 if any virtual port in ports needs a circuit with good uptime.
* Else return 0. */
int
hs_service_requires_uptime_circ(const smartlist_t *ports)
@@ -1118,7 +1119,7 @@ hs_service_requires_uptime_circ(const smartlist_t *ports)
return 0;
}
-/* Build hs_index which is used to find the responsible hsdirs. This index
+/** Build hs_index which is used to find the responsible hsdirs. This index
* value is used to select the responsible HSDir where their hsdir_index is
* closest to this value.
* SHA3-256("store-at-idx" | blinded_public_key |
@@ -1160,7 +1161,7 @@ hs_build_hs_index(uint64_t replica, const ed25519_public_key_t *blinded_pk,
crypto_digest_free(digest);
}
-/* Build hsdir_index which is used to find the responsible hsdirs. This is the
+/** Build hsdir_index which is used to find the responsible hsdirs. This is the
* index value that is compare to the hs_index when selecting an HSDir.
* SHA3-256("node-idx" | node_identity |
* shared_random_value | INT_8(period_length) | INT_8(period_num) )
@@ -1201,7 +1202,7 @@ hs_build_hsdir_index(const ed25519_public_key_t *identity_pk,
crypto_digest_free(digest);
}
-/* Return a newly allocated buffer containing the current shared random value
+/** Return a newly allocated buffer containing the current shared random value
* or if not present, a disaster value is computed using the given time period
* number. If a consensus is provided in <b>ns</b>, use it to get the SRV
* value. This function can't fail. */
@@ -1220,7 +1221,7 @@ hs_get_current_srv(uint64_t time_period_num, const networkstatus_t *ns)
return sr_value;
}
-/* Return a newly allocated buffer containing the previous shared random
+/** Return a newly allocated buffer containing the previous shared random
* value or if not present, a disaster value is computed using the given time
* period number. This function can't fail. */
uint8_t *
@@ -1238,7 +1239,7 @@ hs_get_previous_srv(uint64_t time_period_num, const networkstatus_t *ns)
return sr_value;
}
-/* Return the number of replicas defined by a consensus parameter or the
+/** Return the number of replicas defined by a consensus parameter or the
* default value. */
int32_t
hs_get_hsdir_n_replicas(void)
@@ -1248,7 +1249,7 @@ hs_get_hsdir_n_replicas(void)
HS_DEFAULT_HSDIR_N_REPLICAS, 1, 16);
}
-/* Return the spread fetch value defined by a consensus parameter or the
+/** Return the spread fetch value defined by a consensus parameter or the
* default value. */
int32_t
hs_get_hsdir_spread_fetch(void)
@@ -1258,7 +1259,7 @@ hs_get_hsdir_spread_fetch(void)
HS_DEFAULT_HSDIR_SPREAD_FETCH, 1, 128);
}
-/* Return the spread store value defined by a consensus parameter or the
+/** Return the spread store value defined by a consensus parameter or the
* default value. */
int32_t
hs_get_hsdir_spread_store(void)
@@ -1301,7 +1302,7 @@ node_has_hsdir_index(const node_t *node)
return 1;
}
-/* For a given blinded key and time period number, get the responsible HSDir
+/** For a given blinded key and time period number, get the responsible HSDir
* and put their routerstatus_t object in the responsible_dirs list. If
* 'use_second_hsdir_index' is true, use the second hsdir_index of the node_t
* is used. If 'for_fetching' is true, the spread fetch consensus parameter is
@@ -1674,7 +1675,7 @@ hs_pick_hsdir(smartlist_t *responsible_dirs, const char *req_key_str,
return hs_dir;
}
-/* Given a list of link specifiers lspecs, a curve 25519 onion_key, and
+/** Given a list of link specifiers lspecs, a curve 25519 onion_key, and
* a direct connection boolean direct_conn (true for single onion services),
* return a newly allocated extend_info_t object.
*
@@ -1787,7 +1788,7 @@ hs_get_extend_info_from_lspecs(const smartlist_t *lspecs,
/***********************************************************************/
-/* Initialize the entire HS subsytem. This is called in tor_init() before any
+/** Initialize the entire HS subsytem. This is called in tor_init() before any
* torrc options are loaded. Only for >= v3. */
void
hs_init(void)
@@ -1797,7 +1798,7 @@ hs_init(void)
hs_cache_init();
}
-/* Release and cleanup all memory of the HS subsystem (all version). This is
+/** Release and cleanup all memory of the HS subsystem (all version). This is
* called by tor_free_all(). */
void
hs_free_all(void)
@@ -1808,7 +1809,7 @@ hs_free_all(void)
hs_client_free_all();
}
-/* For the given origin circuit circ, decrement the number of rendezvous
+/** For the given origin circuit circ, decrement the number of rendezvous
* stream counter. This handles every hidden service version. */
void
hs_dec_rdv_stream_counter(origin_circuit_t *circ)
@@ -1825,7 +1826,7 @@ hs_dec_rdv_stream_counter(origin_circuit_t *circ)
}
}
-/* For the given origin circuit circ, increment the number of rendezvous
+/** For the given origin circuit circ, increment the number of rendezvous
* stream counter. This handles every hidden service version. */
void
hs_inc_rdv_stream_counter(origin_circuit_t *circ)
@@ -1842,7 +1843,7 @@ hs_inc_rdv_stream_counter(origin_circuit_t *circ)
}
}
-/* Return a newly allocated link specifier object that is a copy of dst. */
+/** Return a newly allocated link specifier object that is a copy of dst. */
link_specifier_t *
link_specifier_dup(const link_specifier_t *src)
{
diff --git a/src/feature/hs/hs_common.h b/src/feature/hs/hs_common.h
index 3009780d9..1a3c56326 100644
--- a/src/feature/hs/hs_common.h
+++ b/src/feature/hs/hs_common.h
@@ -19,13 +19,14 @@ struct ed25519_keypair_t;
/* Trunnel */
#include "trunnel/ed25519_cert.h"
-/* Protocol version 2. Use this instead of hardcoding "2" in the code base,
+/** Protocol version 2. Use this instead of hardcoding "2" in the code base,
* this adds a clearer semantic to the value when used. */
#define HS_VERSION_TWO 2
-/* Version 3 of the protocol (prop224). */
+/** Version 3 of the protocol (prop224). */
#define HS_VERSION_THREE 3
-/* Earliest and latest version we support. */
+/** Earliest version we support. */
#define HS_VERSION_MIN HS_VERSION_TWO
+/** Latest version we support. */
#define HS_VERSION_MAX HS_VERSION_THREE
/** Try to maintain this many intro points per service by default. */
@@ -48,94 +49,95 @@ struct ed25519_keypair_t;
* rendezvous point before giving up? */
#define MAX_REND_TIMEOUT 30
-/* String prefix for the signature of ESTABLISH_INTRO */
+/** String prefix for the signature of ESTABLISH_INTRO */
#define ESTABLISH_INTRO_SIG_PREFIX "Tor establish-intro cell v1"
-/* The default HS time period length */
+/** The default HS time period length */
#define HS_TIME_PERIOD_LENGTH_DEFAULT 1440 /* 1440 minutes == one day */
-/* The minimum time period length as seen in prop224 section [TIME-PERIODS] */
+/** The minimum time period length as seen in prop224 section [TIME-PERIODS] */
#define HS_TIME_PERIOD_LENGTH_MIN 30 /* minutes */
-/* The minimum time period length as seen in prop224 section [TIME-PERIODS] */
+/** The minimum time period length as seen in prop224 section [TIME-PERIODS] */
#define HS_TIME_PERIOD_LENGTH_MAX (60 * 24 * 10) /* 10 days or 14400 minutes */
-/* Prefix of the onion address checksum. */
+/** Prefix of the onion address checksum. */
#define HS_SERVICE_ADDR_CHECKSUM_PREFIX ".onion checksum"
-/* Length of the checksum prefix minus the NUL terminated byte. */
+/** Length of the checksum prefix minus the NUL terminated byte. */
#define HS_SERVICE_ADDR_CHECKSUM_PREFIX_LEN \
(sizeof(HS_SERVICE_ADDR_CHECKSUM_PREFIX) - 1)
-/* Length of the resulting checksum of the address. The construction of this
+/** Length of the resulting checksum of the address. The construction of this
* checksum looks like:
* CHECKSUM = ".onion checksum" || PUBKEY || VERSION
* where VERSION is 1 byte. This is pre-hashing. */
#define HS_SERVICE_ADDR_CHECKSUM_INPUT_LEN \
(HS_SERVICE_ADDR_CHECKSUM_PREFIX_LEN + ED25519_PUBKEY_LEN + sizeof(uint8_t))
-/* The amount of bytes we use from the address checksum. */
+/** The amount of bytes we use from the address checksum. */
#define HS_SERVICE_ADDR_CHECKSUM_LEN_USED 2
-/* Length of the binary encoded service address which is of course before the
+/** Length of the binary encoded service address which is of course before the
* base32 encoding. Construction is:
* PUBKEY || CHECKSUM || VERSION
* with 1 byte VERSION and 2 bytes CHECKSUM. The following is 35 bytes. */
#define HS_SERVICE_ADDR_LEN \
(ED25519_PUBKEY_LEN + HS_SERVICE_ADDR_CHECKSUM_LEN_USED + sizeof(uint8_t))
-/* Length of 'y' portion of 'y.onion' URL. This is base32 encoded and the
+/** Length of 'y' portion of 'y.onion' URL. This is base32 encoded and the
* length ends up to 56 bytes (not counting the terminated NUL byte.) */
#define HS_SERVICE_ADDR_LEN_BASE32 \
(CEIL_DIV(HS_SERVICE_ADDR_LEN * 8, 5))
-/* The default HS time period length */
+/** The default HS time period length */
#define HS_TIME_PERIOD_LENGTH_DEFAULT 1440 /* 1440 minutes == one day */
-/* The minimum time period length as seen in prop224 section [TIME-PERIODS] */
+/** The minimum time period length as seen in prop224 section [TIME-PERIODS] */
#define HS_TIME_PERIOD_LENGTH_MIN 30 /* minutes */
-/* The minimum time period length as seen in prop224 section [TIME-PERIODS] */
+/** The minimum time period length as seen in prop224 section [TIME-PERIODS] */
#define HS_TIME_PERIOD_LENGTH_MAX (60 * 24 * 10) /* 10 days or 14400 minutes */
-/* The time period rotation offset as seen in prop224 section [TIME-PERIODS] */
+/** The time period rotation offset as seen in prop224 section
+ * [TIME-PERIODS] */
#define HS_TIME_PERIOD_ROTATION_OFFSET (12 * 60) /* minutes */
-/* Keyblinding parameter construction is as follow:
+/** Keyblinding parameter construction is as follow:
* "key-blind" || INT_8(period_num) || INT_8(start_period_sec) */
#define HS_KEYBLIND_NONCE_PREFIX "key-blind"
#define HS_KEYBLIND_NONCE_PREFIX_LEN (sizeof(HS_KEYBLIND_NONCE_PREFIX) - 1)
#define HS_KEYBLIND_NONCE_LEN \
(HS_KEYBLIND_NONCE_PREFIX_LEN + sizeof(uint64_t) + sizeof(uint64_t))
-/* Credential and subcredential prefix value. */
+/** Credential and subcredential prefix value. */
#define HS_CREDENTIAL_PREFIX "credential"
#define HS_CREDENTIAL_PREFIX_LEN (sizeof(HS_CREDENTIAL_PREFIX) - 1)
#define HS_SUBCREDENTIAL_PREFIX "subcredential"
#define HS_SUBCREDENTIAL_PREFIX_LEN (sizeof(HS_SUBCREDENTIAL_PREFIX) - 1)
-/* Node hidden service stored at index prefix value. */
+/** Node hidden service stored at index prefix value. */
#define HS_INDEX_PREFIX "store-at-idx"
#define HS_INDEX_PREFIX_LEN (sizeof(HS_INDEX_PREFIX) - 1)
-/* Node hidden service directory index prefix value. */
+/** Node hidden service directory index prefix value. */
#define HSDIR_INDEX_PREFIX "node-idx"
#define HSDIR_INDEX_PREFIX_LEN (sizeof(HSDIR_INDEX_PREFIX) - 1)
-/* Prefix of the shared random value disaster mode. */
+/** Prefix of the shared random value disaster mode. */
#define HS_SRV_DISASTER_PREFIX "shared-random-disaster"
#define HS_SRV_DISASTER_PREFIX_LEN (sizeof(HS_SRV_DISASTER_PREFIX) - 1)
-/* Default value of number of hsdir replicas (hsdir_n_replicas). */
+/** Default value of number of hsdir replicas (hsdir_n_replicas). */
#define HS_DEFAULT_HSDIR_N_REPLICAS 2
-/* Default value of hsdir spread store (hsdir_spread_store). */
+/** Default value of hsdir spread store (hsdir_spread_store). */
#define HS_DEFAULT_HSDIR_SPREAD_STORE 4
-/* Default value of hsdir spread fetch (hsdir_spread_fetch). */
+/** Default value of hsdir spread fetch (hsdir_spread_fetch). */
#define HS_DEFAULT_HSDIR_SPREAD_FETCH 3
-/* The size of a legacy RENDEZVOUS1 cell which adds up to 168 bytes. It is
+/** The size of a legacy RENDEZVOUS1 cell which adds up to 168 bytes. It is
* bigger than the 84 bytes needed for version 3 so we need to pad up to that
* length so it is indistinguishable between versions. */
#define HS_LEGACY_RENDEZVOUS_CELL_SIZE \
(REND_COOKIE_LEN + DH1024_KEY_LEN + DIGEST_LEN)
-/* Type of authentication key used by an introduction point. */
+/** Type of authentication key used by an introduction point. */
typedef enum {
HS_AUTH_KEY_TYPE_LEGACY = 1,
HS_AUTH_KEY_TYPE_ED25519 = 2,
} hs_auth_key_type_t;
-/* Return value when adding an ephemeral service through the ADD_ONION
+/** Return value when adding an ephemeral service through the ADD_ONION
* control port command. Both v2 and v3 share these. */
typedef enum {
RSAE_BADAUTH = -5, /**< Invalid auth_type/auth_clients */
@@ -146,18 +148,18 @@ typedef enum {
RSAE_OKAY = 0 /**< Service added as expected */
} hs_service_add_ephemeral_status_t;
-/* Represents the mapping from a virtual port of a rendezvous service to a
+/** Represents the mapping from a virtual port of a rendezvous service to a
* real port on some IP. */
typedef struct rend_service_port_config_t {
- /* The incoming HS virtual port we're mapping */
+ /** The incoming HS virtual port we're mapping */
uint16_t virtual_port;
- /* Is this an AF_UNIX port? */
+ /** Is this an AF_UNIX port? */
unsigned int is_unix_addr:1;
- /* The outgoing TCP port to use, if !is_unix_addr */
+ /** The outgoing TCP port to use, if !is_unix_addr */
uint16_t real_port;
- /* The outgoing IPv4 or IPv6 address to use, if !is_unix_addr */
+ /** The outgoing IPv4 or IPv6 address to use, if !is_unix_addr */
tor_addr_t real_addr;
- /* The socket path to connect to, if is_unix_addr */
+ /** The socket path to connect to, if is_unix_addr */
char unix_addr[FLEXIBLE_ARRAY_MEMBER];
} rend_service_port_config_t;
1
0

[tor/master] shared_random_state.[ch]: Repair a bunch of doxygen comments
by nickm@torproject.org 16 Oct '19
by nickm@torproject.org 16 Oct '19
16 Oct '19
commit 06367299c2a057e5e18832078c3af4929a2ca6c6
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Wed Oct 16 11:44:30 2019 -0400
shared_random_state.[ch]: Repair a bunch of doxygen comments
These need to start with /**, not /*.
---
src/feature/dirauth/shared_random_state.c | 134 +++++++++++++++---------------
src/feature/dirauth/shared_random_state.h | 57 ++++++-------
2 files changed, 96 insertions(+), 95 deletions(-)
diff --git a/src/feature/dirauth/shared_random_state.c b/src/feature/dirauth/shared_random_state.c
index 76befb0f5..474dcb271 100644
--- a/src/feature/dirauth/shared_random_state.c
+++ b/src/feature/dirauth/shared_random_state.c
@@ -26,18 +26,18 @@
#include "app/config/or_state_st.h"
-/* Default filename of the shared random state on disk. */
+/** Default filename of the shared random state on disk. */
static const char default_fname[] = "sr-state";
-/* String representation of a protocol phase. */
+/** String representation of a protocol phase. */
static const char *phase_str[] = { "unknown", "commit", "reveal" };
-/* Our shared random protocol state. There is only one possible state per
+/** Our shared random protocol state. There is only one possible state per
* protocol run so this is the global state which is reset at every run once
* the shared random value has been computed. */
static sr_state_t *sr_state = NULL;
-/* Representation of our persistent state on disk. The sr_state above
+/** Representation of our persistent state on disk. The sr_state above
* contains the data parsed from this state. When we save to disk, we
* translate the sr_state to this sr_disk_state. */
static sr_disk_state_t *sr_disk_state = NULL;
@@ -56,14 +56,14 @@ DUMMY_TYPECHECK_INSTANCE(sr_disk_state_t);
#define V(member,conftype,initvalue) \
VAR(#member, conftype, member, initvalue)
-/* Our persistent state magic number. */
+/** Our persistent state magic number. */
#define SR_DISK_STATE_MAGIC 0x98AB1254
static int
disk_state_validate_cb(void *old_state, void *state, void *default_state,
int from_setconf, char **msg);
-/* Array of variables that are saved to disk as a persistent state. */
+/** Array of variables that are saved to disk as a persistent state. */
static const config_var_t state_vars[] = {
V(Version, POSINT, "0"),
V(TorVersion, STRING, NULL),
@@ -78,7 +78,7 @@ static const config_var_t state_vars[] = {
END_OF_CONFIG_VARS
};
-/* "Extra" variable in the state that receives lines we can't parse. This
+/** "Extra" variable in the state that receives lines we can't parse. This
* lets us preserve options from versions of Tor newer than us. */
static const struct_member_t state_extra_var = {
.name = "__extra",
@@ -86,7 +86,7 @@ static const struct_member_t state_extra_var = {
.offset = offsetof(sr_disk_state_t, ExtraLines),
};
-/* Configuration format of sr_disk_state_t. */
+/** Configuration format of sr_disk_state_t. */
static const config_format_t state_format = {
sizeof(sr_disk_state_t),
{
@@ -103,7 +103,7 @@ static const config_format_t state_format = {
-1,
};
-/* Global configuration manager for the shared-random state file */
+/** Global configuration manager for the shared-random state file */
static config_mgr_t *shared_random_state_mgr = NULL;
/** Return the configuration manager for the shared-random state file. */
@@ -119,7 +119,7 @@ get_srs_mgr(void)
static void state_query_del_(sr_state_object_t obj_type, void *data);
-/* Return a string representation of a protocol phase. */
+/** Return a string representation of a protocol phase. */
STATIC const char *
get_phase_str(sr_phase_t phase)
{
@@ -137,7 +137,7 @@ get_phase_str(sr_phase_t phase)
return the_string;
}
-/* Return the time we should expire the state file created at <b>now</b>.
+/** Return the time we should expire the state file created at <b>now</b>.
* We expire the state file in the beginning of the next protocol run. */
STATIC time_t
get_state_valid_until_time(time_t now)
@@ -168,7 +168,7 @@ get_state_valid_until_time(time_t now)
return valid_until;
}
-/* Given the consensus 'valid-after' time, return the protocol phase we should
+/** Given the consensus 'valid-after' time, return the protocol phase we should
* be in. */
STATIC sr_phase_t
get_sr_protocol_phase(time_t valid_after)
@@ -188,7 +188,7 @@ get_sr_protocol_phase(time_t valid_after)
}
}
-/* Add the given <b>commit</b> to <b>state</b>. It MUST be a valid commit
+/** Add the given <b>commit</b> to <b>state</b>. It MUST be a valid commit
* and there shouldn't be a commit from the same authority in the state
* already else verification hasn't been done prior. This takes ownership of
* the commit once in our state. */
@@ -213,7 +213,7 @@ commit_add_to_state(sr_commit_t *commit, sr_state_t *state)
}
}
-/* Helper: deallocate a commit object. (Used with digestmap_free(), which
+/** Helper: deallocate a commit object. (Used with digestmap_free(), which
* requires a function pointer whose argument is void *). */
static void
commit_free_(void *p)
@@ -224,7 +224,7 @@ commit_free_(void *p)
#define state_free(val) \
FREE_AND_NULL(sr_state_t, state_free_, (val))
-/* Free a state that was allocated with state_new(). */
+/** Free a state that was allocated with state_new(). */
static void
state_free_(sr_state_t *state)
{
@@ -238,7 +238,7 @@ state_free_(sr_state_t *state)
tor_free(state);
}
-/* Allocate an sr_state_t object and returns it. If no <b>fname</b>, the
+/** Allocate an sr_state_t object and returns it. If no <b>fname</b>, the
* default file name is used. This function does NOT initialize the state
* timestamp, phase or shared random value. NULL is never returned. */
static sr_state_t *
@@ -257,7 +257,7 @@ state_new(const char *fname, time_t now)
return new_state;
}
-/* Set our global state pointer with the one given. */
+/** Set our global state pointer with the one given. */
static void
state_set(sr_state_t *state)
{
@@ -271,7 +271,7 @@ state_set(sr_state_t *state)
#define disk_state_free(val) \
FREE_AND_NULL(sr_disk_state_t, disk_state_free_, (val))
-/* Free an allocated disk state. */
+/** Free an allocated disk state. */
static void
disk_state_free_(sr_disk_state_t *state)
{
@@ -281,7 +281,7 @@ disk_state_free_(sr_disk_state_t *state)
config_free(get_srs_mgr(), state);
}
-/* Allocate a new disk state, initialize it and return it. */
+/** Allocate a new disk state, initialize it and return it. */
static sr_disk_state_t *
disk_state_new(time_t now)
{
@@ -297,7 +297,7 @@ disk_state_new(time_t now)
return new_state;
}
-/* Set our global disk state with the given state. */
+/** Set our global disk state with the given state. */
static void
disk_state_set(sr_disk_state_t *state)
{
@@ -308,7 +308,7 @@ disk_state_set(sr_disk_state_t *state)
sr_disk_state = state;
}
-/* Return -1 if the disk state is invalid (something in there that we can't or
+/** Return -1 if the disk state is invalid (something in there that we can't or
* shouldn't use). Return 0 if everything checks out. */
static int
disk_state_validate(const sr_disk_state_t *state)
@@ -343,7 +343,7 @@ disk_state_validate(const sr_disk_state_t *state)
return -1;
}
-/* Validate the disk state (NOP for now). */
+/** Validate the disk state (NOP for now). */
static int
disk_state_validate_cb(void *old_state, void *state, void *default_state,
int from_setconf, char **msg)
@@ -361,7 +361,7 @@ disk_state_validate_cb(void *old_state, void *state, void *default_state,
return 0;
}
-/* Parse the Commit line(s) in the disk state and translate them to the
+/** Parse the Commit line(s) in the disk state and translate them to the
* the memory state. Return 0 on success else -1 on error. */
static int
disk_state_parse_commits(sr_state_t *state,
@@ -416,7 +416,7 @@ disk_state_parse_commits(sr_state_t *state,
return -1;
}
-/* Parse a share random value line from the disk state and save it to dst
+/** Parse a share random value line from the disk state and save it to dst
* which is an allocated srv object. Return 0 on success else -1. */
static int
disk_state_parse_srv(const char *value, sr_srv_t *dst)
@@ -451,7 +451,7 @@ disk_state_parse_srv(const char *value, sr_srv_t *dst)
return ret;
}
-/* Parse both SharedRandCurrentValue and SharedRandPreviousValue line from
+/** Parse both SharedRandCurrentValue and SharedRandPreviousValue line from
* the state. Return 0 on success else -1. */
static int
disk_state_parse_sr_values(sr_state_t *state,
@@ -502,7 +502,7 @@ disk_state_parse_sr_values(sr_state_t *state,
return -1;
}
-/* Parse the given disk state and set a newly allocated state. On success,
+/** Parse the given disk state and set a newly allocated state. On success,
* return that state else NULL. */
static sr_state_t *
disk_state_parse(const sr_disk_state_t *new_disk_state)
@@ -536,7 +536,7 @@ disk_state_parse(const sr_disk_state_t *new_disk_state)
return NULL;
}
-/* From a valid commit object and an allocated config line, set the line's
+/** From a valid commit object and an allocated config line, set the line's
* value to the state string representation of a commit. */
static void
disk_state_put_commit_line(const sr_commit_t *commit, config_line_t *line)
@@ -563,7 +563,7 @@ disk_state_put_commit_line(const sr_commit_t *commit, config_line_t *line)
}
}
-/* From a valid srv object and an allocated config line, set the line's
+/** From a valid srv object and an allocated config line, set the line's
* value to the state string representation of a shared random value. */
static void
disk_state_put_srv_line(const sr_srv_t *srv, config_line_t *line)
@@ -581,7 +581,7 @@ disk_state_put_srv_line(const sr_srv_t *srv, config_line_t *line)
tor_asprintf(&line->value, "%" PRIu64 " %s", srv->num_reveals, encoded);
}
-/* Reset disk state that is free allocated memory and zeroed the object. */
+/** Reset disk state that is free allocated memory and zeroed the object. */
static void
disk_state_reset(void)
{
@@ -600,7 +600,7 @@ disk_state_reset(void)
sr_disk_state->TorVersion = tor_strdup(get_version());
}
-/* Update our disk state based on our global SR state. */
+/** Update our disk state based on our global SR state. */
static void
disk_state_update(void)
{
@@ -644,7 +644,7 @@ disk_state_update(void)
} DIGESTMAP_FOREACH_END;
}
-/* Load state from disk and put it into our disk state. If the state passes
+/** Load state from disk and put it into our disk state. If the state passes
* validation, our global state will be updated with it. Return 0 on
* success. On error, -EINVAL is returned if the state on disk did contained
* something malformed or is unreadable. -ENOENT is returned indicating that
@@ -662,7 +662,7 @@ disk_state_load_from_disk(void)
return ret;
}
-/* Helper for disk_state_load_from_disk(). */
+/** Helper for disk_state_load_from_disk(). */
STATIC int
disk_state_load_from_disk_impl(const char *fname)
{
@@ -724,7 +724,7 @@ disk_state_load_from_disk_impl(const char *fname)
return ret;
}
-/* Save the disk state to disk but before that update it from the current
+/** Save the disk state to disk but before that update it from the current
* state so we always have the latest. Return 0 on success else -1. */
static int
disk_state_save_to_disk(void)
@@ -768,7 +768,7 @@ disk_state_save_to_disk(void)
return ret;
}
-/* Reset our state to prepare for a new protocol run. Once this returns, all
+/** Reset our state to prepare for a new protocol run. Once this returns, all
* commits in the state will be removed and freed. */
STATIC void
reset_state_for_new_protocol_run(time_t valid_after)
@@ -789,7 +789,7 @@ reset_state_for_new_protocol_run(time_t valid_after)
sr_state_delete_commits();
}
-/* This is the first round of the new protocol run starting at
+/** This is the first round of the new protocol run starting at
* <b>valid_after</b>. Do the necessary housekeeping. */
STATIC void
new_protocol_run(time_t valid_after)
@@ -823,7 +823,7 @@ new_protocol_run(time_t valid_after)
}
}
-/* Return 1 iff the <b>next_phase</b> is a phase transition from the current
+/** Return 1 iff the <b>next_phase</b> is a phase transition from the current
* phase that is it's different. */
STATIC int
is_phase_transition(sr_phase_t next_phase)
@@ -831,7 +831,7 @@ is_phase_transition(sr_phase_t next_phase)
return sr_state->phase != next_phase;
}
-/* Helper function: return a commit using the RSA fingerprint of the
+/** Helper function: return a commit using the RSA fingerprint of the
* authority or NULL if no such commit is known. */
static sr_commit_t *
state_query_get_commit(const char *rsa_fpr)
@@ -840,7 +840,7 @@ state_query_get_commit(const char *rsa_fpr)
return digestmap_get(sr_state->commits, rsa_fpr);
}
-/* Helper function: This handles the GET state action using an
+/** Helper function: This handles the GET state action using an
* <b>obj_type</b> and <b>data</b> needed for the action. */
static void *
state_query_get_(sr_state_object_t obj_type, const void *data)
@@ -875,7 +875,7 @@ state_query_get_(sr_state_object_t obj_type, const void *data)
return obj;
}
-/* Helper function: This handles the PUT state action using an
+/** Helper function: This handles the PUT state action using an
* <b>obj_type</b> and <b>data</b> needed for the action.
* PUT frees the previous data before replacing it, if needed. */
static void
@@ -928,7 +928,7 @@ state_query_put_(sr_state_object_t obj_type, void *data)
}
}
-/* Helper function: This handles the DEL_ALL state action using an
+/** Helper function: This handles the DEL_ALL state action using an
* <b>obj_type</b> and <b>data</b> needed for the action. */
static void
state_query_del_all_(sr_state_object_t obj_type)
@@ -957,7 +957,7 @@ state_query_del_all_(sr_state_object_t obj_type)
}
}
-/* Helper function: This handles the DEL state action using an
+/** Helper function: This handles the DEL state action using an
* <b>obj_type</b> and <b>data</b> needed for the action. */
static void
state_query_del_(sr_state_object_t obj_type, void *data)
@@ -983,7 +983,7 @@ state_query_del_(sr_state_object_t obj_type, void *data)
}
}
-/* Query state using an <b>action</b> for an object type <b>obj_type</b>.
+/** Query state using an <b>action</b> for an object type <b>obj_type</b>.
* The <b>data</b> pointer needs to point to an object that the action needs
* to use and if anything is required to be returned, it is stored in
* <b>out</b>.
@@ -1025,7 +1025,7 @@ state_query(sr_state_action_t action, sr_state_object_t obj_type,
}
}
-/* Delete the current SRV value from the state freeing it and the value is set
+/** Delete the current SRV value from the state freeing it and the value is set
* to NULL meaning empty. */
STATIC void
state_del_current_srv(void)
@@ -1033,7 +1033,7 @@ state_del_current_srv(void)
state_query(SR_STATE_ACTION_DEL, SR_STATE_OBJ_CURSRV, NULL, NULL);
}
-/* Delete the previous SRV value from the state freeing it and the value is
+/** Delete the previous SRV value from the state freeing it and the value is
* set to NULL meaning empty. */
STATIC void
state_del_previous_srv(void)
@@ -1041,7 +1041,7 @@ state_del_previous_srv(void)
state_query(SR_STATE_ACTION_DEL, SR_STATE_OBJ_PREVSRV, NULL, NULL);
}
-/* Rotate SRV value by setting the previous SRV to the current SRV, and
+/** Rotate SRV value by setting the previous SRV to the current SRV, and
* clearing the current SRV. */
STATIC void
state_rotate_srv(void)
@@ -1054,7 +1054,7 @@ state_rotate_srv(void)
sr_state_set_current_srv(NULL);
}
-/* Set valid after time in the our state. */
+/** Set valid after time in the our state. */
void
sr_state_set_valid_after(time_t valid_after)
{
@@ -1062,7 +1062,7 @@ sr_state_set_valid_after(time_t valid_after)
(void *) &valid_after, NULL);
}
-/* Return the phase we are currently in according to our state. */
+/** Return the phase we are currently in according to our state. */
sr_phase_t
sr_state_get_phase(void)
{
@@ -1071,7 +1071,7 @@ sr_state_get_phase(void)
return *(sr_phase_t *) ptr;
}
-/* Return the previous SRV value from our state. Value CAN be NULL.
+/** Return the previous SRV value from our state. Value CAN be NULL.
* The state object owns the SRV, so the calling code should not free the SRV.
* Use sr_srv_dup() if you want to keep a copy of the SRV. */
const sr_srv_t *
@@ -1083,7 +1083,7 @@ sr_state_get_previous_srv(void)
return srv;
}
-/* Set the current SRV value from our state. Value CAN be NULL. The srv
+/** Set the current SRV value from our state. Value CAN be NULL. The srv
* object ownership is transferred to the state object. */
void
sr_state_set_previous_srv(const sr_srv_t *srv)
@@ -1092,7 +1092,7 @@ sr_state_set_previous_srv(const sr_srv_t *srv)
NULL);
}
-/* Return the current SRV value from our state. Value CAN be NULL.
+/** Return the current SRV value from our state. Value CAN be NULL.
* The state object owns the SRV, so the calling code should not free the SRV.
* Use sr_srv_dup() if you want to keep a copy of the SRV. */
const sr_srv_t *
@@ -1104,7 +1104,7 @@ sr_state_get_current_srv(void)
return srv;
}
-/* Set the current SRV value from our state. Value CAN be NULL. The srv
+/** Set the current SRV value from our state. Value CAN be NULL. The srv
* object ownership is transferred to the state object. */
void
sr_state_set_current_srv(const sr_srv_t *srv)
@@ -1113,7 +1113,7 @@ sr_state_set_current_srv(const sr_srv_t *srv)
NULL);
}
-/* Clean all the SRVs in our state. */
+/** Clean all the SRVs in our state. */
void
sr_state_clean_srvs(void)
{
@@ -1122,7 +1122,7 @@ sr_state_clean_srvs(void)
state_del_current_srv();
}
-/* Return a pointer to the commits map from our state. CANNOT be NULL. */
+/** Return a pointer to the commits map from our state. CANNOT be NULL. */
digestmap_t *
sr_state_get_commits(void)
{
@@ -1133,7 +1133,7 @@ sr_state_get_commits(void)
return commits;
}
-/* Update the current SR state as needed for the upcoming voting round at
+/** Update the current SR state as needed for the upcoming voting round at
* <b>valid_after</b>. */
void
sr_state_update(time_t valid_after)
@@ -1197,7 +1197,7 @@ sr_state_update(time_t valid_after)
}
}
-/* Return commit object from the given authority digest <b>rsa_identity</b>.
+/** Return commit object from the given authority digest <b>rsa_identity</b>.
* Return NULL if not found. */
sr_commit_t *
sr_state_get_commit(const char *rsa_identity)
@@ -1211,7 +1211,7 @@ sr_state_get_commit(const char *rsa_identity)
return commit;
}
-/* Add <b>commit</b> to the permanent state. The commit object ownership is
+/** Add <b>commit</b> to the permanent state. The commit object ownership is
* transferred to the state so the caller MUST not free it. */
void
sr_state_add_commit(sr_commit_t *commit)
@@ -1226,14 +1226,14 @@ sr_state_add_commit(sr_commit_t *commit)
sr_commit_get_rsa_fpr(commit));
}
-/* Remove all commits from our state. */
+/** Remove all commits from our state. */
void
sr_state_delete_commits(void)
{
state_query(SR_STATE_ACTION_DEL_ALL, SR_STATE_OBJ_COMMIT, NULL, NULL);
}
-/* Copy the reveal information from <b>commit</b> into <b>saved_commit</b>.
+/** Copy the reveal information from <b>commit</b> into <b>saved_commit</b>.
* This <b>saved_commit</b> MUST come from our current SR state. Once modified,
* the disk state is updated. */
void
@@ -1254,7 +1254,7 @@ sr_state_copy_reveal_info(sr_commit_t *saved_commit, const sr_commit_t *commit)
sr_commit_get_rsa_fpr(saved_commit));
}
-/* Set the fresh SRV flag from our state. This doesn't need to trigger a
+/** Set the fresh SRV flag from our state. This doesn't need to trigger a
* disk state synchronization so we directly change the state. */
void
sr_state_set_fresh_srv(void)
@@ -1262,7 +1262,7 @@ sr_state_set_fresh_srv(void)
sr_state->is_srv_fresh = 1;
}
-/* Unset the fresh SRV flag from our state. This doesn't need to trigger a
+/** Unset the fresh SRV flag from our state. This doesn't need to trigger a
* disk state synchronization so we directly change the state. */
void
sr_state_unset_fresh_srv(void)
@@ -1270,14 +1270,14 @@ sr_state_unset_fresh_srv(void)
sr_state->is_srv_fresh = 0;
}
-/* Return the value of the fresh SRV flag. */
+/** Return the value of the fresh SRV flag. */
unsigned int
sr_state_srv_is_fresh(void)
{
return sr_state->is_srv_fresh;
}
-/* Cleanup and free our disk and memory state. */
+/** Cleanup and free our disk and memory state. */
void
sr_state_free_all(void)
{
@@ -1289,7 +1289,7 @@ sr_state_free_all(void)
config_mgr_free(shared_random_state_mgr);
}
-/* Save our current state in memory to disk. */
+/** Save our current state in memory to disk. */
void
sr_state_save(void)
{
@@ -1297,7 +1297,7 @@ sr_state_save(void)
state_query(SR_STATE_ACTION_SAVE, 0, NULL, NULL);
}
-/* Return 1 iff the state has been initialized that is it exists in memory.
+/** Return 1 iff the state has been initialized that is it exists in memory.
* Return 0 otherwise. */
int
sr_state_is_initialized(void)
@@ -1305,7 +1305,7 @@ sr_state_is_initialized(void)
return sr_state == NULL ? 0 : 1;
}
-/* Initialize the disk and memory state.
+/** Initialize the disk and memory state.
*
* If save_to_disk is set to 1, the state is immediately saved to disk after
* creation else it's not thus only kept in memory.
@@ -1368,7 +1368,7 @@ sr_state_init(int save_to_disk, int read_from_disk)
#ifdef TOR_UNIT_TESTS
-/* Set the current phase of the protocol. Used only by unit tests. */
+/** Set the current phase of the protocol. Used only by unit tests. */
void
set_sr_phase(sr_phase_t phase)
{
@@ -1377,7 +1377,7 @@ set_sr_phase(sr_phase_t phase)
sr_state->phase = phase;
}
-/* Get the SR state. Used only by unit tests */
+/** Get the SR state. Used only by unit tests */
sr_state_t *
get_sr_state(void)
{
diff --git a/src/feature/dirauth/shared_random_state.h b/src/feature/dirauth/shared_random_state.h
index 08f999f9d..f6bcddd08 100644
--- a/src/feature/dirauth/shared_random_state.h
+++ b/src/feature/dirauth/shared_random_state.h
@@ -6,7 +6,7 @@
#include "feature/dirauth/shared_random.h"
-/* Action that can be performed on the state for any objects. */
+/** Action that can be performed on the state for any objects. */
typedef enum {
SR_STATE_ACTION_GET = 1,
SR_STATE_ACTION_PUT = 2,
@@ -15,52 +15,53 @@ typedef enum {
SR_STATE_ACTION_SAVE = 5,
} sr_state_action_t;
-/* Object in the state that can be queried through the state API. */
+/** Object in the state that can be queried through the state API. */
typedef enum {
- /* Will return a single commit using an authority identity key. */
+ /** Will return a single commit using an authority identity key. */
SR_STATE_OBJ_COMMIT,
- /* Returns the entire list of commits from the state. */
+ /** Returns the entire list of commits from the state. */
SR_STATE_OBJ_COMMITS,
- /* Return the current SRV object pointer. */
+ /** Return the current SRV object pointer. */
SR_STATE_OBJ_CURSRV,
- /* Return the previous SRV object pointer. */
+ /** Return the previous SRV object pointer. */
SR_STATE_OBJ_PREVSRV,
- /* Return the phase. */
+ /** Return the phase. */
SR_STATE_OBJ_PHASE,
- /* Get or Put the valid after time. */
+ /** Get or Put the valid after time. */
SR_STATE_OBJ_VALID_AFTER,
} sr_state_object_t;
-/* State of the protocol. It's also saved on disk in fname. This data
+/** State of the protocol. It's also saved on disk in fname. This data
* structure MUST be synchronized at all time with the one on disk. */
typedef struct sr_state_t {
- /* Filename of the state file on disk. */
+ /** Filename of the state file on disk. */
char *fname;
- /* Version of the protocol. */
+ /** Version of the protocol. */
uint32_t version;
- /* The valid-after of the voting period we have prepared the state for. */
+ /** The valid-after of the voting period we have prepared the state for. */
time_t valid_after;
- /* Until when is this state valid? */
+ /** Until when is this state valid? */
time_t valid_until;
- /* Protocol phase. */
+ /** Protocol phase. */
sr_phase_t phase;
- /* Number of runs completed. */
+ /** Number of runs completed. */
uint64_t n_protocol_runs;
- /* The number of commitment rounds we've performed in this protocol run. */
+ /** The number of commitment rounds we've performed in this protocol run. */
unsigned int n_commit_rounds;
- /* The number of reveal rounds we've performed in this protocol run. */
+ /** The number of reveal rounds we've performed in this protocol run. */
unsigned int n_reveal_rounds;
- /* A map of all the received commitments for this protocol run. This is
+ /** A map of all the received commitments for this protocol run. This is
* indexed by authority RSA identity digest. */
digestmap_t *commits;
- /* Current and previous shared random value. */
+ /** Current shared random value. */
sr_srv_t *previous_srv;
+ /** Previous shared random value. */
sr_srv_t *current_srv;
- /* Indicate if the state contains an SRV that was _just_ generated. This is
+ /** Indicate if the state contains an SRV that was _just_ generated. This is
* used during voting so that we know whether to use the super majority rule
* or not when deciding on keeping it for the consensus. It is _always_ set
* to 0 post consensus.
@@ -73,22 +74,22 @@ typedef struct sr_state_t {
unsigned int is_srv_fresh:1;
} sr_state_t;
-/* Persistent state of the protocol, as saved to disk. */
+/** Persistent state of the protocol, as saved to disk. */
typedef struct sr_disk_state_t {
uint32_t magic_;
- /* Version of the protocol. */
+ /** Version of the protocol. */
int Version;
- /* Version of our running tor. */
+ /** Version of our running tor. */
char *TorVersion;
- /* Creation time of this state */
+ /** Creation time of this state */
time_t ValidAfter;
- /* State valid until? */
+ /** State valid until? */
time_t ValidUntil;
- /* All commits seen that are valid. */
+ /** All commits seen that are valid. */
struct config_line_t *Commit;
- /* Previous and current shared random value. */
+ /** Previous and current shared random value. */
struct config_line_t *SharedRandValues;
- /* Extra Lines for configuration we might not know. */
+ /** Extra Lines for configuration we might not know. */
struct config_line_t *ExtraLines;
} sr_disk_state_t;
1
0
commit a2e8d340105281a2b7bbfe422a17f72e402ee1a8
Author: Antonela <hola(a)antonela.me>
Date: Wed Oct 16 12:36:28 2019 -0300
remove huge footer padding
breaking from newsletter.scss
---
assets/static/bootstrap.css | 18 +++++++++---------
assets/static/bootstrap.css.map | 2 +-
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/assets/static/bootstrap.css b/assets/static/bootstrap.css
index 0828f28..cb8a707 100644
--- a/assets/static/bootstrap.css
+++ b/assets/static/bootstrap.css
@@ -8882,7 +8882,7 @@ a.text-dark:focus, a.text-dark:hover {
margin-bottom: 200px;
}
-#topics h5 {
+#topics footer h5 {
padding-top: 7rem;
}
@@ -9016,7 +9016,7 @@ footer {
margin-bottom: 200px;
}
-#topics h5 {
+#topics footer h5 {
padding-top: 7rem;
}
@@ -9285,19 +9285,19 @@ main {
left: 32px;
}
-#https-switch:checked ~ #https {
+#https-switch:checked ~ #https-content {
display: inline;
}
-#https-switch:checked ~ #http {
+#https-switch:checked ~ #http-content {
display: none;
}
-#tor-switch:checked ~ #http {
+#tor-switch:checked ~ #http-content {
display: none;
}
-#tor-switch:checked ~ #tor {
+#tor-switch:checked ~ #tor-content {
display: inline;
}
@@ -9309,15 +9309,15 @@ main {
display: none;
}
-#https {
+#https-content {
display: none;
}
-#tor {
+#tor-content {
display: none;
}
-#https-tor {
+#https-tor-content {
display: none;
}
diff --git a/assets/static/bootstrap.css.map b/assets/static/bootstrap.css.map
index 75350bc..a5758df 100644
--- a/assets/static/bootstrap.css.map
+++ b/assets/static/bootstrap.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["../scss/bootstrap.scss","../scss/_icons.scss","../scss/_illos.scss","../scss/_root.scss","../scss/_print.scss","../scss/_reboot.scss","../scss/_tor-variables.scss","../scss/_variables.scss","../scss/mixins/_hover.scss","../scss/_type.scss","../scss/mixins/_lists.scss","../scss/_images.scss","../scss/mixins/_image.scss","../scss/mixins/_border-radius.scss","../scss/mixins/_transition.scss","../scss/_code.scss","../scss/_grid.scss","../scss/mixins/_grid.scss","../scss/mixins/_breakpoints.scss","../scss/mixins/_grid-framework.scss","../scss/_tables.scss","../scss/mixins/_table-row.scss","../scss/_forms.scss","../scss/mixins/_forms.scss","../scss/_buttons.scss","../scss/mixins/_buttons.scss","../scss/mixins/_gradients.scss","../scss/_transitions.scss","../scss/_dropdown.scss","../scss/mixins/_caret.scss","../scss/mixins/_nav-divider.scss","../scss/_button-group.scss","../scss/_input-group.scss","../scss/_custom-forms.scss","../scss/_nav.scss","..
/scss/_navbar.scss","../scss/_card.scss","../scss/_breadcrumb.scss","../scss/_pagination.scss","../scss/mixins/_pagination.scss","../scss/_badge.scss","../scss/mixins/_badge.scss","../scss/_jumbotron.scss","../scss/_alert.scss","../scss/mixins/_alert.scss","../scss/_progress.scss","../scss/_media.scss","../scss/_list-group.scss","../scss/mixins/_list-group.scss","../scss/_close.scss","../scss/_modal.scss","../scss/_tooltip.scss","../scss/mixins/_reset-text.scss","../scss/_popover.scss","../scss/_carousel.scss","../scss/utilities/_align.scss","../scss/mixins/_background-variant.scss","../scss/utilities/_background.scss","../scss/utilities/_borders.scss","../scss/mixins/_clearfix.scss","../scss/utilities/_display.scss","../scss/utilities/_embed.scss","../scss/utilities/_flex.scss","../scss/utilities/_float.scss","../scss/mixins/_float.scss","../scss/utilities/_position.scss","../scss/utilities/_screenreaders.scss","../scss/mixins/_screen-reader.scss","../scss/utilities/_sizing.scss","
../scss/utilities/_spacing.scss","../scss/utilities/_text.scss","../scss/mixins/_text-truncate.scss","../scss/mixins/_text-emphasis.scss","../scss/mixins/_text-hide.scss","../scss/utilities/_visibility.scss","../scss/mixins/_visibility.scss","../scss/_sidebar.scss","../scss/_component-examples.scss","../scss/_newsletter.scss","../scss/_portal.scss","../scss/_tpo.scss","../scss/_tor.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;E
ACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AC3OF;EACE;EACA;EACA;EACA;;AACA;EACE;;;AAKF;EACE;;;ACZJ;EAGI;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAKF;EACA;;;ACNA;EACE;AAAA;AAAA;IAKE;IAEA;;;EAGF;AAAA;IAEE;;;EAQF;IACE;;;EAcF;IACE;;;EAEF;AAAA;IAEE;IACA;;;EAQF;IACE;;;EAGF;AAAA;IAEE;;;EAGF;AAAA;AAAA;IAGE;IACA;;;EAGF;AAAA;IAEE;;;EAMF;IACE;;;EAEF;IACE;;;EAGF;IACE;;EAEA;AAAA;IAEE;;;EAIF;AAAA;IAEE;;;ACnFR;AAAA;AAAA;EAGE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAKA;EACE;;AAMJ;EACE;;;AAWF;EACE;EACA,aCLsB;EDMtB,WEoK4B;EFnK5B,aEwK4B;EFvK5B,aE2K4B;EF1K5B,OCpCS;EDqCT;EACA,kBC3DY;;;ADmEd;EACE;;;AASF;EACE;EACA
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
EACA,kBAjC+I;EAqC/I,cArCyL;EA2CvL;;;ADKJ;EC/CA;ECAE,kBnBoEW;EkBlEb,clBkEa;;AC/DX;EiBCA;ECNA,kBDD2D;EAS3D,cATqG;;AAYvG;EAMI;;AAKJ;EAEE,kBlB4CW;EkB3CX,clB2CW;;AkBxCb;EAGE;EACA,kBAjC+I;EAqC/I,cArCyL;EA2CvL;;;ADKJ;EC/CA;ECAE,kBnBoEW;EkBlEb,clBkEa;;AC/DX;EiBCA;ECNA,kBDD2D;EAS3D,cATqG;;AAYvG;EAMI;;AAKJ;EAEE,kBlB4CW;EkB3CX,clB2CW;;AkBxCb;EAGE;EACA,kBAjC+I;EAqC/I,cArCyL;EA2CvL;;;ADKJ;EC/CA;ECAE,kBnBoEW;EkBlEb,clBkEa;;AC/DX;EiBCA;ECNA,kBDD2D;EAS3D,cATqG;;AAYvG;EAMI;;AAKJ;EAEE,kBlB4CW;EkB3CX,clB2CW;;AkBxCb;EAGE;EACA,kBAjC+I;EAqC/I,cArCyL;EA2CvL;;;ADWJ;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;A
AGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBlCO;EmBmCP,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnBrDO;EmBsDP,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADTJ;EACE,ajByJ4B;EiBxJ5B,OjB+D0B;EiB9D1B;;A
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
A,wBN6L0B;EM5L1B,yBN4L0B;;A6B5K1B;EvBHA,4BN+K0B;EM9K1B,2BN8K0B;;;A6BtK9B;EAGE;EACA,S7BsjBkC;;;A6BnjBpC;EACE,e7BijBkC;;;A6B9iBpC;EACE;EACA;;;AAGF;EACE;;;A5BvCE;E4B4CA;;AAGF;EACE,a7BgiBgC;;;A6BxhBpC;EACE;EACA;EACA,kB7B0hBkC;E6BzhBlC;;AAEA;EvBrEE,euBsEuB;;AAIvB;EACE;;;AAKN;EACE;EACA,kB7B0gBkC;E6BzgBlC;;AAEA;EvBrFE,euBsFuB;;;AAS3B;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA,S7B6ekC;;;A6B1epC;EACE;EvBtHE,eN2lBgC;;;A6BhepC;EACE;EvBtHE,wBNqlBgC;EMplBhC,yBNolBgC;;;A6B3dpC;EACE;EvB7GE,4BNukBgC;EMtkBhC,2BNskBgC;;;A6BndpC;EACE;EACA;;AAEA;EACE,e7BodgC;;AW7iBhC;EkBoFJ;IASI;IACA;IACA;;EAEA;IACE;IAEA;IACA;IACA,c7Buc8B;I6Btc9B;IACA,a7Bqc8B;;;;A6B3bpC;EACE;EACA;;AAEA;EACE,e7BsbgC;;AW7iBhC;EkBkHJ;IASI;;EAEA;IAEE;IACA;;EAEA;IACE;IACA;;EAKA;IvBhLJ,yBuBiLmC;IvBhLnC,4BuBgLmC;;EAE7B;IACE;;EAEF;IACE;;EAIJ;IvB7KJ,wBuB8KkC;IvB7KlC,2BuB6KkC;;EAE5B;IACE;;EAEF;IACE;;EAIJ;IvBnNJ,eNmM0B;;E6BmBpB;IvBhNN,wBN6L0B;IM5L1B,yBN4L0B;;E6BsBpB;IvBrMN,4BN+K0B;IM9K1B,2BN8K0B;;E6B2BtB;IACE;;EAEA;
AAAA;IAEE;;;;AAcV;EACE,e7BoWgC;;AWliBhC;EkB4LJ;IAMI,c7B8WgC;I6B7WhC,Y7B8WgC;;E6B5WhC;IACE;IACA;;;;AC/PN;EACE;EACA;EACA;EACA,e9BswBkC;E8BrwBlC;EACA,kB/BaS;EOfP,eNmM0B;;;A8B3L5B;EACE;EACA,e9B0vBgC;E8BzvBhC,c9ByvBgC;E8BxvBhC,O/BOO;E+BNP;;AASF;EACE;;AAGF;EACE;;AAGF;EACE,O/BZO;;;AgCvBX;EACE;E5BGA;EACA;EGDE,eNmM0B;;;A+B/L1B;EACE;EzBsBF,wBNwK0B;EMvK1B,2BNuK0B;;A+BzL1B;EzBGA,yBNsL0B;EMrL1B,4BNqL0B;;A+BpL5B;EACE;EACA,OhChBU;EgCiBV,kB/BojBgC;E+BnjBhC,c/BojBgC;;A+BjjBlC;EACE,OhCJO;EgCKP;EACA,kBhCxBU;EgCyBV,c/BijBgC;;;A+B7iBpC;EACE;EACA;EACA;EACA;EACA,a/BuhBkC;E+BthBlC,O/BmG0B;E+BlG1B,kBhCpCY;EgCqCZ;;A9BnBE;E8BsBA,O/BgGwB;E+B/FxB;EACA,kBhC5BO;EgC6BP,c/BuhBgC;;;AgCpkBlC;EACE;EACA,WhC2N0B;EgC1N1B,ahC2L0B;;AgCtLxB;E1BoBF,wBNyK0B;EMxK1B,2BNwK0B;;AgCxLxB;E1BCF,yBNuL0B;EMtL1B,4BNsL0B;;;AgCrM5B;EACE;EACA,WhC4N0B;EgC3N1B,ahC4L0B;;AgCvLxB;E1BoBF,wBN0K0B;EMzK1B,2BNyK0B;;AgCzLxB;E1BCF,yBNwL0B;EMvL1B,4BNuL0B;;;AiCpM9B;EACE;EACA;EACA,WjC+oBkC;EiC9oBlC,ajC4N4B;EiC3N5B;EACA;EACA;EACA;E3BTE,eNmM0B;;AiCtL5B;EAC
E;;;AAKJ;EACE;EACA;;;AAOF;EACE,ejC4nBkC;EiC3nBlC,cjC2nBkC;EMzpBhC,eN4pBgC;;;AiCrnBlC;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ACRN;EACE;EACA,enCklBkC;EmCjlBlC,kBpCgBS;EOfP,eNoM0B;;AWhJ1B;EwBxDJ;IAOI;;;;AAIJ;EACE;EACA;E7BTE,e6BUqB;;;ACVzB;EACE;EACA;EACA,epCisBkC;EoChsBlC;E9BJE,eNmM0B;;;AoC1L9B;EAEE;;;AAIF;EACE,apCiN4B;;;AoCvM5B;EACE;EACA;EACA;EACA;EACA;;;AAUF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;AC
zCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ACVJ;EACE;IAAO;;EACP;IAAK;;;AAGP;EACE;EACA,QtCysBkC;EsCxsBlC;EACA,WtCwsBkC;EsCvsBlC,kBvCSS;EOfP,eNmM0B;;;AsCzL9B;EACE;EACA;EACA;EACA,OvCbY;EuCcZ,kBtCmsBkC;;;AsChsBpC;EnBqBE;EmBnBA;;;AAGF;EACE;;;AC5BF;EACE;EACA;;;AAGF;EACE;;;ACFF;EACE;EACA;EAGA;EACA;;;AASF;EACE;EACA,OzCGS;EyCFT;;AvCCE;EuCGA,OzCFO;EyCGP;EACA,kBzCVO;;AyCaT;EACE,OzCNO;EyCOP,kBzCdO;;;AyCuBX;EACE;EACA;EACA;EAEA;EACA,kBzC3CY;EyC4CZ;;AAEA;ElCzCE,wBN6L0B;EM5L1B,yBN4L0B;;AwChJ5B;EACE;ElChCA,4BN+K0B;EM9K1B,2BN8K0B;;AChL1B;EuCsCA;;AAGF;EAEE,OzC3CO;EyC4CP,kBzC9DU;;AyCkEZ;EACE;EACA,OzCpEU;EyCqEV,kBxCkI0B;EwCjI1B,cxCiI0B;;;AwCtH5B;EACE;EACA;EACA;;AAIA;EACE;;AAKF;EACE;;;ACjGJ;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC
;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2G
uC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AEhH1E;EACE;EACA,W1CwyBkC;E0CvyBlC,a1CkO4B;E0CjO5B;EACA,O3CsBS;E2CrBT,a1CuyBkC;E0CtyBlC;;AzCgBE;EyCbA,O3CiBO;E2ChBP;EACA;;;AAUJ;EACE;EACA;EACA;EACA;;;ACnBF;EACE;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA,S3CgfkC;E2C/elC;EACA;EAGA;;AAMA;EpCxBI,YoCyBF;EACA;;AAEF;EAAuB;;;AAEzB;EACE;EACA;;;AAIF;EACE;EACA;EACA,Q3C4nBkC;E2C1nBlC;;;AAIF;EACE;EACA;EACA;EAEA;EACA,kB5CnDY;E4CoDZ;EACA;ErCtDE,eNoM0B;E2C1I5B;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA,S3CybkC;E2CxblC,kB5C9CS;;A4CiDT;EAAS;;AACT;EAAS,S3CumByB;;;A2ClmBpC;EACE;EACA;EACA;EACA,S3CmmBkC;E2ClmBlC;ErC7EE,wBN8L0B;EM7L1B,yBN6L0B;;A2C9G5B;EACE,S3C8lBgC;E2C5lBhC;;;AAKJ;EACE;EACA,a3CoI4B;;;A2C/H9B;EACE;EAGA;EACA,S3CwjBkC;;;A2CpjBpC;EACE;EACA;EACA;EACA,S3CgjBkC;E2C/iBlC;;AAGA;EAAuB;;AACvB;EAAsB;;;AAIxB;EACE;EACA;EACA;EACA;EACA;;;AhC5EE;EgCkFF;IACE,W3CijBgC;I2ChjBhC;;;EAOF;IAAY,W3C0iBsB;;;AWroBhC;EgC+FF;IAAY,W3CoiBsB;;;A4C1rBpC;EACE;EACA,S5CigBkC
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
;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EACnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;AnDSF;EmD7CI;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE
;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EACnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;AnDSF;EmD7
CI;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EA
CnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;AnDSF;EmD7CI;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;A
AAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EACnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;ACvCN;EAAiB;;;AACjB;EAAiB;;;AACjB;ECNE;EACA;EACA;;;ADYE;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;ApDoCxB;EoDtCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;ApDoCxB;EoDtCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;ApDoCxB;EoDtCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;ApDoCxB;EoDtCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;AAM5B;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AAInB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AAItB;EAAc;;;AElCZ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AFmCN;EAAc;;;AAId;EG/CE;EACA;EACA;EACA;EACA;;;ACFF;ECCE;;;ADGF;ECHE;;;ACCF;EAOE;EACA;EACA;EACA;;AATA;EADF;IAEI;IACA;IACA;IACA;;;;AAQJ;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;;AAKN;EACE;;AAEA;EACE;EACA;EACA;;AAEA;EACE,OtEhCI;EsEiCJ;;;AAS
N;EACE;EAEA;;A1DEE;E0DLJ;IAYI;;EANA;IANJ;MAOM;MACA;MACA;MACA;;;;A1DLF;E0DLJ;IAgBI;;;;AAIJ;EACE;EACA;EACA;EACA;;A1DnBE;E0DsBA;IAPJ;MAQM;MACA;;;;A1DxBF;E0DeJ;IAeI;;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE,ctEtDe;EsEuDf;;;AAIJ;EACE;EACA,OtE/ES;;;AsEkFX;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAKF;EACE;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;;;AAMN;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;;;AC5JE;AAAA;EAEE;EACA;EACA;EACA;;AAIJ;EACE;;AAGF;AAAA;AAAA;EAGE;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;E5DpCA;EACA;EACA;EACA;EACA;;;A4DoCF;E5DtBE;EACA;EACA;EACA;;;A4DuBF;E5DnBE;EAIA;EACA;EACA;EACA;;ACmBE;E2DPJ;I5DRE;IAIA;;;ACWE;E2DPJ;I5DRE;IAIA;;;;A4DgBF;E5D/BE;EAIA;EACA;EACA;EACA;;ACmBE;E2DKJ;I5DpBE;IAIA;;;ACWE;E2DKJ;I5DpBE;IAIA;;;;A4DiCF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAQF;EACE;EACA;EACA;EACA;EACA;EACA;;AlBzHA;EACE;EACA;EACA;;AzCoDA;E2D4DJ;IAUI;IACA;IACA;IA
CA;IACA;;;AAGF;AAAA;EAEE;;AAGF;EACE;;AAGF;EACE;EACA;;A3DxFA;E2DsFF;IAKI;;;AAKF;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;EAKE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;;AAOA;EACE;EACA;;AAEF;EACE;EACA;;AAEF;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;;;AAKJ;EACE;;;AAKA;EACE;;;AAMF;EACE;EACA;;AAEF;EACE;;;AAKJ;AAAA;EAEE;;;AAEF;EACE;;;AAEF;EACE;;;AAIF;EACE;;;AAKA;AAAA;EAEE;EACA;;AAEF;EACE;EACA;;A3DvMA;E2D2MA;AAAA;IAEE;;EAEF;IACE;;;;AAMN;EACE;EACA;;;AAIF;EACE;;AAEA;AAAA;EAEE;;;AAIJ;EACE;;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;;;AAIF;EACE;;AAEA;EACE;EACA;;;AAKF;AAAA;EACE;;;AAKF;AAAA;EACE;;;AAKJ;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;;AAKF;AAAA;EACE;;;AAKF;AAAA;EACE;;;AAKJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAQJ;EACE;EACA;EACA;EACA;EACA;;A3DhWE;E2D2VJ;IAQI;;;;AAIJ;EACE;EACA;;A3DzWE;E2DuWJ;IAKI;IACA;;;;AAKF;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA,OvEzZO;;;AwE1BX;AAAA;AA
AA;AAIA;EACE;EACA;;;AAEF;EACI;EACA;EACA;;;AAEJ;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;A5DkBE;E4DdD;IACE;;;EAEF;IACI;IACA;IACA;;;AC7DP;AAAA;AAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA,axEmN4B;;;AwEhN9B;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE,azEsBsB;EyErBtB;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACI;EACA;EACA;;;AAEJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;A7D/CE;E6DmDD;IACE;;;EAEF;IACI;IACA;IACA;;;AC9HP;AAAA;AAAA;AAIA;EACI;EACA;EACA;;;AAGJ;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;AACA;EACE;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EAC
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","file":"bootst
rap.css"}
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["../scss/bootstrap.scss","../scss/_icons.scss","../scss/_illos.scss","../scss/_root.scss","../scss/_print.scss","../scss/_reboot.scss","../scss/_tor-variables.scss","../scss/_variables.scss","../scss/mixins/_hover.scss","../scss/_type.scss","../scss/mixins/_lists.scss","../scss/_images.scss","../scss/mixins/_image.scss","../scss/mixins/_border-radius.scss","../scss/mixins/_transition.scss","../scss/_code.scss","../scss/_grid.scss","../scss/mixins/_grid.scss","../scss/mixins/_breakpoints.scss","../scss/mixins/_grid-framework.scss","../scss/_tables.scss","../scss/mixins/_table-row.scss","../scss/_forms.scss","../scss/mixins/_forms.scss","../scss/_buttons.scss","../scss/mixins/_buttons.scss","../scss/mixins/_gradients.scss","../scss/_transitions.scss","../scss/_dropdown.scss","../scss/mixins/_caret.scss","../scss/mixins/_nav-divider.scss","../scss/_button-group.scss","../scss/_input-group.scss","../scss/_custom-forms.scss","../scss/_nav.scss","..
/scss/_navbar.scss","../scss/_card.scss","../scss/_breadcrumb.scss","../scss/_pagination.scss","../scss/mixins/_pagination.scss","../scss/_badge.scss","../scss/mixins/_badge.scss","../scss/_jumbotron.scss","../scss/_alert.scss","../scss/mixins/_alert.scss","../scss/_progress.scss","../scss/_media.scss","../scss/_list-group.scss","../scss/mixins/_list-group.scss","../scss/_close.scss","../scss/_modal.scss","../scss/_tooltip.scss","../scss/mixins/_reset-text.scss","../scss/_popover.scss","../scss/_carousel.scss","../scss/utilities/_align.scss","../scss/mixins/_background-variant.scss","../scss/utilities/_background.scss","../scss/utilities/_borders.scss","../scss/mixins/_clearfix.scss","../scss/utilities/_display.scss","../scss/utilities/_embed.scss","../scss/utilities/_flex.scss","../scss/utilities/_float.scss","../scss/mixins/_float.scss","../scss/utilities/_position.scss","../scss/utilities/_screenreaders.scss","../scss/mixins/_screen-reader.scss","../scss/utilities/_sizing.scss","
../scss/utilities/_spacing.scss","../scss/utilities/_text.scss","../scss/mixins/_text-truncate.scss","../scss/mixins/_text-emphasis.scss","../scss/mixins/_text-hide.scss","../scss/utilities/_visibility.scss","../scss/mixins/_visibility.scss","../scss/_sidebar.scss","../scss/_component-examples.scss","../scss/_newsletter.scss","../scss/_portal.scss","../scss/_tpo.scss","../scss/_tor.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;E
ACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AC3OF;EACE;EACA;EACA;EACA;;AACA;EACE;;;AAKF;EACE;;;ACZJ;EAGI;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAKF;EACA;;;ACNA;EACE;AAAA;AAAA;IAKE;IAEA;;;EAGF;AAAA;IAEE;;;EAQF;IACE;;;EAcF;IACE;;;EAEF;AAAA;IAEE;IACA;;;EAQF;IACE;;;EAGF;AAAA;IAEE;;;EAGF;AAAA;AAAA;IAGE;IACA;;;EAGF;AAAA;IAEE;;;EAMF;IACE;;;EAEF;IACE;;;EAGF;IACE;;EAEA;AAAA;IAEE;;;EAIF;AAAA;IAEE;;;ACnFR;AAAA;AAAA;EAGE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAKA;EACE;;AAMJ;EACE;;;AAWF;EACE;EACA,aCLsB;EDMtB,WEoK4B;EFnK5B,aEwK4B;EFvK5B,aE2K4B;EF1K5B,OCpCS;EDqCT;EACA,kBC3DY;;;ADmEd;EACE;;;AASF;EACE;EACA
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
EACA,kBAjC+I;EAqC/I,cArCyL;EA2CvL;;;ADKJ;EC/CA;ECAE,kBnBoEW;EkBlEb,clBkEa;;AC/DX;EiBCA;ECNA,kBDD2D;EAS3D,cATqG;;AAYvG;EAMI;;AAKJ;EAEE,kBlB4CW;EkB3CX,clB2CW;;AkBxCb;EAGE;EACA,kBAjC+I;EAqC/I,cArCyL;EA2CvL;;;ADKJ;EC/CA;ECAE,kBnBoEW;EkBlEb,clBkEa;;AC/DX;EiBCA;ECNA,kBDD2D;EAS3D,cATqG;;AAYvG;EAMI;;AAKJ;EAEE,kBlB4CW;EkB3CX,clB2CW;;AkBxCb;EAGE;EACA,kBAjC+I;EAqC/I,cArCyL;EA2CvL;;;ADKJ;EC/CA;ECAE,kBnBoEW;EkBlEb,clBkEa;;AC/DX;EiBCA;ECNA,kBDD2D;EAS3D,cATqG;;AAYvG;EAMI;;AAKJ;EAEE,kBlB4CW;EkB3CX,clB2CW;;AkBxCb;EAGE;EACA,kBAjC+I;EAqC/I,cArCyL;EA2CvL;;;ADWJ;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;A
AGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBlCO;EmBmCP,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnBrDO;EmBsDP,kBlBNW;EkBOX,clBPW;EkBSX;;;ADxBF;ECLA,OlBoBa;EkBnBb;EACA;EACA,clBiBa;;AC/DX;EiBiDA,OnBvDU;EmBwDV,kBlBaW;EkBZX,clBYW;;AkBTb;EAEE;;AAGF;EAEE,OlBEW;EkBDX;;AAGF;EAGE,OnB1EU;EmB2EV,kBlBNW;EkBOX,clBPW;EkBSX;;;ADTJ;EACE,ajByJ4B;EiBxJ5B,OjB+D0B;EiB9D1B;;A
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
A,wBN6L0B;EM5L1B,yBN4L0B;;A6B5K1B;EvBHA,4BN+K0B;EM9K1B,2BN8K0B;;;A6BtK9B;EAGE;EACA,S7BsjBkC;;;A6BnjBpC;EACE,e7BijBkC;;;A6B9iBpC;EACE;EACA;;;AAGF;EACE;;;A5BvCE;E4B4CA;;AAGF;EACE,a7BgiBgC;;;A6BxhBpC;EACE;EACA;EACA,kB7B0hBkC;E6BzhBlC;;AAEA;EvBrEE,euBsEuB;;AAIvB;EACE;;;AAKN;EACE;EACA,kB7B0gBkC;E6BzgBlC;;AAEA;EvBrFE,euBsFuB;;;AAS3B;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA,S7B6ekC;;;A6B1epC;EACE;EvBtHE,eN2lBgC;;;A6BhepC;EACE;EvBtHE,wBNqlBgC;EMplBhC,yBNolBgC;;;A6B3dpC;EACE;EvB7GE,4BNukBgC;EMtkBhC,2BNskBgC;;;A6BndpC;EACE;EACA;;AAEA;EACE,e7BodgC;;AW7iBhC;EkBoFJ;IASI;IACA;IACA;;EAEA;IACE;IAEA;IACA;IACA,c7Buc8B;I6Btc9B;IACA,a7Bqc8B;;;;A6B3bpC;EACE;EACA;;AAEA;EACE,e7BsbgC;;AW7iBhC;EkBkHJ;IASI;;EAEA;IAEE;IACA;;EAEA;IACE;IACA;;EAKA;IvBhLJ,yBuBiLmC;IvBhLnC,4BuBgLmC;;EAE7B;IACE;;EAEF;IACE;;EAIJ;IvB7KJ,wBuB8KkC;IvB7KlC,2BuB6KkC;;EAE5B;IACE;;EAEF;IACE;;EAIJ;IvBnNJ,eNmM0B;;E6BmBpB;IvBhNN,wBN6L0B;IM5L1B,yBN4L0B;;E6BsBpB;IvBrMN,4BN+K0B;IM9K1B,2BN8K0B;;E6B2BtB;IACE;;EAEA;
AAAA;IAEE;;;;AAcV;EACE,e7BoWgC;;AWliBhC;EkB4LJ;IAMI,c7B8WgC;I6B7WhC,Y7B8WgC;;E6B5WhC;IACE;IACA;;;;AC/PN;EACE;EACA;EACA;EACA,e9BswBkC;E8BrwBlC;EACA,kB/BaS;EOfP,eNmM0B;;;A8B3L5B;EACE;EACA,e9B0vBgC;E8BzvBhC,c9ByvBgC;E8BxvBhC,O/BOO;E+BNP;;AASF;EACE;;AAGF;EACE;;AAGF;EACE,O/BZO;;;AgCvBX;EACE;E5BGA;EACA;EGDE,eNmM0B;;;A+B/L1B;EACE;EzBsBF,wBNwK0B;EMvK1B,2BNuK0B;;A+BzL1B;EzBGA,yBNsL0B;EMrL1B,4BNqL0B;;A+BpL5B;EACE;EACA,OhChBU;EgCiBV,kB/BojBgC;E+BnjBhC,c/BojBgC;;A+BjjBlC;EACE,OhCJO;EgCKP;EACA,kBhCxBU;EgCyBV,c/BijBgC;;;A+B7iBpC;EACE;EACA;EACA;EACA;EACA,a/BuhBkC;E+BthBlC,O/BmG0B;E+BlG1B,kBhCpCY;EgCqCZ;;A9BnBE;E8BsBA,O/BgGwB;E+B/FxB;EACA,kBhC5BO;EgC6BP,c/BuhBgC;;;AgCpkBlC;EACE;EACA,WhC2N0B;EgC1N1B,ahC2L0B;;AgCtLxB;E1BoBF,wBNyK0B;EMxK1B,2BNwK0B;;AgCxLxB;E1BCF,yBNuL0B;EMtL1B,4BNsL0B;;;AgCrM5B;EACE;EACA,WhC4N0B;EgC3N1B,ahC4L0B;;AgCvLxB;E1BoBF,wBN0K0B;EMzK1B,2BNyK0B;;AgCzLxB;E1BCF,yBNwL0B;EMvL1B,4BNuL0B;;;AiCpM9B;EACE;EACA;EACA,WjC+oBkC;EiC9oBlC,ajC4N4B;EiC3N5B;EACA;EACA;EACA;E3BTE,eNmM0B;;AiCtL5B;EAC
E;;;AAKJ;EACE;EACA;;;AAOF;EACE,ejC4nBkC;EiC3nBlC,cjC2nBkC;EMzpBhC,eN4pBgC;;;AiCrnBlC;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ADmCJ;EC1CA;EACA,kBlCwEa;;ACnDX;EiCjBE;EACA;EACA;;;ACRN;EACE;EACA,enCklBkC;EmCjlBlC,kBpCgBS;EOfP,eNoM0B;;AWhJ1B;EwBxDJ;IAOI;;;;AAIJ;EACE;EACA;E7BTE,e6BUqB;;;ACVzB;EACE;EACA;EACA,epCisBkC;EoChsBlC;E9BJE,eNmM0B;;;AoC1L9B;EAEE;;;AAIF;EACE,apCiN4B;;;AoCvM5B;EACE;EACA;EACA;EACA;EACA;;;AAUF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;AC
zCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ADmCF;EC5CA,OD6CwF;EjBxCtF,kBiBwCuB;EC3CzB,cD2CyD;;ACzCzD;EACE;;AAGF;EACE;;;ACVJ;EACE;IAAO;;EACP;IAAK;;;AAGP;EACE;EACA,QtCysBkC;EsCxsBlC;EACA,WtCwsBkC;EsCvsBlC,kBvCSS;EOfP,eNmM0B;;;AsCzL9B;EACE;EACA;EACA;EACA,OvCbY;EuCcZ,kBtCmsBkC;;;AsChsBpC;EnBqBE;EmBnBA;;;AAGF;EACE;;;AC5BF;EACE;EACA;;;AAGF;EACE;;;ACFF;EACE;EACA;EAGA;EACA;;;AASF;EACE;EACA,OzCGS;EyCFT;;AvCCE;EuCGA,OzCFO;EyCGP;EACA,kBzCVO;;AyCaT;EACE,OzCNO;EyCOP,kBzCdO;;;AyCuBX;EACE;EACA;EACA;EAEA;EACA,kBzC3CY;EyC4CZ;;AAEA;ElCzCE,wBN6L0B;EM5L1B,yBN4L0B;;AwChJ5B;EACE;ElChCA,4BN+K0B;EM9K1B,2BN8K0B;;AChL1B;EuCsCA;;AAGF;EAEE,OzC3CO;EyC4CP,kBzC9DU;;AyCkEZ;EACE;EACA,OzCpEU;EyCqEV,kBxCkI0B;EwCjI1B,cxCiI0B;;;AwCtH5B;EACE;EACA;EACA;;AAIA;EACE;;AAKF;EACE;;;ACjGJ;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC
;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2GuC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AC7GxE;EACE,OD4GsE;EC3GtE,kBD2G
uC;;;ACxGzC;AAAA;EAEE,ODsGsE;;AvCzFtE;AAAA;AAAA;EwCVE,ODmGoE;EClGpE;;AAGF;AAAA;EACE;EACA,kBD6FoE;EC5FpE,cD4FoE;;;AEhH1E;EACE;EACA,W1CwyBkC;E0CvyBlC,a1CkO4B;E0CjO5B;EACA,O3CsBS;E2CrBT,a1CuyBkC;E0CtyBlC;;AzCgBE;EyCbA,O3CiBO;E2ChBP;EACA;;;AAUJ;EACE;EACA;EACA;EACA;;;ACnBF;EACE;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA,S3CgfkC;E2C/elC;EACA;EAGA;;AAMA;EpCxBI,YoCyBF;EACA;;AAEF;EAAuB;;;AAEzB;EACE;EACA;;;AAIF;EACE;EACA;EACA,Q3C4nBkC;E2C1nBlC;;;AAIF;EACE;EACA;EACA;EAEA;EACA,kB5CnDY;E4CoDZ;EACA;ErCtDE,eNoM0B;E2C1I5B;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA,S3CybkC;E2CxblC,kB5C9CS;;A4CiDT;EAAS;;AACT;EAAS,S3CumByB;;;A2ClmBpC;EACE;EACA;EACA;EACA,S3CmmBkC;E2ClmBlC;ErC7EE,wBN8L0B;EM7L1B,yBN6L0B;;A2C9G5B;EACE,S3C8lBgC;E2C5lBhC;;;AAKJ;EACE;EACA,a3CoI4B;;;A2C/H9B;EACE;EAGA;EACA,S3CwjBkC;;;A2CpjBpC;EACE;EACA;EACA;EACA,S3CgjBkC;E2C/iBlC;;AAGA;EAAuB;;AACvB;EAAsB;;;AAIxB;EACE;EACA;EACA;EACA;EACA;;;AhC5EE;EgCkFF;IACE,W3CijBgC;I2ChjBhC;;;EAOF;IAAY,W3C0iBsB;;;AWroBhC;EgC+FF;IAAY,W3CoiBsB;;;A4C1rBpC;EACE;EACA,S5CigBkC
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
;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EACnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;AnDSF;EmD7CI;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE
;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EACnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;AnDSF;EmD7
CI;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EA
CnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;AnDSF;EmD7CI;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAfF;IAAgC;;;EAChC;A
AAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAMN;IAAmB;;;EACnB;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;EAEF;AAAA;IAEE;;;ACvCN;EAAiB;;;AACjB;EAAiB;;;AACjB;ECNE;EACA;EACA;;;ADYE;EAAwB;;;AACxB;EAAwB;;;AACxB;EAAwB;;;ApDoCxB;EoDtCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;ApDoCxB;EoDtCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;ApDoCxB;EoDtCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;ApDoCxB;EoDtCA;IAAwB;;;EACxB;IAAwB;;;EACxB;IAAwB;;;AAM5B;EAAmB;;;AACnB;EAAmB;;;AACnB;EAAmB;;;AAInB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AACtB;EAAsB;;;AAItB;EAAc;;;AElCZ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AALJ;EACE;;;AhEiBA;EgEbE;;;AFmCN;EAAc;;;AAId;EG/CE;EACA;EACA;EACA;EACA;;;ACFF;ECCE;;;ADGF;ECHE;;;ACCF;EAOE;EACA;EACA;EACA;;AATA;EADF;IAEI;IACA;IACA;IACA;;;;AAQJ;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;;AAKN;EACE;;AAEA;EACE;EACA;EACA;;AAEA;EACE,OtEhCI;EsEiCJ;;;AAS
N;EACE;EAEA;;A1DEE;E0DLJ;IAYI;;EANA;IANJ;MAOM;MACA;MACA;MACA;;;;A1DLF;E0DLJ;IAgBI;;;;AAIJ;EACE;EACA;EACA;EACA;;A1DnBE;E0DsBA;IAPJ;MAQM;MACA;;;;A1DxBF;E0DeJ;IAeI;;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE,ctEtDe;EsEuDf;;;AAIJ;EACE;EACA,OtE/ES;;;AsEkFX;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAKF;EACE;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;;;AAMN;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;;;AC5JE;AAAA;EAEE;EACA;EACA;EACA;;AAIJ;EACE;;AAGF;AAAA;AAAA;EAGE;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;E5DpCA;EACA;EACA;EACA;EACA;;;A4DoCF;E5DtBE;EACA;EACA;EACA;;;A4DuBF;E5DnBE;EAIA;EACA;EACA;EACA;;ACmBE;E2DPJ;I5DRE;IAIA;;;ACWE;E2DPJ;I5DRE;IAIA;;;;A4DgBF;E5D/BE;EAIA;EACA;EACA;EACA;;ACmBE;E2DKJ;I5DpBE;IAIA;;;ACWE;E2DKJ;I5DpBE;IAIA;;;;A4DiCF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAQF;EACE;EACA;EACA;EACA;EACA;EACA;;AlBzHA;EACE;EACA;EACA;;AzCoDA;E2D4DJ;IAUI;IACA;IACA;IA
CA;IACA;;;AAGF;AAAA;EAEE;;AAGF;EACE;;AAGF;EACE;EACA;;A3DxFA;E2DsFF;IAKI;;;AAKF;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;EAKE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;;AAOA;EACE;EACA;;AAEF;EACE;EACA;;AAEF;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;;;AAKJ;EACE;;;AAKA;EACE;;;AAMF;EACE;EACA;;AAEF;EACE;;;AAKJ;AAAA;EAEE;;;AAEF;EACE;;;AAEF;EACE;;;AAIF;EACE;;;AAKA;AAAA;EAEE;EACA;;AAEF;EACE;EACA;;A3DvMA;E2D2MA;AAAA;IAEE;;EAEF;IACE;;;;AAMN;EACE;EACA;;;AAIF;EACE;;AAEA;AAAA;EAEE;;;AAIJ;EACE;;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAKJ;EACE;;;AAIF;EACE;;AAEA;EACE;EACA;;;AAKF;AAAA;EACE;;;AAKF;AAAA;EACE;;;AAKJ;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;;AAKF;AAAA;EACE;;;AAKF;AAAA;EACE;;;AAKJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAQJ;EACE;EACA;EACA;EACA;EACA;;A3DhWE;E2D2VJ;IAQI;;;;AAIJ;EACE;EACA;;A3DzWE;E2DuWJ;IAKI;IACA;;;;AAKF;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA,OvEzZO;;;AwE1BX;AAAA;AA
AA;AAIA;EACE;EACA;;;AAEF;EACI;EACA;EACA;;;AAEJ;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;A5DkBE;E4DdD;IACE;;;EAEF;IACI;IACA;IACA;;;AC7DP;AAAA;AAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA,axEmN4B;;;AwEhN9B;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE,azEsBsB;EyErBtB;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACI;EACA;EACA;;;AAEJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;A7D/CE;E6DmDD;IACE;;;EAEF;IACI;IACA;IACA;;;AC9HP;AAAA;AAAA;AAIA;EACI;EACA;EACA;;;AAGJ;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;AACA;EACE;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EAC
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","file":"bootst
rap.css"}
\ No newline at end of file
1
0
commit ba44423cfc0ea41c039e52160f8002193dc80acf
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Wed Oct 16 11:15:25 2019 -0400
address_set.c: doxygen comment repair.
---
src/core/or/address_set.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/or/address_set.c b/src/core/or/address_set.c
index 758fba4aa..c74ddbf70 100644
--- a/src/core/or/address_set.c
+++ b/src/core/or/address_set.c
@@ -17,7 +17,7 @@
#include "lib/crypt_ops/crypto_rand.h"
#include "siphash.h"
-/* Wrap our hash function to have the signature that the bloom filter
+/** Wrap our hash function to have the signature that the bloom filter
* needs. */
static uint64_t
bloomfilt_addr_hash(const struct sipkey *key,
1
0

16 Oct '19
commit 2127d797e9fe869be5a8966c5eabbb196a4698f0
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Wed Oct 16 11:33:03 2019 -0400
hs_descriptor.[ch]: repair doxygen comments.
These are yet more that were not made with "/**"
---
src/feature/hs/hs_descriptor.c | 142 ++++++++++++++++++++---------------------
src/feature/hs/hs_descriptor.h | 104 +++++++++++++++---------------
2 files changed, 123 insertions(+), 123 deletions(-)
diff --git a/src/feature/hs/hs_descriptor.c b/src/feature/hs/hs_descriptor.c
index 924ab3115..60f2bfb0d 100644
--- a/src/feature/hs/hs_descriptor.c
+++ b/src/feature/hs/hs_descriptor.c
@@ -102,7 +102,7 @@
#define str_desc_auth_client "auth-client"
#define str_encrypted "encrypted"
-/* Authentication supported types. */
+/** Authentication supported types. */
static const struct {
hs_desc_auth_type_t type;
const char *identifier;
@@ -112,7 +112,7 @@ static const struct {
{ 0, NULL }
};
-/* Descriptor ruleset. */
+/** Descriptor ruleset. */
static token_rule_t hs_desc_v3_token_table[] = {
T1_START(str_hs_desc, R_HS_DESCRIPTOR, EQ(1), NO_OBJ),
T1(str_lifetime, R3_DESC_LIFETIME, EQ(1), NO_OBJ),
@@ -123,7 +123,7 @@ static token_rule_t hs_desc_v3_token_table[] = {
END_OF_TABLE
};
-/* Descriptor ruleset for the superencrypted section. */
+/** Descriptor ruleset for the superencrypted section. */
static token_rule_t hs_desc_superencrypted_v3_token_table[] = {
T1_START(str_desc_auth_type, R3_DESC_AUTH_TYPE, GE(1), NO_OBJ),
T1(str_desc_auth_key, R3_DESC_AUTH_KEY, GE(1), NO_OBJ),
@@ -132,7 +132,7 @@ static token_rule_t hs_desc_superencrypted_v3_token_table[] = {
END_OF_TABLE
};
-/* Descriptor ruleset for the encrypted section. */
+/** Descriptor ruleset for the encrypted section. */
static token_rule_t hs_desc_encrypted_v3_token_table[] = {
T1_START(str_create2_formats, R3_CREATE2_FORMATS, CONCAT_ARGS, NO_OBJ),
T01(str_intro_auth_required, R3_INTRO_AUTH_REQUIRED, ARGS, NO_OBJ),
@@ -140,7 +140,7 @@ static token_rule_t hs_desc_encrypted_v3_token_table[] = {
END_OF_TABLE
};
-/* Descriptor ruleset for the introduction points section. */
+/** Descriptor ruleset for the introduction points section. */
static token_rule_t hs_desc_intro_point_v3_token_table[] = {
T1_START(str_intro_point, R3_INTRODUCTION_POINT, EQ(1), NO_OBJ),
T1N(str_ip_onion_key, R3_INTRO_ONION_KEY, GE(2), OBJ_OK),
@@ -152,7 +152,7 @@ static token_rule_t hs_desc_intro_point_v3_token_table[] = {
END_OF_TABLE
};
-/* Using a key, salt and encrypted payload, build a MAC and put it in mac_out.
+/** Using a key, salt and encrypted payload, build a MAC and put it in mac_out.
* We use SHA3-256 for the MAC computation.
* This function can't fail. */
static void
@@ -184,7 +184,7 @@ build_mac(const uint8_t *mac_key, size_t mac_key_len,
crypto_digest_free(digest);
}
-/* Using a secret data and a given decriptor object, build the secret
+/** Using a secret data and a given decriptor object, build the secret
* input needed for the KDF.
*
* secret_input = SECRET_DATA | subcredential | INT_8(revision_counter)
@@ -224,7 +224,7 @@ build_secret_input(const hs_descriptor_t *desc,
return secret_input_len;
}
-/* Do the KDF construction and put the resulting data in key_out which is of
+/** Do the KDF construction and put the resulting data in key_out which is of
* key_out_len length. It uses SHAKE-256 as specified in the spec. */
static void
build_kdf_key(const hs_descriptor_t *desc,
@@ -269,7 +269,7 @@ build_kdf_key(const hs_descriptor_t *desc,
tor_free(secret_input);
}
-/* Using the given descriptor, secret data, and salt, run it through our
+/** Using the given descriptor, secret data, and salt, run it through our
* KDF function and then extract a secret key in key_out, the IV in iv_out
* and MAC in mac_out. This function can't fail. */
static void
@@ -308,7 +308,7 @@ build_secret_key_iv_mac(const hs_descriptor_t *desc,
/* === ENCODING === */
-/* Encode the given link specifier objects into a newly allocated string.
+/** Encode the given link specifier objects into a newly allocated string.
* This can't fail so caller can always assume a valid string being
* returned. */
STATIC char *
@@ -355,7 +355,7 @@ encode_link_specifiers(const smartlist_t *specs)
return encoded_b64;
}
-/* Encode an introduction point legacy key and certificate. Return a newly
+/** Encode an introduction point legacy key and certificate. Return a newly
* allocated string with it. On failure, return NULL. */
static char *
encode_legacy_key(const hs_desc_intro_point_t *ip)
@@ -392,7 +392,7 @@ encode_legacy_key(const hs_desc_intro_point_t *ip)
return encoded;
}
-/* Encode an introduction point encryption key and certificate. Return a newly
+/** Encode an introduction point encryption key and certificate. Return a newly
* allocated string with it. On failure, return NULL. */
static char *
encode_enc_key(const hs_desc_intro_point_t *ip)
@@ -418,7 +418,7 @@ encode_enc_key(const hs_desc_intro_point_t *ip)
return encoded;
}
-/* Encode an introduction point onion key. Return a newly allocated string
+/** Encode an introduction point onion key. Return a newly allocated string
* with it. Can not fail. */
static char *
encode_onion_key(const hs_desc_intro_point_t *ip)
@@ -435,7 +435,7 @@ encode_onion_key(const hs_desc_intro_point_t *ip)
return encoded;
}
-/* Encode an introduction point object and return a newly allocated string
+/** Encode an introduction point object and return a newly allocated string
* with it. On failure, return NULL. */
static char *
encode_intro_point(const ed25519_public_key_t *sig_key,
@@ -505,7 +505,7 @@ encode_intro_point(const ed25519_public_key_t *sig_key,
return encoded_ip;
}
-/* Given a source length, return the new size including padding for the
+/** Given a source length, return the new size including padding for the
* plaintext encryption. */
static size_t
compute_padded_plaintext_length(size_t plaintext_len)
@@ -525,7 +525,7 @@ compute_padded_plaintext_length(size_t plaintext_len)
return plaintext_padded_len;
}
-/* Given a buffer, pad it up to the encrypted section padding requirement. Set
+/** Given a buffer, pad it up to the encrypted section padding requirement. Set
* the newly allocated string in padded_out and return the length of the
* padded buffer. */
STATIC size_t
@@ -548,7 +548,7 @@ build_plaintext_padding(const char *plaintext, size_t plaintext_len,
return padded_len;
}
-/* Using a key, IV and plaintext data of length plaintext_len, create the
+/** Using a key, IV and plaintext data of length plaintext_len, create the
* encrypted section by encrypting it and setting encrypted_out with the
* data. Return size of the encrypted data buffer. */
static size_t
@@ -593,7 +593,7 @@ build_encrypted(const uint8_t *key, const uint8_t *iv, const char *plaintext,
return encrypted_len;
}
-/* Encrypt the given <b>plaintext</b> buffer using <b>desc</b> and
+/** Encrypt the given <b>plaintext</b> buffer using <b>desc</b> and
* <b>secret_data</b> to get the keys. Set encrypted_out with the encrypted
* data and return the length of it. <b>is_superencrypted_layer</b> is set
* if this is the outer encrypted layer of the descriptor. */
@@ -663,7 +663,7 @@ encrypt_descriptor_data(const hs_descriptor_t *desc,
return final_blob_len;
}
-/* Create and return a string containing a client-auth entry. It's the
+/** Create and return a string containing a client-auth entry. It's the
* responsibility of the caller to free the returned string. This function
* will never fail. */
static char *
@@ -733,7 +733,7 @@ get_all_auth_client_lines(const hs_descriptor_t *desc)
return auth_client_lines_str;
}
-/* Create the inner layer of the descriptor (which includes the intro points,
+/** Create the inner layer of the descriptor (which includes the intro points,
* etc.). Return a newly-allocated string with the layer plaintext, or NULL if
* an error occurred. It's the responsibility of the caller to free the
* returned string. */
@@ -789,7 +789,7 @@ get_inner_encrypted_layer_plaintext(const hs_descriptor_t *desc)
return encoded_str;
}
-/* Create the middle layer of the descriptor, which includes the client auth
+/** Create the middle layer of the descriptor, which includes the client auth
* data and the encrypted inner layer (provided as a base64 string at
* <b>layer2_b64_ciphertext</b>). Return a newly-allocated string with the
* layer plaintext. It's the responsibility of the caller to free the returned
@@ -845,7 +845,7 @@ get_outer_encrypted_layer_plaintext(const hs_descriptor_t *desc,
return layer1_str;
}
-/* Encrypt <b>encoded_str</b> into an encrypted blob and then base64 it before
+/** Encrypt <b>encoded_str</b> into an encrypted blob and then base64 it before
* returning it. <b>desc</b> is provided to derive the encryption
* keys. <b>secret_data</b> is also proved to derive the encryption keys.
* <b>is_superencrypted_layer</b> is set if <b>encoded_str</b> is the
@@ -878,7 +878,7 @@ encrypt_desc_data_and_base64(const hs_descriptor_t *desc,
return enc_b64;
}
-/* Generate the secret data which is used to encrypt/decrypt the descriptor.
+/** Generate the secret data which is used to encrypt/decrypt the descriptor.
*
* SECRET_DATA = blinded-public-key
* SECRET_DATA = blinded-public-key | descriptor_cookie
@@ -925,7 +925,7 @@ build_secret_data(const ed25519_public_key_t *blinded_pubkey,
return secret_data_len;
}
-/* Generate and encode the superencrypted portion of <b>desc</b>. This also
+/** Generate and encode the superencrypted portion of <b>desc</b>. This also
* involves generating the encrypted portion of the descriptor, and performing
* the superencryption. A newly allocated NUL-terminated string pointer
* containing the encrypted encoded blob is put in encrypted_blob_out. Return 0
@@ -999,7 +999,7 @@ encode_superencrypted_data(const hs_descriptor_t *desc,
return ret;
}
-/* Encode a v3 HS descriptor. Return 0 on success and set encoded_out to the
+/** Encode a v3 HS descriptor. Return 0 on success and set encoded_out to the
* newly allocated string of the encoded descriptor. On error, -1 is returned
* and encoded_out is untouched. */
static int
@@ -1111,7 +1111,7 @@ desc_encode_v3(const hs_descriptor_t *desc,
/* === DECODING === */
-/* Given the token tok for an auth client, decode it as
+/** Given the token tok for an auth client, decode it as
* hs_desc_authorized_client_t. tok->args MUST contain at least 3 elements
* Return 0 on success else -1 on failure. */
static int
@@ -1147,7 +1147,7 @@ decode_auth_client(const directory_token_t *tok,
return ret;
}
-/* Given an encoded string of the link specifiers, return a newly allocated
+/** Given an encoded string of the link specifiers, return a newly allocated
* list of decoded link specifiers. Return NULL on error. */
STATIC smartlist_t *
decode_link_specifiers(const char *encoded)
@@ -1201,7 +1201,7 @@ decode_link_specifiers(const char *encoded)
return results;
}
-/* Given a list of authentication types, decode it and put it in the encrypted
+/** Given a list of authentication types, decode it and put it in the encrypted
* data section. Return 1 if we at least know one of the type or 0 if we know
* none of them. */
static int
@@ -1229,7 +1229,7 @@ decode_auth_type(hs_desc_encrypted_data_t *desc, const char *list)
return match;
}
-/* Parse a space-delimited list of integers representing CREATE2 formats into
+/** Parse a space-delimited list of integers representing CREATE2 formats into
* the bitfield in hs_desc_encrypted_data_t. Ignore unrecognized values. */
static void
decode_create2_list(hs_desc_encrypted_data_t *desc, const char *list)
@@ -1263,7 +1263,7 @@ decode_create2_list(hs_desc_encrypted_data_t *desc, const char *list)
smartlist_free(tokens);
}
-/* Given a certificate, validate the certificate for certain conditions which
+/** Given a certificate, validate the certificate for certain conditions which
* are if the given type matches the cert's one, if the signing key is
* included and if the that key was actually used to sign the certificate.
*
@@ -1300,7 +1300,7 @@ cert_is_valid(tor_cert_t *cert, uint8_t type, const char *log_obj_type)
return 0;
}
-/* Given some binary data, try to parse it to get a certificate object. If we
+/** Given some binary data, try to parse it to get a certificate object. If we
* have a valid cert, validate it using the given wanted type. On error, print
* a log using the err_msg has the certificate identifier adding semantic to
* the log and cert_out is set to NULL. On success, 0 is returned and cert_out
@@ -1337,7 +1337,7 @@ cert_parse_and_validate(tor_cert_t **cert_out, const char *data,
return -1;
}
-/* Return true iff the given length of the encrypted data of a descriptor
+/** Return true iff the given length of the encrypted data of a descriptor
* passes validation. */
STATIC int
encrypted_data_length_is_valid(size_t len)
@@ -1356,7 +1356,7 @@ encrypted_data_length_is_valid(size_t len)
return 0;
}
-/* Build the KEYS component for the authorized client computation. The format
+/** Build the KEYS component for the authorized client computation. The format
* of the construction is:
*
* SECRET_SEED = x25519(sk, pk)
@@ -1400,7 +1400,7 @@ build_descriptor_cookie_keys(const uint8_t *subcredential,
return keystream_len;
}
-/* Decrypt the descriptor cookie given the descriptor, the auth client,
+/** Decrypt the descriptor cookie given the descriptor, the auth client,
* and the client secret key. On sucess, return 0 and a newly allocated
* descriptor cookie descriptor_cookie_out. On error or if the client id
* is invalid, return -1 and descriptor_cookie_out is set to
@@ -1592,7 +1592,7 @@ decrypt_desc_layer,(const hs_descriptor_t *desc,
return result_len;
}
-/* Decrypt the superencrypted section of the descriptor using the given
+/** Decrypt the superencrypted section of the descriptor using the given
* descriptor object <b>desc</b>. A newly allocated NUL terminated string is
* put in decrypted_out which contains the superencrypted layer of the
* descriptor. Return the length of decrypted_out on success else 0 is
@@ -1624,7 +1624,7 @@ desc_decrypt_superencrypted(const hs_descriptor_t *desc, char **decrypted_out)
return superencrypted_len;
}
-/* Decrypt the encrypted section of the descriptor using the given descriptor
+/** Decrypt the encrypted section of the descriptor using the given descriptor
* object <b>desc</b>. A newly allocated NUL terminated string is put in
* decrypted_out which contains the encrypted layer of the descriptor.
* Return the length of decrypted_out on success else 0 is returned and
@@ -1677,7 +1677,7 @@ desc_decrypt_encrypted(const hs_descriptor_t *desc,
return encrypted_len;
}
-/* Given the token tok for an intro point legacy key, the list of tokens, the
+/** Given the token tok for an intro point legacy key, the list of tokens, the
* introduction point ip being decoded and the descriptor desc from which it
* comes from, decode the legacy key and set the intro point object. Return 0
* on success else -1 on failure. */
@@ -1735,7 +1735,7 @@ decode_intro_legacy_key(const directory_token_t *tok,
return -1;
}
-/* Dig into the descriptor <b>tokens</b> to find the onion key we should use
+/** Dig into the descriptor <b>tokens</b> to find the onion key we should use
* for this intro point, and set it into <b>onion_key_out</b>. Return 0 if it
* was found and well-formed, otherwise return -1 in case of errors. */
static int
@@ -1779,7 +1779,7 @@ set_intro_point_onion_key(curve25519_public_key_t *onion_key_out,
return retval;
}
-/* Given the start of a section and the end of it, decode a single
+/** Given the start of a section and the end of it, decode a single
* introduction point from that section. Return a newly allocated introduction
* point object containing the decoded data. Return NULL if the section can't
* be decoded. */
@@ -1908,7 +1908,7 @@ decode_introduction_point(const hs_descriptor_t *desc, const char *start)
return ip;
}
-/* Given a descriptor string at <b>data</b>, decode all possible introduction
+/** Given a descriptor string at <b>data</b>, decode all possible introduction
* points that we can find. Add the introduction point object to desc_enc as we
* find them. This function can't fail and it is possible that zero
* introduction points can be decoded. */
@@ -1972,7 +1972,7 @@ decode_intro_points(const hs_descriptor_t *desc,
smartlist_free(intro_points);
}
-/* Return 1 iff the given base64 encoded signature in b64_sig from the encoded
+/** Return 1 iff the given base64 encoded signature in b64_sig from the encoded
* descriptor in encoded_desc validates the descriptor content. */
STATIC int
desc_sig_is_valid(const char *b64_sig,
@@ -2031,7 +2031,7 @@ desc_sig_is_valid(const char *b64_sig,
return ret;
}
-/* Decode descriptor plaintext data for version 3. Given a list of tokens, an
+/** Decode descriptor plaintext data for version 3. Given a list of tokens, an
* allocated plaintext object that will be populated and the encoded
* descriptor with its length. The last one is needed for signature
* verification. Unknown tokens are simply ignored so this won't error on
@@ -2134,7 +2134,7 @@ desc_decode_plaintext_v3(smartlist_t *tokens,
return -1;
}
-/* Decode the version 3 superencrypted section of the given descriptor desc.
+/** Decode the version 3 superencrypted section of the given descriptor desc.
* The desc_superencrypted_out will be populated with the decoded data.
* Return 0 on success else -1. */
static int
@@ -2249,7 +2249,7 @@ desc_decode_superencrypted_v3(const hs_descriptor_t *desc,
return ret;
}
-/* Decode the version 3 encrypted section of the given descriptor desc. The
+/** Decode the version 3 encrypted section of the given descriptor desc. The
* desc_encrypted_out will be populated with the decoded data. Return 0 on
* success else -1. */
static int
@@ -2364,7 +2364,7 @@ desc_decode_encrypted_v3(const hs_descriptor_t *desc,
return ret;
}
-/* Table of encrypted decode function version specific. The function are
+/** Table of encrypted decode function version specific. The function are
* indexed by the version number so v3 callback is at index 3 in the array. */
static int
(*decode_encrypted_handlers[])(
@@ -2376,7 +2376,7 @@ static int
desc_decode_encrypted_v3,
};
-/* Decode the encrypted data section of the given descriptor and store the
+/** Decode the encrypted data section of the given descriptor and store the
* data in the given encrypted data object. Return 0 on success else a
* negative value on error. */
int
@@ -2417,7 +2417,7 @@ hs_desc_decode_encrypted(const hs_descriptor_t *desc,
return ret;
}
-/* Table of superencrypted decode function version specific. The function are
+/** Table of superencrypted decode function version specific. The function are
* indexed by the version number so v3 callback is at index 3 in the array. */
static int
(*decode_superencrypted_handlers[])(
@@ -2428,9 +2428,9 @@ static int
desc_decode_superencrypted_v3,
};
-/* Decode the superencrypted data section of the given descriptor and store the
- * data in the given superencrypted data object. Return 0 on success else a
- * negative value on error. */
+/** Decode the superencrypted data section of the given descriptor and store
+ * the data in the given superencrypted data object. Return 0 on success else
+ * a negative value on error. */
int
hs_desc_decode_superencrypted(const hs_descriptor_t *desc,
hs_desc_superencrypted_data_t *
@@ -2468,7 +2468,7 @@ hs_desc_decode_superencrypted(const hs_descriptor_t *desc,
return ret;
}
-/* Table of plaintext decode function version specific. The function are
+/** Table of plaintext decode function version specific. The function are
* indexed by the version number so v3 callback is at index 3 in the array. */
static int
(*decode_plaintext_handlers[])(
@@ -2481,7 +2481,7 @@ static int
desc_decode_plaintext_v3,
};
-/* Fully decode the given descriptor plaintext and store the data in the
+/** Fully decode the given descriptor plaintext and store the data in the
* plaintext data object. Returns 0 on success else a negative value. */
int
hs_desc_decode_plaintext(const char *encoded,
@@ -2554,7 +2554,7 @@ hs_desc_decode_plaintext(const char *encoded,
return ret;
}
-/* Fully decode an encoded descriptor and set a newly allocated descriptor
+/** Fully decode an encoded descriptor and set a newly allocated descriptor
* object in desc_out. Client secret key is used to decrypt the "encrypted"
* section if not NULL else it's ignored.
*
@@ -2614,7 +2614,7 @@ hs_desc_decode_descriptor(const char *encoded,
return ret;
}
-/* Table of encode function version specific. The functions are indexed by the
+/** Table of encode function version specific. The functions are indexed by the
* version number so v3 callback is at index 3 in the array. */
static int
(*encode_handlers[])(
@@ -2627,7 +2627,7 @@ static int
desc_encode_v3,
};
-/* Encode the given descriptor desc including signing with the given key pair
+/** Encode the given descriptor desc including signing with the given key pair
* signing_kp and encrypting with the given descriptor cookie.
*
* If the client authorization is enabled, descriptor_cookie must be the same
@@ -2684,7 +2684,7 @@ hs_desc_encode_descriptor,(const hs_descriptor_t *desc,
return ret;
}
-/* Free the content of the plaintext section of a descriptor. */
+/** Free the content of the plaintext section of a descriptor. */
void
hs_desc_plaintext_data_free_contents(hs_desc_plaintext_data_t *desc)
{
@@ -2700,7 +2700,7 @@ hs_desc_plaintext_data_free_contents(hs_desc_plaintext_data_t *desc)
memwipe(desc, 0, sizeof(*desc));
}
-/* Free the content of the superencrypted section of a descriptor. */
+/** Free the content of the superencrypted section of a descriptor. */
void
hs_desc_superencrypted_data_free_contents(hs_desc_superencrypted_data_t *desc)
{
@@ -2720,7 +2720,7 @@ hs_desc_superencrypted_data_free_contents(hs_desc_superencrypted_data_t *desc)
memwipe(desc, 0, sizeof(*desc));
}
-/* Free the content of the encrypted section of a descriptor. */
+/** Free the content of the encrypted section of a descriptor. */
void
hs_desc_encrypted_data_free_contents(hs_desc_encrypted_data_t *desc)
{
@@ -2740,7 +2740,7 @@ hs_desc_encrypted_data_free_contents(hs_desc_encrypted_data_t *desc)
memwipe(desc, 0, sizeof(*desc));
}
-/* Free the descriptor plaintext data object. */
+/** Free the descriptor plaintext data object. */
void
hs_desc_plaintext_data_free_(hs_desc_plaintext_data_t *desc)
{
@@ -2748,7 +2748,7 @@ hs_desc_plaintext_data_free_(hs_desc_plaintext_data_t *desc)
tor_free(desc);
}
-/* Free the descriptor plaintext data object. */
+/** Free the descriptor plaintext data object. */
void
hs_desc_superencrypted_data_free_(hs_desc_superencrypted_data_t *desc)
{
@@ -2756,7 +2756,7 @@ hs_desc_superencrypted_data_free_(hs_desc_superencrypted_data_t *desc)
tor_free(desc);
}
-/* Free the descriptor encrypted data object. */
+/** Free the descriptor encrypted data object. */
void
hs_desc_encrypted_data_free_(hs_desc_encrypted_data_t *desc)
{
@@ -2764,7 +2764,7 @@ hs_desc_encrypted_data_free_(hs_desc_encrypted_data_t *desc)
tor_free(desc);
}
-/* Free the given descriptor object. */
+/** Free the given descriptor object. */
void
hs_descriptor_free_(hs_descriptor_t *desc)
{
@@ -2778,7 +2778,7 @@ hs_descriptor_free_(hs_descriptor_t *desc)
tor_free(desc);
}
-/* Return the size in bytes of the given plaintext data object. A sizeof() is
+/** Return the size in bytes of the given plaintext data object. A sizeof() is
* not enough because the object contains pointers and the encrypted blob.
* This is particularly useful for our OOM subsystem that tracks the HSDir
* cache size for instance. */
@@ -2790,7 +2790,7 @@ hs_desc_plaintext_obj_size(const hs_desc_plaintext_data_t *data)
data->superencrypted_blob_size);
}
-/* Return the size in bytes of the given encrypted data object. Used by OOM
+/** Return the size in bytes of the given encrypted data object. Used by OOM
* subsystem. */
static size_t
hs_desc_encrypted_obj_size(const hs_desc_encrypted_data_t *data)
@@ -2810,7 +2810,7 @@ hs_desc_encrypted_obj_size(const hs_desc_encrypted_data_t *data)
return sizeof(*data) + intro_size;
}
-/* Return the size in bytes of the given descriptor object. Used by OOM
+/** Return the size in bytes of the given descriptor object. Used by OOM
* subsystem. */
size_t
hs_desc_obj_size(const hs_descriptor_t *data)
@@ -2821,7 +2821,7 @@ hs_desc_obj_size(const hs_descriptor_t *data)
sizeof(data->subcredential));
}
-/* Return a newly allocated descriptor intro point. */
+/** Return a newly allocated descriptor intro point. */
hs_desc_intro_point_t *
hs_desc_intro_point_new(void)
{
@@ -2830,7 +2830,7 @@ hs_desc_intro_point_new(void)
return ip;
}
-/* Free a descriptor intro point object. */
+/** Free a descriptor intro point object. */
void
hs_desc_intro_point_free_(hs_desc_intro_point_t *ip)
{
@@ -2849,7 +2849,7 @@ hs_desc_intro_point_free_(hs_desc_intro_point_t *ip)
tor_free(ip);
}
-/* Allocate and build a new fake client info for the descriptor. Return a
+/** Allocate and build a new fake client info for the descriptor. Return a
* newly allocated object. This can't fail. */
hs_desc_authorized_client_t *
hs_desc_build_fake_authorized_client(void)
@@ -2867,7 +2867,7 @@ hs_desc_build_fake_authorized_client(void)
return client_auth;
}
-/* Using the service's subcredential, client public key, auth ephemeral secret
+/** Using the service's subcredential, client public key, auth ephemeral secret
* key, and descriptor cookie, build the auth client so we can then encode the
* descriptor for publication. client_out must be already allocated. */
void
@@ -2925,14 +2925,14 @@ hs_desc_build_authorized_client(const uint8_t *subcredential,
crypto_cipher_free(cipher);
}
-/* Free an authoriezd client object. */
+/** Free an authoriezd client object. */
void
hs_desc_authorized_client_free_(hs_desc_authorized_client_t *client)
{
tor_free(client);
}
-/* From the given descriptor, remove and free every introduction point. */
+/** From the given descriptor, remove and free every introduction point. */
void
hs_descriptor_clear_intro_points(hs_descriptor_t *desc)
{
diff --git a/src/feature/hs/hs_descriptor.h b/src/feature/hs/hs_descriptor.h
index 0a843f4f3..731e0c5ce 100644
--- a/src/feature/hs/hs_descriptor.h
+++ b/src/feature/hs/hs_descriptor.h
@@ -18,88 +18,88 @@
/* Trunnel */
struct link_specifier_t;
-/* The earliest descriptor format version we support. */
+/** The earliest descriptor format version we support. */
#define HS_DESC_SUPPORTED_FORMAT_VERSION_MIN 3
-/* The latest descriptor format version we support. */
+/** The latest descriptor format version we support. */
#define HS_DESC_SUPPORTED_FORMAT_VERSION_MAX 3
-/* Default lifetime of a descriptor in seconds. The valus is set at 3 hours
+/** Default lifetime of a descriptor in seconds. The valus is set at 3 hours
* which is 180 minutes or 10800 seconds. */
#define HS_DESC_DEFAULT_LIFETIME (3 * 60 * 60)
-/* Maximum lifetime of a descriptor in seconds. The value is set at 12 hours
+/** Maximum lifetime of a descriptor in seconds. The value is set at 12 hours
* which is 720 minutes or 43200 seconds. */
#define HS_DESC_MAX_LIFETIME (12 * 60 * 60)
-/* Lifetime of certificate in the descriptor. This defines the lifetime of the
+/** Lifetime of certificate in the descriptor. This defines the lifetime of the
* descriptor signing key and the cross certification cert of that key. It is
* set to 54 hours because a descriptor can be around for 48 hours and because
* consensuses are used after the hour, add an extra 6 hours to give some time
* for the service to stop using it. */
#define HS_DESC_CERT_LIFETIME (54 * 60 * 60)
-/* Length of the salt needed for the encrypted section of a descriptor. */
+/** Length of the salt needed for the encrypted section of a descriptor. */
#define HS_DESC_ENCRYPTED_SALT_LEN 16
-/* Length of the KDF output value which is the length of the secret key,
+/** Length of the KDF output value which is the length of the secret key,
* the secret IV and MAC key length which is the length of H() output. */
#define HS_DESC_ENCRYPTED_KDF_OUTPUT_LEN \
CIPHER256_KEY_LEN + CIPHER_IV_LEN + DIGEST256_LEN
-/* Pad plaintext of superencrypted data section before encryption so that its
+/** Pad plaintext of superencrypted data section before encryption so that its
* length is a multiple of this value. */
#define HS_DESC_SUPERENC_PLAINTEXT_PAD_MULTIPLE 10000
-/* Maximum length in bytes of a full hidden service descriptor. */
+/** Maximum length in bytes of a full hidden service descriptor. */
#define HS_DESC_MAX_LEN 50000 /* 50kb max size */
-/* Key length for the descriptor symmetric encryption. As specified in the
+/** Key length for the descriptor symmetric encryption. As specified in the
* protocol, we use AES-256 for the encrypted section of the descriptor. The
* following is the length in bytes and the bit size. */
#define HS_DESC_ENCRYPTED_KEY_LEN CIPHER256_KEY_LEN
#define HS_DESC_ENCRYPTED_BIT_SIZE (HS_DESC_ENCRYPTED_KEY_LEN * 8)
-/* Length of each components in the auth client section in the descriptor. */
+/** Length of each components in the auth client section in the descriptor. */
#define HS_DESC_CLIENT_ID_LEN 8
#define HS_DESC_DESCRIPTOR_COOKIE_LEN 16
#define HS_DESC_COOKIE_KEY_LEN 32
#define HS_DESC_COOKIE_KEY_BIT_SIZE (HS_DESC_COOKIE_KEY_LEN * 8)
#define HS_DESC_ENCRYPED_COOKIE_LEN HS_DESC_DESCRIPTOR_COOKIE_LEN
-/* The number of auth client entries in the descriptor must be the multiple
+/** The number of auth client entries in the descriptor must be the multiple
* of this constant. */
#define HS_DESC_AUTH_CLIENT_MULTIPLE 16
-/* Type of authentication in the descriptor. */
+/** Type of authentication in the descriptor. */
typedef enum {
HS_DESC_AUTH_ED25519 = 1
} hs_desc_auth_type_t;
-/* Introduction point information located in a descriptor. */
+/** Introduction point information located in a descriptor. */
typedef struct hs_desc_intro_point_t {
- /* Link specifier(s) which details how to extend to the relay. This list
+ /** Link specifier(s) which details how to extend to the relay. This list
* contains link_specifier_t objects. It MUST have at least one. */
smartlist_t *link_specifiers;
- /* Onion key of the introduction point used to extend to it for the ntor
+ /** Onion key of the introduction point used to extend to it for the ntor
* handshake. */
curve25519_public_key_t onion_key;
- /* Authentication key used to establish the introduction point circuit and
+ /** Authentication key used to establish the introduction point circuit and
* cross-certifies the blinded public key for the replica thus signed by
* the blinded key and in turn signs it. */
tor_cert_t *auth_key_cert;
- /* Encryption key for the "ntor" type. */
+ /** Encryption key for the "ntor" type. */
curve25519_public_key_t enc_key;
- /* Certificate cross certifying the descriptor signing key by the encryption
+ /** Certificate cross certifying the descriptor signing key by the encryption
* curve25519 key. This certificate contains the signing key and is of type
* CERT_TYPE_CROSS_HS_IP_KEYS [0B]. */
tor_cert_t *enc_key_cert;
- /* (Optional): If this introduction point is a legacy one that is version <=
+ /** (Optional): If this introduction point is a legacy one that is version <=
* 0.2.9.x (HSIntro=3), we use this extra key for the intro point to be able
* to relay the cells to the service correctly. */
struct {
- /* RSA public key. */
+ /** RSA public key. */
crypto_pk_t *key;
- /* Cross certified cert with the descriptor signing key (RSA->Ed). Because
+ /** Cross certified cert with the descriptor signing key (RSA->Ed). Because
* of the cross certification API, we need to keep the certificate binary
* blob and its length in order to properly encode it after. */
struct {
@@ -108,115 +108,115 @@ typedef struct hs_desc_intro_point_t {
} cert;
} legacy;
- /* True iff the introduction point has passed the cross certification. Upon
+ /** True iff the introduction point has passed the cross certification. Upon
* decoding an intro point, this must be true. */
unsigned int cross_certified : 1;
} hs_desc_intro_point_t;
-/* Authorized client information located in a descriptor. */
+/** Authorized client information located in a descriptor. */
typedef struct hs_desc_authorized_client_t {
- /* An identifier that the client will use to identify which auth client
+ /** An identifier that the client will use to identify which auth client
* entry it needs to use. */
uint8_t client_id[HS_DESC_CLIENT_ID_LEN];
- /* An IV that is used to decrypt the encrypted descriptor cookie. */
+ /** An IV that is used to decrypt the encrypted descriptor cookie. */
uint8_t iv[CIPHER_IV_LEN];
- /* An encrypted descriptor cookie that the client needs to decrypt to use
+ /** An encrypted descriptor cookie that the client needs to decrypt to use
* it to decrypt the descriptor. */
uint8_t encrypted_cookie[HS_DESC_ENCRYPED_COOKIE_LEN];
} hs_desc_authorized_client_t;
-/* The encrypted data section of a descriptor. Obviously the data in this is
+/** The encrypted data section of a descriptor. Obviously the data in this is
* in plaintext but encrypted once encoded. */
typedef struct hs_desc_encrypted_data_t {
- /* Bitfield of CREATE2 cell supported formats. The only currently supported
+ /** Bitfield of CREATE2 cell supported formats. The only currently supported
* format is ntor. */
unsigned int create2_ntor : 1;
- /* A list of authentication types that a client must at least support one
+ /** A list of authentication types that a client must at least support one
* in order to contact the service. Contains NULL terminated strings. */
smartlist_t *intro_auth_types;
- /* Is this descriptor a single onion service? */
+ /** Is this descriptor a single onion service? */
unsigned int single_onion_service : 1;
- /* A list of intro points. Contains hs_desc_intro_point_t objects. */
+ /** A list of intro points. Contains hs_desc_intro_point_t objects. */
smartlist_t *intro_points;
} hs_desc_encrypted_data_t;
-/* The superencrypted data section of a descriptor. Obviously the data in
+/** The superencrypted data section of a descriptor. Obviously the data in
* this is in plaintext but encrypted once encoded. */
typedef struct hs_desc_superencrypted_data_t {
- /* This field contains ephemeral x25519 public key which is used by
+ /** This field contains ephemeral x25519 public key which is used by
* the encryption scheme in the client authorization. */
curve25519_public_key_t auth_ephemeral_pubkey;
- /* A list of authorized clients. Contains hs_desc_authorized_client_t
+ /** A list of authorized clients. Contains hs_desc_authorized_client_t
* objects. */
smartlist_t *clients;
- /* Decoding only: The b64-decoded encrypted blob from the descriptor */
+ /** Decoding only: The b64-decoded encrypted blob from the descriptor */
uint8_t *encrypted_blob;
- /* Decoding only: Size of the encrypted_blob */
+ /** Decoding only: Size of the encrypted_blob */
size_t encrypted_blob_size;
} hs_desc_superencrypted_data_t;
-/* Plaintext data that is unencrypted information of the descriptor. */
+/** Plaintext data that is unencrypted information of the descriptor. */
typedef struct hs_desc_plaintext_data_t {
- /* Version of the descriptor format. Spec specifies this field as a
+ /** Version of the descriptor format. Spec specifies this field as a
* positive integer. */
uint32_t version;
- /* The lifetime of the descriptor in seconds. */
+ /** The lifetime of the descriptor in seconds. */
uint32_t lifetime_sec;
- /* Certificate with the short-term ed22519 descriptor signing key for the
+ /** Certificate with the short-term ed22519 descriptor signing key for the
* replica which is signed by the blinded public key for that replica. */
tor_cert_t *signing_key_cert;
- /* Signing public key which is used to sign the descriptor. Same public key
+ /** Signing public key which is used to sign the descriptor. Same public key
* as in the signing key certificate. */
ed25519_public_key_t signing_pubkey;
- /* Blinded public key used for this descriptor derived from the master
+ /** Blinded public key used for this descriptor derived from the master
* identity key and generated for a specific replica number. */
ed25519_public_key_t blinded_pubkey;
- /* Revision counter is incremented at each upload, regardless of whether
+ /** Revision counter is incremented at each upload, regardless of whether
* the descriptor has changed. This avoids leaking whether the descriptor
* has changed. Spec specifies this as a 8 bytes positive integer. */
uint64_t revision_counter;
- /* Decoding only: The b64-decoded superencrypted blob from the descriptor */
+ /** Decoding only: The b64-decoded superencrypted blob from the descriptor */
uint8_t *superencrypted_blob;
- /* Decoding only: Size of the superencrypted_blob */
+ /** Decoding only: Size of the superencrypted_blob */
size_t superencrypted_blob_size;
} hs_desc_plaintext_data_t;
-/* Service descriptor in its decoded form. */
+/** Service descriptor in its decoded form. */
typedef struct hs_descriptor_t {
- /* Contains the plaintext part of the descriptor. */
+ /** Contains the plaintext part of the descriptor. */
hs_desc_plaintext_data_t plaintext_data;
- /* The following contains what's in the superencrypted part of the
+ /** The following contains what's in the superencrypted part of the
* descriptor. It's only encrypted in the encoded version of the descriptor
* thus the data contained in that object is in plaintext. */
hs_desc_superencrypted_data_t superencrypted_data;
- /* The following contains what's in the encrypted part of the descriptor.
+ /** The following contains what's in the encrypted part of the descriptor.
* It's only encrypted in the encoded version of the descriptor thus the
* data contained in that object is in plaintext. */
hs_desc_encrypted_data_t encrypted_data;
- /* Subcredentials of a service, used by the client and service to decrypt
+ /** Subcredentials of a service, used by the client and service to decrypt
* the encrypted data. */
uint8_t subcredential[DIGEST256_LEN];
} hs_descriptor_t;
-/* Return true iff the given descriptor format version is supported. */
+/** Return true iff the given descriptor format version is supported. */
static inline int
hs_desc_is_supported_version(uint32_t version)
{
1
0
commit ca26ea03fcd3fbe1c9d0f10b751bed4c3a98719d
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Wed Oct 16 11:26:20 2019 -0400
hs_service.c: repair doxygen comments
---
src/feature/hs/hs_service.c | 231 ++++++++++++++++++++++----------------------
1 file changed, 116 insertions(+), 115 deletions(-)
diff --git a/src/feature/hs/hs_service.c b/src/feature/hs/hs_service.c
index 18c38ebc0..15db5dd1d 100644
--- a/src/feature/hs/hs_service.c
+++ b/src/feature/hs/hs_service.c
@@ -67,7 +67,7 @@
#include <unistd.h>
#endif
-/* Helper macro. Iterate over every service in the global map. The var is the
+/** Helper macro. Iterate over every service in the global map. The var is the
* name of the service pointer. */
#define FOR_EACH_SERVICE_BEGIN(var) \
STMT_BEGIN \
@@ -76,7 +76,7 @@
var = *var##_iter;
#define FOR_EACH_SERVICE_END } STMT_END ;
-/* Helper macro. Iterate over both current and previous descriptor of a
+/** Helper macro. Iterate over both current and previous descriptor of a
* service. The var is the name of the descriptor pointer. This macro skips
* any descriptor object of the service that is NULL. */
#define FOR_EACH_DESCRIPTOR_BEGIN(service, var) \
@@ -95,7 +95,7 @@ static const char dname_client_pubkeys[] = "authorized_clients";
static const char fname_hostname[] = "hostname";
static const char address_tld[] = "onion";
-/* Staging list of service object. When configuring service, we add them to
+/** Staging list of service object. When configuring service, we add them to
* this list considered a staging area and they will get added to our global
* map once the keys have been loaded. These two steps are separated because
* loading keys requires that we are an actual running tor process. */
@@ -118,7 +118,7 @@ static int service_encode_descriptor(const hs_service_t *service,
const ed25519_keypair_t *signing_kp,
char **encoded_out);
-/* Helper: Function to compare two objects in the service map. Return 1 if the
+/** Helper: Function to compare two objects in the service map. Return 1 if the
* two service have the same master public identity key. */
static inline int
hs_service_ht_eq(const hs_service_t *first, const hs_service_t *second)
@@ -130,7 +130,7 @@ hs_service_ht_eq(const hs_service_t *first, const hs_service_t *second)
&second->keys.identity_pk);
}
-/* Helper: Function for the service hash table code below. The key used is the
+/** Helper: Function for the service hash table code below. The key used is the
* master public identity key which is ultimately the onion address. */
static inline unsigned int
hs_service_ht_hash(const hs_service_t *service)
@@ -140,7 +140,7 @@ hs_service_ht_hash(const hs_service_t *service)
sizeof(service->keys.identity_pk.pubkey));
}
-/* This is _the_ global hash map of hidden services which indexed the service
+/** This is _the_ global hash map of hidden services which indexed the service
* contained in it by master public identity key which is roughly the onion
* address of the service. */
static struct hs_service_ht *hs_service_map;
@@ -156,7 +156,7 @@ HT_GENERATE2(hs_service_ht, hs_service_t, hs_service_node,
hs_service_ht_hash, hs_service_ht_eq,
0.6, tor_reallocarray, tor_free_)
-/* Query the given service map with a public key and return a service object
+/** Query the given service map with a public key and return a service object
* if found else NULL. It is also possible to set a directory path in the
* search query. If pk is NULL, then it will be set to zero indicating the
* hash table to compare the directory path instead. */
@@ -171,7 +171,7 @@ find_service(hs_service_ht *map, const ed25519_public_key_t *pk)
return HT_FIND(hs_service_ht, map, &dummy_service);
}
-/* Register the given service in the given map. If the service already exists
+/** Register the given service in the given map. If the service already exists
* in the map, -1 is returned. On success, 0 is returned and the service
* ownership has been transferred to the global map. */
STATIC int
@@ -196,7 +196,7 @@ register_service(hs_service_ht *map, hs_service_t *service)
return 0;
}
-/* Remove a given service from the given map. If service is NULL or the
+/** Remove a given service from the given map. If service is NULL or the
* service key is unset, return gracefully. */
STATIC void
remove_service(hs_service_ht *map, hs_service_t *service)
@@ -226,7 +226,7 @@ remove_service(hs_service_ht *map, hs_service_t *service)
}
}
-/* Set the default values for a service configuration object <b>c</b>. */
+/** Set the default values for a service configuration object <b>c</b>. */
static void
set_service_default_config(hs_service_config_t *c,
const or_options_t *options)
@@ -247,7 +247,7 @@ set_service_default_config(hs_service_config_t *c,
c->intro_dos_burst_per_sec = HS_CONFIG_V3_DOS_DEFENSE_BURST_PER_SEC_DEFAULT;
}
-/* From a service configuration object config, clear everything from it
+/** From a service configuration object config, clear everything from it
* meaning free allocated pointers and reset the values. */
STATIC void
service_clear_config(hs_service_config_t *config)
@@ -269,7 +269,7 @@ service_clear_config(hs_service_config_t *config)
memset(config, 0, sizeof(*config));
}
-/* Helper function to return a human readable description of the given intro
+/** Helper function to return a human readable description of the given intro
* point object.
*
* This function is not thread-safe. Each call to this invalidates the
@@ -301,7 +301,7 @@ describe_intro_point(const hs_service_intro_point_t *ip)
return buf;
}
-/* Return the lower bound of maximum INTRODUCE2 cells per circuit before we
+/** Return the lower bound of maximum INTRODUCE2 cells per circuit before we
* rotate intro point (defined by a consensus parameter or the default
* value). */
static int32_t
@@ -314,7 +314,7 @@ get_intro_point_min_introduce2(void)
0, INT32_MAX);
}
-/* Return the upper bound of maximum INTRODUCE2 cells per circuit before we
+/** Return the upper bound of maximum INTRODUCE2 cells per circuit before we
* rotate intro point (defined by a consensus parameter or the default
* value). */
static int32_t
@@ -327,8 +327,8 @@ get_intro_point_max_introduce2(void)
0, INT32_MAX);
}
-/* Return the minimum lifetime in seconds of an introduction point defined by a
- * consensus parameter or the default value. */
+/** Return the minimum lifetime in seconds of an introduction point defined by
+ * a consensus parameter or the default value. */
static int32_t
get_intro_point_min_lifetime(void)
{
@@ -344,8 +344,8 @@ get_intro_point_min_lifetime(void)
0, INT32_MAX);
}
-/* Return the maximum lifetime in seconds of an introduction point defined by a
- * consensus parameter or the default value. */
+/** Return the maximum lifetime in seconds of an introduction point defined by
+ * a consensus parameter or the default value. */
static int32_t
get_intro_point_max_lifetime(void)
{
@@ -361,7 +361,7 @@ get_intro_point_max_lifetime(void)
0, INT32_MAX);
}
-/* Return the number of extra introduction point defined by a consensus
+/** Return the number of extra introduction point defined by a consensus
* parameter or the default value. */
static int32_t
get_intro_point_num_extra(void)
@@ -372,7 +372,7 @@ get_intro_point_num_extra(void)
NUM_INTRO_POINTS_EXTRA, 0, 128);
}
-/* Helper: Function that needs to return 1 for the HT for each loop which
+/** Helper: Function that needs to return 1 for the HT for each loop which
* frees every service in an hash map. */
static int
ht_free_service_(struct hs_service_t *service, void *data)
@@ -384,7 +384,7 @@ ht_free_service_(struct hs_service_t *service, void *data)
return 1;
}
-/* Free every service that can be found in the global map. Once done, clear
+/** Free every service that can be found in the global map. Once done, clear
* and free the global map. */
static void
service_free_all(void)
@@ -406,7 +406,7 @@ service_free_all(void)
}
}
-/* Free a given service intro point object. */
+/** Free a given service intro point object. */
STATIC void
service_intro_point_free_(hs_service_intro_point_t *ip)
{
@@ -421,7 +421,7 @@ service_intro_point_free_(hs_service_intro_point_t *ip)
tor_free(ip);
}
-/* Helper: free an hs_service_intro_point_t object. This function is used by
+/** Helper: free an hs_service_intro_point_t object. This function is used by
* digest256map_free() which requires a void * pointer. */
static void
service_intro_point_free_void(void *obj)
@@ -429,7 +429,7 @@ service_intro_point_free_void(void *obj)
service_intro_point_free_(obj);
}
-/* Return a newly allocated service intro point and fully initialized from the
+/** Return a newly allocated service intro point and fully initialized from the
* given node_t node, if non NULL.
*
* If node is NULL, returns a hs_service_intro_point_t with an empty link
@@ -523,7 +523,7 @@ service_intro_point_add(digest256map_t *map, hs_service_intro_point_t *ip)
tor_assert_nonfatal(!old_ip_entry);
}
-/* For a given service, remove the intro point from that service's descriptors
+/** For a given service, remove the intro point from that service's descriptors
* (check both current and next descriptor) */
STATIC void
service_intro_point_remove(const hs_service_t *service,
@@ -541,7 +541,7 @@ service_intro_point_remove(const hs_service_t *service,
} FOR_EACH_DESCRIPTOR_END;
}
-/* For a given service and authentication key, return the intro point or NULL
+/** For a given service and authentication key, return the intro point or NULL
* if not found. This will check both descriptors in the service. */
STATIC hs_service_intro_point_t *
service_intro_point_find(const hs_service_t *service,
@@ -572,7 +572,7 @@ service_intro_point_find(const hs_service_t *service,
return ip;
}
-/* For a given service and intro point, return the descriptor for which the
+/** For a given service and intro point, return the descriptor for which the
* intro point is assigned to. NULL is returned if not found. */
STATIC hs_service_descriptor_t *
service_desc_find_by_intro(const hs_service_t *service,
@@ -594,7 +594,7 @@ service_desc_find_by_intro(const hs_service_t *service,
return descp;
}
-/* From a circuit identifier, get all the possible objects associated with the
+/** From a circuit identifier, get all the possible objects associated with the
* ident. If not NULL, service, ip or desc are set if the object can be found.
* They are untouched if they can't be found.
*
@@ -627,7 +627,7 @@ get_objects_from_ident(const hs_ident_circuit_t *ident,
}
}
-/* From a given intro point, return the first link specifier of type
+/** From a given intro point, return the first link specifier of type
* encountered in the link specifier list. Return NULL if it can't be found.
*
* The caller does NOT have ownership of the object, the intro point does. */
@@ -650,7 +650,7 @@ get_link_spec_by_type(const hs_service_intro_point_t *ip, uint8_t type)
return lnk_spec;
}
-/* Given a service intro point, return the node_t associated to it. This can
+/** Given a service intro point, return the node_t associated to it. This can
* return NULL if the given intro point has no legacy ID or if the node can't
* be found in the consensus. */
STATIC const node_t *
@@ -669,7 +669,7 @@ get_node_from_intro_point(const hs_service_intro_point_t *ip)
(const char *) link_specifier_getconstarray_un_legacy_id(ls));
}
-/* Given a service intro point, return the extend_info_t for it. This can
+/** Given a service intro point, return the extend_info_t for it. This can
* return NULL if the node can't be found for the intro point or the extend
* info can't be created for the found node. If direct_conn is set, the extend
* info is validated on if we can connect directly. */
@@ -698,7 +698,7 @@ get_extend_info_from_intro_point(const hs_service_intro_point_t *ip,
return info;
}
-/* Return the number of introduction points that are established for the
+/** Return the number of introduction points that are established for the
* given descriptor. */
static unsigned int
count_desc_circuit_established(const hs_service_descriptor_t *desc)
@@ -715,7 +715,7 @@ count_desc_circuit_established(const hs_service_descriptor_t *desc)
return count;
}
-/* For a given service and descriptor of that service, close all active
+/** For a given service and descriptor of that service, close all active
* directory connections. */
static void
close_directory_connections(const hs_service_t *service,
@@ -750,7 +750,7 @@ close_directory_connections(const hs_service_t *service,
smartlist_free(dir_conns);
}
-/* Close all rendezvous circuits for the given service. */
+/** Close all rendezvous circuits for the given service. */
static void
close_service_rp_circuits(hs_service_t *service)
{
@@ -780,7 +780,7 @@ close_service_rp_circuits(hs_service_t *service)
}
}
-/* Close the circuit(s) for the given map of introduction points. */
+/** Close the circuit(s) for the given map of introduction points. */
static void
close_intro_circuits(hs_service_intropoints_t *intro_points)
{
@@ -798,7 +798,7 @@ close_intro_circuits(hs_service_intropoints_t *intro_points)
} DIGEST256MAP_FOREACH_END;
}
-/* Close all introduction circuits for the given service. */
+/** Close all introduction circuits for the given service. */
static void
close_service_intro_circuits(hs_service_t *service)
{
@@ -809,7 +809,7 @@ close_service_intro_circuits(hs_service_t *service)
} FOR_EACH_DESCRIPTOR_END;
}
-/* Close any circuits related to the given service. */
+/** Close any circuits related to the given service. */
static void
close_service_circuits(hs_service_t *service)
{
@@ -825,7 +825,7 @@ close_service_circuits(hs_service_t *service)
close_service_rp_circuits(service);
}
-/* Move every ephemeral services from the src service map to the dst service
+/** Move every ephemeral services from the src service map to the dst service
* map. It is possible that a service can't be register to the dst map which
* won't stop the process of moving them all but will trigger a log warn. */
static void
@@ -855,7 +855,7 @@ move_ephemeral_services(hs_service_ht *src, hs_service_ht *dst)
}
}
-/* Return a const string of the directory path escaped. If this is an
+/** Return a const string of the directory path escaped. If this is an
* ephemeral service, it returns "[EPHEMERAL]". This can only be called from
* the main thread because escaped() uses a static variable. */
static const char *
@@ -889,7 +889,7 @@ move_hs_state(hs_service_t *src_service, hs_service_t *dst_service)
src->replay_cache_rend_cookie = NULL; /* steal pointer reference */
}
-/* Register services that are in the staging list. Once this function returns,
+/** Register services that are in the staging list. Once this function returns,
* the global service map will be set with the right content and all non
* surviving services will be cleaned up. */
static void
@@ -957,7 +957,7 @@ register_all_services(void)
hs_service_map_has_changed();
}
-/* Write the onion address of a given service to the given filename fname_ in
+/** Write the onion address of a given service to the given filename fname_ in
* the service directory. Return 0 on success else -1 on error. */
STATIC int
write_address_to_file(const hs_service_t *service, const char *fname_)
@@ -998,7 +998,7 @@ write_address_to_file(const hs_service_t *service, const char *fname_)
return ret;
}
-/* Load and/or generate private keys for the given service. On success, the
+/** Load and/or generate private keys for the given service. On success, the
* hostname file will be written to disk along with the master private key iff
* the service is not configured for offline keys. Return 0 on success else -1
* on failure. */
@@ -1096,7 +1096,7 @@ client_filename_is_valid(const char *filename)
return ret;
}
-/* Parse an authorized client from a string. The format of a client string
+/** Parse an authorized client from a string. The format of a client string
* looks like (see rend-spec-v3.txt):
*
* <auth-type>:<key-type>:<base32-encoded-public-key>
@@ -1178,7 +1178,7 @@ parse_authorized_client(const char *client_key_str)
return client;
}
-/* Load all the client public keys for the given service. Return 0 on
+/** Load all the client public keys for the given service. Return 0 on
* success else -1 on failure. */
static int
load_client_keys(hs_service_t *service)
@@ -1281,6 +1281,7 @@ load_client_keys(hs_service_t *service)
return ret;
}
+/** Release all storage held in <b>client</b>. */
STATIC void
service_authorized_client_free_(hs_service_authorized_client_t *client)
{
@@ -1291,7 +1292,7 @@ service_authorized_client_free_(hs_service_authorized_client_t *client)
tor_free(client);
}
-/* Free a given service descriptor object and all key material is wiped. */
+/** Free a given service descriptor object and all key material is wiped. */
STATIC void
service_descriptor_free_(hs_service_descriptor_t *desc)
{
@@ -1312,7 +1313,7 @@ service_descriptor_free_(hs_service_descriptor_t *desc)
tor_free(desc);
}
-/* Return a newly allocated service descriptor object. */
+/** Return a newly allocated service descriptor object. */
STATIC hs_service_descriptor_t *
service_descriptor_new(void)
{
@@ -1325,7 +1326,7 @@ service_descriptor_new(void)
return sdesc;
}
-/* Allocate and return a deep copy of client. */
+/** Allocate and return a deep copy of client. */
static hs_service_authorized_client_t *
service_authorized_client_dup(const hs_service_authorized_client_t *client)
{
@@ -1343,7 +1344,7 @@ service_authorized_client_dup(const hs_service_authorized_client_t *client)
return client_dup;
}
-/* If two authorized clients are equal, return 0. If the first one should come
+/** If two authorized clients are equal, return 0. If the first one should come
* before the second, return less than zero. If the first should come after
* the second, return greater than zero. */
static int
@@ -1360,7 +1361,7 @@ service_authorized_client_cmp(const hs_service_authorized_client_t *client1,
CURVE25519_PUBKEY_LEN);
}
-/* Helper for sorting authorized clients. */
+/** Helper for sorting authorized clients. */
static int
compare_service_authorzized_client_(const void **_a, const void **_b)
{
@@ -1368,7 +1369,7 @@ compare_service_authorzized_client_(const void **_a, const void **_b)
return service_authorized_client_cmp(a, b);
}
-/* If the list of hs_service_authorized_client_t's is different between
+/** If the list of hs_service_authorized_client_t's is different between
* src and dst, return 1. Otherwise, return 0. */
STATIC int
service_authorized_client_config_equal(const hs_service_config_t *config1,
@@ -1429,7 +1430,7 @@ service_authorized_client_config_equal(const hs_service_config_t *config1,
return ret;
}
-/* Move descriptor(s) from the src service to the dst service and modify their
+/** Move descriptor(s) from the src service to the dst service and modify their
* content if necessary. We do this during SIGHUP when we re-create our
* hidden services. */
static void
@@ -1488,7 +1489,7 @@ move_descriptors(hs_service_t *src, hs_service_t *dst)
service_descriptor_free(dst->desc_next);
}
-/* From the given service, remove all expired failing intro points for each
+/** From the given service, remove all expired failing intro points for each
* descriptor. */
static void
remove_expired_failing_intro(hs_service_t *service, time_t now)
@@ -1507,7 +1508,7 @@ remove_expired_failing_intro(hs_service_t *service, time_t now)
} FOR_EACH_DESCRIPTOR_END;
}
-/* For the given descriptor desc, put all node_t object found from its failing
+/** For the given descriptor desc, put all node_t object found from its failing
* intro point list and put them in the given node_list. */
static void
setup_intro_point_exclude_list(const hs_service_descriptor_t *desc,
@@ -1525,7 +1526,7 @@ setup_intro_point_exclude_list(const hs_service_descriptor_t *desc,
} DIGESTMAP_FOREACH_END;
}
-/* For the given failing intro point ip, we add its time of failure to the
+/** For the given failing intro point ip, we add its time of failure to the
* failed map and index it by identity digest (legacy ID) in the descriptor
* desc failed id map. */
static void
@@ -1549,7 +1550,7 @@ remember_failing_intro_point(const hs_service_intro_point_t *ip,
tor_free(prev_ptr);
}
-/* Using a given descriptor signing keypair signing_kp, a service intro point
+/** Using a given descriptor signing keypair signing_kp, a service intro point
* object ip and the time now, setup the content of an already allocated
* descriptor intro desc_ip.
*
@@ -1638,7 +1639,7 @@ setup_desc_intro_point(const ed25519_keypair_t *signing_kp,
return ret;
}
-/* Using the given descriptor from the given service, build the descriptor
+/** Using the given descriptor from the given service, build the descriptor
* intro point list so we can then encode the descriptor for publication. This
* function does not pick intro points, they have to be in the descriptor
* current map. Cryptographic material (keys) must be initialized in the
@@ -1678,7 +1679,7 @@ build_desc_intro_points(const hs_service_t *service,
} DIGEST256MAP_FOREACH_END;
}
-/* Build the descriptor signing key certificate. */
+/** Build the descriptor signing key certificate. */
static void
build_desc_signing_key_cert(hs_service_descriptor_t *desc, time_t now)
{
@@ -1704,7 +1705,7 @@ build_desc_signing_key_cert(hs_service_descriptor_t *desc, time_t now)
tor_assert_nonfatal(plaintext->signing_key_cert);
}
-/* Populate the descriptor encrypted section from the given service object.
+/** Populate the descriptor encrypted section from the given service object.
* This will generate a valid list of introduction points that can be used
* after for circuit creation. Return 0 on success else -1 on error. */
static int
@@ -1817,7 +1818,7 @@ build_service_desc_superencrypted(const hs_service_t *service,
return 0;
}
-/* Populate the descriptor plaintext section from the given service object.
+/** Populate the descriptor plaintext section from the given service object.
* The caller must make sure that the keys in the descriptors are valid that
* is are non-zero. This can't fail. */
static void
@@ -1868,7 +1869,7 @@ generate_ope_cipher_for_desc(const hs_service_descriptor_t *hs_desc)
return crypto_ope_new(key);
}
-/* For the given service and descriptor object, create the key material which
+/** For the given service and descriptor object, create the key material which
* is the blinded keypair, the descriptor signing keypair, the ephemeral
* keypair, and the descriptor cookie. Return 0 on success else -1 on error
* where the generated keys MUST be ignored. */
@@ -1930,7 +1931,7 @@ build_service_desc_keys(const hs_service_t *service,
return ret;
}
-/* Given a service and the current time, build a descriptor for the service.
+/** Given a service and the current time, build a descriptor for the service.
* This function does not pick introduction point, this needs to be done by
* the update function. On success, desc_out will point to the newly allocated
* descriptor object.
@@ -1987,7 +1988,7 @@ build_service_descriptor(hs_service_t *service, uint64_t time_period_num,
service_descriptor_free(desc);
}
-/* Build both descriptors for the given service that has just booted up.
+/** Build both descriptors for the given service that has just booted up.
* Because it's a special case, it deserves its special function ;). */
static void
build_descriptors_for_new_service(hs_service_t *service, time_t now)
@@ -2037,7 +2038,7 @@ build_descriptors_for_new_service(hs_service_t *service, time_t now)
safe_str_client(service->onion_address));
}
-/* Build descriptors for each service if needed. There are conditions to build
+/** Build descriptors for each service if needed. There are conditions to build
* a descriptor which are details in the function. */
STATIC void
build_all_descriptors(time_t now)
@@ -2070,7 +2071,7 @@ build_all_descriptors(time_t now)
} FOR_EACH_DESCRIPTOR_END;
}
-/* Randomly pick a node to become an introduction point but not present in the
+/** Randomly pick a node to become an introduction point but not present in the
* given exclude_nodes list. The chosen node is put in the exclude list
* regardless of success or not because in case of failure, the node is simply
* unsusable from that point on.
@@ -2131,7 +2132,7 @@ pick_intro_point(unsigned int direct_conn, smartlist_t *exclude_nodes)
return NULL;
}
-/* For a given descriptor from the given service, pick any needed intro points
+/** For a given descriptor from the given service, pick any needed intro points
* and update the current map with those newly picked intro points. Return the
* number node that might have been added to the descriptor current map. */
static unsigned int
@@ -2255,7 +2256,7 @@ service_desc_schedule_upload(hs_service_descriptor_t *desc,
}
}
-/* Pick missing intro points for this descriptor if needed. */
+/** Pick missing intro points for this descriptor if needed. */
static void
update_service_descriptor_intro_points(hs_service_t *service,
hs_service_descriptor_t *desc, time_t now)
@@ -2296,7 +2297,7 @@ update_service_descriptor_intro_points(hs_service_t *service,
}
}
-/* Update descriptor intro points for each service if needed. We do this as
+/** Update descriptor intro points for each service if needed. We do this as
* part of the periodic event because we need to establish intro point circuits
* before we publish descriptors. */
STATIC void
@@ -2311,7 +2312,7 @@ update_all_descriptors_intro_points(time_t now)
} FOR_EACH_SERVICE_END;
}
-/* Return true iff the given intro point has expired that is it has been used
+/** Return true iff the given intro point has expired that is it has been used
* for too long or we've reached our max seen INTRODUCE2 cell. */
STATIC int
intro_point_should_expire(const hs_service_intro_point_t *ip,
@@ -2333,7 +2334,7 @@ intro_point_should_expire(const hs_service_intro_point_t *ip,
return 1;
}
-/* Return true iff we should remove the intro point ip from its service.
+/** Return true iff we should remove the intro point ip from its service.
*
* We remove an intro point from the service descriptor list if one of
* these criteria is met:
@@ -2395,7 +2396,7 @@ should_remove_intro_point(hs_service_intro_point_t *ip, time_t now)
return ret;
}
-/* Go over the given set of intro points for each service and remove any
+/** Go over the given set of intro points for each service and remove any
* invalid ones.
*
* If an intro point is removed, the circuit (if any) is immediately close.
@@ -2458,7 +2459,7 @@ cleanup_intro_points(hs_service_t *service, time_t now)
smartlist_free(ips_to_free);
}
-/* Set the next rotation time of the descriptors for the given service for the
+/** Set the next rotation time of the descriptors for the given service for the
* time now. */
static void
set_rotation_time(hs_service_t *service)
@@ -2477,7 +2478,7 @@ set_rotation_time(hs_service_t *service)
}
}
-/* Return true iff the service should rotate its descriptor. The time now is
+/** Return true iff the service should rotate its descriptor. The time now is
* only used to fetch the live consensus and if none can be found, this
* returns false. */
static unsigned int
@@ -2529,7 +2530,7 @@ should_rotate_descriptors(hs_service_t *service, time_t now)
return 1;
}
-/* Rotate the service descriptors of the given service. The current descriptor
+/** Rotate the service descriptors of the given service. The current descriptor
* will be freed, the next one put in as the current and finally the next
* descriptor pointer is NULLified. */
static void
@@ -2551,7 +2552,7 @@ rotate_service_descriptors(hs_service_t *service)
set_rotation_time(service);
}
-/* Rotate descriptors for each service if needed. A non existing current
+/** Rotate descriptors for each service if needed. A non existing current
* descriptor will trigger a descriptor build for the next time period. */
STATIC void
rotate_all_descriptors(time_t now)
@@ -2580,7 +2581,7 @@ rotate_all_descriptors(time_t now)
} FOR_EACH_SERVICE_END;
}
-/* Scheduled event run from the main loop. Make sure all our services are up
+/** Scheduled event run from the main loop. Make sure all our services are up
* to date and ready for the other scheduled events. This includes looking at
* the introduction points status and descriptor rotation time. */
STATIC void
@@ -2615,7 +2616,7 @@ run_housekeeping_event(time_t now)
} FOR_EACH_SERVICE_END;
}
-/* Scheduled event run from the main loop. Make sure all descriptors are up to
+/** Scheduled event run from the main loop. Make sure all descriptors are up to
* date. Once this returns, each service descriptor needs to be considered for
* new introduction circuits and then for upload. */
static void
@@ -2692,7 +2693,7 @@ launch_intro_point_circuits(hs_service_t *service)
} FOR_EACH_DESCRIPTOR_END;
}
-/* Don't try to build more than this many circuits before giving up for a
+/** Don't try to build more than this many circuits before giving up for a
* while. Dynamically calculated based on the configured number of intro
* points for the given service and how many descriptor exists. The default
* use case of 3 introduction points and two descriptors will allow 28
@@ -2708,7 +2709,7 @@ get_max_intro_circ_per_period(const hs_service_t *service)
tor_assert(service->config.num_intro_points <=
HS_CONFIG_V3_MAX_INTRO_POINTS);
-/* For a testing network, allow to do it for the maximum amount so circuit
+/** For a testing network, allow to do it for the maximum amount so circuit
* creation and rotation and so on can actually be tested without limit. */
#define MAX_INTRO_POINT_CIRCUIT_RETRIES_TESTING -1
if (get_options()->TestingTorNetwork) {
@@ -2737,7 +2738,7 @@ get_max_intro_circ_per_period(const hs_service_t *service)
return (count * multiplier);
}
-/* For the given service, return 1 if the service is allowed to launch more
+/** For the given service, return 1 if the service is allowed to launch more
* introduction circuits else 0 if the maximum has been reached for the retry
* period of INTRO_CIRC_RETRY_PERIOD. */
STATIC int
@@ -2783,7 +2784,7 @@ can_service_launch_intro_circuit(hs_service_t *service, time_t now)
return 1;
}
-/* Scheduled event run from the main loop. Make sure we have all the circuits
+/** Scheduled event run from the main loop. Make sure we have all the circuits
* we need for each service. */
static void
run_build_circuit_event(time_t now)
@@ -2813,7 +2814,7 @@ run_build_circuit_event(time_t now)
} FOR_EACH_SERVICE_END;
}
-/* Encode and sign the service descriptor desc and upload it to the given
+/** Encode and sign the service descriptor desc and upload it to the given
* hidden service directory. This does nothing if PublishHidServDescriptors
* is false. */
static void
@@ -2949,7 +2950,7 @@ set_descriptor_revision_counter(hs_service_descriptor_t *hs_desc, time_t now,
hs_desc->desc->plaintext_data.revision_counter = rev_counter;
}
-/* Encode and sign the service descriptor desc and upload it to the
+/** Encode and sign the service descriptor desc and upload it to the
* responsible hidden service directories. If for_next_period is true, the set
* of directories are selected using the next hsdir_index. This does nothing
* if PublishHidServDescriptors is false. */
@@ -3046,7 +3047,7 @@ service_desc_hsdirs_changed(const hs_service_t *service,
return should_reupload;
}
-/* Return 1 if the given descriptor from the given service can be uploaded
+/** Return 1 if the given descriptor from the given service can be uploaded
* else return 0 if it can not. */
static int
should_service_upload_descriptor(const hs_service_t *service,
@@ -3103,7 +3104,7 @@ should_service_upload_descriptor(const hs_service_t *service,
return 0;
}
-/* Refresh the given service descriptor meaning this will update every mutable
+/** Refresh the given service descriptor meaning this will update every mutable
* field that needs to be updated before we upload.
*
* This should ONLY be called before uploading a descriptor. It assumes that
@@ -3134,7 +3135,7 @@ refresh_service_descriptor(const hs_service_t *service,
set_descriptor_revision_counter(desc, now, service->desc_current == desc);
}
-/* Scheduled event run from the main loop. Try to upload the descriptor for
+/** Scheduled event run from the main loop. Try to upload the descriptor for
* each service. */
STATIC void
run_upload_descriptor_event(time_t now)
@@ -3183,7 +3184,7 @@ run_upload_descriptor_event(time_t now)
consider_republishing_hs_descriptors = 0;
}
-/* Called when the introduction point circuit is done building and ready to be
+/** Called when the introduction point circuit is done building and ready to be
* used. */
static void
service_intro_circ_has_opened(origin_circuit_t *circ)
@@ -3241,7 +3242,7 @@ service_intro_circ_has_opened(origin_circuit_t *circ)
return;
}
-/* Called when a rendezvous circuit is done building and ready to be used. */
+/** Called when a rendezvous circuit is done building and ready to be used. */
static void
service_rendezvous_circ_has_opened(origin_circuit_t *circ)
{
@@ -3282,7 +3283,7 @@ service_rendezvous_circ_has_opened(origin_circuit_t *circ)
return;
}
-/* We've been expecting an INTRO_ESTABLISHED cell on this circuit and it just
+/** We've been expecting an INTRO_ESTABLISHED cell on this circuit and it just
* arrived. Handle the INTRO_ESTABLISHED cell arriving on the given
* introduction circuit. Return 0 on success else a negative value. */
static int
@@ -3340,7 +3341,7 @@ service_handle_intro_established(origin_circuit_t *circ,
return -1;
}
-/* We just received an INTRODUCE2 cell on the established introduction circuit
+/** We just received an INTRODUCE2 cell on the established introduction circuit
* circ. Handle the cell and return 0 on success else a negative value. */
static int
service_handle_introduce2(origin_circuit_t *circ, const uint8_t *payload,
@@ -3388,7 +3389,7 @@ service_handle_introduce2(origin_circuit_t *circ, const uint8_t *payload,
return -1;
}
-/* Add to list every filename used by service. This is used by the sandbox
+/** Add to list every filename used by service. This is used by the sandbox
* subsystem. */
static void
service_add_fnames_to_list(const hs_service_t *service, smartlist_t *list)
@@ -3410,7 +3411,7 @@ service_add_fnames_to_list(const hs_service_t *service, smartlist_t *list)
smartlist_add(list, hs_path_from_filename(s_dir, fname));
}
-/* Return true iff the given service identity key is present on disk. */
+/** Return true iff the given service identity key is present on disk. */
static int
service_key_on_disk(const char *directory_path)
{
@@ -3434,7 +3435,7 @@ service_key_on_disk(const char *directory_path)
return ret;
}
-/* This is a proxy function before actually calling hs_desc_encode_descriptor
+/** This is a proxy function before actually calling hs_desc_encode_descriptor
* because we need some preprocessing here */
static int
service_encode_descriptor(const hs_service_t *service,
@@ -3465,7 +3466,7 @@ service_encode_descriptor(const hs_service_t *service,
/* Public API */
/* ========== */
-/* This is called everytime the service map (v2 or v3) changes that is if an
+/** This is called everytime the service map (v2 or v3) changes that is if an
* element is added or removed. */
void
hs_service_map_has_changed(void)
@@ -3476,7 +3477,7 @@ hs_service_map_has_changed(void)
rescan_periodic_events(get_options());
}
-/* Upload an encoded descriptor in encoded_desc of the given version. This
+/** Upload an encoded descriptor in encoded_desc of the given version. This
* descriptor is for the service identity_pk and blinded_pk used to setup the
* directory connection identifier. It is uploaded to the directory hsdir_rs
* routerstatus_t object.
@@ -3524,7 +3525,7 @@ hs_service_upload_desc_to_dir(const char *encoded_desc,
directory_request_free(dir_req);
}
-/* Add the ephemeral service using the secret key sk and ports. Both max
+/** Add the ephemeral service using the secret key sk and ports. Both max
* streams parameter will be set in the newly created service.
*
* Ownership of sk and ports is passed to this routine. Regardless of
@@ -3604,7 +3605,7 @@ hs_service_add_ephemeral(ed25519_secret_key_t *sk, smartlist_t *ports,
return ret;
}
-/* For the given onion address, delete the ephemeral service. Return 0 on
+/** For the given onion address, delete the ephemeral service. Return 0 on
* success else -1 on error. */
int
hs_service_del_ephemeral(const char *address)
@@ -3654,7 +3655,7 @@ hs_service_del_ephemeral(const char *address)
return -1;
}
-/* Using the ed25519 public key pk, find a service for that key and return the
+/** Using the ed25519 public key pk, find a service for that key and return the
* current encoded descriptor as a newly allocated string or NULL if not
* found. This is used by the control port subsystem. */
char *
@@ -3680,7 +3681,7 @@ hs_service_lookup_current_desc(const ed25519_public_key_t *pk)
return NULL;
}
-/* Return the number of service we have configured and usable. */
+/** Return the number of service we have configured and usable. */
MOCK_IMPL(unsigned int,
hs_service_get_num_services,(void))
{
@@ -3690,7 +3691,7 @@ hs_service_get_num_services,(void))
return HT_SIZE(hs_service_map);
}
-/* Called once an introduction circuit is closed. If the circuit doesn't have
+/** Called once an introduction circuit is closed. If the circuit doesn't have
* a v3 identifier, it is ignored. */
void
hs_service_intro_circ_has_closed(origin_circuit_t *circ)
@@ -3732,7 +3733,7 @@ hs_service_intro_circ_has_closed(origin_circuit_t *circ)
return;
}
-/* Given conn, a rendezvous edge connection acting as an exit stream, look up
+/** Given conn, a rendezvous edge connection acting as an exit stream, look up
* the hidden service for the circuit circ, and look up the port and address
* based on the connection port. Assign the actual connection address.
*
@@ -3830,7 +3831,7 @@ hs_service_exports_circuit_id(const ed25519_public_key_t *pk)
return service->config.circuit_id_protocol;
}
-/* Add to file_list every filename used by a configured hidden service, and to
+/** Add to file_list every filename used by a configured hidden service, and to
* dir_list every directory path used by a configured hidden service. This is
* used by the sandbox subsystem to whitelist those. */
void
@@ -3855,7 +3856,7 @@ hs_service_lists_fnames_for_sandbox(smartlist_t *file_list,
} FOR_EACH_DESCRIPTOR_END;
}
-/* Called when our internal view of the directory has changed. We might have
+/** Called when our internal view of the directory has changed. We might have
* received a new batch of descriptors which might affect the shape of the
* HSDir hash ring. Signal that we should reexamine the hash ring and
* re-upload our HS descriptors if needed. */
@@ -3872,7 +3873,7 @@ hs_service_dir_info_changed(void)
}
}
-/* Called when we get an INTRODUCE2 cell on the circ. Respond to the cell and
+/** Called when we get an INTRODUCE2 cell on the circ. Respond to the cell and
* launch a circuit to the rendezvous point. */
int
hs_service_receive_introduce2(origin_circuit_t *circ, const uint8_t *payload,
@@ -3903,7 +3904,7 @@ hs_service_receive_introduce2(origin_circuit_t *circ, const uint8_t *payload,
return ret;
}
-/* Called when we get an INTRO_ESTABLISHED cell. Mark the circuit as an
+/** Called when we get an INTRO_ESTABLISHED cell. Mark the circuit as an
* established introduction point. Return 0 on success else a negative value
* and the circuit is closed. */
int
@@ -3940,7 +3941,7 @@ hs_service_receive_intro_established(origin_circuit_t *circ,
return -1;
}
-/* Called when any kind of hidden service circuit is done building thus
+/** Called when any kind of hidden service circuit is done building thus
* opened. This is the entry point from the circuit subsystem. */
void
hs_service_circuit_has_opened(origin_circuit_t *circ)
@@ -3969,7 +3970,7 @@ hs_service_circuit_has_opened(origin_circuit_t *circ)
}
}
-/* Return the service version by looking at the key in the service directory.
+/** Return the service version by looking at the key in the service directory.
* If the key is not found or unrecognized, -1 is returned. Else, the service
* version is returned. */
int
@@ -3999,7 +4000,7 @@ hs_service_get_version_from_key(const hs_service_t *service)
return version;
}
-/* Load and/or generate keys for all onion services including the client
+/** Load and/or generate keys for all onion services including the client
* authorization if any. Return 0 on success, -1 on failure. */
int
hs_service_load_all_keys(void)
@@ -4035,7 +4036,7 @@ hs_service_load_all_keys(void)
return -1;
}
-/* Put all service object in the given service list. After this, the caller
+/** Put all service object in the given service list. After this, the caller
* looses ownership of every elements in the list and responsible to free the
* list pointer. */
void
@@ -4052,7 +4053,7 @@ hs_service_stage_services(const smartlist_t *service_list)
smartlist_add_all(hs_service_staging_list, service_list);
}
-/* Allocate and initilize a service object. The service configuration will
+/** Allocate and initilize a service object. The service configuration will
* contain the default values. Return the newly allocated object pointer. This
* function can't fail. */
hs_service_t *
@@ -4070,7 +4071,7 @@ hs_service_new(const or_options_t *options)
return service;
}
-/* Free the given <b>service</b> object and all its content. This function
+/** Free the given <b>service</b> object and all its content. This function
* also takes care of wiping service keys from memory. It is safe to pass a
* NULL pointer. */
void
@@ -4099,7 +4100,7 @@ hs_service_free_(hs_service_t *service)
tor_free(service);
}
-/* Periodic callback. Entry point from the main loop to the HS service
+/** Periodic callback. Entry point from the main loop to the HS service
* subsystem. This is call every second. This is skipped if tor can't build a
* circuit or the network is disabled. */
void
@@ -4122,7 +4123,7 @@ hs_service_run_scheduled_events(time_t now)
run_upload_descriptor_event(now);
}
-/* Initialize the service HS subsystem. */
+/** Initialize the service HS subsystem. */
void
hs_service_init(void)
{
@@ -4139,7 +4140,7 @@ hs_service_init(void)
hs_service_staging_list = smartlist_new();
}
-/* Release all global storage of the hidden service subsystem. */
+/** Release all global storage of the hidden service subsystem. */
void
hs_service_free_all(void)
{
@@ -4149,14 +4150,14 @@ hs_service_free_all(void)
#ifdef TOR_UNIT_TESTS
-/* Return the global service map size. Only used by unit test. */
+/** Return the global service map size. Only used by unit test. */
STATIC unsigned int
get_hs_service_map_size(void)
{
return HT_SIZE(hs_service_map);
}
-/* Return the staging list size. Only used by unit test. */
+/** Return the staging list size. Only used by unit test. */
STATIC int
get_hs_service_staging_list_size(void)
{
1
0
commit 0e9e5c37b7ee60d3e47e1c6586f1c6bc2215e506
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Wed Oct 16 11:18:43 2019 -0400
hs_service.h: repair doxygen comments.
---
src/feature/hs/hs_service.h | 136 ++++++++++++++++++++++----------------------
1 file changed, 69 insertions(+), 67 deletions(-)
diff --git a/src/feature/hs/hs_service.h b/src/feature/hs/hs_service.h
index c4bbb293b..7d865f375 100644
--- a/src/feature/hs/hs_service.h
+++ b/src/feature/hs/hs_service.h
@@ -21,92 +21,92 @@
/* Trunnel */
#include "trunnel/hs/cell_establish_intro.h"
-/* When loading and configuring a service, this is the default version it will
+/** When loading and configuring a service, this is the default version it will
* be configured for as it is possible that no HiddenServiceVersion is
* present. */
#define HS_SERVICE_DEFAULT_VERSION HS_VERSION_THREE
-/* As described in the specification, service publishes their next descriptor
+/** As described in the specification, service publishes their next descriptor
* at a random time between those two values (in seconds). */
#define HS_SERVICE_NEXT_UPLOAD_TIME_MIN (60 * 60)
#define HS_SERVICE_NEXT_UPLOAD_TIME_MAX (120 * 60)
-/* Service side introduction point. */
+/** Service side introduction point. */
typedef struct hs_service_intro_point_t {
- /* Top level intropoint "shared" data between client/service. */
+ /** Top level intropoint "shared" data between client/service. */
hs_intropoint_t base;
- /* Onion key of the introduction point used to extend to it for the ntor
+ /** Onion key of the introduction point used to extend to it for the ntor
* handshake. */
curve25519_public_key_t onion_key;
- /* Authentication keypair used to create the authentication certificate
+ /** Authentication keypair used to create the authentication certificate
* which is published in the descriptor. */
ed25519_keypair_t auth_key_kp;
- /* Encryption keypair for the "ntor" type. */
+ /** Encryption keypair for the "ntor" type. */
curve25519_keypair_t enc_key_kp;
- /* Legacy key if that intro point doesn't support v3. This should be used if
+ /** Legacy key if that intro point doesn't support v3. This should be used if
* the base object legacy flag is set. */
crypto_pk_t *legacy_key;
- /* Legacy key SHA1 public key digest. This should be used only if the base
+ /** Legacy key SHA1 public key digest. This should be used only if the base
* object legacy flag is set. */
uint8_t legacy_key_digest[DIGEST_LEN];
- /* Amount of INTRODUCE2 cell accepted from this intro point. */
+ /** Amount of INTRODUCE2 cell accepted from this intro point. */
uint64_t introduce2_count;
- /* Maximum number of INTRODUCE2 cell this intro point should accept. */
+ /** Maximum number of INTRODUCE2 cell this intro point should accept. */
uint64_t introduce2_max;
- /* The time at which this intro point should expire and stop being used. */
+ /** The time at which this intro point should expire and stop being used. */
time_t time_to_expire;
- /* The amount of circuit creation we've made to this intro point. This is
+ /** The amount of circuit creation we've made to this intro point. This is
* incremented every time we do a circuit relaunch on this intro point which
* is triggered when the circuit dies but the node is still in the
* consensus. After MAX_INTRO_POINT_CIRCUIT_RETRIES, we give up on it. */
uint32_t circuit_retries;
- /* Set if this intro point has an established circuit. */
+ /** Set if this intro point has an established circuit. */
unsigned int circuit_established : 1;
- /* Replay cache recording the encrypted part of an INTRODUCE2 cell that the
+ /** Replay cache recording the encrypted part of an INTRODUCE2 cell that the
* circuit associated with this intro point has received. This is used to
* prevent replay attacks. */
replaycache_t *replay_cache;
- /* Support the INTRO2 DoS defense. If set, the DoS extension described by
+ /** Support the INTRO2 DoS defense. If set, the DoS extension described by
* proposal 305 is sent. */
unsigned int support_intro2_dos_defense : 1;
} hs_service_intro_point_t;
-/* Object handling introduction points of a service. */
+/** Object handling introduction points of a service. */
typedef struct hs_service_intropoints_t {
- /* The time at which we've started our retry period to build circuits. We
+ /** The time at which we've started our retry period to build circuits. We
* don't want to stress circuit creation so we can only retry for a certain
* time and then after we stop and wait. */
time_t retry_period_started;
- /* Number of circuit we've launched during a single retry period. */
+ /** Number of circuit we've launched during a single retry period. */
unsigned int num_circuits_launched;
- /* Contains the current hs_service_intro_point_t objects indexed by
+ /** Contains the current hs_service_intro_point_t objects indexed by
* authentication public key. */
digest256map_t *map;
- /* Contains node's identity key digest that were introduction point for this
+ /** Contains node's identity key digest that were introduction point for this
* descriptor but were retried to many times. We keep those so we avoid
* re-picking them over and over for a circuit retry period.
* XXX: Once we have #22173, change this to only use ed25519 identity. */
digestmap_t *failed_id;
} hs_service_intropoints_t;
-/* Representation of a service descriptor.
+/** Representation of a service descriptor.
*
* Some elements of the descriptor are mutable whereas others are immutable:
-
+ *
* Immutable elements are initialized once when the descriptor is built (when
* service descriptors gets rotated). This means that these elements are
* initialized once and then they don't change for the lifetime of the
@@ -121,40 +121,42 @@ typedef struct hs_service_intropoints_t {
* update_service_descriptor_intro_points().
*/
typedef struct hs_service_descriptor_t {
- /* Immutable: Client authorization ephemeral keypair. */
+ /** Immutable: Client authorization ephemeral keypair. */
curve25519_keypair_t auth_ephemeral_kp;
- /* Immutable: Descriptor cookie used to encrypt the descriptor, when the
+ /** Immutable: Descriptor cookie used to encrypt the descriptor, when the
* client authorization is enabled */
uint8_t descriptor_cookie[HS_DESC_DESCRIPTOR_COOKIE_LEN];
- /* Immutable: Descriptor signing keypair. */
+ /** Immutable: Descriptor signing keypair. */
ed25519_keypair_t signing_kp;
- /* Immutable: Blinded keypair derived from the master identity public key. */
+ /** Immutable: Blinded keypair derived from the master identity public
+ * key. */
ed25519_keypair_t blinded_kp;
- /* Immutable: The time period number this descriptor has been created for. */
+ /** Immutable: The time period number this descriptor has been created
+ * for. */
uint64_t time_period_num;
/** Immutable: The OPE cipher for encrypting revision counters for this
* descriptor. Tied to the descriptor blinded key. */
struct crypto_ope_t *ope_cipher;
- /* Mutable: Decoded descriptor. This object is used for encoding when the
+ /** Mutable: Decoded descriptor. This object is used for encoding when the
* service publishes the descriptor. */
hs_descriptor_t *desc;
- /* Mutable: When is the next time when we should upload the descriptor. */
+ /** Mutable: When is the next time when we should upload the descriptor. */
time_t next_upload_time;
- /* Mutable: Introduction points assign to this descriptor which contains
+ /** Mutable: Introduction points assign to this descriptor which contains
* hs_service_intropoints_t object indexed by authentication key (the RSA key
* if the node is legacy). */
hs_service_intropoints_t intro_points;
- /* Mutable: True iff we have missing intro points for this descriptor because
- * we couldn't pick any nodes. */
+ /** Mutable: True iff we have missing intro points for this descriptor
+ * because we couldn't pick any nodes. */
unsigned int missing_intro_points : 1;
/** Mutable: List of the responsible HSDirs (their b64ed identity digest)
@@ -164,20 +166,20 @@ typedef struct hs_service_descriptor_t {
smartlist_t *previous_hsdirs;
} hs_service_descriptor_t;
-/* Service key material. */
+/** Service key material. */
typedef struct hs_service_keys_t {
- /* Master identify public key. */
+ /** Master identify public key. */
ed25519_public_key_t identity_pk;
- /* Master identity private key. */
+ /** Master identity private key. */
ed25519_secret_key_t identity_sk;
- /* True iff the key is kept offline which means the identity_sk MUST not be
+ /** True iff the key is kept offline which means the identity_sk MUST not be
* used in that case. */
unsigned int is_identify_key_offline : 1;
} hs_service_keys_t;
/** Service side configuration of client authorization. */
typedef struct hs_service_authorized_client_t {
- /* The client auth public key used to encrypt the descriptor cookie. */
+ /** The client auth public key used to encrypt the descriptor cookie. */
curve25519_public_key_t client_pk;
} hs_service_authorized_client_t;
@@ -190,60 +192,60 @@ typedef enum {
HS_CIRCUIT_ID_PROTOCOL_HAPROXY
} hs_circuit_id_protocol_t;
-/* Service configuration. The following are set from the torrc options either
+/** Service configuration. The following are set from the torrc options either
* set by the configuration file or by the control port. Nothing else should
* change those values. */
typedef struct hs_service_config_t {
- /* Protocol version of the service. Specified by HiddenServiceVersion
+ /** Protocol version of the service. Specified by HiddenServiceVersion
* option. */
uint32_t version;
- /* Have we explicitly set HiddenServiceVersion? */
+ /** Have we explicitly set HiddenServiceVersion? */
unsigned int hs_version_explicitly_set : 1;
- /* List of rend_service_port_config_t */
+ /** List of rend_service_port_config_t */
smartlist_t *ports;
- /* Path on the filesystem where the service persistent data is stored. NULL
+ /** Path on the filesystem where the service persistent data is stored. NULL
* if the service is ephemeral. Specified by HiddenServiceDir option. */
char *directory_path;
- /* The maximum number of simultaneous streams per rendezvous circuit that
+ /** The maximum number of simultaneous streams per rendezvous circuit that
* are allowed to be created. No limit if 0. Specified by
* HiddenServiceMaxStreams option. */
uint64_t max_streams_per_rdv_circuit;
- /* If true, we close circuits that exceed the max_streams_per_rdv_circuit
+ /** If true, we close circuits that exceed the max_streams_per_rdv_circuit
* limit. Specified by HiddenServiceMaxStreamsCloseCircuit option. */
unsigned int max_streams_close_circuit : 1;
- /* How many introduction points this service has. Specified by
+ /** How many introduction points this service has. Specified by
* HiddenServiceNumIntroductionPoints option. */
unsigned int num_intro_points;
- /* True iff the client auth is enabled. */
+ /** True iff the client auth is enabled. */
unsigned int is_client_auth_enabled : 1;
- /* List of hs_service_authorized_client_t's of clients that may access this
+ /** List of hs_service_authorized_client_t's of clients that may access this
* service. Specified by HiddenServiceAuthorizeClient option. */
smartlist_t *clients;
- /* True iff we allow request made on unknown ports. Specified by
+ /** True iff we allow request made on unknown ports. Specified by
* HiddenServiceAllowUnknownPorts option. */
unsigned int allow_unknown_ports : 1;
- /* If true, this service is a Single Onion Service. Specified by
+ /** If true, this service is a Single Onion Service. Specified by
* HiddenServiceSingleHopMode and HiddenServiceNonAnonymousMode options. */
unsigned int is_single_onion : 1;
- /* If true, allow group read permissions on the directory_path. Specified by
+ /** If true, allow group read permissions on the directory_path. Specified by
* HiddenServiceDirGroupReadable option. */
unsigned int dir_group_readable : 1;
- /* Is this service ephemeral? */
+ /** Is this service ephemeral? */
unsigned int is_ephemeral : 1;
- /* Does this service export the circuit ID of its clients? */
+ /** Does this service export the circuit ID of its clients? */
hs_circuit_id_protocol_t circuit_id_protocol;
/* DoS defenses. For the ESTABLISH_INTRO cell extension. */
@@ -252,58 +254,58 @@ typedef struct hs_service_config_t {
uint32_t intro_dos_burst_per_sec;
} hs_service_config_t;
-/* Service state. */
+/** Service state. */
typedef struct hs_service_state_t {
- /* The time at which we've started our retry period to build circuits. We
+ /** The time at which we've started our retry period to build circuits. We
* don't want to stress circuit creation so we can only retry for a certain
* time and then after we stop and wait. */
time_t intro_circ_retry_started_time;
- /* Number of circuit we've launched during a single retry period. This
+ /** Number of circuit we've launched during a single retry period. This
* should never go over MAX_INTRO_CIRCS_PER_PERIOD. */
unsigned int num_intro_circ_launched;
- /* Replay cache tracking the REND_COOKIE found in INTRODUCE2 cell to detect
+ /** Replay cache tracking the REND_COOKIE found in INTRODUCE2 cell to detect
* repeats. Clients may send INTRODUCE1 cells for the same rendezvous point
* through two or more different introduction points; when they do, this
* keeps us from launching multiple simultaneous attempts to connect to the
* same rend point. */
replaycache_t *replay_cache_rend_cookie;
- /* When is the next time we should rotate our descriptors. This is has to be
+ /** When is the next time we should rotate our descriptors. This is has to be
* done at the start time of the next SRV protocol run. */
time_t next_rotation_time;
} hs_service_state_t;
-/* Representation of a service running on this tor instance. */
+/** Representation of a service running on this tor instance. */
typedef struct hs_service_t {
- /* Onion address base32 encoded and NUL terminated. We keep it for logging
+ /** Onion address base32 encoded and NUL terminated. We keep it for logging
* purposes so we don't have to build it everytime. */
char onion_address[HS_SERVICE_ADDR_LEN_BASE32 + 1];
- /* Hashtable node: use to look up the service by its master public identity
+ /** Hashtable node: use to look up the service by its master public identity
* key in the service global map. */
HT_ENTRY(hs_service_t) hs_service_node;
- /* Service state which contains various flags and counters. */
+ /** Service state which contains various flags and counters. */
hs_service_state_t state;
- /* Key material of the service. */
+ /** Key material of the service. */
hs_service_keys_t keys;
- /* Configuration of the service. */
+ /** Configuration of the service. */
hs_service_config_t config;
- /* Current descriptor. */
+ /** Current descriptor. */
hs_service_descriptor_t *desc_current;
- /* Next descriptor. */
+ /** Next descriptor. */
hs_service_descriptor_t *desc_next;
/* XXX: Credential (client auth.) #20700. */
} hs_service_t;
-/* For the service global hash map, we define a specific type for it which
+/** For the service global hash map, we define a specific type for it which
* will make it safe to use and specific to some controlled parameters such as
* the hashing function and how to compare services. */
typedef HT_HEAD(hs_service_ht, hs_service_t) hs_service_ht;
1
0
commit 8e91b85c38934963b221c737f1c28b8fc5c8e0c4
Author: Antonela <hola(a)antonela.me>
Date: Wed Oct 16 12:26:46 2019 -0300
add alpha testers survey link
---
content/user-research/become-tester/contents.lr | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/content/user-research/become-tester/contents.lr b/content/user-research/become-tester/contents.lr
index 3602131..c30c983 100644
--- a/content/user-research/become-tester/contents.lr
+++ b/content/user-research/become-tester/contents.lr
@@ -2,21 +2,9 @@ section: user research
---
section_id: user-research
---
-color: primary
----
-image: eye
----
-_template: layout.html
----
title: Become a Tester
---
-subtitle: We regularly release Tor Browser Alpha versions to allow users to test software improvements and new ideas.
+subtitle: We regularly release Tor Browser Alpha versions to allow users to test software improvements and new ideas. [Sign up to be in our testing pool](https://survey.torproject.org/alpha-tester).
---
key: 1
---
-html: two-columns-page.html
----
-body:
-
-We regularly release Tor Browser Alpha versions to allow users to test software improvements and new ideas.
-Sign up to be in our testing pool >
1
0

[translation/tor-launcher-network-settings] https://gitweb.torproject.org/translation.git/commit/?h=tor-launcher-network-settings
by translation@torproject.org 16 Oct '19
by translation@torproject.org 16 Oct '19
16 Oct '19
commit ea6b8a23b5e288c6707d08120268d8524c099fd5
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Oct 16 15:23:02 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tor-launcher-networ…
---
ja/network-settings.dtd | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ja/network-settings.dtd b/ja/network-settings.dtd
index 4e74a67c2..8d7905429 100644
--- a/ja/network-settings.dtd
+++ b/ja/network-settings.dtd
@@ -67,7 +67,7 @@
<!ENTITY torPreferences.torSettingsDescription "Tor Browser は通信トラフィックを Tor ネットワークを経由させて送信します。Tor ネットワークは世界中の何千ものボランティアによって運用されています。" >
<!ENTITY torPreferences.learnMore "詳細情報">
<!ENTITY torPreferences.bridges "ブリッジ">
-<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.bridgesDescription "ブリッジは Tor がブロックされる地域から Tor ネットワークにアクセスすることを手助けします。地域によって、あるブリッジが他のものより良く動作する可能性があります。">
<!ENTITY torPreferences.useBridge "ブリッジを使用する">
<!ENTITY torPreferences.requestNewBridge "新しいブリッジを要求&#x2026;">
<!ENTITY torPreferences.provideBridge "Provide a bridge">
1
0