diff --git a/net-p2p/reticulum/Makefile b/net-p2p/reticulum/Makefile index d31c6c6c2093..a86d44d8d095 100644 --- a/net-p2p/reticulum/Makefile +++ b/net-p2p/reticulum/Makefile @@ -1,33 +1,37 @@ PORTNAME= reticulum -DISTVERSION= 0.7.7 -PORTREVISION= 1 +DISTVERSION= 0.9.6 CATEGORIES= net-p2p -MASTER_SITES= PYPI -DISTNAME= rns-${DISTVERSION} MAINTAINER= cs@FreeBSD.org COMMENT= Self-configuring, encrypted and resilient mesh networking stack WWW= https://reticulum.network/ -LICENSE= MIT +LICENSE= UNKNOWN +LICENSE_NAME= Reticulum License +LICENSE_FILE= ${WRKSRC}/LICENSE +LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}netifaces>=0:net/py-netifaces@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pyserial>0:comms/py-pyserial@${PY_FLAVOR} +WRKSRC= ${WRKDIR}/Reticulum-${PORTVERSION} USES= python +USE_GITHUB= yes +GH_ACCOUNT= markqvist USE_PYTHON= cryptography distutils USE_RC_SUBR= reticulum GROUPS= _reticulum USERS= _reticulum SUB_LIST= USERS="${USERS}" \ GROUPS="${GROUPS}" \ PYTHON=${PYTHON_CMD} PLIST_SUB= USERS="${USERS}" GROUPS="${GROUPS}" NO_ARCH= yes post-install: - @${MKDIR} ${STAGEDIR}${ETCDIR} ${STAGEDIR}/var/db/reticulum ${STAGEDIR}/var/run/reticulum ${STAGEDIR}/var/log/reticulum + @${MKDIR} ${STAGEDIR}${ETCDIR} ${STAGEDIR}${ETCDIR}/interfaces ${STAGEDIR}/var/db/reticulum \ + ${STAGEDIR}/var/run/reticulum ${STAGEDIR}/var/log/reticulum ${INSTALL_DATA} ${PATCHDIR}/config.sample ${STAGEDIR}${ETCDIR}/config.sample .include diff --git a/net-p2p/reticulum/distinfo b/net-p2p/reticulum/distinfo index 4cd94c6520e0..33a0ea430607 100644 --- a/net-p2p/reticulum/distinfo +++ b/net-p2p/reticulum/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1726335418 -SHA256 (rns-0.7.7.tar.gz) = 123f2a1f7e3b254a6c13c76bdb3811956d83e5f04221329f86929a64232c43db -SIZE (rns-0.7.7.tar.gz) = 13049034 +TIMESTAMP = 1750013080 +SHA256 (markqvist-reticulum-0.9.6_GH0.tar.gz) = 0f3e1c5f341416bbedfd94c89d40f463aa136e1294cfe88c5cfc9de31e24123f +SIZE (markqvist-reticulum-0.9.6_GH0.tar.gz) = 18189948 diff --git a/net-p2p/reticulum/files/config.sample b/net-p2p/reticulum/files/config.sample index cc9dc03ac02e..2cb199d49829 100644 --- a/net-p2p/reticulum/files/config.sample +++ b/net-p2p/reticulum/files/config.sample @@ -1,365 +1,406 @@ # This is an example Reticulum config file. # You should probably edit it to include any additional, # interfaces and settings you might need. [reticulum] -# Define the DB directory +# Define database directory dbdir = "/var/db/reticulum" # If you enable Transport, your system will route traffic # for other peers, pass announces and serve path requests. # This should be done for systems that are suited to act # as transport nodes, ie. if they are stationary and # always-on. This directive is optional and can be removed # for brevity. enable_transport = No # By default, the first program to launch the Reticulum # Network Stack will create a shared instance, that other # programs can communicate with. Only the shared instance # opens all the configured interfaces directly, and other # local programs communicate with the shared instance over # a local socket. This is completely transparent to the # user, and should generally be turned on. This directive # is optional and can be removed for brevity. share_instance = Yes # If you want to run multiple *different* shared instances # on the same system, you will need to specify different -# shared instance ports for each. The defaults are given -# below, and again, these options can be left out if you -# don't need them. +# instance names for each. On platforms supporting domain +# sockets, this can be done with the instance_name option: -shared_instance_port = 37428 -instance_control_port = 37429 +instance_name = default + +# Some platforms don't support domain sockets, and if that +# is the case, you can isolate different instances by +# specifying a unique set of ports for each: + +# shared_instance_port = 37428 +# instance_control_port = 37429 + + +# If you want to explicitly use TCP for shared instance +# communication, instead of domain sockets, this is also +# possible, by using the following option: + +# shared_instance_type = tcp # On systems where running instances may not have access # to the same shared Reticulum configuration directory, # it is still possible to allow full interactivity for # running instances, by manually specifying a shared RPC # key. In almost all cases, this option is not needed, but # it can be useful on operating systems such as Android. # The key must be specified as bytes in hexadecimal. # rpc_key = e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790 +# It is possible to allow remote management of Reticulum +# systems using the various built-in utilities, such as +# rnstatus and rnpath. You will need to specify one or +# more Reticulum Identity hashes for authenticating the +# queries from client programs. For this purpose, you can +# use existing identity files, or generate new ones with +# the rnid utility. + +# enable_remote_management = yes +# remote_management_allowed = 9fb6d773498fb3feda407ed8ef2c3229, 2d882c5586e548d79b5af27bca1776dc + + # You can configure Reticulum to panic and forcibly close # if an unrecoverable interface error occurs, such as the # hardware device for an interface disappearing. This is # an optional directive, and can be left out for brevity. # This behaviour is disabled by default. -panic_on_interface_error = No +# panic_on_interface_error = No # When Transport is enabled, it is possible to allow the # Transport Instance to respond to probe requests from # the rnprobe utility. This can be a useful tool to test # connectivity. When this option is enabled, the probe # destination will be generated from the Identity of the # Transport Instance, and printed to the log at startup. # Optional, and disabled by default. -respond_to_probes = No +# respond_to_probes = No [logging] # Valid log levels are 0 through 7: # 0: Log only critical information # 1: Log errors and lower log levels # 2: Log warnings and lower log levels # 3: Log notices and lower log levels # 4: Log info and lower (this is the default) # 5: Verbose logging # 6: Debug logging # 7: Extreme logging loglevel = 4 # The interfaces section defines the physical and virtual # interfaces Reticulum will use to communicate on. This # section will contain examples for a variety of interface # types. You can modify these or use them as a basis for # your own config, or simply remove the unused ones. [interfaces] # This interface enables communication with other # link-local Reticulum nodes over UDP. It does not # need any functional IP infrastructure like routers # or DHCP servers, but will require that at least link- # local IPv6 is enabled in your operating system, which # should be enabled by default in almost any OS. See # the Reticulum Manual for more configuration options. [[Default Interface]] type = AutoInterface enabled = yes # The following example enables communication with other # local Reticulum peers using UDP broadcasts. [[UDP Interface]] type = UDPInterface enabled = no listen_ip = 0.0.0.0 listen_port = 4242 forward_ip = 255.255.255.255 forward_port = 4242 # The above configuration will allow communication # within the local broadcast domains of all local # IP interfaces. # Instead of specifying listen_ip, listen_port, # forward_ip and forward_port, you can also bind # to a specific network device like below. # device = eth0 # port = 4242 # Assuming the eth0 device has the address # 10.55.0.72/24, the above configuration would # be equivalent to the following manual setup. # Note that we are both listening and forwarding to # the broadcast address of the network segments. # listen_ip = 10.55.0.255 # listen_port = 4242 # forward_ip = 10.55.0.255 # forward_port = 4242 # You can of course also communicate only with # a single IP address # listen_ip = 10.55.0.15 # listen_port = 4242 # forward_ip = 10.55.0.16 # forward_port = 4242 # This example demonstrates a TCP server interface. # It will listen for incoming connections on the # specified IP address and port number. [[TCP Server Interface]] type = TCPServerInterface enabled = no # This configuration will listen on all IP # interfaces on port 4242 listen_ip = 0.0.0.0 listen_port = 4242 # Alternatively you can bind to a specific IP # listen_ip = 10.0.0.88 # listen_port = 4242 # Or a specific network device # device = eth0 # port = 4242 # To connect to a TCP server interface, you would # naturally use the TCP client interface. Here's # an example. The target_host can either be an IP # address or a hostname [[TCP Client Interface]] type = TCPClientInterface enabled = no target_host = 127.0.0.1 target_port = 4242 # This example shows how to make your Reticulum # instance available over I2P, and connect to # another I2P peer. Please be aware that you # must have an I2P router running on your system # with the SAMv3 API enabled for this to work. [[I2P]] type = I2PInterface enabled = no connectable = yes peers = ykzlw5ujbaqc2xkec4cpvgyxj257wcrmmgkuxqmqcur7cq3w3lha.b32.i2p # Here's an example of how to add a LoRa interface # using the RNode LoRa transceiver. [[RNode LoRa Interface]] type = RNodeInterface # Enable interface if you want use it! enabled = no # Serial port for the device port = /dev/ttyUSB0 + # It is also possible to use BLE devices + # instead of wired serial ports. The + # target RNode must be paired with the + # host device before connecting. BLE + # devices can be connected by name, + # BLE MAC address or by any available. + + # Connect to specific device by name + # port = ble://RNode 3B87 + + # Or by BLE MAC address + # port = ble://F4:12:73:29:4E:89 + + # Or connect to the first available, + # paired device + # port = ble:// + # Set frequency to 867.2 MHz frequency = 867200000 # Set LoRa bandwidth to 125 KHz bandwidth = 125000 # Set TX power to 7 dBm (5 mW) txpower = 7 # Select spreading factor 8. Valid # range is 7 through 12, with 7 # being the fastest and 12 having # the longest range. spreadingfactor = 8 # Select coding rate 5. Valid range # is 5 throough 8, with 5 being the # fastest, and 8 the longest range. codingrate = 5 # You can configure the RNode to send # out identification on the channel with # a set interval by configuring the # following two parameters. The trans- # ceiver will only ID if the set # interval has elapsed since it's last # actual transmission. The interval is # configured in seconds. # This option is commented out and not # used by default. # id_callsign = MYCALL-0 # id_interval = 600 # For certain homebrew RNode interfaces # with low amounts of RAM, using packet # flow control can be useful. By default # it is disabled. flow_control = False # An example KISS modem interface. Useful for running # Reticulum over packet radio hardware. [[Packet Radio KISS Interface]] type = KISSInterface # Enable interface if you want use it! enabled = no # Serial port for the device port = /dev/ttyUSB1 # Set the serial baud-rate and other # configuration parameters. speed = 115200 databits = 8 parity = none stopbits = 1 # Set the modem preamble. A 150ms # preamble should be a reasonable # default, but may need to be # increased for radios with slow- # opening squelch and long TX/RX # turnaround preamble = 150 # Set the modem TX tail. In most # cases this should be kept as low # as possible to not waste airtime. txtail = 10 # Configure CDMA parameters. These # settings are reasonable defaults. persistence = 200 slottime = 20 # You can configure the interface to send # out identification on the channel with # a set interval by configuring the # following two parameters. The KISS # interface will only ID if the set # interval has elapsed since it's last # actual transmission. The interval is # configured in seconds. # This option is commented out and not # used by default. # id_callsign = MYCALL-0 # id_interval = 600 # Whether to use KISS flow-control. # This is useful for modems that have # a small internal packet buffer, but # support packet flow control instead. flow_control = false # If you're using Reticulum on amateur radio spectrum, # you might want to use the AX.25 KISS interface. This # way, Reticulum will automatically encapsulate it's # traffic in AX.25 and also identify your stations # transmissions with your callsign and SSID. # # Only do this if you really need to! Reticulum doesn't # need the AX.25 layer for anything, and it incurs extra # overhead on every packet to encapsulate in AX.25. # # A more efficient way is to use the plain KISS interface # with the beaconing functionality described above. [[Packet Radio AX.25 KISS Interface]] type = AX25KISSInterface # Set the station callsign and SSID callsign = NO1CLL ssid = 0 # Enable interface if you want use it! enabled = no # Serial port for the device port = /dev/ttyUSB2 # Set the serial baud-rate and other # configuration parameters. speed = 115200 databits = 8 parity = none stopbits = 1 # Whether to use KISS flow-control. # This is useful for modems with a # small internal packet buffer. flow_control = false # Set the modem preamble. A 150ms # preamble should be a reasonable # default, but may need to be # increased for radios with slow- # opening squelch and long TX/RX # turnaround preamble = 150 # Set the modem TX tail. In most # cases this should be kept as low # as possible to not waste airtime. txtail = 10 # Configure CDMA parameters. These # settings are reasonable defaults. persistence = 200 slottime = 20 diff --git a/net-p2p/reticulum/files/patch-RNS_Reticulum.py b/net-p2p/reticulum/files/patch-RNS_Reticulum.py index 6ddf70beb844..9b9049e157a7 100644 --- a/net-p2p/reticulum/files/patch-RNS_Reticulum.py +++ b/net-p2p/reticulum/files/patch-RNS_Reticulum.py @@ -1,105 +1,106 @@ ---- RNS/Reticulum.py.orig 2022-11-03 16:31:20 UTC +--- RNS/Reticulum.py.orig 2025-05-15 20:24:33 UTC +++ RNS/Reticulum.py -@@ -141,6 +141,7 @@ class Reticulum: +@@ -165,6 +165,7 @@ class Reticulum: # named ".reticulum" inside the current users home directory userdir = os.path.expanduser("~") configdir = None + dbdir = "" configpath = "" storagepath = "" cachepath = "" -@@ -181,7 +182,9 @@ class Reticulum: +@@ -231,8 +232,11 @@ class Reticulum: if configdir != None: Reticulum.configdir = configdir else: - if os.path.isdir("/etc/reticulum") and os.path.isfile("/etc/reticulum/config"): + if os.path.isdir("/usr/local/etc/reticulum") and os.path.isfile("/usr/local/etc/reticulum/config"): -+ Reticulum.configdir = "/usr/local/etc/reticulum" -+ elif os.path.isdir("/etc/reticulum") and os.path.isfile("/etc/reticulum/config"): Reticulum.configdir = "/etc/reticulum" ++ Reticulum.interfacepath = Reticulum.configdir+"interfaces" ++ elif os.path.isdir("/etc/reticulum") and os.path.isfile("/etc/reticulum/config"): ++ Reticulum.configdir = "/etc/reticulum" elif os.path.isdir(Reticulum.userdir+"/.config/reticulum") and os.path.isfile(Reticulum.userdir+"/.config/reticulum/config"): Reticulum.configdir = Reticulum.userdir+"/.config/reticulum" -@@ -193,10 +196,7 @@ class Reticulum: - RNS.logfile = Reticulum.configdir+"/logfile" + else: +@@ -246,11 +250,8 @@ class Reticulum: + RNS.logcall = logdest Reticulum.configpath = Reticulum.configdir+"/config" - Reticulum.storagepath = Reticulum.configdir+"/storage" - Reticulum.cachepath = Reticulum.configdir+"/storage/cache" - Reticulum.resourcepath = Reticulum.configdir+"/storage/resources" - Reticulum.identitypath = Reticulum.configdir+"/storage/identities" + Reticulum.interfacepath = Reticulum.configdir+"/interfaces" + Reticulum.dbdir = Reticulum.configdir Reticulum.__transport_enabled = False - Reticulum.__use_implicit_proof = True -@@ -226,18 +226,6 @@ class Reticulum: + Reticulum.__link_mtu_discovery = Reticulum.LINK_MTU_DISCOVERY +@@ -291,21 +292,6 @@ class Reticulum: self.last_data_persist = time.time() self.last_cache_clean = 0 - if not os.path.isdir(Reticulum.storagepath): - os.makedirs(Reticulum.storagepath) - - if not os.path.isdir(Reticulum.cachepath): - os.makedirs(Reticulum.cachepath) - +- if not os.path.isdir(os.path.join(Reticulum.cachepath, "announces")): +- os.makedirs(os.path.join(Reticulum.cachepath, "announces")) +- - if not os.path.isdir(Reticulum.resourcepath): - os.makedirs(Reticulum.resourcepath) - - if not os.path.isdir(Reticulum.identitypath): - os.makedirs(Reticulum.identitypath) - - if os.path.isfile(self.configpath): - try: - self.config = ConfigObj(self.configpath) -@@ -253,7 +241,7 @@ class Reticulum: - - self.__apply_config() - RNS.log("Configuration loaded from "+self.configpath, RNS.LOG_VERBOSE) -- -+ - RNS.Identity.load_known_destinations() + if not os.path.isdir(Reticulum.interfacepath): + os.makedirs(Reticulum.interfacepath) - RNS.Transport.start(self) -@@ -345,6 +333,9 @@ class Reticulum: +@@ -450,6 +436,9 @@ class Reticulum: if "reticulum" in self.config: for option in self.config["reticulum"]: value = self.config["reticulum"][option] + if option == "dbdir": + value = self.config["reticulum"][option] + Reticulum.dbdir = value if option == "share_instance": value = self.config["reticulum"].as_bool(option) self.share_instance = value -@@ -369,6 +360,23 @@ class Reticulum: - if v == False: - Reticulum.__use_implicit_proof = False +@@ -531,6 +520,27 @@ class Reticulum: + if self.local_socket_path == None and self.use_af_unix: + self.local_socket_path = "default" ++ + Reticulum.storagepath = Reticulum.dbdir+"/storage" + Reticulum.cachepath = Reticulum.dbdir+"/storage/cache" + Reticulum.resourcepath = Reticulum.dbdir+"/storage/resources" + Reticulum.identitypath = Reticulum.dbdir+"/storage/identities" -+ ++ + if not os.path.isdir(Reticulum.storagepath): + os.makedirs(Reticulum.storagepath) + + if not os.path.isdir(Reticulum.cachepath): + os.makedirs(Reticulum.cachepath) + ++ if not os.path.isdir(os.path.join(Reticulum.cachepath, "announces")): ++ os.makedirs(os.path.join(Reticulum.cachepath, "announces")) ++ + if not os.path.isdir(Reticulum.resourcepath): + os.makedirs(Reticulum.resourcepath) + + if not os.path.isdir(Reticulum.identitypath): + os.makedirs(Reticulum.identitypath) + self.__start_local_interface() if self.is_shared_instance or self.is_standalone_instance: -@@ -1275,6 +1283,9 @@ __default_rns_config__ = '''# This is the default Reti +@@ -1360,6 +1370,9 @@ __default_rns_config__ = '''# This is the default Reti [reticulum] + -+# Define the DB directory ++# Define database directory +dbdir = "/var/db/reticulum" # If you enable Transport, your system will route traffic # for other peers, pass announces and serve path requests. diff --git a/net-p2p/reticulum/files/patch-RNS_Utilities_rnsd.py b/net-p2p/reticulum/files/patch-RNS_Utilities_rnsd.py index 33f61985b665..2f737441e71a 100644 --- a/net-p2p/reticulum/files/patch-RNS_Utilities_rnsd.py +++ b/net-p2p/reticulum/files/patch-RNS_Utilities_rnsd.py @@ -1,12 +1,12 @@ ---- RNS/Utilities/rnsd.py.orig 2023-02-23 17:25:44 UTC +--- RNS/Utilities/rnsd.py.orig 2025-05-15 20:24:33 UTC +++ RNS/Utilities/rnsd.py -@@ -80,6 +80,9 @@ __example_rns_config__ = '''# This is an example Retic +@@ -93,6 +93,9 @@ __example_rns_config__ = '''# This is an example Retic [reticulum] -+# Define the DB directory ++# Define database directory +dbdir = "/var/db/reticulum" + # If you enable Transport, your system will route traffic # for other peers, pass announces and serve path requests. # This should be done for systems that are suited to act diff --git a/net-p2p/reticulum/pkg-plist b/net-p2p/reticulum/pkg-plist index 630912d53f67..28b5fef427a7 100644 --- a/net-p2p/reticulum/pkg-plist +++ b/net-p2p/reticulum/pkg-plist @@ -1,255 +1,250 @@ bin/rncp bin/rnid bin/rnir bin/rnodeconf bin/rnpath bin/rnprobe bin/rnsd bin/rnstatus bin/rnx @sample %%ETCDIR%%/config.sample +%%PYTHON_SITELIBDIR%%/CRNS/__init__.py +%%PYTHON_SITELIBDIR%%/CRNS/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc +%%PYTHON_SITELIBDIR%%/CRNS/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Buffer.py %%PYTHON_SITELIBDIR%%/RNS/Channel.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/AES.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/Ed25519.py -%%PYTHON_SITELIBDIR%%/RNS/Cryptography/Fernet.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/HKDF.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/HMAC.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/Hashes.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/PKCS7.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/Provider.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/Proxies.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/SHA256.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/SHA512.py +%%PYTHON_SITELIBDIR%%/RNS/Cryptography/Token.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/X25519.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__init__.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/AES%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/AES%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Ed25519%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Ed25519%%PYTHON_EXT_SUFFIX%%.pyc -%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Fernet%%PYTHON_EXT_SUFFIX%%.opt-1.pyc -%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Fernet%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HKDF%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HKDF%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HMAC%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HMAC%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Hashes%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Hashes%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/PKCS7%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/PKCS7%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Provider%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Provider%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Proxies%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Proxies%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA256%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA256%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA512%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA512%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Token%%PYTHON_EXT_SUFFIX%%.opt-1.pyc +%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Token%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/X25519%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/X25519%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__init__.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc -%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes%%PYTHON_EXT_SUFFIX%%.opt-1.pyc -%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes%%PYTHON_EXT_SUFFIX%%.pyc -%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/utils%%PYTHON_EXT_SUFFIX%%.opt-1.pyc -%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/utils%%PYTHON_EXT_SUFFIX%%.pyc -%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/aes.py -%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/utils.py +%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes128%%PYTHON_EXT_SUFFIX%%.opt-1.pyc +%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes128%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes256%%PYTHON_EXT_SUFFIX%%.opt-1.pyc +%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes256%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/aes128.py +%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/aes256.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__init__.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/_ed25519%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/_ed25519%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/basic%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/basic%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/ed25519_oop%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/ed25519_oop%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/eddsa%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/eddsa%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/_ed25519.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/basic.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/ed25519_oop.py %%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/eddsa.py %%PYTHON_SITELIBDIR%%/RNS/Destination.py %%PYTHON_SITELIBDIR%%/RNS/Identity.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/AX25KISSInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/KISSInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/RNodeInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/SerialInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__init__.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/KISSInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/KISSInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/RNodeInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/RNodeInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/SerialInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/SerialInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/AutoInterface.py +%%PYTHON_SITELIBDIR%%/RNS/Interfaces/BackboneInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/I2PInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/Interface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/KISSInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/LocalInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/PipeInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/RNodeInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/RNodeMultiInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/SerialInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/TCPInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/UDPInterface.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__init__.py %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AX25KISSInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AX25KISSInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AutoInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AutoInterface%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/BackboneInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc +%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/BackboneInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/I2PInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/I2PInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/Interface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/Interface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/KISSInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/KISSInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/LocalInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/LocalInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/PipeInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/PipeInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeMultiInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeMultiInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/SerialInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/SerialInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/TCPInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/TCPInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/UDPInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/UDPInterface%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/__init__.py +%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc +%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/__pycache__/netinfo%%PYTHON_EXT_SUFFIX%%.opt-1.pyc +%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/__pycache__/netinfo%%PYTHON_EXT_SUFFIX%%.pyc +%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/netinfo.py %%PYTHON_SITELIBDIR%%/RNS/Link.py %%PYTHON_SITELIBDIR%%/RNS/Packet.py %%PYTHON_SITELIBDIR%%/RNS/Resolver.py %%PYTHON_SITELIBDIR%%/RNS/Resource.py %%PYTHON_SITELIBDIR%%/RNS/Reticulum.py %%PYTHON_SITELIBDIR%%/RNS/Transport.py %%PYTHON_SITELIBDIR%%/RNS/Utilities/__init__.py %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rncp%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rncp%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnid%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnid%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnir%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnir%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnodeconf%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnodeconf%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnpath%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnpath%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnprobe%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnprobe%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnsd%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnsd%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnstatus%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnstatus%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnx%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnx%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/Utilities/rncp.py %%PYTHON_SITELIBDIR%%/RNS/Utilities/rnid.py %%PYTHON_SITELIBDIR%%/RNS/Utilities/rnir.py %%PYTHON_SITELIBDIR%%/RNS/Utilities/rnodeconf.py %%PYTHON_SITELIBDIR%%/RNS/Utilities/rnpath.py %%PYTHON_SITELIBDIR%%/RNS/Utilities/rnprobe.py %%PYTHON_SITELIBDIR%%/RNS/Utilities/rnsd.py %%PYTHON_SITELIBDIR%%/RNS/Utilities/rnstatus.py %%PYTHON_SITELIBDIR%%/RNS/Utilities/rnx.py %%PYTHON_SITELIBDIR%%/RNS/__init__.py %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Buffer%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Buffer%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Channel%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Channel%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Destination%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Destination%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Identity%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Identity%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Link%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Link%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Packet%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Packet%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resolver%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resolver%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resource%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resource%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Reticulum%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Reticulum%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Transport%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/Transport%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/_version%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/__pycache__/_version%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/_version.py %%PYTHON_SITELIBDIR%%/RNS/vendor/__init__.py %%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/configobj%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/configobj%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/platformutils%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/platformutils%%PYTHON_EXT_SUFFIX%%.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/six%%PYTHON_EXT_SUFFIX%%.opt-1.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/six%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/umsgpack%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/umsgpack%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/configobj.py %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__init__.py %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__version__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__version__%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/aiosam%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/aiosam%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/exceptions%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/exceptions%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/log%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/log%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/sam%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/sam%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/tunnel%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/tunnel%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/utils%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/utils%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__version__.py %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/aiosam.py %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/exceptions.py %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/log.py %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/sam.py %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/tunnel.py %%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/utils.py -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__init__.py -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_posix%%PYTHON_EXT_SUFFIX%%.opt-1.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_posix%%PYTHON_EXT_SUFFIX%%.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_shared%%PYTHON_EXT_SUFFIX%%.opt-1.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_shared%%PYTHON_EXT_SUFFIX%%.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_win32%%PYTHON_EXT_SUFFIX%%.opt-1.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_win32%%PYTHON_EXT_SUFFIX%%.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/niwrapper%%PYTHON_EXT_SUFFIX%%.opt-1.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/niwrapper%%PYTHON_EXT_SUFFIX%%.pyc -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/_posix.py -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/_shared.py -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/_win32.py -%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/niwrapper.py %%PYTHON_SITELIBDIR%%/RNS/vendor/platformutils.py -%%PYTHON_SITELIBDIR%%/RNS/vendor/six.py %%PYTHON_SITELIBDIR%%/RNS/vendor/umsgpack.py -%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/PKG-INFO -%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/SOURCES.txt -%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/dependency_links.txt -%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/entry_points.txt -%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/requires.txt -%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/top_level.txt +%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/PKG-INFO +%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/SOURCES.txt +%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/dependency_links.txt +%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/entry_points.txt +%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/requires.txt +%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/top_level.txt +@dir %%ETCDIR%%/interfaces @owner %%USERS%% @group %%GROUPS%% @dir /var/db/reticulum @dir /var/log/reticulum @dir /var/run/reticulum